JAL-1807 test
authorhansonr <hansonr@stolaf.edu>
Thu, 23 Jul 2015 15:10:13 +0000 (16:10 +0100)
committerhansonr <hansonr@stolaf.edu>
Thu, 23 Jul 2015 15:10:13 +0000 (16:10 +0100)
640 files changed:
bin/.gitignore [new file with mode: 0644]
bin/MCview/Atom.js
bin/MCview/Bond.js
bin/MCview/PDBChain.class
bin/MCview/PDBChain.js
bin/MCview/PDBfile.class
bin/MCview/PDBfile.js
bin/MCview/Residue.js
bin/awt2swing/Button.js
bin/awt2swing/Canvas.js
bin/awt2swing/Checkbox.js
bin/awt2swing/CheckboxMenuItem.js
bin/awt2swing/Choice.js
bin/awt2swing/Frame.js
bin/awt2swing/Label.js
bin/awt2swing/Menu.js
bin/awt2swing/MenuBar.js
bin/awt2swing/MenuItem.js
bin/awt2swing/Panel.js
bin/awt2swing/PopupMenu.js
bin/awt2swing/ScrollPane.js
bin/awt2swing/Scrollbar.js
bin/awt2swing/TextArea.js
bin/awt2swing/TextField.js
bin/com/stevesoft/pat/AmpersandRule.js
bin/com/stevesoft/pat/Any.js
bin/com/stevesoft/pat/BackG.js
bin/com/stevesoft/pat/BackMatch.js
bin/com/stevesoft/pat/BackRefRule.js
bin/com/stevesoft/pat/Backup.js
bin/com/stevesoft/pat/BasicStringBufferLike.js
bin/com/stevesoft/pat/Bits.js
bin/com/stevesoft/pat/Boundary.js
bin/com/stevesoft/pat/Bracket.js
bin/com/stevesoft/pat/CaseMgr.js
bin/com/stevesoft/pat/ChangeRule.js
bin/com/stevesoft/pat/CodeRule.js
bin/com/stevesoft/pat/Ctrl.js
bin/com/stevesoft/pat/Custom.js
bin/com/stevesoft/pat/CustomEndpoint.js
bin/com/stevesoft/pat/DirFileRegex.js
bin/com/stevesoft/pat/DotMulti.class
bin/com/stevesoft/pat/DotMulti.js
bin/com/stevesoft/pat/End.js
bin/com/stevesoft/pat/FastBracket.js
bin/com/stevesoft/pat/FastMulti.class
bin/com/stevesoft/pat/FastMulti.js
bin/com/stevesoft/pat/FileRegex.js
bin/com/stevesoft/pat/Group.js
bin/com/stevesoft/pat/LeftRule.js
bin/com/stevesoft/pat/MessageManager.js
bin/com/stevesoft/pat/Multi.js
bin/com/stevesoft/pat/MultiMin.js
bin/com/stevesoft/pat/Multi_stage2.js
bin/com/stevesoft/pat/NoPattern.js
bin/com/stevesoft/pat/NonDirFileRegex.js
bin/com/stevesoft/pat/NotImplementedError.js
bin/com/stevesoft/pat/NullPattern.js
bin/com/stevesoft/pat/NullRule.js
bin/com/stevesoft/pat/Or.js
bin/com/stevesoft/pat/OrMark.js
bin/com/stevesoft/pat/PartialBuffer.js
bin/com/stevesoft/pat/Pattern.js
bin/com/stevesoft/pat/PatternSub.js
bin/com/stevesoft/pat/PopRule.js
bin/com/stevesoft/pat/Prop.js
bin/com/stevesoft/pat/Pthings.js
bin/com/stevesoft/pat/PushRule.js
bin/com/stevesoft/pat/RBuffer.js
bin/com/stevesoft/pat/Range.js
bin/com/stevesoft/pat/RegOpt.class
bin/com/stevesoft/pat/RegOpt.js
bin/com/stevesoft/pat/RegRes.js
bin/com/stevesoft/pat/RegSyntax.js
bin/com/stevesoft/pat/RegSyntaxError.js
bin/com/stevesoft/pat/Regex.class
bin/com/stevesoft/pat/Regex.js
bin/com/stevesoft/pat/RegexReader.class
bin/com/stevesoft/pat/RegexReader.js
bin/com/stevesoft/pat/RegexTokenizer.js
bin/com/stevesoft/pat/RegexWriter.class
bin/com/stevesoft/pat/RegexWriter.js
bin/com/stevesoft/pat/ReplaceRule.class
bin/com/stevesoft/pat/ReplaceRule.js
bin/com/stevesoft/pat/Replacer.class
bin/com/stevesoft/pat/Replacer.js
bin/com/stevesoft/pat/RightRule.js
bin/com/stevesoft/pat/Rthings.js
bin/com/stevesoft/pat/RuleHolder.js
bin/com/stevesoft/pat/Skip.js
bin/com/stevesoft/pat/Skip2.js
bin/com/stevesoft/pat/SkipBMH.js
bin/com/stevesoft/pat/Skipped.js
bin/com/stevesoft/pat/SpecialRule.js
bin/com/stevesoft/pat/Start.js
bin/com/stevesoft/pat/StrPos.class
bin/com/stevesoft/pat/StrPos.js
bin/com/stevesoft/pat/StringBufferLike.class
bin/com/stevesoft/pat/StringBufferLike.js
bin/com/stevesoft/pat/StringLike.js
bin/com/stevesoft/pat/StringRule.js
bin/com/stevesoft/pat/SubMark.js
bin/com/stevesoft/pat/TransPat.js
bin/com/stevesoft/pat/Transformer.js
bin/com/stevesoft/pat/UniValidator.js
bin/com/stevesoft/pat/Util.js
bin/com/stevesoft/pat/Validator.js
bin/com/stevesoft/pat/WantMoreTextReplaceRule.js
bin/com/stevesoft/pat/lookAhead.js
bin/com/stevesoft/pat/oneChar.js
bin/com/stevesoft/pat/package.js
bin/com/stevesoft/pat/parsePerl.class
bin/com/stevesoft/pat/parsePerl.js
bin/com/stevesoft/pat/patInf.js
bin/com/stevesoft/pat/patInt.js
bin/com/stevesoft/pat/wrap/CharArrayBufferWrap.js
bin/com/stevesoft/pat/wrap/CharArrayWrap.js
bin/com/stevesoft/pat/wrap/RandomAccessFileWrap.js
bin/com/stevesoft/pat/wrap/StringBufferWrap.js
bin/com/stevesoft/pat/wrap/StringWrap.js
bin/com/stevesoft/pat/wrap/WriterWrap.js
bin/fr/orsay/lri/varna/models/rna/RNA.js
bin/jalview/analysis/AAFrequency.class
bin/jalview/analysis/AAFrequency.js
bin/jalview/analysis/AlignSeq.class
bin/jalview/analysis/AlignSeq.js
bin/jalview/analysis/AlignmentAnnotationUtils.class
bin/jalview/analysis/AlignmentAnnotationUtils.js
bin/jalview/analysis/AlignmentSorter.class
bin/jalview/analysis/AlignmentSorter.js
bin/jalview/analysis/AlignmentUtils.class
bin/jalview/analysis/AlignmentUtils.js
bin/jalview/analysis/AnnotationSorter.js
bin/jalview/analysis/CodingUtils.js
bin/jalview/analysis/CodonComparator.js
bin/jalview/analysis/Conservation.class
bin/jalview/analysis/Conservation.js
bin/jalview/analysis/Dna.class
bin/jalview/analysis/Dna.js
bin/jalview/analysis/Finder.class
bin/jalview/analysis/Finder.js
bin/jalview/analysis/Grouping.js
bin/jalview/analysis/NJTree.class
bin/jalview/analysis/NJTree.js
bin/jalview/analysis/PCA.js
bin/jalview/analysis/ParseProperties.js
bin/jalview/analysis/Rna.js
bin/jalview/analysis/SecStrConsensus.class
bin/jalview/analysis/SecStrConsensus.js
bin/jalview/analysis/SeqsetUtils.js
bin/jalview/analysis/SequenceIdMatcher$SeqIdName.class
bin/jalview/analysis/SequenceIdMatcher.js
bin/jalview/analysis/StructureFrequency.class
bin/jalview/analysis/StructureFrequency.js
bin/jalview/analysis/WUSSParseException.js
bin/jalview/analysis/package.js
bin/jalview/analysis/scoremodels/FeatureScoreModel.js
bin/jalview/analysis/scoremodels/PIDScoreModel.js
bin/jalview/analysis/scoremodels/PairwiseSeqScoreModel.js
bin/jalview/analysis/scoremodels/SWScoreModel.js
bin/jalview/api/AlignCalcManagerI.js
bin/jalview/api/AlignCalcWorkerI.js
bin/jalview/api/AlignExportSettingI.js
bin/jalview/api/AlignViewControllerGuiI.js
bin/jalview/api/AlignViewControllerI.js
bin/jalview/api/AlignViewportI.js
bin/jalview/api/AlignmentViewPanel.js
bin/jalview/api/ComplexAlignFile.js
bin/jalview/api/FeatureRenderer.js
bin/jalview/api/FeatureSettingsControllerI.js
bin/jalview/api/FeatureSettingsModelI.js
bin/jalview/api/FeaturesDisplayedI.js
bin/jalview/api/OOMHandlerI.js
bin/jalview/api/RotatableCanvasI.js
bin/jalview/api/SequenceRenderer.js
bin/jalview/api/SequenceStructureBinding.js
bin/jalview/api/SplitContainerI.js
bin/jalview/api/StructureSelectionManagerProvider.js
bin/jalview/api/ViewStyleI.js
bin/jalview/api/analysis/ScoreModelI.js
bin/jalview/api/analysis/ViewBasedAnalysisI.js
bin/jalview/api/structures/JalviewStructureDisplayI.js
bin/jalview/appletgui/APopupMenu.class
bin/jalview/appletgui/APopupMenu.js
bin/jalview/appletgui/AlignFrame.class
bin/jalview/appletgui/AlignFrame.js
bin/jalview/appletgui/AlignViewport.js
bin/jalview/appletgui/AlignmentPanel.class
bin/jalview/appletgui/AlignmentPanel.js
bin/jalview/appletgui/AnnotationColourChooser.class
bin/jalview/appletgui/AnnotationColourChooser.js
bin/jalview/appletgui/AnnotationColumnChooser.class
bin/jalview/appletgui/AnnotationColumnChooser.js
bin/jalview/appletgui/AnnotationLabels.class
bin/jalview/appletgui/AnnotationLabels.js
bin/jalview/appletgui/AnnotationPanel.class
bin/jalview/appletgui/AnnotationPanel.js
bin/jalview/appletgui/AnnotationRowFilter.js
bin/jalview/appletgui/AppletJmol.js
bin/jalview/appletgui/AppletJmolBinding.js
bin/jalview/appletgui/CutAndPasteTransfer.class
bin/jalview/appletgui/CutAndPasteTransfer.js
bin/jalview/appletgui/EditNameDialog.js
bin/jalview/appletgui/EmbmenuFrame.js
bin/jalview/appletgui/ExtJmol.js
bin/jalview/appletgui/FeatureColourChooser.class
bin/jalview/appletgui/FeatureColourChooser.js
bin/jalview/appletgui/FeatureRenderer.class
bin/jalview/appletgui/FeatureRenderer.js
bin/jalview/appletgui/FeatureSettings.js
bin/jalview/appletgui/Finder.js
bin/jalview/appletgui/FontChooser.js
bin/jalview/appletgui/IdCanvas.class
bin/jalview/appletgui/IdCanvas.js
bin/jalview/appletgui/IdPanel.js
bin/jalview/appletgui/IdwidthAdjuster.js
bin/jalview/appletgui/JVDialog.js
bin/jalview/appletgui/OverviewPanel.class
bin/jalview/appletgui/OverviewPanel.js
bin/jalview/appletgui/PCAPanel.class
bin/jalview/appletgui/PCAPanel.js
bin/jalview/appletgui/PaintRefresher.class
bin/jalview/appletgui/PaintRefresher.js
bin/jalview/appletgui/PairwiseAlignPanel.class
bin/jalview/appletgui/PairwiseAlignPanel.js
bin/jalview/appletgui/RedundancyPanel.js
bin/jalview/appletgui/RotatableCanvas.js
bin/jalview/appletgui/ScalePanel.class
bin/jalview/appletgui/ScalePanel.js
bin/jalview/appletgui/SeqCanvas.class
bin/jalview/appletgui/SeqCanvas.js
bin/jalview/appletgui/SeqPanel.class
bin/jalview/appletgui/SeqPanel.js
bin/jalview/appletgui/SequenceRenderer.class
bin/jalview/appletgui/SequenceRenderer.js
bin/jalview/appletgui/SliderPanel.class
bin/jalview/appletgui/SliderPanel.js
bin/jalview/appletgui/SplitFrame.js
bin/jalview/appletgui/TitledPanel.js
bin/jalview/appletgui/Tooltip.js
bin/jalview/appletgui/TreeCanvas.class
bin/jalview/appletgui/TreeCanvas.js
bin/jalview/appletgui/TreePanel$TreeLoader.class
bin/jalview/appletgui/TreePanel.class
bin/jalview/appletgui/TreePanel.js
bin/jalview/appletgui/UserDefinedColours.class
bin/jalview/appletgui/UserDefinedColours.js
bin/jalview/bin/Cache.js
bin/jalview/bin/JalviewLite$4.class
bin/jalview/bin/JalviewLite$LoadJmolThread.class
bin/jalview/bin/JalviewLite$LoadingThread.class
bin/jalview/bin/JalviewLite.class
bin/jalview/bin/JalviewLite.js
bin/jalview/commands/ChangeCaseCommand.js
bin/jalview/commands/CommandI.js
bin/jalview/commands/EditCommand.class
bin/jalview/commands/EditCommand.js
bin/jalview/commands/OrderCommand.js
bin/jalview/commands/RemoveGapColCommand.js
bin/jalview/commands/RemoveGapsCommand.js
bin/jalview/commands/SlideSequencesCommand.js
bin/jalview/commands/TrimRegionCommand.class
bin/jalview/commands/TrimRegionCommand.js
bin/jalview/controller/AlignViewController.class
bin/jalview/controller/AlignViewController.js
bin/jalview/controller/FeatureSettingsController.js
bin/jalview/controller/FeatureSettingsControllerGuiI.js
bin/jalview/datamodel/ASequence.js
bin/jalview/datamodel/ASequenceI.js
bin/jalview/datamodel/AlignedCodon.js
bin/jalview/datamodel/AlignedCodonFrame.class
bin/jalview/datamodel/AlignedCodonFrame.js
bin/jalview/datamodel/Alignment.class
bin/jalview/datamodel/Alignment.js
bin/jalview/datamodel/AlignmentAnnotation.class
bin/jalview/datamodel/AlignmentAnnotation.js
bin/jalview/datamodel/AlignmentI.js
bin/jalview/datamodel/AlignmentOrder.js
bin/jalview/datamodel/AlignmentView.class
bin/jalview/datamodel/AlignmentView.js
bin/jalview/datamodel/AnnotatedCollectionI.js
bin/jalview/datamodel/Annotation.class
bin/jalview/datamodel/Annotation.js
bin/jalview/datamodel/BinaryNode.js
bin/jalview/datamodel/BinarySequence.js
bin/jalview/datamodel/CigarArray.class
bin/jalview/datamodel/CigarArray.js
bin/jalview/datamodel/CigarBase.class
bin/jalview/datamodel/CigarBase.js
bin/jalview/datamodel/CigarCigar.js
bin/jalview/datamodel/CigarSimple.js
bin/jalview/datamodel/ColumnSelection.class
bin/jalview/datamodel/ColumnSelection.js
bin/jalview/datamodel/DBRefEntry.js
bin/jalview/datamodel/DBRefSource.js
bin/jalview/datamodel/FeatureProperties.js
bin/jalview/datamodel/GraphLine.js
bin/jalview/datamodel/HiddenSequences.class
bin/jalview/datamodel/HiddenSequences.js
bin/jalview/datamodel/IncompleteCodonException.js
bin/jalview/datamodel/Mapping.js
bin/jalview/datamodel/NodeTransformI.js
bin/jalview/datamodel/PDBEntry.js
bin/jalview/datamodel/Provenance.js
bin/jalview/datamodel/ProvenanceEntry.js
bin/jalview/datamodel/RnaViewerModel.js
bin/jalview/datamodel/SearchResults.js
bin/jalview/datamodel/SecondaryStructureAnnotation.js
bin/jalview/datamodel/SeqCigar.class
bin/jalview/datamodel/SeqCigar.js
bin/jalview/datamodel/Sequence.class
bin/jalview/datamodel/Sequence.js
bin/jalview/datamodel/SequenceCollectionI.js
bin/jalview/datamodel/SequenceDummy.js
bin/jalview/datamodel/SequenceFeature.js
bin/jalview/datamodel/SequenceGroup.class
bin/jalview/datamodel/SequenceGroup.js
bin/jalview/datamodel/SequenceI.js
bin/jalview/datamodel/SequenceNode.js
bin/jalview/datamodel/SequencePoint.js
bin/jalview/datamodel/StructureViewerModel.js
bin/jalview/datamodel/UniprotEntry.js
bin/jalview/datamodel/UniprotFile.js
bin/jalview/datamodel/UniprotProteinName.js
bin/jalview/datamodel/UniprotSequence.js
bin/jalview/ext/jmol/JmolCommands.class
bin/jalview/ext/jmol/JmolCommands.js
bin/jalview/ext/varna/JalviewVarnaBinding.js
bin/jalview/ext/varna/RnaModel.js
bin/jalview/ext/varna/VarnaCommands.class
bin/jalview/ext/varna/VarnaCommands.js
bin/jalview/io/AlignFile.js
bin/jalview/io/AlignmentProperties.js
bin/jalview/io/AnnotationFile.class
bin/jalview/io/AnnotationFile.js
bin/jalview/io/AppletFormatAdapter.class
bin/jalview/io/AppletFormatAdapter.js
bin/jalview/io/FastaFile.class
bin/jalview/io/FastaFile.js
bin/jalview/io/FeaturesFile.class
bin/jalview/io/FeaturesFile.js
bin/jalview/io/FileParse.class
bin/jalview/io/FileParse.js
bin/jalview/io/IdentifyFile.class
bin/jalview/io/IdentifyFile.js
bin/jalview/io/JPredFile.class
bin/jalview/io/JPredFile.js
bin/jalview/io/JnetAnnotationMaker.class
bin/jalview/io/JnetAnnotationMaker.js
bin/jalview/io/MSFfile.class
bin/jalview/io/MSFfile.js
bin/jalview/io/ModellerDescription.class
bin/jalview/io/ModellerDescription.js
bin/jalview/io/NewickFile.class
bin/jalview/io/NewickFile.js
bin/jalview/io/PIRFile.class
bin/jalview/io/PIRFile.js
bin/jalview/io/PfamFile.js
bin/jalview/io/PhylipFile.js
bin/jalview/io/PileUpfile.class
bin/jalview/io/PileUpfile.js
bin/jalview/io/SequenceAnnotationReport.class
bin/jalview/io/SequenceAnnotationReport.js
bin/jalview/io/TCoffeeScoreFile.class
bin/jalview/io/TCoffeeScoreFile.js
bin/jalview/javascript/JSFunctionExec$1.class
bin/jalview/javascript/JSFunctionExec.class
bin/jalview/javascript/JSFunctionExec.js
bin/jalview/javascript/JalviewLiteJsApi.js
bin/jalview/javascript/JsCallBack.js
bin/jalview/javascript/JsSelectionSender.js
bin/jalview/javascript/MouseOverListener.js
bin/jalview/javascript/MouseOverStructureListener.js
bin/jalview/jsdev/Constants.js
bin/jalview/jsdev/GenericFileAdapter.js
bin/jalview/jsdev/JSRegex.js
bin/jalview/jsdev/JavaScriptRegExp.js
bin/jalview/jsdev/RegExp.js
bin/jalview/jsdev/api/RegExpInterface.js
bin/jalview/jsdev/api/VarnaRNA.js
bin/jalview/math/AlignmentDimension.js
bin/jalview/math/Matrix.class
bin/jalview/math/Matrix.js
bin/jalview/math/RotatableMatrix.js
bin/jalview/renderer/AnnotationRenderer.class
bin/jalview/renderer/AnnotationRenderer.js
bin/jalview/renderer/AwtRenderPanelI.js
bin/jalview/renderer/seqfeatures/FeatureRenderer.class
bin/jalview/renderer/seqfeatures/FeatureRenderer.js
bin/jalview/schemes/AnnotationColourGradient.class
bin/jalview/schemes/AnnotationColourGradient.js
bin/jalview/schemes/Blosum62ColourScheme.class
bin/jalview/schemes/Blosum62ColourScheme.js
bin/jalview/schemes/BuriedColourScheme.js
bin/jalview/schemes/ClustalxColourScheme.js
bin/jalview/schemes/ColourSchemeI.js
bin/jalview/schemes/ColourSchemeProperty.js
bin/jalview/schemes/Consensus.js
bin/jalview/schemes/CovariationColourScheme.js
bin/jalview/schemes/FollowerColourScheme.js
bin/jalview/schemes/GraduatedColor.js
bin/jalview/schemes/HelixColourScheme.js
bin/jalview/schemes/HydrophobicColourScheme.js
bin/jalview/schemes/NucleotideColourScheme.js
bin/jalview/schemes/PIDColourScheme.js
bin/jalview/schemes/PurinePyrimidineColourScheme.js
bin/jalview/schemes/RNAHelicesColour.js
bin/jalview/schemes/RNAHelicesColourChooser.js
bin/jalview/schemes/RNAInteractionColourScheme.js
bin/jalview/schemes/ResidueColourScheme.js
bin/jalview/schemes/ResidueProperties.class
bin/jalview/schemes/ResidueProperties.js
bin/jalview/schemes/ScoreColourScheme.js
bin/jalview/schemes/ScoreMatrix.js
bin/jalview/schemes/StrandColourScheme.js
bin/jalview/schemes/TCoffeeColourScheme.js
bin/jalview/schemes/TaylorColourScheme.js
bin/jalview/schemes/TurnColourScheme.js
bin/jalview/schemes/UserColourScheme.class
bin/jalview/schemes/UserColourScheme.js
bin/jalview/schemes/ZappoColourScheme.js
bin/jalview/schemes/package.js
bin/jalview/structure/AlignmentViewPanelListener.js
bin/jalview/structure/AtomSpec.js
bin/jalview/structure/CommandListener.js
bin/jalview/structure/SecondaryStructureListener.js
bin/jalview/structure/SelectionListener.js
bin/jalview/structure/SelectionSource.js
bin/jalview/structure/SequenceListener.js
bin/jalview/structure/StructureListener.js
bin/jalview/structure/StructureMapping.js
bin/jalview/structure/StructureMappingcommandSet.js
bin/jalview/structure/StructureSelectionManager.class
bin/jalview/structure/StructureSelectionManager.js
bin/jalview/structure/VamsasListener.js
bin/jalview/structure/VamsasSource.js
bin/jalview/structures/models/AAStructureBindingModel.class
bin/jalview/structures/models/AAStructureBindingModel.js
bin/jalview/structures/models/SequenceStructureBindingModel.js
bin/jalview/util/AWTConsole.js [deleted file]
bin/jalview/util/BrowserLauncher.js [deleted file]
bin/jalview/util/ColorUtils.js
bin/jalview/util/Comparison.class
bin/jalview/util/Comparison.js
bin/jalview/util/DBRefUtils.class
bin/jalview/util/DBRefUtils.js
bin/jalview/util/Format.class
bin/jalview/util/Format.js
bin/jalview/util/GroupUrlLink.class
bin/jalview/util/GroupUrlLink.js
bin/jalview/util/MapList.class
bin/jalview/util/MapList.js
bin/jalview/util/MappingUtils.js
bin/jalview/util/MessageManager.class
bin/jalview/util/MessageManager.js
bin/jalview/util/ParseHtmlBodyAndLinks.class
bin/jalview/util/ParseHtmlBodyAndLinks.js
bin/jalview/util/Platform.js
bin/jalview/util/QuickSort.js
bin/jalview/util/ReverseListIterator.js
bin/jalview/util/ShiftList.js
bin/jalview/util/StringUtils.js
bin/jalview/util/TableSorter.js
bin/jalview/util/UrlLink.class
bin/jalview/util/UrlLink.js
bin/jalview/util/jarInputStreamProvider.js [deleted file]
bin/jalview/viewmodel/AlignmentViewport.js
bin/jalview/viewmodel/PCAModel.class
bin/jalview/viewmodel/PCAModel.js
bin/jalview/viewmodel/annotationfilter/AnnotationFilterParameter.js
bin/jalview/viewmodel/seqfeatures/FeatureRendererModel.class
bin/jalview/viewmodel/seqfeatures/FeatureRendererModel.js
bin/jalview/viewmodel/seqfeatures/FeatureRendererSettings.js
bin/jalview/viewmodel/seqfeatures/FeatureSettingsModel.js
bin/jalview/viewmodel/seqfeatures/FeaturesDisplayed.js
bin/jalview/viewmodel/styles/ViewStyle.js
bin/jalview/workers/AlignCalcManager.js
bin/jalview/workers/AlignCalcWorker.js
bin/jalview/workers/ComplementConsensusThread.js
bin/jalview/workers/ConsensusThread.js
bin/jalview/workers/ConservationThread.js
bin/jalview/workers/StrucConsensusThread.class
bin/jalview/workers/StrucConsensusThread.js
bin/java.policy.applet [deleted file]
bin/javajs/J2SIgnoreImport.js
bin/javajs/J2SRequireImport.js
bin/javajs/api/BytePoster.js
bin/javajs/api/EigenInterface.js
bin/javajs/api/EventManager.js
bin/javajs/api/FontManager.js
bin/javajs/api/GenericBinaryDocument.js
bin/javajs/api/GenericCifDataParser.js
bin/javajs/api/GenericColor.js
bin/javajs/api/GenericFileInterface.js
bin/javajs/api/GenericImageDialog.js
bin/javajs/api/GenericImageEncoder.js
bin/javajs/api/GenericLineReader.js
bin/javajs/api/GenericMenuInterface.js
bin/javajs/api/GenericMouseInterface.js
bin/javajs/api/GenericPlatform.js
bin/javajs/api/GenericZipInputStream.js
bin/javajs/api/GenericZipTools.js
bin/javajs/api/HTMLElement.js
bin/javajs/api/HTMLWindowEvent.js
bin/javajs/api/Interface.js
bin/javajs/api/JSInterface.js
bin/javajs/api/JSONEncodable.js
bin/javajs/api/JmolObjectInterface.js
bin/javajs/api/PlatformViewer.js
bin/javajs/api/SC.js
bin/javajs/api/SwingController.js
bin/javajs/api/ZInputStream.js
bin/javajs/awt/BorderLayout.js
bin/javajs/awt/Color.js
bin/javajs/awt/Component.js
bin/javajs/awt/Container.js
bin/javajs/awt/Dimension.js
bin/javajs/awt/Font.js
bin/javajs/awt/LayoutManager.js
bin/javajs/awt/event/ActionEvent.js
bin/javajs/awt/event/ActionListener.js
bin/javajs/awt/event/Event.js
bin/javajs/awt/event/ItemEvent.js
bin/javajs/awt/event/WindowEvent.js
bin/javajs/awt/event/WindowListener.js
bin/javajs/export/PDFCreator.js
bin/javajs/export/PDFObject.class
bin/javajs/export/PDFObject.js
bin/javajs/img/BMPDecoder.js
bin/javajs/img/CRCEncoder.js
bin/javajs/img/GifEncoder$ColorCell.class
bin/javajs/img/GifEncoder.class
bin/javajs/img/GifEncoder.js
bin/javajs/img/ImageEncoder.js
bin/javajs/img/Jpg64Encoder.js
bin/javajs/img/JpgEncoder.js
bin/javajs/img/PdfEncoder.js
bin/javajs/img/PngEncoder.js
bin/javajs/img/PpmEncoder.js
bin/javajs/img/package.js
bin/javajs/swing/AbstractButton.js
bin/javajs/swing/AbstractTableModel.js
bin/javajs/swing/ButtonGroup.js
bin/javajs/swing/Cell.js
bin/javajs/swing/ColumnSelectionModel.js
bin/javajs/swing/Document.js
bin/javajs/swing/FlowLayout.js
bin/javajs/swing/Grid.js
bin/javajs/swing/GridBagConstraints.js
bin/javajs/swing/GridBagLayout.js
bin/javajs/swing/Insets.js
bin/javajs/swing/JButton.js
bin/javajs/swing/JCheckBox.js
bin/javajs/swing/JCheckBoxMenuItem.js
bin/javajs/swing/JComboBox.js
bin/javajs/swing/JComponent.js
bin/javajs/swing/JComponentImp.js
bin/javajs/swing/JContentPane.js
bin/javajs/swing/JDialog.js
bin/javajs/swing/JEditorPane.js
bin/javajs/swing/JLabel.js
bin/javajs/swing/JMenu.js
bin/javajs/swing/JMenuItem.js
bin/javajs/swing/JPanel.js
bin/javajs/swing/JPopupMenu.js
bin/javajs/swing/JRadioButtonMenuItem.js
bin/javajs/swing/JScrollPane.js
bin/javajs/swing/JSplitPane.js
bin/javajs/swing/JTable.js
bin/javajs/swing/JTextField.js
bin/javajs/swing/JTextPane.js
bin/javajs/swing/ListSelectionModel.js
bin/javajs/swing/SwingConstants.js
bin/javajs/swing/TableCellRenderer.js
bin/javajs/swing/TableColumn.js
bin/javajs/util/A4.js
bin/javajs/util/AU.js
bin/javajs/util/AjaxURLConnection.js
bin/javajs/util/AjaxURLStreamHandler.js
bin/javajs/util/AjaxURLStreamHandlerFactory.js
bin/javajs/util/ArrayDataReader.js
bin/javajs/util/BArray.js
bin/javajs/util/BC.js
bin/javajs/util/BS.js
bin/javajs/util/Base64.js
bin/javajs/util/BinaryDocument.js
bin/javajs/util/CU.js
bin/javajs/util/CifDataParser.class
bin/javajs/util/CifDataParser.js
bin/javajs/util/CompoundDocDirEntry.js
bin/javajs/util/CompoundDocHeader.js
bin/javajs/util/CompoundDocument.class
bin/javajs/util/CompoundDocument.js
bin/javajs/util/DF.js
bin/javajs/util/DataReader.js
bin/javajs/util/Eigen.js
bin/javajs/util/Encoding.js
bin/javajs/util/LimitedLineReader.js
bin/javajs/util/ListDataReader.js
bin/javajs/util/Lst.js
bin/javajs/util/M3.js
bin/javajs/util/M34.js
bin/javajs/util/M4.js
bin/javajs/util/Matrix.js
bin/javajs/util/Measure.class
bin/javajs/util/Measure.js
bin/javajs/util/OC.class
bin/javajs/util/OC.js
bin/javajs/util/P3.js
bin/javajs/util/P3i.js
bin/javajs/util/P4.js
bin/javajs/util/PT.class
bin/javajs/util/PT.js
bin/javajs/util/Quat.js
bin/javajs/util/Rdr.class
bin/javajs/util/Rdr.js
bin/javajs/util/SB.js
bin/javajs/util/StringDataReader.js
bin/javajs/util/T3.js
bin/javajs/util/T3d.js
bin/javajs/util/T3i.js
bin/javajs/util/T4.js
bin/javajs/util/V3.js
bin/javajs/util/V3d.js
bin/javajs/util/XmlUtil.js
bin/javajs/util/ZipData.js
bin/javajs/util/ZipTools.class
bin/javajs/util/ZipTools.js
bin/lang/Messages.properties [deleted file]
bin/lang/Messages_es.properties [deleted file]
bin/netscape/javascript/JSException.js
bin/netscape/javascript/JSObject.js
bin/org/exolab/castor/mapping/Mapping.js
bin/org/exolab/castor/xml/Unmarshaller.js
bin/org/jmol/viewer/Viewer.js
bin/swingjs/JSEvent.js [deleted file]
bin/swingjs/JSThread.js
bin/swingjs/api/DOMNode.js
bin/swingjs/api/JSFunction.js
src/fr/orsay/lri/varna/models/rna/RNA.java

diff --git a/bin/.gitignore b/bin/.gitignore
new file mode 100644 (file)
index 0000000..77d60bf
--- /dev/null
@@ -0,0 +1,9 @@
+/MCview/
+/awt2swing/
+/com/
+/fr/
+/jalview/
+/javajs/
+/netscape/
+/org/
+/swingjs/
index 1f4c66f..ff57b47 100644 (file)
@@ -1,55 +1,55 @@
-Clazz.declarePackage ("MCview");\r
-Clazz.load (["java.awt.Color"], "MCview.Atom", ["java.lang.Float"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.x = 0;\r
-this.y = 0;\r
-this.z = 0;\r
-this.number = 0;\r
-this.name = null;\r
-this.resName = null;\r
-this.resNumber = 0;\r
-this.insCode = ' ';\r
-this.resNumIns = null;\r
-this.type = 0;\r
-this.color = null;\r
-this.chain = null;\r
-this.alignmentMapping = -1;\r
-this.atomIndex = 0;\r
-this.occupancy = 0;\r
-this.tfactor = 0;\r
-this.isSelected = false;\r
-Clazz.instantialize (this, arguments);\r
-}, MCview, "Atom");\r
-Clazz.prepareFields (c$, function () {\r
-this.color = java.awt.Color.lightGray;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (str) {\r
-this.atomIndex = Integer.parseInt (str.substring (6, 11).trim ());\r
-this.name = str.substring (12, 15).trim ();\r
-this.resName = str.substring (17, 20);\r
-this.chain = str.substring (21, 22);\r
-this.resNumber = Integer.parseInt (str.substring (22, 26).trim ());\r
-this.resNumIns = str.substring (22, 27).trim ();\r
-this.insCode = str.substring (26, 27).charAt (0);\r
-this.x = ( new Float (str.substring (30, 38).trim ()).floatValue ());\r
-this.y = ( new Float (str.substring (38, 46).trim ()).floatValue ());\r
-this.z = ( new Float (str.substring (47, 55).trim ()).floatValue ());\r
-var tm = str.substring (54, 60).trim ();\r
-if (tm.length > 0) {\r
-this.occupancy = ( new Float (tm)).floatValue ();\r
-} else {\r
-this.occupancy = 1;\r
-}tm = str.substring (60, 66).trim ();\r
-if (tm.length > 0) {\r
-this.tfactor = ( new Float (tm).floatValue ());\r
-} else {\r
-this.tfactor = 1;\r
-}}, "~S");\r
-Clazz.makeConstructor (c$, \r
-function (x, y, z) {\r
-this.x = x;\r
-this.y = y;\r
-this.z = z;\r
-}, "~N,~N,~N");\r
-});\r
+Clazz.declarePackage ("MCview");
+Clazz.load (["java.awt.Color"], "MCview.Atom", ["java.lang.Float"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.x = 0;
+this.y = 0;
+this.z = 0;
+this.number = 0;
+this.name = null;
+this.resName = null;
+this.resNumber = 0;
+this.insCode = ' ';
+this.resNumIns = null;
+this.type = 0;
+this.color = null;
+this.chain = null;
+this.alignmentMapping = -1;
+this.atomIndex = 0;
+this.occupancy = 0;
+this.tfactor = 0;
+this.isSelected = false;
+Clazz.instantialize (this, arguments);
+}, MCview, "Atom");
+Clazz.prepareFields (c$, function () {
+this.color = java.awt.Color.lightGray;
+});
+Clazz.makeConstructor (c$, 
+function (str) {
+this.atomIndex = Integer.parseInt (str.substring (6, 11).trim ());
+this.name = str.substring (12, 15).trim ();
+this.resName = str.substring (17, 20);
+this.chain = str.substring (21, 22);
+this.resNumber = Integer.parseInt (str.substring (22, 26).trim ());
+this.resNumIns = str.substring (22, 27).trim ();
+this.insCode = str.substring (26, 27).charAt (0);
+this.x = ( new Float (str.substring (30, 38).trim ()).floatValue ());
+this.y = ( new Float (str.substring (38, 46).trim ()).floatValue ());
+this.z = ( new Float (str.substring (47, 55).trim ()).floatValue ());
+var tm = str.substring (54, 60).trim ();
+if (tm.length > 0) {
+this.occupancy = ( new Float (tm)).floatValue ();
+} else {
+this.occupancy = 1;
+}tm = str.substring (60, 66).trim ();
+if (tm.length > 0) {
+this.tfactor = ( new Float (tm).floatValue ());
+} else {
+this.tfactor = 1;
+}}, "~S");
+Clazz.makeConstructor (c$, 
+function (x, y, z) {
+this.x = x;
+this.y = y;
+this.z = z;
+}, "~N,~N,~N");
+});
index 539e323..9aaba45 100644 (file)
@@ -1,34 +1,34 @@
-Clazz.declarePackage ("MCview");\r
-Clazz.load (["java.awt.Color"], "MCview.Bond", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.start = null;\r
-this.end = null;\r
-this.startCol = null;\r
-this.endCol = null;\r
-this.at1 = null;\r
-this.at2 = null;\r
-Clazz.instantialize (this, arguments);\r
-}, MCview, "Bond");\r
-Clazz.prepareFields (c$, function () {\r
-this.startCol = java.awt.Color.lightGray;\r
-this.endCol = java.awt.Color.lightGray;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (at1, at2) {\r
-this.start =  Clazz.newFloatArray (-1, [at1.x, at1.y, at1.z]);\r
-this.end =  Clazz.newFloatArray (-1, [at2.x, at2.y, at2.z]);\r
-this.startCol = at1.color;\r
-this.endCol = at2.color;\r
-this.at1 = at1;\r
-this.at2 = at2;\r
-}, "MCview.Atom,MCview.Atom");\r
-Clazz.defineMethod (c$, "translate", \r
-function (x, y, z) {\r
-this.start[0] = this.start[0] + x;\r
-this.end[0] = this.end[0] + x;\r
-this.start[1] = this.start[1] + y;\r
-this.end[1] = this.end[1] + y;\r
-this.start[2] = this.start[2] + z;\r
-this.end[2] = this.end[2] + z;\r
-}, "~N,~N,~N");\r
-});\r
+Clazz.declarePackage ("MCview");
+Clazz.load (["java.awt.Color"], "MCview.Bond", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.start = null;
+this.end = null;
+this.startCol = null;
+this.endCol = null;
+this.at1 = null;
+this.at2 = null;
+Clazz.instantialize (this, arguments);
+}, MCview, "Bond");
+Clazz.prepareFields (c$, function () {
+this.startCol = java.awt.Color.lightGray;
+this.endCol = java.awt.Color.lightGray;
+});
+Clazz.makeConstructor (c$, 
+function (at1, at2) {
+this.start =  Clazz.newFloatArray (-1, [at1.x, at1.y, at1.z]);
+this.end =  Clazz.newFloatArray (-1, [at2.x, at2.y, at2.z]);
+this.startCol = at1.color;
+this.endCol = at2.color;
+this.at1 = at1;
+this.at2 = at2;
+}, "MCview.Atom,MCview.Atom");
+Clazz.defineMethod (c$, "translate", 
+function (x, y, z) {
+this.start[0] = this.start[0] + x;
+this.end[0] = this.end[0] + x;
+this.start[1] = this.start[1] + y;
+this.end[1] = this.end[1] + y;
+this.start[2] = this.start[2] + z;
+this.end[2] = this.end[2] + z;
+}, "~N,~N,~N");
+});
index 3e017ed..8244cf6 100644 (file)
Binary files a/bin/MCview/PDBChain.class and b/bin/MCview/PDBChain.class differ
index b58d3dd..727e98e 100644 (file)
-Clazz.declarePackage ("MCview");\r
-Clazz.load (["java.util.Vector"], "MCview.PDBChain", ["MCview.Bond", "$.Residue", "jalview.datamodel.AlignmentAnnotation", "$.Annotation", "$.Sequence", "$.SequenceFeature", "jalview.schemes.ResidueProperties", "java.awt.Color", "java.lang.StringBuilder"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.id = null;\r
-this.bonds = null;\r
-this.atoms = null;\r
-this.residues = null;\r
-this.offset = 0;\r
-this.sequence = null;\r
-this.shadow = null;\r
-this.isNa = false;\r
-this.isVisible = true;\r
-this.pdbstart = 0;\r
-this.pdbend = 0;\r
-this.seqstart = 0;\r
-this.seqend = 0;\r
-this.pdbid = "";\r
-this.newline = null;\r
-this.shadowMap = null;\r
-Clazz.instantialize (this, arguments);\r
-}, MCview, "PDBChain");\r
-Clazz.prepareFields (c$, function () {\r
-this.bonds =  new java.util.Vector ();\r
-this.atoms =  new java.util.Vector ();\r
-this.residues =  new java.util.Vector ();\r
-this.newline = System.getProperty ("line.separator");\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (pdbid, id) {\r
-this.pdbid = pdbid.toLowerCase ();\r
-this.id = id;\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "setNewlineString", \r
-function (nl) {\r
-this.newline = nl;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getNewlineString", \r
-function () {\r
-return this.newline;\r
-});\r
-Clazz.defineMethod (c$, "print", \r
-function () {\r
-var tmp =  new StringBuilder (256);\r
-for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {\r
-tmp.append (b.at1.resName).append (" ").append (b.at1.resNumber).append (" ").append (this.offset).append (this.newline);\r
-}\r
-return tmp.toString ();\r
-});\r
-Clazz.defineMethod (c$, "makeExactMapping", \r
-function (as, s1) {\r
-var pdbpos = as.getSeq2Start () - 2;\r
-var alignpos = s1.getStart () + as.getSeq1Start () - 3;\r
-for (var atom, $atom = this.atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {\r
-atom.alignmentMapping = -1;\r
-}\r
-for (var i = 0; i < as.astr1.length; i++) {\r
-if (as.astr1.charAt (i) != '-') {\r
-alignpos++;\r
-}if (as.astr2.charAt (i) != '-') {\r
-pdbpos++;\r
-}if (as.astr1.charAt (i) == as.astr2.charAt (i)) {\r
-var res = this.residues.elementAt (pdbpos);\r
-for (var atom, $atom = res.atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {\r
-atom.alignmentMapping = alignpos;\r
-}\r
-}}\r
-}, "jalview.analysis.AlignSeq,jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "transferRESNUMFeatures", \r
-function (seq, status) {\r
-var sq = seq;\r
-while (sq != null && sq.getDatasetSequence () != null) {\r
-sq = sq.getDatasetSequence ();\r
-if (sq === this.sequence) {\r
-return null;\r
-}}\r
-if (status == null) {\r
-status = "IEA:jalview";\r
-}var features = this.sequence.getSequenceFeatures ();\r
-for (var i = 0; i < features.length; i++) {\r
-if (features[i].getFeatureGroup ().equals (this.pdbid)) {\r
-var tx =  new jalview.datamodel.SequenceFeature (features[i]);\r
-tx.setBegin (1 + this.residues.elementAt (tx.getBegin () - this.offset).atoms.elementAt (0).alignmentMapping);\r
-tx.setEnd (1 + this.residues.elementAt (tx.getEnd () - this.offset).atoms.elementAt (0).alignmentMapping);\r
-tx.setStatus (status + ((tx.getStatus () == null || tx.getStatus ().length == 0) ? "" : ":" + tx.getStatus ()));\r
-if (tx.begin != 0 && tx.end != 0) {\r
-sq.addSequenceFeature (tx);\r
-}}}\r
-return features;\r
-}, "jalview.datamodel.SequenceI,~S");\r
-Clazz.defineMethod (c$, "makeCaBondList", \r
-function () {\r
-var na = false;\r
-var numNa = 0;\r
-for (var i = 0; i < (this.residues.size () - 1); i++) {\r
-var tmpres = this.residues.elementAt (i);\r
-var tmpres2 = this.residues.elementAt (i + 1);\r
-var at1 = tmpres.findAtom ("CA");\r
-var at2 = tmpres2.findAtom ("CA");\r
-na = false;\r
-if ((at1 == null) && (at2 == null)) {\r
-na = true;\r
-at1 = tmpres.findAtom ("P");\r
-at2 = tmpres2.findAtom ("P");\r
-}if ((at1 != null) && (at2 != null)) {\r
-if (at1.chain.equals (at2.chain)) {\r
-if (na) {\r
-numNa++;\r
-}this.makeBond (at1, at2);\r
-}} else {\r
-System.out.println ("not found " + i);\r
-}}\r
-if (this.residues.size () > 0 && (Clazz.doubleToInt (numNa / (this.residues.size () - 1)) > 0.99)) {\r
-this.isNa = true;\r
-}});\r
-Clazz.defineMethod (c$, "makeBond", \r
-function (at1, at2) {\r
-this.bonds.addElement ( new MCview.Bond (at1, at2));\r
-}, "MCview.Atom,MCview.Atom");\r
-Clazz.defineMethod (c$, "makeResidueList", \r
-function (visibleChainAnnotation) {\r
-var count = 0;\r
-var symbol;\r
-var deoxyn = false;\r
-var nucleotide = false;\r
-var seq =  new StringBuilder (256);\r
-var resFeatures =  new java.util.Vector ();\r
-var resAnnotation =  new java.util.Vector ();\r
-var i;\r
-var iSize = this.atoms.size () - 1;\r
-var resNumber = -1;\r
-for (i = 0; i <= iSize; i++) {\r
-var tmp = this.atoms.elementAt (i);\r
-resNumber = tmp.resNumber;\r
-var res = resNumber;\r
-if (i == 0) {\r
-this.offset = resNumber;\r
-}var resAtoms =  new java.util.Vector ();\r
-while ((resNumber == res) && (i < this.atoms.size ())) {\r
-resAtoms.add (this.atoms.elementAt (i));\r
-i++;\r
-if (i < this.atoms.size ()) {\r
-resNumber = this.atoms.elementAt (i).resNumber;\r
-} else {\r
-resNumber++;\r
-}}\r
-i--;\r
-this.residues.addElement ( new MCview.Residue (resAtoms, resNumber - 1, count));\r
-var tmpres = this.residues.lastElement ();\r
-var tmpat = tmpres.atoms.get (0);\r
-var sf =  new jalview.datamodel.SequenceFeature ("RESNUM", tmpat.resName + ":" + tmpat.resNumIns + " " + this.pdbid + this.id, "", this.offset + count, this.offset + count, this.pdbid);\r
-resFeatures.addElement (sf);\r
-resAnnotation.addElement ( new jalview.datamodel.Annotation (tmpat.tfactor));\r
-if ((symbol = jalview.schemes.ResidueProperties.getAA3Hash ().get (tmpat.resName)) == null) {\r
-var nucname = tmpat.resName.trim ();\r
-deoxyn = nucname.length == 2 && jalview.schemes.ResidueProperties.aaIndex[nucname.charCodeAt (0)] == jalview.schemes.ResidueProperties.aaIndex['D'.charCodeAt (0)];\r
-if (tmpat.name.equalsIgnoreCase ("CA") || jalview.schemes.ResidueProperties.nucleotideIndex[nucname.charCodeAt ((deoxyn ? 1 : 0))] == -1) {\r
-seq.append ("X");\r
-} else {\r
-nucleotide = true;\r
-seq.append (nucname.charAt ((deoxyn ? 1 : 0)));\r
-}} else {\r
-if (nucleotide) {\r
-System.err.println ("Warning: mixed nucleotide and amino acid chain.. its gonna do bad things to you!");\r
-}seq.append (jalview.schemes.ResidueProperties.aa[(symbol).intValue ()]);\r
-}count++;\r
-}\r
-if (this.id.length < 1) {\r
-this.id = " ";\r
-}this.isNa = nucleotide;\r
-this.sequence =  new jalview.datamodel.Sequence (this.id, seq.toString (), this.offset, resNumber - 1);\r
-for (i = 0, iSize = resFeatures.size (); i < iSize; i++) {\r
-this.sequence.addSequenceFeature (resFeatures.elementAt (i));\r
-resFeatures.setElementAt (null, i);\r
-}\r
-if (visibleChainAnnotation) {\r
-var annots =  new Array (resAnnotation.size ());\r
-var max = 0;\r
-for (i = 0, iSize = annots.length; i < iSize; i++) {\r
-annots[i] = resAnnotation.elementAt (i);\r
-if (annots[i].value > max) {\r
-max = annots[i].value;\r
-}resAnnotation.setElementAt (null, i);\r
-}\r
-var tfactorann =  new jalview.datamodel.AlignmentAnnotation ("Temperature Factor", "Temperature Factor for " + this.pdbid + this.id, annots, 0, max, 2);\r
-tfactorann.setSequenceRef (this.sequence);\r
-this.sequence.addAlignmentAnnotation (tfactorann);\r
-}}, "~B");\r
-Clazz.defineMethod (c$, "setChargeColours", \r
-function () {\r
-for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {\r
-if (b.at1 != null && b.at2 != null) {\r
-b.startCol = MCview.PDBChain.getChargeColour (b.at1.resName);\r
-b.endCol = MCview.PDBChain.getChargeColour (b.at2.resName);\r
-} else {\r
-b.startCol = java.awt.Color.gray;\r
-b.endCol = java.awt.Color.gray;\r
-}}\r
-});\r
-c$.getChargeColour = Clazz.defineMethod (c$, "getChargeColour", \r
-function (resName) {\r
-var result = java.awt.Color.lightGray;\r
-if ("ASP".equals (resName) || "GLU".equals (resName)) {\r
-result = java.awt.Color.red;\r
-} else if ("LYS".equals (resName) || "ARG".equals (resName)) {\r
-result = java.awt.Color.blue;\r
-} else if ("CYS".equals (resName)) {\r
-result = java.awt.Color.yellow;\r
-}return result;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setChainColours", \r
-function (cs) {\r
-var index;\r
-for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {\r
-try {\r
-index = jalview.schemes.ResidueProperties.aa3Hash.get (b.at1.resName).intValue ();\r
-b.startCol = cs.findColour (jalview.schemes.ResidueProperties.aa[index].charAt (0));\r
-index = jalview.schemes.ResidueProperties.aa3Hash.get (b.at2.resName).intValue ();\r
-b.endCol = cs.findColour (jalview.schemes.ResidueProperties.aa[index].charAt (0));\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-b.startCol = java.awt.Color.gray;\r
-b.endCol = java.awt.Color.gray;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}\r
-}, "jalview.schemes.ColourSchemeI");\r
-Clazz.defineMethod (c$, "setChainColours", \r
-function (col) {\r
-for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {\r
-b.startCol = col;\r
-b.endCol = col;\r
-}\r
-}, "java.awt.Color");\r
-Clazz.defineMethod (c$, "transferResidueAnnotation", \r
-function (mapping, sqmpping) {\r
-var sq = mapping.getSequence ();\r
-var dsq = sq;\r
-if (sq != null) {\r
-while (dsq.getDatasetSequence () != null) {\r
-dsq = dsq.getDatasetSequence ();\r
-}\r
-if (this.shadow != null && this.shadow.getAnnotation () != null) {\r
-for (var ana, $ana = 0, $$ana = this.shadow.getAnnotation (); $ana < $$ana.length && ((ana = $$ana[$ana]) || true); $ana++) {\r
-var transfer = sq.getAlignmentAnnotations (ana.getCalcId (), ana.label);\r
-if (transfer == null || transfer.size () == 0) {\r
-ana =  new jalview.datamodel.AlignmentAnnotation (ana);\r
-ana.liftOver (this.sequence, this.shadowMap);\r
-ana.liftOver (dsq, sqmpping);\r
-dsq.addAlignmentAnnotation (ana);\r
-} else {\r
-continue;\r
-}}\r
-} else {\r
-if (this.sequence != null && this.sequence.getAnnotation () != null) {\r
-for (var ana, $ana = 0, $$ana = this.sequence.getAnnotation (); $ana < $$ana.length && ((ana = $$ana[$ana]) || true); $ana++) {\r
-var transfer = sq.getAlignmentAnnotations (ana.getCalcId (), ana.label);\r
-if (transfer == null || transfer.size () == 0) {\r
-ana =  new jalview.datamodel.AlignmentAnnotation (ana);\r
-ana.liftOver (dsq, sqmpping);\r
-} else {\r
-continue;\r
-}}\r
-}}if (false) {\r
-var min = -1;\r
-var max = 0;\r
-var an =  new Array (sq.getEnd () - sq.getStart () + 1);\r
-for (var i = sq.getStart (), j = sq.getEnd (), k = 0; i <= j; i++, k++) {\r
-var prn = mapping.getPDBResNum (k + 1);\r
-an[k] =  new jalview.datamodel.Annotation (prn);\r
-if (min == -1) {\r
-min = k;\r
-max = k;\r
-} else {\r
-if (min > k) {\r
-min = k;\r
-} else if (max < k) {\r
-max = k;\r
-}}}\r
-sq.addAlignmentAnnotation ( new jalview.datamodel.AlignmentAnnotation ("PDB.RESNUM", "PDB Residue Numbering for " + this.pdbid + ":" + this.id, an, min, max, 2));\r
-}}}, "jalview.structure.StructureMapping,jalview.datamodel.Mapping");\r
-Clazz.defineStatics (c$,\r
-"PDBFILEFEATURE", "PDBFile",\r
-"IEASTATUS", "IEA:jalview");\r
-});\r
+Clazz.declarePackage ("MCview");
+Clazz.load (["java.util.Vector"], "MCview.PDBChain", ["MCview.Bond", "$.Residue", "jalview.datamodel.AlignmentAnnotation", "$.Annotation", "$.Sequence", "$.SequenceFeature", "jalview.schemes.ResidueProperties", "java.awt.Color", "java.lang.StringBuilder"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.id = null;
+this.bonds = null;
+this.atoms = null;
+this.residues = null;
+this.offset = 0;
+this.sequence = null;
+this.shadow = null;
+this.isNa = false;
+this.isVisible = true;
+this.pdbstart = 0;
+this.pdbend = 0;
+this.seqstart = 0;
+this.seqend = 0;
+this.pdbid = "";
+this.newline = null;
+this.shadowMap = null;
+Clazz.instantialize (this, arguments);
+}, MCview, "PDBChain");
+Clazz.prepareFields (c$, function () {
+this.bonds =  new java.util.Vector ();
+this.atoms =  new java.util.Vector ();
+this.residues =  new java.util.Vector ();
+this.newline = System.getProperty ("line.separator");
+});
+Clazz.makeConstructor (c$, 
+function (pdbid, id) {
+this.pdbid = pdbid.toLowerCase ();
+this.id = id;
+}, "~S,~S");
+Clazz.defineMethod (c$, "setNewlineString", 
+function (nl) {
+this.newline = nl;
+}, "~S");
+Clazz.defineMethod (c$, "getNewlineString", 
+function () {
+return this.newline;
+});
+Clazz.defineMethod (c$, "print", 
+function () {
+var tmp =  new StringBuilder (256);
+for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
+tmp.append (b.at1.resName).append (" ").append (b.at1.resNumber).append (" ").append (this.offset).append (this.newline);
+}
+return tmp.toString ();
+});
+Clazz.defineMethod (c$, "makeExactMapping", 
+function (as, s1) {
+var pdbpos = as.getSeq2Start () - 2;
+var alignpos = s1.getStart () + as.getSeq1Start () - 3;
+for (var atom, $atom = this.atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {
+atom.alignmentMapping = -1;
+}
+for (var i = 0; i < as.astr1.length; i++) {
+if (as.astr1.charAt (i) != '-') {
+alignpos++;
+}if (as.astr2.charAt (i) != '-') {
+pdbpos++;
+}if (as.astr1.charAt (i) == as.astr2.charAt (i)) {
+var res = this.residues.elementAt (pdbpos);
+for (var atom, $atom = res.atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {
+atom.alignmentMapping = alignpos;
+}
+}}
+}, "jalview.analysis.AlignSeq,jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "transferRESNUMFeatures", 
+function (seq, status) {
+var sq = seq;
+while (sq != null && sq.getDatasetSequence () != null) {
+sq = sq.getDatasetSequence ();
+if (sq === this.sequence) {
+return null;
+}}
+if (status == null) {
+status = "IEA:jalview";
+}var features = this.sequence.getSequenceFeatures ();
+for (var i = 0; i < features.length; i++) {
+if (features[i].getFeatureGroup ().equals (this.pdbid)) {
+var tx =  new jalview.datamodel.SequenceFeature (features[i]);
+tx.setBegin (1 + this.residues.elementAt (tx.getBegin () - this.offset).atoms.elementAt (0).alignmentMapping);
+tx.setEnd (1 + this.residues.elementAt (tx.getEnd () - this.offset).atoms.elementAt (0).alignmentMapping);
+tx.setStatus (status + ((tx.getStatus () == null || tx.getStatus ().length == 0) ? "" : ":" + tx.getStatus ()));
+if (tx.begin != 0 && tx.end != 0) {
+sq.addSequenceFeature (tx);
+}}}
+return features;
+}, "jalview.datamodel.SequenceI,~S");
+Clazz.defineMethod (c$, "makeCaBondList", 
+function () {
+var na = false;
+var numNa = 0;
+for (var i = 0; i < (this.residues.size () - 1); i++) {
+var tmpres = this.residues.elementAt (i);
+var tmpres2 = this.residues.elementAt (i + 1);
+var at1 = tmpres.findAtom ("CA");
+var at2 = tmpres2.findAtom ("CA");
+na = false;
+if ((at1 == null) && (at2 == null)) {
+na = true;
+at1 = tmpres.findAtom ("P");
+at2 = tmpres2.findAtom ("P");
+}if ((at1 != null) && (at2 != null)) {
+if (at1.chain.equals (at2.chain)) {
+if (na) {
+numNa++;
+}this.makeBond (at1, at2);
+}} else {
+System.out.println ("not found " + i);
+}}
+if (this.residues.size () > 0 && (Clazz.doubleToInt (numNa / (this.residues.size () - 1)) > 0.99)) {
+this.isNa = true;
+}});
+Clazz.defineMethod (c$, "makeBond", 
+function (at1, at2) {
+this.bonds.addElement ( new MCview.Bond (at1, at2));
+}, "MCview.Atom,MCview.Atom");
+Clazz.defineMethod (c$, "makeResidueList", 
+function (visibleChainAnnotation) {
+var count = 0;
+var symbol;
+var deoxyn = false;
+var nucleotide = false;
+var seq =  new StringBuilder (256);
+var resFeatures =  new java.util.Vector ();
+var resAnnotation =  new java.util.Vector ();
+var i;
+var iSize = this.atoms.size () - 1;
+var resNumber = -1;
+for (i = 0; i <= iSize; i++) {
+var tmp = this.atoms.elementAt (i);
+resNumber = tmp.resNumber;
+var res = resNumber;
+if (i == 0) {
+this.offset = resNumber;
+}var resAtoms =  new java.util.Vector ();
+while ((resNumber == res) && (i < this.atoms.size ())) {
+resAtoms.add (this.atoms.elementAt (i));
+i++;
+if (i < this.atoms.size ()) {
+resNumber = this.atoms.elementAt (i).resNumber;
+} else {
+resNumber++;
+}}
+i--;
+this.residues.addElement ( new MCview.Residue (resAtoms, resNumber - 1, count));
+var tmpres = this.residues.lastElement ();
+var tmpat = tmpres.atoms.get (0);
+var sf =  new jalview.datamodel.SequenceFeature ("RESNUM", tmpat.resName + ":" + tmpat.resNumIns + " " + this.pdbid + this.id, "", this.offset + count, this.offset + count, this.pdbid);
+resFeatures.addElement (sf);
+resAnnotation.addElement ( new jalview.datamodel.Annotation (tmpat.tfactor));
+if ((symbol = jalview.schemes.ResidueProperties.getAA3Hash ().get (tmpat.resName)) == null) {
+var nucname = tmpat.resName.trim ();
+deoxyn = nucname.length == 2 && jalview.schemes.ResidueProperties.aaIndex[nucname.charCodeAt (0)] == jalview.schemes.ResidueProperties.aaIndex['D'.charCodeAt (0)];
+if (tmpat.name.equalsIgnoreCase ("CA") || jalview.schemes.ResidueProperties.nucleotideIndex[nucname.charCodeAt ((deoxyn ? 1 : 0))] == -1) {
+seq.append ("X");
+} else {
+nucleotide = true;
+seq.append (nucname.charAt ((deoxyn ? 1 : 0)));
+}} else {
+if (nucleotide) {
+System.err.println ("Warning: mixed nucleotide and amino acid chain.. its gonna do bad things to you!");
+}seq.append (jalview.schemes.ResidueProperties.aa[(symbol).intValue ()]);
+}count++;
+}
+if (this.id.length < 1) {
+this.id = " ";
+}this.isNa = nucleotide;
+this.sequence =  new jalview.datamodel.Sequence (this.id, seq.toString (), this.offset, resNumber - 1);
+for (i = 0, iSize = resFeatures.size (); i < iSize; i++) {
+this.sequence.addSequenceFeature (resFeatures.elementAt (i));
+resFeatures.setElementAt (null, i);
+}
+if (visibleChainAnnotation) {
+var annots =  new Array (resAnnotation.size ());
+var max = 0;
+for (i = 0, iSize = annots.length; i < iSize; i++) {
+annots[i] = resAnnotation.elementAt (i);
+if (annots[i].value > max) {
+max = annots[i].value;
+}resAnnotation.setElementAt (null, i);
+}
+var tfactorann =  new jalview.datamodel.AlignmentAnnotation ("Temperature Factor", "Temperature Factor for " + this.pdbid + this.id, annots, 0, max, 2);
+tfactorann.setSequenceRef (this.sequence);
+this.sequence.addAlignmentAnnotation (tfactorann);
+}}, "~B");
+Clazz.defineMethod (c$, "setChargeColours", 
+function () {
+for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
+if (b.at1 != null && b.at2 != null) {
+b.startCol = MCview.PDBChain.getChargeColour (b.at1.resName);
+b.endCol = MCview.PDBChain.getChargeColour (b.at2.resName);
+} else {
+b.startCol = java.awt.Color.gray;
+b.endCol = java.awt.Color.gray;
+}}
+});
+c$.getChargeColour = Clazz.defineMethod (c$, "getChargeColour", 
+function (resName) {
+var result = java.awt.Color.lightGray;
+if ("ASP".equals (resName) || "GLU".equals (resName)) {
+result = java.awt.Color.red;
+} else if ("LYS".equals (resName) || "ARG".equals (resName)) {
+result = java.awt.Color.blue;
+} else if ("CYS".equals (resName)) {
+result = java.awt.Color.yellow;
+}return result;
+}, "~S");
+Clazz.defineMethod (c$, "setChainColours", 
+function (cs) {
+var index;
+for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
+try {
+index = jalview.schemes.ResidueProperties.aa3Hash.get (b.at1.resName).intValue ();
+b.startCol = cs.findColour (jalview.schemes.ResidueProperties.aa[index].charAt (0));
+index = jalview.schemes.ResidueProperties.aa3Hash.get (b.at2.resName).intValue ();
+b.endCol = cs.findColour (jalview.schemes.ResidueProperties.aa[index].charAt (0));
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+b.startCol = java.awt.Color.gray;
+b.endCol = java.awt.Color.gray;
+} else {
+throw e;
+}
+}
+}
+}, "jalview.schemes.ColourSchemeI");
+Clazz.defineMethod (c$, "setChainColours", 
+function (col) {
+for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
+b.startCol = col;
+b.endCol = col;
+}
+}, "java.awt.Color");
+Clazz.defineMethod (c$, "transferResidueAnnotation", 
+function (mapping, sqmpping) {
+var sq = mapping.getSequence ();
+var dsq = sq;
+if (sq != null) {
+while (dsq.getDatasetSequence () != null) {
+dsq = dsq.getDatasetSequence ();
+}
+if (this.shadow != null && this.shadow.getAnnotation () != null) {
+for (var ana, $ana = 0, $$ana = this.shadow.getAnnotation (); $ana < $$ana.length && ((ana = $$ana[$ana]) || true); $ana++) {
+var transfer = sq.getAlignmentAnnotations (ana.getCalcId (), ana.label);
+if (transfer == null || transfer.size () == 0) {
+ana =  new jalview.datamodel.AlignmentAnnotation (ana);
+ana.liftOver (this.sequence, this.shadowMap);
+ana.liftOver (dsq, sqmpping);
+dsq.addAlignmentAnnotation (ana);
+} else {
+continue;
+}}
+} else {
+if (this.sequence != null && this.sequence.getAnnotation () != null) {
+for (var ana, $ana = 0, $$ana = this.sequence.getAnnotation (); $ana < $$ana.length && ((ana = $$ana[$ana]) || true); $ana++) {
+var transfer = sq.getAlignmentAnnotations (ana.getCalcId (), ana.label);
+if (transfer == null || transfer.size () == 0) {
+ana =  new jalview.datamodel.AlignmentAnnotation (ana);
+ana.liftOver (dsq, sqmpping);
+} else {
+continue;
+}}
+}}if (false) {
+var min = -1;
+var max = 0;
+var an =  new Array (sq.getEnd () - sq.getStart () + 1);
+for (var i = sq.getStart (), j = sq.getEnd (), k = 0; i <= j; i++, k++) {
+var prn = mapping.getPDBResNum (k + 1);
+an[k] =  new jalview.datamodel.Annotation (prn);
+if (min == -1) {
+min = k;
+max = k;
+} else {
+if (min > k) {
+min = k;
+} else if (max < k) {
+max = k;
+}}}
+sq.addAlignmentAnnotation ( new jalview.datamodel.AlignmentAnnotation ("PDB.RESNUM", "PDB Residue Numbering for " + this.pdbid + ":" + this.id, an, min, max, 2));
+}}}, "jalview.structure.StructureMapping,jalview.datamodel.Mapping");
+Clazz.defineStatics (c$,
+"PDBFILEFEATURE", "PDBFile",
+"IEASTATUS", "IEA:jalview");
+});
index 251deb7..a9bf874 100644 (file)
Binary files a/bin/MCview/PDBfile.class and b/bin/MCview/PDBfile.class differ
index dfc40cc..c6af5ca 100644 (file)
-Clazz.declarePackage ("MCview");\r
-Clazz.load (["jalview.io.AlignFile"], "MCview.PDBfile", ["MCview.Atom", "$.PDBChain", "jalview.analysis.AlignSeq", "jalview.datamodel.Alignment", "$.AlignmentI", "$.PDBEntry", "jalview.io.FileParse", "jalview.util.MessageManager", "java.awt.Color", "java.io.IOException", "java.util.ArrayList", "$.Hashtable", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.chains = null;\r
-this.id = null;\r
-this.visibleChainAnnotation = false;\r
-this.$predictSecondaryStructure = true;\r
-this.externalSecondaryStructure = false;\r
-Clazz.instantialize (this, arguments);\r
-}, MCview, "PDBfile", jalview.io.AlignFile);\r
-Clazz.makeConstructor (c$, \r
-function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr) {\r
-Clazz.superConstructor (this, MCview.PDBfile);\r
-this.visibleChainAnnotation = addAlignmentAnnotations;\r
-this.$predictSecondaryStructure = predictSecondaryStructure;\r
-this.externalSecondaryStructure = externalSecStr;\r
-}, "~B,~B,~B");\r
-Clazz.makeConstructor (c$, \r
-function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr, file, protocol) {\r
-Clazz.superConstructor (this, MCview.PDBfile, [false, file, protocol]);\r
-this.visibleChainAnnotation = addAlignmentAnnotations;\r
-this.$predictSecondaryStructure = predictSecondaryStructure;\r
-this.externalSecondaryStructure = externalSecStr;\r
-this.doParse ();\r
-}, "~B,~B,~B,~S,~S");\r
-Clazz.makeConstructor (c$, \r
-function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr, source) {\r
-Clazz.superConstructor (this, MCview.PDBfile, [false, source]);\r
-this.visibleChainAnnotation = addAlignmentAnnotations;\r
-this.$predictSecondaryStructure = predictSecondaryStructure;\r
-this.externalSecondaryStructure = externalSecStr;\r
-this.doParse ();\r
-}, "~B,~B,~B,jalview.io.FileParse");\r
-Clazz.overrideMethod (c$, "print", \r
-function () {\r
-return null;\r
-});\r
-Clazz.overrideMethod (c$, "parse", \r
-function () {\r
-this.id = this.safeName (this.getDataName ());\r
-this.chains =  new java.util.Vector ();\r
-var rna =  new java.util.ArrayList ();\r
-var prot =  new java.util.ArrayList ();\r
-var tmpchain;\r
-var line = null;\r
-var modelFlag = false;\r
-var terFlag = false;\r
-var lastID = "";\r
-var indexx = 0;\r
-var atomnam = null;\r
-try {\r
-while ((line = this.nextLine ()) != null) {\r
-if (line.indexOf ("HEADER") == 0) {\r
-if (line.length > 62) {\r
-var tid;\r
-if (line.length > 67) {\r
-tid = line.substring (62, 67).trim ();\r
-} else {\r
-tid = line.substring (62).trim ();\r
-}if (tid.length > 0) {\r
-this.id = tid;\r
-}continue;\r
-}}if (line.indexOf ("SEQRES") == 0) {\r
-}if (line.indexOf ("MODEL") == 0) {\r
-modelFlag = true;\r
-}if (line.indexOf ("TER") == 0) {\r
-terFlag = true;\r
-}if (modelFlag && line.indexOf ("ENDMDL") == 0) {\r
-break;\r
-}if (line.indexOf ("ATOM") == 0 || (line.indexOf ("HETATM") == 0 && !terFlag)) {\r
-terFlag = false;\r
-atomnam = line.substring (12, 15).trim ();\r
-if (!atomnam.equals ("CA") && !atomnam.equals ("P")) {\r
-continue;\r
-}var tmpatom =  new MCview.Atom (line);\r
-tmpchain = this.findChain (tmpatom.chain);\r
-if (tmpchain != null) {\r
-if (tmpatom.resNumIns.trim ().equals (lastID)) {\r
-continue;\r
-}tmpchain.atoms.addElement (tmpatom);\r
-} else {\r
-tmpchain =  new MCview.PDBChain (this.id, tmpatom.chain);\r
-this.chains.addElement (tmpchain);\r
-tmpchain.atoms.addElement (tmpatom);\r
-}lastID = tmpatom.resNumIns.trim ();\r
-}this.index++;\r
-}\r
-this.makeResidueList ();\r
-this.makeCaBondList ();\r
-if (this.id == null) {\r
-this.id = this.inFile.getName ();\r
-}for (var chain, $chain = this.chains.iterator (); $chain.hasNext () && ((chain = $chain.next ()) || true);) {\r
-var chainseq = this.postProcessChain (chain);\r
-if (MCview.PDBfile.isRNA (chainseq)) {\r
-rna.add (chainseq);\r
-} else {\r
-prot.add (chainseq);\r
-}}\r
-if (this.$predictSecondaryStructure) {\r
-this.predictSecondaryStructure (rna, prot);\r
-}} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, OutOfMemoryError)) {\r
-var er = e$$;\r
-{\r
-System.out.println ("OUT OF MEMORY LOADING PDB FILE");\r
-throw  new java.io.IOException (jalview.util.MessageManager.getString ("exception.outofmemory_loading_pdb_file"));\r
-}\r
-} else if (Clazz.exceptionOf (e$$, NumberFormatException)) {\r
-var ex = e$$;\r
-{\r
-if (line != null) {\r
-System.err.println ("Couldn't read number from line:");\r
-System.err.println (line);\r
-}}\r
-} else {\r
-throw e$$;\r
-}\r
-}\r
-this.markCalcIds ();\r
-});\r
-Clazz.defineMethod (c$, "predictSecondaryStructure", \r
-function (rnaSequences, proteinSequences) {\r
-if (this.externalSecondaryStructure && rnaSequences.size () > 0) {\r
-try {\r
-this.processPdbFileWithAnnotate3d (rnaSequences);\r
-} catch (x) {\r
-if (Clazz.exceptionOf (x, Exception)) {\r
-System.err.println ("Exceptions when dealing with RNA in pdb file");\r
-x.printStackTrace ();\r
-} else {\r
-throw x;\r
-}\r
-}\r
-}if (proteinSequences.size () > 0) {\r
-try {\r
-this.processPdbFileWithJmol (proteinSequences);\r
-} catch (x) {\r
-if (Clazz.exceptionOf (x, Exception)) {\r
-System.err.println ("Exceptions from Jmol when processing data in pdb file");\r
-x.printStackTrace ();\r
-} else {\r
-throw x;\r
-}\r
-}\r
-}}, "java.util.List,java.util.List");\r
-Clazz.defineMethod (c$, "postProcessChain", \r
-function (chain) {\r
-var dataset = chain.sequence;\r
-dataset.setName (this.id + "|" + dataset.getName ());\r
-var entry =  new jalview.datamodel.PDBEntry ();\r
-entry.setId (this.id);\r
-entry.setType (jalview.datamodel.PDBEntry.Type.PDB);\r
-entry.setProperty ( new java.util.Hashtable ());\r
-if (chain.id != null) {\r
-entry.setChainCode (String.valueOf (chain.id));\r
-}if (this.inFile != null) {\r
-entry.setFile (this.inFile.getAbsolutePath ());\r
-} else {\r
-entry.setFile (this.getDataName ());\r
-}dataset.addPDBId (entry);\r
-var chainseq = dataset.deriveSequence ();\r
-this.seqs.addElement (chainseq);\r
-var chainannot = chainseq.getAnnotation ();\r
-if (chainannot != null && this.visibleChainAnnotation) {\r
-for (var ai = 0; ai < chainannot.length; ai++) {\r
-chainannot[ai].visible = this.visibleChainAnnotation;\r
-this.annotations.addElement (chainannot[ai]);\r
-}\r
-}return chainseq;\r
-}, "MCview.PDBChain");\r
-c$.isCalcIdHandled = Clazz.defineMethod (c$, "isCalcIdHandled", \r
-function (calcId) {\r
-return calcId != null && (MCview.PDBfile.CALC_ID_PREFIX.equals (calcId));\r
-}, "~S");\r
-c$.isCalcIdForFile = Clazz.defineMethod (c$, "isCalcIdForFile", \r
-function (alan, pdbFile) {\r
-return alan.getCalcId () != null && MCview.PDBfile.CALC_ID_PREFIX.equals (alan.getCalcId ()) && pdbFile.equals (alan.getProperty ("PDBID"));\r
-}, "jalview.datamodel.AlignmentAnnotation,~S");\r
-c$.relocateCalcId = Clazz.defineMethod (c$, "relocateCalcId", \r
-function (calcId, alreadyLoadedPDB) {\r
-var s = MCview.PDBfile.CALC_ID_PREFIX.length;\r
-var end = calcId.indexOf (MCview.PDBfile.CALC_ID_PREFIX, s);\r
-var between = calcId.substring (s, end - 1);\r
-return MCview.PDBfile.CALC_ID_PREFIX + alreadyLoadedPDB.get (between) + ":" + calcId.substring (end);\r
-}, "~S,java.util.Hashtable");\r
-Clazz.defineMethod (c$, "markCalcIds", \r
-($fz = function () {\r
-for (var sq, $sq = this.seqs.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {\r
-if (sq.getAnnotation () != null) {\r
-for (var aa, $aa = 0, $$aa = sq.getAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {\r
-var oldId = aa.getCalcId ();\r
-if (oldId == null) {\r
-oldId = "";\r
-}aa.setCalcId (MCview.PDBfile.CALC_ID_PREFIX);\r
-aa.setProperty ("PDBID", this.id);\r
-aa.setProperty ("oldCalcId", oldId);\r
-}\r
-}}\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "processPdbFileWithJmol", \r
-($fz = function (prot) {\r
-try {\r
-var cl = Class.forName ("jalview.ext.jmol.PDBFileWithJmol");\r
-if (cl != null) {\r
-var constructor = cl.getConstructor ( Clazz.newArray (-1, [jalview.io.FileParse]));\r
-var args =  Clazz.newArray (-1, [ new jalview.io.FileParse (this.getDataName (), this.type)]);\r
-var jmf = constructor.newInstance (args);\r
-var al =  new jalview.datamodel.Alignment (cl.getMethod ("getSeqsAsArray",  Clazz.newArray (-1, [])).invoke (jmf, []));\r
-cl.getMethod ("addAnnotations",  Clazz.newArray (-1, [jalview.datamodel.AlignmentI])).invoke (jmf, [al]);\r
-for (var sq, $sq = al.getSequences ().iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {\r
-if (sq.getDatasetSequence () != null) {\r
-sq.getDatasetSequence ().getPDBId ().clear ();\r
-} else {\r
-sq.getPDBId ().clear ();\r
-}}\r
-this.replaceAndUpdateChains (prot, al, "pep", false);\r
-}} catch (q) {\r
-if (Clazz.exceptionOf (q, ClassNotFoundException)) {\r
-} else {\r
-throw q;\r
-}\r
-}\r
-}, $fz.isPrivate = true, $fz), "java.util.List");\r
-Clazz.defineMethod (c$, "replaceAndUpdateChains", \r
-($fz = function (prot, al, pep, b) {\r
-var replaced = jalview.analysis.AlignSeq.replaceMatchingSeqsWith (this.seqs, this.annotations, prot, al, pep, false);\r
-for (var ch, $ch = this.chains.iterator (); $ch.hasNext () && ((ch = $ch.next ()) || true);) {\r
-var p = 0;\r
-for (var sq, $sq = replaced.get (0).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {\r
-p++;\r
-if (sq === ch.sequence || sq.getDatasetSequence () === ch.sequence) {\r
-p = -p;\r
-break;\r
-}}\r
-if (p < 0) {\r
-p = -p - 1;\r
-ch.shadow = replaced.get (1).get (p);\r
-ch.shadowMap = (replaced.get (2).get (p)).getMappingFromS1 (false);\r
-}}\r
-}, $fz.isPrivate = true, $fz), "java.util.List,jalview.datamodel.AlignmentI,~S,~B");\r
-Clazz.defineMethod (c$, "processPdbFileWithAnnotate3d", \r
-($fz = function (rna) {\r
-try {\r
-var cl = Class.forName ("jalview.ws.jws1.Annotate3D");\r
-if (cl != null) {\r
-var annotate3d = cl.getConstructor ( Clazz.newArray (-1, [])).newInstance ( Clazz.newArray (-1, []));\r
-var al = (cl.getMethod ("getRNAMLFor",  Clazz.newArray (-1, [jalview.io.FileParse])).invoke (annotate3d,  Clazz.newArray (-1, [ new jalview.io.FileParse (this.getDataName (), this.type)])));\r
-for (var sq, $sq = al.getSequences ().iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {\r
-if (sq.getDatasetSequence () != null) {\r
-if (sq.getDatasetSequence ().getPDBId () != null) {\r
-sq.getDatasetSequence ().getPDBId ().clear ();\r
-}} else {\r
-if (sq.getPDBId () != null) {\r
-sq.getPDBId ().clear ();\r
-}}}\r
-this.replaceAndUpdateChains (rna, al, "dna", false);\r
-}} catch (x) {\r
-if (Clazz.exceptionOf (x, ClassNotFoundException)) {\r
-} else {\r
-throw x;\r
-}\r
-}\r
-;}, $fz.isPrivate = true, $fz), "java.util.List");\r
-Clazz.defineMethod (c$, "safeName", \r
-($fz = function (dataName) {\r
-var p = 0;\r
-while ((p = dataName.indexOf ("/")) > -1 && p < dataName.length) {\r
-dataName = dataName.substring (p + 1);\r
-}\r
-return dataName;\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "makeResidueList", \r
-function () {\r
-for (var i = 0; i < this.chains.size (); i++) {\r
-this.chains.elementAt (i).makeResidueList (this.visibleChainAnnotation);\r
-}\r
-});\r
-Clazz.defineMethod (c$, "makeCaBondList", \r
-function () {\r
-for (var i = 0; i < this.chains.size (); i++) {\r
-this.chains.elementAt (i).makeCaBondList ();\r
-}\r
-});\r
-Clazz.defineMethod (c$, "findChain", \r
-function (id) {\r
-for (var i = 0; i < this.chains.size (); i++) {\r
-if (this.chains.elementAt (i).id.equals (id)) {\r
-return this.chains.elementAt (i);\r
-}}\r
-return null;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setChargeColours", \r
-function () {\r
-for (var i = 0; i < this.chains.size (); i++) {\r
-this.chains.elementAt (i).setChargeColours ();\r
-}\r
-});\r
-Clazz.defineMethod (c$, "setColours", \r
-function (cs) {\r
-for (var i = 0; i < this.chains.size (); i++) {\r
-this.chains.elementAt (i).setChainColours (cs);\r
-}\r
-}, "jalview.schemes.ColourSchemeI");\r
-Clazz.defineMethod (c$, "setChainColours", \r
-function () {\r
-for (var i = 0; i < this.chains.size (); i++) {\r
-this.chains.elementAt (i).setChainColours (java.awt.Color.getHSBColor (1.0 / i, .4, 1.0));\r
-}\r
-});\r
-c$.isRNA = Clazz.defineMethod (c$, "isRNA", \r
-function (seq) {\r
-for (var c, $c = 0, $$c = seq.getSequence (); $c < $$c.length && ((c = $$c[$c]) || true); $c++) {\r
-if ((c != 'A') && (c != 'C') && (c != 'G') && (c != 'U')) {\r
-return false;\r
-}}\r
-return true;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineStatics (c$,\r
-"CALC_ID_PREFIX", "JalviewPDB");\r
-});\r
+Clazz.declarePackage ("MCview");
+Clazz.load (["jalview.io.AlignFile"], "MCview.PDBfile", ["MCview.Atom", "$.PDBChain", "jalview.analysis.AlignSeq", "jalview.datamodel.Alignment", "$.AlignmentI", "$.PDBEntry", "jalview.io.FileParse", "jalview.util.MessageManager", "java.awt.Color", "java.io.IOException", "java.util.ArrayList", "$.Hashtable", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.chains = null;
+this.id = null;
+this.visibleChainAnnotation = false;
+this.$predictSecondaryStructure = true;
+this.externalSecondaryStructure = false;
+Clazz.instantialize (this, arguments);
+}, MCview, "PDBfile", jalview.io.AlignFile);
+Clazz.makeConstructor (c$, 
+function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr) {
+Clazz.superConstructor (this, MCview.PDBfile);
+this.visibleChainAnnotation = addAlignmentAnnotations;
+this.$predictSecondaryStructure = predictSecondaryStructure;
+this.externalSecondaryStructure = externalSecStr;
+}, "~B,~B,~B");
+Clazz.makeConstructor (c$, 
+function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr, file, protocol) {
+Clazz.superConstructor (this, MCview.PDBfile, [false, file, protocol]);
+this.visibleChainAnnotation = addAlignmentAnnotations;
+this.$predictSecondaryStructure = predictSecondaryStructure;
+this.externalSecondaryStructure = externalSecStr;
+this.doParse ();
+}, "~B,~B,~B,~S,~S");
+Clazz.makeConstructor (c$, 
+function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr, source) {
+Clazz.superConstructor (this, MCview.PDBfile, [false, source]);
+this.visibleChainAnnotation = addAlignmentAnnotations;
+this.$predictSecondaryStructure = predictSecondaryStructure;
+this.externalSecondaryStructure = externalSecStr;
+this.doParse ();
+}, "~B,~B,~B,jalview.io.FileParse");
+Clazz.overrideMethod (c$, "print", 
+function () {
+return null;
+});
+Clazz.overrideMethod (c$, "parse", 
+function () {
+this.id = this.safeName (this.getDataName ());
+this.chains =  new java.util.Vector ();
+var rna =  new java.util.ArrayList ();
+var prot =  new java.util.ArrayList ();
+var tmpchain;
+var line = null;
+var modelFlag = false;
+var terFlag = false;
+var lastID = "";
+var indexx = 0;
+var atomnam = null;
+try {
+while ((line = this.nextLine ()) != null) {
+if (line.indexOf ("HEADER") == 0) {
+if (line.length > 62) {
+var tid;
+if (line.length > 67) {
+tid = line.substring (62, 67).trim ();
+} else {
+tid = line.substring (62).trim ();
+}if (tid.length > 0) {
+this.id = tid;
+}continue;
+}}if (line.indexOf ("SEQRES") == 0) {
+}if (line.indexOf ("MODEL") == 0) {
+modelFlag = true;
+}if (line.indexOf ("TER") == 0) {
+terFlag = true;
+}if (modelFlag && line.indexOf ("ENDMDL") == 0) {
+break;
+}if (line.indexOf ("ATOM") == 0 || (line.indexOf ("HETATM") == 0 && !terFlag)) {
+terFlag = false;
+atomnam = line.substring (12, 15).trim ();
+if (!atomnam.equals ("CA") && !atomnam.equals ("P")) {
+continue;
+}var tmpatom =  new MCview.Atom (line);
+tmpchain = this.findChain (tmpatom.chain);
+if (tmpchain != null) {
+if (tmpatom.resNumIns.trim ().equals (lastID)) {
+continue;
+}tmpchain.atoms.addElement (tmpatom);
+} else {
+tmpchain =  new MCview.PDBChain (this.id, tmpatom.chain);
+this.chains.addElement (tmpchain);
+tmpchain.atoms.addElement (tmpatom);
+}lastID = tmpatom.resNumIns.trim ();
+}this.index++;
+}
+this.makeResidueList ();
+this.makeCaBondList ();
+if (this.id == null) {
+this.id = this.inFile.getName ();
+}for (var chain, $chain = this.chains.iterator (); $chain.hasNext () && ((chain = $chain.next ()) || true);) {
+var chainseq = this.postProcessChain (chain);
+if (MCview.PDBfile.isRNA (chainseq)) {
+rna.add (chainseq);
+} else {
+prot.add (chainseq);
+}}
+if (this.$predictSecondaryStructure) {
+this.predictSecondaryStructure (rna, prot);
+}} catch (e$$) {
+if (Clazz.exceptionOf (e$$, OutOfMemoryError)) {
+var er = e$$;
+{
+System.out.println ("OUT OF MEMORY LOADING PDB FILE");
+throw  new java.io.IOException (jalview.util.MessageManager.getString ("exception.outofmemory_loading_pdb_file"));
+}
+} else if (Clazz.exceptionOf (e$$, NumberFormatException)) {
+var ex = e$$;
+{
+if (line != null) {
+System.err.println ("Couldn't read number from line:");
+System.err.println (line);
+}}
+} else {
+throw e$$;
+}
+}
+this.markCalcIds ();
+});
+Clazz.defineMethod (c$, "predictSecondaryStructure", 
+function (rnaSequences, proteinSequences) {
+if (this.externalSecondaryStructure && rnaSequences.size () > 0) {
+try {
+this.processPdbFileWithAnnotate3d (rnaSequences);
+} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+System.err.println ("Exceptions when dealing with RNA in pdb file");
+x.printStackTrace ();
+} else {
+throw x;
+}
+}
+}if (proteinSequences.size () > 0) {
+try {
+this.processPdbFileWithJmol (proteinSequences);
+} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+System.err.println ("Exceptions from Jmol when processing data in pdb file");
+x.printStackTrace ();
+} else {
+throw x;
+}
+}
+}}, "java.util.List,java.util.List");
+Clazz.defineMethod (c$, "postProcessChain", 
+function (chain) {
+var dataset = chain.sequence;
+dataset.setName (this.id + "|" + dataset.getName ());
+var entry =  new jalview.datamodel.PDBEntry ();
+entry.setId (this.id);
+entry.setType (jalview.datamodel.PDBEntry.Type.PDB);
+entry.setProperty ( new java.util.Hashtable ());
+if (chain.id != null) {
+entry.setChainCode (String.valueOf (chain.id));
+}if (this.inFile != null) {
+entry.setFile (this.inFile.getAbsolutePath ());
+} else {
+entry.setFile (this.getDataName ());
+}dataset.addPDBId (entry);
+var chainseq = dataset.deriveSequence ();
+this.seqs.addElement (chainseq);
+var chainannot = chainseq.getAnnotation ();
+if (chainannot != null && this.visibleChainAnnotation) {
+for (var ai = 0; ai < chainannot.length; ai++) {
+chainannot[ai].visible = this.visibleChainAnnotation;
+this.annotations.addElement (chainannot[ai]);
+}
+}return chainseq;
+}, "MCview.PDBChain");
+c$.isCalcIdHandled = Clazz.defineMethod (c$, "isCalcIdHandled", 
+function (calcId) {
+return calcId != null && (MCview.PDBfile.CALC_ID_PREFIX.equals (calcId));
+}, "~S");
+c$.isCalcIdForFile = Clazz.defineMethod (c$, "isCalcIdForFile", 
+function (alan, pdbFile) {
+return alan.getCalcId () != null && MCview.PDBfile.CALC_ID_PREFIX.equals (alan.getCalcId ()) && pdbFile.equals (alan.getProperty ("PDBID"));
+}, "jalview.datamodel.AlignmentAnnotation,~S");
+c$.relocateCalcId = Clazz.defineMethod (c$, "relocateCalcId", 
+function (calcId, alreadyLoadedPDB) {
+var s = MCview.PDBfile.CALC_ID_PREFIX.length;
+var end = calcId.indexOf (MCview.PDBfile.CALC_ID_PREFIX, s);
+var between = calcId.substring (s, end - 1);
+return MCview.PDBfile.CALC_ID_PREFIX + alreadyLoadedPDB.get (between) + ":" + calcId.substring (end);
+}, "~S,java.util.Hashtable");
+Clazz.defineMethod (c$, "markCalcIds", 
+($fz = function () {
+for (var sq, $sq = this.seqs.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+if (sq.getAnnotation () != null) {
+for (var aa, $aa = 0, $$aa = sq.getAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
+var oldId = aa.getCalcId ();
+if (oldId == null) {
+oldId = "";
+}aa.setCalcId (MCview.PDBfile.CALC_ID_PREFIX);
+aa.setProperty ("PDBID", this.id);
+aa.setProperty ("oldCalcId", oldId);
+}
+}}
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "processPdbFileWithJmol", 
+($fz = function (prot) {
+try {
+var cl = Class.forName ("jalview.ext.jmol.PDBFileWithJmol");
+if (cl != null) {
+var constructor = cl.getConstructor ( Clazz.newArray (-1, [jalview.io.FileParse]));
+var args =  Clazz.newArray (-1, [ new jalview.io.FileParse (this.getDataName (), this.type)]);
+var jmf = constructor.newInstance (args);
+var al =  new jalview.datamodel.Alignment (cl.getMethod ("getSeqsAsArray",  Clazz.newArray (-1, [])).invoke (jmf, []));
+cl.getMethod ("addAnnotations",  Clazz.newArray (-1, [jalview.datamodel.AlignmentI])).invoke (jmf, [al]);
+for (var sq, $sq = al.getSequences ().iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+if (sq.getDatasetSequence () != null) {
+sq.getDatasetSequence ().getPDBId ().clear ();
+} else {
+sq.getPDBId ().clear ();
+}}
+this.replaceAndUpdateChains (prot, al, "pep", false);
+}} catch (q) {
+if (Clazz.exceptionOf (q, ClassNotFoundException)) {
+} else {
+throw q;
+}
+}
+}, $fz.isPrivate = true, $fz), "java.util.List");
+Clazz.defineMethod (c$, "replaceAndUpdateChains", 
+($fz = function (prot, al, pep, b) {
+var replaced = jalview.analysis.AlignSeq.replaceMatchingSeqsWith (this.seqs, this.annotations, prot, al, pep, false);
+for (var ch, $ch = this.chains.iterator (); $ch.hasNext () && ((ch = $ch.next ()) || true);) {
+var p = 0;
+for (var sq, $sq = replaced.get (0).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+p++;
+if (sq === ch.sequence || sq.getDatasetSequence () === ch.sequence) {
+p = -p;
+break;
+}}
+if (p < 0) {
+p = -p - 1;
+ch.shadow = replaced.get (1).get (p);
+ch.shadowMap = (replaced.get (2).get (p)).getMappingFromS1 (false);
+}}
+}, $fz.isPrivate = true, $fz), "java.util.List,jalview.datamodel.AlignmentI,~S,~B");
+Clazz.defineMethod (c$, "processPdbFileWithAnnotate3d", 
+($fz = function (rna) {
+try {
+var cl = Class.forName ("jalview.ws.jws1.Annotate3D");
+if (cl != null) {
+var annotate3d = cl.getConstructor ( Clazz.newArray (-1, [])).newInstance ( Clazz.newArray (-1, []));
+var al = (cl.getMethod ("getRNAMLFor",  Clazz.newArray (-1, [jalview.io.FileParse])).invoke (annotate3d,  Clazz.newArray (-1, [ new jalview.io.FileParse (this.getDataName (), this.type)])));
+for (var sq, $sq = al.getSequences ().iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+if (sq.getDatasetSequence () != null) {
+if (sq.getDatasetSequence ().getPDBId () != null) {
+sq.getDatasetSequence ().getPDBId ().clear ();
+}} else {
+if (sq.getPDBId () != null) {
+sq.getPDBId ().clear ();
+}}}
+this.replaceAndUpdateChains (rna, al, "dna", false);
+}} catch (x) {
+if (Clazz.exceptionOf (x, ClassNotFoundException)) {
+} else {
+throw x;
+}
+}
+;}, $fz.isPrivate = true, $fz), "java.util.List");
+Clazz.defineMethod (c$, "safeName", 
+($fz = function (dataName) {
+var p = 0;
+while ((p = dataName.indexOf ("/")) > -1 && p < dataName.length) {
+dataName = dataName.substring (p + 1);
+}
+return dataName;
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "makeResidueList", 
+function () {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).makeResidueList (this.visibleChainAnnotation);
+}
+});
+Clazz.defineMethod (c$, "makeCaBondList", 
+function () {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).makeCaBondList ();
+}
+});
+Clazz.defineMethod (c$, "findChain", 
+function (id) {
+for (var i = 0; i < this.chains.size (); i++) {
+if (this.chains.elementAt (i).id.equals (id)) {
+return this.chains.elementAt (i);
+}}
+return null;
+}, "~S");
+Clazz.defineMethod (c$, "setChargeColours", 
+function () {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).setChargeColours ();
+}
+});
+Clazz.defineMethod (c$, "setColours", 
+function (cs) {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).setChainColours (cs);
+}
+}, "jalview.schemes.ColourSchemeI");
+Clazz.defineMethod (c$, "setChainColours", 
+function () {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).setChainColours (java.awt.Color.getHSBColor (1.0 / i, .4, 1.0));
+}
+});
+c$.isRNA = Clazz.defineMethod (c$, "isRNA", 
+function (seq) {
+for (var c, $c = 0, $$c = seq.getSequence (); $c < $$c.length && ((c = $$c[$c]) || true); $c++) {
+if ((c != 'A') && (c != 'C') && (c != 'G') && (c != 'U')) {
+return false;
+}}
+return true;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineStatics (c$,
+"CALC_ID_PREFIX", "JalviewPDB");
+});
index 93e2930..6cb43ed 100644 (file)
@@ -1,21 +1,21 @@
-Clazz.declarePackage ("MCview");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.atoms = null;\r
-this.number = 0;\r
-this.count = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, MCview, "Residue");\r
-Clazz.makeConstructor (c$, \r
-function (resAtoms, number, count) {\r
-this.atoms = resAtoms;\r
-this.number = number;\r
-this.count = count;\r
-}, "java.util.Vector,~N,~N");\r
-Clazz.defineMethod (c$, "findAtom", \r
-function (name) {\r
-for (var atom, $atom = this.atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {\r
-if (atom.name.equals (name)) {\r
-return atom;\r
-}}\r
-return null;\r
-}, "~S");\r
+Clazz.declarePackage ("MCview");
+c$ = Clazz.decorateAsClass (function () {
+this.atoms = null;
+this.number = 0;
+this.count = 0;
+Clazz.instantialize (this, arguments);
+}, MCview, "Residue");
+Clazz.makeConstructor (c$, 
+function (resAtoms, number, count) {
+this.atoms = resAtoms;
+this.number = number;
+this.count = count;
+}, "java.util.Vector,~N,~N");
+Clazz.defineMethod (c$, "findAtom", 
+function (name) {
+for (var atom, $atom = this.atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {
+if (atom.name.equals (name)) {
+return atom;
+}}
+return null;
+}, "~S");
index b25baa7..80ce87e 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JButton"], "awt2swing.Button", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "Button", javax.swing.JButton);\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JButton"], "awt2swing.Button", null, function () {
+c$ = Clazz.declareType (awt2swing, "Button", javax.swing.JButton);
+});
index df3f0b9..cf449b4 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["awt2swing.Panel"], "awt2swing.Canvas", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "Canvas", awt2swing.Panel);\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["awt2swing.Panel"], "awt2swing.Canvas", null, function () {
+c$ = Clazz.declareType (awt2swing, "Canvas", awt2swing.Panel);
+});
index cd50679..cfc477c 100644 (file)
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JCheckBox"], "awt2swing.Checkbox", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "Checkbox", javax.swing.JCheckBox);\r
-Clazz.defineMethod (c$, "getState", \r
-function () {\r
-return this.isSelected ();\r
-});\r
-Clazz.defineMethod (c$, "setState", \r
-function (b) {\r
-this.setSelected (b);\r
-}, "~B");\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JCheckBox"], "awt2swing.Checkbox", null, function () {
+c$ = Clazz.declareType (awt2swing, "Checkbox", javax.swing.JCheckBox);
+Clazz.defineMethod (c$, "getState", 
+function () {
+return this.isSelected ();
+});
+Clazz.defineMethod (c$, "setState", 
+function (b) {
+this.setSelected (b);
+}, "~B");
+});
index 782c150..9364af7 100644 (file)
@@ -1,16 +1,16 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JCheckBoxMenuItem"], "awt2swing.CheckboxMenuItem", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "CheckboxMenuItem", javax.swing.JCheckBoxMenuItem);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, awt2swing.CheckboxMenuItem, []);\r
-});\r
-Clazz.overrideMethod (c$, "getState", \r
-function () {\r
-return this.isSelected ();\r
-});\r
-Clazz.overrideMethod (c$, "setState", \r
-function (tf) {\r
-this.setSelected (tf);\r
-}, "~B");\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JCheckBoxMenuItem"], "awt2swing.CheckboxMenuItem", null, function () {
+c$ = Clazz.declareType (awt2swing, "CheckboxMenuItem", javax.swing.JCheckBoxMenuItem);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, awt2swing.CheckboxMenuItem, []);
+});
+Clazz.overrideMethod (c$, "getState", 
+function () {
+return this.isSelected ();
+});
+Clazz.overrideMethod (c$, "setState", 
+function (tf) {
+this.setSelected (tf);
+}, "~B");
+});
index a4208b1..0eb2843 100644 (file)
@@ -1,8 +1,8 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JComboBox"], "awt2swing.Choice", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "Choice", javax.swing.JComboBox);\r
-Clazz.defineMethod (c$, "select", \r
-function (key) {\r
-this.setSelectedItem (key);\r
-}, "~O");\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JComboBox"], "awt2swing.Choice", null, function () {
+c$ = Clazz.declareType (awt2swing, "Choice", javax.swing.JComboBox);
+Clazz.defineMethod (c$, "select", 
+function (key) {
+this.setSelectedItem (key);
+}, "~O");
+});
index 027d871..a4e228b 100644 (file)
@@ -1,21 +1,21 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JFrame"], "awt2swing.Frame", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "Frame", javax.swing.JFrame);\r
-Clazz.defineMethod (c$, "remove", \r
-function (i) {\r
-{\r
-this.removeInt(i);\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "setMenuBar", \r
-function (m) {\r
-this.setJMenuBar (m);\r
-}, "awt2swing.MenuBar");\r
-Clazz.defineMethod (c$, "unsetMenuBar", \r
-function () {\r
-this.setJMenuBar (null);\r
-});\r
-Clazz.defineMethod (c$, "getMenubar", \r
-function () {\r
-return this.getJMenuBar ();\r
-});\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JFrame"], "awt2swing.Frame", null, function () {
+c$ = Clazz.declareType (awt2swing, "Frame", javax.swing.JFrame);
+Clazz.defineMethod (c$, "remove", 
+function (i) {
+{
+this.removeInt(i);
+}}, "~N");
+Clazz.defineMethod (c$, "setMenuBar", 
+function (m) {
+this.setJMenuBar (m);
+}, "awt2swing.MenuBar");
+Clazz.defineMethod (c$, "unsetMenuBar", 
+function () {
+this.setJMenuBar (null);
+});
+Clazz.defineMethod (c$, "getMenubar", 
+function () {
+return this.getJMenuBar ();
+});
+});
index 380eaf6..713f8b3 100644 (file)
@@ -1,8 +1,8 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JLabel"], "awt2swing.Label", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "Label", javax.swing.JLabel);\r
-Clazz.defineMethod (c$, "setAlignment", \r
-function (alignment) {\r
-this.setAlignmentX (alignment);\r
-}, "~N");\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JLabel"], "awt2swing.Label", null, function () {
+c$ = Clazz.declareType (awt2swing, "Label", javax.swing.JLabel);
+Clazz.defineMethod (c$, "setAlignment", 
+function (alignment) {
+this.setAlignmentX (alignment);
+}, "~N");
+});
index da1b846..867b6ab 100644 (file)
@@ -1,14 +1,14 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JMenu"], "awt2swing.Menu", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "Menu", javax.swing.JMenu);\r
-Clazz.makeConstructor (c$, \r
-function (title) {\r
-Clazz.superConstructor (this, awt2swing.Menu, [title]);\r
-title = null;\r
-}, "~S");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, awt2swing.Menu);\r
-var s = null;\r
-});\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JMenu"], "awt2swing.Menu", null, function () {
+c$ = Clazz.declareType (awt2swing, "Menu", javax.swing.JMenu);
+Clazz.makeConstructor (c$, 
+function (title) {
+Clazz.superConstructor (this, awt2swing.Menu, [title]);
+title = null;
+}, "~S");
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, awt2swing.Menu);
+var s = null;
+});
+});
index 4865fdd..3b43191 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JMenuBar"], "awt2swing.MenuBar", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "MenuBar", javax.swing.JMenuBar);\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JMenuBar"], "awt2swing.MenuBar", null, function () {
+c$ = Clazz.declareType (awt2swing, "MenuBar", javax.swing.JMenuBar);
+});
index d20f729..f610760 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JMenuItem"], "awt2swing.MenuItem", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "MenuItem", javax.swing.JMenuItem);\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JMenuItem"], "awt2swing.MenuItem", null, function () {
+c$ = Clazz.declareType (awt2swing, "MenuItem", javax.swing.JMenuItem);
+});
index 5e33047..b6061d0 100644 (file)
@@ -1,9 +1,9 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JPanel"], "awt2swing.Panel", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "Panel", javax.swing.JPanel);\r
-Clazz.defineMethod (c$, "setName", \r
-function (name) {\r
-System.out.println (name);\r
-Clazz.superCall (this, awt2swing.Panel, "setName", [name]);\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JPanel"], "awt2swing.Panel", null, function () {
+c$ = Clazz.declareType (awt2swing, "Panel", javax.swing.JPanel);
+Clazz.defineMethod (c$, "setName", 
+function (name) {
+System.out.println (name);
+Clazz.superCall (this, awt2swing.Panel, "setName", [name]);
+}, "~S");
+});
index 007642a..4af0e16 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JPopupMenu"], "awt2swing.PopupMenu", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "PopupMenu", javax.swing.JPopupMenu);\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JPopupMenu"], "awt2swing.PopupMenu", null, function () {
+c$ = Clazz.declareType (awt2swing, "PopupMenu", javax.swing.JPopupMenu);
+});
index 2ea1cea..3ba78cf 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JScrollPane"], "awt2swing.ScrollPane", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "ScrollPane", javax.swing.JScrollPane);\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JScrollPane"], "awt2swing.ScrollPane", null, function () {
+c$ = Clazz.declareType (awt2swing, "ScrollPane", javax.swing.JScrollPane);
+});
index b68bd0c..3859a96 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JScrollBar"], "awt2swing.Scrollbar", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "Scrollbar", javax.swing.JScrollBar);\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JScrollBar"], "awt2swing.Scrollbar", null, function () {
+c$ = Clazz.declareType (awt2swing, "Scrollbar", javax.swing.JScrollBar);
+});
index 3aec891..4358c37 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JTextArea"], "awt2swing.TextArea", null, function () {\r
-c$ = Clazz.declareType (awt2swing, "TextArea", javax.swing.JTextArea);\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JTextArea"], "awt2swing.TextArea", null, function () {
+c$ = Clazz.declareType (awt2swing, "TextArea", javax.swing.JTextArea);
+});
index e8c1558..ef48b75 100644 (file)
@@ -1,23 +1,23 @@
-Clazz.declarePackage ("awt2swing");\r
-Clazz.load (["javax.swing.JTextField"], "awt2swing.TextField", ["java.awt.event.TextEvent", "javax.swing.event.DocumentListener"], function () {\r
-c$ = Clazz.declareType (awt2swing, "TextField", javax.swing.JTextField);\r
-Clazz.defineMethod (c$, "addTextListener", \r
-function (textListener) {\r
-this.getDocument ().addDocumentListener (((Clazz.isClassDefined ("awt2swing.TextField$1") ? 0 : awt2swing.TextField.$TextField$1$ ()), Clazz.innerTypeInstance (awt2swing.TextField$1, this, Clazz.cloneFinals ("textListener", textListener))));\r
-}, "java.awt.event.TextListener");\r
-c$.$TextField$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (awt2swing, "TextField$1", null, javax.swing.event.DocumentListener);\r
-Clazz.overrideMethod (c$, "insertUpdate", \r
-function (e) {\r
-}, "javax.swing.event.DocumentEvent");\r
-Clazz.overrideMethod (c$, "removeUpdate", \r
-function (e) {\r
-}, "javax.swing.event.DocumentEvent");\r
-Clazz.overrideMethod (c$, "changedUpdate", \r
-function (e) {\r
-this.f$.textListener.textValueChanged ( new java.awt.event.TextEvent (this, 0));\r
-}, "javax.swing.event.DocumentEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("awt2swing");
+Clazz.load (["javax.swing.JTextField"], "awt2swing.TextField", ["java.awt.event.TextEvent", "javax.swing.event.DocumentListener"], function () {
+c$ = Clazz.declareType (awt2swing, "TextField", javax.swing.JTextField);
+Clazz.defineMethod (c$, "addTextListener", 
+function (textListener) {
+this.getDocument ().addDocumentListener (((Clazz.isClassDefined ("awt2swing.TextField$1") ? 0 : awt2swing.TextField.$TextField$1$ ()), Clazz.innerTypeInstance (awt2swing.TextField$1, this, Clazz.cloneFinals ("textListener", textListener))));
+}, "java.awt.event.TextListener");
+c$.$TextField$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (awt2swing, "TextField$1", null, javax.swing.event.DocumentListener);
+Clazz.overrideMethod (c$, "insertUpdate", 
+function (e) {
+}, "javax.swing.event.DocumentEvent");
+Clazz.overrideMethod (c$, "removeUpdate", 
+function (e) {
+}, "javax.swing.event.DocumentEvent");
+Clazz.overrideMethod (c$, "changedUpdate", 
+function (e) {
+this.f$.textListener.textValueChanged ( new java.awt.event.TextEvent (this, 0));
+}, "javax.swing.event.DocumentEvent");
+c$ = Clazz.p0p ();
+};
+});
index ac1ce77..6d1f622 100644 (file)
@@ -1,16 +1,16 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.AmpersandRule", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "AmpersandRule", com.stevesoft.pat.ReplaceRule);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.AmpersandRule, []);\r
-});\r
-Clazz.overrideMethod (c$, "apply", \r
-function (sb, res) {\r
-sb.append (res.stringMatched ());\r
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");\r
-Clazz.overrideMethod (c$, "toString1", \r
-function () {\r
-return "$&";\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.AmpersandRule", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "AmpersandRule", com.stevesoft.pat.ReplaceRule);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.AmpersandRule, []);
+});
+Clazz.overrideMethod (c$, "apply", 
+function (sb, res) {
+sb.append (res.stringMatched ());
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz.overrideMethod (c$, "toString1", 
+function () {
+return "$&";
+});
+});
index f129d92..503de21 100644 (file)
@@ -1,30 +1,30 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Any", ["com.stevesoft.pat.patInt"], function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "Any", com.stevesoft.pat.Pattern);\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-if (pos < pt.src.length ()) {\r
-if (pt.dotDoesntMatchCR) {\r
-if (pt.src.charAt (pos) != '\n') {\r
-return this.nextMatch (pos + 1, pt);\r
-}} else {\r
-return this.nextMatch (pos + 1, pt);\r
-}}return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "." + this.nextString ();\r
-});\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (1);\r
-});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (1);\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-return  new com.stevesoft.pat.Any ();\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Any", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "Any", com.stevesoft.pat.Pattern);
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (pos < pt.src.length ()) {
+if (pt.dotDoesntMatchCR) {
+if (pt.src.charAt (pos) != '\n') {
+return this.nextMatch (pos + 1, pt);
+}} else {
+return this.nextMatch (pos + 1, pt);
+}}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "." + this.nextString ();
+});
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.Any ();
+}, "java.util.Hashtable");
+});
index 28d17cd..a9d07b7 100644 (file)
@@ -1,34 +1,34 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.BackG", ["com.stevesoft.pat.patInt"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.c = '\0';\r
-this.altc = '\0';\r
-this.altc2 = '\0';\r
-this.mask = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "BackG", com.stevesoft.pat.Pattern);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.BackG, []);\r
-});\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-return pos == pt.lastPos ? this.nextMatch (pos, pt) : -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "\\G" + this.nextString ();\r
-});\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (1);\r
-});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (1);\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-return  new com.stevesoft.pat.BackG ();\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.BackG", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.c = '\0';
+this.altc = '\0';
+this.altc2 = '\0';
+this.mask = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "BackG", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.BackG, []);
+});
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+return pos == pt.lastPos ? this.nextMatch (pos, pt) : -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "\\G" + this.nextString ();
+});
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.BackG ();
+}, "java.util.Hashtable");
+});
index 018cdda..f3a2ea9 100644 (file)
@@ -1,36 +1,36 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.BackMatch", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.id = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "BackMatch", com.stevesoft.pat.Pattern);\r
-Clazz.makeConstructor (c$, \r
-function (id) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.BackMatch, []);\r
-this.id = id;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "\\" + (this.id) + this.nextString ();\r
-});\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, p) {\r
-var i1 = p.marks[this.id];\r
-var i2 = p.marks[this.id + p.nMarks];\r
-var imax = i2 - i1;\r
-if (i1 < 0 || imax < 0 || pos + imax > p.src.length ()) {\r
-return -1;\r
-}var ns = p.src.length () - pos;\r
-if (imax < ns) {\r
-ns = imax;\r
-}for (var i = 0; i < ns; i++) {\r
-if (p.src.charAt (i + i1) != p.src.charAt (pos + i)) {\r
-return -1;\r
-}}\r
-return this.nextMatch (pos + imax, p);\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-return  new com.stevesoft.pat.BackMatch (this.id);\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.BackMatch", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.id = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "BackMatch", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$, 
+function (id) {
+Clazz.superConstructor (this, com.stevesoft.pat.BackMatch, []);
+this.id = id;
+}, "~N");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "\\" + (this.id) + this.nextString ();
+});
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, p) {
+var i1 = p.marks[this.id];
+var i2 = p.marks[this.id + p.nMarks];
+var imax = i2 - i1;
+if (i1 < 0 || imax < 0 || pos + imax > p.src.length ()) {
+return -1;
+}var ns = p.src.length () - pos;
+if (imax < ns) {
+ns = imax;
+}for (var i = 0; i < ns; i++) {
+if (p.src.charAt (i + i1) != p.src.charAt (pos + i)) {
+return -1;
+}}
+return this.nextMatch (pos + imax, p);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.BackMatch (this.id);
+}, "java.util.Hashtable");
+});
index d6a1e2e..f744c08 100644 (file)
@@ -1,25 +1,25 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.BackRefRule", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.n = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "BackRefRule", com.stevesoft.pat.ReplaceRule);\r
-Clazz.makeConstructor (c$, \r
-function (n) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.BackRefRule, []);\r
-this.n = n;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "apply", \r
-function (sb, res) {\r
-var x = res.stringMatchedI (this.n);\r
-sb.append (x == null ? "" : x);\r
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");\r
-Clazz.overrideMethod (c$, "toString1", \r
-function () {\r
-return "$" + this.n;\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function () {\r
-return  new com.stevesoft.pat.BackRefRule (this.n);\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.BackRefRule", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.n = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "BackRefRule", com.stevesoft.pat.ReplaceRule);
+Clazz.makeConstructor (c$, 
+function (n) {
+Clazz.superConstructor (this, com.stevesoft.pat.BackRefRule, []);
+this.n = n;
+}, "~N");
+Clazz.overrideMethod (c$, "apply", 
+function (sb, res) {
+var x = res.stringMatchedI (this.n);
+sb.append (x == null ? "" : x);
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz.overrideMethod (c$, "toString1", 
+function () {
+return "$" + this.n;
+});
+Clazz.overrideMethod (c$, "clone1", 
+function () {
+return  new com.stevesoft.pat.BackRefRule (this.n);
+});
+});
index f155142..3063b71 100644 (file)
@@ -1,34 +1,34 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Backup", ["com.stevesoft.pat.patInt"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.bk = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Backup", com.stevesoft.pat.Pattern);\r
-Clazz.makeConstructor (c$, \r
-function (ii) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.Backup, []);\r
-this.bk = ii;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "(?" + (this.bk < 0 ? ">" + (-this.bk) : "<" + this.bk) + ")" + this.nextString ();\r
-});\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-if (pos < this.bk) {\r
-return -1;\r
-}return this.nextMatch (pos - this.bk, pt);\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (-this.bk);\r
-});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (-this.bk);\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-return  new com.stevesoft.pat.Backup (this.bk);\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Backup", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.bk = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Backup", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$, 
+function (ii) {
+Clazz.superConstructor (this, com.stevesoft.pat.Backup, []);
+this.bk = ii;
+}, "~N");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "(?" + (this.bk < 0 ? ">" + (-this.bk) : "<" + this.bk) + ")" + this.nextString ();
+});
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (pos < this.bk) {
+return -1;
+}return this.nextMatch (pos - this.bk, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (-this.bk);
+});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (-this.bk);
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.Backup (this.bk);
+}, "java.util.Hashtable");
+});
index f4df37f..c492d08 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.declareInterface (com.stevesoft.pat, "BasicStringBufferLike");\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.declareInterface (com.stevesoft.pat, "BasicStringBufferLike");
index ec8b74c..61bb0fd 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.carray = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Bits");\r
-Clazz.makeConstructor (c$, \r
-function (carray) {\r
-this.carray = carray;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "get", \r
-function (i) {\r
-return ((this.carray[i >> 4]).charCodeAt (0) & (1 << (i & 15))) != 0;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "set", \r
-function (i, b) {\r
-if (b) {\r
-this.carray[i >> 4] = String.fromCharCode ((this.carray[i >> 4]).charCodeAt (0) | ((String.fromCharCode (1)).charCodeAt (0) << (i & 15)));\r
-} else {\r
-this.carray[i >> 4] = String.fromCharCode ((this.carray[i >> 4]).charCodeAt (0) & (String.fromCharCode (~(1 << (i & 15)))).charCodeAt (0));\r
-}}, "~N,~B");\r
-c$.upper_f = Clazz.defineMethod (c$, "upper_f", \r
-function () {\r
-var data =  Clazz.newCharArray (4159, '\0');\r
-com.stevesoft.pat.Bits.upper =  new com.stevesoft.pat.Bits (data);\r
-data[4] = String.fromCharCode (0xfffe);\r
-data[5] = String.fromCharCode (0x07ff);\r
-data[12] = String.fromCharCode (0xffff);\r
-data[13] = String.fromCharCode (0x7f7f);\r
-data[16] = String.fromCharCode (0x5555);\r
-data[17] = String.fromCharCode (0x5555);\r
-data[18] = String.fromCharCode (0x5555);\r
-data[19] = String.fromCharCode (0xaa55);\r
-data[20] = String.fromCharCode (0x54aa);\r
-data[21] = String.fromCharCode (0x5555);\r
-data[22] = String.fromCharCode (0x5555);\r
-data[23] = String.fromCharCode (0x2b55);\r
-data[24] = String.fromCharCode (0xced6);\r
-data[25] = String.fromCharCode (0xb1db);\r
-data[26] = String.fromCharCode (0xd2d5);\r
-data[27] = String.fromCharCode (0x11ae);\r
-data[28] = String.fromCharCode (0xa490);\r
-data[29] = String.fromCharCode (0x4aaa);\r
-data[30] = String.fromCharCode (0x5555);\r
-data[31] = String.fromCharCode (0x5412);\r
-data[32] = String.fromCharCode (0x5555);\r
-data[33] = 'U';\r
-data[56] = String.fromCharCode (0xd740);\r
-data[57] = String.fromCharCode (0xfffe);\r
-data[58] = String.fromCharCode (0x0ffb);\r
-data[61] = String.fromCharCode (0x541c);\r
-data[62] = String.fromCharCode (0x5555);\r
-data[64] = String.fromCharCode (0xdffe);\r
-data[65] = String.fromCharCode (0xffff);\r
-data[66] = String.fromCharCode (0xffff);\r
-data[70] = String.fromCharCode (0x5555);\r
-data[71] = String.fromCharCode (0x5555);\r
-data[72] = String.fromCharCode (0x0001);\r
-data[73] = String.fromCharCode (0x5555);\r
-data[74] = String.fromCharCode (0x5555);\r
-data[75] = String.fromCharCode (0x5555);\r
-data[76] = String.fromCharCode (0x088a);\r
-data[77] = String.fromCharCode (0x5555);\r
-data[78] = String.fromCharCode (0x4555);\r
-data[79] = String.fromCharCode (0x0115);\r
-data[83] = String.fromCharCode (0xfffe);\r
-data[84] = String.fromCharCode (0xffff);\r
-data[85] = String.fromCharCode (0x007f);\r
-data[266] = String.fromCharCode (0xffff);\r
-data[267] = String.fromCharCode (0xffff);\r
-data[268] = String.fromCharCode (0x003f);\r
-data[480] = String.fromCharCode (0x5555);\r
-data[481] = String.fromCharCode (0x5555);\r
-data[482] = String.fromCharCode (0x5555);\r
-data[483] = String.fromCharCode (0x5555);\r
-data[484] = String.fromCharCode (0x5555);\r
-data[485] = String.fromCharCode (0x5555);\r
-data[486] = String.fromCharCode (0x5555);\r
-data[487] = String.fromCharCode (0x5555);\r
-data[488] = String.fromCharCode (0x5555);\r
-data[489] = String.fromCharCode (0x0015);\r
-data[490] = String.fromCharCode (0x5555);\r
-data[491] = String.fromCharCode (0x5555);\r
-data[492] = String.fromCharCode (0x5555);\r
-data[493] = String.fromCharCode (0x5555);\r
-data[494] = String.fromCharCode (0x5555);\r
-data[495] = String.fromCharCode (0x0155);\r
-data[496] = String.fromCharCode (0xff00);\r
-data[497] = String.fromCharCode (0x3f00);\r
-data[498] = String.fromCharCode (0xff00);\r
-data[499] = String.fromCharCode (0xff00);\r
-data[500] = String.fromCharCode (0x3f00);\r
-data[501] = String.fromCharCode (0xaa00);\r
-data[502] = String.fromCharCode (0xff00);\r
-data[504] = String.fromCharCode (0xff00);\r
-data[505] = String.fromCharCode (0xff00);\r
-data[506] = String.fromCharCode (0xff00);\r
-data[507] = String.fromCharCode (0x5f00);\r
-data[508] = String.fromCharCode (0x1f00);\r
-data[509] = String.fromCharCode (0x0f00);\r
-data[510] = String.fromCharCode (0x1f00);\r
-data[511] = String.fromCharCode (0x1f00);\r
-data[528] = String.fromCharCode (0x3884);\r
-data[529] = String.fromCharCode (0x3f27);\r
-data[530] = String.fromCharCode (0x3d50);\r
-data[531] = String.fromCharCode (0x000b);\r
-data[4082] = String.fromCharCode (0xfffe);\r
-data[4083] = String.fromCharCode (0x07ff);\r
-data[4100] = String.fromCharCode (0xfffe);\r
-data[4101] = String.fromCharCode (0x07ff);\r
-data[4108] = String.fromCharCode (0xffff);\r
-data[4109] = String.fromCharCode (0x7f7f);\r
-data[4112] = String.fromCharCode (0x5555);\r
-data[4113] = String.fromCharCode (0x5555);\r
-data[4114] = String.fromCharCode (0x5555);\r
-data[4115] = String.fromCharCode (0xaa55);\r
-data[4116] = String.fromCharCode (0x54aa);\r
-data[4117] = String.fromCharCode (0x5555);\r
-data[4118] = String.fromCharCode (0x5555);\r
-data[4119] = String.fromCharCode (0x2b55);\r
-data[4120] = String.fromCharCode (0xced6);\r
-data[4121] = String.fromCharCode (0xb1db);\r
-data[4122] = String.fromCharCode (0xd2d5);\r
-data[4123] = String.fromCharCode (0x11ae);\r
-data[4124] = String.fromCharCode (0xa490);\r
-data[4125] = String.fromCharCode (0x4aaa);\r
-data[4126] = String.fromCharCode (0x5555);\r
-data[4127] = String.fromCharCode (0x5412);\r
-data[4128] = String.fromCharCode (0x5555);\r
-data[4129] = 'U';\r
-data[4152] = String.fromCharCode (0xd740);\r
-data[4153] = String.fromCharCode (0xfffe);\r
-data[4154] = String.fromCharCode (0x0ffb);\r
-data[4157] = String.fromCharCode (0x541c);\r
-data[4158] = 'U';\r
-});\r
-c$.lower_f = Clazz.defineMethod (c$, "lower_f", \r
-function () {\r
-var data =  Clazz.newCharArray (4159, '\0');\r
-com.stevesoft.pat.Bits.lower =  new com.stevesoft.pat.Bits (data);\r
-data[6] = String.fromCharCode (0xfffe);\r
-data[7] = String.fromCharCode (0x07ff);\r
-data[10] = String.fromCharCode (0x0400);\r
-data[11] = String.fromCharCode (0x0420);\r
-data[13] = String.fromCharCode (0x8000);\r
-data[14] = String.fromCharCode (0xffff);\r
-data[15] = String.fromCharCode (0xff7f);\r
-data[16] = String.fromCharCode (0xaaaa);\r
-data[17] = String.fromCharCode (0xaaaa);\r
-data[18] = String.fromCharCode (0xaaaa);\r
-data[19] = String.fromCharCode (0x55aa);\r
-data[20] = String.fromCharCode (0xab55);\r
-data[21] = String.fromCharCode (0xaaaa);\r
-data[22] = String.fromCharCode (0xaaaa);\r
-data[23] = String.fromCharCode (0xd4aa);\r
-data[24] = String.fromCharCode (0x3129);\r
-data[25] = String.fromCharCode (0x4e24);\r
-data[26] = String.fromCharCode (0x292a);\r
-data[27] = String.fromCharCode (0x2651);\r
-data[28] = String.fromCharCode (0x5240);\r
-data[29] = String.fromCharCode (0xb555);\r
-data[30] = String.fromCharCode (0xaaaa);\r
-data[31] = String.fromCharCode (0xa829);\r
-data[32] = String.fromCharCode (0xaaaa);\r
-data[33] = String.fromCharCode (0x00aa);\r
-data[37] = String.fromCharCode (0xffff);\r
-data[38] = String.fromCharCode (0xffff);\r
-data[39] = String.fromCharCode (0xffff);\r
-data[40] = String.fromCharCode (0xffff);\r
-data[41] = String.fromCharCode (0xffff);\r
-data[42] = String.fromCharCode (0x01ff);\r
-data[57] = String.fromCharCode (0x0001);\r
-data[58] = String.fromCharCode (0xf000);\r
-data[59] = String.fromCharCode (0xffff);\r
-data[60] = String.fromCharCode (0x7fff);\r
-data[61] = 'c';\r
-data[62] = String.fromCharCode (0xaaa8);\r
-data[63] = String.fromCharCode (0x0007);\r
-data[67] = String.fromCharCode (0xffff);\r
-data[68] = String.fromCharCode (0xffff);\r
-data[69] = String.fromCharCode (0xdffe);\r
-data[70] = String.fromCharCode (0xaaaa);\r
-data[71] = String.fromCharCode (0xaaaa);\r
-data[72] = String.fromCharCode (0x0002);\r
-data[73] = String.fromCharCode (0xaaaa);\r
-data[74] = String.fromCharCode (0xaaaa);\r
-data[75] = String.fromCharCode (0xaaaa);\r
-data[76] = String.fromCharCode (0x1114);\r
-data[77] = String.fromCharCode (0xaaaa);\r
-data[78] = String.fromCharCode (0x8aaa);\r
-data[79] = String.fromCharCode (0x022a);\r
-data[86] = String.fromCharCode (0xfffe);\r
-data[87] = String.fromCharCode (0xffff);\r
-data[88] = String.fromCharCode (0x00ff);\r
-data[269] = String.fromCharCode (0xffff);\r
-data[270] = String.fromCharCode (0xffff);\r
-data[271] = String.fromCharCode (0x007f);\r
-data[480] = String.fromCharCode (0xaaaa);\r
-data[481] = String.fromCharCode (0xaaaa);\r
-data[482] = String.fromCharCode (0xaaaa);\r
-data[483] = String.fromCharCode (0xaaaa);\r
-data[484] = String.fromCharCode (0xaaaa);\r
-data[485] = String.fromCharCode (0xaaaa);\r
-data[486] = String.fromCharCode (0xaaaa);\r
-data[487] = String.fromCharCode (0xaaaa);\r
-data[488] = String.fromCharCode (0xaaaa);\r
-data[489] = String.fromCharCode (0x0fea);\r
-data[490] = String.fromCharCode (0xaaaa);\r
-data[491] = String.fromCharCode (0xaaaa);\r
-data[492] = String.fromCharCode (0xaaaa);\r
-data[493] = String.fromCharCode (0xaaaa);\r
-data[494] = String.fromCharCode (0xaaaa);\r
-data[495] = String.fromCharCode (0x02aa);\r
-data[496] = String.fromCharCode (0x00ff);\r
-data[497] = String.fromCharCode (0x003f);\r
-data[498] = String.fromCharCode (0x00ff);\r
-data[499] = String.fromCharCode (0x00ff);\r
-data[500] = String.fromCharCode (0x003f);\r
-data[501] = String.fromCharCode (0x00ff);\r
-data[502] = String.fromCharCode (0x00ff);\r
-data[503] = String.fromCharCode (0x3fff);\r
-data[504] = String.fromCharCode (0x00ff);\r
-data[505] = String.fromCharCode (0x00ff);\r
-data[506] = String.fromCharCode (0x00ff);\r
-data[507] = String.fromCharCode (0x00df);\r
-data[508] = String.fromCharCode (0x00dc);\r
-data[509] = String.fromCharCode (0x00cf);\r
-data[510] = String.fromCharCode (0x00ff);\r
-data[511] = String.fromCharCode (0x00dc);\r
-data[519] = String.fromCharCode (0x8000);\r
-data[528] = String.fromCharCode (0xc400);\r
-data[529] = String.fromCharCode (0x0008);\r
-data[530] = String.fromCharCode (0xc000);\r
-data[531] = String.fromCharCode (0x0010);\r
-data[4016] = String.fromCharCode (0x007f);\r
-data[4017] = String.fromCharCode (0x00f8);\r
-data[4084] = String.fromCharCode (0xfffe);\r
-data[4085] = String.fromCharCode (0x07ff);\r
-data[4102] = String.fromCharCode (0xfffe);\r
-data[4103] = String.fromCharCode (0x07ff);\r
-data[4106] = String.fromCharCode (0x0400);\r
-data[4107] = String.fromCharCode (0x0420);\r
-data[4109] = String.fromCharCode (0x8000);\r
-data[4110] = String.fromCharCode (0xffff);\r
-data[4111] = String.fromCharCode (0xff7f);\r
-data[4112] = String.fromCharCode (0xaaaa);\r
-data[4113] = String.fromCharCode (0xaaaa);\r
-data[4114] = String.fromCharCode (0xaaaa);\r
-data[4115] = String.fromCharCode (0x55aa);\r
-data[4116] = String.fromCharCode (0xab55);\r
-data[4117] = String.fromCharCode (0xaaaa);\r
-data[4118] = String.fromCharCode (0xaaaa);\r
-data[4119] = String.fromCharCode (0xd4aa);\r
-data[4120] = String.fromCharCode (0x3129);\r
-data[4121] = String.fromCharCode (0x4e24);\r
-data[4122] = String.fromCharCode (0x292a);\r
-data[4123] = String.fromCharCode (0x2651);\r
-data[4124] = String.fromCharCode (0x5240);\r
-data[4125] = String.fromCharCode (0xb555);\r
-data[4126] = String.fromCharCode (0xaaaa);\r
-data[4127] = String.fromCharCode (0xa829);\r
-data[4128] = String.fromCharCode (0xaaaa);\r
-data[4129] = String.fromCharCode (0x00aa);\r
-data[4133] = String.fromCharCode (0xffff);\r
-data[4134] = String.fromCharCode (0xffff);\r
-data[4135] = String.fromCharCode (0xffff);\r
-data[4136] = String.fromCharCode (0xffff);\r
-data[4137] = String.fromCharCode (0xffff);\r
-data[4138] = String.fromCharCode (0x01ff);\r
-data[4153] = String.fromCharCode (0x0001);\r
-data[4154] = String.fromCharCode (0xf000);\r
-data[4155] = String.fromCharCode (0xffff);\r
-data[4156] = String.fromCharCode (0x7fff);\r
-data[4157] = 'c';\r
-data[4158] = String.fromCharCode (0x00a8);\r
-});\r
-c$.title_f = Clazz.defineMethod (c$, "title_f", \r
-function () {\r
-var data =  Clazz.newCharArray (4159, '\0');\r
-com.stevesoft.pat.Bits.title =  new com.stevesoft.pat.Bits (data);\r
-data[6] = String.fromCharCode (0xfffe);\r
-data[7] = String.fromCharCode (0x07ff);\r
-data[10] = String.fromCharCode (0x0400);\r
-data[11] = String.fromCharCode (0x0420);\r
-data[13] = String.fromCharCode (0x8000);\r
-data[14] = String.fromCharCode (0xffff);\r
-data[15] = String.fromCharCode (0xff7f);\r
-data[16] = String.fromCharCode (0xaaaa);\r
-data[17] = String.fromCharCode (0xaaaa);\r
-data[18] = String.fromCharCode (0xaaaa);\r
-data[19] = String.fromCharCode (0x55aa);\r
-data[20] = String.fromCharCode (0xab55);\r
-data[21] = String.fromCharCode (0xaaaa);\r
-data[22] = String.fromCharCode (0xaaaa);\r
-data[23] = String.fromCharCode (0xd4aa);\r
-data[24] = String.fromCharCode (0x3129);\r
-data[25] = String.fromCharCode (0x4e24);\r
-data[26] = String.fromCharCode (0x292a);\r
-data[27] = String.fromCharCode (0x2651);\r
-data[28] = String.fromCharCode (0x5240);\r
-data[29] = String.fromCharCode (0xb555);\r
-data[30] = String.fromCharCode (0xaaaa);\r
-data[31] = String.fromCharCode (0xa829);\r
-data[32] = String.fromCharCode (0xaaaa);\r
-data[33] = String.fromCharCode (0x00aa);\r
-data[37] = String.fromCharCode (0xffff);\r
-data[38] = String.fromCharCode (0xffff);\r
-data[39] = String.fromCharCode (0xffff);\r
-data[40] = String.fromCharCode (0xffff);\r
-data[41] = String.fromCharCode (0xffff);\r
-data[42] = String.fromCharCode (0x01ff);\r
-data[57] = String.fromCharCode (0x0001);\r
-data[58] = String.fromCharCode (0xf000);\r
-data[59] = String.fromCharCode (0xffff);\r
-data[60] = String.fromCharCode (0x7fff);\r
-data[61] = 'c';\r
-data[62] = String.fromCharCode (0xaaa8);\r
-data[63] = String.fromCharCode (0x0007);\r
-data[67] = String.fromCharCode (0xffff);\r
-data[68] = String.fromCharCode (0xffff);\r
-data[69] = String.fromCharCode (0xdffe);\r
-data[70] = String.fromCharCode (0xaaaa);\r
-data[71] = String.fromCharCode (0xaaaa);\r
-data[72] = String.fromCharCode (0x0002);\r
-data[73] = String.fromCharCode (0xaaaa);\r
-data[74] = String.fromCharCode (0xaaaa);\r
-data[75] = String.fromCharCode (0xaaaa);\r
-data[76] = String.fromCharCode (0x1114);\r
-data[77] = String.fromCharCode (0xaaaa);\r
-data[78] = String.fromCharCode (0x8aaa);\r
-data[79] = String.fromCharCode (0x022a);\r
-data[86] = String.fromCharCode (0xfffe);\r
-data[87] = String.fromCharCode (0xffff);\r
-data[88] = String.fromCharCode (0x00ff);\r
-data[269] = String.fromCharCode (0xffff);\r
-data[270] = String.fromCharCode (0xffff);\r
-data[271] = String.fromCharCode (0x007f);\r
-data[480] = String.fromCharCode (0xaaaa);\r
-data[481] = String.fromCharCode (0xaaaa);\r
-data[482] = String.fromCharCode (0xaaaa);\r
-data[483] = String.fromCharCode (0xaaaa);\r
-data[484] = String.fromCharCode (0xaaaa);\r
-data[485] = String.fromCharCode (0xaaaa);\r
-data[486] = String.fromCharCode (0xaaaa);\r
-data[487] = String.fromCharCode (0xaaaa);\r
-data[488] = String.fromCharCode (0xaaaa);\r
-data[489] = String.fromCharCode (0x0fea);\r
-data[490] = String.fromCharCode (0xaaaa);\r
-data[491] = String.fromCharCode (0xaaaa);\r
-data[492] = String.fromCharCode (0xaaaa);\r
-data[493] = String.fromCharCode (0xaaaa);\r
-data[494] = String.fromCharCode (0xaaaa);\r
-data[495] = String.fromCharCode (0x02aa);\r
-data[496] = String.fromCharCode (0x00ff);\r
-data[497] = String.fromCharCode (0x003f);\r
-data[498] = String.fromCharCode (0x00ff);\r
-data[499] = String.fromCharCode (0x00ff);\r
-data[500] = String.fromCharCode (0x003f);\r
-data[501] = String.fromCharCode (0x00ff);\r
-data[502] = String.fromCharCode (0x00ff);\r
-data[503] = String.fromCharCode (0x3fff);\r
-data[504] = String.fromCharCode (0x00ff);\r
-data[505] = String.fromCharCode (0x00ff);\r
-data[506] = String.fromCharCode (0x00ff);\r
-data[507] = String.fromCharCode (0x00df);\r
-data[508] = String.fromCharCode (0x00dc);\r
-data[509] = String.fromCharCode (0x00cf);\r
-data[510] = String.fromCharCode (0x00ff);\r
-data[511] = String.fromCharCode (0x00dc);\r
-data[519] = String.fromCharCode (0x8000);\r
-data[528] = String.fromCharCode (0xc400);\r
-data[529] = String.fromCharCode (0x0008);\r
-data[530] = String.fromCharCode (0xc000);\r
-data[531] = String.fromCharCode (0x0010);\r
-data[4016] = String.fromCharCode (0x007f);\r
-data[4017] = String.fromCharCode (0x00f8);\r
-data[4084] = String.fromCharCode (0xfffe);\r
-data[4085] = String.fromCharCode (0x07ff);\r
-data[4102] = String.fromCharCode (0xfffe);\r
-data[4103] = String.fromCharCode (0x07ff);\r
-data[4106] = String.fromCharCode (0x0400);\r
-data[4107] = String.fromCharCode (0x0420);\r
-data[4109] = String.fromCharCode (0x8000);\r
-data[4110] = String.fromCharCode (0xffff);\r
-data[4111] = String.fromCharCode (0xff7f);\r
-data[4112] = String.fromCharCode (0xaaaa);\r
-data[4113] = String.fromCharCode (0xaaaa);\r
-data[4114] = String.fromCharCode (0xaaaa);\r
-data[4115] = String.fromCharCode (0x55aa);\r
-data[4116] = String.fromCharCode (0xab55);\r
-data[4117] = String.fromCharCode (0xaaaa);\r
-data[4118] = String.fromCharCode (0xaaaa);\r
-data[4119] = String.fromCharCode (0xd4aa);\r
-data[4120] = String.fromCharCode (0x3129);\r
-data[4121] = String.fromCharCode (0x4e24);\r
-data[4122] = String.fromCharCode (0x292a);\r
-data[4123] = String.fromCharCode (0x2651);\r
-data[4124] = String.fromCharCode (0x5240);\r
-data[4125] = String.fromCharCode (0xb555);\r
-data[4126] = String.fromCharCode (0xaaaa);\r
-data[4127] = String.fromCharCode (0xa829);\r
-data[4128] = String.fromCharCode (0xaaaa);\r
-data[4129] = String.fromCharCode (0x00aa);\r
-data[4133] = String.fromCharCode (0xffff);\r
-data[4134] = String.fromCharCode (0xffff);\r
-data[4135] = String.fromCharCode (0xffff);\r
-data[4136] = String.fromCharCode (0xffff);\r
-data[4137] = String.fromCharCode (0xffff);\r
-data[4138] = String.fromCharCode (0x01ff);\r
-data[4153] = String.fromCharCode (0x0001);\r
-data[4154] = String.fromCharCode (0xf000);\r
-data[4155] = String.fromCharCode (0xffff);\r
-data[4156] = String.fromCharCode (0x7fff);\r
-data[4157] = 'c';\r
-data[4158] = String.fromCharCode (0x00a8);\r
-});\r
-c$.currency_f = Clazz.defineMethod (c$, "currency_f", \r
-function () {\r
-var data =  Clazz.newCharArray (4159, '\0');\r
-com.stevesoft.pat.Bits.currency =  new com.stevesoft.pat.Bits (data);\r
-data[2] = String.fromCharCode (0x0010);\r
-data[10] = String.fromCharCode (0x003c);\r
-data[159] = String.fromCharCode (0x000c);\r
-data[227] = String.fromCharCode (0x8000);\r
-data[522] = String.fromCharCode (0x1fff);\r
-data[4070] = String.fromCharCode (0x0200);\r
-data[4080] = String.fromCharCode (0x0010);\r
-data[4094] = 'c';\r
-data[4098] = String.fromCharCode (0x0010);\r
-data[4106] = String.fromCharCode (0x003c);\r
-});\r
-c$.decimal_digit_f = Clazz.defineMethod (c$, "decimal_digit_f", \r
-function () {\r
-var data =  Clazz.newCharArray (4159, '\0');\r
-com.stevesoft.pat.Bits.decimal_digit =  new com.stevesoft.pat.Bits (data);\r
-data[3] = String.fromCharCode (0x03ff);\r
-data[102] = String.fromCharCode (0x03ff);\r
-data[111] = String.fromCharCode (0x03ff);\r
-data[150] = String.fromCharCode (0xffc0);\r
-data[158] = String.fromCharCode (0xffc0);\r
-data[166] = String.fromCharCode (0xffc0);\r
-data[174] = String.fromCharCode (0xffc0);\r
-data[182] = String.fromCharCode (0xffc0);\r
-data[190] = String.fromCharCode (0xff80);\r
-data[198] = String.fromCharCode (0xffc0);\r
-data[206] = String.fromCharCode (0xffc0);\r
-data[214] = String.fromCharCode (0xffc0);\r
-data[229] = String.fromCharCode (0x03ff);\r
-data[237] = String.fromCharCode (0x03ff);\r
-data[242] = String.fromCharCode (0x03ff);\r
-data[4081] = String.fromCharCode (0x03ff);\r
-data[4099] = String.fromCharCode (0x03ff);\r
-});\r
-c$.math_f = Clazz.defineMethod (c$, "math_f", \r
-function () {\r
-var data =  Clazz.newCharArray (4159, '\0');\r
-com.stevesoft.pat.Bits.math =  new com.stevesoft.pat.Bits (data);\r
-data[2] = String.fromCharCode (0x0800);\r
-data[3] = String.fromCharCode (0x7000);\r
-data[7] = String.fromCharCode (0x5000);\r
-data[10] = String.fromCharCode (0x1000);\r
-data[11] = String.fromCharCode (0x0002);\r
-data[13] = String.fromCharCode (0x0080);\r
-data[15] = String.fromCharCode (0x0080);\r
-data[516] = String.fromCharCode (0x0010);\r
-data[519] = String.fromCharCode (0x1c00);\r
-data[520] = String.fromCharCode (0x1c00);\r
-data[537] = String.fromCharCode (0x001f);\r
-data[541] = String.fromCharCode (0x0014);\r
-data[544] = String.fromCharCode (0xffff);\r
-data[545] = String.fromCharCode (0xffff);\r
-data[546] = String.fromCharCode (0xffff);\r
-data[547] = String.fromCharCode (0xffff);\r
-data[548] = String.fromCharCode (0xffff);\r
-data[549] = String.fromCharCode (0xffff);\r
-data[550] = String.fromCharCode (0xffff);\r
-data[551] = String.fromCharCode (0xffff);\r
-data[552] = String.fromCharCode (0xffff);\r
-data[553] = String.fromCharCode (0xffff);\r
-data[554] = String.fromCharCode (0xffff);\r
-data[555] = String.fromCharCode (0xffff);\r
-data[556] = String.fromCharCode (0xffff);\r
-data[557] = String.fromCharCode (0xffff);\r
-data[558] = String.fromCharCode (0xffff);\r
-data[559] = String.fromCharCode (0x0003);\r
-data[560] = String.fromCharCode (0x0f00);\r
-data[562] = String.fromCharCode (0x0003);\r
-data[4018] = String.fromCharCode (0x0200);\r
-data[4070] = 't';\r
-data[4080] = String.fromCharCode (0x0800);\r
-data[4081] = String.fromCharCode (0x7000);\r
-data[4085] = String.fromCharCode (0x5000);\r
-data[4094] = String.fromCharCode (0x1f04);\r
-data[4098] = String.fromCharCode (0x0800);\r
-data[4099] = String.fromCharCode (0x7000);\r
-data[4103] = String.fromCharCode (0x5000);\r
-data[4106] = String.fromCharCode (0x1000);\r
-data[4107] = String.fromCharCode (0x0002);\r
-data[4109] = String.fromCharCode (0x0080);\r
-data[4111] = String.fromCharCode (0x0080);\r
-});\r
-c$.letter_f = Clazz.defineMethod (c$, "letter_f", \r
-function () {\r
-var data =  Clazz.newCharArray (4159, '\0');\r
-com.stevesoft.pat.Bits.letter =  new com.stevesoft.pat.Bits (data);\r
-data[4] = String.fromCharCode (0xfffe);\r
-data[5] = String.fromCharCode (0x07ff);\r
-data[6] = String.fromCharCode (0xfffe);\r
-data[7] = String.fromCharCode (0x07ff);\r
-data[10] = String.fromCharCode (0x0400);\r
-data[11] = String.fromCharCode (0x0420);\r
-data[12] = String.fromCharCode (0xffff);\r
-data[13] = String.fromCharCode (0xff7f);\r
-data[14] = String.fromCharCode (0xffff);\r
-data[15] = String.fromCharCode (0xff7f);\r
-data[16] = String.fromCharCode (0xffff);\r
-data[17] = String.fromCharCode (0xffff);\r
-data[18] = String.fromCharCode (0xffff);\r
-data[19] = String.fromCharCode (0xffff);\r
-data[20] = String.fromCharCode (0xffff);\r
-data[21] = String.fromCharCode (0xffff);\r
-data[22] = String.fromCharCode (0xffff);\r
-data[23] = String.fromCharCode (0xffff);\r
-data[24] = String.fromCharCode (0xffff);\r
-data[25] = String.fromCharCode (0xffff);\r
-data[26] = String.fromCharCode (0xffff);\r
-data[27] = String.fromCharCode (0xffff);\r
-data[28] = String.fromCharCode (0xffff);\r
-data[29] = String.fromCharCode (0xffff);\r
-data[30] = String.fromCharCode (0xffff);\r
-data[31] = String.fromCharCode (0xfc3f);\r
-data[32] = String.fromCharCode (0xffff);\r
-data[33] = String.fromCharCode (0x00ff);\r
-data[37] = String.fromCharCode (0xffff);\r
-data[38] = String.fromCharCode (0xffff);\r
-data[39] = String.fromCharCode (0xffff);\r
-data[40] = String.fromCharCode (0xffff);\r
-data[41] = String.fromCharCode (0xffff);\r
-data[42] = String.fromCharCode (0x01ff);\r
-data[43] = String.fromCharCode (0xf9ff);\r
-data[44] = String.fromCharCode (0x0003);\r
-data[45] = String.fromCharCode (0x0003);\r
-data[46] = String.fromCharCode (0x001f);\r
-data[55] = String.fromCharCode (0x0400);\r
-data[56] = String.fromCharCode (0xd740);\r
-data[57] = String.fromCharCode (0xffff);\r
-data[58] = String.fromCharCode (0xfffb);\r
-data[59] = String.fromCharCode (0xffff);\r
-data[60] = String.fromCharCode (0x7fff);\r
-data[61] = String.fromCharCode (0x547f);\r
-data[62] = String.fromCharCode (0xfffd);\r
-data[63] = String.fromCharCode (0x000f);\r
-data[64] = String.fromCharCode (0xdffe);\r
-data[65] = String.fromCharCode (0xffff);\r
-data[66] = String.fromCharCode (0xffff);\r
-data[67] = String.fromCharCode (0xffff);\r
-data[68] = String.fromCharCode (0xffff);\r
-data[69] = String.fromCharCode (0xdffe);\r
-data[70] = String.fromCharCode (0xffff);\r
-data[71] = String.fromCharCode (0xffff);\r
-data[72] = String.fromCharCode (0x0003);\r
-data[73] = String.fromCharCode (0xffff);\r
-data[74] = String.fromCharCode (0xffff);\r
-data[75] = String.fromCharCode (0xffff);\r
-data[76] = String.fromCharCode (0x199f);\r
-data[77] = String.fromCharCode (0xffff);\r
-data[78] = String.fromCharCode (0xcfff);\r
-data[79] = String.fromCharCode (0x033f);\r
-data[83] = String.fromCharCode (0xfffe);\r
-data[84] = String.fromCharCode (0xffff);\r
-data[85] = String.fromCharCode (0x027f);\r
-data[86] = String.fromCharCode (0xfffe);\r
-data[87] = String.fromCharCode (0xffff);\r
-data[88] = String.fromCharCode (0x00ff);\r
-data[93] = String.fromCharCode (0xffff);\r
-data[94] = String.fromCharCode (0x07ff);\r
-data[95] = String.fromCharCode (0x0007);\r
-data[98] = String.fromCharCode (0xfffe);\r
-data[99] = String.fromCharCode (0x07ff);\r
-data[100] = String.fromCharCode (0x07ff);\r
-data[103] = String.fromCharCode (0xfffe);\r
-data[104] = String.fromCharCode (0xffff);\r
-data[105] = String.fromCharCode (0xffff);\r
-data[106] = String.fromCharCode (0xffff);\r
-data[107] = String.fromCharCode (0x7cff);\r
-data[108] = String.fromCharCode (0x7fff);\r
-data[109] = String.fromCharCode (0x002f);\r
-data[110] = String.fromCharCode (0x0060);\r
-data[144] = String.fromCharCode (0xffe0);\r
-data[145] = String.fromCharCode (0xffff);\r
-data[146] = String.fromCharCode (0xffff);\r
-data[147] = String.fromCharCode (0x23ff);\r
-data[149] = String.fromCharCode (0xff00);\r
-data[150] = String.fromCharCode (0x0003);\r
-data[152] = String.fromCharCode (0x9fe0);\r
-data[153] = String.fromCharCode (0xfff9);\r
-data[154] = String.fromCharCode (0xfdff);\r
-data[155] = String.fromCharCode (0x03c5);\r
-data[157] = String.fromCharCode (0xb000);\r
-data[158] = String.fromCharCode (0x0003);\r
-data[159] = String.fromCharCode (0x0003);\r
-data[160] = String.fromCharCode (0x87e0);\r
-data[161] = String.fromCharCode (0xfff9);\r
-data[162] = String.fromCharCode (0xfdff);\r
-data[163] = String.fromCharCode (0x036d);\r
-data[165] = String.fromCharCode (0x5e00);\r
-data[167] = String.fromCharCode (0x001c);\r
-data[168] = String.fromCharCode (0xafe0);\r
-data[169] = String.fromCharCode (0xfffb);\r
-data[170] = String.fromCharCode (0xfdff);\r
-data[171] = String.fromCharCode (0x23ed);\r
-data[174] = String.fromCharCode (0x0001);\r
-data[176] = String.fromCharCode (0x9fe0);\r
-data[177] = String.fromCharCode (0xfff9);\r
-data[178] = String.fromCharCode (0xfdff);\r
-data[179] = String.fromCharCode (0x23cd);\r
-data[181] = String.fromCharCode (0xb000);\r
-data[182] = String.fromCharCode (0x0003);\r
-data[184] = String.fromCharCode (0xc7e0);\r
-data[185] = String.fromCharCode (0xd63d);\r
-data[186] = String.fromCharCode (0xc718);\r
-data[187] = String.fromCharCode (0x03bf);\r
-data[192] = String.fromCharCode (0xdfe0);\r
-data[193] = String.fromCharCode (0xfffd);\r
-data[194] = String.fromCharCode (0xfdff);\r
-data[195] = String.fromCharCode (0x03ef);\r
-data[198] = String.fromCharCode (0x0003);\r
-data[200] = String.fromCharCode (0xdfe0);\r
-data[201] = String.fromCharCode (0xfffd);\r
-data[202] = String.fromCharCode (0xfdff);\r
-data[203] = String.fromCharCode (0x03ef);\r
-data[205] = String.fromCharCode (0x4000);\r
-data[206] = String.fromCharCode (0x0003);\r
-data[208] = String.fromCharCode (0xdfe0);\r
-data[209] = String.fromCharCode (0xfffd);\r
-data[210] = String.fromCharCode (0xfdff);\r
-data[211] = String.fromCharCode (0x03ff);\r
-data[214] = String.fromCharCode (0x0003);\r
-data[224] = String.fromCharCode (0xfffe);\r
-data[225] = String.fromCharCode (0xffff);\r
-data[226] = String.fromCharCode (0x7fff);\r
-data[227] = String.fromCharCode (0x000d);\r
-data[228] = String.fromCharCode (0x007f);\r
-data[232] = String.fromCharCode (0x2596);\r
-data[233] = String.fromCharCode (0xfef0);\r
-data[234] = String.fromCharCode (0x6cae);\r
-data[235] = String.fromCharCode (0x200d);\r
-data[236] = String.fromCharCode (0x005f);\r
-data[237] = String.fromCharCode (0x3000);\r
-data[244] = String.fromCharCode (0xfeff);\r
-data[245] = String.fromCharCode (0xffff);\r
-data[246] = String.fromCharCode (0x03ff);\r
-data[266] = String.fromCharCode (0xffff);\r
-data[267] = String.fromCharCode (0xffff);\r
-data[268] = String.fromCharCode (0x003f);\r
-data[269] = String.fromCharCode (0xffff);\r
-data[270] = String.fromCharCode (0xffff);\r
-data[271] = String.fromCharCode (0x007f);\r
-data[272] = String.fromCharCode (0xffff);\r
-data[273] = String.fromCharCode (0xffff);\r
-data[274] = String.fromCharCode (0xffff);\r
-data[275] = String.fromCharCode (0xffff);\r
-data[276] = String.fromCharCode (0xffff);\r
-data[277] = String.fromCharCode (0x83ff);\r
-data[278] = String.fromCharCode (0xffff);\r
-data[279] = String.fromCharCode (0xffff);\r
-data[280] = String.fromCharCode (0xffff);\r
-data[281] = String.fromCharCode (0xffff);\r
-data[282] = String.fromCharCode (0xff07);\r
-data[283] = String.fromCharCode (0xffff);\r
-data[284] = String.fromCharCode (0xffff);\r
-data[285] = String.fromCharCode (0xffff);\r
-data[286] = String.fromCharCode (0xffff);\r
-data[287] = String.fromCharCode (0x03ff);\r
-data[480] = String.fromCharCode (0xffff);\r
-data[481] = String.fromCharCode (0xffff);\r
-data[482] = String.fromCharCode (0xffff);\r
-data[483] = String.fromCharCode (0xffff);\r
-data[484] = String.fromCharCode (0xffff);\r
-data[485] = String.fromCharCode (0xffff);\r
-data[486] = String.fromCharCode (0xffff);\r
-data[487] = String.fromCharCode (0xffff);\r
-data[488] = String.fromCharCode (0xffff);\r
-data[489] = String.fromCharCode (0x0fff);\r
-data[490] = String.fromCharCode (0xffff);\r
-data[491] = String.fromCharCode (0xffff);\r
-data[492] = String.fromCharCode (0xffff);\r
-data[493] = String.fromCharCode (0xffff);\r
-data[494] = String.fromCharCode (0xffff);\r
-data[495] = String.fromCharCode (0x03ff);\r
-data[496] = String.fromCharCode (0xffff);\r
-data[497] = String.fromCharCode (0x3f3f);\r
-data[498] = String.fromCharCode (0xffff);\r
-data[499] = String.fromCharCode (0xffff);\r
-data[500] = String.fromCharCode (0x3f3f);\r
-data[501] = String.fromCharCode (0xaaff);\r
-data[502] = String.fromCharCode (0xffff);\r
-data[503] = String.fromCharCode (0x3fff);\r
-data[504] = String.fromCharCode (0xffff);\r
-data[505] = String.fromCharCode (0xffff);\r
-data[506] = String.fromCharCode (0xffff);\r
-data[507] = String.fromCharCode (0x5fdf);\r
-data[508] = String.fromCharCode (0x1fdc);\r
-data[509] = String.fromCharCode (0x0fcf);\r
-data[510] = String.fromCharCode (0x1fff);\r
-data[511] = String.fromCharCode (0x1fdc);\r
-data[519] = String.fromCharCode (0x8000);\r
-data[528] = String.fromCharCode (0xfc84);\r
-data[529] = String.fromCharCode (0x3f2f);\r
-data[530] = String.fromCharCode (0xfd50);\r
-data[531] = String.fromCharCode (0x01fb);\r
-data[768] = String.fromCharCode (0x0020);\r
-data[771] = String.fromCharCode (0x003e);\r
-data[772] = String.fromCharCode (0xfffe);\r
-data[773] = String.fromCharCode (0xffff);\r
-data[774] = String.fromCharCode (0xffff);\r
-data[775] = String.fromCharCode (0xffff);\r
-data[776] = String.fromCharCode (0xffff);\r
-data[777] = String.fromCharCode (0x781f);\r
-data[778] = String.fromCharCode (0xfffe);\r
-data[779] = String.fromCharCode (0xffff);\r
-data[780] = String.fromCharCode (0xffff);\r
-data[781] = String.fromCharCode (0xffff);\r
-data[782] = String.fromCharCode (0xffff);\r
-data[783] = String.fromCharCode (0x77ff);\r
-data[784] = String.fromCharCode (0xffe0);\r
-data[785] = String.fromCharCode (0xffff);\r
-data[786] = String.fromCharCode (0x1fff);\r
-data[787] = String.fromCharCode (0xfffe);\r
-data[788] = String.fromCharCode (0xffff);\r
-data[789] = String.fromCharCode (0xffff);\r
-data[790] = String.fromCharCode (0xffff);\r
-data[791] = String.fromCharCode (0xffff);\r
-data[792] = String.fromCharCode (0x7fff);\r
-data[1248] = String.fromCharCode (0xffff);\r
-data[1249] = String.fromCharCode (0xffff);\r
-data[1250] = String.fromCharCode (0xffff);\r
-data[1251] = String.fromCharCode (0xffff);\r
-data[1252] = String.fromCharCode (0xffff);\r
-data[1253] = String.fromCharCode (0xffff);\r
-data[1254] = String.fromCharCode (0xffff);\r
-data[1255] = String.fromCharCode (0xffff);\r
-data[1256] = String.fromCharCode (0xffff);\r
-data[1257] = String.fromCharCode (0xffff);\r
-data[1258] = String.fromCharCode (0xffff);\r
-data[1259] = String.fromCharCode (0xffff);\r
-data[1260] = String.fromCharCode (0xffff);\r
-data[1261] = String.fromCharCode (0xffff);\r
-data[1262] = String.fromCharCode (0xffff);\r
-data[1263] = String.fromCharCode (0xffff);\r
-data[1264] = String.fromCharCode (0xffff);\r
-data[1265] = String.fromCharCode (0xffff);\r
-data[1266] = String.fromCharCode (0xffff);\r
-data[1267] = String.fromCharCode (0xffff);\r
-data[1268] = String.fromCharCode (0xffff);\r
-data[1269] = String.fromCharCode (0xffff);\r
-data[1270] = String.fromCharCode (0xffff);\r
-data[1271] = String.fromCharCode (0xffff);\r
-data[1272] = String.fromCharCode (0xffff);\r
-data[1273] = String.fromCharCode (0xffff);\r
-data[1274] = String.fromCharCode (0xffff);\r
-data[1275] = String.fromCharCode (0xffff);\r
-data[1276] = String.fromCharCode (0xffff);\r
-data[1277] = String.fromCharCode (0xffff);\r
-data[1278] = String.fromCharCode (0xffff);\r
-data[1279] = String.fromCharCode (0xffff);\r
-data[1280] = String.fromCharCode (0xffff);\r
-data[1281] = String.fromCharCode (0xffff);\r
-data[1282] = String.fromCharCode (0xffff);\r
-data[1283] = String.fromCharCode (0xffff);\r
-data[1284] = String.fromCharCode (0xffff);\r
-data[1285] = String.fromCharCode (0xffff);\r
-data[1286] = String.fromCharCode (0xffff);\r
-data[1287] = String.fromCharCode (0xffff);\r
-data[1288] = String.fromCharCode (0xffff);\r
-data[1289] = String.fromCharCode (0xffff);\r
-data[1290] = String.fromCharCode (0xffff);\r
-data[1291] = String.fromCharCode (0xffff);\r
-data[1292] = String.fromCharCode (0xffff);\r
-data[1293] = String.fromCharCode (0xffff);\r
-data[1294] = String.fromCharCode (0xffff);\r
-data[1295] = String.fromCharCode (0xffff);\r
-data[1296] = String.fromCharCode (0xffff);\r
-data[1297] = String.fromCharCode (0xffff);\r
-data[1298] = String.fromCharCode (0xffff);\r
-data[1299] = String.fromCharCode (0xffff);\r
-data[1300] = String.fromCharCode (0xffff);\r
-data[1301] = String.fromCharCode (0xffff);\r
-data[1302] = String.fromCharCode (0xffff);\r
-data[1303] = String.fromCharCode (0xffff);\r
-data[1304] = String.fromCharCode (0xffff);\r
-data[1305] = String.fromCharCode (0xffff);\r
-data[1306] = String.fromCharCode (0xffff);\r
-data[1307] = String.fromCharCode (0xffff);\r
-data[1308] = String.fromCharCode (0xffff);\r
-data[1309] = String.fromCharCode (0xffff);\r
-data[1310] = String.fromCharCode (0xffff);\r
-data[1311] = String.fromCharCode (0xffff);\r
-data[1312] = String.fromCharCode (0xffff);\r
-data[1313] = String.fromCharCode (0xffff);\r
-data[1314] = String.fromCharCode (0xffff);\r
-data[1315] = String.fromCharCode (0xffff);\r
-data[1316] = String.fromCharCode (0xffff);\r
-data[1317] = String.fromCharCode (0xffff);\r
-data[1318] = String.fromCharCode (0xffff);\r
-data[1319] = String.fromCharCode (0xffff);\r
-data[1320] = String.fromCharCode (0xffff);\r
-data[1321] = String.fromCharCode (0xffff);\r
-data[1322] = String.fromCharCode (0xffff);\r
-data[1323] = String.fromCharCode (0xffff);\r
-data[1324] = String.fromCharCode (0xffff);\r
-data[1325] = String.fromCharCode (0xffff);\r
-data[1326] = String.fromCharCode (0xffff);\r
-data[1327] = String.fromCharCode (0xffff);\r
-data[1328] = String.fromCharCode (0xffff);\r
-data[1329] = String.fromCharCode (0xffff);\r
-data[1330] = String.fromCharCode (0xffff);\r
-data[1331] = String.fromCharCode (0xffff);\r
-data[1332] = String.fromCharCode (0xffff);\r
-data[1333] = String.fromCharCode (0xffff);\r
-data[1334] = String.fromCharCode (0xffff);\r
-data[1335] = String.fromCharCode (0xffff);\r
-data[1336] = String.fromCharCode (0xffff);\r
-data[1337] = String.fromCharCode (0xffff);\r
-data[1338] = String.fromCharCode (0xffff);\r
-data[1339] = String.fromCharCode (0xffff);\r
-data[1340] = String.fromCharCode (0xffff);\r
-data[1341] = String.fromCharCode (0xffff);\r
-data[1342] = String.fromCharCode (0xffff);\r
-data[1343] = String.fromCharCode (0xffff);\r
-data[1344] = String.fromCharCode (0xffff);\r
-data[1345] = String.fromCharCode (0xffff);\r
-data[1346] = String.fromCharCode (0xffff);\r
-data[1347] = String.fromCharCode (0xffff);\r
-data[1348] = String.fromCharCode (0xffff);\r
-data[1349] = String.fromCharCode (0xffff);\r
-data[1350] = String.fromCharCode (0xffff);\r
-data[1351] = String.fromCharCode (0xffff);\r
-data[1352] = String.fromCharCode (0xffff);\r
-data[1353] = String.fromCharCode (0xffff);\r
-data[1354] = String.fromCharCode (0xffff);\r
-data[1355] = String.fromCharCode (0xffff);\r
-data[1356] = String.fromCharCode (0xffff);\r
-data[1357] = String.fromCharCode (0xffff);\r
-data[1358] = String.fromCharCode (0xffff);\r
-data[1359] = String.fromCharCode (0xffff);\r
-data[1360] = String.fromCharCode (0xffff);\r
-data[1361] = String.fromCharCode (0xffff);\r
-data[1362] = String.fromCharCode (0xffff);\r
-data[1363] = String.fromCharCode (0xffff);\r
-data[1364] = String.fromCharCode (0xffff);\r
-data[1365] = String.fromCharCode (0xffff);\r
-data[1366] = String.fromCharCode (0xffff);\r
-data[1367] = String.fromCharCode (0xffff);\r
-data[1368] = String.fromCharCode (0xffff);\r
-data[1369] = String.fromCharCode (0xffff);\r
-data[1370] = String.fromCharCode (0xffff);\r
-data[1371] = String.fromCharCode (0xffff);\r
-data[1372] = String.fromCharCode (0xffff);\r
-data[1373] = String.fromCharCode (0xffff);\r
-data[1374] = String.fromCharCode (0xffff);\r
-data[1375] = String.fromCharCode (0xffff);\r
-data[1376] = String.fromCharCode (0xffff);\r
-data[1377] = String.fromCharCode (0xffff);\r
-data[1378] = String.fromCharCode (0xffff);\r
-data[1379] = String.fromCharCode (0xffff);\r
-data[1380] = String.fromCharCode (0xffff);\r
-data[1381] = String.fromCharCode (0xffff);\r
-data[1382] = String.fromCharCode (0xffff);\r
-data[1383] = String.fromCharCode (0xffff);\r
-data[1384] = String.fromCharCode (0xffff);\r
-data[1385] = String.fromCharCode (0xffff);\r
-data[1386] = String.fromCharCode (0xffff);\r
-data[1387] = String.fromCharCode (0xffff);\r
-data[1388] = String.fromCharCode (0xffff);\r
-data[1389] = String.fromCharCode (0xffff);\r
-data[1390] = String.fromCharCode (0xffff);\r
-data[1391] = String.fromCharCode (0xffff);\r
-data[1392] = String.fromCharCode (0xffff);\r
-data[1393] = String.fromCharCode (0xffff);\r
-data[1394] = String.fromCharCode (0xffff);\r
-data[1395] = String.fromCharCode (0xffff);\r
-data[1396] = String.fromCharCode (0xffff);\r
-data[1397] = String.fromCharCode (0xffff);\r
-data[1398] = String.fromCharCode (0xffff);\r
-data[1399] = String.fromCharCode (0xffff);\r
-data[1400] = String.fromCharCode (0xffff);\r
-data[1401] = String.fromCharCode (0xffff);\r
-data[1402] = String.fromCharCode (0xffff);\r
-data[1403] = String.fromCharCode (0xffff);\r
-data[1404] = String.fromCharCode (0xffff);\r
-data[1405] = String.fromCharCode (0xffff);\r
-data[1406] = String.fromCharCode (0xffff);\r
-data[1407] = String.fromCharCode (0xffff);\r
-data[1408] = String.fromCharCode (0xffff);\r
-data[1409] = String.fromCharCode (0xffff);\r
-data[1410] = String.fromCharCode (0xffff);\r
-data[1411] = String.fromCharCode (0xffff);\r
-data[1412] = String.fromCharCode (0xffff);\r
-data[1413] = String.fromCharCode (0xffff);\r
-data[1414] = String.fromCharCode (0xffff);\r
-data[1415] = String.fromCharCode (0xffff);\r
-data[1416] = String.fromCharCode (0xffff);\r
-data[1417] = String.fromCharCode (0xffff);\r
-data[1418] = String.fromCharCode (0xffff);\r
-data[1419] = String.fromCharCode (0xffff);\r
-data[1420] = String.fromCharCode (0xffff);\r
-data[1421] = String.fromCharCode (0xffff);\r
-data[1422] = String.fromCharCode (0xffff);\r
-data[1423] = String.fromCharCode (0xffff);\r
-data[1424] = String.fromCharCode (0xffff);\r
-data[1425] = String.fromCharCode (0xffff);\r
-data[1426] = String.fromCharCode (0xffff);\r
-data[1427] = String.fromCharCode (0xffff);\r
-data[1428] = String.fromCharCode (0xffff);\r
-data[1429] = String.fromCharCode (0xffff);\r
-data[1430] = String.fromCharCode (0xffff);\r
-data[1431] = String.fromCharCode (0xffff);\r
-data[1432] = String.fromCharCode (0xffff);\r
-data[1433] = String.fromCharCode (0xffff);\r
-data[1434] = String.fromCharCode (0xffff);\r
-data[1435] = String.fromCharCode (0xffff);\r
-data[1436] = String.fromCharCode (0xffff);\r
-data[1437] = String.fromCharCode (0xffff);\r
-data[1438] = String.fromCharCode (0xffff);\r
-data[1439] = String.fromCharCode (0xffff);\r
-data[1440] = String.fromCharCode (0xffff);\r
-data[1441] = String.fromCharCode (0xffff);\r
-data[1442] = String.fromCharCode (0xffff);\r
-data[1443] = String.fromCharCode (0xffff);\r
-data[1444] = String.fromCharCode (0xffff);\r
-data[1445] = String.fromCharCode (0xffff);\r
-data[1446] = String.fromCharCode (0xffff);\r
-data[1447] = String.fromCharCode (0xffff);\r
-data[1448] = String.fromCharCode (0xffff);\r
-data[1449] = String.fromCharCode (0xffff);\r
-data[1450] = String.fromCharCode (0xffff);\r
-data[1451] = String.fromCharCode (0xffff);\r
-data[1452] = String.fromCharCode (0xffff);\r
-data[1453] = String.fromCharCode (0xffff);\r
-data[1454] = String.fromCharCode (0xffff);\r
-data[1455] = String.fromCharCode (0xffff);\r
-data[1456] = String.fromCharCode (0xffff);\r
-data[1457] = String.fromCharCode (0xffff);\r
-data[1458] = String.fromCharCode (0xffff);\r
-data[1459] = String.fromCharCode (0xffff);\r
-data[1460] = String.fromCharCode (0xffff);\r
-data[1461] = String.fromCharCode (0xffff);\r
-data[1462] = String.fromCharCode (0xffff);\r
-data[1463] = String.fromCharCode (0xffff);\r
-data[1464] = String.fromCharCode (0xffff);\r
-data[1465] = String.fromCharCode (0xffff);\r
-data[1466] = String.fromCharCode (0xffff);\r
-data[1467] = String.fromCharCode (0xffff);\r
-data[1468] = String.fromCharCode (0xffff);\r
-data[1469] = String.fromCharCode (0xffff);\r
-data[1470] = String.fromCharCode (0xffff);\r
-data[1471] = String.fromCharCode (0xffff);\r
-data[1472] = String.fromCharCode (0xffff);\r
-data[1473] = String.fromCharCode (0xffff);\r
-data[1474] = String.fromCharCode (0xffff);\r
-data[1475] = String.fromCharCode (0xffff);\r
-data[1476] = String.fromCharCode (0xffff);\r
-data[1477] = String.fromCharCode (0xffff);\r
-data[1478] = String.fromCharCode (0xffff);\r
-data[1479] = String.fromCharCode (0xffff);\r
-data[1480] = String.fromCharCode (0xffff);\r
-data[1481] = String.fromCharCode (0xffff);\r
-data[1482] = String.fromCharCode (0xffff);\r
-data[1483] = String.fromCharCode (0xffff);\r
-data[1484] = String.fromCharCode (0xffff);\r
-data[1485] = String.fromCharCode (0xffff);\r
-data[1486] = String.fromCharCode (0xffff);\r
-data[1487] = String.fromCharCode (0xffff);\r
-data[1488] = String.fromCharCode (0xffff);\r
-data[1489] = String.fromCharCode (0xffff);\r
-data[1490] = String.fromCharCode (0xffff);\r
-data[1491] = String.fromCharCode (0xffff);\r
-data[1492] = String.fromCharCode (0xffff);\r
-data[1493] = String.fromCharCode (0xffff);\r
-data[1494] = String.fromCharCode (0xffff);\r
-data[1495] = String.fromCharCode (0xffff);\r
-data[1496] = String.fromCharCode (0xffff);\r
-data[1497] = String.fromCharCode (0xffff);\r
-data[1498] = String.fromCharCode (0xffff);\r
-data[1499] = String.fromCharCode (0xffff);\r
-data[1500] = String.fromCharCode (0xffff);\r
-data[1501] = String.fromCharCode (0xffff);\r
-data[1502] = String.fromCharCode (0xffff);\r
-data[1503] = String.fromCharCode (0xffff);\r
-data[1504] = String.fromCharCode (0xffff);\r
-data[1505] = String.fromCharCode (0xffff);\r
-data[1506] = String.fromCharCode (0xffff);\r
-data[1507] = String.fromCharCode (0xffff);\r
-data[1508] = String.fromCharCode (0xffff);\r
-data[1509] = String.fromCharCode (0xffff);\r
-data[1510] = String.fromCharCode (0xffff);\r
-data[1511] = String.fromCharCode (0xffff);\r
-data[1512] = String.fromCharCode (0xffff);\r
-data[1513] = String.fromCharCode (0xffff);\r
-data[1514] = String.fromCharCode (0xffff);\r
-data[1515] = String.fromCharCode (0xffff);\r
-data[1516] = String.fromCharCode (0xffff);\r
-data[1517] = String.fromCharCode (0xffff);\r
-data[1518] = String.fromCharCode (0xffff);\r
-data[1519] = String.fromCharCode (0xffff);\r
-data[1520] = String.fromCharCode (0xffff);\r
-data[1521] = String.fromCharCode (0xffff);\r
-data[1522] = String.fromCharCode (0xffff);\r
-data[1523] = String.fromCharCode (0xffff);\r
-data[1524] = String.fromCharCode (0xffff);\r
-data[1525] = String.fromCharCode (0xffff);\r
-data[1526] = String.fromCharCode (0xffff);\r
-data[1527] = String.fromCharCode (0xffff);\r
-data[1528] = String.fromCharCode (0xffff);\r
-data[1529] = String.fromCharCode (0xffff);\r
-data[1530] = String.fromCharCode (0xffff);\r
-data[1531] = String.fromCharCode (0xffff);\r
-data[1532] = String.fromCharCode (0xffff);\r
-data[1533] = String.fromCharCode (0xffff);\r
-data[1534] = String.fromCharCode (0xffff);\r
-data[1535] = String.fromCharCode (0xffff);\r
-data[1536] = String.fromCharCode (0xffff);\r
-data[1537] = String.fromCharCode (0xffff);\r
-data[1538] = String.fromCharCode (0xffff);\r
-data[1539] = String.fromCharCode (0xffff);\r
-data[1540] = String.fromCharCode (0xffff);\r
-data[1541] = String.fromCharCode (0xffff);\r
-data[1542] = String.fromCharCode (0xffff);\r
-data[1543] = String.fromCharCode (0xffff);\r
-data[1544] = String.fromCharCode (0xffff);\r
-data[1545] = String.fromCharCode (0xffff);\r
-data[1546] = String.fromCharCode (0xffff);\r
-data[1547] = String.fromCharCode (0xffff);\r
-data[1548] = String.fromCharCode (0xffff);\r
-data[1549] = String.fromCharCode (0xffff);\r
-data[1550] = String.fromCharCode (0xffff);\r
-data[1551] = String.fromCharCode (0xffff);\r
-data[1552] = String.fromCharCode (0xffff);\r
-data[1553] = String.fromCharCode (0xffff);\r
-data[1554] = String.fromCharCode (0xffff);\r
-data[1555] = String.fromCharCode (0xffff);\r
-data[1556] = String.fromCharCode (0xffff);\r
-data[1557] = String.fromCharCode (0xffff);\r
-data[1558] = String.fromCharCode (0xffff);\r
-data[1559] = String.fromCharCode (0xffff);\r
-data[1560] = String.fromCharCode (0xffff);\r
-data[1561] = String.fromCharCode (0xffff);\r
-data[1562] = String.fromCharCode (0xffff);\r
-data[1563] = String.fromCharCode (0xffff);\r
-data[1564] = String.fromCharCode (0xffff);\r
-data[1565] = String.fromCharCode (0xffff);\r
-data[1566] = String.fromCharCode (0xffff);\r
-data[1567] = String.fromCharCode (0xffff);\r
-data[1568] = String.fromCharCode (0xffff);\r
-data[1569] = String.fromCharCode (0xffff);\r
-data[1570] = String.fromCharCode (0xffff);\r
-data[1571] = String.fromCharCode (0xffff);\r
-data[1572] = String.fromCharCode (0xffff);\r
-data[1573] = String.fromCharCode (0xffff);\r
-data[1574] = String.fromCharCode (0xffff);\r
-data[1575] = String.fromCharCode (0xffff);\r
-data[1576] = String.fromCharCode (0xffff);\r
-data[1577] = String.fromCharCode (0xffff);\r
-data[1578] = String.fromCharCode (0xffff);\r
-data[1579] = String.fromCharCode (0xffff);\r
-data[1580] = String.fromCharCode (0xffff);\r
-data[1581] = String.fromCharCode (0xffff);\r
-data[1582] = String.fromCharCode (0xffff);\r
-data[1583] = String.fromCharCode (0xffff);\r
-data[1584] = String.fromCharCode (0xffff);\r
-data[1585] = String.fromCharCode (0xffff);\r
-data[1586] = String.fromCharCode (0xffff);\r
-data[1587] = String.fromCharCode (0xffff);\r
-data[1588] = String.fromCharCode (0xffff);\r
-data[1589] = String.fromCharCode (0xffff);\r
-data[1590] = String.fromCharCode (0xffff);\r
-data[1591] = String.fromCharCode (0xffff);\r
-data[1592] = String.fromCharCode (0xffff);\r
-data[1593] = String.fromCharCode (0xffff);\r
-data[1594] = String.fromCharCode (0xffff);\r
-data[1595] = String.fromCharCode (0xffff);\r
-data[1596] = String.fromCharCode (0xffff);\r
-data[1597] = String.fromCharCode (0xffff);\r
-data[1598] = String.fromCharCode (0xffff);\r
-data[1599] = String.fromCharCode (0xffff);\r
-data[1600] = String.fromCharCode (0xffff);\r
-data[1601] = String.fromCharCode (0xffff);\r
-data[1602] = String.fromCharCode (0xffff);\r
-data[1603] = String.fromCharCode (0xffff);\r
-data[1604] = String.fromCharCode (0xffff);\r
-data[1605] = String.fromCharCode (0xffff);\r
-data[1606] = String.fromCharCode (0xffff);\r
-data[1607] = String.fromCharCode (0xffff);\r
-data[1608] = String.fromCharCode (0xffff);\r
-data[1609] = String.fromCharCode (0xffff);\r
-data[1610] = String.fromCharCode (0xffff);\r
-data[1611] = String.fromCharCode (0xffff);\r
-data[1612] = String.fromCharCode (0xffff);\r
-data[1613] = String.fromCharCode (0xffff);\r
-data[1614] = String.fromCharCode (0xffff);\r
-data[1615] = String.fromCharCode (0xffff);\r
-data[1616] = String.fromCharCode (0xffff);\r
-data[1617] = String.fromCharCode (0xffff);\r
-data[1618] = String.fromCharCode (0xffff);\r
-data[1619] = String.fromCharCode (0xffff);\r
-data[1620] = String.fromCharCode (0xffff);\r
-data[1621] = String.fromCharCode (0xffff);\r
-data[1622] = String.fromCharCode (0xffff);\r
-data[1623] = String.fromCharCode (0xffff);\r
-data[1624] = String.fromCharCode (0xffff);\r
-data[1625] = String.fromCharCode (0xffff);\r
-data[1626] = String.fromCharCode (0xffff);\r
-data[1627] = String.fromCharCode (0xffff);\r
-data[1628] = String.fromCharCode (0xffff);\r
-data[1629] = String.fromCharCode (0xffff);\r
-data[1630] = String.fromCharCode (0xffff);\r
-data[1631] = String.fromCharCode (0xffff);\r
-data[1632] = String.fromCharCode (0xffff);\r
-data[1633] = String.fromCharCode (0xffff);\r
-data[1634] = String.fromCharCode (0xffff);\r
-data[1635] = String.fromCharCode (0xffff);\r
-data[1636] = String.fromCharCode (0xffff);\r
-data[1637] = String.fromCharCode (0xffff);\r
-data[1638] = String.fromCharCode (0xffff);\r
-data[1639] = String.fromCharCode (0xffff);\r
-data[1640] = String.fromCharCode (0xffff);\r
-data[1641] = String.fromCharCode (0xffff);\r
-data[1642] = String.fromCharCode (0xffff);\r
-data[1643] = String.fromCharCode (0xffff);\r
-data[1644] = String.fromCharCode (0xffff);\r
-data[1645] = String.fromCharCode (0xffff);\r
-data[1646] = String.fromCharCode (0xffff);\r
-data[1647] = String.fromCharCode (0xffff);\r
-data[1648] = String.fromCharCode (0xffff);\r
-data[1649] = String.fromCharCode (0xffff);\r
-data[1650] = String.fromCharCode (0xffff);\r
-data[1651] = String.fromCharCode (0xffff);\r
-data[1652] = String.fromCharCode (0xffff);\r
-data[1653] = String.fromCharCode (0xffff);\r
-data[1654] = String.fromCharCode (0xffff);\r
-data[1655] = String.fromCharCode (0xffff);\r
-data[1656] = String.fromCharCode (0xffff);\r
-data[1657] = String.fromCharCode (0xffff);\r
-data[1658] = String.fromCharCode (0xffff);\r
-data[1659] = String.fromCharCode (0xffff);\r
-data[1660] = String.fromCharCode (0xffff);\r
-data[1661] = String.fromCharCode (0xffff);\r
-data[1662] = String.fromCharCode (0xffff);\r
-data[1663] = String.fromCharCode (0xffff);\r
-data[1664] = String.fromCharCode (0xffff);\r
-data[1665] = String.fromCharCode (0xffff);\r
-data[1666] = String.fromCharCode (0xffff);\r
-data[1667] = String.fromCharCode (0xffff);\r
-data[1668] = String.fromCharCode (0xffff);\r
-data[1669] = String.fromCharCode (0xffff);\r
-data[1670] = String.fromCharCode (0xffff);\r
-data[1671] = String.fromCharCode (0xffff);\r
-data[1672] = String.fromCharCode (0xffff);\r
-data[1673] = String.fromCharCode (0xffff);\r
-data[1674] = String.fromCharCode (0xffff);\r
-data[1675] = String.fromCharCode (0xffff);\r
-data[1676] = String.fromCharCode (0xffff);\r
-data[1677] = String.fromCharCode (0xffff);\r
-data[1678] = String.fromCharCode (0xffff);\r
-data[1679] = String.fromCharCode (0xffff);\r
-data[1680] = String.fromCharCode (0xffff);\r
-data[1681] = String.fromCharCode (0xffff);\r
-data[1682] = String.fromCharCode (0xffff);\r
-data[1683] = String.fromCharCode (0xffff);\r
-data[1684] = String.fromCharCode (0xffff);\r
-data[1685] = String.fromCharCode (0xffff);\r
-data[1686] = String.fromCharCode (0xffff);\r
-data[1687] = String.fromCharCode (0xffff);\r
-data[1688] = String.fromCharCode (0xffff);\r
-data[1689] = String.fromCharCode (0xffff);\r
-data[1690] = String.fromCharCode (0xffff);\r
-data[1691] = String.fromCharCode (0xffff);\r
-data[1692] = String.fromCharCode (0xffff);\r
-data[1693] = String.fromCharCode (0xffff);\r
-data[1694] = String.fromCharCode (0xffff);\r
-data[1695] = String.fromCharCode (0xffff);\r
-data[1696] = String.fromCharCode (0xffff);\r
-data[1697] = String.fromCharCode (0xffff);\r
-data[1698] = String.fromCharCode (0xffff);\r
-data[1699] = String.fromCharCode (0xffff);\r
-data[1700] = String.fromCharCode (0xffff);\r
-data[1701] = String.fromCharCode (0xffff);\r
-data[1702] = String.fromCharCode (0xffff);\r
-data[1703] = String.fromCharCode (0xffff);\r
-data[1704] = String.fromCharCode (0xffff);\r
-data[1705] = String.fromCharCode (0xffff);\r
-data[1706] = String.fromCharCode (0xffff);\r
-data[1707] = String.fromCharCode (0xffff);\r
-data[1708] = String.fromCharCode (0xffff);\r
-data[1709] = String.fromCharCode (0xffff);\r
-data[1710] = String.fromCharCode (0xffff);\r
-data[1711] = String.fromCharCode (0xffff);\r
-data[1712] = String.fromCharCode (0xffff);\r
-data[1713] = String.fromCharCode (0xffff);\r
-data[1714] = String.fromCharCode (0xffff);\r
-data[1715] = String.fromCharCode (0xffff);\r
-data[1716] = String.fromCharCode (0xffff);\r
-data[1717] = String.fromCharCode (0xffff);\r
-data[1718] = String.fromCharCode (0xffff);\r
-data[1719] = String.fromCharCode (0xffff);\r
-data[1720] = String.fromCharCode (0xffff);\r
-data[1721] = String.fromCharCode (0xffff);\r
-data[1722] = String.fromCharCode (0xffff);\r
-data[1723] = String.fromCharCode (0xffff);\r
-data[1724] = String.fromCharCode (0xffff);\r
-data[1725] = String.fromCharCode (0xffff);\r
-data[1726] = String.fromCharCode (0xffff);\r
-data[1727] = String.fromCharCode (0xffff);\r
-data[1728] = String.fromCharCode (0xffff);\r
-data[1729] = String.fromCharCode (0xffff);\r
-data[1730] = String.fromCharCode (0xffff);\r
-data[1731] = String.fromCharCode (0xffff);\r
-data[1732] = String.fromCharCode (0xffff);\r
-data[1733] = String.fromCharCode (0xffff);\r
-data[1734] = String.fromCharCode (0xffff);\r
-data[1735] = String.fromCharCode (0xffff);\r
-data[1736] = String.fromCharCode (0xffff);\r
-data[1737] = String.fromCharCode (0xffff);\r
-data[1738] = String.fromCharCode (0xffff);\r
-data[1739] = String.fromCharCode (0xffff);\r
-data[1740] = String.fromCharCode (0xffff);\r
-data[1741] = String.fromCharCode (0xffff);\r
-data[1742] = String.fromCharCode (0xffff);\r
-data[1743] = String.fromCharCode (0xffff);\r
-data[1744] = String.fromCharCode (0xffff);\r
-data[1745] = String.fromCharCode (0xffff);\r
-data[1746] = String.fromCharCode (0xffff);\r
-data[1747] = String.fromCharCode (0xffff);\r
-data[1748] = String.fromCharCode (0xffff);\r
-data[1749] = String.fromCharCode (0xffff);\r
-data[1750] = String.fromCharCode (0xffff);\r
-data[1751] = String.fromCharCode (0xffff);\r
-data[1752] = String.fromCharCode (0xffff);\r
-data[1753] = String.fromCharCode (0xffff);\r
-data[1754] = String.fromCharCode (0xffff);\r
-data[1755] = String.fromCharCode (0xffff);\r
-data[1756] = String.fromCharCode (0xffff);\r
-data[1757] = String.fromCharCode (0xffff);\r
-data[1758] = String.fromCharCode (0xffff);\r
-data[1759] = String.fromCharCode (0xffff);\r
-data[1760] = String.fromCharCode (0xffff);\r
-data[1761] = String.fromCharCode (0xffff);\r
-data[1762] = String.fromCharCode (0xffff);\r
-data[1763] = String.fromCharCode (0xffff);\r
-data[1764] = String.fromCharCode (0xffff);\r
-data[1765] = String.fromCharCode (0xffff);\r
-data[1766] = String.fromCharCode (0xffff);\r
-data[1767] = String.fromCharCode (0xffff);\r
-data[1768] = String.fromCharCode (0xffff);\r
-data[1769] = String.fromCharCode (0xffff);\r
-data[1770] = String.fromCharCode (0xffff);\r
-data[1771] = String.fromCharCode (0xffff);\r
-data[1772] = String.fromCharCode (0xffff);\r
-data[1773] = String.fromCharCode (0xffff);\r
-data[1774] = String.fromCharCode (0xffff);\r
-data[1775] = String.fromCharCode (0xffff);\r
-data[1776] = String.fromCharCode (0xffff);\r
-data[1777] = String.fromCharCode (0xffff);\r
-data[1778] = String.fromCharCode (0xffff);\r
-data[1779] = String.fromCharCode (0xffff);\r
-data[1780] = String.fromCharCode (0xffff);\r
-data[1781] = String.fromCharCode (0xffff);\r
-data[1782] = String.fromCharCode (0xffff);\r
-data[1783] = String.fromCharCode (0xffff);\r
-data[1784] = String.fromCharCode (0xffff);\r
-data[1785] = String.fromCharCode (0xffff);\r
-data[1786] = String.fromCharCode (0xffff);\r
-data[1787] = String.fromCharCode (0xffff);\r
-data[1788] = String.fromCharCode (0xffff);\r
-data[1789] = String.fromCharCode (0xffff);\r
-data[1790] = String.fromCharCode (0xffff);\r
-data[1791] = String.fromCharCode (0xffff);\r
-data[1792] = String.fromCharCode (0xffff);\r
-data[1793] = String.fromCharCode (0xffff);\r
-data[1794] = String.fromCharCode (0xffff);\r
-data[1795] = String.fromCharCode (0xffff);\r
-data[1796] = String.fromCharCode (0xffff);\r
-data[1797] = String.fromCharCode (0xffff);\r
-data[1798] = String.fromCharCode (0xffff);\r
-data[1799] = String.fromCharCode (0xffff);\r
-data[1800] = String.fromCharCode (0xffff);\r
-data[1801] = String.fromCharCode (0xffff);\r
-data[1802] = String.fromCharCode (0xffff);\r
-data[1803] = String.fromCharCode (0xffff);\r
-data[1804] = String.fromCharCode (0xffff);\r
-data[1805] = String.fromCharCode (0xffff);\r
-data[1806] = String.fromCharCode (0xffff);\r
-data[1807] = String.fromCharCode (0xffff);\r
-data[1808] = String.fromCharCode (0xffff);\r
-data[1809] = String.fromCharCode (0xffff);\r
-data[1810] = String.fromCharCode (0xffff);\r
-data[1811] = String.fromCharCode (0xffff);\r
-data[1812] = String.fromCharCode (0xffff);\r
-data[1813] = String.fromCharCode (0xffff);\r
-data[1814] = String.fromCharCode (0xffff);\r
-data[1815] = String.fromCharCode (0xffff);\r
-data[1816] = String.fromCharCode (0xffff);\r
-data[1817] = String.fromCharCode (0xffff);\r
-data[1818] = String.fromCharCode (0xffff);\r
-data[1819] = String.fromCharCode (0xffff);\r
-data[1820] = String.fromCharCode (0xffff);\r
-data[1821] = String.fromCharCode (0xffff);\r
-data[1822] = String.fromCharCode (0xffff);\r
-data[1823] = String.fromCharCode (0xffff);\r
-data[1824] = String.fromCharCode (0xffff);\r
-data[1825] = String.fromCharCode (0xffff);\r
-data[1826] = String.fromCharCode (0xffff);\r
-data[1827] = String.fromCharCode (0xffff);\r
-data[1828] = String.fromCharCode (0xffff);\r
-data[1829] = String.fromCharCode (0xffff);\r
-data[1830] = String.fromCharCode (0xffff);\r
-data[1831] = String.fromCharCode (0xffff);\r
-data[1832] = String.fromCharCode (0xffff);\r
-data[1833] = String.fromCharCode (0xffff);\r
-data[1834] = String.fromCharCode (0xffff);\r
-data[1835] = String.fromCharCode (0xffff);\r
-data[1836] = String.fromCharCode (0xffff);\r
-data[1837] = String.fromCharCode (0xffff);\r
-data[1838] = String.fromCharCode (0xffff);\r
-data[1839] = String.fromCharCode (0xffff);\r
-data[1840] = String.fromCharCode (0xffff);\r
-data[1841] = String.fromCharCode (0xffff);\r
-data[1842] = String.fromCharCode (0xffff);\r
-data[1843] = String.fromCharCode (0xffff);\r
-data[1844] = String.fromCharCode (0xffff);\r
-data[1845] = String.fromCharCode (0xffff);\r
-data[1846] = String.fromCharCode (0xffff);\r
-data[1847] = String.fromCharCode (0xffff);\r
-data[1848] = String.fromCharCode (0xffff);\r
-data[1849] = String.fromCharCode (0xffff);\r
-data[1850] = String.fromCharCode (0xffff);\r
-data[1851] = String.fromCharCode (0xffff);\r
-data[1852] = String.fromCharCode (0xffff);\r
-data[1853] = String.fromCharCode (0xffff);\r
-data[1854] = String.fromCharCode (0xffff);\r
-data[1855] = String.fromCharCode (0xffff);\r
-data[1856] = String.fromCharCode (0xffff);\r
-data[1857] = String.fromCharCode (0xffff);\r
-data[1858] = String.fromCharCode (0xffff);\r
-data[1859] = String.fromCharCode (0xffff);\r
-data[1860] = String.fromCharCode (0xffff);\r
-data[1861] = String.fromCharCode (0xffff);\r
-data[1862] = String.fromCharCode (0xffff);\r
-data[1863] = String.fromCharCode (0xffff);\r
-data[1864] = String.fromCharCode (0xffff);\r
-data[1865] = String.fromCharCode (0xffff);\r
-data[1866] = String.fromCharCode (0xffff);\r
-data[1867] = String.fromCharCode (0xffff);\r
-data[1868] = String.fromCharCode (0xffff);\r
-data[1869] = String.fromCharCode (0xffff);\r
-data[1870] = String.fromCharCode (0xffff);\r
-data[1871] = String.fromCharCode (0xffff);\r
-data[1872] = String.fromCharCode (0xffff);\r
-data[1873] = String.fromCharCode (0xffff);\r
-data[1874] = String.fromCharCode (0xffff);\r
-data[1875] = String.fromCharCode (0xffff);\r
-data[1876] = String.fromCharCode (0xffff);\r
-data[1877] = String.fromCharCode (0xffff);\r
-data[1878] = String.fromCharCode (0xffff);\r
-data[1879] = String.fromCharCode (0xffff);\r
-data[1880] = String.fromCharCode (0xffff);\r
-data[1881] = String.fromCharCode (0xffff);\r
-data[1882] = String.fromCharCode (0xffff);\r
-data[1883] = String.fromCharCode (0xffff);\r
-data[1884] = String.fromCharCode (0xffff);\r
-data[1885] = String.fromCharCode (0xffff);\r
-data[1886] = String.fromCharCode (0xffff);\r
-data[1887] = String.fromCharCode (0xffff);\r
-data[1888] = String.fromCharCode (0xffff);\r
-data[1889] = String.fromCharCode (0xffff);\r
-data[1890] = String.fromCharCode (0xffff);\r
-data[1891] = String.fromCharCode (0xffff);\r
-data[1892] = String.fromCharCode (0xffff);\r
-data[1893] = String.fromCharCode (0xffff);\r
-data[1894] = String.fromCharCode (0xffff);\r
-data[1895] = String.fromCharCode (0xffff);\r
-data[1896] = String.fromCharCode (0xffff);\r
-data[1897] = String.fromCharCode (0xffff);\r
-data[1898] = String.fromCharCode (0xffff);\r
-data[1899] = String.fromCharCode (0xffff);\r
-data[1900] = String.fromCharCode (0xffff);\r
-data[1901] = String.fromCharCode (0xffff);\r
-data[1902] = String.fromCharCode (0xffff);\r
-data[1903] = String.fromCharCode (0xffff);\r
-data[1904] = String.fromCharCode (0xffff);\r
-data[1905] = String.fromCharCode (0xffff);\r
-data[1906] = String.fromCharCode (0xffff);\r
-data[1907] = String.fromCharCode (0xffff);\r
-data[1908] = String.fromCharCode (0xffff);\r
-data[1909] = String.fromCharCode (0xffff);\r
-data[1910] = String.fromCharCode (0xffff);\r
-data[1911] = String.fromCharCode (0xffff);\r
-data[1912] = String.fromCharCode (0xffff);\r
-data[1913] = String.fromCharCode (0xffff);\r
-data[1914] = String.fromCharCode (0xffff);\r
-data[1915] = String.fromCharCode (0xffff);\r
-data[1916] = String.fromCharCode (0xffff);\r
-data[1917] = String.fromCharCode (0xffff);\r
-data[1918] = String.fromCharCode (0xffff);\r
-data[1919] = String.fromCharCode (0xffff);\r
-data[1920] = String.fromCharCode (0xffff);\r
-data[1921] = String.fromCharCode (0xffff);\r
-data[1922] = String.fromCharCode (0xffff);\r
-data[1923] = String.fromCharCode (0xffff);\r
-data[1924] = String.fromCharCode (0xffff);\r
-data[1925] = String.fromCharCode (0xffff);\r
-data[1926] = String.fromCharCode (0xffff);\r
-data[1927] = String.fromCharCode (0xffff);\r
-data[1928] = String.fromCharCode (0xffff);\r
-data[1929] = String.fromCharCode (0xffff);\r
-data[1930] = String.fromCharCode (0xffff);\r
-data[1931] = String.fromCharCode (0xffff);\r
-data[1932] = String.fromCharCode (0xffff);\r
-data[1933] = String.fromCharCode (0xffff);\r
-data[1934] = String.fromCharCode (0xffff);\r
-data[1935] = String.fromCharCode (0xffff);\r
-data[1936] = String.fromCharCode (0xffff);\r
-data[1937] = String.fromCharCode (0xffff);\r
-data[1938] = String.fromCharCode (0xffff);\r
-data[1939] = String.fromCharCode (0xffff);\r
-data[1940] = String.fromCharCode (0xffff);\r
-data[1941] = String.fromCharCode (0xffff);\r
-data[1942] = String.fromCharCode (0xffff);\r
-data[1943] = String.fromCharCode (0xffff);\r
-data[1944] = String.fromCharCode (0xffff);\r
-data[1945] = String.fromCharCode (0xffff);\r
-data[1946] = String.fromCharCode (0xffff);\r
-data[1947] = String.fromCharCode (0xffff);\r
-data[1948] = String.fromCharCode (0xffff);\r
-data[1949] = String.fromCharCode (0xffff);\r
-data[1950] = String.fromCharCode (0xffff);\r
-data[1951] = String.fromCharCode (0xffff);\r
-data[1952] = String.fromCharCode (0xffff);\r
-data[1953] = String.fromCharCode (0xffff);\r
-data[1954] = String.fromCharCode (0xffff);\r
-data[1955] = String.fromCharCode (0xffff);\r
-data[1956] = String.fromCharCode (0xffff);\r
-data[1957] = String.fromCharCode (0xffff);\r
-data[1958] = String.fromCharCode (0xffff);\r
-data[1959] = String.fromCharCode (0xffff);\r
-data[1960] = String.fromCharCode (0xffff);\r
-data[1961] = String.fromCharCode (0xffff);\r
-data[1962] = String.fromCharCode (0xffff);\r
-data[1963] = String.fromCharCode (0xffff);\r
-data[1964] = String.fromCharCode (0xffff);\r
-data[1965] = String.fromCharCode (0xffff);\r
-data[1966] = String.fromCharCode (0xffff);\r
-data[1967] = String.fromCharCode (0xffff);\r
-data[1968] = String.fromCharCode (0xffff);\r
-data[1969] = String.fromCharCode (0xffff);\r
-data[1970] = String.fromCharCode (0xffff);\r
-data[1971] = String.fromCharCode (0xffff);\r
-data[1972] = String.fromCharCode (0xffff);\r
-data[1973] = String.fromCharCode (0xffff);\r
-data[1974] = String.fromCharCode (0xffff);\r
-data[1975] = String.fromCharCode (0xffff);\r
-data[1976] = String.fromCharCode (0xffff);\r
-data[1977] = String.fromCharCode (0xffff);\r
-data[1978] = String.fromCharCode (0xffff);\r
-data[1979] = String.fromCharCode (0xffff);\r
-data[1980] = String.fromCharCode (0xffff);\r
-data[1981] = String.fromCharCode (0xffff);\r
-data[1982] = String.fromCharCode (0xffff);\r
-data[1983] = String.fromCharCode (0xffff);\r
-data[1984] = String.fromCharCode (0xffff);\r
-data[1985] = String.fromCharCode (0xffff);\r
-data[1986] = String.fromCharCode (0xffff);\r
-data[1987] = String.fromCharCode (0xffff);\r
-data[1988] = String.fromCharCode (0xffff);\r
-data[1989] = String.fromCharCode (0xffff);\r
-data[1990] = String.fromCharCode (0xffff);\r
-data[1991] = String.fromCharCode (0xffff);\r
-data[1992] = String.fromCharCode (0xffff);\r
-data[1993] = String.fromCharCode (0xffff);\r
-data[1994] = String.fromCharCode (0xffff);\r
-data[1995] = String.fromCharCode (0xffff);\r
-data[1996] = String.fromCharCode (0xffff);\r
-data[1997] = String.fromCharCode (0xffff);\r
-data[1998] = String.fromCharCode (0xffff);\r
-data[1999] = String.fromCharCode (0xffff);\r
-data[2000] = String.fromCharCode (0xffff);\r
-data[2001] = String.fromCharCode (0xffff);\r
-data[2002] = String.fromCharCode (0xffff);\r
-data[2003] = String.fromCharCode (0xffff);\r
-data[2004] = String.fromCharCode (0xffff);\r
-data[2005] = String.fromCharCode (0xffff);\r
-data[2006] = String.fromCharCode (0xffff);\r
-data[2007] = String.fromCharCode (0xffff);\r
-data[2008] = String.fromCharCode (0xffff);\r
-data[2009] = String.fromCharCode (0xffff);\r
-data[2010] = String.fromCharCode (0xffff);\r
-data[2011] = String.fromCharCode (0xffff);\r
-data[2012] = String.fromCharCode (0xffff);\r
-data[2013] = String.fromCharCode (0xffff);\r
-data[2014] = String.fromCharCode (0xffff);\r
-data[2015] = String.fromCharCode (0xffff);\r
-data[2016] = String.fromCharCode (0xffff);\r
-data[2017] = String.fromCharCode (0xffff);\r
-data[2018] = String.fromCharCode (0xffff);\r
-data[2019] = String.fromCharCode (0xffff);\r
-data[2020] = String.fromCharCode (0xffff);\r
-data[2021] = String.fromCharCode (0xffff);\r
-data[2022] = String.fromCharCode (0xffff);\r
-data[2023] = String.fromCharCode (0xffff);\r
-data[2024] = String.fromCharCode (0xffff);\r
-data[2025] = String.fromCharCode (0xffff);\r
-data[2026] = String.fromCharCode (0xffff);\r
-data[2027] = String.fromCharCode (0xffff);\r
-data[2028] = String.fromCharCode (0xffff);\r
-data[2029] = String.fromCharCode (0xffff);\r
-data[2030] = String.fromCharCode (0xffff);\r
-data[2031] = String.fromCharCode (0xffff);\r
-data[2032] = String.fromCharCode (0xffff);\r
-data[2033] = String.fromCharCode (0xffff);\r
-data[2034] = String.fromCharCode (0xffff);\r
-data[2035] = String.fromCharCode (0xffff);\r
-data[2036] = String.fromCharCode (0xffff);\r
-data[2037] = String.fromCharCode (0xffff);\r
-data[2038] = String.fromCharCode (0xffff);\r
-data[2039] = String.fromCharCode (0xffff);\r
-data[2040] = String.fromCharCode (0xffff);\r
-data[2041] = String.fromCharCode (0xffff);\r
-data[2042] = String.fromCharCode (0xffff);\r
-data[2043] = String.fromCharCode (0xffff);\r
-data[2044] = String.fromCharCode (0xffff);\r
-data[2045] = String.fromCharCode (0xffff);\r
-data[2046] = String.fromCharCode (0xffff);\r
-data[2047] = String.fromCharCode (0xffff);\r
-data[2048] = String.fromCharCode (0xffff);\r
-data[2049] = String.fromCharCode (0xffff);\r
-data[2050] = String.fromCharCode (0xffff);\r
-data[2051] = String.fromCharCode (0xffff);\r
-data[2052] = String.fromCharCode (0xffff);\r
-data[2053] = String.fromCharCode (0xffff);\r
-data[2054] = String.fromCharCode (0xffff);\r
-data[2055] = String.fromCharCode (0xffff);\r
-data[2056] = String.fromCharCode (0xffff);\r
-data[2057] = String.fromCharCode (0xffff);\r
-data[2058] = String.fromCharCode (0xffff);\r
-data[2059] = String.fromCharCode (0xffff);\r
-data[2060] = String.fromCharCode (0xffff);\r
-data[2061] = String.fromCharCode (0xffff);\r
-data[2062] = String.fromCharCode (0xffff);\r
-data[2063] = String.fromCharCode (0xffff);\r
-data[2064] = String.fromCharCode (0xffff);\r
-data[2065] = String.fromCharCode (0xffff);\r
-data[2066] = String.fromCharCode (0xffff);\r
-data[2067] = String.fromCharCode (0xffff);\r
-data[2068] = String.fromCharCode (0xffff);\r
-data[2069] = String.fromCharCode (0xffff);\r
-data[2070] = String.fromCharCode (0xffff);\r
-data[2071] = String.fromCharCode (0xffff);\r
-data[2072] = String.fromCharCode (0xffff);\r
-data[2073] = String.fromCharCode (0xffff);\r
-data[2074] = String.fromCharCode (0xffff);\r
-data[2075] = String.fromCharCode (0xffff);\r
-data[2076] = String.fromCharCode (0xffff);\r
-data[2077] = String.fromCharCode (0xffff);\r
-data[2078] = String.fromCharCode (0xffff);\r
-data[2079] = String.fromCharCode (0xffff);\r
-data[2080] = String.fromCharCode (0xffff);\r
-data[2081] = String.fromCharCode (0xffff);\r
-data[2082] = String.fromCharCode (0xffff);\r
-data[2083] = String.fromCharCode (0xffff);\r
-data[2084] = String.fromCharCode (0xffff);\r
-data[2085] = String.fromCharCode (0xffff);\r
-data[2086] = String.fromCharCode (0xffff);\r
-data[2087] = String.fromCharCode (0xffff);\r
-data[2088] = String.fromCharCode (0xffff);\r
-data[2089] = String.fromCharCode (0xffff);\r
-data[2090] = String.fromCharCode (0xffff);\r
-data[2091] = String.fromCharCode (0xffff);\r
-data[2092] = String.fromCharCode (0xffff);\r
-data[2093] = String.fromCharCode (0xffff);\r
-data[2094] = String.fromCharCode (0xffff);\r
-data[2095] = String.fromCharCode (0xffff);\r
-data[2096] = String.fromCharCode (0xffff);\r
-data[2097] = String.fromCharCode (0xffff);\r
-data[2098] = String.fromCharCode (0xffff);\r
-data[2099] = String.fromCharCode (0xffff);\r
-data[2100] = String.fromCharCode (0xffff);\r
-data[2101] = String.fromCharCode (0xffff);\r
-data[2102] = String.fromCharCode (0xffff);\r
-data[2103] = String.fromCharCode (0xffff);\r
-data[2104] = String.fromCharCode (0xffff);\r
-data[2105] = String.fromCharCode (0xffff);\r
-data[2106] = String.fromCharCode (0xffff);\r
-data[2107] = String.fromCharCode (0xffff);\r
-data[2108] = String.fromCharCode (0xffff);\r
-data[2109] = String.fromCharCode (0xffff);\r
-data[2110] = String.fromCharCode (0xffff);\r
-data[2111] = String.fromCharCode (0xffff);\r
-data[2112] = String.fromCharCode (0xffff);\r
-data[2113] = String.fromCharCode (0xffff);\r
-data[2114] = String.fromCharCode (0xffff);\r
-data[2115] = String.fromCharCode (0xffff);\r
-data[2116] = String.fromCharCode (0xffff);\r
-data[2117] = String.fromCharCode (0xffff);\r
-data[2118] = String.fromCharCode (0xffff);\r
-data[2119] = String.fromCharCode (0xffff);\r
-data[2120] = String.fromCharCode (0xffff);\r
-data[2121] = String.fromCharCode (0xffff);\r
-data[2122] = String.fromCharCode (0xffff);\r
-data[2123] = String.fromCharCode (0xffff);\r
-data[2124] = String.fromCharCode (0xffff);\r
-data[2125] = String.fromCharCode (0xffff);\r
-data[2126] = String.fromCharCode (0xffff);\r
-data[2127] = String.fromCharCode (0xffff);\r
-data[2128] = String.fromCharCode (0xffff);\r
-data[2129] = String.fromCharCode (0xffff);\r
-data[2130] = String.fromCharCode (0xffff);\r
-data[2131] = String.fromCharCode (0xffff);\r
-data[2132] = String.fromCharCode (0xffff);\r
-data[2133] = String.fromCharCode (0xffff);\r
-data[2134] = String.fromCharCode (0xffff);\r
-data[2135] = String.fromCharCode (0xffff);\r
-data[2136] = String.fromCharCode (0xffff);\r
-data[2137] = String.fromCharCode (0xffff);\r
-data[2138] = String.fromCharCode (0xffff);\r
-data[2139] = String.fromCharCode (0xffff);\r
-data[2140] = String.fromCharCode (0xffff);\r
-data[2141] = String.fromCharCode (0xffff);\r
-data[2142] = String.fromCharCode (0xffff);\r
-data[2143] = String.fromCharCode (0xffff);\r
-data[2144] = String.fromCharCode (0xffff);\r
-data[2145] = String.fromCharCode (0xffff);\r
-data[2146] = String.fromCharCode (0xffff);\r
-data[2147] = String.fromCharCode (0xffff);\r
-data[2148] = String.fromCharCode (0xffff);\r
-data[2149] = String.fromCharCode (0xffff);\r
-data[2150] = String.fromCharCode (0xffff);\r
-data[2151] = String.fromCharCode (0xffff);\r
-data[2152] = String.fromCharCode (0xffff);\r
-data[2153] = String.fromCharCode (0xffff);\r
-data[2154] = String.fromCharCode (0xffff);\r
-data[2155] = String.fromCharCode (0xffff);\r
-data[2156] = String.fromCharCode (0xffff);\r
-data[2157] = String.fromCharCode (0xffff);\r
-data[2158] = String.fromCharCode (0xffff);\r
-data[2159] = String.fromCharCode (0xffff);\r
-data[2160] = String.fromCharCode (0xffff);\r
-data[2161] = String.fromCharCode (0xffff);\r
-data[2162] = String.fromCharCode (0xffff);\r
-data[2163] = String.fromCharCode (0xffff);\r
-data[2164] = String.fromCharCode (0xffff);\r
-data[2165] = String.fromCharCode (0xffff);\r
-data[2166] = String.fromCharCode (0xffff);\r
-data[2167] = String.fromCharCode (0xffff);\r
-data[2168] = String.fromCharCode (0xffff);\r
-data[2169] = String.fromCharCode (0xffff);\r
-data[2170] = String.fromCharCode (0xffff);\r
-data[2171] = String.fromCharCode (0xffff);\r
-data[2172] = String.fromCharCode (0xffff);\r
-data[2173] = String.fromCharCode (0xffff);\r
-data[2174] = String.fromCharCode (0xffff);\r
-data[2175] = String.fromCharCode (0xffff);\r
-data[2176] = String.fromCharCode (0xffff);\r
-data[2177] = String.fromCharCode (0xffff);\r
-data[2178] = String.fromCharCode (0xffff);\r
-data[2179] = String.fromCharCode (0xffff);\r
-data[2180] = String.fromCharCode (0xffff);\r
-data[2181] = String.fromCharCode (0xffff);\r
-data[2182] = String.fromCharCode (0xffff);\r
-data[2183] = String.fromCharCode (0xffff);\r
-data[2184] = String.fromCharCode (0xffff);\r
-data[2185] = String.fromCharCode (0xffff);\r
-data[2186] = String.fromCharCode (0xffff);\r
-data[2187] = String.fromCharCode (0xffff);\r
-data[2188] = String.fromCharCode (0xffff);\r
-data[2189] = String.fromCharCode (0xffff);\r
-data[2190] = String.fromCharCode (0xffff);\r
-data[2191] = String.fromCharCode (0xffff);\r
-data[2192] = String.fromCharCode (0xffff);\r
-data[2193] = String.fromCharCode (0xffff);\r
-data[2194] = String.fromCharCode (0xffff);\r
-data[2195] = String.fromCharCode (0xffff);\r
-data[2196] = String.fromCharCode (0xffff);\r
-data[2197] = String.fromCharCode (0xffff);\r
-data[2198] = String.fromCharCode (0xffff);\r
-data[2199] = String.fromCharCode (0xffff);\r
-data[2200] = String.fromCharCode (0xffff);\r
-data[2201] = String.fromCharCode (0xffff);\r
-data[2202] = String.fromCharCode (0xffff);\r
-data[2203] = String.fromCharCode (0xffff);\r
-data[2204] = String.fromCharCode (0xffff);\r
-data[2205] = String.fromCharCode (0xffff);\r
-data[2206] = String.fromCharCode (0xffff);\r
-data[2207] = String.fromCharCode (0xffff);\r
-data[2208] = String.fromCharCode (0xffff);\r
-data[2209] = String.fromCharCode (0xffff);\r
-data[2210] = String.fromCharCode (0xffff);\r
-data[2211] = String.fromCharCode (0xffff);\r
-data[2212] = String.fromCharCode (0xffff);\r
-data[2213] = String.fromCharCode (0xffff);\r
-data[2214] = String.fromCharCode (0xffff);\r
-data[2215] = String.fromCharCode (0xffff);\r
-data[2216] = String.fromCharCode (0xffff);\r
-data[2217] = String.fromCharCode (0xffff);\r
-data[2218] = String.fromCharCode (0xffff);\r
-data[2219] = String.fromCharCode (0xffff);\r
-data[2220] = String.fromCharCode (0xffff);\r
-data[2221] = String.fromCharCode (0xffff);\r
-data[2222] = String.fromCharCode (0xffff);\r
-data[2223] = String.fromCharCode (0xffff);\r
-data[2224] = String.fromCharCode (0xffff);\r
-data[2225] = String.fromCharCode (0xffff);\r
-data[2226] = String.fromCharCode (0xffff);\r
-data[2227] = String.fromCharCode (0xffff);\r
-data[2228] = String.fromCharCode (0xffff);\r
-data[2229] = String.fromCharCode (0xffff);\r
-data[2230] = String.fromCharCode (0xffff);\r
-data[2231] = String.fromCharCode (0xffff);\r
-data[2232] = String.fromCharCode (0xffff);\r
-data[2233] = String.fromCharCode (0xffff);\r
-data[2234] = String.fromCharCode (0xffff);\r
-data[2235] = String.fromCharCode (0xffff);\r
-data[2236] = String.fromCharCode (0xffff);\r
-data[2237] = String.fromCharCode (0xffff);\r
-data[2238] = String.fromCharCode (0xffff);\r
-data[2239] = String.fromCharCode (0xffff);\r
-data[2240] = String.fromCharCode (0xffff);\r
-data[2241] = String.fromCharCode (0xffff);\r
-data[2242] = String.fromCharCode (0xffff);\r
-data[2243] = String.fromCharCode (0xffff);\r
-data[2244] = String.fromCharCode (0xffff);\r
-data[2245] = String.fromCharCode (0xffff);\r
-data[2246] = String.fromCharCode (0xffff);\r
-data[2247] = String.fromCharCode (0xffff);\r
-data[2248] = String.fromCharCode (0xffff);\r
-data[2249] = String.fromCharCode (0xffff);\r
-data[2250] = String.fromCharCode (0xffff);\r
-data[2251] = String.fromCharCode (0xffff);\r
-data[2252] = String.fromCharCode (0xffff);\r
-data[2253] = String.fromCharCode (0xffff);\r
-data[2254] = String.fromCharCode (0xffff);\r
-data[2255] = String.fromCharCode (0xffff);\r
-data[2256] = String.fromCharCode (0xffff);\r
-data[2257] = String.fromCharCode (0xffff);\r
-data[2258] = String.fromCharCode (0xffff);\r
-data[2259] = String.fromCharCode (0xffff);\r
-data[2260] = String.fromCharCode (0xffff);\r
-data[2261] = String.fromCharCode (0xffff);\r
-data[2262] = String.fromCharCode (0xffff);\r
-data[2263] = String.fromCharCode (0xffff);\r
-data[2264] = String.fromCharCode (0xffff);\r
-data[2265] = String.fromCharCode (0xffff);\r
-data[2266] = String.fromCharCode (0xffff);\r
-data[2267] = String.fromCharCode (0xffff);\r
-data[2268] = String.fromCharCode (0xffff);\r
-data[2269] = String.fromCharCode (0xffff);\r
-data[2270] = String.fromCharCode (0xffff);\r
-data[2271] = String.fromCharCode (0xffff);\r
-data[2272] = String.fromCharCode (0xffff);\r
-data[2273] = String.fromCharCode (0xffff);\r
-data[2274] = String.fromCharCode (0xffff);\r
-data[2275] = String.fromCharCode (0xffff);\r
-data[2276] = String.fromCharCode (0xffff);\r
-data[2277] = String.fromCharCode (0xffff);\r
-data[2278] = String.fromCharCode (0xffff);\r
-data[2279] = String.fromCharCode (0xffff);\r
-data[2280] = String.fromCharCode (0xffff);\r
-data[2281] = String.fromCharCode (0xffff);\r
-data[2282] = String.fromCharCode (0xffff);\r
-data[2283] = String.fromCharCode (0xffff);\r
-data[2284] = String.fromCharCode (0xffff);\r
-data[2285] = String.fromCharCode (0xffff);\r
-data[2286] = String.fromCharCode (0xffff);\r
-data[2287] = String.fromCharCode (0xffff);\r
-data[2288] = String.fromCharCode (0xffff);\r
-data[2289] = String.fromCharCode (0xffff);\r
-data[2290] = String.fromCharCode (0xffff);\r
-data[2291] = String.fromCharCode (0xffff);\r
-data[2292] = String.fromCharCode (0xffff);\r
-data[2293] = String.fromCharCode (0xffff);\r
-data[2294] = String.fromCharCode (0xffff);\r
-data[2295] = String.fromCharCode (0xffff);\r
-data[2296] = String.fromCharCode (0xffff);\r
-data[2297] = String.fromCharCode (0xffff);\r
-data[2298] = String.fromCharCode (0xffff);\r
-data[2299] = String.fromCharCode (0xffff);\r
-data[2300] = String.fromCharCode (0xffff);\r
-data[2301] = String.fromCharCode (0xffff);\r
-data[2302] = String.fromCharCode (0xffff);\r
-data[2303] = String.fromCharCode (0xffff);\r
-data[2304] = String.fromCharCode (0xffff);\r
-data[2305] = String.fromCharCode (0xffff);\r
-data[2306] = String.fromCharCode (0xffff);\r
-data[2307] = String.fromCharCode (0xffff);\r
-data[2308] = String.fromCharCode (0xffff);\r
-data[2309] = String.fromCharCode (0xffff);\r
-data[2310] = String.fromCharCode (0xffff);\r
-data[2311] = String.fromCharCode (0xffff);\r
-data[2312] = String.fromCharCode (0xffff);\r
-data[2313] = String.fromCharCode (0xffff);\r
-data[2314] = String.fromCharCode (0xffff);\r
-data[2315] = String.fromCharCode (0xffff);\r
-data[2316] = String.fromCharCode (0xffff);\r
-data[2317] = String.fromCharCode (0xffff);\r
-data[2318] = String.fromCharCode (0xffff);\r
-data[2319] = String.fromCharCode (0xffff);\r
-data[2320] = String.fromCharCode (0xffff);\r
-data[2321] = String.fromCharCode (0xffff);\r
-data[2322] = String.fromCharCode (0xffff);\r
-data[2323] = String.fromCharCode (0xffff);\r
-data[2324] = String.fromCharCode (0xffff);\r
-data[2325] = String.fromCharCode (0xffff);\r
-data[2326] = String.fromCharCode (0xffff);\r
-data[2327] = String.fromCharCode (0xffff);\r
-data[2328] = String.fromCharCode (0xffff);\r
-data[2329] = String.fromCharCode (0xffff);\r
-data[2330] = String.fromCharCode (0xffff);\r
-data[2331] = String.fromCharCode (0xffff);\r
-data[2332] = String.fromCharCode (0xffff);\r
-data[2333] = String.fromCharCode (0xffff);\r
-data[2334] = String.fromCharCode (0xffff);\r
-data[2335] = String.fromCharCode (0xffff);\r
-data[2336] = String.fromCharCode (0xffff);\r
-data[2337] = String.fromCharCode (0xffff);\r
-data[2338] = String.fromCharCode (0xffff);\r
-data[2339] = String.fromCharCode (0xffff);\r
-data[2340] = String.fromCharCode (0xffff);\r
-data[2341] = String.fromCharCode (0xffff);\r
-data[2342] = String.fromCharCode (0xffff);\r
-data[2343] = String.fromCharCode (0xffff);\r
-data[2344] = String.fromCharCode (0xffff);\r
-data[2345] = String.fromCharCode (0xffff);\r
-data[2346] = String.fromCharCode (0xffff);\r
-data[2347] = String.fromCharCode (0xffff);\r
-data[2348] = String.fromCharCode (0xffff);\r
-data[2349] = String.fromCharCode (0xffff);\r
-data[2350] = String.fromCharCode (0xffff);\r
-data[2351] = String.fromCharCode (0xffff);\r
-data[2352] = String.fromCharCode (0xffff);\r
-data[2353] = String.fromCharCode (0xffff);\r
-data[2354] = String.fromCharCode (0xffff);\r
-data[2355] = String.fromCharCode (0xffff);\r
-data[2356] = String.fromCharCode (0xffff);\r
-data[2357] = String.fromCharCode (0xffff);\r
-data[2358] = String.fromCharCode (0xffff);\r
-data[2359] = String.fromCharCode (0xffff);\r
-data[2360] = String.fromCharCode (0xffff);\r
-data[2361] = String.fromCharCode (0xffff);\r
-data[2362] = String.fromCharCode (0xffff);\r
-data[2363] = String.fromCharCode (0xffff);\r
-data[2364] = String.fromCharCode (0xffff);\r
-data[2365] = String.fromCharCode (0xffff);\r
-data[2366] = String.fromCharCode (0xffff);\r
-data[2367] = String.fromCharCode (0xffff);\r
-data[2368] = String.fromCharCode (0xffff);\r
-data[2369] = String.fromCharCode (0xffff);\r
-data[2370] = String.fromCharCode (0xffff);\r
-data[2371] = String.fromCharCode (0xffff);\r
-data[2372] = String.fromCharCode (0xffff);\r
-data[2373] = String.fromCharCode (0xffff);\r
-data[2374] = String.fromCharCode (0xffff);\r
-data[2375] = String.fromCharCode (0xffff);\r
-data[2376] = String.fromCharCode (0xffff);\r
-data[2377] = String.fromCharCode (0xffff);\r
-data[2378] = String.fromCharCode (0xffff);\r
-data[2379] = String.fromCharCode (0xffff);\r
-data[2380] = String.fromCharCode (0xffff);\r
-data[2381] = String.fromCharCode (0xffff);\r
-data[2382] = String.fromCharCode (0xffff);\r
-data[2383] = String.fromCharCode (0xffff);\r
-data[2384] = String.fromCharCode (0xffff);\r
-data[2385] = String.fromCharCode (0xffff);\r
-data[2386] = String.fromCharCode (0xffff);\r
-data[2387] = String.fromCharCode (0xffff);\r
-data[2388] = String.fromCharCode (0xffff);\r
-data[2389] = String.fromCharCode (0xffff);\r
-data[2390] = String.fromCharCode (0xffff);\r
-data[2391] = String.fromCharCode (0xffff);\r
-data[2392] = String.fromCharCode (0xffff);\r
-data[2393] = String.fromCharCode (0xffff);\r
-data[2394] = String.fromCharCode (0xffff);\r
-data[2395] = String.fromCharCode (0xffff);\r
-data[2396] = String.fromCharCode (0xffff);\r
-data[2397] = String.fromCharCode (0xffff);\r
-data[2398] = String.fromCharCode (0xffff);\r
-data[2399] = String.fromCharCode (0xffff);\r
-data[2400] = String.fromCharCode (0xffff);\r
-data[2401] = String.fromCharCode (0xffff);\r
-data[2402] = String.fromCharCode (0xffff);\r
-data[2403] = String.fromCharCode (0xffff);\r
-data[2404] = String.fromCharCode (0xffff);\r
-data[2405] = String.fromCharCode (0xffff);\r
-data[2406] = String.fromCharCode (0xffff);\r
-data[2407] = String.fromCharCode (0xffff);\r
-data[2408] = String.fromCharCode (0xffff);\r
-data[2409] = String.fromCharCode (0xffff);\r
-data[2410] = String.fromCharCode (0xffff);\r
-data[2411] = String.fromCharCode (0xffff);\r
-data[2412] = String.fromCharCode (0xffff);\r
-data[2413] = String.fromCharCode (0xffff);\r
-data[2414] = String.fromCharCode (0xffff);\r
-data[2415] = String.fromCharCode (0xffff);\r
-data[2416] = String.fromCharCode (0xffff);\r
-data[2417] = String.fromCharCode (0xffff);\r
-data[2418] = String.fromCharCode (0xffff);\r
-data[2419] = String.fromCharCode (0xffff);\r
-data[2420] = String.fromCharCode (0xffff);\r
-data[2421] = String.fromCharCode (0xffff);\r
-data[2422] = String.fromCharCode (0xffff);\r
-data[2423] = String.fromCharCode (0xffff);\r
-data[2424] = String.fromCharCode (0xffff);\r
-data[2425] = String.fromCharCode (0xffff);\r
-data[2426] = String.fromCharCode (0xffff);\r
-data[2427] = String.fromCharCode (0xffff);\r
-data[2428] = String.fromCharCode (0xffff);\r
-data[2429] = String.fromCharCode (0xffff);\r
-data[2430] = String.fromCharCode (0xffff);\r
-data[2431] = String.fromCharCode (0xffff);\r
-data[2432] = String.fromCharCode (0xffff);\r
-data[2433] = String.fromCharCode (0xffff);\r
-data[2434] = String.fromCharCode (0xffff);\r
-data[2435] = String.fromCharCode (0xffff);\r
-data[2436] = String.fromCharCode (0xffff);\r
-data[2437] = String.fromCharCode (0xffff);\r
-data[2438] = String.fromCharCode (0xffff);\r
-data[2439] = String.fromCharCode (0xffff);\r
-data[2440] = String.fromCharCode (0xffff);\r
-data[2441] = String.fromCharCode (0xffff);\r
-data[2442] = String.fromCharCode (0xffff);\r
-data[2443] = String.fromCharCode (0xffff);\r
-data[2444] = String.fromCharCode (0xffff);\r
-data[2445] = String.fromCharCode (0xffff);\r
-data[2446] = String.fromCharCode (0xffff);\r
-data[2447] = String.fromCharCode (0xffff);\r
-data[2448] = String.fromCharCode (0xffff);\r
-data[2449] = String.fromCharCode (0xffff);\r
-data[2450] = String.fromCharCode (0xffff);\r
-data[2451] = String.fromCharCode (0xffff);\r
-data[2452] = String.fromCharCode (0xffff);\r
-data[2453] = String.fromCharCode (0xffff);\r
-data[2454] = String.fromCharCode (0xffff);\r
-data[2455] = String.fromCharCode (0xffff);\r
-data[2456] = String.fromCharCode (0xffff);\r
-data[2457] = String.fromCharCode (0xffff);\r
-data[2458] = String.fromCharCode (0xffff);\r
-data[2459] = String.fromCharCode (0xffff);\r
-data[2460] = String.fromCharCode (0xffff);\r
-data[2461] = String.fromCharCode (0xffff);\r
-data[2462] = String.fromCharCode (0xffff);\r
-data[2463] = String.fromCharCode (0xffff);\r
-data[2464] = String.fromCharCode (0xffff);\r
-data[2465] = String.fromCharCode (0xffff);\r
-data[2466] = String.fromCharCode (0xffff);\r
-data[2467] = String.fromCharCode (0xffff);\r
-data[2468] = String.fromCharCode (0xffff);\r
-data[2469] = String.fromCharCode (0xffff);\r
-data[2470] = String.fromCharCode (0xffff);\r
-data[2471] = String.fromCharCode (0xffff);\r
-data[2472] = String.fromCharCode (0xffff);\r
-data[2473] = String.fromCharCode (0xffff);\r
-data[2474] = String.fromCharCode (0xffff);\r
-data[2475] = String.fromCharCode (0xffff);\r
-data[2476] = String.fromCharCode (0xffff);\r
-data[2477] = String.fromCharCode (0xffff);\r
-data[2478] = String.fromCharCode (0xffff);\r
-data[2479] = String.fromCharCode (0xffff);\r
-data[2480] = String.fromCharCode (0xffff);\r
-data[2481] = String.fromCharCode (0xffff);\r
-data[2482] = String.fromCharCode (0xffff);\r
-data[2483] = String.fromCharCode (0xffff);\r
-data[2484] = String.fromCharCode (0xffff);\r
-data[2485] = String.fromCharCode (0xffff);\r
-data[2486] = String.fromCharCode (0xffff);\r
-data[2487] = String.fromCharCode (0xffff);\r
-data[2488] = String.fromCharCode (0xffff);\r
-data[2489] = String.fromCharCode (0xffff);\r
-data[2490] = String.fromCharCode (0xffff);\r
-data[2491] = String.fromCharCode (0xffff);\r
-data[2492] = String.fromCharCode (0xffff);\r
-data[2493] = String.fromCharCode (0xffff);\r
-data[2494] = String.fromCharCode (0xffff);\r
-data[2495] = String.fromCharCode (0xffff);\r
-data[2496] = String.fromCharCode (0xffff);\r
-data[2497] = String.fromCharCode (0xffff);\r
-data[2498] = String.fromCharCode (0xffff);\r
-data[2499] = String.fromCharCode (0xffff);\r
-data[2500] = String.fromCharCode (0xffff);\r
-data[2501] = String.fromCharCode (0xffff);\r
-data[2502] = String.fromCharCode (0xffff);\r
-data[2503] = String.fromCharCode (0xffff);\r
-data[2504] = String.fromCharCode (0xffff);\r
-data[2505] = String.fromCharCode (0xffff);\r
-data[2506] = String.fromCharCode (0xffff);\r
-data[2507] = String.fromCharCode (0xffff);\r
-data[2508] = String.fromCharCode (0xffff);\r
-data[2509] = String.fromCharCode (0xffff);\r
-data[2510] = String.fromCharCode (0xffff);\r
-data[2511] = String.fromCharCode (0xffff);\r
-data[2512] = String.fromCharCode (0xffff);\r
-data[2513] = String.fromCharCode (0xffff);\r
-data[2514] = String.fromCharCode (0xffff);\r
-data[2515] = String.fromCharCode (0xffff);\r
-data[2516] = String.fromCharCode (0xffff);\r
-data[2517] = String.fromCharCode (0xffff);\r
-data[2518] = String.fromCharCode (0xffff);\r
-data[2519] = String.fromCharCode (0xffff);\r
-data[2520] = String.fromCharCode (0xffff);\r
-data[2521] = String.fromCharCode (0xffff);\r
-data[2522] = String.fromCharCode (0xffff);\r
-data[2523] = String.fromCharCode (0xffff);\r
-data[2524] = String.fromCharCode (0xffff);\r
-data[2525] = String.fromCharCode (0xffff);\r
-data[2526] = String.fromCharCode (0xffff);\r
-data[2527] = String.fromCharCode (0xffff);\r
-data[2528] = String.fromCharCode (0xffff);\r
-data[2529] = String.fromCharCode (0xffff);\r
-data[2530] = String.fromCharCode (0xffff);\r
-data[2531] = String.fromCharCode (0xffff);\r
-data[2532] = String.fromCharCode (0xffff);\r
-data[2533] = String.fromCharCode (0xffff);\r
-data[2534] = String.fromCharCode (0xffff);\r
-data[2535] = String.fromCharCode (0xffff);\r
-data[2536] = String.fromCharCode (0xffff);\r
-data[2537] = String.fromCharCode (0xffff);\r
-data[2538] = String.fromCharCode (0xffff);\r
-data[2539] = String.fromCharCode (0xffff);\r
-data[2540] = String.fromCharCode (0xffff);\r
-data[2541] = String.fromCharCode (0xffff);\r
-data[2542] = String.fromCharCode (0xffff);\r
-data[2543] = String.fromCharCode (0xffff);\r
-data[2544] = String.fromCharCode (0xffff);\r
-data[2545] = String.fromCharCode (0xffff);\r
-data[2546] = String.fromCharCode (0xffff);\r
-data[2547] = String.fromCharCode (0xffff);\r
-data[2548] = String.fromCharCode (0xffff);\r
-data[2549] = String.fromCharCode (0xffff);\r
-data[2550] = String.fromCharCode (0xffff);\r
-data[2551] = String.fromCharCode (0xffff);\r
-data[2552] = String.fromCharCode (0xffff);\r
-data[2553] = String.fromCharCode (0xffff);\r
-data[2554] = String.fromCharCode (0x003f);\r
-data[2752] = String.fromCharCode (0xffff);\r
-data[2753] = String.fromCharCode (0xffff);\r
-data[2754] = String.fromCharCode (0xffff);\r
-data[2755] = String.fromCharCode (0xffff);\r
-data[2756] = String.fromCharCode (0xffff);\r
-data[2757] = String.fromCharCode (0xffff);\r
-data[2758] = String.fromCharCode (0xffff);\r
-data[2759] = String.fromCharCode (0xffff);\r
-data[2760] = String.fromCharCode (0xffff);\r
-data[2761] = String.fromCharCode (0xffff);\r
-data[2762] = String.fromCharCode (0xffff);\r
-data[2763] = String.fromCharCode (0xffff);\r
-data[2764] = String.fromCharCode (0xffff);\r
-data[2765] = String.fromCharCode (0xffff);\r
-data[2766] = String.fromCharCode (0xffff);\r
-data[2767] = String.fromCharCode (0xffff);\r
-data[2768] = String.fromCharCode (0xffff);\r
-data[2769] = String.fromCharCode (0xffff);\r
-data[2770] = String.fromCharCode (0xffff);\r
-data[2771] = String.fromCharCode (0xffff);\r
-data[2772] = String.fromCharCode (0xffff);\r
-data[2773] = String.fromCharCode (0xffff);\r
-data[2774] = String.fromCharCode (0xffff);\r
-data[2775] = String.fromCharCode (0xffff);\r
-data[2776] = String.fromCharCode (0xffff);\r
-data[2777] = String.fromCharCode (0xffff);\r
-data[2778] = String.fromCharCode (0xffff);\r
-data[2779] = String.fromCharCode (0xffff);\r
-data[2780] = String.fromCharCode (0xffff);\r
-data[2781] = String.fromCharCode (0xffff);\r
-data[2782] = String.fromCharCode (0xffff);\r
-data[2783] = String.fromCharCode (0xffff);\r
-data[2784] = String.fromCharCode (0xffff);\r
-data[2785] = String.fromCharCode (0xffff);\r
-data[2786] = String.fromCharCode (0xffff);\r
-data[2787] = String.fromCharCode (0xffff);\r
-data[2788] = String.fromCharCode (0xffff);\r
-data[2789] = String.fromCharCode (0xffff);\r
-data[2790] = String.fromCharCode (0xffff);\r
-data[2791] = String.fromCharCode (0xffff);\r
-data[2792] = String.fromCharCode (0xffff);\r
-data[2793] = String.fromCharCode (0xffff);\r
-data[2794] = String.fromCharCode (0xffff);\r
-data[2795] = String.fromCharCode (0xffff);\r
-data[2796] = String.fromCharCode (0xffff);\r
-data[2797] = String.fromCharCode (0xffff);\r
-data[2798] = String.fromCharCode (0xffff);\r
-data[2799] = String.fromCharCode (0xffff);\r
-data[2800] = String.fromCharCode (0xffff);\r
-data[2801] = String.fromCharCode (0xffff);\r
-data[2802] = String.fromCharCode (0xffff);\r
-data[2803] = String.fromCharCode (0xffff);\r
-data[2804] = String.fromCharCode (0xffff);\r
-data[2805] = String.fromCharCode (0xffff);\r
-data[2806] = String.fromCharCode (0xffff);\r
-data[2807] = String.fromCharCode (0xffff);\r
-data[2808] = String.fromCharCode (0xffff);\r
-data[2809] = String.fromCharCode (0xffff);\r
-data[2810] = String.fromCharCode (0xffff);\r
-data[2811] = String.fromCharCode (0xffff);\r
-data[2812] = String.fromCharCode (0xffff);\r
-data[2813] = String.fromCharCode (0xffff);\r
-data[2814] = String.fromCharCode (0xffff);\r
-data[2815] = String.fromCharCode (0xffff);\r
-data[2816] = String.fromCharCode (0xffff);\r
-data[2817] = String.fromCharCode (0xffff);\r
-data[2818] = String.fromCharCode (0xffff);\r
-data[2819] = String.fromCharCode (0xffff);\r
-data[2820] = String.fromCharCode (0xffff);\r
-data[2821] = String.fromCharCode (0xffff);\r
-data[2822] = String.fromCharCode (0xffff);\r
-data[2823] = String.fromCharCode (0xffff);\r
-data[2824] = String.fromCharCode (0xffff);\r
-data[2825] = String.fromCharCode (0xffff);\r
-data[2826] = String.fromCharCode (0xffff);\r
-data[2827] = String.fromCharCode (0xffff);\r
-data[2828] = String.fromCharCode (0xffff);\r
-data[2829] = String.fromCharCode (0xffff);\r
-data[2830] = String.fromCharCode (0xffff);\r
-data[2831] = String.fromCharCode (0xffff);\r
-data[2832] = String.fromCharCode (0xffff);\r
-data[2833] = String.fromCharCode (0xffff);\r
-data[2834] = String.fromCharCode (0xffff);\r
-data[2835] = String.fromCharCode (0xffff);\r
-data[2836] = String.fromCharCode (0xffff);\r
-data[2837] = String.fromCharCode (0xffff);\r
-data[2838] = String.fromCharCode (0xffff);\r
-data[2839] = String.fromCharCode (0xffff);\r
-data[2840] = String.fromCharCode (0xffff);\r
-data[2841] = String.fromCharCode (0xffff);\r
-data[2842] = String.fromCharCode (0xffff);\r
-data[2843] = String.fromCharCode (0xffff);\r
-data[2844] = String.fromCharCode (0xffff);\r
-data[2845] = String.fromCharCode (0xffff);\r
-data[2846] = String.fromCharCode (0xffff);\r
-data[2847] = String.fromCharCode (0xffff);\r
-data[2848] = String.fromCharCode (0xffff);\r
-data[2849] = String.fromCharCode (0xffff);\r
-data[2850] = String.fromCharCode (0xffff);\r
-data[2851] = String.fromCharCode (0xffff);\r
-data[2852] = String.fromCharCode (0xffff);\r
-data[2853] = String.fromCharCode (0xffff);\r
-data[2854] = String.fromCharCode (0xffff);\r
-data[2855] = String.fromCharCode (0xffff);\r
-data[2856] = String.fromCharCode (0xffff);\r
-data[2857] = String.fromCharCode (0xffff);\r
-data[2858] = String.fromCharCode (0xffff);\r
-data[2859] = String.fromCharCode (0xffff);\r
-data[2860] = String.fromCharCode (0xffff);\r
-data[2861] = String.fromCharCode (0xffff);\r
-data[2862] = String.fromCharCode (0xffff);\r
-data[2863] = String.fromCharCode (0xffff);\r
-data[2864] = String.fromCharCode (0xffff);\r
-data[2865] = String.fromCharCode (0xffff);\r
-data[2866] = String.fromCharCode (0xffff);\r
-data[2867] = String.fromCharCode (0xffff);\r
-data[2868] = String.fromCharCode (0xffff);\r
-data[2869] = String.fromCharCode (0xffff);\r
-data[2870] = String.fromCharCode (0xffff);\r
-data[2871] = String.fromCharCode (0xffff);\r
-data[2872] = String.fromCharCode (0xffff);\r
-data[2873] = String.fromCharCode (0xffff);\r
-data[2874] = String.fromCharCode (0xffff);\r
-data[2875] = String.fromCharCode (0xffff);\r
-data[2876] = String.fromCharCode (0xffff);\r
-data[2877] = String.fromCharCode (0xffff);\r
-data[2878] = String.fromCharCode (0xffff);\r
-data[2879] = String.fromCharCode (0xffff);\r
-data[2880] = String.fromCharCode (0xffff);\r
-data[2881] = String.fromCharCode (0xffff);\r
-data[2882] = String.fromCharCode (0xffff);\r
-data[2883] = String.fromCharCode (0xffff);\r
-data[2884] = String.fromCharCode (0xffff);\r
-data[2885] = String.fromCharCode (0xffff);\r
-data[2886] = String.fromCharCode (0xffff);\r
-data[2887] = String.fromCharCode (0xffff);\r
-data[2888] = String.fromCharCode (0xffff);\r
-data[2889] = String.fromCharCode (0xffff);\r
-data[2890] = String.fromCharCode (0xffff);\r
-data[2891] = String.fromCharCode (0xffff);\r
-data[2892] = String.fromCharCode (0xffff);\r
-data[2893] = String.fromCharCode (0xffff);\r
-data[2894] = String.fromCharCode (0xffff);\r
-data[2895] = String.fromCharCode (0xffff);\r
-data[2896] = String.fromCharCode (0xffff);\r
-data[2897] = String.fromCharCode (0xffff);\r
-data[2898] = String.fromCharCode (0xffff);\r
-data[2899] = String.fromCharCode (0xffff);\r
-data[2900] = String.fromCharCode (0xffff);\r
-data[2901] = String.fromCharCode (0xffff);\r
-data[2902] = String.fromCharCode (0xffff);\r
-data[2903] = String.fromCharCode (0xffff);\r
-data[2904] = String.fromCharCode (0xffff);\r
-data[2905] = String.fromCharCode (0xffff);\r
-data[2906] = String.fromCharCode (0xffff);\r
-data[2907] = String.fromCharCode (0xffff);\r
-data[2908] = String.fromCharCode (0xffff);\r
-data[2909] = String.fromCharCode (0xffff);\r
-data[2910] = String.fromCharCode (0xffff);\r
-data[2911] = String.fromCharCode (0xffff);\r
-data[2912] = String.fromCharCode (0xffff);\r
-data[2913] = String.fromCharCode (0xffff);\r
-data[2914] = String.fromCharCode (0xffff);\r
-data[2915] = String.fromCharCode (0xffff);\r
-data[2916] = String.fromCharCode (0xffff);\r
-data[2917] = String.fromCharCode (0xffff);\r
-data[2918] = String.fromCharCode (0xffff);\r
-data[2919] = String.fromCharCode (0xffff);\r
-data[2920] = String.fromCharCode (0xffff);\r
-data[2921] = String.fromCharCode (0xffff);\r
-data[2922] = String.fromCharCode (0xffff);\r
-data[2923] = String.fromCharCode (0xffff);\r
-data[2924] = String.fromCharCode (0xffff);\r
-data[2925] = String.fromCharCode (0xffff);\r
-data[2926] = String.fromCharCode (0xffff);\r
-data[2927] = String.fromCharCode (0xffff);\r
-data[2928] = String.fromCharCode (0xffff);\r
-data[2929] = String.fromCharCode (0xffff);\r
-data[2930] = String.fromCharCode (0xffff);\r
-data[2931] = String.fromCharCode (0xffff);\r
-data[2932] = String.fromCharCode (0xffff);\r
-data[2933] = String.fromCharCode (0xffff);\r
-data[2934] = String.fromCharCode (0xffff);\r
-data[2935] = String.fromCharCode (0xffff);\r
-data[2936] = String.fromCharCode (0xffff);\r
-data[2937] = String.fromCharCode (0xffff);\r
-data[2938] = String.fromCharCode (0xffff);\r
-data[2939] = String.fromCharCode (0xffff);\r
-data[2940] = String.fromCharCode (0xffff);\r
-data[2941] = String.fromCharCode (0xffff);\r
-data[2942] = String.fromCharCode (0xffff);\r
-data[2943] = String.fromCharCode (0xffff);\r
-data[2944] = String.fromCharCode (0xffff);\r
-data[2945] = String.fromCharCode (0xffff);\r
-data[2946] = String.fromCharCode (0xffff);\r
-data[2947] = String.fromCharCode (0xffff);\r
-data[2948] = String.fromCharCode (0xffff);\r
-data[2949] = String.fromCharCode (0xffff);\r
-data[2950] = String.fromCharCode (0xffff);\r
-data[2951] = String.fromCharCode (0xffff);\r
-data[2952] = String.fromCharCode (0xffff);\r
-data[2953] = String.fromCharCode (0xffff);\r
-data[2954] = String.fromCharCode (0xffff);\r
-data[2955] = String.fromCharCode (0xffff);\r
-data[2956] = String.fromCharCode (0xffff);\r
-data[2957] = String.fromCharCode (0xffff);\r
-data[2958] = String.fromCharCode (0xffff);\r
-data[2959] = String.fromCharCode (0xffff);\r
-data[2960] = String.fromCharCode (0xffff);\r
-data[2961] = String.fromCharCode (0xffff);\r
-data[2962] = String.fromCharCode (0xffff);\r
-data[2963] = String.fromCharCode (0xffff);\r
-data[2964] = String.fromCharCode (0xffff);\r
-data[2965] = String.fromCharCode (0xffff);\r
-data[2966] = String.fromCharCode (0xffff);\r
-data[2967] = String.fromCharCode (0xffff);\r
-data[2968] = String.fromCharCode (0xffff);\r
-data[2969] = String.fromCharCode (0xffff);\r
-data[2970] = String.fromCharCode (0xffff);\r
-data[2971] = String.fromCharCode (0xffff);\r
-data[2972] = String.fromCharCode (0xffff);\r
-data[2973] = String.fromCharCode (0xffff);\r
-data[2974] = String.fromCharCode (0xffff);\r
-data[2975] = String.fromCharCode (0xffff);\r
-data[2976] = String.fromCharCode (0xffff);\r
-data[2977] = String.fromCharCode (0xffff);\r
-data[2978] = String.fromCharCode (0xffff);\r
-data[2979] = String.fromCharCode (0xffff);\r
-data[2980] = String.fromCharCode (0xffff);\r
-data[2981] = String.fromCharCode (0xffff);\r
-data[2982] = String.fromCharCode (0xffff);\r
-data[2983] = String.fromCharCode (0xffff);\r
-data[2984] = String.fromCharCode (0xffff);\r
-data[2985] = String.fromCharCode (0xffff);\r
-data[2986] = String.fromCharCode (0xffff);\r
-data[2987] = String.fromCharCode (0xffff);\r
-data[2988] = String.fromCharCode (0xffff);\r
-data[2989] = String.fromCharCode (0xffff);\r
-data[2990] = String.fromCharCode (0xffff);\r
-data[2991] = String.fromCharCode (0xffff);\r
-data[2992] = String.fromCharCode (0xffff);\r
-data[2993] = String.fromCharCode (0xffff);\r
-data[2994] = String.fromCharCode (0xffff);\r
-data[2995] = String.fromCharCode (0xffff);\r
-data[2996] = String.fromCharCode (0xffff);\r
-data[2997] = String.fromCharCode (0xffff);\r
-data[2998] = String.fromCharCode (0xffff);\r
-data[2999] = String.fromCharCode (0xffff);\r
-data[3000] = String.fromCharCode (0xffff);\r
-data[3001] = String.fromCharCode (0xffff);\r
-data[3002] = String.fromCharCode (0xffff);\r
-data[3003] = String.fromCharCode (0xffff);\r
-data[3004] = String.fromCharCode (0xffff);\r
-data[3005] = String.fromCharCode (0xffff);\r
-data[3006] = String.fromCharCode (0xffff);\r
-data[3007] = String.fromCharCode (0xffff);\r
-data[3008] = String.fromCharCode (0xffff);\r
-data[3009] = String.fromCharCode (0xffff);\r
-data[3010] = String.fromCharCode (0xffff);\r
-data[3011] = String.fromCharCode (0xffff);\r
-data[3012] = String.fromCharCode (0xffff);\r
-data[3013] = String.fromCharCode (0xffff);\r
-data[3014] = String.fromCharCode (0xffff);\r
-data[3015] = String.fromCharCode (0xffff);\r
-data[3016] = String.fromCharCode (0xffff);\r
-data[3017] = String.fromCharCode (0xffff);\r
-data[3018] = String.fromCharCode (0xffff);\r
-data[3019] = String.fromCharCode (0xffff);\r
-data[3020] = String.fromCharCode (0xffff);\r
-data[3021] = String.fromCharCode (0xffff);\r
-data[3022] = String.fromCharCode (0xffff);\r
-data[3023] = String.fromCharCode (0xffff);\r
-data[3024] = String.fromCharCode (0xffff);\r
-data[3025] = String.fromCharCode (0xffff);\r
-data[3026] = String.fromCharCode (0xffff);\r
-data[3027] = String.fromCharCode (0xffff);\r
-data[3028] = String.fromCharCode (0xffff);\r
-data[3029] = String.fromCharCode (0xffff);\r
-data[3030] = String.fromCharCode (0xffff);\r
-data[3031] = String.fromCharCode (0xffff);\r
-data[3032] = String.fromCharCode (0xffff);\r
-data[3033] = String.fromCharCode (0xffff);\r
-data[3034] = String.fromCharCode (0xffff);\r
-data[3035] = String.fromCharCode (0xffff);\r
-data[3036] = String.fromCharCode (0xffff);\r
-data[3037] = String.fromCharCode (0xffff);\r
-data[3038] = String.fromCharCode (0xffff);\r
-data[3039] = String.fromCharCode (0xffff);\r
-data[3040] = String.fromCharCode (0xffff);\r
-data[3041] = String.fromCharCode (0xffff);\r
-data[3042] = String.fromCharCode (0xffff);\r
-data[3043] = String.fromCharCode (0xffff);\r
-data[3044] = String.fromCharCode (0xffff);\r
-data[3045] = String.fromCharCode (0xffff);\r
-data[3046] = String.fromCharCode (0xffff);\r
-data[3047] = String.fromCharCode (0xffff);\r
-data[3048] = String.fromCharCode (0xffff);\r
-data[3049] = String.fromCharCode (0xffff);\r
-data[3050] = String.fromCharCode (0xffff);\r
-data[3051] = String.fromCharCode (0xffff);\r
-data[3052] = String.fromCharCode (0xffff);\r
-data[3053] = String.fromCharCode (0xffff);\r
-data[3054] = String.fromCharCode (0xffff);\r
-data[3055] = String.fromCharCode (0xffff);\r
-data[3056] = String.fromCharCode (0xffff);\r
-data[3057] = String.fromCharCode (0xffff);\r
-data[3058] = String.fromCharCode (0xffff);\r
-data[3059] = String.fromCharCode (0xffff);\r
-data[3060] = String.fromCharCode (0xffff);\r
-data[3061] = String.fromCharCode (0xffff);\r
-data[3062] = String.fromCharCode (0xffff);\r
-data[3063] = String.fromCharCode (0xffff);\r
-data[3064] = String.fromCharCode (0xffff);\r
-data[3065] = String.fromCharCode (0xffff);\r
-data[3066] = String.fromCharCode (0xffff);\r
-data[3067] = String.fromCharCode (0xffff);\r
-data[3068] = String.fromCharCode (0xffff);\r
-data[3069] = String.fromCharCode (0xffff);\r
-data[3070] = String.fromCharCode (0xffff);\r
-data[3071] = String.fromCharCode (0xffff);\r
-data[3072] = String.fromCharCode (0xffff);\r
-data[3073] = String.fromCharCode (0xffff);\r
-data[3074] = String.fromCharCode (0xffff);\r
-data[3075] = String.fromCharCode (0xffff);\r
-data[3076] = String.fromCharCode (0xffff);\r
-data[3077] = String.fromCharCode (0xffff);\r
-data[3078] = String.fromCharCode (0xffff);\r
-data[3079] = String.fromCharCode (0xffff);\r
-data[3080] = String.fromCharCode (0xffff);\r
-data[3081] = String.fromCharCode (0xffff);\r
-data[3082] = String.fromCharCode (0xffff);\r
-data[3083] = String.fromCharCode (0xffff);\r
-data[3084] = String.fromCharCode (0xffff);\r
-data[3085] = String.fromCharCode (0xffff);\r
-data[3086] = String.fromCharCode (0xffff);\r
-data[3087] = String.fromCharCode (0xffff);\r
-data[3088] = String.fromCharCode (0xffff);\r
-data[3089] = String.fromCharCode (0xffff);\r
-data[3090] = String.fromCharCode (0xffff);\r
-data[3091] = String.fromCharCode (0xffff);\r
-data[3092] = String.fromCharCode (0xffff);\r
-data[3093] = String.fromCharCode (0xffff);\r
-data[3094] = String.fromCharCode (0xffff);\r
-data[3095] = String.fromCharCode (0xffff);\r
-data[3096] = String.fromCharCode (0xffff);\r
-data[3097] = String.fromCharCode (0xffff);\r
-data[3098] = String.fromCharCode (0xffff);\r
-data[3099] = String.fromCharCode (0xffff);\r
-data[3100] = String.fromCharCode (0xffff);\r
-data[3101] = String.fromCharCode (0xffff);\r
-data[3102] = String.fromCharCode (0xffff);\r
-data[3103] = String.fromCharCode (0xffff);\r
-data[3104] = String.fromCharCode (0xffff);\r
-data[3105] = String.fromCharCode (0xffff);\r
-data[3106] = String.fromCharCode (0xffff);\r
-data[3107] = String.fromCharCode (0xffff);\r
-data[3108] = String.fromCharCode (0xffff);\r
-data[3109] = String.fromCharCode (0xffff);\r
-data[3110] = String.fromCharCode (0xffff);\r
-data[3111] = String.fromCharCode (0xffff);\r
-data[3112] = String.fromCharCode (0xffff);\r
-data[3113] = String.fromCharCode (0xffff);\r
-data[3114] = String.fromCharCode (0xffff);\r
-data[3115] = String.fromCharCode (0xffff);\r
-data[3116] = String.fromCharCode (0xffff);\r
-data[3117] = String.fromCharCode (0xffff);\r
-data[3118] = String.fromCharCode (0xffff);\r
-data[3119] = String.fromCharCode (0xffff);\r
-data[3120] = String.fromCharCode (0xffff);\r
-data[3121] = String.fromCharCode (0xffff);\r
-data[3122] = String.fromCharCode (0xffff);\r
-data[3123] = String.fromCharCode (0xffff);\r
-data[3124] = String.fromCharCode (0xffff);\r
-data[3125] = String.fromCharCode (0xffff);\r
-data[3126] = String.fromCharCode (0xffff);\r
-data[3127] = String.fromCharCode (0xffff);\r
-data[3128] = String.fromCharCode (0xffff);\r
-data[3129] = String.fromCharCode (0xffff);\r
-data[3130] = String.fromCharCode (0xffff);\r
-data[3131] = String.fromCharCode (0xffff);\r
-data[3132] = String.fromCharCode (0xffff);\r
-data[3133] = String.fromCharCode (0xffff);\r
-data[3134] = String.fromCharCode (0xffff);\r
-data[3135] = String.fromCharCode (0xffff);\r
-data[3136] = String.fromCharCode (0xffff);\r
-data[3137] = String.fromCharCode (0xffff);\r
-data[3138] = String.fromCharCode (0xffff);\r
-data[3139] = String.fromCharCode (0xffff);\r
-data[3140] = String.fromCharCode (0xffff);\r
-data[3141] = String.fromCharCode (0xffff);\r
-data[3142] = String.fromCharCode (0xffff);\r
-data[3143] = String.fromCharCode (0xffff);\r
-data[3144] = String.fromCharCode (0xffff);\r
-data[3145] = String.fromCharCode (0xffff);\r
-data[3146] = String.fromCharCode (0xffff);\r
-data[3147] = String.fromCharCode (0xffff);\r
-data[3148] = String.fromCharCode (0xffff);\r
-data[3149] = String.fromCharCode (0xffff);\r
-data[3150] = String.fromCharCode (0xffff);\r
-data[3151] = String.fromCharCode (0xffff);\r
-data[3152] = String.fromCharCode (0xffff);\r
-data[3153] = String.fromCharCode (0xffff);\r
-data[3154] = String.fromCharCode (0xffff);\r
-data[3155] = String.fromCharCode (0xffff);\r
-data[3156] = String.fromCharCode (0xffff);\r
-data[3157] = String.fromCharCode (0xffff);\r
-data[3158] = String.fromCharCode (0xffff);\r
-data[3159] = String.fromCharCode (0xffff);\r
-data[3160] = String.fromCharCode (0xffff);\r
-data[3161] = String.fromCharCode (0xffff);\r
-data[3162] = String.fromCharCode (0xffff);\r
-data[3163] = String.fromCharCode (0xffff);\r
-data[3164] = String.fromCharCode (0xffff);\r
-data[3165] = String.fromCharCode (0xffff);\r
-data[3166] = String.fromCharCode (0xffff);\r
-data[3167] = String.fromCharCode (0xffff);\r
-data[3168] = String.fromCharCode (0xffff);\r
-data[3169] = String.fromCharCode (0xffff);\r
-data[3170] = String.fromCharCode (0xffff);\r
-data[3171] = String.fromCharCode (0xffff);\r
-data[3172] = String.fromCharCode (0xffff);\r
-data[3173] = String.fromCharCode (0xffff);\r
-data[3174] = String.fromCharCode (0xffff);\r
-data[3175] = String.fromCharCode (0xffff);\r
-data[3176] = String.fromCharCode (0xffff);\r
-data[3177] = String.fromCharCode (0xffff);\r
-data[3178] = String.fromCharCode (0xffff);\r
-data[3179] = String.fromCharCode (0xffff);\r
-data[3180] = String.fromCharCode (0xffff);\r
-data[3181] = String.fromCharCode (0xffff);\r
-data[3182] = String.fromCharCode (0xffff);\r
-data[3183] = String.fromCharCode (0xffff);\r
-data[3184] = String.fromCharCode (0xffff);\r
-data[3185] = String.fromCharCode (0xffff);\r
-data[3186] = String.fromCharCode (0xffff);\r
-data[3187] = String.fromCharCode (0xffff);\r
-data[3188] = String.fromCharCode (0xffff);\r
-data[3189] = String.fromCharCode (0xffff);\r
-data[3190] = String.fromCharCode (0xffff);\r
-data[3191] = String.fromCharCode (0xffff);\r
-data[3192] = String.fromCharCode (0xffff);\r
-data[3193] = String.fromCharCode (0xffff);\r
-data[3194] = String.fromCharCode (0xffff);\r
-data[3195] = String.fromCharCode (0xffff);\r
-data[3196] = String.fromCharCode (0xffff);\r
-data[3197] = String.fromCharCode (0xffff);\r
-data[3198] = String.fromCharCode (0xffff);\r
-data[3199] = String.fromCharCode (0xffff);\r
-data[3200] = String.fromCharCode (0xffff);\r
-data[3201] = String.fromCharCode (0xffff);\r
-data[3202] = String.fromCharCode (0xffff);\r
-data[3203] = String.fromCharCode (0xffff);\r
-data[3204] = String.fromCharCode (0xffff);\r
-data[3205] = String.fromCharCode (0xffff);\r
-data[3206] = String.fromCharCode (0xffff);\r
-data[3207] = String.fromCharCode (0xffff);\r
-data[3208] = String.fromCharCode (0xffff);\r
-data[3209] = String.fromCharCode (0xffff);\r
-data[3210] = String.fromCharCode (0xffff);\r
-data[3211] = String.fromCharCode (0xffff);\r
-data[3212] = String.fromCharCode (0xffff);\r
-data[3213] = String.fromCharCode (0xffff);\r
-data[3214] = String.fromCharCode (0xffff);\r
-data[3215] = String.fromCharCode (0xffff);\r
-data[3216] = String.fromCharCode (0xffff);\r
-data[3217] = String.fromCharCode (0xffff);\r
-data[3218] = String.fromCharCode (0xffff);\r
-data[3219] = String.fromCharCode (0xffff);\r
-data[3220] = String.fromCharCode (0xffff);\r
-data[3221] = String.fromCharCode (0xffff);\r
-data[3222] = String.fromCharCode (0xffff);\r
-data[3223] = String.fromCharCode (0xffff);\r
-data[3224] = String.fromCharCode (0xffff);\r
-data[3225] = String.fromCharCode (0xffff);\r
-data[3226] = String.fromCharCode (0xffff);\r
-data[3227] = String.fromCharCode (0xffff);\r
-data[3228] = String.fromCharCode (0xffff);\r
-data[3229] = String.fromCharCode (0xffff);\r
-data[3230] = String.fromCharCode (0xffff);\r
-data[3231] = String.fromCharCode (0xffff);\r
-data[3232] = String.fromCharCode (0xffff);\r
-data[3233] = String.fromCharCode (0xffff);\r
-data[3234] = String.fromCharCode (0xffff);\r
-data[3235] = String.fromCharCode (0xffff);\r
-data[3236] = String.fromCharCode (0xffff);\r
-data[3237] = String.fromCharCode (0xffff);\r
-data[3238] = String.fromCharCode (0xffff);\r
-data[3239] = String.fromCharCode (0xffff);\r
-data[3240] = String.fromCharCode (0xffff);\r
-data[3241] = String.fromCharCode (0xffff);\r
-data[3242] = String.fromCharCode (0xffff);\r
-data[3243] = String.fromCharCode (0xffff);\r
-data[3244] = String.fromCharCode (0xffff);\r
-data[3245] = String.fromCharCode (0xffff);\r
-data[3246] = String.fromCharCode (0xffff);\r
-data[3247] = String.fromCharCode (0xffff);\r
-data[3248] = String.fromCharCode (0xffff);\r
-data[3249] = String.fromCharCode (0xffff);\r
-data[3250] = String.fromCharCode (0xffff);\r
-data[3251] = String.fromCharCode (0xffff);\r
-data[3252] = String.fromCharCode (0xffff);\r
-data[3253] = String.fromCharCode (0xffff);\r
-data[3254] = String.fromCharCode (0xffff);\r
-data[3255] = String.fromCharCode (0xffff);\r
-data[3256] = String.fromCharCode (0xffff);\r
-data[3257] = String.fromCharCode (0xffff);\r
-data[3258] = String.fromCharCode (0xffff);\r
-data[3259] = String.fromCharCode (0xffff);\r
-data[3260] = String.fromCharCode (0xffff);\r
-data[3261] = String.fromCharCode (0xffff);\r
-data[3262] = String.fromCharCode (0xffff);\r
-data[3263] = String.fromCharCode (0xffff);\r
-data[3264] = String.fromCharCode (0xffff);\r
-data[3265] = String.fromCharCode (0xffff);\r
-data[3266] = String.fromCharCode (0xffff);\r
-data[3267] = String.fromCharCode (0xffff);\r
-data[3268] = String.fromCharCode (0xffff);\r
-data[3269] = String.fromCharCode (0xffff);\r
-data[3270] = String.fromCharCode (0xffff);\r
-data[3271] = String.fromCharCode (0xffff);\r
-data[3272] = String.fromCharCode (0xffff);\r
-data[3273] = String.fromCharCode (0xffff);\r
-data[3274] = String.fromCharCode (0xffff);\r
-data[3275] = String.fromCharCode (0xffff);\r
-data[3276] = String.fromCharCode (0xffff);\r
-data[3277] = String.fromCharCode (0xffff);\r
-data[3278] = String.fromCharCode (0xffff);\r
-data[3279] = String.fromCharCode (0xffff);\r
-data[3280] = String.fromCharCode (0xffff);\r
-data[3281] = String.fromCharCode (0xffff);\r
-data[3282] = String.fromCharCode (0xffff);\r
-data[3283] = String.fromCharCode (0xffff);\r
-data[3284] = String.fromCharCode (0xffff);\r
-data[3285] = String.fromCharCode (0xffff);\r
-data[3286] = String.fromCharCode (0xffff);\r
-data[3287] = String.fromCharCode (0xffff);\r
-data[3288] = String.fromCharCode (0xffff);\r
-data[3289] = String.fromCharCode (0xffff);\r
-data[3290] = String.fromCharCode (0xffff);\r
-data[3291] = String.fromCharCode (0xffff);\r
-data[3292] = String.fromCharCode (0xffff);\r
-data[3293] = String.fromCharCode (0xffff);\r
-data[3294] = String.fromCharCode (0xffff);\r
-data[3295] = String.fromCharCode (0xffff);\r
-data[3296] = String.fromCharCode (0xffff);\r
-data[3297] = String.fromCharCode (0xffff);\r
-data[3298] = String.fromCharCode (0xffff);\r
-data[3299] = String.fromCharCode (0xffff);\r
-data[3300] = String.fromCharCode (0xffff);\r
-data[3301] = String.fromCharCode (0xffff);\r
-data[3302] = String.fromCharCode (0xffff);\r
-data[3303] = String.fromCharCode (0xffff);\r
-data[3304] = String.fromCharCode (0xffff);\r
-data[3305] = String.fromCharCode (0xffff);\r
-data[3306] = String.fromCharCode (0xffff);\r
-data[3307] = String.fromCharCode (0xffff);\r
-data[3308] = String.fromCharCode (0xffff);\r
-data[3309] = String.fromCharCode (0xffff);\r
-data[3310] = String.fromCharCode (0xffff);\r
-data[3311] = String.fromCharCode (0xffff);\r
-data[3312] = String.fromCharCode (0xffff);\r
-data[3313] = String.fromCharCode (0xffff);\r
-data[3314] = String.fromCharCode (0xffff);\r
-data[3315] = String.fromCharCode (0xffff);\r
-data[3316] = String.fromCharCode (0xffff);\r
-data[3317] = String.fromCharCode (0xffff);\r
-data[3318] = String.fromCharCode (0xffff);\r
-data[3319] = String.fromCharCode (0xffff);\r
-data[3320] = String.fromCharCode (0xffff);\r
-data[3321] = String.fromCharCode (0xffff);\r
-data[3322] = String.fromCharCode (0xffff);\r
-data[3323] = String.fromCharCode (0xffff);\r
-data[3324] = String.fromCharCode (0xffff);\r
-data[3325] = String.fromCharCode (0xffff);\r
-data[3326] = String.fromCharCode (0xffff);\r
-data[3327] = String.fromCharCode (0xffff);\r
-data[3328] = String.fromCharCode (0xffff);\r
-data[3329] = String.fromCharCode (0xffff);\r
-data[3330] = String.fromCharCode (0xffff);\r
-data[3331] = String.fromCharCode (0xffff);\r
-data[3332] = String.fromCharCode (0xffff);\r
-data[3333] = String.fromCharCode (0xffff);\r
-data[3334] = String.fromCharCode (0xffff);\r
-data[3335] = String.fromCharCode (0xffff);\r
-data[3336] = String.fromCharCode (0xffff);\r
-data[3337] = String.fromCharCode (0xffff);\r
-data[3338] = String.fromCharCode (0xffff);\r
-data[3339] = String.fromCharCode (0xffff);\r
-data[3340] = String.fromCharCode (0xffff);\r
-data[3341] = String.fromCharCode (0xffff);\r
-data[3342] = String.fromCharCode (0xffff);\r
-data[3343] = String.fromCharCode (0xffff);\r
-data[3344] = String.fromCharCode (0xffff);\r
-data[3345] = String.fromCharCode (0xffff);\r
-data[3346] = String.fromCharCode (0xffff);\r
-data[3347] = String.fromCharCode (0xffff);\r
-data[3348] = String.fromCharCode (0xffff);\r
-data[3349] = String.fromCharCode (0xffff);\r
-data[3350] = String.fromCharCode (0xffff);\r
-data[3351] = String.fromCharCode (0xffff);\r
-data[3352] = String.fromCharCode (0xffff);\r
-data[3353] = String.fromCharCode (0xffff);\r
-data[3354] = String.fromCharCode (0xffff);\r
-data[3355] = String.fromCharCode (0xffff);\r
-data[3356] = String.fromCharCode (0xffff);\r
-data[3357] = String.fromCharCode (0xffff);\r
-data[3358] = String.fromCharCode (0xffff);\r
-data[3359] = String.fromCharCode (0xffff);\r
-data[3360] = String.fromCharCode (0xffff);\r
-data[3361] = String.fromCharCode (0xffff);\r
-data[3362] = String.fromCharCode (0xffff);\r
-data[3363] = String.fromCharCode (0xffff);\r
-data[3364] = String.fromCharCode (0xffff);\r
-data[3365] = String.fromCharCode (0xffff);\r
-data[3366] = String.fromCharCode (0xffff);\r
-data[3367] = String.fromCharCode (0xffff);\r
-data[3368] = String.fromCharCode (0xffff);\r
-data[3369] = String.fromCharCode (0xffff);\r
-data[3370] = String.fromCharCode (0xffff);\r
-data[3371] = String.fromCharCode (0xffff);\r
-data[3372] = String.fromCharCode (0xffff);\r
-data[3373] = String.fromCharCode (0xffff);\r
-data[3374] = String.fromCharCode (0xffff);\r
-data[3375] = String.fromCharCode (0xffff);\r
-data[3376] = String.fromCharCode (0xffff);\r
-data[3377] = String.fromCharCode (0xffff);\r
-data[3378] = String.fromCharCode (0xffff);\r
-data[3379] = String.fromCharCode (0xffff);\r
-data[3380] = String.fromCharCode (0xffff);\r
-data[3381] = String.fromCharCode (0xffff);\r
-data[3382] = String.fromCharCode (0xffff);\r
-data[3383] = String.fromCharCode (0xffff);\r
-data[3384] = String.fromCharCode (0xffff);\r
-data[3385] = String.fromCharCode (0xffff);\r
-data[3386] = String.fromCharCode (0xffff);\r
-data[3387] = String.fromCharCode (0xffff);\r
-data[3388] = String.fromCharCode (0xffff);\r
-data[3389] = String.fromCharCode (0xffff);\r
-data[3390] = String.fromCharCode (0xffff);\r
-data[3391] = String.fromCharCode (0xffff);\r
-data[3392] = String.fromCharCode (0xffff);\r
-data[3393] = String.fromCharCode (0xffff);\r
-data[3394] = String.fromCharCode (0xffff);\r
-data[3395] = String.fromCharCode (0xffff);\r
-data[3396] = String.fromCharCode (0xffff);\r
-data[3397] = String.fromCharCode (0xffff);\r
-data[3398] = String.fromCharCode (0xffff);\r
-data[3399] = String.fromCharCode (0xffff);\r
-data[3400] = String.fromCharCode (0xffff);\r
-data[3401] = String.fromCharCode (0xffff);\r
-data[3402] = String.fromCharCode (0xffff);\r
-data[3403] = String.fromCharCode (0xffff);\r
-data[3404] = String.fromCharCode (0xffff);\r
-data[3405] = String.fromCharCode (0xffff);\r
-data[3406] = String.fromCharCode (0xffff);\r
-data[3407] = String.fromCharCode (0xffff);\r
-data[3408] = String.fromCharCode (0xffff);\r
-data[3409] = String.fromCharCode (0xffff);\r
-data[3410] = String.fromCharCode (0xffff);\r
-data[3411] = String.fromCharCode (0xffff);\r
-data[3412] = String.fromCharCode (0xffff);\r
-data[3413] = String.fromCharCode (0xffff);\r
-data[3414] = String.fromCharCode (0xffff);\r
-data[3415] = String.fromCharCode (0xffff);\r
-data[3416] = String.fromCharCode (0xffff);\r
-data[3417] = String.fromCharCode (0xffff);\r
-data[3418] = String.fromCharCode (0xffff);\r
-data[3419] = String.fromCharCode (0xffff);\r
-data[3420] = String.fromCharCode (0xffff);\r
-data[3421] = String.fromCharCode (0xffff);\r
-data[3422] = String.fromCharCode (0xffff);\r
-data[3423] = String.fromCharCode (0xffff);\r
-data[3424] = String.fromCharCode (0xffff);\r
-data[3425] = String.fromCharCode (0xffff);\r
-data[3426] = String.fromCharCode (0xffff);\r
-data[3427] = String.fromCharCode (0xffff);\r
-data[3428] = String.fromCharCode (0xffff);\r
-data[3429] = String.fromCharCode (0xffff);\r
-data[3430] = String.fromCharCode (0xffff);\r
-data[3431] = String.fromCharCode (0xffff);\r
-data[3432] = String.fromCharCode (0xffff);\r
-data[3433] = String.fromCharCode (0xffff);\r
-data[3434] = String.fromCharCode (0xffff);\r
-data[3435] = String.fromCharCode (0xffff);\r
-data[3436] = String.fromCharCode (0xffff);\r
-data[3437] = String.fromCharCode (0xffff);\r
-data[3438] = String.fromCharCode (0xffff);\r
-data[3439] = String.fromCharCode (0xffff);\r
-data[3440] = String.fromCharCode (0xffff);\r
-data[3441] = String.fromCharCode (0xffff);\r
-data[3442] = String.fromCharCode (0xffff);\r
-data[3443] = String.fromCharCode (0xffff);\r
-data[3444] = String.fromCharCode (0xffff);\r
-data[3445] = String.fromCharCode (0xffff);\r
-data[3446] = String.fromCharCode (0xffff);\r
-data[3447] = String.fromCharCode (0xffff);\r
-data[3448] = String.fromCharCode (0xffff);\r
-data[3449] = String.fromCharCode (0xffff);\r
-data[3450] = String.fromCharCode (0x000f);\r
-data[3984] = String.fromCharCode (0xffff);\r
-data[3985] = String.fromCharCode (0xffff);\r
-data[3986] = String.fromCharCode (0xffff);\r
-data[3987] = String.fromCharCode (0xffff);\r
-data[3988] = String.fromCharCode (0xffff);\r
-data[3989] = String.fromCharCode (0xffff);\r
-data[3990] = String.fromCharCode (0xffff);\r
-data[3991] = String.fromCharCode (0xffff);\r
-data[3992] = String.fromCharCode (0xffff);\r
-data[3993] = String.fromCharCode (0xffff);\r
-data[3994] = String.fromCharCode (0xffff);\r
-data[3995] = String.fromCharCode (0xffff);\r
-data[3996] = String.fromCharCode (0xffff);\r
-data[3997] = String.fromCharCode (0xffff);\r
-data[3998] = String.fromCharCode (0xffff);\r
-data[3999] = String.fromCharCode (0xffff);\r
-data[4000] = String.fromCharCode (0xffff);\r
-data[4001] = String.fromCharCode (0xffff);\r
-data[4002] = String.fromCharCode (0x3fff);\r
-data[4016] = String.fromCharCode (0x007f);\r
-data[4017] = String.fromCharCode (0x80f8);\r
-data[4018] = String.fromCharCode (0xfdff);\r
-data[4019] = String.fromCharCode (0x5f7f);\r
-data[4020] = String.fromCharCode (0xffdb);\r
-data[4021] = String.fromCharCode (0xffff);\r
-data[4022] = String.fromCharCode (0xffff);\r
-data[4023] = String.fromCharCode (0xffff);\r
-data[4024] = String.fromCharCode (0xffff);\r
-data[4025] = String.fromCharCode (0xffff);\r
-data[4026] = String.fromCharCode (0xffff);\r
-data[4027] = String.fromCharCode (0x0003);\r
-data[4029] = String.fromCharCode (0xfff8);\r
-data[4030] = String.fromCharCode (0xffff);\r
-data[4031] = String.fromCharCode (0xffff);\r
-data[4032] = String.fromCharCode (0xffff);\r
-data[4033] = String.fromCharCode (0xffff);\r
-data[4034] = String.fromCharCode (0xffff);\r
-data[4035] = String.fromCharCode (0xffff);\r
-data[4036] = String.fromCharCode (0xffff);\r
-data[4037] = String.fromCharCode (0xffff);\r
-data[4038] = String.fromCharCode (0xffff);\r
-data[4039] = String.fromCharCode (0xffff);\r
-data[4040] = String.fromCharCode (0xffff);\r
-data[4041] = String.fromCharCode (0xffff);\r
-data[4042] = String.fromCharCode (0xffff);\r
-data[4043] = String.fromCharCode (0xffff);\r
-data[4044] = String.fromCharCode (0xffff);\r
-data[4045] = String.fromCharCode (0xffff);\r
-data[4046] = String.fromCharCode (0xffff);\r
-data[4047] = String.fromCharCode (0xffff);\r
-data[4048] = String.fromCharCode (0xffff);\r
-data[4049] = String.fromCharCode (0xffff);\r
-data[4050] = String.fromCharCode (0xffff);\r
-data[4051] = String.fromCharCode (0x3fff);\r
-data[4053] = String.fromCharCode (0xffff);\r
-data[4054] = String.fromCharCode (0xffff);\r
-data[4055] = String.fromCharCode (0xffff);\r
-data[4056] = String.fromCharCode (0xffff);\r
-data[4057] = String.fromCharCode (0xfffc);\r
-data[4058] = String.fromCharCode (0xffff);\r
-data[4059] = String.fromCharCode (0xffff);\r
-data[4060] = String.fromCharCode (0x00ff);\r
-data[4063] = String.fromCharCode (0x0fff);\r
-data[4071] = String.fromCharCode (0xffd7);\r
-data[4072] = String.fromCharCode (0xffff);\r
-data[4073] = String.fromCharCode (0xffff);\r
-data[4074] = String.fromCharCode (0xffff);\r
-data[4075] = String.fromCharCode (0xffff);\r
-data[4076] = String.fromCharCode (0xffff);\r
-data[4077] = String.fromCharCode (0xffff);\r
-data[4078] = String.fromCharCode (0xffff);\r
-data[4079] = String.fromCharCode (0x1fff);\r
-data[4082] = String.fromCharCode (0xfffe);\r
-data[4083] = String.fromCharCode (0x07ff);\r
-data[4084] = String.fromCharCode (0xfffe);\r
-data[4085] = String.fromCharCode (0x07ff);\r
-data[4086] = String.fromCharCode (0xffc0);\r
-data[4087] = String.fromCharCode (0xffff);\r
-data[4088] = String.fromCharCode (0xffff);\r
-data[4089] = String.fromCharCode (0xffff);\r
-data[4090] = String.fromCharCode (0xffff);\r
-data[4091] = String.fromCharCode (0x7fff);\r
-data[4092] = String.fromCharCode (0xfcfc);\r
-data[4093] = String.fromCharCode (0x1cfc);\r
-data[4100] = String.fromCharCode (0xfffe);\r
-data[4101] = String.fromCharCode (0x07ff);\r
-data[4102] = String.fromCharCode (0xfffe);\r
-data[4103] = String.fromCharCode (0x07ff);\r
-data[4106] = String.fromCharCode (0x0400);\r
-data[4107] = String.fromCharCode (0x0420);\r
-data[4108] = String.fromCharCode (0xffff);\r
-data[4109] = String.fromCharCode (0xff7f);\r
-data[4110] = String.fromCharCode (0xffff);\r
-data[4111] = String.fromCharCode (0xff7f);\r
-data[4112] = String.fromCharCode (0xffff);\r
-data[4113] = String.fromCharCode (0xffff);\r
-data[4114] = String.fromCharCode (0xffff);\r
-data[4115] = String.fromCharCode (0xffff);\r
-data[4116] = String.fromCharCode (0xffff);\r
-data[4117] = String.fromCharCode (0xffff);\r
-data[4118] = String.fromCharCode (0xffff);\r
-data[4119] = String.fromCharCode (0xffff);\r
-data[4120] = String.fromCharCode (0xffff);\r
-data[4121] = String.fromCharCode (0xffff);\r
-data[4122] = String.fromCharCode (0xffff);\r
-data[4123] = String.fromCharCode (0xffff);\r
-data[4124] = String.fromCharCode (0xffff);\r
-data[4125] = String.fromCharCode (0xffff);\r
-data[4126] = String.fromCharCode (0xffff);\r
-data[4127] = String.fromCharCode (0xfc3f);\r
-data[4128] = String.fromCharCode (0xffff);\r
-data[4129] = String.fromCharCode (0x00ff);\r
-data[4133] = String.fromCharCode (0xffff);\r
-data[4134] = String.fromCharCode (0xffff);\r
-data[4135] = String.fromCharCode (0xffff);\r
-data[4136] = String.fromCharCode (0xffff);\r
-data[4137] = String.fromCharCode (0xffff);\r
-data[4138] = String.fromCharCode (0x01ff);\r
-data[4139] = String.fromCharCode (0xf9ff);\r
-data[4140] = String.fromCharCode (0x0003);\r
-data[4141] = String.fromCharCode (0x0003);\r
-data[4142] = String.fromCharCode (0x001f);\r
-data[4151] = String.fromCharCode (0x0400);\r
-data[4152] = String.fromCharCode (0xd740);\r
-data[4153] = String.fromCharCode (0xffff);\r
-data[4154] = String.fromCharCode (0xfffb);\r
-data[4155] = String.fromCharCode (0xffff);\r
-data[4156] = String.fromCharCode (0x7fff);\r
-data[4157] = String.fromCharCode (0x547f);\r
-data[4158] = String.fromCharCode (0x00fd);\r
-});\r
-c$.white_f = Clazz.defineMethod (c$, "white_f", \r
-function () {\r
-var data =  Clazz.newCharArray (4159, '\0');\r
-com.stevesoft.pat.Bits.white =  new com.stevesoft.pat.Bits (data);\r
-data[0] = String.fromCharCode (0x3e00);\r
-data[1] = String.fromCharCode (0xf000);\r
-data[2] = String.fromCharCode (0x0001);\r
-data[512] = String.fromCharCode (0x0fff);\r
-data[514] = String.fromCharCode (0x0300);\r
-data[768] = String.fromCharCode (0x0001);\r
-data[4096] = String.fromCharCode (0x3e00);\r
-data[4097] = String.fromCharCode (0xf000);\r
-data[4098] = String.fromCharCode (0x0001);\r
-});\r
-c$.punct_f = Clazz.defineMethod (c$, "punct_f", \r
-function () {\r
-var data =  Clazz.newCharArray (4159, '\0');\r
-com.stevesoft.pat.Bits.punct =  new com.stevesoft.pat.Bits (data);\r
-data[2] = String.fromCharCode (0xf7ee);\r
-data[3] = String.fromCharCode (0x8c00);\r
-data[4] = String.fromCharCode (0x0001);\r
-data[5] = String.fromCharCode (0xb800);\r
-data[7] = String.fromCharCode (0x2800);\r
-data[10] = String.fromCharCode (0x2802);\r
-data[11] = String.fromCharCode (0x8880);\r
-data[55] = String.fromCharCode (0x4030);\r
-data[56] = String.fromCharCode (0x0080);\r
-data[85] = String.fromCharCode (0xfc00);\r
-data[88] = String.fromCharCode (0x0200);\r
-data[91] = String.fromCharCode (0x4000);\r
-data[92] = String.fromCharCode (0x0009);\r
-data[95] = String.fromCharCode (0x0018);\r
-data[96] = String.fromCharCode (0x1000);\r
-data[97] = String.fromCharCode (0x8800);\r
-data[102] = String.fromCharCode (0x3c00);\r
-data[109] = String.fromCharCode (0x0010);\r
-data[150] = '0';\r
-data[151] = String.fromCharCode (0x0001);\r
-data[226] = String.fromCharCode (0x8000);\r
-data[229] = String.fromCharCode (0x0c00);\r
-data[234] = String.fromCharCode (0x8000);\r
-data[240] = String.fromCharCode (0xfff0);\r
-data[241] = String.fromCharCode (0x0007);\r
-data[243] = String.fromCharCode (0x3c00);\r
-data[248] = String.fromCharCode (0x0020);\r
-data[271] = String.fromCharCode (0x0800);\r
-data[513] = String.fromCharCode (0xffff);\r
-data[514] = String.fromCharCode (0x00ff);\r
-data[515] = String.fromCharCode (0xffff);\r
-data[516] = 'o';\r
-data[519] = String.fromCharCode (0x6000);\r
-data[520] = String.fromCharCode (0x6000);\r
-data[562] = String.fromCharCode (0x0600);\r
-data[768] = String.fromCharCode (0xff4e);\r
-data[769] = String.fromCharCode (0xfff3);\r
-data[771] = String.fromCharCode (0x0001);\r
-data[783] = String.fromCharCode (0x0800);\r
-data[4051] = String.fromCharCode (0xc000);\r
-data[4067] = String.fromCharCode (0xffff);\r
-data[4068] = String.fromCharCode (0xfe1f);\r
-data[4069] = String.fromCharCode (0xfff7);\r
-data[4070] = String.fromCharCode (0x0d0b);\r
-data[4080] = String.fromCharCode (0xf7ee);\r
-data[4081] = String.fromCharCode (0x8c00);\r
-data[4082] = String.fromCharCode (0x0001);\r
-data[4083] = String.fromCharCode (0xb800);\r
-data[4085] = String.fromCharCode (0x2800);\r
-data[4086] = String.fromCharCode (0x003e);\r
-data[4098] = String.fromCharCode (0xf7ee);\r
-data[4099] = String.fromCharCode (0x8c00);\r
-data[4100] = String.fromCharCode (0x0001);\r
-data[4101] = String.fromCharCode (0xb800);\r
-data[4103] = String.fromCharCode (0x2800);\r
-data[4106] = String.fromCharCode (0x2802);\r
-data[4107] = String.fromCharCode (0x8880);\r
-data[4151] = String.fromCharCode (0x4030);\r
-data[4152] = String.fromCharCode (0x0080);\r
-});\r
-Clazz.defineStatics (c$,\r
-"upper", null,\r
-"lower", null,\r
-"title", null,\r
-"currency", null,\r
-"decimal_digit", null,\r
-"math", null,\r
-"letter", null,\r
-"white", null,\r
-"punct", null);\r
+Clazz.declarePackage ("com.stevesoft.pat");
+c$ = Clazz.decorateAsClass (function () {
+this.carray = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Bits");
+Clazz.makeConstructor (c$, 
+function (carray) {
+this.carray = carray;
+}, "~A");
+Clazz.defineMethod (c$, "get", 
+function (i) {
+return ((this.carray[i >> 4]).charCodeAt (0) & (1 << (i & 15))) != 0;
+}, "~N");
+Clazz.defineMethod (c$, "set", 
+function (i, b) {
+if (b) {
+this.carray[i >> 4] = String.fromCharCode ((this.carray[i >> 4]).charCodeAt (0) | ((String.fromCharCode (1)).charCodeAt (0) << (i & 15)));
+} else {
+this.carray[i >> 4] = String.fromCharCode ((this.carray[i >> 4]).charCodeAt (0) & (String.fromCharCode (~(1 << (i & 15)))).charCodeAt (0));
+}}, "~N,~B");
+c$.upper_f = Clazz.defineMethod (c$, "upper_f", 
+function () {
+var data =  Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.upper =  new com.stevesoft.pat.Bits (data);
+data[4] = String.fromCharCode (0xfffe);
+data[5] = String.fromCharCode (0x07ff);
+data[12] = String.fromCharCode (0xffff);
+data[13] = String.fromCharCode (0x7f7f);
+data[16] = String.fromCharCode (0x5555);
+data[17] = String.fromCharCode (0x5555);
+data[18] = String.fromCharCode (0x5555);
+data[19] = String.fromCharCode (0xaa55);
+data[20] = String.fromCharCode (0x54aa);
+data[21] = String.fromCharCode (0x5555);
+data[22] = String.fromCharCode (0x5555);
+data[23] = String.fromCharCode (0x2b55);
+data[24] = String.fromCharCode (0xced6);
+data[25] = String.fromCharCode (0xb1db);
+data[26] = String.fromCharCode (0xd2d5);
+data[27] = String.fromCharCode (0x11ae);
+data[28] = String.fromCharCode (0xa490);
+data[29] = String.fromCharCode (0x4aaa);
+data[30] = String.fromCharCode (0x5555);
+data[31] = String.fromCharCode (0x5412);
+data[32] = String.fromCharCode (0x5555);
+data[33] = 'U';
+data[56] = String.fromCharCode (0xd740);
+data[57] = String.fromCharCode (0xfffe);
+data[58] = String.fromCharCode (0x0ffb);
+data[61] = String.fromCharCode (0x541c);
+data[62] = String.fromCharCode (0x5555);
+data[64] = String.fromCharCode (0xdffe);
+data[65] = String.fromCharCode (0xffff);
+data[66] = String.fromCharCode (0xffff);
+data[70] = String.fromCharCode (0x5555);
+data[71] = String.fromCharCode (0x5555);
+data[72] = String.fromCharCode (0x0001);
+data[73] = String.fromCharCode (0x5555);
+data[74] = String.fromCharCode (0x5555);
+data[75] = String.fromCharCode (0x5555);
+data[76] = String.fromCharCode (0x088a);
+data[77] = String.fromCharCode (0x5555);
+data[78] = String.fromCharCode (0x4555);
+data[79] = String.fromCharCode (0x0115);
+data[83] = String.fromCharCode (0xfffe);
+data[84] = String.fromCharCode (0xffff);
+data[85] = String.fromCharCode (0x007f);
+data[266] = String.fromCharCode (0xffff);
+data[267] = String.fromCharCode (0xffff);
+data[268] = String.fromCharCode (0x003f);
+data[480] = String.fromCharCode (0x5555);
+data[481] = String.fromCharCode (0x5555);
+data[482] = String.fromCharCode (0x5555);
+data[483] = String.fromCharCode (0x5555);
+data[484] = String.fromCharCode (0x5555);
+data[485] = String.fromCharCode (0x5555);
+data[486] = String.fromCharCode (0x5555);
+data[487] = String.fromCharCode (0x5555);
+data[488] = String.fromCharCode (0x5555);
+data[489] = String.fromCharCode (0x0015);
+data[490] = String.fromCharCode (0x5555);
+data[491] = String.fromCharCode (0x5555);
+data[492] = String.fromCharCode (0x5555);
+data[493] = String.fromCharCode (0x5555);
+data[494] = String.fromCharCode (0x5555);
+data[495] = String.fromCharCode (0x0155);
+data[496] = String.fromCharCode (0xff00);
+data[497] = String.fromCharCode (0x3f00);
+data[498] = String.fromCharCode (0xff00);
+data[499] = String.fromCharCode (0xff00);
+data[500] = String.fromCharCode (0x3f00);
+data[501] = String.fromCharCode (0xaa00);
+data[502] = String.fromCharCode (0xff00);
+data[504] = String.fromCharCode (0xff00);
+data[505] = String.fromCharCode (0xff00);
+data[506] = String.fromCharCode (0xff00);
+data[507] = String.fromCharCode (0x5f00);
+data[508] = String.fromCharCode (0x1f00);
+data[509] = String.fromCharCode (0x0f00);
+data[510] = String.fromCharCode (0x1f00);
+data[511] = String.fromCharCode (0x1f00);
+data[528] = String.fromCharCode (0x3884);
+data[529] = String.fromCharCode (0x3f27);
+data[530] = String.fromCharCode (0x3d50);
+data[531] = String.fromCharCode (0x000b);
+data[4082] = String.fromCharCode (0xfffe);
+data[4083] = String.fromCharCode (0x07ff);
+data[4100] = String.fromCharCode (0xfffe);
+data[4101] = String.fromCharCode (0x07ff);
+data[4108] = String.fromCharCode (0xffff);
+data[4109] = String.fromCharCode (0x7f7f);
+data[4112] = String.fromCharCode (0x5555);
+data[4113] = String.fromCharCode (0x5555);
+data[4114] = String.fromCharCode (0x5555);
+data[4115] = String.fromCharCode (0xaa55);
+data[4116] = String.fromCharCode (0x54aa);
+data[4117] = String.fromCharCode (0x5555);
+data[4118] = String.fromCharCode (0x5555);
+data[4119] = String.fromCharCode (0x2b55);
+data[4120] = String.fromCharCode (0xced6);
+data[4121] = String.fromCharCode (0xb1db);
+data[4122] = String.fromCharCode (0xd2d5);
+data[4123] = String.fromCharCode (0x11ae);
+data[4124] = String.fromCharCode (0xa490);
+data[4125] = String.fromCharCode (0x4aaa);
+data[4126] = String.fromCharCode (0x5555);
+data[4127] = String.fromCharCode (0x5412);
+data[4128] = String.fromCharCode (0x5555);
+data[4129] = 'U';
+data[4152] = String.fromCharCode (0xd740);
+data[4153] = String.fromCharCode (0xfffe);
+data[4154] = String.fromCharCode (0x0ffb);
+data[4157] = String.fromCharCode (0x541c);
+data[4158] = 'U';
+});
+c$.lower_f = Clazz.defineMethod (c$, "lower_f", 
+function () {
+var data =  Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.lower =  new com.stevesoft.pat.Bits (data);
+data[6] = String.fromCharCode (0xfffe);
+data[7] = String.fromCharCode (0x07ff);
+data[10] = String.fromCharCode (0x0400);
+data[11] = String.fromCharCode (0x0420);
+data[13] = String.fromCharCode (0x8000);
+data[14] = String.fromCharCode (0xffff);
+data[15] = String.fromCharCode (0xff7f);
+data[16] = String.fromCharCode (0xaaaa);
+data[17] = String.fromCharCode (0xaaaa);
+data[18] = String.fromCharCode (0xaaaa);
+data[19] = String.fromCharCode (0x55aa);
+data[20] = String.fromCharCode (0xab55);
+data[21] = String.fromCharCode (0xaaaa);
+data[22] = String.fromCharCode (0xaaaa);
+data[23] = String.fromCharCode (0xd4aa);
+data[24] = String.fromCharCode (0x3129);
+data[25] = String.fromCharCode (0x4e24);
+data[26] = String.fromCharCode (0x292a);
+data[27] = String.fromCharCode (0x2651);
+data[28] = String.fromCharCode (0x5240);
+data[29] = String.fromCharCode (0xb555);
+data[30] = String.fromCharCode (0xaaaa);
+data[31] = String.fromCharCode (0xa829);
+data[32] = String.fromCharCode (0xaaaa);
+data[33] = String.fromCharCode (0x00aa);
+data[37] = String.fromCharCode (0xffff);
+data[38] = String.fromCharCode (0xffff);
+data[39] = String.fromCharCode (0xffff);
+data[40] = String.fromCharCode (0xffff);
+data[41] = String.fromCharCode (0xffff);
+data[42] = String.fromCharCode (0x01ff);
+data[57] = String.fromCharCode (0x0001);
+data[58] = String.fromCharCode (0xf000);
+data[59] = String.fromCharCode (0xffff);
+data[60] = String.fromCharCode (0x7fff);
+data[61] = 'c';
+data[62] = String.fromCharCode (0xaaa8);
+data[63] = String.fromCharCode (0x0007);
+data[67] = String.fromCharCode (0xffff);
+data[68] = String.fromCharCode (0xffff);
+data[69] = String.fromCharCode (0xdffe);
+data[70] = String.fromCharCode (0xaaaa);
+data[71] = String.fromCharCode (0xaaaa);
+data[72] = String.fromCharCode (0x0002);
+data[73] = String.fromCharCode (0xaaaa);
+data[74] = String.fromCharCode (0xaaaa);
+data[75] = String.fromCharCode (0xaaaa);
+data[76] = String.fromCharCode (0x1114);
+data[77] = String.fromCharCode (0xaaaa);
+data[78] = String.fromCharCode (0x8aaa);
+data[79] = String.fromCharCode (0x022a);
+data[86] = String.fromCharCode (0xfffe);
+data[87] = String.fromCharCode (0xffff);
+data[88] = String.fromCharCode (0x00ff);
+data[269] = String.fromCharCode (0xffff);
+data[270] = String.fromCharCode (0xffff);
+data[271] = String.fromCharCode (0x007f);
+data[480] = String.fromCharCode (0xaaaa);
+data[481] = String.fromCharCode (0xaaaa);
+data[482] = String.fromCharCode (0xaaaa);
+data[483] = String.fromCharCode (0xaaaa);
+data[484] = String.fromCharCode (0xaaaa);
+data[485] = String.fromCharCode (0xaaaa);
+data[486] = String.fromCharCode (0xaaaa);
+data[487] = String.fromCharCode (0xaaaa);
+data[488] = String.fromCharCode (0xaaaa);
+data[489] = String.fromCharCode (0x0fea);
+data[490] = String.fromCharCode (0xaaaa);
+data[491] = String.fromCharCode (0xaaaa);
+data[492] = String.fromCharCode (0xaaaa);
+data[493] = String.fromCharCode (0xaaaa);
+data[494] = String.fromCharCode (0xaaaa);
+data[495] = String.fromCharCode (0x02aa);
+data[496] = String.fromCharCode (0x00ff);
+data[497] = String.fromCharCode (0x003f);
+data[498] = String.fromCharCode (0x00ff);
+data[499] = String.fromCharCode (0x00ff);
+data[500] = String.fromCharCode (0x003f);
+data[501] = String.fromCharCode (0x00ff);
+data[502] = String.fromCharCode (0x00ff);
+data[503] = String.fromCharCode (0x3fff);
+data[504] = String.fromCharCode (0x00ff);
+data[505] = String.fromCharCode (0x00ff);
+data[506] = String.fromCharCode (0x00ff);
+data[507] = String.fromCharCode (0x00df);
+data[508] = String.fromCharCode (0x00dc);
+data[509] = String.fromCharCode (0x00cf);
+data[510] = String.fromCharCode (0x00ff);
+data[511] = String.fromCharCode (0x00dc);
+data[519] = String.fromCharCode (0x8000);
+data[528] = String.fromCharCode (0xc400);
+data[529] = String.fromCharCode (0x0008);
+data[530] = String.fromCharCode (0xc000);
+data[531] = String.fromCharCode (0x0010);
+data[4016] = String.fromCharCode (0x007f);
+data[4017] = String.fromCharCode (0x00f8);
+data[4084] = String.fromCharCode (0xfffe);
+data[4085] = String.fromCharCode (0x07ff);
+data[4102] = String.fromCharCode (0xfffe);
+data[4103] = String.fromCharCode (0x07ff);
+data[4106] = String.fromCharCode (0x0400);
+data[4107] = String.fromCharCode (0x0420);
+data[4109] = String.fromCharCode (0x8000);
+data[4110] = String.fromCharCode (0xffff);
+data[4111] = String.fromCharCode (0xff7f);
+data[4112] = String.fromCharCode (0xaaaa);
+data[4113] = String.fromCharCode (0xaaaa);
+data[4114] = String.fromCharCode (0xaaaa);
+data[4115] = String.fromCharCode (0x55aa);
+data[4116] = String.fromCharCode (0xab55);
+data[4117] = String.fromCharCode (0xaaaa);
+data[4118] = String.fromCharCode (0xaaaa);
+data[4119] = String.fromCharCode (0xd4aa);
+data[4120] = String.fromCharCode (0x3129);
+data[4121] = String.fromCharCode (0x4e24);
+data[4122] = String.fromCharCode (0x292a);
+data[4123] = String.fromCharCode (0x2651);
+data[4124] = String.fromCharCode (0x5240);
+data[4125] = String.fromCharCode (0xb555);
+data[4126] = String.fromCharCode (0xaaaa);
+data[4127] = String.fromCharCode (0xa829);
+data[4128] = String.fromCharCode (0xaaaa);
+data[4129] = String.fromCharCode (0x00aa);
+data[4133] = String.fromCharCode (0xffff);
+data[4134] = String.fromCharCode (0xffff);
+data[4135] = String.fromCharCode (0xffff);
+data[4136] = String.fromCharCode (0xffff);
+data[4137] = String.fromCharCode (0xffff);
+data[4138] = String.fromCharCode (0x01ff);
+data[4153] = String.fromCharCode (0x0001);
+data[4154] = String.fromCharCode (0xf000);
+data[4155] = String.fromCharCode (0xffff);
+data[4156] = String.fromCharCode (0x7fff);
+data[4157] = 'c';
+data[4158] = String.fromCharCode (0x00a8);
+});
+c$.title_f = Clazz.defineMethod (c$, "title_f", 
+function () {
+var data =  Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.title =  new com.stevesoft.pat.Bits (data);
+data[6] = String.fromCharCode (0xfffe);
+data[7] = String.fromCharCode (0x07ff);
+data[10] = String.fromCharCode (0x0400);
+data[11] = String.fromCharCode (0x0420);
+data[13] = String.fromCharCode (0x8000);
+data[14] = String.fromCharCode (0xffff);
+data[15] = String.fromCharCode (0xff7f);
+data[16] = String.fromCharCode (0xaaaa);
+data[17] = String.fromCharCode (0xaaaa);
+data[18] = String.fromCharCode (0xaaaa);
+data[19] = String.fromCharCode (0x55aa);
+data[20] = String.fromCharCode (0xab55);
+data[21] = String.fromCharCode (0xaaaa);
+data[22] = String.fromCharCode (0xaaaa);
+data[23] = String.fromCharCode (0xd4aa);
+data[24] = String.fromCharCode (0x3129);
+data[25] = String.fromCharCode (0x4e24);
+data[26] = String.fromCharCode (0x292a);
+data[27] = String.fromCharCode (0x2651);
+data[28] = String.fromCharCode (0x5240);
+data[29] = String.fromCharCode (0xb555);
+data[30] = String.fromCharCode (0xaaaa);
+data[31] = String.fromCharCode (0xa829);
+data[32] = String.fromCharCode (0xaaaa);
+data[33] = String.fromCharCode (0x00aa);
+data[37] = String.fromCharCode (0xffff);
+data[38] = String.fromCharCode (0xffff);
+data[39] = String.fromCharCode (0xffff);
+data[40] = String.fromCharCode (0xffff);
+data[41] = String.fromCharCode (0xffff);
+data[42] = String.fromCharCode (0x01ff);
+data[57] = String.fromCharCode (0x0001);
+data[58] = String.fromCharCode (0xf000);
+data[59] = String.fromCharCode (0xffff);
+data[60] = String.fromCharCode (0x7fff);
+data[61] = 'c';
+data[62] = String.fromCharCode (0xaaa8);
+data[63] = String.fromCharCode (0x0007);
+data[67] = String.fromCharCode (0xffff);
+data[68] = String.fromCharCode (0xffff);
+data[69] = String.fromCharCode (0xdffe);
+data[70] = String.fromCharCode (0xaaaa);
+data[71] = String.fromCharCode (0xaaaa);
+data[72] = String.fromCharCode (0x0002);
+data[73] = String.fromCharCode (0xaaaa);
+data[74] = String.fromCharCode (0xaaaa);
+data[75] = String.fromCharCode (0xaaaa);
+data[76] = String.fromCharCode (0x1114);
+data[77] = String.fromCharCode (0xaaaa);
+data[78] = String.fromCharCode (0x8aaa);
+data[79] = String.fromCharCode (0x022a);
+data[86] = String.fromCharCode (0xfffe);
+data[87] = String.fromCharCode (0xffff);
+data[88] = String.fromCharCode (0x00ff);
+data[269] = String.fromCharCode (0xffff);
+data[270] = String.fromCharCode (0xffff);
+data[271] = String.fromCharCode (0x007f);
+data[480] = String.fromCharCode (0xaaaa);
+data[481] = String.fromCharCode (0xaaaa);
+data[482] = String.fromCharCode (0xaaaa);
+data[483] = String.fromCharCode (0xaaaa);
+data[484] = String.fromCharCode (0xaaaa);
+data[485] = String.fromCharCode (0xaaaa);
+data[486] = String.fromCharCode (0xaaaa);
+data[487] = String.fromCharCode (0xaaaa);
+data[488] = String.fromCharCode (0xaaaa);
+data[489] = String.fromCharCode (0x0fea);
+data[490] = String.fromCharCode (0xaaaa);
+data[491] = String.fromCharCode (0xaaaa);
+data[492] = String.fromCharCode (0xaaaa);
+data[493] = String.fromCharCode (0xaaaa);
+data[494] = String.fromCharCode (0xaaaa);
+data[495] = String.fromCharCode (0x02aa);
+data[496] = String.fromCharCode (0x00ff);
+data[497] = String.fromCharCode (0x003f);
+data[498] = String.fromCharCode (0x00ff);
+data[499] = String.fromCharCode (0x00ff);
+data[500] = String.fromCharCode (0x003f);
+data[501] = String.fromCharCode (0x00ff);
+data[502] = String.fromCharCode (0x00ff);
+data[503] = String.fromCharCode (0x3fff);
+data[504] = String.fromCharCode (0x00ff);
+data[505] = String.fromCharCode (0x00ff);
+data[506] = String.fromCharCode (0x00ff);
+data[507] = String.fromCharCode (0x00df);
+data[508] = String.fromCharCode (0x00dc);
+data[509] = String.fromCharCode (0x00cf);
+data[510] = String.fromCharCode (0x00ff);
+data[511] = String.fromCharCode (0x00dc);
+data[519] = String.fromCharCode (0x8000);
+data[528] = String.fromCharCode (0xc400);
+data[529] = String.fromCharCode (0x0008);
+data[530] = String.fromCharCode (0xc000);
+data[531] = String.fromCharCode (0x0010);
+data[4016] = String.fromCharCode (0x007f);
+data[4017] = String.fromCharCode (0x00f8);
+data[4084] = String.fromCharCode (0xfffe);
+data[4085] = String.fromCharCode (0x07ff);
+data[4102] = String.fromCharCode (0xfffe);
+data[4103] = String.fromCharCode (0x07ff);
+data[4106] = String.fromCharCode (0x0400);
+data[4107] = String.fromCharCode (0x0420);
+data[4109] = String.fromCharCode (0x8000);
+data[4110] = String.fromCharCode (0xffff);
+data[4111] = String.fromCharCode (0xff7f);
+data[4112] = String.fromCharCode (0xaaaa);
+data[4113] = String.fromCharCode (0xaaaa);
+data[4114] = String.fromCharCode (0xaaaa);
+data[4115] = String.fromCharCode (0x55aa);
+data[4116] = String.fromCharCode (0xab55);
+data[4117] = String.fromCharCode (0xaaaa);
+data[4118] = String.fromCharCode (0xaaaa);
+data[4119] = String.fromCharCode (0xd4aa);
+data[4120] = String.fromCharCode (0x3129);
+data[4121] = String.fromCharCode (0x4e24);
+data[4122] = String.fromCharCode (0x292a);
+data[4123] = String.fromCharCode (0x2651);
+data[4124] = String.fromCharCode (0x5240);
+data[4125] = String.fromCharCode (0xb555);
+data[4126] = String.fromCharCode (0xaaaa);
+data[4127] = String.fromCharCode (0xa829);
+data[4128] = String.fromCharCode (0xaaaa);
+data[4129] = String.fromCharCode (0x00aa);
+data[4133] = String.fromCharCode (0xffff);
+data[4134] = String.fromCharCode (0xffff);
+data[4135] = String.fromCharCode (0xffff);
+data[4136] = String.fromCharCode (0xffff);
+data[4137] = String.fromCharCode (0xffff);
+data[4138] = String.fromCharCode (0x01ff);
+data[4153] = String.fromCharCode (0x0001);
+data[4154] = String.fromCharCode (0xf000);
+data[4155] = String.fromCharCode (0xffff);
+data[4156] = String.fromCharCode (0x7fff);
+data[4157] = 'c';
+data[4158] = String.fromCharCode (0x00a8);
+});
+c$.currency_f = Clazz.defineMethod (c$, "currency_f", 
+function () {
+var data =  Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.currency =  new com.stevesoft.pat.Bits (data);
+data[2] = String.fromCharCode (0x0010);
+data[10] = String.fromCharCode (0x003c);
+data[159] = String.fromCharCode (0x000c);
+data[227] = String.fromCharCode (0x8000);
+data[522] = String.fromCharCode (0x1fff);
+data[4070] = String.fromCharCode (0x0200);
+data[4080] = String.fromCharCode (0x0010);
+data[4094] = 'c';
+data[4098] = String.fromCharCode (0x0010);
+data[4106] = String.fromCharCode (0x003c);
+});
+c$.decimal_digit_f = Clazz.defineMethod (c$, "decimal_digit_f", 
+function () {
+var data =  Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.decimal_digit =  new com.stevesoft.pat.Bits (data);
+data[3] = String.fromCharCode (0x03ff);
+data[102] = String.fromCharCode (0x03ff);
+data[111] = String.fromCharCode (0x03ff);
+data[150] = String.fromCharCode (0xffc0);
+data[158] = String.fromCharCode (0xffc0);
+data[166] = String.fromCharCode (0xffc0);
+data[174] = String.fromCharCode (0xffc0);
+data[182] = String.fromCharCode (0xffc0);
+data[190] = String.fromCharCode (0xff80);
+data[198] = String.fromCharCode (0xffc0);
+data[206] = String.fromCharCode (0xffc0);
+data[214] = String.fromCharCode (0xffc0);
+data[229] = String.fromCharCode (0x03ff);
+data[237] = String.fromCharCode (0x03ff);
+data[242] = String.fromCharCode (0x03ff);
+data[4081] = String.fromCharCode (0x03ff);
+data[4099] = String.fromCharCode (0x03ff);
+});
+c$.math_f = Clazz.defineMethod (c$, "math_f", 
+function () {
+var data =  Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.math =  new com.stevesoft.pat.Bits (data);
+data[2] = String.fromCharCode (0x0800);
+data[3] = String.fromCharCode (0x7000);
+data[7] = String.fromCharCode (0x5000);
+data[10] = String.fromCharCode (0x1000);
+data[11] = String.fromCharCode (0x0002);
+data[13] = String.fromCharCode (0x0080);
+data[15] = String.fromCharCode (0x0080);
+data[516] = String.fromCharCode (0x0010);
+data[519] = String.fromCharCode (0x1c00);
+data[520] = String.fromCharCode (0x1c00);
+data[537] = String.fromCharCode (0x001f);
+data[541] = String.fromCharCode (0x0014);
+data[544] = String.fromCharCode (0xffff);
+data[545] = String.fromCharCode (0xffff);
+data[546] = String.fromCharCode (0xffff);
+data[547] = String.fromCharCode (0xffff);
+data[548] = String.fromCharCode (0xffff);
+data[549] = String.fromCharCode (0xffff);
+data[550] = String.fromCharCode (0xffff);
+data[551] = String.fromCharCode (0xffff);
+data[552] = String.fromCharCode (0xffff);
+data[553] = String.fromCharCode (0xffff);
+data[554] = String.fromCharCode (0xffff);
+data[555] = String.fromCharCode (0xffff);
+data[556] = String.fromCharCode (0xffff);
+data[557] = String.fromCharCode (0xffff);
+data[558] = String.fromCharCode (0xffff);
+data[559] = String.fromCharCode (0x0003);
+data[560] = String.fromCharCode (0x0f00);
+data[562] = String.fromCharCode (0x0003);
+data[4018] = String.fromCharCode (0x0200);
+data[4070] = 't';
+data[4080] = String.fromCharCode (0x0800);
+data[4081] = String.fromCharCode (0x7000);
+data[4085] = String.fromCharCode (0x5000);
+data[4094] = String.fromCharCode (0x1f04);
+data[4098] = String.fromCharCode (0x0800);
+data[4099] = String.fromCharCode (0x7000);
+data[4103] = String.fromCharCode (0x5000);
+data[4106] = String.fromCharCode (0x1000);
+data[4107] = String.fromCharCode (0x0002);
+data[4109] = String.fromCharCode (0x0080);
+data[4111] = String.fromCharCode (0x0080);
+});
+c$.letter_f = Clazz.defineMethod (c$, "letter_f", 
+function () {
+var data =  Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.letter =  new com.stevesoft.pat.Bits (data);
+data[4] = String.fromCharCode (0xfffe);
+data[5] = String.fromCharCode (0x07ff);
+data[6] = String.fromCharCode (0xfffe);
+data[7] = String.fromCharCode (0x07ff);
+data[10] = String.fromCharCode (0x0400);
+data[11] = String.fromCharCode (0x0420);
+data[12] = String.fromCharCode (0xffff);
+data[13] = String.fromCharCode (0xff7f);
+data[14] = String.fromCharCode (0xffff);
+data[15] = String.fromCharCode (0xff7f);
+data[16] = String.fromCharCode (0xffff);
+data[17] = String.fromCharCode (0xffff);
+data[18] = String.fromCharCode (0xffff);
+data[19] = String.fromCharCode (0xffff);
+data[20] = String.fromCharCode (0xffff);
+data[21] = String.fromCharCode (0xffff);
+data[22] = String.fromCharCode (0xffff);
+data[23] = String.fromCharCode (0xffff);
+data[24] = String.fromCharCode (0xffff);
+data[25] = String.fromCharCode (0xffff);
+data[26] = String.fromCharCode (0xffff);
+data[27] = String.fromCharCode (0xffff);
+data[28] = String.fromCharCode (0xffff);
+data[29] = String.fromCharCode (0xffff);
+data[30] = String.fromCharCode (0xffff);
+data[31] = String.fromCharCode (0xfc3f);
+data[32] = String.fromCharCode (0xffff);
+data[33] = String.fromCharCode (0x00ff);
+data[37] = String.fromCharCode (0xffff);
+data[38] = String.fromCharCode (0xffff);
+data[39] = String.fromCharCode (0xffff);
+data[40] = String.fromCharCode (0xffff);
+data[41] = String.fromCharCode (0xffff);
+data[42] = String.fromCharCode (0x01ff);
+data[43] = String.fromCharCode (0xf9ff);
+data[44] = String.fromCharCode (0x0003);
+data[45] = String.fromCharCode (0x0003);
+data[46] = String.fromCharCode (0x001f);
+data[55] = String.fromCharCode (0x0400);
+data[56] = String.fromCharCode (0xd740);
+data[57] = String.fromCharCode (0xffff);
+data[58] = String.fromCharCode (0xfffb);
+data[59] = String.fromCharCode (0xffff);
+data[60] = String.fromCharCode (0x7fff);
+data[61] = String.fromCharCode (0x547f);
+data[62] = String.fromCharCode (0xfffd);
+data[63] = String.fromCharCode (0x000f);
+data[64] = String.fromCharCode (0xdffe);
+data[65] = String.fromCharCode (0xffff);
+data[66] = String.fromCharCode (0xffff);
+data[67] = String.fromCharCode (0xffff);
+data[68] = String.fromCharCode (0xffff);
+data[69] = String.fromCharCode (0xdffe);
+data[70] = String.fromCharCode (0xffff);
+data[71] = String.fromCharCode (0xffff);
+data[72] = String.fromCharCode (0x0003);
+data[73] = String.fromCharCode (0xffff);
+data[74] = String.fromCharCode (0xffff);
+data[75] = String.fromCharCode (0xffff);
+data[76] = String.fromCharCode (0x199f);
+data[77] = String.fromCharCode (0xffff);
+data[78] = String.fromCharCode (0xcfff);
+data[79] = String.fromCharCode (0x033f);
+data[83] = String.fromCharCode (0xfffe);
+data[84] = String.fromCharCode (0xffff);
+data[85] = String.fromCharCode (0x027f);
+data[86] = String.fromCharCode (0xfffe);
+data[87] = String.fromCharCode (0xffff);
+data[88] = String.fromCharCode (0x00ff);
+data[93] = String.fromCharCode (0xffff);
+data[94] = String.fromCharCode (0x07ff);
+data[95] = String.fromCharCode (0x0007);
+data[98] = String.fromCharCode (0xfffe);
+data[99] = String.fromCharCode (0x07ff);
+data[100] = String.fromCharCode (0x07ff);
+data[103] = String.fromCharCode (0xfffe);
+data[104] = String.fromCharCode (0xffff);
+data[105] = String.fromCharCode (0xffff);
+data[106] = String.fromCharCode (0xffff);
+data[107] = String.fromCharCode (0x7cff);
+data[108] = String.fromCharCode (0x7fff);
+data[109] = String.fromCharCode (0x002f);
+data[110] = String.fromCharCode (0x0060);
+data[144] = String.fromCharCode (0xffe0);
+data[145] = String.fromCharCode (0xffff);
+data[146] = String.fromCharCode (0xffff);
+data[147] = String.fromCharCode (0x23ff);
+data[149] = String.fromCharCode (0xff00);
+data[150] = String.fromCharCode (0x0003);
+data[152] = String.fromCharCode (0x9fe0);
+data[153] = String.fromCharCode (0xfff9);
+data[154] = String.fromCharCode (0xfdff);
+data[155] = String.fromCharCode (0x03c5);
+data[157] = String.fromCharCode (0xb000);
+data[158] = String.fromCharCode (0x0003);
+data[159] = String.fromCharCode (0x0003);
+data[160] = String.fromCharCode (0x87e0);
+data[161] = String.fromCharCode (0xfff9);
+data[162] = String.fromCharCode (0xfdff);
+data[163] = String.fromCharCode (0x036d);
+data[165] = String.fromCharCode (0x5e00);
+data[167] = String.fromCharCode (0x001c);
+data[168] = String.fromCharCode (0xafe0);
+data[169] = String.fromCharCode (0xfffb);
+data[170] = String.fromCharCode (0xfdff);
+data[171] = String.fromCharCode (0x23ed);
+data[174] = String.fromCharCode (0x0001);
+data[176] = String.fromCharCode (0x9fe0);
+data[177] = String.fromCharCode (0xfff9);
+data[178] = String.fromCharCode (0xfdff);
+data[179] = String.fromCharCode (0x23cd);
+data[181] = String.fromCharCode (0xb000);
+data[182] = String.fromCharCode (0x0003);
+data[184] = String.fromCharCode (0xc7e0);
+data[185] = String.fromCharCode (0xd63d);
+data[186] = String.fromCharCode (0xc718);
+data[187] = String.fromCharCode (0x03bf);
+data[192] = String.fromCharCode (0xdfe0);
+data[193] = String.fromCharCode (0xfffd);
+data[194] = String.fromCharCode (0xfdff);
+data[195] = String.fromCharCode (0x03ef);
+data[198] = String.fromCharCode (0x0003);
+data[200] = String.fromCharCode (0xdfe0);
+data[201] = String.fromCharCode (0xfffd);
+data[202] = String.fromCharCode (0xfdff);
+data[203] = String.fromCharCode (0x03ef);
+data[205] = String.fromCharCode (0x4000);
+data[206] = String.fromCharCode (0x0003);
+data[208] = String.fromCharCode (0xdfe0);
+data[209] = String.fromCharCode (0xfffd);
+data[210] = String.fromCharCode (0xfdff);
+data[211] = String.fromCharCode (0x03ff);
+data[214] = String.fromCharCode (0x0003);
+data[224] = String.fromCharCode (0xfffe);
+data[225] = String.fromCharCode (0xffff);
+data[226] = String.fromCharCode (0x7fff);
+data[227] = String.fromCharCode (0x000d);
+data[228] = String.fromCharCode (0x007f);
+data[232] = String.fromCharCode (0x2596);
+data[233] = String.fromCharCode (0xfef0);
+data[234] = String.fromCharCode (0x6cae);
+data[235] = String.fromCharCode (0x200d);
+data[236] = String.fromCharCode (0x005f);
+data[237] = String.fromCharCode (0x3000);
+data[244] = String.fromCharCode (0xfeff);
+data[245] = String.fromCharCode (0xffff);
+data[246] = String.fromCharCode (0x03ff);
+data[266] = String.fromCharCode (0xffff);
+data[267] = String.fromCharCode (0xffff);
+data[268] = String.fromCharCode (0x003f);
+data[269] = String.fromCharCode (0xffff);
+data[270] = String.fromCharCode (0xffff);
+data[271] = String.fromCharCode (0x007f);
+data[272] = String.fromCharCode (0xffff);
+data[273] = String.fromCharCode (0xffff);
+data[274] = String.fromCharCode (0xffff);
+data[275] = String.fromCharCode (0xffff);
+data[276] = String.fromCharCode (0xffff);
+data[277] = String.fromCharCode (0x83ff);
+data[278] = String.fromCharCode (0xffff);
+data[279] = String.fromCharCode (0xffff);
+data[280] = String.fromCharCode (0xffff);
+data[281] = String.fromCharCode (0xffff);
+data[282] = String.fromCharCode (0xff07);
+data[283] = String.fromCharCode (0xffff);
+data[284] = String.fromCharCode (0xffff);
+data[285] = String.fromCharCode (0xffff);
+data[286] = String.fromCharCode (0xffff);
+data[287] = String.fromCharCode (0x03ff);
+data[480] = String.fromCharCode (0xffff);
+data[481] = String.fromCharCode (0xffff);
+data[482] = String.fromCharCode (0xffff);
+data[483] = String.fromCharCode (0xffff);
+data[484] = String.fromCharCode (0xffff);
+data[485] = String.fromCharCode (0xffff);
+data[486] = String.fromCharCode (0xffff);
+data[487] = String.fromCharCode (0xffff);
+data[488] = String.fromCharCode (0xffff);
+data[489] = String.fromCharCode (0x0fff);
+data[490] = String.fromCharCode (0xffff);
+data[491] = String.fromCharCode (0xffff);
+data[492] = String.fromCharCode (0xffff);
+data[493] = String.fromCharCode (0xffff);
+data[494] = String.fromCharCode (0xffff);
+data[495] = String.fromCharCode (0x03ff);
+data[496] = String.fromCharCode (0xffff);
+data[497] = String.fromCharCode (0x3f3f);
+data[498] = String.fromCharCode (0xffff);
+data[499] = String.fromCharCode (0xffff);
+data[500] = String.fromCharCode (0x3f3f);
+data[501] = String.fromCharCode (0xaaff);
+data[502] = String.fromCharCode (0xffff);
+data[503] = String.fromCharCode (0x3fff);
+data[504] = String.fromCharCode (0xffff);
+data[505] = String.fromCharCode (0xffff);
+data[506] = String.fromCharCode (0xffff);
+data[507] = String.fromCharCode (0x5fdf);
+data[508] = String.fromCharCode (0x1fdc);
+data[509] = String.fromCharCode (0x0fcf);
+data[510] = String.fromCharCode (0x1fff);
+data[511] = String.fromCharCode (0x1fdc);
+data[519] = String.fromCharCode (0x8000);
+data[528] = String.fromCharCode (0xfc84);
+data[529] = String.fromCharCode (0x3f2f);
+data[530] = String.fromCharCode (0xfd50);
+data[531] = String.fromCharCode (0x01fb);
+data[768] = String.fromCharCode (0x0020);
+data[771] = String.fromCharCode (0x003e);
+data[772] = String.fromCharCode (0xfffe);
+data[773] = String.fromCharCode (0xffff);
+data[774] = String.fromCharCode (0xffff);
+data[775] = String.fromCharCode (0xffff);
+data[776] = String.fromCharCode (0xffff);
+data[777] = String.fromCharCode (0x781f);
+data[778] = String.fromCharCode (0xfffe);
+data[779] = String.fromCharCode (0xffff);
+data[780] = String.fromCharCode (0xffff);
+data[781] = String.fromCharCode (0xffff);
+data[782] = String.fromCharCode (0xffff);
+data[783] = String.fromCharCode (0x77ff);
+data[784] = String.fromCharCode (0xffe0);
+data[785] = String.fromCharCode (0xffff);
+data[786] = String.fromCharCode (0x1fff);
+data[787] = String.fromCharCode (0xfffe);
+data[788] = String.fromCharCode (0xffff);
+data[789] = String.fromCharCode (0xffff);
+data[790] = String.fromCharCode (0xffff);
+data[791] = String.fromCharCode (0xffff);
+data[792] = String.fromCharCode (0x7fff);
+data[1248] = String.fromCharCode (0xffff);
+data[1249] = String.fromCharCode (0xffff);
+data[1250] = String.fromCharCode (0xffff);
+data[1251] = String.fromCharCode (0xffff);
+data[1252] = String.fromCharCode (0xffff);
+data[1253] = String.fromCharCode (0xffff);
+data[1254] = String.fromCharCode (0xffff);
+data[1255] = String.fromCharCode (0xffff);
+data[1256] = String.fromCharCode (0xffff);
+data[1257] = String.fromCharCode (0xffff);
+data[1258] = String.fromCharCode (0xffff);
+data[1259] = String.fromCharCode (0xffff);
+data[1260] = String.fromCharCode (0xffff);
+data[1261] = String.fromCharCode (0xffff);
+data[1262] = String.fromCharCode (0xffff);
+data[1263] = String.fromCharCode (0xffff);
+data[1264] = String.fromCharCode (0xffff);
+data[1265] = String.fromCharCode (0xffff);
+data[1266] = String.fromCharCode (0xffff);
+data[1267] = String.fromCharCode (0xffff);
+data[1268] = String.fromCharCode (0xffff);
+data[1269] = String.fromCharCode (0xffff);
+data[1270] = String.fromCharCode (0xffff);
+data[1271] = String.fromCharCode (0xffff);
+data[1272] = String.fromCharCode (0xffff);
+data[1273] = String.fromCharCode (0xffff);
+data[1274] = String.fromCharCode (0xffff);
+data[1275] = String.fromCharCode (0xffff);
+data[1276] = String.fromCharCode (0xffff);
+data[1277] = String.fromCharCode (0xffff);
+data[1278] = String.fromCharCode (0xffff);
+data[1279] = String.fromCharCode (0xffff);
+data[1280] = String.fromCharCode (0xffff);
+data[1281] = String.fromCharCode (0xffff);
+data[1282] = String.fromCharCode (0xffff);
+data[1283] = String.fromCharCode (0xffff);
+data[1284] = String.fromCharCode (0xffff);
+data[1285] = String.fromCharCode (0xffff);
+data[1286] = String.fromCharCode (0xffff);
+data[1287] = String.fromCharCode (0xffff);
+data[1288] = String.fromCharCode (0xffff);
+data[1289] = String.fromCharCode (0xffff);
+data[1290] = String.fromCharCode (0xffff);
+data[1291] = String.fromCharCode (0xffff);
+data[1292] = String.fromCharCode (0xffff);
+data[1293] = String.fromCharCode (0xffff);
+data[1294] = String.fromCharCode (0xffff);
+data[1295] = String.fromCharCode (0xffff);
+data[1296] = String.fromCharCode (0xffff);
+data[1297] = String.fromCharCode (0xffff);
+data[1298] = String.fromCharCode (0xffff);
+data[1299] = String.fromCharCode (0xffff);
+data[1300] = String.fromCharCode (0xffff);
+data[1301] = String.fromCharCode (0xffff);
+data[1302] = String.fromCharCode (0xffff);
+data[1303] = String.fromCharCode (0xffff);
+data[1304] = String.fromCharCode (0xffff);
+data[1305] = String.fromCharCode (0xffff);
+data[1306] = String.fromCharCode (0xffff);
+data[1307] = String.fromCharCode (0xffff);
+data[1308] = String.fromCharCode (0xffff);
+data[1309] = String.fromCharCode (0xffff);
+data[1310] = String.fromCharCode (0xffff);
+data[1311] = String.fromCharCode (0xffff);
+data[1312] = String.fromCharCode (0xffff);
+data[1313] = String.fromCharCode (0xffff);
+data[1314] = String.fromCharCode (0xffff);
+data[1315] = String.fromCharCode (0xffff);
+data[1316] = String.fromCharCode (0xffff);
+data[1317] = String.fromCharCode (0xffff);
+data[1318] = String.fromCharCode (0xffff);
+data[1319] = String.fromCharCode (0xffff);
+data[1320] = String.fromCharCode (0xffff);
+data[1321] = String.fromCharCode (0xffff);
+data[1322] = String.fromCharCode (0xffff);
+data[1323] = String.fromCharCode (0xffff);
+data[1324] = String.fromCharCode (0xffff);
+data[1325] = String.fromCharCode (0xffff);
+data[1326] = String.fromCharCode (0xffff);
+data[1327] = String.fromCharCode (0xffff);
+data[1328] = String.fromCharCode (0xffff);
+data[1329] = String.fromCharCode (0xffff);
+data[1330] = String.fromCharCode (0xffff);
+data[1331] = String.fromCharCode (0xffff);
+data[1332] = String.fromCharCode (0xffff);
+data[1333] = String.fromCharCode (0xffff);
+data[1334] = String.fromCharCode (0xffff);
+data[1335] = String.fromCharCode (0xffff);
+data[1336] = String.fromCharCode (0xffff);
+data[1337] = String.fromCharCode (0xffff);
+data[1338] = String.fromCharCode (0xffff);
+data[1339] = String.fromCharCode (0xffff);
+data[1340] = String.fromCharCode (0xffff);
+data[1341] = String.fromCharCode (0xffff);
+data[1342] = String.fromCharCode (0xffff);
+data[1343] = String.fromCharCode (0xffff);
+data[1344] = String.fromCharCode (0xffff);
+data[1345] = String.fromCharCode (0xffff);
+data[1346] = String.fromCharCode (0xffff);
+data[1347] = String.fromCharCode (0xffff);
+data[1348] = String.fromCharCode (0xffff);
+data[1349] = String.fromCharCode (0xffff);
+data[1350] = String.fromCharCode (0xffff);
+data[1351] = String.fromCharCode (0xffff);
+data[1352] = String.fromCharCode (0xffff);
+data[1353] = String.fromCharCode (0xffff);
+data[1354] = String.fromCharCode (0xffff);
+data[1355] = String.fromCharCode (0xffff);
+data[1356] = String.fromCharCode (0xffff);
+data[1357] = String.fromCharCode (0xffff);
+data[1358] = String.fromCharCode (0xffff);
+data[1359] = String.fromCharCode (0xffff);
+data[1360] = String.fromCharCode (0xffff);
+data[1361] = String.fromCharCode (0xffff);
+data[1362] = String.fromCharCode (0xffff);
+data[1363] = String.fromCharCode (0xffff);
+data[1364] = String.fromCharCode (0xffff);
+data[1365] = String.fromCharCode (0xffff);
+data[1366] = String.fromCharCode (0xffff);
+data[1367] = String.fromCharCode (0xffff);
+data[1368] = String.fromCharCode (0xffff);
+data[1369] = String.fromCharCode (0xffff);
+data[1370] = String.fromCharCode (0xffff);
+data[1371] = String.fromCharCode (0xffff);
+data[1372] = String.fromCharCode (0xffff);
+data[1373] = String.fromCharCode (0xffff);
+data[1374] = String.fromCharCode (0xffff);
+data[1375] = String.fromCharCode (0xffff);
+data[1376] = String.fromCharCode (0xffff);
+data[1377] = String.fromCharCode (0xffff);
+data[1378] = String.fromCharCode (0xffff);
+data[1379] = String.fromCharCode (0xffff);
+data[1380] = String.fromCharCode (0xffff);
+data[1381] = String.fromCharCode (0xffff);
+data[1382] = String.fromCharCode (0xffff);
+data[1383] = String.fromCharCode (0xffff);
+data[1384] = String.fromCharCode (0xffff);
+data[1385] = String.fromCharCode (0xffff);
+data[1386] = String.fromCharCode (0xffff);
+data[1387] = String.fromCharCode (0xffff);
+data[1388] = String.fromCharCode (0xffff);
+data[1389] = String.fromCharCode (0xffff);
+data[1390] = String.fromCharCode (0xffff);
+data[1391] = String.fromCharCode (0xffff);
+data[1392] = String.fromCharCode (0xffff);
+data[1393] = String.fromCharCode (0xffff);
+data[1394] = String.fromCharCode (0xffff);
+data[1395] = String.fromCharCode (0xffff);
+data[1396] = String.fromCharCode (0xffff);
+data[1397] = String.fromCharCode (0xffff);
+data[1398] = String.fromCharCode (0xffff);
+data[1399] = String.fromCharCode (0xffff);
+data[1400] = String.fromCharCode (0xffff);
+data[1401] = String.fromCharCode (0xffff);
+data[1402] = String.fromCharCode (0xffff);
+data[1403] = String.fromCharCode (0xffff);
+data[1404] = String.fromCharCode (0xffff);
+data[1405] = String.fromCharCode (0xffff);
+data[1406] = String.fromCharCode (0xffff);
+data[1407] = String.fromCharCode (0xffff);
+data[1408] = String.fromCharCode (0xffff);
+data[1409] = String.fromCharCode (0xffff);
+data[1410] = String.fromCharCode (0xffff);
+data[1411] = String.fromCharCode (0xffff);
+data[1412] = String.fromCharCode (0xffff);
+data[1413] = String.fromCharCode (0xffff);
+data[1414] = String.fromCharCode (0xffff);
+data[1415] = String.fromCharCode (0xffff);
+data[1416] = String.fromCharCode (0xffff);
+data[1417] = String.fromCharCode (0xffff);
+data[1418] = String.fromCharCode (0xffff);
+data[1419] = String.fromCharCode (0xffff);
+data[1420] = String.fromCharCode (0xffff);
+data[1421] = String.fromCharCode (0xffff);
+data[1422] = String.fromCharCode (0xffff);
+data[1423] = String.fromCharCode (0xffff);
+data[1424] = String.fromCharCode (0xffff);
+data[1425] = String.fromCharCode (0xffff);
+data[1426] = String.fromCharCode (0xffff);
+data[1427] = String.fromCharCode (0xffff);
+data[1428] = String.fromCharCode (0xffff);
+data[1429] = String.fromCharCode (0xffff);
+data[1430] = String.fromCharCode (0xffff);
+data[1431] = String.fromCharCode (0xffff);
+data[1432] = String.fromCharCode (0xffff);
+data[1433] = String.fromCharCode (0xffff);
+data[1434] = String.fromCharCode (0xffff);
+data[1435] = String.fromCharCode (0xffff);
+data[1436] = String.fromCharCode (0xffff);
+data[1437] = String.fromCharCode (0xffff);
+data[1438] = String.fromCharCode (0xffff);
+data[1439] = String.fromCharCode (0xffff);
+data[1440] = String.fromCharCode (0xffff);
+data[1441] = String.fromCharCode (0xffff);
+data[1442] = String.fromCharCode (0xffff);
+data[1443] = String.fromCharCode (0xffff);
+data[1444] = String.fromCharCode (0xffff);
+data[1445] = String.fromCharCode (0xffff);
+data[1446] = String.fromCharCode (0xffff);
+data[1447] = String.fromCharCode (0xffff);
+data[1448] = String.fromCharCode (0xffff);
+data[1449] = String.fromCharCode (0xffff);
+data[1450] = String.fromCharCode (0xffff);
+data[1451] = String.fromCharCode (0xffff);
+data[1452] = String.fromCharCode (0xffff);
+data[1453] = String.fromCharCode (0xffff);
+data[1454] = String.fromCharCode (0xffff);
+data[1455] = String.fromCharCode (0xffff);
+data[1456] = String.fromCharCode (0xffff);
+data[1457] = String.fromCharCode (0xffff);
+data[1458] = String.fromCharCode (0xffff);
+data[1459] = String.fromCharCode (0xffff);
+data[1460] = String.fromCharCode (0xffff);
+data[1461] = String.fromCharCode (0xffff);
+data[1462] = String.fromCharCode (0xffff);
+data[1463] = String.fromCharCode (0xffff);
+data[1464] = String.fromCharCode (0xffff);
+data[1465] = String.fromCharCode (0xffff);
+data[1466] = String.fromCharCode (0xffff);
+data[1467] = String.fromCharCode (0xffff);
+data[1468] = String.fromCharCode (0xffff);
+data[1469] = String.fromCharCode (0xffff);
+data[1470] = String.fromCharCode (0xffff);
+data[1471] = String.fromCharCode (0xffff);
+data[1472] = String.fromCharCode (0xffff);
+data[1473] = String.fromCharCode (0xffff);
+data[1474] = String.fromCharCode (0xffff);
+data[1475] = String.fromCharCode (0xffff);
+data[1476] = String.fromCharCode (0xffff);
+data[1477] = String.fromCharCode (0xffff);
+data[1478] = String.fromCharCode (0xffff);
+data[1479] = String.fromCharCode (0xffff);
+data[1480] = String.fromCharCode (0xffff);
+data[1481] = String.fromCharCode (0xffff);
+data[1482] = String.fromCharCode (0xffff);
+data[1483] = String.fromCharCode (0xffff);
+data[1484] = String.fromCharCode (0xffff);
+data[1485] = String.fromCharCode (0xffff);
+data[1486] = String.fromCharCode (0xffff);
+data[1487] = String.fromCharCode (0xffff);
+data[1488] = String.fromCharCode (0xffff);
+data[1489] = String.fromCharCode (0xffff);
+data[1490] = String.fromCharCode (0xffff);
+data[1491] = String.fromCharCode (0xffff);
+data[1492] = String.fromCharCode (0xffff);
+data[1493] = String.fromCharCode (0xffff);
+data[1494] = String.fromCharCode (0xffff);
+data[1495] = String.fromCharCode (0xffff);
+data[1496] = String.fromCharCode (0xffff);
+data[1497] = String.fromCharCode (0xffff);
+data[1498] = String.fromCharCode (0xffff);
+data[1499] = String.fromCharCode (0xffff);
+data[1500] = String.fromCharCode (0xffff);
+data[1501] = String.fromCharCode (0xffff);
+data[1502] = String.fromCharCode (0xffff);
+data[1503] = String.fromCharCode (0xffff);
+data[1504] = String.fromCharCode (0xffff);
+data[1505] = String.fromCharCode (0xffff);
+data[1506] = String.fromCharCode (0xffff);
+data[1507] = String.fromCharCode (0xffff);
+data[1508] = String.fromCharCode (0xffff);
+data[1509] = String.fromCharCode (0xffff);
+data[1510] = String.fromCharCode (0xffff);
+data[1511] = String.fromCharCode (0xffff);
+data[1512] = String.fromCharCode (0xffff);
+data[1513] = String.fromCharCode (0xffff);
+data[1514] = String.fromCharCode (0xffff);
+data[1515] = String.fromCharCode (0xffff);
+data[1516] = String.fromCharCode (0xffff);
+data[1517] = String.fromCharCode (0xffff);
+data[1518] = String.fromCharCode (0xffff);
+data[1519] = String.fromCharCode (0xffff);
+data[1520] = String.fromCharCode (0xffff);
+data[1521] = String.fromCharCode (0xffff);
+data[1522] = String.fromCharCode (0xffff);
+data[1523] = String.fromCharCode (0xffff);
+data[1524] = String.fromCharCode (0xffff);
+data[1525] = String.fromCharCode (0xffff);
+data[1526] = String.fromCharCode (0xffff);
+data[1527] = String.fromCharCode (0xffff);
+data[1528] = String.fromCharCode (0xffff);
+data[1529] = String.fromCharCode (0xffff);
+data[1530] = String.fromCharCode (0xffff);
+data[1531] = String.fromCharCode (0xffff);
+data[1532] = String.fromCharCode (0xffff);
+data[1533] = String.fromCharCode (0xffff);
+data[1534] = String.fromCharCode (0xffff);
+data[1535] = String.fromCharCode (0xffff);
+data[1536] = String.fromCharCode (0xffff);
+data[1537] = String.fromCharCode (0xffff);
+data[1538] = String.fromCharCode (0xffff);
+data[1539] = String.fromCharCode (0xffff);
+data[1540] = String.fromCharCode (0xffff);
+data[1541] = String.fromCharCode (0xffff);
+data[1542] = String.fromCharCode (0xffff);
+data[1543] = String.fromCharCode (0xffff);
+data[1544] = String.fromCharCode (0xffff);
+data[1545] = String.fromCharCode (0xffff);
+data[1546] = String.fromCharCode (0xffff);
+data[1547] = String.fromCharCode (0xffff);
+data[1548] = String.fromCharCode (0xffff);
+data[1549] = String.fromCharCode (0xffff);
+data[1550] = String.fromCharCode (0xffff);
+data[1551] = String.fromCharCode (0xffff);
+data[1552] = String.fromCharCode (0xffff);
+data[1553] = String.fromCharCode (0xffff);
+data[1554] = String.fromCharCode (0xffff);
+data[1555] = String.fromCharCode (0xffff);
+data[1556] = String.fromCharCode (0xffff);
+data[1557] = String.fromCharCode (0xffff);
+data[1558] = String.fromCharCode (0xffff);
+data[1559] = String.fromCharCode (0xffff);
+data[1560] = String.fromCharCode (0xffff);
+data[1561] = String.fromCharCode (0xffff);
+data[1562] = String.fromCharCode (0xffff);
+data[1563] = String.fromCharCode (0xffff);
+data[1564] = String.fromCharCode (0xffff);
+data[1565] = String.fromCharCode (0xffff);
+data[1566] = String.fromCharCode (0xffff);
+data[1567] = String.fromCharCode (0xffff);
+data[1568] = String.fromCharCode (0xffff);
+data[1569] = String.fromCharCode (0xffff);
+data[1570] = String.fromCharCode (0xffff);
+data[1571] = String.fromCharCode (0xffff);
+data[1572] = String.fromCharCode (0xffff);
+data[1573] = String.fromCharCode (0xffff);
+data[1574] = String.fromCharCode (0xffff);
+data[1575] = String.fromCharCode (0xffff);
+data[1576] = String.fromCharCode (0xffff);
+data[1577] = String.fromCharCode (0xffff);
+data[1578] = String.fromCharCode (0xffff);
+data[1579] = String.fromCharCode (0xffff);
+data[1580] = String.fromCharCode (0xffff);
+data[1581] = String.fromCharCode (0xffff);
+data[1582] = String.fromCharCode (0xffff);
+data[1583] = String.fromCharCode (0xffff);
+data[1584] = String.fromCharCode (0xffff);
+data[1585] = String.fromCharCode (0xffff);
+data[1586] = String.fromCharCode (0xffff);
+data[1587] = String.fromCharCode (0xffff);
+data[1588] = String.fromCharCode (0xffff);
+data[1589] = String.fromCharCode (0xffff);
+data[1590] = String.fromCharCode (0xffff);
+data[1591] = String.fromCharCode (0xffff);
+data[1592] = String.fromCharCode (0xffff);
+data[1593] = String.fromCharCode (0xffff);
+data[1594] = String.fromCharCode (0xffff);
+data[1595] = String.fromCharCode (0xffff);
+data[1596] = String.fromCharCode (0xffff);
+data[1597] = String.fromCharCode (0xffff);
+data[1598] = String.fromCharCode (0xffff);
+data[1599] = String.fromCharCode (0xffff);
+data[1600] = String.fromCharCode (0xffff);
+data[1601] = String.fromCharCode (0xffff);
+data[1602] = String.fromCharCode (0xffff);
+data[1603] = String.fromCharCode (0xffff);
+data[1604] = String.fromCharCode (0xffff);
+data[1605] = String.fromCharCode (0xffff);
+data[1606] = String.fromCharCode (0xffff);
+data[1607] = String.fromCharCode (0xffff);
+data[1608] = String.fromCharCode (0xffff);
+data[1609] = String.fromCharCode (0xffff);
+data[1610] = String.fromCharCode (0xffff);
+data[1611] = String.fromCharCode (0xffff);
+data[1612] = String.fromCharCode (0xffff);
+data[1613] = String.fromCharCode (0xffff);
+data[1614] = String.fromCharCode (0xffff);
+data[1615] = String.fromCharCode (0xffff);
+data[1616] = String.fromCharCode (0xffff);
+data[1617] = String.fromCharCode (0xffff);
+data[1618] = String.fromCharCode (0xffff);
+data[1619] = String.fromCharCode (0xffff);
+data[1620] = String.fromCharCode (0xffff);
+data[1621] = String.fromCharCode (0xffff);
+data[1622] = String.fromCharCode (0xffff);
+data[1623] = String.fromCharCode (0xffff);
+data[1624] = String.fromCharCode (0xffff);
+data[1625] = String.fromCharCode (0xffff);
+data[1626] = String.fromCharCode (0xffff);
+data[1627] = String.fromCharCode (0xffff);
+data[1628] = String.fromCharCode (0xffff);
+data[1629] = String.fromCharCode (0xffff);
+data[1630] = String.fromCharCode (0xffff);
+data[1631] = String.fromCharCode (0xffff);
+data[1632] = String.fromCharCode (0xffff);
+data[1633] = String.fromCharCode (0xffff);
+data[1634] = String.fromCharCode (0xffff);
+data[1635] = String.fromCharCode (0xffff);
+data[1636] = String.fromCharCode (0xffff);
+data[1637] = String.fromCharCode (0xffff);
+data[1638] = String.fromCharCode (0xffff);
+data[1639] = String.fromCharCode (0xffff);
+data[1640] = String.fromCharCode (0xffff);
+data[1641] = String.fromCharCode (0xffff);
+data[1642] = String.fromCharCode (0xffff);
+data[1643] = String.fromCharCode (0xffff);
+data[1644] = String.fromCharCode (0xffff);
+data[1645] = String.fromCharCode (0xffff);
+data[1646] = String.fromCharCode (0xffff);
+data[1647] = String.fromCharCode (0xffff);
+data[1648] = String.fromCharCode (0xffff);
+data[1649] = String.fromCharCode (0xffff);
+data[1650] = String.fromCharCode (0xffff);
+data[1651] = String.fromCharCode (0xffff);
+data[1652] = String.fromCharCode (0xffff);
+data[1653] = String.fromCharCode (0xffff);
+data[1654] = String.fromCharCode (0xffff);
+data[1655] = String.fromCharCode (0xffff);
+data[1656] = String.fromCharCode (0xffff);
+data[1657] = String.fromCharCode (0xffff);
+data[1658] = String.fromCharCode (0xffff);
+data[1659] = String.fromCharCode (0xffff);
+data[1660] = String.fromCharCode (0xffff);
+data[1661] = String.fromCharCode (0xffff);
+data[1662] = String.fromCharCode (0xffff);
+data[1663] = String.fromCharCode (0xffff);
+data[1664] = String.fromCharCode (0xffff);
+data[1665] = String.fromCharCode (0xffff);
+data[1666] = String.fromCharCode (0xffff);
+data[1667] = String.fromCharCode (0xffff);
+data[1668] = String.fromCharCode (0xffff);
+data[1669] = String.fromCharCode (0xffff);
+data[1670] = String.fromCharCode (0xffff);
+data[1671] = String.fromCharCode (0xffff);
+data[1672] = String.fromCharCode (0xffff);
+data[1673] = String.fromCharCode (0xffff);
+data[1674] = String.fromCharCode (0xffff);
+data[1675] = String.fromCharCode (0xffff);
+data[1676] = String.fromCharCode (0xffff);
+data[1677] = String.fromCharCode (0xffff);
+data[1678] = String.fromCharCode (0xffff);
+data[1679] = String.fromCharCode (0xffff);
+data[1680] = String.fromCharCode (0xffff);
+data[1681] = String.fromCharCode (0xffff);
+data[1682] = String.fromCharCode (0xffff);
+data[1683] = String.fromCharCode (0xffff);
+data[1684] = String.fromCharCode (0xffff);
+data[1685] = String.fromCharCode (0xffff);
+data[1686] = String.fromCharCode (0xffff);
+data[1687] = String.fromCharCode (0xffff);
+data[1688] = String.fromCharCode (0xffff);
+data[1689] = String.fromCharCode (0xffff);
+data[1690] = String.fromCharCode (0xffff);
+data[1691] = String.fromCharCode (0xffff);
+data[1692] = String.fromCharCode (0xffff);
+data[1693] = String.fromCharCode (0xffff);
+data[1694] = String.fromCharCode (0xffff);
+data[1695] = String.fromCharCode (0xffff);
+data[1696] = String.fromCharCode (0xffff);
+data[1697] = String.fromCharCode (0xffff);
+data[1698] = String.fromCharCode (0xffff);
+data[1699] = String.fromCharCode (0xffff);
+data[1700] = String.fromCharCode (0xffff);
+data[1701] = String.fromCharCode (0xffff);
+data[1702] = String.fromCharCode (0xffff);
+data[1703] = String.fromCharCode (0xffff);
+data[1704] = String.fromCharCode (0xffff);
+data[1705] = String.fromCharCode (0xffff);
+data[1706] = String.fromCharCode (0xffff);
+data[1707] = String.fromCharCode (0xffff);
+data[1708] = String.fromCharCode (0xffff);
+data[1709] = String.fromCharCode (0xffff);
+data[1710] = String.fromCharCode (0xffff);
+data[1711] = String.fromCharCode (0xffff);
+data[1712] = String.fromCharCode (0xffff);
+data[1713] = String.fromCharCode (0xffff);
+data[1714] = String.fromCharCode (0xffff);
+data[1715] = String.fromCharCode (0xffff);
+data[1716] = String.fromCharCode (0xffff);
+data[1717] = String.fromCharCode (0xffff);
+data[1718] = String.fromCharCode (0xffff);
+data[1719] = String.fromCharCode (0xffff);
+data[1720] = String.fromCharCode (0xffff);
+data[1721] = String.fromCharCode (0xffff);
+data[1722] = String.fromCharCode (0xffff);
+data[1723] = String.fromCharCode (0xffff);
+data[1724] = String.fromCharCode (0xffff);
+data[1725] = String.fromCharCode (0xffff);
+data[1726] = String.fromCharCode (0xffff);
+data[1727] = String.fromCharCode (0xffff);
+data[1728] = String.fromCharCode (0xffff);
+data[1729] = String.fromCharCode (0xffff);
+data[1730] = String.fromCharCode (0xffff);
+data[1731] = String.fromCharCode (0xffff);
+data[1732] = String.fromCharCode (0xffff);
+data[1733] = String.fromCharCode (0xffff);
+data[1734] = String.fromCharCode (0xffff);
+data[1735] = String.fromCharCode (0xffff);
+data[1736] = String.fromCharCode (0xffff);
+data[1737] = String.fromCharCode (0xffff);
+data[1738] = String.fromCharCode (0xffff);
+data[1739] = String.fromCharCode (0xffff);
+data[1740] = String.fromCharCode (0xffff);
+data[1741] = String.fromCharCode (0xffff);
+data[1742] = String.fromCharCode (0xffff);
+data[1743] = String.fromCharCode (0xffff);
+data[1744] = String.fromCharCode (0xffff);
+data[1745] = String.fromCharCode (0xffff);
+data[1746] = String.fromCharCode (0xffff);
+data[1747] = String.fromCharCode (0xffff);
+data[1748] = String.fromCharCode (0xffff);
+data[1749] = String.fromCharCode (0xffff);
+data[1750] = String.fromCharCode (0xffff);
+data[1751] = String.fromCharCode (0xffff);
+data[1752] = String.fromCharCode (0xffff);
+data[1753] = String.fromCharCode (0xffff);
+data[1754] = String.fromCharCode (0xffff);
+data[1755] = String.fromCharCode (0xffff);
+data[1756] = String.fromCharCode (0xffff);
+data[1757] = String.fromCharCode (0xffff);
+data[1758] = String.fromCharCode (0xffff);
+data[1759] = String.fromCharCode (0xffff);
+data[1760] = String.fromCharCode (0xffff);
+data[1761] = String.fromCharCode (0xffff);
+data[1762] = String.fromCharCode (0xffff);
+data[1763] = String.fromCharCode (0xffff);
+data[1764] = String.fromCharCode (0xffff);
+data[1765] = String.fromCharCode (0xffff);
+data[1766] = String.fromCharCode (0xffff);
+data[1767] = String.fromCharCode (0xffff);
+data[1768] = String.fromCharCode (0xffff);
+data[1769] = String.fromCharCode (0xffff);
+data[1770] = String.fromCharCode (0xffff);
+data[1771] = String.fromCharCode (0xffff);
+data[1772] = String.fromCharCode (0xffff);
+data[1773] = String.fromCharCode (0xffff);
+data[1774] = String.fromCharCode (0xffff);
+data[1775] = String.fromCharCode (0xffff);
+data[1776] = String.fromCharCode (0xffff);
+data[1777] = String.fromCharCode (0xffff);
+data[1778] = String.fromCharCode (0xffff);
+data[1779] = String.fromCharCode (0xffff);
+data[1780] = String.fromCharCode (0xffff);
+data[1781] = String.fromCharCode (0xffff);
+data[1782] = String.fromCharCode (0xffff);
+data[1783] = String.fromCharCode (0xffff);
+data[1784] = String.fromCharCode (0xffff);
+data[1785] = String.fromCharCode (0xffff);
+data[1786] = String.fromCharCode (0xffff);
+data[1787] = String.fromCharCode (0xffff);
+data[1788] = String.fromCharCode (0xffff);
+data[1789] = String.fromCharCode (0xffff);
+data[1790] = String.fromCharCode (0xffff);
+data[1791] = String.fromCharCode (0xffff);
+data[1792] = String.fromCharCode (0xffff);
+data[1793] = String.fromCharCode (0xffff);
+data[1794] = String.fromCharCode (0xffff);
+data[1795] = String.fromCharCode (0xffff);
+data[1796] = String.fromCharCode (0xffff);
+data[1797] = String.fromCharCode (0xffff);
+data[1798] = String.fromCharCode (0xffff);
+data[1799] = String.fromCharCode (0xffff);
+data[1800] = String.fromCharCode (0xffff);
+data[1801] = String.fromCharCode (0xffff);
+data[1802] = String.fromCharCode (0xffff);
+data[1803] = String.fromCharCode (0xffff);
+data[1804] = String.fromCharCode (0xffff);
+data[1805] = String.fromCharCode (0xffff);
+data[1806] = String.fromCharCode (0xffff);
+data[1807] = String.fromCharCode (0xffff);
+data[1808] = String.fromCharCode (0xffff);
+data[1809] = String.fromCharCode (0xffff);
+data[1810] = String.fromCharCode (0xffff);
+data[1811] = String.fromCharCode (0xffff);
+data[1812] = String.fromCharCode (0xffff);
+data[1813] = String.fromCharCode (0xffff);
+data[1814] = String.fromCharCode (0xffff);
+data[1815] = String.fromCharCode (0xffff);
+data[1816] = String.fromCharCode (0xffff);
+data[1817] = String.fromCharCode (0xffff);
+data[1818] = String.fromCharCode (0xffff);
+data[1819] = String.fromCharCode (0xffff);
+data[1820] = String.fromCharCode (0xffff);
+data[1821] = String.fromCharCode (0xffff);
+data[1822] = String.fromCharCode (0xffff);
+data[1823] = String.fromCharCode (0xffff);
+data[1824] = String.fromCharCode (0xffff);
+data[1825] = String.fromCharCode (0xffff);
+data[1826] = String.fromCharCode (0xffff);
+data[1827] = String.fromCharCode (0xffff);
+data[1828] = String.fromCharCode (0xffff);
+data[1829] = String.fromCharCode (0xffff);
+data[1830] = String.fromCharCode (0xffff);
+data[1831] = String.fromCharCode (0xffff);
+data[1832] = String.fromCharCode (0xffff);
+data[1833] = String.fromCharCode (0xffff);
+data[1834] = String.fromCharCode (0xffff);
+data[1835] = String.fromCharCode (0xffff);
+data[1836] = String.fromCharCode (0xffff);
+data[1837] = String.fromCharCode (0xffff);
+data[1838] = String.fromCharCode (0xffff);
+data[1839] = String.fromCharCode (0xffff);
+data[1840] = String.fromCharCode (0xffff);
+data[1841] = String.fromCharCode (0xffff);
+data[1842] = String.fromCharCode (0xffff);
+data[1843] = String.fromCharCode (0xffff);
+data[1844] = String.fromCharCode (0xffff);
+data[1845] = String.fromCharCode (0xffff);
+data[1846] = String.fromCharCode (0xffff);
+data[1847] = String.fromCharCode (0xffff);
+data[1848] = String.fromCharCode (0xffff);
+data[1849] = String.fromCharCode (0xffff);
+data[1850] = String.fromCharCode (0xffff);
+data[1851] = String.fromCharCode (0xffff);
+data[1852] = String.fromCharCode (0xffff);
+data[1853] = String.fromCharCode (0xffff);
+data[1854] = String.fromCharCode (0xffff);
+data[1855] = String.fromCharCode (0xffff);
+data[1856] = String.fromCharCode (0xffff);
+data[1857] = String.fromCharCode (0xffff);
+data[1858] = String.fromCharCode (0xffff);
+data[1859] = String.fromCharCode (0xffff);
+data[1860] = String.fromCharCode (0xffff);
+data[1861] = String.fromCharCode (0xffff);
+data[1862] = String.fromCharCode (0xffff);
+data[1863] = String.fromCharCode (0xffff);
+data[1864] = String.fromCharCode (0xffff);
+data[1865] = String.fromCharCode (0xffff);
+data[1866] = String.fromCharCode (0xffff);
+data[1867] = String.fromCharCode (0xffff);
+data[1868] = String.fromCharCode (0xffff);
+data[1869] = String.fromCharCode (0xffff);
+data[1870] = String.fromCharCode (0xffff);
+data[1871] = String.fromCharCode (0xffff);
+data[1872] = String.fromCharCode (0xffff);
+data[1873] = String.fromCharCode (0xffff);
+data[1874] = String.fromCharCode (0xffff);
+data[1875] = String.fromCharCode (0xffff);
+data[1876] = String.fromCharCode (0xffff);
+data[1877] = String.fromCharCode (0xffff);
+data[1878] = String.fromCharCode (0xffff);
+data[1879] = String.fromCharCode (0xffff);
+data[1880] = String.fromCharCode (0xffff);
+data[1881] = String.fromCharCode (0xffff);
+data[1882] = String.fromCharCode (0xffff);
+data[1883] = String.fromCharCode (0xffff);
+data[1884] = String.fromCharCode (0xffff);
+data[1885] = String.fromCharCode (0xffff);
+data[1886] = String.fromCharCode (0xffff);
+data[1887] = String.fromCharCode (0xffff);
+data[1888] = String.fromCharCode (0xffff);
+data[1889] = String.fromCharCode (0xffff);
+data[1890] = String.fromCharCode (0xffff);
+data[1891] = String.fromCharCode (0xffff);
+data[1892] = String.fromCharCode (0xffff);
+data[1893] = String.fromCharCode (0xffff);
+data[1894] = String.fromCharCode (0xffff);
+data[1895] = String.fromCharCode (0xffff);
+data[1896] = String.fromCharCode (0xffff);
+data[1897] = String.fromCharCode (0xffff);
+data[1898] = String.fromCharCode (0xffff);
+data[1899] = String.fromCharCode (0xffff);
+data[1900] = String.fromCharCode (0xffff);
+data[1901] = String.fromCharCode (0xffff);
+data[1902] = String.fromCharCode (0xffff);
+data[1903] = String.fromCharCode (0xffff);
+data[1904] = String.fromCharCode (0xffff);
+data[1905] = String.fromCharCode (0xffff);
+data[1906] = String.fromCharCode (0xffff);
+data[1907] = String.fromCharCode (0xffff);
+data[1908] = String.fromCharCode (0xffff);
+data[1909] = String.fromCharCode (0xffff);
+data[1910] = String.fromCharCode (0xffff);
+data[1911] = String.fromCharCode (0xffff);
+data[1912] = String.fromCharCode (0xffff);
+data[1913] = String.fromCharCode (0xffff);
+data[1914] = String.fromCharCode (0xffff);
+data[1915] = String.fromCharCode (0xffff);
+data[1916] = String.fromCharCode (0xffff);
+data[1917] = String.fromCharCode (0xffff);
+data[1918] = String.fromCharCode (0xffff);
+data[1919] = String.fromCharCode (0xffff);
+data[1920] = String.fromCharCode (0xffff);
+data[1921] = String.fromCharCode (0xffff);
+data[1922] = String.fromCharCode (0xffff);
+data[1923] = String.fromCharCode (0xffff);
+data[1924] = String.fromCharCode (0xffff);
+data[1925] = String.fromCharCode (0xffff);
+data[1926] = String.fromCharCode (0xffff);
+data[1927] = String.fromCharCode (0xffff);
+data[1928] = String.fromCharCode (0xffff);
+data[1929] = String.fromCharCode (0xffff);
+data[1930] = String.fromCharCode (0xffff);
+data[1931] = String.fromCharCode (0xffff);
+data[1932] = String.fromCharCode (0xffff);
+data[1933] = String.fromCharCode (0xffff);
+data[1934] = String.fromCharCode (0xffff);
+data[1935] = String.fromCharCode (0xffff);
+data[1936] = String.fromCharCode (0xffff);
+data[1937] = String.fromCharCode (0xffff);
+data[1938] = String.fromCharCode (0xffff);
+data[1939] = String.fromCharCode (0xffff);
+data[1940] = String.fromCharCode (0xffff);
+data[1941] = String.fromCharCode (0xffff);
+data[1942] = String.fromCharCode (0xffff);
+data[1943] = String.fromCharCode (0xffff);
+data[1944] = String.fromCharCode (0xffff);
+data[1945] = String.fromCharCode (0xffff);
+data[1946] = String.fromCharCode (0xffff);
+data[1947] = String.fromCharCode (0xffff);
+data[1948] = String.fromCharCode (0xffff);
+data[1949] = String.fromCharCode (0xffff);
+data[1950] = String.fromCharCode (0xffff);
+data[1951] = String.fromCharCode (0xffff);
+data[1952] = String.fromCharCode (0xffff);
+data[1953] = String.fromCharCode (0xffff);
+data[1954] = String.fromCharCode (0xffff);
+data[1955] = String.fromCharCode (0xffff);
+data[1956] = String.fromCharCode (0xffff);
+data[1957] = String.fromCharCode (0xffff);
+data[1958] = String.fromCharCode (0xffff);
+data[1959] = String.fromCharCode (0xffff);
+data[1960] = String.fromCharCode (0xffff);
+data[1961] = String.fromCharCode (0xffff);
+data[1962] = String.fromCharCode (0xffff);
+data[1963] = String.fromCharCode (0xffff);
+data[1964] = String.fromCharCode (0xffff);
+data[1965] = String.fromCharCode (0xffff);
+data[1966] = String.fromCharCode (0xffff);
+data[1967] = String.fromCharCode (0xffff);
+data[1968] = String.fromCharCode (0xffff);
+data[1969] = String.fromCharCode (0xffff);
+data[1970] = String.fromCharCode (0xffff);
+data[1971] = String.fromCharCode (0xffff);
+data[1972] = String.fromCharCode (0xffff);
+data[1973] = String.fromCharCode (0xffff);
+data[1974] = String.fromCharCode (0xffff);
+data[1975] = String.fromCharCode (0xffff);
+data[1976] = String.fromCharCode (0xffff);
+data[1977] = String.fromCharCode (0xffff);
+data[1978] = String.fromCharCode (0xffff);
+data[1979] = String.fromCharCode (0xffff);
+data[1980] = String.fromCharCode (0xffff);
+data[1981] = String.fromCharCode (0xffff);
+data[1982] = String.fromCharCode (0xffff);
+data[1983] = String.fromCharCode (0xffff);
+data[1984] = String.fromCharCode (0xffff);
+data[1985] = String.fromCharCode (0xffff);
+data[1986] = String.fromCharCode (0xffff);
+data[1987] = String.fromCharCode (0xffff);
+data[1988] = String.fromCharCode (0xffff);
+data[1989] = String.fromCharCode (0xffff);
+data[1990] = String.fromCharCode (0xffff);
+data[1991] = String.fromCharCode (0xffff);
+data[1992] = String.fromCharCode (0xffff);
+data[1993] = String.fromCharCode (0xffff);
+data[1994] = String.fromCharCode (0xffff);
+data[1995] = String.fromCharCode (0xffff);
+data[1996] = String.fromCharCode (0xffff);
+data[1997] = String.fromCharCode (0xffff);
+data[1998] = String.fromCharCode (0xffff);
+data[1999] = String.fromCharCode (0xffff);
+data[2000] = String.fromCharCode (0xffff);
+data[2001] = String.fromCharCode (0xffff);
+data[2002] = String.fromCharCode (0xffff);
+data[2003] = String.fromCharCode (0xffff);
+data[2004] = String.fromCharCode (0xffff);
+data[2005] = String.fromCharCode (0xffff);
+data[2006] = String.fromCharCode (0xffff);
+data[2007] = String.fromCharCode (0xffff);
+data[2008] = String.fromCharCode (0xffff);
+data[2009] = String.fromCharCode (0xffff);
+data[2010] = String.fromCharCode (0xffff);
+data[2011] = String.fromCharCode (0xffff);
+data[2012] = String.fromCharCode (0xffff);
+data[2013] = String.fromCharCode (0xffff);
+data[2014] = String.fromCharCode (0xffff);
+data[2015] = String.fromCharCode (0xffff);
+data[2016] = String.fromCharCode (0xffff);
+data[2017] = String.fromCharCode (0xffff);
+data[2018] = String.fromCharCode (0xffff);
+data[2019] = String.fromCharCode (0xffff);
+data[2020] = String.fromCharCode (0xffff);
+data[2021] = String.fromCharCode (0xffff);
+data[2022] = String.fromCharCode (0xffff);
+data[2023] = String.fromCharCode (0xffff);
+data[2024] = String.fromCharCode (0xffff);
+data[2025] = String.fromCharCode (0xffff);
+data[2026] = String.fromCharCode (0xffff);
+data[2027] = String.fromCharCode (0xffff);
+data[2028] = String.fromCharCode (0xffff);
+data[2029] = String.fromCharCode (0xffff);
+data[2030] = String.fromCharCode (0xffff);
+data[2031] = String.fromCharCode (0xffff);
+data[2032] = String.fromCharCode (0xffff);
+data[2033] = String.fromCharCode (0xffff);
+data[2034] = String.fromCharCode (0xffff);
+data[2035] = String.fromCharCode (0xffff);
+data[2036] = String.fromCharCode (0xffff);
+data[2037] = String.fromCharCode (0xffff);
+data[2038] = String.fromCharCode (0xffff);
+data[2039] = String.fromCharCode (0xffff);
+data[2040] = String.fromCharCode (0xffff);
+data[2041] = String.fromCharCode (0xffff);
+data[2042] = String.fromCharCode (0xffff);
+data[2043] = String.fromCharCode (0xffff);
+data[2044] = String.fromCharCode (0xffff);
+data[2045] = String.fromCharCode (0xffff);
+data[2046] = String.fromCharCode (0xffff);
+data[2047] = String.fromCharCode (0xffff);
+data[2048] = String.fromCharCode (0xffff);
+data[2049] = String.fromCharCode (0xffff);
+data[2050] = String.fromCharCode (0xffff);
+data[2051] = String.fromCharCode (0xffff);
+data[2052] = String.fromCharCode (0xffff);
+data[2053] = String.fromCharCode (0xffff);
+data[2054] = String.fromCharCode (0xffff);
+data[2055] = String.fromCharCode (0xffff);
+data[2056] = String.fromCharCode (0xffff);
+data[2057] = String.fromCharCode (0xffff);
+data[2058] = String.fromCharCode (0xffff);
+data[2059] = String.fromCharCode (0xffff);
+data[2060] = String.fromCharCode (0xffff);
+data[2061] = String.fromCharCode (0xffff);
+data[2062] = String.fromCharCode (0xffff);
+data[2063] = String.fromCharCode (0xffff);
+data[2064] = String.fromCharCode (0xffff);
+data[2065] = String.fromCharCode (0xffff);
+data[2066] = String.fromCharCode (0xffff);
+data[2067] = String.fromCharCode (0xffff);
+data[2068] = String.fromCharCode (0xffff);
+data[2069] = String.fromCharCode (0xffff);
+data[2070] = String.fromCharCode (0xffff);
+data[2071] = String.fromCharCode (0xffff);
+data[2072] = String.fromCharCode (0xffff);
+data[2073] = String.fromCharCode (0xffff);
+data[2074] = String.fromCharCode (0xffff);
+data[2075] = String.fromCharCode (0xffff);
+data[2076] = String.fromCharCode (0xffff);
+data[2077] = String.fromCharCode (0xffff);
+data[2078] = String.fromCharCode (0xffff);
+data[2079] = String.fromCharCode (0xffff);
+data[2080] = String.fromCharCode (0xffff);
+data[2081] = String.fromCharCode (0xffff);
+data[2082] = String.fromCharCode (0xffff);
+data[2083] = String.fromCharCode (0xffff);
+data[2084] = String.fromCharCode (0xffff);
+data[2085] = String.fromCharCode (0xffff);
+data[2086] = String.fromCharCode (0xffff);
+data[2087] = String.fromCharCode (0xffff);
+data[2088] = String.fromCharCode (0xffff);
+data[2089] = String.fromCharCode (0xffff);
+data[2090] = String.fromCharCode (0xffff);
+data[2091] = String.fromCharCode (0xffff);
+data[2092] = String.fromCharCode (0xffff);
+data[2093] = String.fromCharCode (0xffff);
+data[2094] = String.fromCharCode (0xffff);
+data[2095] = String.fromCharCode (0xffff);
+data[2096] = String.fromCharCode (0xffff);
+data[2097] = String.fromCharCode (0xffff);
+data[2098] = String.fromCharCode (0xffff);
+data[2099] = String.fromCharCode (0xffff);
+data[2100] = String.fromCharCode (0xffff);
+data[2101] = String.fromCharCode (0xffff);
+data[2102] = String.fromCharCode (0xffff);
+data[2103] = String.fromCharCode (0xffff);
+data[2104] = String.fromCharCode (0xffff);
+data[2105] = String.fromCharCode (0xffff);
+data[2106] = String.fromCharCode (0xffff);
+data[2107] = String.fromCharCode (0xffff);
+data[2108] = String.fromCharCode (0xffff);
+data[2109] = String.fromCharCode (0xffff);
+data[2110] = String.fromCharCode (0xffff);
+data[2111] = String.fromCharCode (0xffff);
+data[2112] = String.fromCharCode (0xffff);
+data[2113] = String.fromCharCode (0xffff);
+data[2114] = String.fromCharCode (0xffff);
+data[2115] = String.fromCharCode (0xffff);
+data[2116] = String.fromCharCode (0xffff);
+data[2117] = String.fromCharCode (0xffff);
+data[2118] = String.fromCharCode (0xffff);
+data[2119] = String.fromCharCode (0xffff);
+data[2120] = String.fromCharCode (0xffff);
+data[2121] = String.fromCharCode (0xffff);
+data[2122] = String.fromCharCode (0xffff);
+data[2123] = String.fromCharCode (0xffff);
+data[2124] = String.fromCharCode (0xffff);
+data[2125] = String.fromCharCode (0xffff);
+data[2126] = String.fromCharCode (0xffff);
+data[2127] = String.fromCharCode (0xffff);
+data[2128] = String.fromCharCode (0xffff);
+data[2129] = String.fromCharCode (0xffff);
+data[2130] = String.fromCharCode (0xffff);
+data[2131] = String.fromCharCode (0xffff);
+data[2132] = String.fromCharCode (0xffff);
+data[2133] = String.fromCharCode (0xffff);
+data[2134] = String.fromCharCode (0xffff);
+data[2135] = String.fromCharCode (0xffff);
+data[2136] = String.fromCharCode (0xffff);
+data[2137] = String.fromCharCode (0xffff);
+data[2138] = String.fromCharCode (0xffff);
+data[2139] = String.fromCharCode (0xffff);
+data[2140] = String.fromCharCode (0xffff);
+data[2141] = String.fromCharCode (0xffff);
+data[2142] = String.fromCharCode (0xffff);
+data[2143] = String.fromCharCode (0xffff);
+data[2144] = String.fromCharCode (0xffff);
+data[2145] = String.fromCharCode (0xffff);
+data[2146] = String.fromCharCode (0xffff);
+data[2147] = String.fromCharCode (0xffff);
+data[2148] = String.fromCharCode (0xffff);
+data[2149] = String.fromCharCode (0xffff);
+data[2150] = String.fromCharCode (0xffff);
+data[2151] = String.fromCharCode (0xffff);
+data[2152] = String.fromCharCode (0xffff);
+data[2153] = String.fromCharCode (0xffff);
+data[2154] = String.fromCharCode (0xffff);
+data[2155] = String.fromCharCode (0xffff);
+data[2156] = String.fromCharCode (0xffff);
+data[2157] = String.fromCharCode (0xffff);
+data[2158] = String.fromCharCode (0xffff);
+data[2159] = String.fromCharCode (0xffff);
+data[2160] = String.fromCharCode (0xffff);
+data[2161] = String.fromCharCode (0xffff);
+data[2162] = String.fromCharCode (0xffff);
+data[2163] = String.fromCharCode (0xffff);
+data[2164] = String.fromCharCode (0xffff);
+data[2165] = String.fromCharCode (0xffff);
+data[2166] = String.fromCharCode (0xffff);
+data[2167] = String.fromCharCode (0xffff);
+data[2168] = String.fromCharCode (0xffff);
+data[2169] = String.fromCharCode (0xffff);
+data[2170] = String.fromCharCode (0xffff);
+data[2171] = String.fromCharCode (0xffff);
+data[2172] = String.fromCharCode (0xffff);
+data[2173] = String.fromCharCode (0xffff);
+data[2174] = String.fromCharCode (0xffff);
+data[2175] = String.fromCharCode (0xffff);
+data[2176] = String.fromCharCode (0xffff);
+data[2177] = String.fromCharCode (0xffff);
+data[2178] = String.fromCharCode (0xffff);
+data[2179] = String.fromCharCode (0xffff);
+data[2180] = String.fromCharCode (0xffff);
+data[2181] = String.fromCharCode (0xffff);
+data[2182] = String.fromCharCode (0xffff);
+data[2183] = String.fromCharCode (0xffff);
+data[2184] = String.fromCharCode (0xffff);
+data[2185] = String.fromCharCode (0xffff);
+data[2186] = String.fromCharCode (0xffff);
+data[2187] = String.fromCharCode (0xffff);
+data[2188] = String.fromCharCode (0xffff);
+data[2189] = String.fromCharCode (0xffff);
+data[2190] = String.fromCharCode (0xffff);
+data[2191] = String.fromCharCode (0xffff);
+data[2192] = String.fromCharCode (0xffff);
+data[2193] = String.fromCharCode (0xffff);
+data[2194] = String.fromCharCode (0xffff);
+data[2195] = String.fromCharCode (0xffff);
+data[2196] = String.fromCharCode (0xffff);
+data[2197] = String.fromCharCode (0xffff);
+data[2198] = String.fromCharCode (0xffff);
+data[2199] = String.fromCharCode (0xffff);
+data[2200] = String.fromCharCode (0xffff);
+data[2201] = String.fromCharCode (0xffff);
+data[2202] = String.fromCharCode (0xffff);
+data[2203] = String.fromCharCode (0xffff);
+data[2204] = String.fromCharCode (0xffff);
+data[2205] = String.fromCharCode (0xffff);
+data[2206] = String.fromCharCode (0xffff);
+data[2207] = String.fromCharCode (0xffff);
+data[2208] = String.fromCharCode (0xffff);
+data[2209] = String.fromCharCode (0xffff);
+data[2210] = String.fromCharCode (0xffff);
+data[2211] = String.fromCharCode (0xffff);
+data[2212] = String.fromCharCode (0xffff);
+data[2213] = String.fromCharCode (0xffff);
+data[2214] = String.fromCharCode (0xffff);
+data[2215] = String.fromCharCode (0xffff);
+data[2216] = String.fromCharCode (0xffff);
+data[2217] = String.fromCharCode (0xffff);
+data[2218] = String.fromCharCode (0xffff);
+data[2219] = String.fromCharCode (0xffff);
+data[2220] = String.fromCharCode (0xffff);
+data[2221] = String.fromCharCode (0xffff);
+data[2222] = String.fromCharCode (0xffff);
+data[2223] = String.fromCharCode (0xffff);
+data[2224] = String.fromCharCode (0xffff);
+data[2225] = String.fromCharCode (0xffff);
+data[2226] = String.fromCharCode (0xffff);
+data[2227] = String.fromCharCode (0xffff);
+data[2228] = String.fromCharCode (0xffff);
+data[2229] = String.fromCharCode (0xffff);
+data[2230] = String.fromCharCode (0xffff);
+data[2231] = String.fromCharCode (0xffff);
+data[2232] = String.fromCharCode (0xffff);
+data[2233] = String.fromCharCode (0xffff);
+data[2234] = String.fromCharCode (0xffff);
+data[2235] = String.fromCharCode (0xffff);
+data[2236] = String.fromCharCode (0xffff);
+data[2237] = String.fromCharCode (0xffff);
+data[2238] = String.fromCharCode (0xffff);
+data[2239] = String.fromCharCode (0xffff);
+data[2240] = String.fromCharCode (0xffff);
+data[2241] = String.fromCharCode (0xffff);
+data[2242] = String.fromCharCode (0xffff);
+data[2243] = String.fromCharCode (0xffff);
+data[2244] = String.fromCharCode (0xffff);
+data[2245] = String.fromCharCode (0xffff);
+data[2246] = String.fromCharCode (0xffff);
+data[2247] = String.fromCharCode (0xffff);
+data[2248] = String.fromCharCode (0xffff);
+data[2249] = String.fromCharCode (0xffff);
+data[2250] = String.fromCharCode (0xffff);
+data[2251] = String.fromCharCode (0xffff);
+data[2252] = String.fromCharCode (0xffff);
+data[2253] = String.fromCharCode (0xffff);
+data[2254] = String.fromCharCode (0xffff);
+data[2255] = String.fromCharCode (0xffff);
+data[2256] = String.fromCharCode (0xffff);
+data[2257] = String.fromCharCode (0xffff);
+data[2258] = String.fromCharCode (0xffff);
+data[2259] = String.fromCharCode (0xffff);
+data[2260] = String.fromCharCode (0xffff);
+data[2261] = String.fromCharCode (0xffff);
+data[2262] = String.fromCharCode (0xffff);
+data[2263] = String.fromCharCode (0xffff);
+data[2264] = String.fromCharCode (0xffff);
+data[2265] = String.fromCharCode (0xffff);
+data[2266] = String.fromCharCode (0xffff);
+data[2267] = String.fromCharCode (0xffff);
+data[2268] = String.fromCharCode (0xffff);
+data[2269] = String.fromCharCode (0xffff);
+data[2270] = String.fromCharCode (0xffff);
+data[2271] = String.fromCharCode (0xffff);
+data[2272] = String.fromCharCode (0xffff);
+data[2273] = String.fromCharCode (0xffff);
+data[2274] = String.fromCharCode (0xffff);
+data[2275] = String.fromCharCode (0xffff);
+data[2276] = String.fromCharCode (0xffff);
+data[2277] = String.fromCharCode (0xffff);
+data[2278] = String.fromCharCode (0xffff);
+data[2279] = String.fromCharCode (0xffff);
+data[2280] = String.fromCharCode (0xffff);
+data[2281] = String.fromCharCode (0xffff);
+data[2282] = String.fromCharCode (0xffff);
+data[2283] = String.fromCharCode (0xffff);
+data[2284] = String.fromCharCode (0xffff);
+data[2285] = String.fromCharCode (0xffff);
+data[2286] = String.fromCharCode (0xffff);
+data[2287] = String.fromCharCode (0xffff);
+data[2288] = String.fromCharCode (0xffff);
+data[2289] = String.fromCharCode (0xffff);
+data[2290] = String.fromCharCode (0xffff);
+data[2291] = String.fromCharCode (0xffff);
+data[2292] = String.fromCharCode (0xffff);
+data[2293] = String.fromCharCode (0xffff);
+data[2294] = String.fromCharCode (0xffff);
+data[2295] = String.fromCharCode (0xffff);
+data[2296] = String.fromCharCode (0xffff);
+data[2297] = String.fromCharCode (0xffff);
+data[2298] = String.fromCharCode (0xffff);
+data[2299] = String.fromCharCode (0xffff);
+data[2300] = String.fromCharCode (0xffff);
+data[2301] = String.fromCharCode (0xffff);
+data[2302] = String.fromCharCode (0xffff);
+data[2303] = String.fromCharCode (0xffff);
+data[2304] = String.fromCharCode (0xffff);
+data[2305] = String.fromCharCode (0xffff);
+data[2306] = String.fromCharCode (0xffff);
+data[2307] = String.fromCharCode (0xffff);
+data[2308] = String.fromCharCode (0xffff);
+data[2309] = String.fromCharCode (0xffff);
+data[2310] = String.fromCharCode (0xffff);
+data[2311] = String.fromCharCode (0xffff);
+data[2312] = String.fromCharCode (0xffff);
+data[2313] = String.fromCharCode (0xffff);
+data[2314] = String.fromCharCode (0xffff);
+data[2315] = String.fromCharCode (0xffff);
+data[2316] = String.fromCharCode (0xffff);
+data[2317] = String.fromCharCode (0xffff);
+data[2318] = String.fromCharCode (0xffff);
+data[2319] = String.fromCharCode (0xffff);
+data[2320] = String.fromCharCode (0xffff);
+data[2321] = String.fromCharCode (0xffff);
+data[2322] = String.fromCharCode (0xffff);
+data[2323] = String.fromCharCode (0xffff);
+data[2324] = String.fromCharCode (0xffff);
+data[2325] = String.fromCharCode (0xffff);
+data[2326] = String.fromCharCode (0xffff);
+data[2327] = String.fromCharCode (0xffff);
+data[2328] = String.fromCharCode (0xffff);
+data[2329] = String.fromCharCode (0xffff);
+data[2330] = String.fromCharCode (0xffff);
+data[2331] = String.fromCharCode (0xffff);
+data[2332] = String.fromCharCode (0xffff);
+data[2333] = String.fromCharCode (0xffff);
+data[2334] = String.fromCharCode (0xffff);
+data[2335] = String.fromCharCode (0xffff);
+data[2336] = String.fromCharCode (0xffff);
+data[2337] = String.fromCharCode (0xffff);
+data[2338] = String.fromCharCode (0xffff);
+data[2339] = String.fromCharCode (0xffff);
+data[2340] = String.fromCharCode (0xffff);
+data[2341] = String.fromCharCode (0xffff);
+data[2342] = String.fromCharCode (0xffff);
+data[2343] = String.fromCharCode (0xffff);
+data[2344] = String.fromCharCode (0xffff);
+data[2345] = String.fromCharCode (0xffff);
+data[2346] = String.fromCharCode (0xffff);
+data[2347] = String.fromCharCode (0xffff);
+data[2348] = String.fromCharCode (0xffff);
+data[2349] = String.fromCharCode (0xffff);
+data[2350] = String.fromCharCode (0xffff);
+data[2351] = String.fromCharCode (0xffff);
+data[2352] = String.fromCharCode (0xffff);
+data[2353] = String.fromCharCode (0xffff);
+data[2354] = String.fromCharCode (0xffff);
+data[2355] = String.fromCharCode (0xffff);
+data[2356] = String.fromCharCode (0xffff);
+data[2357] = String.fromCharCode (0xffff);
+data[2358] = String.fromCharCode (0xffff);
+data[2359] = String.fromCharCode (0xffff);
+data[2360] = String.fromCharCode (0xffff);
+data[2361] = String.fromCharCode (0xffff);
+data[2362] = String.fromCharCode (0xffff);
+data[2363] = String.fromCharCode (0xffff);
+data[2364] = String.fromCharCode (0xffff);
+data[2365] = String.fromCharCode (0xffff);
+data[2366] = String.fromCharCode (0xffff);
+data[2367] = String.fromCharCode (0xffff);
+data[2368] = String.fromCharCode (0xffff);
+data[2369] = String.fromCharCode (0xffff);
+data[2370] = String.fromCharCode (0xffff);
+data[2371] = String.fromCharCode (0xffff);
+data[2372] = String.fromCharCode (0xffff);
+data[2373] = String.fromCharCode (0xffff);
+data[2374] = String.fromCharCode (0xffff);
+data[2375] = String.fromCharCode (0xffff);
+data[2376] = String.fromCharCode (0xffff);
+data[2377] = String.fromCharCode (0xffff);
+data[2378] = String.fromCharCode (0xffff);
+data[2379] = String.fromCharCode (0xffff);
+data[2380] = String.fromCharCode (0xffff);
+data[2381] = String.fromCharCode (0xffff);
+data[2382] = String.fromCharCode (0xffff);
+data[2383] = String.fromCharCode (0xffff);
+data[2384] = String.fromCharCode (0xffff);
+data[2385] = String.fromCharCode (0xffff);
+data[2386] = String.fromCharCode (0xffff);
+data[2387] = String.fromCharCode (0xffff);
+data[2388] = String.fromCharCode (0xffff);
+data[2389] = String.fromCharCode (0xffff);
+data[2390] = String.fromCharCode (0xffff);
+data[2391] = String.fromCharCode (0xffff);
+data[2392] = String.fromCharCode (0xffff);
+data[2393] = String.fromCharCode (0xffff);
+data[2394] = String.fromCharCode (0xffff);
+data[2395] = String.fromCharCode (0xffff);
+data[2396] = String.fromCharCode (0xffff);
+data[2397] = String.fromCharCode (0xffff);
+data[2398] = String.fromCharCode (0xffff);
+data[2399] = String.fromCharCode (0xffff);
+data[2400] = String.fromCharCode (0xffff);
+data[2401] = String.fromCharCode (0xffff);
+data[2402] = String.fromCharCode (0xffff);
+data[2403] = String.fromCharCode (0xffff);
+data[2404] = String.fromCharCode (0xffff);
+data[2405] = String.fromCharCode (0xffff);
+data[2406] = String.fromCharCode (0xffff);
+data[2407] = String.fromCharCode (0xffff);
+data[2408] = String.fromCharCode (0xffff);
+data[2409] = String.fromCharCode (0xffff);
+data[2410] = String.fromCharCode (0xffff);
+data[2411] = String.fromCharCode (0xffff);
+data[2412] = String.fromCharCode (0xffff);
+data[2413] = String.fromCharCode (0xffff);
+data[2414] = String.fromCharCode (0xffff);
+data[2415] = String.fromCharCode (0xffff);
+data[2416] = String.fromCharCode (0xffff);
+data[2417] = String.fromCharCode (0xffff);
+data[2418] = String.fromCharCode (0xffff);
+data[2419] = String.fromCharCode (0xffff);
+data[2420] = String.fromCharCode (0xffff);
+data[2421] = String.fromCharCode (0xffff);
+data[2422] = String.fromCharCode (0xffff);
+data[2423] = String.fromCharCode (0xffff);
+data[2424] = String.fromCharCode (0xffff);
+data[2425] = String.fromCharCode (0xffff);
+data[2426] = String.fromCharCode (0xffff);
+data[2427] = String.fromCharCode (0xffff);
+data[2428] = String.fromCharCode (0xffff);
+data[2429] = String.fromCharCode (0xffff);
+data[2430] = String.fromCharCode (0xffff);
+data[2431] = String.fromCharCode (0xffff);
+data[2432] = String.fromCharCode (0xffff);
+data[2433] = String.fromCharCode (0xffff);
+data[2434] = String.fromCharCode (0xffff);
+data[2435] = String.fromCharCode (0xffff);
+data[2436] = String.fromCharCode (0xffff);
+data[2437] = String.fromCharCode (0xffff);
+data[2438] = String.fromCharCode (0xffff);
+data[2439] = String.fromCharCode (0xffff);
+data[2440] = String.fromCharCode (0xffff);
+data[2441] = String.fromCharCode (0xffff);
+data[2442] = String.fromCharCode (0xffff);
+data[2443] = String.fromCharCode (0xffff);
+data[2444] = String.fromCharCode (0xffff);
+data[2445] = String.fromCharCode (0xffff);
+data[2446] = String.fromCharCode (0xffff);
+data[2447] = String.fromCharCode (0xffff);
+data[2448] = String.fromCharCode (0xffff);
+data[2449] = String.fromCharCode (0xffff);
+data[2450] = String.fromCharCode (0xffff);
+data[2451] = String.fromCharCode (0xffff);
+data[2452] = String.fromCharCode (0xffff);
+data[2453] = String.fromCharCode (0xffff);
+data[2454] = String.fromCharCode (0xffff);
+data[2455] = String.fromCharCode (0xffff);
+data[2456] = String.fromCharCode (0xffff);
+data[2457] = String.fromCharCode (0xffff);
+data[2458] = String.fromCharCode (0xffff);
+data[2459] = String.fromCharCode (0xffff);
+data[2460] = String.fromCharCode (0xffff);
+data[2461] = String.fromCharCode (0xffff);
+data[2462] = String.fromCharCode (0xffff);
+data[2463] = String.fromCharCode (0xffff);
+data[2464] = String.fromCharCode (0xffff);
+data[2465] = String.fromCharCode (0xffff);
+data[2466] = String.fromCharCode (0xffff);
+data[2467] = String.fromCharCode (0xffff);
+data[2468] = String.fromCharCode (0xffff);
+data[2469] = String.fromCharCode (0xffff);
+data[2470] = String.fromCharCode (0xffff);
+data[2471] = String.fromCharCode (0xffff);
+data[2472] = String.fromCharCode (0xffff);
+data[2473] = String.fromCharCode (0xffff);
+data[2474] = String.fromCharCode (0xffff);
+data[2475] = String.fromCharCode (0xffff);
+data[2476] = String.fromCharCode (0xffff);
+data[2477] = String.fromCharCode (0xffff);
+data[2478] = String.fromCharCode (0xffff);
+data[2479] = String.fromCharCode (0xffff);
+data[2480] = String.fromCharCode (0xffff);
+data[2481] = String.fromCharCode (0xffff);
+data[2482] = String.fromCharCode (0xffff);
+data[2483] = String.fromCharCode (0xffff);
+data[2484] = String.fromCharCode (0xffff);
+data[2485] = String.fromCharCode (0xffff);
+data[2486] = String.fromCharCode (0xffff);
+data[2487] = String.fromCharCode (0xffff);
+data[2488] = String.fromCharCode (0xffff);
+data[2489] = String.fromCharCode (0xffff);
+data[2490] = String.fromCharCode (0xffff);
+data[2491] = String.fromCharCode (0xffff);
+data[2492] = String.fromCharCode (0xffff);
+data[2493] = String.fromCharCode (0xffff);
+data[2494] = String.fromCharCode (0xffff);
+data[2495] = String.fromCharCode (0xffff);
+data[2496] = String.fromCharCode (0xffff);
+data[2497] = String.fromCharCode (0xffff);
+data[2498] = String.fromCharCode (0xffff);
+data[2499] = String.fromCharCode (0xffff);
+data[2500] = String.fromCharCode (0xffff);
+data[2501] = String.fromCharCode (0xffff);
+data[2502] = String.fromCharCode (0xffff);
+data[2503] = String.fromCharCode (0xffff);
+data[2504] = String.fromCharCode (0xffff);
+data[2505] = String.fromCharCode (0xffff);
+data[2506] = String.fromCharCode (0xffff);
+data[2507] = String.fromCharCode (0xffff);
+data[2508] = String.fromCharCode (0xffff);
+data[2509] = String.fromCharCode (0xffff);
+data[2510] = String.fromCharCode (0xffff);
+data[2511] = String.fromCharCode (0xffff);
+data[2512] = String.fromCharCode (0xffff);
+data[2513] = String.fromCharCode (0xffff);
+data[2514] = String.fromCharCode (0xffff);
+data[2515] = String.fromCharCode (0xffff);
+data[2516] = String.fromCharCode (0xffff);
+data[2517] = String.fromCharCode (0xffff);
+data[2518] = String.fromCharCode (0xffff);
+data[2519] = String.fromCharCode (0xffff);
+data[2520] = String.fromCharCode (0xffff);
+data[2521] = String.fromCharCode (0xffff);
+data[2522] = String.fromCharCode (0xffff);
+data[2523] = String.fromCharCode (0xffff);
+data[2524] = String.fromCharCode (0xffff);
+data[2525] = String.fromCharCode (0xffff);
+data[2526] = String.fromCharCode (0xffff);
+data[2527] = String.fromCharCode (0xffff);
+data[2528] = String.fromCharCode (0xffff);
+data[2529] = String.fromCharCode (0xffff);
+data[2530] = String.fromCharCode (0xffff);
+data[2531] = String.fromCharCode (0xffff);
+data[2532] = String.fromCharCode (0xffff);
+data[2533] = String.fromCharCode (0xffff);
+data[2534] = String.fromCharCode (0xffff);
+data[2535] = String.fromCharCode (0xffff);
+data[2536] = String.fromCharCode (0xffff);
+data[2537] = String.fromCharCode (0xffff);
+data[2538] = String.fromCharCode (0xffff);
+data[2539] = String.fromCharCode (0xffff);
+data[2540] = String.fromCharCode (0xffff);
+data[2541] = String.fromCharCode (0xffff);
+data[2542] = String.fromCharCode (0xffff);
+data[2543] = String.fromCharCode (0xffff);
+data[2544] = String.fromCharCode (0xffff);
+data[2545] = String.fromCharCode (0xffff);
+data[2546] = String.fromCharCode (0xffff);
+data[2547] = String.fromCharCode (0xffff);
+data[2548] = String.fromCharCode (0xffff);
+data[2549] = String.fromCharCode (0xffff);
+data[2550] = String.fromCharCode (0xffff);
+data[2551] = String.fromCharCode (0xffff);
+data[2552] = String.fromCharCode (0xffff);
+data[2553] = String.fromCharCode (0xffff);
+data[2554] = String.fromCharCode (0x003f);
+data[2752] = String.fromCharCode (0xffff);
+data[2753] = String.fromCharCode (0xffff);
+data[2754] = String.fromCharCode (0xffff);
+data[2755] = String.fromCharCode (0xffff);
+data[2756] = String.fromCharCode (0xffff);
+data[2757] = String.fromCharCode (0xffff);
+data[2758] = String.fromCharCode (0xffff);
+data[2759] = String.fromCharCode (0xffff);
+data[2760] = String.fromCharCode (0xffff);
+data[2761] = String.fromCharCode (0xffff);
+data[2762] = String.fromCharCode (0xffff);
+data[2763] = String.fromCharCode (0xffff);
+data[2764] = String.fromCharCode (0xffff);
+data[2765] = String.fromCharCode (0xffff);
+data[2766] = String.fromCharCode (0xffff);
+data[2767] = String.fromCharCode (0xffff);
+data[2768] = String.fromCharCode (0xffff);
+data[2769] = String.fromCharCode (0xffff);
+data[2770] = String.fromCharCode (0xffff);
+data[2771] = String.fromCharCode (0xffff);
+data[2772] = String.fromCharCode (0xffff);
+data[2773] = String.fromCharCode (0xffff);
+data[2774] = String.fromCharCode (0xffff);
+data[2775] = String.fromCharCode (0xffff);
+data[2776] = String.fromCharCode (0xffff);
+data[2777] = String.fromCharCode (0xffff);
+data[2778] = String.fromCharCode (0xffff);
+data[2779] = String.fromCharCode (0xffff);
+data[2780] = String.fromCharCode (0xffff);
+data[2781] = String.fromCharCode (0xffff);
+data[2782] = String.fromCharCode (0xffff);
+data[2783] = String.fromCharCode (0xffff);
+data[2784] = String.fromCharCode (0xffff);
+data[2785] = String.fromCharCode (0xffff);
+data[2786] = String.fromCharCode (0xffff);
+data[2787] = String.fromCharCode (0xffff);
+data[2788] = String.fromCharCode (0xffff);
+data[2789] = String.fromCharCode (0xffff);
+data[2790] = String.fromCharCode (0xffff);
+data[2791] = String.fromCharCode (0xffff);
+data[2792] = String.fromCharCode (0xffff);
+data[2793] = String.fromCharCode (0xffff);
+data[2794] = String.fromCharCode (0xffff);
+data[2795] = String.fromCharCode (0xffff);
+data[2796] = String.fromCharCode (0xffff);
+data[2797] = String.fromCharCode (0xffff);
+data[2798] = String.fromCharCode (0xffff);
+data[2799] = String.fromCharCode (0xffff);
+data[2800] = String.fromCharCode (0xffff);
+data[2801] = String.fromCharCode (0xffff);
+data[2802] = String.fromCharCode (0xffff);
+data[2803] = String.fromCharCode (0xffff);
+data[2804] = String.fromCharCode (0xffff);
+data[2805] = String.fromCharCode (0xffff);
+data[2806] = String.fromCharCode (0xffff);
+data[2807] = String.fromCharCode (0xffff);
+data[2808] = String.fromCharCode (0xffff);
+data[2809] = String.fromCharCode (0xffff);
+data[2810] = String.fromCharCode (0xffff);
+data[2811] = String.fromCharCode (0xffff);
+data[2812] = String.fromCharCode (0xffff);
+data[2813] = String.fromCharCode (0xffff);
+data[2814] = String.fromCharCode (0xffff);
+data[2815] = String.fromCharCode (0xffff);
+data[2816] = String.fromCharCode (0xffff);
+data[2817] = String.fromCharCode (0xffff);
+data[2818] = String.fromCharCode (0xffff);
+data[2819] = String.fromCharCode (0xffff);
+data[2820] = String.fromCharCode (0xffff);
+data[2821] = String.fromCharCode (0xffff);
+data[2822] = String.fromCharCode (0xffff);
+data[2823] = String.fromCharCode (0xffff);
+data[2824] = String.fromCharCode (0xffff);
+data[2825] = String.fromCharCode (0xffff);
+data[2826] = String.fromCharCode (0xffff);
+data[2827] = String.fromCharCode (0xffff);
+data[2828] = String.fromCharCode (0xffff);
+data[2829] = String.fromCharCode (0xffff);
+data[2830] = String.fromCharCode (0xffff);
+data[2831] = String.fromCharCode (0xffff);
+data[2832] = String.fromCharCode (0xffff);
+data[2833] = String.fromCharCode (0xffff);
+data[2834] = String.fromCharCode (0xffff);
+data[2835] = String.fromCharCode (0xffff);
+data[2836] = String.fromCharCode (0xffff);
+data[2837] = String.fromCharCode (0xffff);
+data[2838] = String.fromCharCode (0xffff);
+data[2839] = String.fromCharCode (0xffff);
+data[2840] = String.fromCharCode (0xffff);
+data[2841] = String.fromCharCode (0xffff);
+data[2842] = String.fromCharCode (0xffff);
+data[2843] = String.fromCharCode (0xffff);
+data[2844] = String.fromCharCode (0xffff);
+data[2845] = String.fromCharCode (0xffff);
+data[2846] = String.fromCharCode (0xffff);
+data[2847] = String.fromCharCode (0xffff);
+data[2848] = String.fromCharCode (0xffff);
+data[2849] = String.fromCharCode (0xffff);
+data[2850] = String.fromCharCode (0xffff);
+data[2851] = String.fromCharCode (0xffff);
+data[2852] = String.fromCharCode (0xffff);
+data[2853] = String.fromCharCode (0xffff);
+data[2854] = String.fromCharCode (0xffff);
+data[2855] = String.fromCharCode (0xffff);
+data[2856] = String.fromCharCode (0xffff);
+data[2857] = String.fromCharCode (0xffff);
+data[2858] = String.fromCharCode (0xffff);
+data[2859] = String.fromCharCode (0xffff);
+data[2860] = String.fromCharCode (0xffff);
+data[2861] = String.fromCharCode (0xffff);
+data[2862] = String.fromCharCode (0xffff);
+data[2863] = String.fromCharCode (0xffff);
+data[2864] = String.fromCharCode (0xffff);
+data[2865] = String.fromCharCode (0xffff);
+data[2866] = String.fromCharCode (0xffff);
+data[2867] = String.fromCharCode (0xffff);
+data[2868] = String.fromCharCode (0xffff);
+data[2869] = String.fromCharCode (0xffff);
+data[2870] = String.fromCharCode (0xffff);
+data[2871] = String.fromCharCode (0xffff);
+data[2872] = String.fromCharCode (0xffff);
+data[2873] = String.fromCharCode (0xffff);
+data[2874] = String.fromCharCode (0xffff);
+data[2875] = String.fromCharCode (0xffff);
+data[2876] = String.fromCharCode (0xffff);
+data[2877] = String.fromCharCode (0xffff);
+data[2878] = String.fromCharCode (0xffff);
+data[2879] = String.fromCharCode (0xffff);
+data[2880] = String.fromCharCode (0xffff);
+data[2881] = String.fromCharCode (0xffff);
+data[2882] = String.fromCharCode (0xffff);
+data[2883] = String.fromCharCode (0xffff);
+data[2884] = String.fromCharCode (0xffff);
+data[2885] = String.fromCharCode (0xffff);
+data[2886] = String.fromCharCode (0xffff);
+data[2887] = String.fromCharCode (0xffff);
+data[2888] = String.fromCharCode (0xffff);
+data[2889] = String.fromCharCode (0xffff);
+data[2890] = String.fromCharCode (0xffff);
+data[2891] = String.fromCharCode (0xffff);
+data[2892] = String.fromCharCode (0xffff);
+data[2893] = String.fromCharCode (0xffff);
+data[2894] = String.fromCharCode (0xffff);
+data[2895] = String.fromCharCode (0xffff);
+data[2896] = String.fromCharCode (0xffff);
+data[2897] = String.fromCharCode (0xffff);
+data[2898] = String.fromCharCode (0xffff);
+data[2899] = String.fromCharCode (0xffff);
+data[2900] = String.fromCharCode (0xffff);
+data[2901] = String.fromCharCode (0xffff);
+data[2902] = String.fromCharCode (0xffff);
+data[2903] = String.fromCharCode (0xffff);
+data[2904] = String.fromCharCode (0xffff);
+data[2905] = String.fromCharCode (0xffff);
+data[2906] = String.fromCharCode (0xffff);
+data[2907] = String.fromCharCode (0xffff);
+data[2908] = String.fromCharCode (0xffff);
+data[2909] = String.fromCharCode (0xffff);
+data[2910] = String.fromCharCode (0xffff);
+data[2911] = String.fromCharCode (0xffff);
+data[2912] = String.fromCharCode (0xffff);
+data[2913] = String.fromCharCode (0xffff);
+data[2914] = String.fromCharCode (0xffff);
+data[2915] = String.fromCharCode (0xffff);
+data[2916] = String.fromCharCode (0xffff);
+data[2917] = String.fromCharCode (0xffff);
+data[2918] = String.fromCharCode (0xffff);
+data[2919] = String.fromCharCode (0xffff);
+data[2920] = String.fromCharCode (0xffff);
+data[2921] = String.fromCharCode (0xffff);
+data[2922] = String.fromCharCode (0xffff);
+data[2923] = String.fromCharCode (0xffff);
+data[2924] = String.fromCharCode (0xffff);
+data[2925] = String.fromCharCode (0xffff);
+data[2926] = String.fromCharCode (0xffff);
+data[2927] = String.fromCharCode (0xffff);
+data[2928] = String.fromCharCode (0xffff);
+data[2929] = String.fromCharCode (0xffff);
+data[2930] = String.fromCharCode (0xffff);
+data[2931] = String.fromCharCode (0xffff);
+data[2932] = String.fromCharCode (0xffff);
+data[2933] = String.fromCharCode (0xffff);
+data[2934] = String.fromCharCode (0xffff);
+data[2935] = String.fromCharCode (0xffff);
+data[2936] = String.fromCharCode (0xffff);
+data[2937] = String.fromCharCode (0xffff);
+data[2938] = String.fromCharCode (0xffff);
+data[2939] = String.fromCharCode (0xffff);
+data[2940] = String.fromCharCode (0xffff);
+data[2941] = String.fromCharCode (0xffff);
+data[2942] = String.fromCharCode (0xffff);
+data[2943] = String.fromCharCode (0xffff);
+data[2944] = String.fromCharCode (0xffff);
+data[2945] = String.fromCharCode (0xffff);
+data[2946] = String.fromCharCode (0xffff);
+data[2947] = String.fromCharCode (0xffff);
+data[2948] = String.fromCharCode (0xffff);
+data[2949] = String.fromCharCode (0xffff);
+data[2950] = String.fromCharCode (0xffff);
+data[2951] = String.fromCharCode (0xffff);
+data[2952] = String.fromCharCode (0xffff);
+data[2953] = String.fromCharCode (0xffff);
+data[2954] = String.fromCharCode (0xffff);
+data[2955] = String.fromCharCode (0xffff);
+data[2956] = String.fromCharCode (0xffff);
+data[2957] = String.fromCharCode (0xffff);
+data[2958] = String.fromCharCode (0xffff);
+data[2959] = String.fromCharCode (0xffff);
+data[2960] = String.fromCharCode (0xffff);
+data[2961] = String.fromCharCode (0xffff);
+data[2962] = String.fromCharCode (0xffff);
+data[2963] = String.fromCharCode (0xffff);
+data[2964] = String.fromCharCode (0xffff);
+data[2965] = String.fromCharCode (0xffff);
+data[2966] = String.fromCharCode (0xffff);
+data[2967] = String.fromCharCode (0xffff);
+data[2968] = String.fromCharCode (0xffff);
+data[2969] = String.fromCharCode (0xffff);
+data[2970] = String.fromCharCode (0xffff);
+data[2971] = String.fromCharCode (0xffff);
+data[2972] = String.fromCharCode (0xffff);
+data[2973] = String.fromCharCode (0xffff);
+data[2974] = String.fromCharCode (0xffff);
+data[2975] = String.fromCharCode (0xffff);
+data[2976] = String.fromCharCode (0xffff);
+data[2977] = String.fromCharCode (0xffff);
+data[2978] = String.fromCharCode (0xffff);
+data[2979] = String.fromCharCode (0xffff);
+data[2980] = String.fromCharCode (0xffff);
+data[2981] = String.fromCharCode (0xffff);
+data[2982] = String.fromCharCode (0xffff);
+data[2983] = String.fromCharCode (0xffff);
+data[2984] = String.fromCharCode (0xffff);
+data[2985] = String.fromCharCode (0xffff);
+data[2986] = String.fromCharCode (0xffff);
+data[2987] = String.fromCharCode (0xffff);
+data[2988] = String.fromCharCode (0xffff);
+data[2989] = String.fromCharCode (0xffff);
+data[2990] = String.fromCharCode (0xffff);
+data[2991] = String.fromCharCode (0xffff);
+data[2992] = String.fromCharCode (0xffff);
+data[2993] = String.fromCharCode (0xffff);
+data[2994] = String.fromCharCode (0xffff);
+data[2995] = String.fromCharCode (0xffff);
+data[2996] = String.fromCharCode (0xffff);
+data[2997] = String.fromCharCode (0xffff);
+data[2998] = String.fromCharCode (0xffff);
+data[2999] = String.fromCharCode (0xffff);
+data[3000] = String.fromCharCode (0xffff);
+data[3001] = String.fromCharCode (0xffff);
+data[3002] = String.fromCharCode (0xffff);
+data[3003] = String.fromCharCode (0xffff);
+data[3004] = String.fromCharCode (0xffff);
+data[3005] = String.fromCharCode (0xffff);
+data[3006] = String.fromCharCode (0xffff);
+data[3007] = String.fromCharCode (0xffff);
+data[3008] = String.fromCharCode (0xffff);
+data[3009] = String.fromCharCode (0xffff);
+data[3010] = String.fromCharCode (0xffff);
+data[3011] = String.fromCharCode (0xffff);
+data[3012] = String.fromCharCode (0xffff);
+data[3013] = String.fromCharCode (0xffff);
+data[3014] = String.fromCharCode (0xffff);
+data[3015] = String.fromCharCode (0xffff);
+data[3016] = String.fromCharCode (0xffff);
+data[3017] = String.fromCharCode (0xffff);
+data[3018] = String.fromCharCode (0xffff);
+data[3019] = String.fromCharCode (0xffff);
+data[3020] = String.fromCharCode (0xffff);
+data[3021] = String.fromCharCode (0xffff);
+data[3022] = String.fromCharCode (0xffff);
+data[3023] = String.fromCharCode (0xffff);
+data[3024] = String.fromCharCode (0xffff);
+data[3025] = String.fromCharCode (0xffff);
+data[3026] = String.fromCharCode (0xffff);
+data[3027] = String.fromCharCode (0xffff);
+data[3028] = String.fromCharCode (0xffff);
+data[3029] = String.fromCharCode (0xffff);
+data[3030] = String.fromCharCode (0xffff);
+data[3031] = String.fromCharCode (0xffff);
+data[3032] = String.fromCharCode (0xffff);
+data[3033] = String.fromCharCode (0xffff);
+data[3034] = String.fromCharCode (0xffff);
+data[3035] = String.fromCharCode (0xffff);
+data[3036] = String.fromCharCode (0xffff);
+data[3037] = String.fromCharCode (0xffff);
+data[3038] = String.fromCharCode (0xffff);
+data[3039] = String.fromCharCode (0xffff);
+data[3040] = String.fromCharCode (0xffff);
+data[3041] = String.fromCharCode (0xffff);
+data[3042] = String.fromCharCode (0xffff);
+data[3043] = String.fromCharCode (0xffff);
+data[3044] = String.fromCharCode (0xffff);
+data[3045] = String.fromCharCode (0xffff);
+data[3046] = String.fromCharCode (0xffff);
+data[3047] = String.fromCharCode (0xffff);
+data[3048] = String.fromCharCode (0xffff);
+data[3049] = String.fromCharCode (0xffff);
+data[3050] = String.fromCharCode (0xffff);
+data[3051] = String.fromCharCode (0xffff);
+data[3052] = String.fromCharCode (0xffff);
+data[3053] = String.fromCharCode (0xffff);
+data[3054] = String.fromCharCode (0xffff);
+data[3055] = String.fromCharCode (0xffff);
+data[3056] = String.fromCharCode (0xffff);
+data[3057] = String.fromCharCode (0xffff);
+data[3058] = String.fromCharCode (0xffff);
+data[3059] = String.fromCharCode (0xffff);
+data[3060] = String.fromCharCode (0xffff);
+data[3061] = String.fromCharCode (0xffff);
+data[3062] = String.fromCharCode (0xffff);
+data[3063] = String.fromCharCode (0xffff);
+data[3064] = String.fromCharCode (0xffff);
+data[3065] = String.fromCharCode (0xffff);
+data[3066] = String.fromCharCode (0xffff);
+data[3067] = String.fromCharCode (0xffff);
+data[3068] = String.fromCharCode (0xffff);
+data[3069] = String.fromCharCode (0xffff);
+data[3070] = String.fromCharCode (0xffff);
+data[3071] = String.fromCharCode (0xffff);
+data[3072] = String.fromCharCode (0xffff);
+data[3073] = String.fromCharCode (0xffff);
+data[3074] = String.fromCharCode (0xffff);
+data[3075] = String.fromCharCode (0xffff);
+data[3076] = String.fromCharCode (0xffff);
+data[3077] = String.fromCharCode (0xffff);
+data[3078] = String.fromCharCode (0xffff);
+data[3079] = String.fromCharCode (0xffff);
+data[3080] = String.fromCharCode (0xffff);
+data[3081] = String.fromCharCode (0xffff);
+data[3082] = String.fromCharCode (0xffff);
+data[3083] = String.fromCharCode (0xffff);
+data[3084] = String.fromCharCode (0xffff);
+data[3085] = String.fromCharCode (0xffff);
+data[3086] = String.fromCharCode (0xffff);
+data[3087] = String.fromCharCode (0xffff);
+data[3088] = String.fromCharCode (0xffff);
+data[3089] = String.fromCharCode (0xffff);
+data[3090] = String.fromCharCode (0xffff);
+data[3091] = String.fromCharCode (0xffff);
+data[3092] = String.fromCharCode (0xffff);
+data[3093] = String.fromCharCode (0xffff);
+data[3094] = String.fromCharCode (0xffff);
+data[3095] = String.fromCharCode (0xffff);
+data[3096] = String.fromCharCode (0xffff);
+data[3097] = String.fromCharCode (0xffff);
+data[3098] = String.fromCharCode (0xffff);
+data[3099] = String.fromCharCode (0xffff);
+data[3100] = String.fromCharCode (0xffff);
+data[3101] = String.fromCharCode (0xffff);
+data[3102] = String.fromCharCode (0xffff);
+data[3103] = String.fromCharCode (0xffff);
+data[3104] = String.fromCharCode (0xffff);
+data[3105] = String.fromCharCode (0xffff);
+data[3106] = String.fromCharCode (0xffff);
+data[3107] = String.fromCharCode (0xffff);
+data[3108] = String.fromCharCode (0xffff);
+data[3109] = String.fromCharCode (0xffff);
+data[3110] = String.fromCharCode (0xffff);
+data[3111] = String.fromCharCode (0xffff);
+data[3112] = String.fromCharCode (0xffff);
+data[3113] = String.fromCharCode (0xffff);
+data[3114] = String.fromCharCode (0xffff);
+data[3115] = String.fromCharCode (0xffff);
+data[3116] = String.fromCharCode (0xffff);
+data[3117] = String.fromCharCode (0xffff);
+data[3118] = String.fromCharCode (0xffff);
+data[3119] = String.fromCharCode (0xffff);
+data[3120] = String.fromCharCode (0xffff);
+data[3121] = String.fromCharCode (0xffff);
+data[3122] = String.fromCharCode (0xffff);
+data[3123] = String.fromCharCode (0xffff);
+data[3124] = String.fromCharCode (0xffff);
+data[3125] = String.fromCharCode (0xffff);
+data[3126] = String.fromCharCode (0xffff);
+data[3127] = String.fromCharCode (0xffff);
+data[3128] = String.fromCharCode (0xffff);
+data[3129] = String.fromCharCode (0xffff);
+data[3130] = String.fromCharCode (0xffff);
+data[3131] = String.fromCharCode (0xffff);
+data[3132] = String.fromCharCode (0xffff);
+data[3133] = String.fromCharCode (0xffff);
+data[3134] = String.fromCharCode (0xffff);
+data[3135] = String.fromCharCode (0xffff);
+data[3136] = String.fromCharCode (0xffff);
+data[3137] = String.fromCharCode (0xffff);
+data[3138] = String.fromCharCode (0xffff);
+data[3139] = String.fromCharCode (0xffff);
+data[3140] = String.fromCharCode (0xffff);
+data[3141] = String.fromCharCode (0xffff);
+data[3142] = String.fromCharCode (0xffff);
+data[3143] = String.fromCharCode (0xffff);
+data[3144] = String.fromCharCode (0xffff);
+data[3145] = String.fromCharCode (0xffff);
+data[3146] = String.fromCharCode (0xffff);
+data[3147] = String.fromCharCode (0xffff);
+data[3148] = String.fromCharCode (0xffff);
+data[3149] = String.fromCharCode (0xffff);
+data[3150] = String.fromCharCode (0xffff);
+data[3151] = String.fromCharCode (0xffff);
+data[3152] = String.fromCharCode (0xffff);
+data[3153] = String.fromCharCode (0xffff);
+data[3154] = String.fromCharCode (0xffff);
+data[3155] = String.fromCharCode (0xffff);
+data[3156] = String.fromCharCode (0xffff);
+data[3157] = String.fromCharCode (0xffff);
+data[3158] = String.fromCharCode (0xffff);
+data[3159] = String.fromCharCode (0xffff);
+data[3160] = String.fromCharCode (0xffff);
+data[3161] = String.fromCharCode (0xffff);
+data[3162] = String.fromCharCode (0xffff);
+data[3163] = String.fromCharCode (0xffff);
+data[3164] = String.fromCharCode (0xffff);
+data[3165] = String.fromCharCode (0xffff);
+data[3166] = String.fromCharCode (0xffff);
+data[3167] = String.fromCharCode (0xffff);
+data[3168] = String.fromCharCode (0xffff);
+data[3169] = String.fromCharCode (0xffff);
+data[3170] = String.fromCharCode (0xffff);
+data[3171] = String.fromCharCode (0xffff);
+data[3172] = String.fromCharCode (0xffff);
+data[3173] = String.fromCharCode (0xffff);
+data[3174] = String.fromCharCode (0xffff);
+data[3175] = String.fromCharCode (0xffff);
+data[3176] = String.fromCharCode (0xffff);
+data[3177] = String.fromCharCode (0xffff);
+data[3178] = String.fromCharCode (0xffff);
+data[3179] = String.fromCharCode (0xffff);
+data[3180] = String.fromCharCode (0xffff);
+data[3181] = String.fromCharCode (0xffff);
+data[3182] = String.fromCharCode (0xffff);
+data[3183] = String.fromCharCode (0xffff);
+data[3184] = String.fromCharCode (0xffff);
+data[3185] = String.fromCharCode (0xffff);
+data[3186] = String.fromCharCode (0xffff);
+data[3187] = String.fromCharCode (0xffff);
+data[3188] = String.fromCharCode (0xffff);
+data[3189] = String.fromCharCode (0xffff);
+data[3190] = String.fromCharCode (0xffff);
+data[3191] = String.fromCharCode (0xffff);
+data[3192] = String.fromCharCode (0xffff);
+data[3193] = String.fromCharCode (0xffff);
+data[3194] = String.fromCharCode (0xffff);
+data[3195] = String.fromCharCode (0xffff);
+data[3196] = String.fromCharCode (0xffff);
+data[3197] = String.fromCharCode (0xffff);
+data[3198] = String.fromCharCode (0xffff);
+data[3199] = String.fromCharCode (0xffff);
+data[3200] = String.fromCharCode (0xffff);
+data[3201] = String.fromCharCode (0xffff);
+data[3202] = String.fromCharCode (0xffff);
+data[3203] = String.fromCharCode (0xffff);
+data[3204] = String.fromCharCode (0xffff);
+data[3205] = String.fromCharCode (0xffff);
+data[3206] = String.fromCharCode (0xffff);
+data[3207] = String.fromCharCode (0xffff);
+data[3208] = String.fromCharCode (0xffff);
+data[3209] = String.fromCharCode (0xffff);
+data[3210] = String.fromCharCode (0xffff);
+data[3211] = String.fromCharCode (0xffff);
+data[3212] = String.fromCharCode (0xffff);
+data[3213] = String.fromCharCode (0xffff);
+data[3214] = String.fromCharCode (0xffff);
+data[3215] = String.fromCharCode (0xffff);
+data[3216] = String.fromCharCode (0xffff);
+data[3217] = String.fromCharCode (0xffff);
+data[3218] = String.fromCharCode (0xffff);
+data[3219] = String.fromCharCode (0xffff);
+data[3220] = String.fromCharCode (0xffff);
+data[3221] = String.fromCharCode (0xffff);
+data[3222] = String.fromCharCode (0xffff);
+data[3223] = String.fromCharCode (0xffff);
+data[3224] = String.fromCharCode (0xffff);
+data[3225] = String.fromCharCode (0xffff);
+data[3226] = String.fromCharCode (0xffff);
+data[3227] = String.fromCharCode (0xffff);
+data[3228] = String.fromCharCode (0xffff);
+data[3229] = String.fromCharCode (0xffff);
+data[3230] = String.fromCharCode (0xffff);
+data[3231] = String.fromCharCode (0xffff);
+data[3232] = String.fromCharCode (0xffff);
+data[3233] = String.fromCharCode (0xffff);
+data[3234] = String.fromCharCode (0xffff);
+data[3235] = String.fromCharCode (0xffff);
+data[3236] = String.fromCharCode (0xffff);
+data[3237] = String.fromCharCode (0xffff);
+data[3238] = String.fromCharCode (0xffff);
+data[3239] = String.fromCharCode (0xffff);
+data[3240] = String.fromCharCode (0xffff);
+data[3241] = String.fromCharCode (0xffff);
+data[3242] = String.fromCharCode (0xffff);
+data[3243] = String.fromCharCode (0xffff);
+data[3244] = String.fromCharCode (0xffff);
+data[3245] = String.fromCharCode (0xffff);
+data[3246] = String.fromCharCode (0xffff);
+data[3247] = String.fromCharCode (0xffff);
+data[3248] = String.fromCharCode (0xffff);
+data[3249] = String.fromCharCode (0xffff);
+data[3250] = String.fromCharCode (0xffff);
+data[3251] = String.fromCharCode (0xffff);
+data[3252] = String.fromCharCode (0xffff);
+data[3253] = String.fromCharCode (0xffff);
+data[3254] = String.fromCharCode (0xffff);
+data[3255] = String.fromCharCode (0xffff);
+data[3256] = String.fromCharCode (0xffff);
+data[3257] = String.fromCharCode (0xffff);
+data[3258] = String.fromCharCode (0xffff);
+data[3259] = String.fromCharCode (0xffff);
+data[3260] = String.fromCharCode (0xffff);
+data[3261] = String.fromCharCode (0xffff);
+data[3262] = String.fromCharCode (0xffff);
+data[3263] = String.fromCharCode (0xffff);
+data[3264] = String.fromCharCode (0xffff);
+data[3265] = String.fromCharCode (0xffff);
+data[3266] = String.fromCharCode (0xffff);
+data[3267] = String.fromCharCode (0xffff);
+data[3268] = String.fromCharCode (0xffff);
+data[3269] = String.fromCharCode (0xffff);
+data[3270] = String.fromCharCode (0xffff);
+data[3271] = String.fromCharCode (0xffff);
+data[3272] = String.fromCharCode (0xffff);
+data[3273] = String.fromCharCode (0xffff);
+data[3274] = String.fromCharCode (0xffff);
+data[3275] = String.fromCharCode (0xffff);
+data[3276] = String.fromCharCode (0xffff);
+data[3277] = String.fromCharCode (0xffff);
+data[3278] = String.fromCharCode (0xffff);
+data[3279] = String.fromCharCode (0xffff);
+data[3280] = String.fromCharCode (0xffff);
+data[3281] = String.fromCharCode (0xffff);
+data[3282] = String.fromCharCode (0xffff);
+data[3283] = String.fromCharCode (0xffff);
+data[3284] = String.fromCharCode (0xffff);
+data[3285] = String.fromCharCode (0xffff);
+data[3286] = String.fromCharCode (0xffff);
+data[3287] = String.fromCharCode (0xffff);
+data[3288] = String.fromCharCode (0xffff);
+data[3289] = String.fromCharCode (0xffff);
+data[3290] = String.fromCharCode (0xffff);
+data[3291] = String.fromCharCode (0xffff);
+data[3292] = String.fromCharCode (0xffff);
+data[3293] = String.fromCharCode (0xffff);
+data[3294] = String.fromCharCode (0xffff);
+data[3295] = String.fromCharCode (0xffff);
+data[3296] = String.fromCharCode (0xffff);
+data[3297] = String.fromCharCode (0xffff);
+data[3298] = String.fromCharCode (0xffff);
+data[3299] = String.fromCharCode (0xffff);
+data[3300] = String.fromCharCode (0xffff);
+data[3301] = String.fromCharCode (0xffff);
+data[3302] = String.fromCharCode (0xffff);
+data[3303] = String.fromCharCode (0xffff);
+data[3304] = String.fromCharCode (0xffff);
+data[3305] = String.fromCharCode (0xffff);
+data[3306] = String.fromCharCode (0xffff);
+data[3307] = String.fromCharCode (0xffff);
+data[3308] = String.fromCharCode (0xffff);
+data[3309] = String.fromCharCode (0xffff);
+data[3310] = String.fromCharCode (0xffff);
+data[3311] = String.fromCharCode (0xffff);
+data[3312] = String.fromCharCode (0xffff);
+data[3313] = String.fromCharCode (0xffff);
+data[3314] = String.fromCharCode (0xffff);
+data[3315] = String.fromCharCode (0xffff);
+data[3316] = String.fromCharCode (0xffff);
+data[3317] = String.fromCharCode (0xffff);
+data[3318] = String.fromCharCode (0xffff);
+data[3319] = String.fromCharCode (0xffff);
+data[3320] = String.fromCharCode (0xffff);
+data[3321] = String.fromCharCode (0xffff);
+data[3322] = String.fromCharCode (0xffff);
+data[3323] = String.fromCharCode (0xffff);
+data[3324] = String.fromCharCode (0xffff);
+data[3325] = String.fromCharCode (0xffff);
+data[3326] = String.fromCharCode (0xffff);
+data[3327] = String.fromCharCode (0xffff);
+data[3328] = String.fromCharCode (0xffff);
+data[3329] = String.fromCharCode (0xffff);
+data[3330] = String.fromCharCode (0xffff);
+data[3331] = String.fromCharCode (0xffff);
+data[3332] = String.fromCharCode (0xffff);
+data[3333] = String.fromCharCode (0xffff);
+data[3334] = String.fromCharCode (0xffff);
+data[3335] = String.fromCharCode (0xffff);
+data[3336] = String.fromCharCode (0xffff);
+data[3337] = String.fromCharCode (0xffff);
+data[3338] = String.fromCharCode (0xffff);
+data[3339] = String.fromCharCode (0xffff);
+data[3340] = String.fromCharCode (0xffff);
+data[3341] = String.fromCharCode (0xffff);
+data[3342] = String.fromCharCode (0xffff);
+data[3343] = String.fromCharCode (0xffff);
+data[3344] = String.fromCharCode (0xffff);
+data[3345] = String.fromCharCode (0xffff);
+data[3346] = String.fromCharCode (0xffff);
+data[3347] = String.fromCharCode (0xffff);
+data[3348] = String.fromCharCode (0xffff);
+data[3349] = String.fromCharCode (0xffff);
+data[3350] = String.fromCharCode (0xffff);
+data[3351] = String.fromCharCode (0xffff);
+data[3352] = String.fromCharCode (0xffff);
+data[3353] = String.fromCharCode (0xffff);
+data[3354] = String.fromCharCode (0xffff);
+data[3355] = String.fromCharCode (0xffff);
+data[3356] = String.fromCharCode (0xffff);
+data[3357] = String.fromCharCode (0xffff);
+data[3358] = String.fromCharCode (0xffff);
+data[3359] = String.fromCharCode (0xffff);
+data[3360] = String.fromCharCode (0xffff);
+data[3361] = String.fromCharCode (0xffff);
+data[3362] = String.fromCharCode (0xffff);
+data[3363] = String.fromCharCode (0xffff);
+data[3364] = String.fromCharCode (0xffff);
+data[3365] = String.fromCharCode (0xffff);
+data[3366] = String.fromCharCode (0xffff);
+data[3367] = String.fromCharCode (0xffff);
+data[3368] = String.fromCharCode (0xffff);
+data[3369] = String.fromCharCode (0xffff);
+data[3370] = String.fromCharCode (0xffff);
+data[3371] = String.fromCharCode (0xffff);
+data[3372] = String.fromCharCode (0xffff);
+data[3373] = String.fromCharCode (0xffff);
+data[3374] = String.fromCharCode (0xffff);
+data[3375] = String.fromCharCode (0xffff);
+data[3376] = String.fromCharCode (0xffff);
+data[3377] = String.fromCharCode (0xffff);
+data[3378] = String.fromCharCode (0xffff);
+data[3379] = String.fromCharCode (0xffff);
+data[3380] = String.fromCharCode (0xffff);
+data[3381] = String.fromCharCode (0xffff);
+data[3382] = String.fromCharCode (0xffff);
+data[3383] = String.fromCharCode (0xffff);
+data[3384] = String.fromCharCode (0xffff);
+data[3385] = String.fromCharCode (0xffff);
+data[3386] = String.fromCharCode (0xffff);
+data[3387] = String.fromCharCode (0xffff);
+data[3388] = String.fromCharCode (0xffff);
+data[3389] = String.fromCharCode (0xffff);
+data[3390] = String.fromCharCode (0xffff);
+data[3391] = String.fromCharCode (0xffff);
+data[3392] = String.fromCharCode (0xffff);
+data[3393] = String.fromCharCode (0xffff);
+data[3394] = String.fromCharCode (0xffff);
+data[3395] = String.fromCharCode (0xffff);
+data[3396] = String.fromCharCode (0xffff);
+data[3397] = String.fromCharCode (0xffff);
+data[3398] = String.fromCharCode (0xffff);
+data[3399] = String.fromCharCode (0xffff);
+data[3400] = String.fromCharCode (0xffff);
+data[3401] = String.fromCharCode (0xffff);
+data[3402] = String.fromCharCode (0xffff);
+data[3403] = String.fromCharCode (0xffff);
+data[3404] = String.fromCharCode (0xffff);
+data[3405] = String.fromCharCode (0xffff);
+data[3406] = String.fromCharCode (0xffff);
+data[3407] = String.fromCharCode (0xffff);
+data[3408] = String.fromCharCode (0xffff);
+data[3409] = String.fromCharCode (0xffff);
+data[3410] = String.fromCharCode (0xffff);
+data[3411] = String.fromCharCode (0xffff);
+data[3412] = String.fromCharCode (0xffff);
+data[3413] = String.fromCharCode (0xffff);
+data[3414] = String.fromCharCode (0xffff);
+data[3415] = String.fromCharCode (0xffff);
+data[3416] = String.fromCharCode (0xffff);
+data[3417] = String.fromCharCode (0xffff);
+data[3418] = String.fromCharCode (0xffff);
+data[3419] = String.fromCharCode (0xffff);
+data[3420] = String.fromCharCode (0xffff);
+data[3421] = String.fromCharCode (0xffff);
+data[3422] = String.fromCharCode (0xffff);
+data[3423] = String.fromCharCode (0xffff);
+data[3424] = String.fromCharCode (0xffff);
+data[3425] = String.fromCharCode (0xffff);
+data[3426] = String.fromCharCode (0xffff);
+data[3427] = String.fromCharCode (0xffff);
+data[3428] = String.fromCharCode (0xffff);
+data[3429] = String.fromCharCode (0xffff);
+data[3430] = String.fromCharCode (0xffff);
+data[3431] = String.fromCharCode (0xffff);
+data[3432] = String.fromCharCode (0xffff);
+data[3433] = String.fromCharCode (0xffff);
+data[3434] = String.fromCharCode (0xffff);
+data[3435] = String.fromCharCode (0xffff);
+data[3436] = String.fromCharCode (0xffff);
+data[3437] = String.fromCharCode (0xffff);
+data[3438] = String.fromCharCode (0xffff);
+data[3439] = String.fromCharCode (0xffff);
+data[3440] = String.fromCharCode (0xffff);
+data[3441] = String.fromCharCode (0xffff);
+data[3442] = String.fromCharCode (0xffff);
+data[3443] = String.fromCharCode (0xffff);
+data[3444] = String.fromCharCode (0xffff);
+data[3445] = String.fromCharCode (0xffff);
+data[3446] = String.fromCharCode (0xffff);
+data[3447] = String.fromCharCode (0xffff);
+data[3448] = String.fromCharCode (0xffff);
+data[3449] = String.fromCharCode (0xffff);
+data[3450] = String.fromCharCode (0x000f);
+data[3984] = String.fromCharCode (0xffff);
+data[3985] = String.fromCharCode (0xffff);
+data[3986] = String.fromCharCode (0xffff);
+data[3987] = String.fromCharCode (0xffff);
+data[3988] = String.fromCharCode (0xffff);
+data[3989] = String.fromCharCode (0xffff);
+data[3990] = String.fromCharCode (0xffff);
+data[3991] = String.fromCharCode (0xffff);
+data[3992] = String.fromCharCode (0xffff);
+data[3993] = String.fromCharCode (0xffff);
+data[3994] = String.fromCharCode (0xffff);
+data[3995] = String.fromCharCode (0xffff);
+data[3996] = String.fromCharCode (0xffff);
+data[3997] = String.fromCharCode (0xffff);
+data[3998] = String.fromCharCode (0xffff);
+data[3999] = String.fromCharCode (0xffff);
+data[4000] = String.fromCharCode (0xffff);
+data[4001] = String.fromCharCode (0xffff);
+data[4002] = String.fromCharCode (0x3fff);
+data[4016] = String.fromCharCode (0x007f);
+data[4017] = String.fromCharCode (0x80f8);
+data[4018] = String.fromCharCode (0xfdff);
+data[4019] = String.fromCharCode (0x5f7f);
+data[4020] = String.fromCharCode (0xffdb);
+data[4021] = String.fromCharCode (0xffff);
+data[4022] = String.fromCharCode (0xffff);
+data[4023] = String.fromCharCode (0xffff);
+data[4024] = String.fromCharCode (0xffff);
+data[4025] = String.fromCharCode (0xffff);
+data[4026] = String.fromCharCode (0xffff);
+data[4027] = String.fromCharCode (0x0003);
+data[4029] = String.fromCharCode (0xfff8);
+data[4030] = String.fromCharCode (0xffff);
+data[4031] = String.fromCharCode (0xffff);
+data[4032] = String.fromCharCode (0xffff);
+data[4033] = String.fromCharCode (0xffff);
+data[4034] = String.fromCharCode (0xffff);
+data[4035] = String.fromCharCode (0xffff);
+data[4036] = String.fromCharCode (0xffff);
+data[4037] = String.fromCharCode (0xffff);
+data[4038] = String.fromCharCode (0xffff);
+data[4039] = String.fromCharCode (0xffff);
+data[4040] = String.fromCharCode (0xffff);
+data[4041] = String.fromCharCode (0xffff);
+data[4042] = String.fromCharCode (0xffff);
+data[4043] = String.fromCharCode (0xffff);
+data[4044] = String.fromCharCode (0xffff);
+data[4045] = String.fromCharCode (0xffff);
+data[4046] = String.fromCharCode (0xffff);
+data[4047] = String.fromCharCode (0xffff);
+data[4048] = String.fromCharCode (0xffff);
+data[4049] = String.fromCharCode (0xffff);
+data[4050] = String.fromCharCode (0xffff);
+data[4051] = String.fromCharCode (0x3fff);
+data[4053] = String.fromCharCode (0xffff);
+data[4054] = String.fromCharCode (0xffff);
+data[4055] = String.fromCharCode (0xffff);
+data[4056] = String.fromCharCode (0xffff);
+data[4057] = String.fromCharCode (0xfffc);
+data[4058] = String.fromCharCode (0xffff);
+data[4059] = String.fromCharCode (0xffff);
+data[4060] = String.fromCharCode (0x00ff);
+data[4063] = String.fromCharCode (0x0fff);
+data[4071] = String.fromCharCode (0xffd7);
+data[4072] = String.fromCharCode (0xffff);
+data[4073] = String.fromCharCode (0xffff);
+data[4074] = String.fromCharCode (0xffff);
+data[4075] = String.fromCharCode (0xffff);
+data[4076] = String.fromCharCode (0xffff);
+data[4077] = String.fromCharCode (0xffff);
+data[4078] = String.fromCharCode (0xffff);
+data[4079] = String.fromCharCode (0x1fff);
+data[4082] = String.fromCharCode (0xfffe);
+data[4083] = String.fromCharCode (0x07ff);
+data[4084] = String.fromCharCode (0xfffe);
+data[4085] = String.fromCharCode (0x07ff);
+data[4086] = String.fromCharCode (0xffc0);
+data[4087] = String.fromCharCode (0xffff);
+data[4088] = String.fromCharCode (0xffff);
+data[4089] = String.fromCharCode (0xffff);
+data[4090] = String.fromCharCode (0xffff);
+data[4091] = String.fromCharCode (0x7fff);
+data[4092] = String.fromCharCode (0xfcfc);
+data[4093] = String.fromCharCode (0x1cfc);
+data[4100] = String.fromCharCode (0xfffe);
+data[4101] = String.fromCharCode (0x07ff);
+data[4102] = String.fromCharCode (0xfffe);
+data[4103] = String.fromCharCode (0x07ff);
+data[4106] = String.fromCharCode (0x0400);
+data[4107] = String.fromCharCode (0x0420);
+data[4108] = String.fromCharCode (0xffff);
+data[4109] = String.fromCharCode (0xff7f);
+data[4110] = String.fromCharCode (0xffff);
+data[4111] = String.fromCharCode (0xff7f);
+data[4112] = String.fromCharCode (0xffff);
+data[4113] = String.fromCharCode (0xffff);
+data[4114] = String.fromCharCode (0xffff);
+data[4115] = String.fromCharCode (0xffff);
+data[4116] = String.fromCharCode (0xffff);
+data[4117] = String.fromCharCode (0xffff);
+data[4118] = String.fromCharCode (0xffff);
+data[4119] = String.fromCharCode (0xffff);
+data[4120] = String.fromCharCode (0xffff);
+data[4121] = String.fromCharCode (0xffff);
+data[4122] = String.fromCharCode (0xffff);
+data[4123] = String.fromCharCode (0xffff);
+data[4124] = String.fromCharCode (0xffff);
+data[4125] = String.fromCharCode (0xffff);
+data[4126] = String.fromCharCode (0xffff);
+data[4127] = String.fromCharCode (0xfc3f);
+data[4128] = String.fromCharCode (0xffff);
+data[4129] = String.fromCharCode (0x00ff);
+data[4133] = String.fromCharCode (0xffff);
+data[4134] = String.fromCharCode (0xffff);
+data[4135] = String.fromCharCode (0xffff);
+data[4136] = String.fromCharCode (0xffff);
+data[4137] = String.fromCharCode (0xffff);
+data[4138] = String.fromCharCode (0x01ff);
+data[4139] = String.fromCharCode (0xf9ff);
+data[4140] = String.fromCharCode (0x0003);
+data[4141] = String.fromCharCode (0x0003);
+data[4142] = String.fromCharCode (0x001f);
+data[4151] = String.fromCharCode (0x0400);
+data[4152] = String.fromCharCode (0xd740);
+data[4153] = String.fromCharCode (0xffff);
+data[4154] = String.fromCharCode (0xfffb);
+data[4155] = String.fromCharCode (0xffff);
+data[4156] = String.fromCharCode (0x7fff);
+data[4157] = String.fromCharCode (0x547f);
+data[4158] = String.fromCharCode (0x00fd);
+});
+c$.white_f = Clazz.defineMethod (c$, "white_f", 
+function () {
+var data =  Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.white =  new com.stevesoft.pat.Bits (data);
+data[0] = String.fromCharCode (0x3e00);
+data[1] = String.fromCharCode (0xf000);
+data[2] = String.fromCharCode (0x0001);
+data[512] = String.fromCharCode (0x0fff);
+data[514] = String.fromCharCode (0x0300);
+data[768] = String.fromCharCode (0x0001);
+data[4096] = String.fromCharCode (0x3e00);
+data[4097] = String.fromCharCode (0xf000);
+data[4098] = String.fromCharCode (0x0001);
+});
+c$.punct_f = Clazz.defineMethod (c$, "punct_f", 
+function () {
+var data =  Clazz.newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.punct =  new com.stevesoft.pat.Bits (data);
+data[2] = String.fromCharCode (0xf7ee);
+data[3] = String.fromCharCode (0x8c00);
+data[4] = String.fromCharCode (0x0001);
+data[5] = String.fromCharCode (0xb800);
+data[7] = String.fromCharCode (0x2800);
+data[10] = String.fromCharCode (0x2802);
+data[11] = String.fromCharCode (0x8880);
+data[55] = String.fromCharCode (0x4030);
+data[56] = String.fromCharCode (0x0080);
+data[85] = String.fromCharCode (0xfc00);
+data[88] = String.fromCharCode (0x0200);
+data[91] = String.fromCharCode (0x4000);
+data[92] = String.fromCharCode (0x0009);
+data[95] = String.fromCharCode (0x0018);
+data[96] = String.fromCharCode (0x1000);
+data[97] = String.fromCharCode (0x8800);
+data[102] = String.fromCharCode (0x3c00);
+data[109] = String.fromCharCode (0x0010);
+data[150] = '0';
+data[151] = String.fromCharCode (0x0001);
+data[226] = String.fromCharCode (0x8000);
+data[229] = String.fromCharCode (0x0c00);
+data[234] = String.fromCharCode (0x8000);
+data[240] = String.fromCharCode (0xfff0);
+data[241] = String.fromCharCode (0x0007);
+data[243] = String.fromCharCode (0x3c00);
+data[248] = String.fromCharCode (0x0020);
+data[271] = String.fromCharCode (0x0800);
+data[513] = String.fromCharCode (0xffff);
+data[514] = String.fromCharCode (0x00ff);
+data[515] = String.fromCharCode (0xffff);
+data[516] = 'o';
+data[519] = String.fromCharCode (0x6000);
+data[520] = String.fromCharCode (0x6000);
+data[562] = String.fromCharCode (0x0600);
+data[768] = String.fromCharCode (0xff4e);
+data[769] = String.fromCharCode (0xfff3);
+data[771] = String.fromCharCode (0x0001);
+data[783] = String.fromCharCode (0x0800);
+data[4051] = String.fromCharCode (0xc000);
+data[4067] = String.fromCharCode (0xffff);
+data[4068] = String.fromCharCode (0xfe1f);
+data[4069] = String.fromCharCode (0xfff7);
+data[4070] = String.fromCharCode (0x0d0b);
+data[4080] = String.fromCharCode (0xf7ee);
+data[4081] = String.fromCharCode (0x8c00);
+data[4082] = String.fromCharCode (0x0001);
+data[4083] = String.fromCharCode (0xb800);
+data[4085] = String.fromCharCode (0x2800);
+data[4086] = String.fromCharCode (0x003e);
+data[4098] = String.fromCharCode (0xf7ee);
+data[4099] = String.fromCharCode (0x8c00);
+data[4100] = String.fromCharCode (0x0001);
+data[4101] = String.fromCharCode (0xb800);
+data[4103] = String.fromCharCode (0x2800);
+data[4106] = String.fromCharCode (0x2802);
+data[4107] = String.fromCharCode (0x8880);
+data[4151] = String.fromCharCode (0x4030);
+data[4152] = String.fromCharCode (0x0080);
+});
+Clazz.defineStatics (c$,
+"upper", null,
+"lower", null,
+"title", null,
+"currency", null,
+"decimal_digit", null,
+"math", null,
+"letter", null,
+"white", null,
+"punct", null);
index 58bb19c..9eaff99 100644 (file)
@@ -1,52 +1,52 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Boundary", ["com.stevesoft.pat.patInt"], function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "Boundary", com.stevesoft.pat.Pattern);\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "\\b" + this.nextString ();\r
-});\r
-Clazz.defineMethod (c$, "isAChar", \r
-function (c) {\r
-if (c >= 'a' && c <= 'z') {\r
-return true;\r
-}if (c >= 'A' && c <= 'Z') {\r
-return true;\r
-}if (c >= '0' && c <= '9') {\r
-return true;\r
-}if (c == '_') {\r
-return true;\r
-}return false;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "matchLeft", \r
-function (pos, pt) {\r
-if (pos <= 0) {\r
-return true;\r
-}if (this.isAChar (pt.src.charAt (pos)) && this.isAChar (pt.src.charAt (pos - 1))) {\r
-return false;\r
-}return true;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.defineMethod (c$, "matchRight", \r
-function (pos, pt) {\r
-if (pos < 0) {\r
-return false;\r
-}if (pos + 1 >= pt.src.length ()) {\r
-return true;\r
-}if (this.isAChar (pt.src.charAt (pos)) && this.isAChar (pt.src.charAt (pos + 1))) {\r
-return false;\r
-}return true;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-if (this.matchRight (pos - 1, pt) || this.matchLeft (pos, pt)) {\r
-return this.nextMatch (pos, pt);\r
-}return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (0);\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-return  new com.stevesoft.pat.Boundary ();\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Boundary", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "Boundary", com.stevesoft.pat.Pattern);
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "\\b" + this.nextString ();
+});
+Clazz.defineMethod (c$, "isAChar", 
+function (c) {
+if (c >= 'a' && c <= 'z') {
+return true;
+}if (c >= 'A' && c <= 'Z') {
+return true;
+}if (c >= '0' && c <= '9') {
+return true;
+}if (c == '_') {
+return true;
+}return false;
+}, "~S");
+Clazz.defineMethod (c$, "matchLeft", 
+function (pos, pt) {
+if (pos <= 0) {
+return true;
+}if (this.isAChar (pt.src.charAt (pos)) && this.isAChar (pt.src.charAt (pos - 1))) {
+return false;
+}return true;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.defineMethod (c$, "matchRight", 
+function (pos, pt) {
+if (pos < 0) {
+return false;
+}if (pos + 1 >= pt.src.length ()) {
+return true;
+}if (this.isAChar (pt.src.charAt (pos)) && this.isAChar (pt.src.charAt (pos + 1))) {
+return false;
+}return true;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (this.matchRight (pos - 1, pt) || this.matchLeft (pos, pt)) {
+return this.nextMatch (pos, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (0);
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.Boundary ();
+}, "java.util.Hashtable");
+});
index 26a2303..064ec34 100644 (file)
@@ -1,60 +1,60 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Or"], "com.stevesoft.pat.Bracket", ["com.stevesoft.pat.patInt", "java.util.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.neg = false;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Bracket", com.stevesoft.pat.Or);\r
-Clazz.makeConstructor (c$, \r
-function (n) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.Bracket, []);\r
-this.neg = n;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "leftForm", \r
-function () {\r
-if (this.neg) {\r
-return "[^";\r
-} else {\r
-return "[";\r
-}});\r
-Clazz.overrideMethod (c$, "rightForm", \r
-function () {\r
-return "]";\r
-});\r
-Clazz.overrideMethod (c$, "sepForm", \r
-function () {\r
-return "";\r
-});\r
-Clazz.defineMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-if (pos >= pt.src.length ()) {\r
-return -1;\r
-}var r = Clazz.superCall (this, com.stevesoft.pat.Bracket, "matchInternal", [pos, pt]);\r
-if ((this.neg && r < 0) || (!this.neg && r >= 0)) {\r
-return this.nextMatch (pos + 1, pt);\r
-}return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (1);\r
-});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (1);\r
-});\r
-Clazz.overrideMethod (c$, "addOr", \r
-function (p) {\r
-this.pv = null;\r
-this.v.addElement (p);\r
-p.setParent (null);\r
-return this;\r
-}, "com.stevesoft.pat.Pattern");\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-var b =  new com.stevesoft.pat.Bracket (this.neg);\r
-b.v =  new java.util.Vector ();\r
-for (var i = 0; i < this.v.size (); i++) {\r
-b.v.addElement ((this.v.elementAt (i)).clone1 (h));\r
-}\r
-return b;\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Or"], "com.stevesoft.pat.Bracket", ["com.stevesoft.pat.patInt", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.neg = false;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Bracket", com.stevesoft.pat.Or);
+Clazz.makeConstructor (c$, 
+function (n) {
+Clazz.superConstructor (this, com.stevesoft.pat.Bracket, []);
+this.neg = n;
+}, "~B");
+Clazz.overrideMethod (c$, "leftForm", 
+function () {
+if (this.neg) {
+return "[^";
+} else {
+return "[";
+}});
+Clazz.overrideMethod (c$, "rightForm", 
+function () {
+return "]";
+});
+Clazz.overrideMethod (c$, "sepForm", 
+function () {
+return "";
+});
+Clazz.defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (pos >= pt.src.length ()) {
+return -1;
+}var r = Clazz.superCall (this, com.stevesoft.pat.Bracket, "matchInternal", [pos, pt]);
+if ((this.neg && r < 0) || (!this.neg && r >= 0)) {
+return this.nextMatch (pos + 1, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "addOr", 
+function (p) {
+this.pv = null;
+this.v.addElement (p);
+p.setParent (null);
+return this;
+}, "com.stevesoft.pat.Pattern");
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+var b =  new com.stevesoft.pat.Bracket (this.neg);
+b.v =  new java.util.Vector ();
+for (var i = 0; i < this.v.size (); i++) {
+b.v.addElement ((this.v.elementAt (i)).clone1 (h));
+}
+return b;
+}, "java.util.Hashtable");
+});
index e35645b..30fe2ec 100644 (file)
@@ -1,94 +1,94 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (null, "com.stevesoft.pat.CaseMgr", ["java.lang.Character"], function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "CaseMgr");\r
-c$.toUpperCaseC = Clazz.defineMethod (c$, "toUpperCaseC", \r
-function (c) {\r
-return Character.toUpperCase (c);\r
-}, "~S");\r
-c$.toLowerCaseC = Clazz.defineMethod (c$, "toLowerCaseC", \r
-function (c) {\r
-return Character.toLowerCase (c);\r
-}, "~S");\r
-c$.toUpperCase = Clazz.defineMethod (c$, "toUpperCase", \r
-function (s) {\r
-return s.toUpperCase ();\r
-}, "~S");\r
-c$.toLowerCase = Clazz.defineMethod (c$, "toLowerCase", \r
-function (s) {\r
-return s.toLowerCase ();\r
-}, "~S");\r
-c$.toTitleCaseC = Clazz.defineMethod (c$, "toTitleCaseC", \r
-function (c) {\r
-return Character.toUpperCase (c);\r
-}, "~S");\r
-c$.regionMatchesLike = Clazz.defineMethod (c$, "regionMatchesLike", \r
-function (s1, ign, i1, s2, i2, i3) {\r
-var itot = i2 + i3;\r
-if (itot > s2.length () || i1 + i3 > s1.length ()) {\r
-return false;\r
-}if (!ign) {\r
-for (var i = i2; i < itot; i++) {\r
-if (s2.charAt (i) != s1.charAt (i1++)) {\r
-return false;\r
-}}\r
-} else {\r
-for (var i = i2; i < itot; i++) {\r
-if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {\r
-return false;\r
-}}\r
-}return true;\r
-}, "com.stevesoft.pat.StringLike,~B,~N,com.stevesoft.pat.StringLike,~N,~N");\r
-c$.regionMatches = Clazz.defineMethod (c$, "regionMatches", \r
-function (s1, ign, i1, s2, i2, i3) {\r
-var itot = i2 + i3;\r
-if (itot > s2.length () || i1 + i3 > s1.length) {\r
-return false;\r
-}if (!ign) {\r
-for (var i = i2; i < itot; i++) {\r
-if (s2.charAt (i) != s1.charAt (i1++)) {\r
-return false;\r
-}}\r
-} else {\r
-for (var i = i2; i < itot; i++) {\r
-if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {\r
-return false;\r
-}}\r
-}return true;\r
-}, "~S,~B,~N,com.stevesoft.pat.StringLike,~N,~N");\r
-c$.regionMatchesLike2 = Clazz.defineMethod (c$, "regionMatchesLike2", \r
-function (s1, ign, i1, s2, i2, i3) {\r
-var itot = i2 + i3;\r
-if (itot > s2.length || i1 + i3 > s1.length ()) {\r
-return false;\r
-}if (!ign) {\r
-for (var i = i2; i < itot; i++) {\r
-if (s2.charAt (i) != s1.charAt (i1++)) {\r
-return false;\r
-}}\r
-} else {\r
-for (var i = i2; i < itot; i++) {\r
-if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {\r
-return false;\r
-}}\r
-}return true;\r
-}, "com.stevesoft.pat.StringLike,~B,~N,~S,~N,~N");\r
-c$.regionMatches2 = Clazz.defineMethod (c$, "regionMatches2", \r
-function (s1, ign, i1, s2, i2, i3) {\r
-var itot = i2 + i3;\r
-if (itot > s2.length || i1 + i3 > s1.length) {\r
-return false;\r
-}if (!ign) {\r
-for (var i = i2; i < itot; i++) {\r
-if (s2.charAt (i) != s1.charAt (i1++)) {\r
-return false;\r
-}}\r
-} else {\r
-for (var i = i2; i < itot; i++) {\r
-if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {\r
-return false;\r
-}}\r
-}return true;\r
-}, "~S,~B,~N,~S,~N,~N");\r
-Clazz.defineStatics (c$,\r
-"java_1_0", false);\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, "com.stevesoft.pat.CaseMgr", ["java.lang.Character"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "CaseMgr");
+c$.toUpperCaseC = Clazz.defineMethod (c$, "toUpperCaseC", 
+function (c) {
+return Character.toUpperCase (c);
+}, "~S");
+c$.toLowerCaseC = Clazz.defineMethod (c$, "toLowerCaseC", 
+function (c) {
+return Character.toLowerCase (c);
+}, "~S");
+c$.toUpperCase = Clazz.defineMethod (c$, "toUpperCase", 
+function (s) {
+return s.toUpperCase ();
+}, "~S");
+c$.toLowerCase = Clazz.defineMethod (c$, "toLowerCase", 
+function (s) {
+return s.toLowerCase ();
+}, "~S");
+c$.toTitleCaseC = Clazz.defineMethod (c$, "toTitleCaseC", 
+function (c) {
+return Character.toUpperCase (c);
+}, "~S");
+c$.regionMatchesLike = Clazz.defineMethod (c$, "regionMatchesLike", 
+function (s1, ign, i1, s2, i2, i3) {
+var itot = i2 + i3;
+if (itot > s2.length () || i1 + i3 > s1.length ()) {
+return false;
+}if (!ign) {
+for (var i = i2; i < itot; i++) {
+if (s2.charAt (i) != s1.charAt (i1++)) {
+return false;
+}}
+} else {
+for (var i = i2; i < itot; i++) {
+if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
+return false;
+}}
+}return true;
+}, "com.stevesoft.pat.StringLike,~B,~N,com.stevesoft.pat.StringLike,~N,~N");
+c$.regionMatches = Clazz.defineMethod (c$, "regionMatches", 
+function (s1, ign, i1, s2, i2, i3) {
+var itot = i2 + i3;
+if (itot > s2.length () || i1 + i3 > s1.length) {
+return false;
+}if (!ign) {
+for (var i = i2; i < itot; i++) {
+if (s2.charAt (i) != s1.charAt (i1++)) {
+return false;
+}}
+} else {
+for (var i = i2; i < itot; i++) {
+if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
+return false;
+}}
+}return true;
+}, "~S,~B,~N,com.stevesoft.pat.StringLike,~N,~N");
+c$.regionMatchesLike2 = Clazz.defineMethod (c$, "regionMatchesLike2", 
+function (s1, ign, i1, s2, i2, i3) {
+var itot = i2 + i3;
+if (itot > s2.length || i1 + i3 > s1.length ()) {
+return false;
+}if (!ign) {
+for (var i = i2; i < itot; i++) {
+if (s2.charAt (i) != s1.charAt (i1++)) {
+return false;
+}}
+} else {
+for (var i = i2; i < itot; i++) {
+if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
+return false;
+}}
+}return true;
+}, "com.stevesoft.pat.StringLike,~B,~N,~S,~N,~N");
+c$.regionMatches2 = Clazz.defineMethod (c$, "regionMatches2", 
+function (s1, ign, i1, s2, i2, i3) {
+var itot = i2 + i3;
+if (itot > s2.length || i1 + i3 > s1.length) {
+return false;
+}if (!ign) {
+for (var i = i2; i < itot; i++) {
+if (s2.charAt (i) != s1.charAt (i1++)) {
+return false;
+}}
+} else {
+for (var i = i2; i < itot; i++) {
+if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
+return false;
+}}
+}return true;
+}, "~S,~B,~N,~S,~N,~N");
+Clazz.defineStatics (c$,
+"java_1_0", false);
+});
index 1a6f683..3edb0ff 100644 (file)
@@ -1,35 +1,35 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.ChangeRule", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.NewRule = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "ChangeRule", com.stevesoft.pat.SpecialRule);\r
-Clazz.makeConstructor (c$, \r
-function (c) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.ChangeRule, []);\r
-this.NewRule = c.NewRule;\r
-}, "com.stevesoft.pat.ChangeRule");\r
-Clazz.makeConstructor (c$, \r
-function (nm, rr) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.ChangeRule, []);\r
-this.name = nm;\r
-this.NewRule = rr;\r
-}, "~S,com.stevesoft.pat.Regex");\r
-Clazz.makeConstructor (c$, \r
-function (nm, tr) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.ChangeRule, []);\r
-this.name = nm;\r
-this.NewRule = tr.rp;\r
-}, "~S,com.stevesoft.pat.Transformer");\r
-Clazz.overrideMethod (c$, "clone1", \r
-function () {\r
-return  new com.stevesoft.pat.ChangeRule (this);\r
-});\r
-Clazz.overrideMethod (c$, "toString1", \r
-function () {\r
-return "${=" + this.name + "}";\r
-});\r
-Clazz.overrideMethod (c$, "apply", \r
-function (sb, rr) {\r
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.ChangeRule", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.NewRule = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "ChangeRule", com.stevesoft.pat.SpecialRule);
+Clazz.makeConstructor (c$, 
+function (c) {
+Clazz.superConstructor (this, com.stevesoft.pat.ChangeRule, []);
+this.NewRule = c.NewRule;
+}, "com.stevesoft.pat.ChangeRule");
+Clazz.makeConstructor (c$, 
+function (nm, rr) {
+Clazz.superConstructor (this, com.stevesoft.pat.ChangeRule, []);
+this.name = nm;
+this.NewRule = rr;
+}, "~S,com.stevesoft.pat.Regex");
+Clazz.makeConstructor (c$, 
+function (nm, tr) {
+Clazz.superConstructor (this, com.stevesoft.pat.ChangeRule, []);
+this.name = nm;
+this.NewRule = tr.rp;
+}, "~S,com.stevesoft.pat.Transformer");
+Clazz.overrideMethod (c$, "clone1", 
+function () {
+return  new com.stevesoft.pat.ChangeRule (this);
+});
+Clazz.overrideMethod (c$, "toString1", 
+function () {
+return "${=" + this.name + "}";
+});
+Clazz.overrideMethod (c$, "apply", 
+function (sb, rr) {
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+});
index 85a0917..92c00f3 100644 (file)
@@ -1,24 +1,24 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.CodeRule", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.c = 'E';\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "CodeRule", com.stevesoft.pat.SpecialRule);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.CodeRule, []);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (c) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.CodeRule, []);\r
-this.c = c;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "apply", \r
-function (sb, res) {\r
-sb.setMode (this.c);\r
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");\r
-Clazz.overrideMethod (c$, "toString1", \r
-function () {\r
-return "\\" + this.c;\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.CodeRule", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.c = 'E';
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "CodeRule", com.stevesoft.pat.SpecialRule);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.CodeRule, []);
+});
+Clazz.makeConstructor (c$, 
+function (c) {
+Clazz.superConstructor (this, com.stevesoft.pat.CodeRule, []);
+this.c = c;
+}, "~S");
+Clazz.overrideMethod (c$, "apply", 
+function (sb, res) {
+sb.setMode (this.c);
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz.overrideMethod (c$, "toString1", 
+function () {
+return "\\" + this.c;
+});
+});
index 9a42c67..43250ce 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "Ctrl");\r
-Clazz.defineStatics (c$,\r
-"cmap",  Clazz.newCharArray (-1, [String.fromCharCode (64), 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', String.fromCharCode (91), String.fromCharCode (92), String.fromCharCode (93), String.fromCharCode (94), String.fromCharCode (95), String.fromCharCode (96), 'a', 'a', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', String.fromCharCode (123), String.fromCharCode (124), String.fromCharCode (125), String.fromCharCode (126), String.fromCharCode (127), String.fromCharCode (0), String.fromCharCode (1), String.fromCharCode (2), String.fromCharCode (3), String.fromCharCode (4), String.fromCharCode (5), String.fromCharCode (6), String.fromCharCode (7), String.fromCharCode (8), String.fromCharCode (9), String.fromCharCode (10), String.fromCharCode (11), String.fromCharCode (12), String.fromCharCode (13), String.fromCharCode (14), String.fromCharCode (15), String.fromCharCode (16), String.fromCharCode (17), String.fromCharCode (18), String.fromCharCode (19), String.fromCharCode (20), String.fromCharCode (21), String.fromCharCode (22), String.fromCharCode (23), String.fromCharCode (24), String.fromCharCode (25), String.fromCharCode (26), String.fromCharCode (27), String.fromCharCode (27), String.fromCharCode (29), String.fromCharCode (30), String.fromCharCode (31), String.fromCharCode (32), String.fromCharCode (1), String.fromCharCode (2), String.fromCharCode (3), String.fromCharCode (4), String.fromCharCode (5), String.fromCharCode (6), String.fromCharCode (7), String.fromCharCode (8), String.fromCharCode (9), String.fromCharCode (10), String.fromCharCode (11), String.fromCharCode (12), String.fromCharCode (13), String.fromCharCode (14), String.fromCharCode (15), String.fromCharCode (16), String.fromCharCode (17), String.fromCharCode (18), String.fromCharCode (19), String.fromCharCode (20), String.fromCharCode (21), String.fromCharCode (22), String.fromCharCode (23), String.fromCharCode (24), String.fromCharCode (25), String.fromCharCode (26), String.fromCharCode (59), String.fromCharCode (60), String.fromCharCode (61), String.fromCharCode (62), String.fromCharCode (63), String.fromCharCode (192), String.fromCharCode (193), String.fromCharCode (194), String.fromCharCode (195), String.fromCharCode (196), String.fromCharCode (197), String.fromCharCode (198), String.fromCharCode (199), String.fromCharCode (200), String.fromCharCode (201), String.fromCharCode (202), String.fromCharCode (203), String.fromCharCode (204), String.fromCharCode (205), String.fromCharCode (206), String.fromCharCode (207), String.fromCharCode (208), String.fromCharCode (209), String.fromCharCode (210), String.fromCharCode (211), String.fromCharCode (212), String.fromCharCode (213), String.fromCharCode (214), String.fromCharCode (215), String.fromCharCode (216), String.fromCharCode (217), String.fromCharCode (218), String.fromCharCode (219), String.fromCharCode (220), String.fromCharCode (221), String.fromCharCode (222), String.fromCharCode (223), String.fromCharCode (224), String.fromCharCode (225), String.fromCharCode (226), String.fromCharCode (227), String.fromCharCode (228), String.fromCharCode (229), String.fromCharCode (230), String.fromCharCode (231), String.fromCharCode (232), String.fromCharCode (233), String.fromCharCode (234), String.fromCharCode (235), String.fromCharCode (236), String.fromCharCode (237), String.fromCharCode (238), String.fromCharCode (239), String.fromCharCode (240), String.fromCharCode (241), String.fromCharCode (242), String.fromCharCode (243), String.fromCharCode (244), String.fromCharCode (245), String.fromCharCode (246), String.fromCharCode (247), String.fromCharCode (248), String.fromCharCode (249), String.fromCharCode (250), String.fromCharCode (251), String.fromCharCode (252), String.fromCharCode (253), String.fromCharCode (254), String.fromCharCode (255), String.fromCharCode (128), String.fromCharCode (129), String.fromCharCode (130), String.fromCharCode (131), String.fromCharCode (132), String.fromCharCode (133), String.fromCharCode (134), String.fromCharCode (135), String.fromCharCode (136), String.fromCharCode (137), String.fromCharCode (138), String.fromCharCode (139), String.fromCharCode (140), String.fromCharCode (141), String.fromCharCode (142), String.fromCharCode (143), String.fromCharCode (144), String.fromCharCode (145), String.fromCharCode (146), String.fromCharCode (147), String.fromCharCode (148), String.fromCharCode (149), String.fromCharCode (150), String.fromCharCode (151), String.fromCharCode (152), String.fromCharCode (153), String.fromCharCode (154), String.fromCharCode (155), String.fromCharCode (156), String.fromCharCode (157), String.fromCharCode (158), String.fromCharCode (159), String.fromCharCode (160), String.fromCharCode (161), String.fromCharCode (162), String.fromCharCode (163), String.fromCharCode (164), String.fromCharCode (165), String.fromCharCode (166), String.fromCharCode (167), String.fromCharCode (168), String.fromCharCode (169), String.fromCharCode (170), String.fromCharCode (171), String.fromCharCode (172), String.fromCharCode (173), String.fromCharCode (174), String.fromCharCode (175), String.fromCharCode (176), String.fromCharCode (177), String.fromCharCode (178), String.fromCharCode (179), String.fromCharCode (180), String.fromCharCode (181), String.fromCharCode (182), String.fromCharCode (183), String.fromCharCode (184), String.fromCharCode (185), String.fromCharCode (186), String.fromCharCode (187), String.fromCharCode (188), String.fromCharCode (189), String.fromCharCode (190), String.fromCharCode (191)]));\r
+Clazz.declarePackage ("com.stevesoft.pat");
+c$ = Clazz.declareType (com.stevesoft.pat, "Ctrl");
+Clazz.defineStatics (c$,
+"cmap",  Clazz.newCharArray (-1, [String.fromCharCode (64), 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', String.fromCharCode (91), String.fromCharCode (92), String.fromCharCode (93), String.fromCharCode (94), String.fromCharCode (95), String.fromCharCode (96), 'a', 'a', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', String.fromCharCode (123), String.fromCharCode (124), String.fromCharCode (125), String.fromCharCode (126), String.fromCharCode (127), String.fromCharCode (0), String.fromCharCode (1), String.fromCharCode (2), String.fromCharCode (3), String.fromCharCode (4), String.fromCharCode (5), String.fromCharCode (6), String.fromCharCode (7), String.fromCharCode (8), String.fromCharCode (9), String.fromCharCode (10), String.fromCharCode (11), String.fromCharCode (12), String.fromCharCode (13), String.fromCharCode (14), String.fromCharCode (15), String.fromCharCode (16), String.fromCharCode (17), String.fromCharCode (18), String.fromCharCode (19), String.fromCharCode (20), String.fromCharCode (21), String.fromCharCode (22), String.fromCharCode (23), String.fromCharCode (24), String.fromCharCode (25), String.fromCharCode (26), String.fromCharCode (27), String.fromCharCode (27), String.fromCharCode (29), String.fromCharCode (30), String.fromCharCode (31), String.fromCharCode (32), String.fromCharCode (1), String.fromCharCode (2), String.fromCharCode (3), String.fromCharCode (4), String.fromCharCode (5), String.fromCharCode (6), String.fromCharCode (7), String.fromCharCode (8), String.fromCharCode (9), String.fromCharCode (10), String.fromCharCode (11), String.fromCharCode (12), String.fromCharCode (13), String.fromCharCode (14), String.fromCharCode (15), String.fromCharCode (16), String.fromCharCode (17), String.fromCharCode (18), String.fromCharCode (19), String.fromCharCode (20), String.fromCharCode (21), String.fromCharCode (22), String.fromCharCode (23), String.fromCharCode (24), String.fromCharCode (25), String.fromCharCode (26), String.fromCharCode (59), String.fromCharCode (60), String.fromCharCode (61), String.fromCharCode (62), String.fromCharCode (63), String.fromCharCode (192), String.fromCharCode (193), String.fromCharCode (194), String.fromCharCode (195), String.fromCharCode (196), String.fromCharCode (197), String.fromCharCode (198), String.fromCharCode (199), String.fromCharCode (200), String.fromCharCode (201), String.fromCharCode (202), String.fromCharCode (203), String.fromCharCode (204), String.fromCharCode (205), String.fromCharCode (206), String.fromCharCode (207), String.fromCharCode (208), String.fromCharCode (209), String.fromCharCode (210), String.fromCharCode (211), String.fromCharCode (212), String.fromCharCode (213), String.fromCharCode (214), String.fromCharCode (215), String.fromCharCode (216), String.fromCharCode (217), String.fromCharCode (218), String.fromCharCode (219), String.fromCharCode (220), String.fromCharCode (221), String.fromCharCode (222), String.fromCharCode (223), String.fromCharCode (224), String.fromCharCode (225), String.fromCharCode (226), String.fromCharCode (227), String.fromCharCode (228), String.fromCharCode (229), String.fromCharCode (230), String.fromCharCode (231), String.fromCharCode (232), String.fromCharCode (233), String.fromCharCode (234), String.fromCharCode (235), String.fromCharCode (236), String.fromCharCode (237), String.fromCharCode (238), String.fromCharCode (239), String.fromCharCode (240), String.fromCharCode (241), String.fromCharCode (242), String.fromCharCode (243), String.fromCharCode (244), String.fromCharCode (245), String.fromCharCode (246), String.fromCharCode (247), String.fromCharCode (248), String.fromCharCode (249), String.fromCharCode (250), String.fromCharCode (251), String.fromCharCode (252), String.fromCharCode (253), String.fromCharCode (254), String.fromCharCode (255), String.fromCharCode (128), String.fromCharCode (129), String.fromCharCode (130), String.fromCharCode (131), String.fromCharCode (132), String.fromCharCode (133), String.fromCharCode (134), String.fromCharCode (135), String.fromCharCode (136), String.fromCharCode (137), String.fromCharCode (138), String.fromCharCode (139), String.fromCharCode (140), String.fromCharCode (141), String.fromCharCode (142), String.fromCharCode (143), String.fromCharCode (144), String.fromCharCode (145), String.fromCharCode (146), String.fromCharCode (147), String.fromCharCode (148), String.fromCharCode (149), String.fromCharCode (150), String.fromCharCode (151), String.fromCharCode (152), String.fromCharCode (153), String.fromCharCode (154), String.fromCharCode (155), String.fromCharCode (156), String.fromCharCode (157), String.fromCharCode (158), String.fromCharCode (159), String.fromCharCode (160), String.fromCharCode (161), String.fromCharCode (162), String.fromCharCode (163), String.fromCharCode (164), String.fromCharCode (165), String.fromCharCode (166), String.fromCharCode (167), String.fromCharCode (168), String.fromCharCode (169), String.fromCharCode (170), String.fromCharCode (171), String.fromCharCode (172), String.fromCharCode (173), String.fromCharCode (174), String.fromCharCode (175), String.fromCharCode (176), String.fromCharCode (177), String.fromCharCode (178), String.fromCharCode (179), String.fromCharCode (180), String.fromCharCode (181), String.fromCharCode (182), String.fromCharCode (183), String.fromCharCode (184), String.fromCharCode (185), String.fromCharCode (186), String.fromCharCode (187), String.fromCharCode (188), String.fromCharCode (189), String.fromCharCode (190), String.fromCharCode (191)]));
index 4e0fa72..44fa656 100644 (file)
@@ -1,41 +1,41 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Custom", ["com.stevesoft.pat.Regex"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.select = null;\r
-this.v = null;\r
-this.start = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Custom", com.stevesoft.pat.PatternSub);\r
-Clazz.makeConstructor (c$, \r
-function (s) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.Custom, []);\r
-this.select = s;\r
-this.v = com.stevesoft.pat.Regex.validators.get (s);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-this.start = pos;\r
-return this.sub.matchInternal (pos, pt);\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var a = this.v.argsave == null ? "" : ":" + this.v.argsave;\r
-return "(??" + this.select + a + ")" + this.nextString ();\r
-});\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-return this.v.minChars ();\r
-});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return this.v.maxChars ();\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-var c =  new com.stevesoft.pat.Custom (this.select);\r
-h.put (c, c);\r
-h.put (this, c);\r
-c.sub = this.sub.clone (h);\r
-return c;\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Custom", ["com.stevesoft.pat.Regex"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.select = null;
+this.v = null;
+this.start = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Custom", com.stevesoft.pat.PatternSub);
+Clazz.makeConstructor (c$, 
+function (s) {
+Clazz.superConstructor (this, com.stevesoft.pat.Custom, []);
+this.select = s;
+this.v = com.stevesoft.pat.Regex.validators.get (s);
+}, "~S");
+Clazz.defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+this.start = pos;
+return this.sub.matchInternal (pos, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var a = this.v.argsave == null ? "" : ":" + this.v.argsave;
+return "(??" + this.select + a + ")" + this.nextString ();
+});
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+return this.v.minChars ();
+});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return this.v.maxChars ();
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+var c =  new com.stevesoft.pat.Custom (this.select);
+h.put (c, c);
+h.put (this, c);
+c.sub = this.sub.clone (h);
+return c;
+}, "java.util.Hashtable");
+});
index f5cb0ed..800608f 100644 (file)
@@ -1,27 +1,27 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.CustomEndpoint", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.c = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "CustomEndpoint", com.stevesoft.pat.Pattern);\r
-Clazz.makeConstructor (c$, \r
-function (cm) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.CustomEndpoint, []);\r
-this.c = cm;\r
-}, "com.stevesoft.pat.Custom");\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-var npos = this.c.v.validate (pt.src, this.c.start, pos);\r
-if (npos >= 0) {\r
-return this.nextMatch (npos, pt);\r
-}return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "";\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-return  new com.stevesoft.pat.CustomEndpoint (this.c.clone (h));\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.CustomEndpoint", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.c = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "CustomEndpoint", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$, 
+function (cm) {
+Clazz.superConstructor (this, com.stevesoft.pat.CustomEndpoint, []);
+this.c = cm;
+}, "com.stevesoft.pat.Custom");
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+var npos = this.c.v.validate (pt.src, this.c.start, pos);
+if (npos >= 0) {
+return this.nextMatch (npos, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "";
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.CustomEndpoint (this.c.clone (h));
+}, "java.util.Hashtable");
+});
index 0a2470f..b078e11 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.FileRegex"], "com.stevesoft.pat.DirFileRegex", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "DirFileRegex", com.stevesoft.pat.FileRegex);\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.FileRegex"], "com.stevesoft.pat.DirFileRegex", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "DirFileRegex", com.stevesoft.pat.FileRegex);
+});
index 3ec04e2..25dfe0a 100644 (file)
Binary files a/bin/com/stevesoft/pat/DotMulti.class and b/bin/com/stevesoft/pat/DotMulti.class differ
index 3584af1..172397b 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.DotMulti", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.fewestMatches = null;\r
-this.mostMatches = null;\r
-this.matchFewest = false;\r
-this.src = null;\r
-this.srclength = 0;\r
-this.dotDoesntMatchCR = true;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "DotMulti", com.stevesoft.pat.PatternSub);\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-return this.fewestMatches;\r
-});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return this.mostMatches;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (a, b) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.DotMulti, []);\r
-this.fewestMatches = a;\r
-this.mostMatches = b;\r
-}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return ".{" + this.fewestMatches + "," + this.mostMatches + "}" + (this.matchFewest ? "?" : "") + "(?# <= dot multi)" + this.nextString ();\r
-});\r
-Clazz.defineMethod (c$, "submatchInternal", \r
-function (pos, pt) {\r
-if (pos < this.srclength) {\r
-if (this.dotDoesntMatchCR) {\r
-if (this.src.charAt (pos) != '\n') {\r
-return 1 + pos;\r
-}} else {\r
-return 1 + pos;\r
-}}return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-var m = -1;\r
-var i = pos;\r
-this.src = pt.src;\r
-this.srclength = this.src.length ();\r
-this.dotDoesntMatchCR = pt.dotDoesntMatchCR;\r
-if (this.matchFewest) {\r
-var nMatches = 0;\r
-while (this.fewestMatches.intValue () > nMatches) {\r
-i = this.submatchInternal (i, pt);\r
-if (i < 0) {\r
-return -1;\r
-}nMatches++;\r
-}\r
-if (i < 0) {\r
-return -1;\r
-}var ii = this.nextMatch (i, pt);\r
-if (ii >= 0) {\r
-return ii;\r
-}if (!this.mostMatches.finite ()) {\r
-while (i >= 0) {\r
-i = this.submatchInternal (i, pt);\r
-if (i < 0) {\r
-return -1;\r
-}ii = this.nextMatch (i, pt);\r
-if (ii >= 0) {\r
-return ii;\r
-}}\r
-} else {\r
-while (i > 0) {\r
-i = this.submatchInternal (i, pt);\r
-if (i < 0) {\r
-return -1;\r
-}nMatches++;\r
-if (nMatches > this.mostMatches.intValue ()) {\r
-return -1;\r
-}ii = this.nextMatch (i, pt);\r
-if (ii >= 0) {\r
-return ii;\r
-}}\r
-}return -1;\r
-}var nMatches = 0;\r
-while (this.fewestMatches.intValue () > nMatches) {\r
-i = this.submatchInternal (i, pt);\r
-if (i >= 0) {\r
-nMatches++;\r
-} else {\r
-return -1;\r
-}}\r
-m = i;\r
-if (this.mostMatches.finite ()) {\r
-while (nMatches < this.mostMatches.intValue ()) {\r
-i = this.submatchInternal (i, pt);\r
-if (i >= 0) {\r
-m = i;\r
-nMatches++;\r
-} else {\r
-break;\r
-}}\r
-} else {\r
-while (true) {\r
-i = this.submatchInternal (i, pt);\r
-if (i >= 0) {\r
-m = i;\r
-nMatches++;\r
-} else {\r
-break;\r
-}}\r
-}while (m >= pos) {\r
-var r = this.nextMatch (m, pt);\r
-if (r >= 0) {\r
-return r;\r
-}m -= 1;\r
-nMatches--;\r
-if (nMatches < this.fewestMatches.intValue ()) {\r
-return -1;\r
-}}\r
-return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-var dm =  new com.stevesoft.pat.DotMulti (this.fewestMatches, this.mostMatches);\r
-dm.matchFewest = this.matchFewest;\r
-return dm;\r
-}, "java.util.Hashtable");\r
-Clazz.defineStatics (c$,\r
-"step", 1,\r
-"idcount", 1);\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.DotMulti", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.fewestMatches = null;
+this.mostMatches = null;
+this.matchFewest = false;
+this.src = null;
+this.srclength = 0;
+this.dotDoesntMatchCR = true;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "DotMulti", com.stevesoft.pat.PatternSub);
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+return this.fewestMatches;
+});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return this.mostMatches;
+});
+Clazz.makeConstructor (c$, 
+function (a, b) {
+Clazz.superConstructor (this, com.stevesoft.pat.DotMulti, []);
+this.fewestMatches = a;
+this.mostMatches = b;
+}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return ".{" + this.fewestMatches + "," + this.mostMatches + "}" + (this.matchFewest ? "?" : "") + "(?# <= dot multi)" + this.nextString ();
+});
+Clazz.defineMethod (c$, "submatchInternal", 
+function (pos, pt) {
+if (pos < this.srclength) {
+if (this.dotDoesntMatchCR) {
+if (this.src.charAt (pos) != '\n') {
+return 1 + pos;
+}} else {
+return 1 + pos;
+}}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+var m = -1;
+var i = pos;
+this.src = pt.src;
+this.srclength = this.src.length ();
+this.dotDoesntMatchCR = pt.dotDoesntMatchCR;
+if (this.matchFewest) {
+var nMatches = 0;
+while (this.fewestMatches.intValue () > nMatches) {
+i = this.submatchInternal (i, pt);
+if (i < 0) {
+return -1;
+}nMatches++;
+}
+if (i < 0) {
+return -1;
+}var ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}if (!this.mostMatches.finite ()) {
+while (i >= 0) {
+i = this.submatchInternal (i, pt);
+if (i < 0) {
+return -1;
+}ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}}
+} else {
+while (i > 0) {
+i = this.submatchInternal (i, pt);
+if (i < 0) {
+return -1;
+}nMatches++;
+if (nMatches > this.mostMatches.intValue ()) {
+return -1;
+}ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}}
+}return -1;
+}var nMatches = 0;
+while (this.fewestMatches.intValue () > nMatches) {
+i = this.submatchInternal (i, pt);
+if (i >= 0) {
+nMatches++;
+} else {
+return -1;
+}}
+m = i;
+if (this.mostMatches.finite ()) {
+while (nMatches < this.mostMatches.intValue ()) {
+i = this.submatchInternal (i, pt);
+if (i >= 0) {
+m = i;
+nMatches++;
+} else {
+break;
+}}
+} else {
+while (true) {
+i = this.submatchInternal (i, pt);
+if (i >= 0) {
+m = i;
+nMatches++;
+} else {
+break;
+}}
+}while (m >= pos) {
+var r = this.nextMatch (m, pt);
+if (r >= 0) {
+return r;
+}m -= 1;
+nMatches--;
+if (nMatches < this.fewestMatches.intValue ()) {
+return -1;
+}}
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+var dm =  new com.stevesoft.pat.DotMulti (this.fewestMatches, this.mostMatches);
+dm.matchFewest = this.matchFewest;
+return dm;
+}, "java.util.Hashtable");
+Clazz.defineStatics (c$,
+"step", 1,
+"idcount", 1);
+});
index b332682..3df399f 100644 (file)
@@ -1,38 +1,38 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.End", ["com.stevesoft.pat.patInt"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.retIsEnd = false;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "End", com.stevesoft.pat.Pattern);\r
-Clazz.makeConstructor (c$, \r
-function (b) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.End, []);\r
-this.retIsEnd = b;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-if (this.retIsEnd && pt.mFlag && pos < pt.src.length ()) {\r
-if (pt.src.charAt (pos) == '\n') {\r
-return this.nextMatch (pos, pt);\r
-}}if (pt.src.length () == pos) {\r
-return this.nextMatch (pos, pt);\r
-} else if (pos < pt.src.length ()) {\r
-pt.src.charAt (pos);\r
-}return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-if (this.retIsEnd) {\r
-return "$";\r
-} else {\r
-return "\\Z";\r
-}});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (1);\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-return  new com.stevesoft.pat.End (this.retIsEnd);\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.End", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.retIsEnd = false;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "End", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$, 
+function (b) {
+Clazz.superConstructor (this, com.stevesoft.pat.End, []);
+this.retIsEnd = b;
+}, "~B");
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (this.retIsEnd && pt.mFlag && pos < pt.src.length ()) {
+if (pt.src.charAt (pos) == '\n') {
+return this.nextMatch (pos, pt);
+}}if (pt.src.length () == pos) {
+return this.nextMatch (pos, pt);
+} else if (pos < pt.src.length ()) {
+pt.src.charAt (pos);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+if (this.retIsEnd) {
+return "$";
+} else {
+return "\\Z";
+}});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.End (this.retIsEnd);
+}, "java.util.Hashtable");
+});
index 0e7d38a..d26c009 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Bracket"], "com.stevesoft.pat.FastBracket", ["com.stevesoft.pat.Range", "$.oneChar", "java.util.BitSet", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.$min = 0;\r
-this.$max = 0;\r
-this.bs = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "FastBracket", com.stevesoft.pat.Bracket);\r
-c$.process = Clazz.defineMethod (c$, "process", \r
-function (b, ignc) {\r
-var v = b.v;\r
-b.pv = null;\r
-try {\r
-var nv = v;\r
-if (ignc) {\r
-nv =  new java.util.Vector ();\r
-for (var i = 0; i < v.size (); i++) {\r
-var p = v.elementAt (i);\r
-nv.addElement (p);\r
-if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar)) {\r
-var oc = p;\r
-nv.addElement ( new com.stevesoft.pat.oneChar (oc.altc));\r
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.Range)) {\r
-var ra = p;\r
-nv.addElement ( new com.stevesoft.pat.Range (ra.altlo, ra.althi));\r
-}}\r
-}v = nv;\r
-for (var i = 0; i < v.size () - 1; i++) {\r
-for (var j = 0; j < v.size () - 1; j++) {\r
-var c1 = com.stevesoft.pat.FastBracket.getl (v.elementAt (j));\r
-var c2 = com.stevesoft.pat.FastBracket.getl (v.elementAt (j + 1));\r
-if (c2 < c1) {\r
-var o = v.elementAt (j);\r
-v.setElementAt (v.elementAt (j + 1), j);\r
-v.setElementAt (o, j + 1);\r
-}}\r
-}\r
-nv =  new java.util.Vector ();\r
-var p = v.elementAt (0);\r
-nv.addElement (p);\r
-for (var i = 1; i < v.size (); i++) {\r
-if ((com.stevesoft.pat.FastBracket.geth (p)).charCodeAt (0) + 1 >= (com.stevesoft.pat.FastBracket.getl (v.elementAt (i))).charCodeAt (0)) {\r
-var p2 = v.elementAt (i);\r
-var lo = com.stevesoft.pat.FastBracket.min (com.stevesoft.pat.FastBracket.getl (p), com.stevesoft.pat.FastBracket.getl (p2));\r
-var hi = com.stevesoft.pat.FastBracket.max (com.stevesoft.pat.FastBracket.geth (p), com.stevesoft.pat.FastBracket.geth (p2));\r
-nv.setElementAt (p = com.stevesoft.pat.FastBracket.mkelem (lo, hi), nv.size () - 1);\r
-} else {\r
-p = v.elementAt (i);\r
-nv.addElement (p);\r
-}}\r
-b.v = v = nv;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, com.stevesoft.pat.RegSyntax)) {\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-var negv = com.stevesoft.pat.FastBracket.neg (v);\r
-if (v.size () == 1) {\r
-return b;\r
-}if (negv.size () == 1) {\r
-b.v = negv;\r
-b.neg = !b.neg;\r
-return b;\r
-}var fb = com.stevesoft.pat.FastBracket.newbrack (v, b.neg);\r
-if (fb == null) {\r
-fb = com.stevesoft.pat.FastBracket.newbrack (negv, !b.neg);\r
-}if (fb != null) {\r
-fb.parent = b.parent;\r
-fb.next = b.next;\r
-return fb;\r
-}return b;\r
-}, "com.stevesoft.pat.Bracket,~B");\r
-c$.newbrack = Clazz.defineMethod (c$, "newbrack", \r
-function (v, neg) {\r
-var fb =  new com.stevesoft.pat.FastBracket (neg);\r
-fb.v = v;\r
-if (v.size () == 0) {\r
-return null;\r
-}fb.$min = (com.stevesoft.pat.FastBracket.getl (v.elementAt (0))).charCodeAt (0);\r
-fb.$max = (com.stevesoft.pat.FastBracket.geth (v.elementAt (v.size () - 1))).charCodeAt (0);\r
-if (fb.$max - fb.$min <= 256) {\r
-fb.bs =  new java.util.BitSet (fb.$max - fb.$min + 1);\r
-for (var i = 0; i < v.size (); i++) {\r
-var o = v.elementAt (i);\r
-var min0 = (com.stevesoft.pat.FastBracket.getl (o)).charCodeAt (0) - fb.$min;\r
-var max0 = (com.stevesoft.pat.FastBracket.geth (o)).charCodeAt (0) - fb.$min;\r
-for (var j = min0; j <= max0; j++) {\r
-fb.bs.set (j);\r
-}\r
-}\r
-return fb;\r
-}return null;\r
-}, "java.util.Vector,~B");\r
-c$.neg = Clazz.defineMethod (c$, "neg", \r
-function (v) {\r
-try {\r
-var nv =  new java.util.Vector ();\r
-if (v.size () == 0) {\r
-nv.addElement ( new com.stevesoft.pat.Range (String.fromCharCode (0), String.fromCharCode (65535)));\r
-return nv;\r
-}var p0 = (com.stevesoft.pat.FastBracket.getl (v.elementAt (0))).charCodeAt (0);\r
-if (p0 != 0) {\r
-nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (0), String.fromCharCode (p0 - 1)));\r
-}for (var i = 0; i < v.size () - 1; i++) {\r
-var hi = (com.stevesoft.pat.FastBracket.getl (v.elementAt (i + 1))).charCodeAt (0) - 1;\r
-var lo = (com.stevesoft.pat.FastBracket.geth (v.elementAt (i))).charCodeAt (0) + 1;\r
-nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (lo), String.fromCharCode (hi)));\r
-}\r
-var pN = (com.stevesoft.pat.FastBracket.geth (v.lastElement ())).charCodeAt (0);\r
-if (pN != 65535) {\r
-nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (pN + 1), String.fromCharCode (65535)));\r
-}return nv;\r
-} catch (rs) {\r
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {\r
-return null;\r
-} else {\r
-throw rs;\r
-}\r
-}\r
-}, "java.util.Vector");\r
-c$.mkelem = Clazz.defineMethod (c$, "mkelem", \r
-function (lo, hi) {\r
-return lo == hi ? ( new com.stevesoft.pat.oneChar (lo)) : ( new com.stevesoft.pat.Range (lo, hi));\r
-}, "~S,~S");\r
-c$.min = Clazz.defineMethod (c$, "min", \r
-function (a, b) {\r
-return a < b ? a : b;\r
-}, "~S,~S");\r
-c$.max = Clazz.defineMethod (c$, "max", \r
-function (a, b) {\r
-return a > b ? a : b;\r
-}, "~S,~S");\r
-c$.getl = Clazz.defineMethod (c$, "getl", \r
-function (o) {\r
-var p = o;\r
-if (Clazz.instanceOf (p, com.stevesoft.pat.Range)) {\r
-return (p).lo;\r
-}return (p).c;\r
-}, "~O");\r
-c$.geth = Clazz.defineMethod (c$, "geth", \r
-function (o) {\r
-var p = o;\r
-if (Clazz.instanceOf (p, com.stevesoft.pat.Range)) {\r
-return (p).hi;\r
-}return (p).c;\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-if (pos >= pt.src.length () || this.Masked (pos, pt)) {\r
-return -1;\r
-}var c = pt.src.charAt (pos);\r
-return ( new Boolean (this.neg ^ (c.charCodeAt (0) >= this.$min && c.charCodeAt (0) <= this.$max && this.bs.get (c.charCodeAt (0) - this.$min))).valueOf ()) ? this.nextMatch (pos + 1, pt) : -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Bracket"], "com.stevesoft.pat.FastBracket", ["com.stevesoft.pat.Range", "$.oneChar", "java.util.BitSet", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.$min = 0;
+this.$max = 0;
+this.bs = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "FastBracket", com.stevesoft.pat.Bracket);
+c$.process = Clazz.defineMethod (c$, "process", 
+function (b, ignc) {
+var v = b.v;
+b.pv = null;
+try {
+var nv = v;
+if (ignc) {
+nv =  new java.util.Vector ();
+for (var i = 0; i < v.size (); i++) {
+var p = v.elementAt (i);
+nv.addElement (p);
+if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar)) {
+var oc = p;
+nv.addElement ( new com.stevesoft.pat.oneChar (oc.altc));
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.Range)) {
+var ra = p;
+nv.addElement ( new com.stevesoft.pat.Range (ra.altlo, ra.althi));
+}}
+}v = nv;
+for (var i = 0; i < v.size () - 1; i++) {
+for (var j = 0; j < v.size () - 1; j++) {
+var c1 = com.stevesoft.pat.FastBracket.getl (v.elementAt (j));
+var c2 = com.stevesoft.pat.FastBracket.getl (v.elementAt (j + 1));
+if (c2 < c1) {
+var o = v.elementAt (j);
+v.setElementAt (v.elementAt (j + 1), j);
+v.setElementAt (o, j + 1);
+}}
+}
+nv =  new java.util.Vector ();
+var p = v.elementAt (0);
+nv.addElement (p);
+for (var i = 1; i < v.size (); i++) {
+if ((com.stevesoft.pat.FastBracket.geth (p)).charCodeAt (0) + 1 >= (com.stevesoft.pat.FastBracket.getl (v.elementAt (i))).charCodeAt (0)) {
+var p2 = v.elementAt (i);
+var lo = com.stevesoft.pat.FastBracket.min (com.stevesoft.pat.FastBracket.getl (p), com.stevesoft.pat.FastBracket.getl (p2));
+var hi = com.stevesoft.pat.FastBracket.max (com.stevesoft.pat.FastBracket.geth (p), com.stevesoft.pat.FastBracket.geth (p2));
+nv.setElementAt (p = com.stevesoft.pat.FastBracket.mkelem (lo, hi), nv.size () - 1);
+} else {
+p = v.elementAt (i);
+nv.addElement (p);
+}}
+b.v = v = nv;
+} catch (e) {
+if (Clazz.exceptionOf (e, com.stevesoft.pat.RegSyntax)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+var negv = com.stevesoft.pat.FastBracket.neg (v);
+if (v.size () == 1) {
+return b;
+}if (negv.size () == 1) {
+b.v = negv;
+b.neg = !b.neg;
+return b;
+}var fb = com.stevesoft.pat.FastBracket.newbrack (v, b.neg);
+if (fb == null) {
+fb = com.stevesoft.pat.FastBracket.newbrack (negv, !b.neg);
+}if (fb != null) {
+fb.parent = b.parent;
+fb.next = b.next;
+return fb;
+}return b;
+}, "com.stevesoft.pat.Bracket,~B");
+c$.newbrack = Clazz.defineMethod (c$, "newbrack", 
+function (v, neg) {
+var fb =  new com.stevesoft.pat.FastBracket (neg);
+fb.v = v;
+if (v.size () == 0) {
+return null;
+}fb.$min = (com.stevesoft.pat.FastBracket.getl (v.elementAt (0))).charCodeAt (0);
+fb.$max = (com.stevesoft.pat.FastBracket.geth (v.elementAt (v.size () - 1))).charCodeAt (0);
+if (fb.$max - fb.$min <= 256) {
+fb.bs =  new java.util.BitSet (fb.$max - fb.$min + 1);
+for (var i = 0; i < v.size (); i++) {
+var o = v.elementAt (i);
+var min0 = (com.stevesoft.pat.FastBracket.getl (o)).charCodeAt (0) - fb.$min;
+var max0 = (com.stevesoft.pat.FastBracket.geth (o)).charCodeAt (0) - fb.$min;
+for (var j = min0; j <= max0; j++) {
+fb.bs.set (j);
+}
+}
+return fb;
+}return null;
+}, "java.util.Vector,~B");
+c$.neg = Clazz.defineMethod (c$, "neg", 
+function (v) {
+try {
+var nv =  new java.util.Vector ();
+if (v.size () == 0) {
+nv.addElement ( new com.stevesoft.pat.Range (String.fromCharCode (0), String.fromCharCode (65535)));
+return nv;
+}var p0 = (com.stevesoft.pat.FastBracket.getl (v.elementAt (0))).charCodeAt (0);
+if (p0 != 0) {
+nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (0), String.fromCharCode (p0 - 1)));
+}for (var i = 0; i < v.size () - 1; i++) {
+var hi = (com.stevesoft.pat.FastBracket.getl (v.elementAt (i + 1))).charCodeAt (0) - 1;
+var lo = (com.stevesoft.pat.FastBracket.geth (v.elementAt (i))).charCodeAt (0) + 1;
+nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (lo), String.fromCharCode (hi)));
+}
+var pN = (com.stevesoft.pat.FastBracket.geth (v.lastElement ())).charCodeAt (0);
+if (pN != 65535) {
+nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (pN + 1), String.fromCharCode (65535)));
+}return nv;
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Vector");
+c$.mkelem = Clazz.defineMethod (c$, "mkelem", 
+function (lo, hi) {
+return lo == hi ? ( new com.stevesoft.pat.oneChar (lo)) : ( new com.stevesoft.pat.Range (lo, hi));
+}, "~S,~S");
+c$.min = Clazz.defineMethod (c$, "min", 
+function (a, b) {
+return a < b ? a : b;
+}, "~S,~S");
+c$.max = Clazz.defineMethod (c$, "max", 
+function (a, b) {
+return a > b ? a : b;
+}, "~S,~S");
+c$.getl = Clazz.defineMethod (c$, "getl", 
+function (o) {
+var p = o;
+if (Clazz.instanceOf (p, com.stevesoft.pat.Range)) {
+return (p).lo;
+}return (p).c;
+}, "~O");
+c$.geth = Clazz.defineMethod (c$, "geth", 
+function (o) {
+var p = o;
+if (Clazz.instanceOf (p, com.stevesoft.pat.Range)) {
+return (p).hi;
+}return (p).c;
+}, "~O");
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (pos >= pt.src.length () || this.Masked (pos, pt)) {
+return -1;
+}var c = pt.src.charAt (pos);
+return ( new Boolean (this.neg ^ (c.charCodeAt (0) >= this.$min && c.charCodeAt (0) <= this.$max && this.bs.get (c.charCodeAt (0) - this.$min))).valueOf ()) ? this.nextMatch (pos + 1, pt) : -1;
+}, "~N,com.stevesoft.pat.Pthings");
+});
index 9de4ac6..5baa014 100644 (file)
Binary files a/bin/com/stevesoft/pat/FastMulti.class and b/bin/com/stevesoft/pat/FastMulti.class differ
index 898aa9e..16ffec1 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.FastMulti", ["com.stevesoft.pat.RegSyntaxError", "$.patInt"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.fewestMatches = null;\r
-this.mostMatches = null;\r
-this.matchFewest = false;\r
-this.step = -1;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "FastMulti", com.stevesoft.pat.PatternSub);\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-return this.sub.countMinChars ().mul (this.fewestMatches);\r
-});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return this.sub.countMaxChars ().mul (this.mostMatches);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (a, b, p) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.FastMulti, []);\r
-if (p == null) {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("Null length pattern followed by *, +, or other Multi.");\r
-}this.fewestMatches = a;\r
-this.mostMatches = b;\r
-this.sub = p;\r
-this.step = p.countMinChars ().intValue ();\r
-this.sub.setParent (null);\r
-}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");\r
-Clazz.defineMethod (c$, "toString", \r
-function () {\r
-return this.sub.toString () + "{" + this.fewestMatches + "," + this.mostMatches + "}" + (this.matchFewest ? "?" : "") + "(?# <= fast multi)" + this.nextString ();\r
-});\r
-Clazz.defineMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-var m = -1;\r
-var i = pos;\r
-var endstr = pt.src.length () - this.step;\r
-var matches =  new com.stevesoft.pat.patInt (0);\r
-if (this.matchFewest) {\r
-if (this.fewestMatches.lessEq (matches)) {\r
-var ii = this.nextMatch (i, pt);\r
-if (ii >= 0) {\r
-return ii;\r
-}}while (i >= 0 && i <= endstr) {\r
-i = this.sub.matchInternal (i, pt);\r
-if (i >= 0) {\r
-matches.inc ();\r
-if (this.fewestMatches.lessEq (matches)) {\r
-var ii = this.nextMatch (i, pt);\r
-if (ii >= 0) {\r
-return ii;\r
-}}if (matches.equals (this.mostMatches)) {\r
-return -1;\r
-}}}\r
-return -1;\r
-}var nMatches = 0;\r
-while (this.fewestMatches.intValue () > nMatches) {\r
-i = this.sub.matchInternal (i, pt);\r
-if (i >= 0) {\r
-nMatches++;\r
-} else {\r
-return -1;\r
-}}\r
-m = i;\r
-if (this.mostMatches.finite ()) {\r
-while (nMatches < this.mostMatches.intValue ()) {\r
-i = this.sub.matchInternal (i, pt);\r
-if (i >= 0) {\r
-m = i;\r
-nMatches++;\r
-} else {\r
-break;\r
-}}\r
-} else {\r
-while (true) {\r
-i = this.sub.matchInternal (i, pt);\r
-if (i >= 0) {\r
-m = i;\r
-nMatches++;\r
-} else {\r
-break;\r
-}}\r
-}while (m >= pos) {\r
-var r = this.nextMatch (m, pt);\r
-if (r >= 0) {\r
-return r;\r
-}m -= this.step;\r
-nMatches--;\r
-if (nMatches < this.fewestMatches.intValue ()) {\r
-return -1;\r
-}}\r
-return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-try {\r
-var fm =  new com.stevesoft.pat.FastMulti (this.fewestMatches, this.mostMatches, this.sub.clone (h));\r
-fm.matchFewest = this.matchFewest;\r
-return fm;\r
-} catch (rs) {\r
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {\r
-return null;\r
-} else {\r
-throw rs;\r
-}\r
-}\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.FastMulti", ["com.stevesoft.pat.RegSyntaxError", "$.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.fewestMatches = null;
+this.mostMatches = null;
+this.matchFewest = false;
+this.step = -1;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "FastMulti", com.stevesoft.pat.PatternSub);
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+return this.sub.countMinChars ().mul (this.fewestMatches);
+});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return this.sub.countMaxChars ().mul (this.mostMatches);
+});
+Clazz.makeConstructor (c$, 
+function (a, b, p) {
+Clazz.superConstructor (this, com.stevesoft.pat.FastMulti, []);
+if (p == null) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Null length pattern followed by *, +, or other Multi.");
+}this.fewestMatches = a;
+this.mostMatches = b;
+this.sub = p;
+this.step = p.countMinChars ().intValue ();
+this.sub.setParent (null);
+}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
+Clazz.defineMethod (c$, "toString", 
+function () {
+return this.sub.toString () + "{" + this.fewestMatches + "," + this.mostMatches + "}" + (this.matchFewest ? "?" : "") + "(?# <= fast multi)" + this.nextString ();
+});
+Clazz.defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+var m = -1;
+var i = pos;
+var endstr = pt.src.length () - this.step;
+var matches =  new com.stevesoft.pat.patInt (0);
+if (this.matchFewest) {
+if (this.fewestMatches.lessEq (matches)) {
+var ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}}while (i >= 0 && i <= endstr) {
+i = this.sub.matchInternal (i, pt);
+if (i >= 0) {
+matches.inc ();
+if (this.fewestMatches.lessEq (matches)) {
+var ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}}if (matches.equals (this.mostMatches)) {
+return -1;
+}}}
+return -1;
+}var nMatches = 0;
+while (this.fewestMatches.intValue () > nMatches) {
+i = this.sub.matchInternal (i, pt);
+if (i >= 0) {
+nMatches++;
+} else {
+return -1;
+}}
+m = i;
+if (this.mostMatches.finite ()) {
+while (nMatches < this.mostMatches.intValue ()) {
+i = this.sub.matchInternal (i, pt);
+if (i >= 0) {
+m = i;
+nMatches++;
+} else {
+break;
+}}
+} else {
+while (true) {
+i = this.sub.matchInternal (i, pt);
+if (i >= 0) {
+m = i;
+nMatches++;
+} else {
+break;
+}}
+}while (m >= pos) {
+var r = this.nextMatch (m, pt);
+if (r >= 0) {
+return r;
+}m -= this.step;
+nMatches--;
+if (nMatches < this.fewestMatches.intValue ()) {
+return -1;
+}}
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+try {
+var fm =  new com.stevesoft.pat.FastMulti (this.fewestMatches, this.mostMatches, this.sub.clone (h));
+fm.matchFewest = this.matchFewest;
+return fm;
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Hashtable");
+});
index ca23839..8327c7c 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Regex"], "com.stevesoft.pat.FileRegex", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "FileRegex", com.stevesoft.pat.Regex);\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Regex"], "com.stevesoft.pat.FileRegex", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "FileRegex", com.stevesoft.pat.Regex);
+});
index a9ebd1b..89fdd10 100644 (file)
@@ -1,48 +1,48 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Group", ["com.stevesoft.pat.patInt"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.op = '\0';\r
-this.cl = '\0';\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Group", com.stevesoft.pat.Pattern);\r
-Clazz.makeConstructor (c$, \r
-function (opi, cli) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.Group, []);\r
-this.op = opi;\r
-this.cl = cli;\r
-}, "~S,~S");\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-var i;\r
-var count = 1;\r
-if (pos < pt.src.length ()) {\r
-if (!this.Masked (pos, pt) && pt.src.charAt (pos) != this.op) {\r
-return -1;\r
-}}for (i = pos + 1; i < pt.src.length (); i++) {\r
-var c = pt.src.charAt (i);\r
-var b = !this.Masked (i, pt);\r
-if (b && c == '\\') {\r
-i++;\r
-} else {\r
-if (b && c == this.cl) {\r
-count--;\r
-}if (count == 0) {\r
-return this.nextMatch (i + 1, pt);\r
-}if (b && c == this.op) {\r
-count++;\r
-}}}\r
-return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "(?@" + this.op + this.cl + ")" + this.nextString ();\r
-});\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (2);\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-return  new com.stevesoft.pat.Group (this.op, this.cl);\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Group", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.op = '\0';
+this.cl = '\0';
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Group", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$, 
+function (opi, cli) {
+Clazz.superConstructor (this, com.stevesoft.pat.Group, []);
+this.op = opi;
+this.cl = cli;
+}, "~S,~S");
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+var i;
+var count = 1;
+if (pos < pt.src.length ()) {
+if (!this.Masked (pos, pt) && pt.src.charAt (pos) != this.op) {
+return -1;
+}}for (i = pos + 1; i < pt.src.length (); i++) {
+var c = pt.src.charAt (i);
+var b = !this.Masked (i, pt);
+if (b && c == '\\') {
+i++;
+} else {
+if (b && c == this.cl) {
+count--;
+}if (count == 0) {
+return this.nextMatch (i + 1, pt);
+}if (b && c == this.op) {
+count++;
+}}}
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "(?@" + this.op + this.cl + ")" + this.nextString ();
+});
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (2);
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.Group (this.op, this.cl);
+}, "java.util.Hashtable");
+});
index f70f50c..df5c04a 100644 (file)
@@ -1,16 +1,16 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.LeftRule", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "LeftRule", com.stevesoft.pat.ReplaceRule);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.LeftRule, []);\r
-});\r
-Clazz.overrideMethod (c$, "apply", \r
-function (sb, res) {\r
-sb.append (res.left ());\r
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");\r
-Clazz.overrideMethod (c$, "toString1", \r
-function () {\r
-return "$`";\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.LeftRule", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "LeftRule", com.stevesoft.pat.ReplaceRule);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.LeftRule, []);
+});
+Clazz.overrideMethod (c$, "apply", 
+function (sb, res) {
+sb.append (res.left ());
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz.overrideMethod (c$, "toString1", 
+function () {
+return "$`";
+});
+});
index 801e5de..23502c3 100644 (file)
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "MessageManager");\r
-c$.getString = Clazz.defineMethod (c$, "getString", \r
-function (string) {\r
-return string;\r
-}, "~S");\r
-c$.formatMessage = Clazz.defineMethod (c$, "formatMessage", \r
-function (s, fields) {\r
-for (var i = 0; i < fields.length; i++) s += " " + fields[i];\r
-\r
-return s;\r
-}, "~S,~A");\r
+Clazz.declarePackage ("com.stevesoft.pat");
+c$ = Clazz.declareType (com.stevesoft.pat, "MessageManager");
+c$.getString = Clazz.defineMethod (c$, "getString", 
+function (string) {
+return string;
+}, "~S");
+c$.formatMessage = Clazz.defineMethod (c$, "formatMessage", 
+function (s, fields) {
+for (var i = 0; i < fields.length; i++) s += " " + fields[i];
+
+return s;
+}, "~S,~A");
index e98b4ff..e759c95 100644 (file)
@@ -1,62 +1,62 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Multi", ["com.stevesoft.pat.Multi_stage2"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.a = null;\r
-this.b = null;\r
-this.p = null;\r
-this.st2 = null;\r
-this.matchFewest = false;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Multi", com.stevesoft.pat.PatternSub);\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-return this.a.mul (this.p.countMinChars ());\r
-});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return this.b.mul (this.p.countMaxChars ());\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (a, b, p) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.Multi, []);\r
-this.a = a;\r
-this.b = b;\r
-this.p = p;\r
-this.st2 =  new com.stevesoft.pat.Multi_stage2 (a, b, p);\r
-this.st2.parent = this;\r
-this.sub = this.st2.sub;\r
-}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-this.st2.matchFewest = this.matchFewest;\r
-return this.st2.toString ();\r
-});\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-try {\r
-this.st2 =  new com.stevesoft.pat.Multi_stage2 (this.a, this.b, this.p);\r
-} catch (r__) {\r
-if (Clazz.exceptionOf (r__, com.stevesoft.pat.RegSyntax)) {\r
-} else {\r
-throw r__;\r
-}\r
-}\r
-this.st2.matchFewest = this.matchFewest;\r
-this.st2.parent = this;\r
-return this.st2.matchInternal (pos, pt);\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-try {\r
-var m =  new com.stevesoft.pat.Multi (this.a, this.b, (this.p).clone (h));\r
-m.matchFewest = this.matchFewest;\r
-return m;\r
-} catch (rs) {\r
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {\r
-return null;\r
-} else {\r
-throw rs;\r
-}\r
-}\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Multi", ["com.stevesoft.pat.Multi_stage2"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.a = null;
+this.b = null;
+this.p = null;
+this.st2 = null;
+this.matchFewest = false;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Multi", com.stevesoft.pat.PatternSub);
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+return this.a.mul (this.p.countMinChars ());
+});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return this.b.mul (this.p.countMaxChars ());
+});
+Clazz.makeConstructor (c$, 
+function (a, b, p) {
+Clazz.superConstructor (this, com.stevesoft.pat.Multi, []);
+this.a = a;
+this.b = b;
+this.p = p;
+this.st2 =  new com.stevesoft.pat.Multi_stage2 (a, b, p);
+this.st2.parent = this;
+this.sub = this.st2.sub;
+}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+this.st2.matchFewest = this.matchFewest;
+return this.st2.toString ();
+});
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+try {
+this.st2 =  new com.stevesoft.pat.Multi_stage2 (this.a, this.b, this.p);
+} catch (r__) {
+if (Clazz.exceptionOf (r__, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw r__;
+}
+}
+this.st2.matchFewest = this.matchFewest;
+this.st2.parent = this;
+return this.st2.matchInternal (pos, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+try {
+var m =  new com.stevesoft.pat.Multi (this.a, this.b, (this.p).clone (h));
+m.matchFewest = this.matchFewest;
+return m;
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Hashtable");
+});
index f536031..e749758 100644 (file)
@@ -1,9 +1,9 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Multi"], "com.stevesoft.pat.MultiMin", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "MultiMin", com.stevesoft.pat.Multi);\r
-Clazz.makeConstructor (c$, \r
-function (i1, i2, p) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.MultiMin, [i1, i2, p]);\r
-this.matchFewest = true;\r
-}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Multi"], "com.stevesoft.pat.MultiMin", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "MultiMin", com.stevesoft.pat.Multi);
+Clazz.makeConstructor (c$, 
+function (i1, i2, p) {
+Clazz.superConstructor (this, com.stevesoft.pat.MultiMin, [i1, i2, p]);
+this.matchFewest = true;
+}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
+});
index 1d291ab..6d4f8fc 100644 (file)
@@ -1,95 +1,95 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Multi_stage2", ["com.stevesoft.pat.RegSyntaxError", "$.patInt"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.nextRet = null;\r
-this.count = null;\r
-this.matchMin = null;\r
-this.matchMax = null;\r
-this.matchFewest = false;\r
-this.pos_old = -1;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Multi_stage2", com.stevesoft.pat.PatternSub);\r
-Clazz.defineMethod (c$, "toString", \r
-function () {\r
-var ret = "";\r
-ret += this.sub.toString ();\r
-ret += "{" + this.matchMin + "," + this.matchMax + "}";\r
-if (this.matchFewest) {\r
-ret += "?";\r
-}ret += this.parent.nextString ();\r
-return ret;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (a, b, p) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.Multi_stage2, []);\r
-if (p == null) {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("Multiple match of Null pattern requested.");\r
-}this.sub = p;\r
-this.nextRet = this;\r
-this.sub.setParent (this);\r
-this.matchMin = a;\r
-this.matchMax = b;\r
-this.count =  new com.stevesoft.pat.patInt (0);\r
-if (!a.lessEq (b)) {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("Bad Multi Args: " + a + ">" + b);\r
-}var i =  new com.stevesoft.pat.patInt (-1);\r
-if (a.lessEq (i)) {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("Bad Multi Args: " + a + "< 0");\r
-}}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");\r
-Clazz.defineMethod (c$, "getNext", \r
-function () {\r
-return this.nextRet;\r
-});\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-this.sub.setParent (this);\r
-var canUse = -1;\r
-if (this.pos_old >= 0 && pos == this.pos_old) {\r
-return -1;\r
-}this.pos_old = pos;\r
-if (this.matchMin.lessEq (this.count)) {\r
-canUse = pos;\r
-}if (!this.count.lessEq (this.matchMax) || pos > pt.src.length ()) {\r
-return -1;\r
-}if ((this.matchFewest || this.count.equals (this.matchMax)) && canUse >= 0) {\r
-var n = Clazz.superCall (this, com.stevesoft.pat.Multi_stage2, "getNext", []);\r
-if (n == null) {\r
-return canUse;\r
-}var ret = this.testMatch (n, pos, pt);\r
-if (ret >= 0) {\r
-return ret;\r
-} else {\r
-canUse = -1;\r
-}}this.count.inc ();\r
-try {\r
-if (this.count.lessEq (this.matchMax)) {\r
-var r = this.testMatch (this.sub, pos, pt);\r
-if (r >= 0) {\r
-return r;\r
-}}} finally {\r
-this.count.dec ();\r
-}\r
-if (!this.matchFewest && canUse >= 0) {\r
-var n = Clazz.superCall (this, com.stevesoft.pat.Multi_stage2, "getNext", []);\r
-if (n == null) {\r
-return canUse;\r
-}var ret = this.testMatch (n, pos, pt);\r
-return ret;\r
-} else {\r
-return canUse;\r
-}}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-try {\r
-var m =  new com.stevesoft.pat.Multi_stage2 (this.matchMin, this.matchMax, this.sub.clone (h));\r
-m.matchFewest = this.matchFewest;\r
-return m;\r
-} catch (rs) {\r
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {\r
-return null;\r
-} else {\r
-throw rs;\r
-}\r
-}\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Multi_stage2", ["com.stevesoft.pat.RegSyntaxError", "$.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.nextRet = null;
+this.count = null;
+this.matchMin = null;
+this.matchMax = null;
+this.matchFewest = false;
+this.pos_old = -1;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Multi_stage2", com.stevesoft.pat.PatternSub);
+Clazz.defineMethod (c$, "toString", 
+function () {
+var ret = "";
+ret += this.sub.toString ();
+ret += "{" + this.matchMin + "," + this.matchMax + "}";
+if (this.matchFewest) {
+ret += "?";
+}ret += this.parent.nextString ();
+return ret;
+});
+Clazz.makeConstructor (c$, 
+function (a, b, p) {
+Clazz.superConstructor (this, com.stevesoft.pat.Multi_stage2, []);
+if (p == null) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Multiple match of Null pattern requested.");
+}this.sub = p;
+this.nextRet = this;
+this.sub.setParent (this);
+this.matchMin = a;
+this.matchMax = b;
+this.count =  new com.stevesoft.pat.patInt (0);
+if (!a.lessEq (b)) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Bad Multi Args: " + a + ">" + b);
+}var i =  new com.stevesoft.pat.patInt (-1);
+if (a.lessEq (i)) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Bad Multi Args: " + a + "< 0");
+}}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
+Clazz.defineMethod (c$, "getNext", 
+function () {
+return this.nextRet;
+});
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+this.sub.setParent (this);
+var canUse = -1;
+if (this.pos_old >= 0 && pos == this.pos_old) {
+return -1;
+}this.pos_old = pos;
+if (this.matchMin.lessEq (this.count)) {
+canUse = pos;
+}if (!this.count.lessEq (this.matchMax) || pos > pt.src.length ()) {
+return -1;
+}if ((this.matchFewest || this.count.equals (this.matchMax)) && canUse >= 0) {
+var n = Clazz.superCall (this, com.stevesoft.pat.Multi_stage2, "getNext", []);
+if (n == null) {
+return canUse;
+}var ret = this.testMatch (n, pos, pt);
+if (ret >= 0) {
+return ret;
+} else {
+canUse = -1;
+}}this.count.inc ();
+try {
+if (this.count.lessEq (this.matchMax)) {
+var r = this.testMatch (this.sub, pos, pt);
+if (r >= 0) {
+return r;
+}}} finally {
+this.count.dec ();
+}
+if (!this.matchFewest && canUse >= 0) {
+var n = Clazz.superCall (this, com.stevesoft.pat.Multi_stage2, "getNext", []);
+if (n == null) {
+return canUse;
+}var ret = this.testMatch (n, pos, pt);
+return ret;
+} else {
+return canUse;
+}}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+try {
+var m =  new com.stevesoft.pat.Multi_stage2 (this.matchMin, this.matchMax, this.sub.clone (h));
+m.matchFewest = this.matchFewest;
+return m;
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Hashtable");
+});
index ec7438b..394e032 100644 (file)
@@ -1,16 +1,16 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.NoPattern", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "NoPattern", com.stevesoft.pat.Pattern);\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "(?e=#)[^#d#D]";\r
-});\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (i, p) {\r
-return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-return  new com.stevesoft.pat.NoPattern ();\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.NoPattern", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "NoPattern", com.stevesoft.pat.Pattern);
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "(?e=#)[^#d#D]";
+});
+Clazz.overrideMethod (c$, "matchInternal", 
+function (i, p) {
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.NoPattern ();
+}, "java.util.Hashtable");
+});
index 59811e9..eb3a57d 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.FileRegex"], "com.stevesoft.pat.NonDirFileRegex", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "NonDirFileRegex", com.stevesoft.pat.FileRegex);\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.FileRegex"], "com.stevesoft.pat.NonDirFileRegex", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "NonDirFileRegex", com.stevesoft.pat.FileRegex);
+});
index 45dd68f..4c44ef5 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["java.lang.Error"], "com.stevesoft.pat.NotImplementedError", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "NotImplementedError", Error);\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["java.lang.Error"], "com.stevesoft.pat.NotImplementedError", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "NotImplementedError", Error);
+});
index 2198789..a8eda32 100644 (file)
@@ -1,20 +1,20 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.NullPattern", ["com.stevesoft.pat.patInt"], function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "NullPattern", com.stevesoft.pat.Pattern);\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return this.nextString ();\r
-});\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (p, pt) {\r
-return this.nextMatch (p, pt);\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (0);\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-return  new com.stevesoft.pat.NullPattern ();\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.NullPattern", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "NullPattern", com.stevesoft.pat.Pattern);
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return this.nextString ();
+});
+Clazz.overrideMethod (c$, "matchInternal", 
+function (p, pt) {
+return this.nextMatch (p, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (0);
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.NullPattern ();
+}, "java.util.Hashtable");
+});
index f6a1485..f781239 100644 (file)
@@ -1,15 +1,15 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.NullRule", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "NullRule", com.stevesoft.pat.ReplaceRule);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.NullRule, []);\r
-});\r
-Clazz.overrideMethod (c$, "apply", \r
-function (sb, res) {\r
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");\r
-Clazz.overrideMethod (c$, "toString1", \r
-function () {\r
-return "";\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.NullRule", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "NullRule", com.stevesoft.pat.ReplaceRule);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.NullRule, []);
+});
+Clazz.overrideMethod (c$, "apply", 
+function (sb, res) {
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz.overrideMethod (c$, "toString1", 
+function () {
+return "";
+});
+});
index 1ca2671..9255825 100644 (file)
@@ -1,92 +1,92 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Or", ["com.stevesoft.pat.patInt", "java.lang.StringBuffer", "java.util.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.v = null;\r
-this.pv = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Or", com.stevesoft.pat.Pattern);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.Or, []);\r
-this.v =  new java.util.Vector ();\r
-});\r
-Clazz.defineMethod (c$, "leftForm", \r
-function () {\r
-return "(?:";\r
-});\r
-Clazz.defineMethod (c$, "rightForm", \r
-function () {\r
-return ")";\r
-});\r
-Clazz.defineMethod (c$, "sepForm", \r
-function () {\r
-return "|";\r
-});\r
-Clazz.defineMethod (c$, "addOr", \r
-function (p) {\r
-this.pv = null;\r
-this.v.addElement (p);\r
-p.setParent (this);\r
-return this;\r
-}, "com.stevesoft.pat.Pattern");\r
-Clazz.defineMethod (c$, "toString", \r
-function () {\r
-var i;\r
-var sb =  new StringBuffer ();\r
-sb.append (this.leftForm ());\r
-if (this.v.size () > 0) {\r
-sb.append ((this.v.elementAt (0)).toString ());\r
-}for (i = 1; i < this.v.size (); i++) {\r
-sb.append (this.sepForm ());\r
-sb.append ((this.v.elementAt (i)).toString ());\r
-}\r
-sb.append (this.rightForm ());\r
-sb.append (this.nextString ());\r
-return sb.toString ();\r
-});\r
-Clazz.defineMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-if (this.pv == null) {\r
-this.pv =  new Array (this.v.size ());\r
-this.v.copyInto (this.pv);\r
-}for (var i = 0; i < this.v.size (); i++) {\r
-var p = this.pv[i];\r
-var r = p.matchInternal (pos, pt);\r
-if (r >= 0) {\r
-return r;\r
-}}\r
-return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-if (this.v.size () == 0) {\r
-return  new com.stevesoft.pat.patInt (0);\r
-}var m = (this.v.elementAt (0)).countMinChars ();\r
-for (var i = 1; i < this.v.size (); i++) {\r
-var p = this.v.elementAt (i);\r
-m.mineq (p.countMinChars ());\r
-}\r
-return m;\r
-});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-if (this.v.size () == 0) {\r
-return  new com.stevesoft.pat.patInt (0);\r
-}var m = (this.v.elementAt (0)).countMaxChars ();\r
-for (var i = 1; i < this.v.size (); i++) {\r
-var p = this.v.elementAt (i);\r
-m.maxeq (p.countMaxChars ());\r
-}\r
-return m;\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-var o =  new com.stevesoft.pat.Or ();\r
-h.put (this, o);\r
-h.put (o, o);\r
-for (var i = 0; i < this.v.size (); i++) {\r
-o.v.addElement ((this.v.elementAt (i)).clone (h));\r
-}\r
-return o;\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Or", ["com.stevesoft.pat.patInt", "java.lang.StringBuffer", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.v = null;
+this.pv = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Or", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.Or, []);
+this.v =  new java.util.Vector ();
+});
+Clazz.defineMethod (c$, "leftForm", 
+function () {
+return "(?:";
+});
+Clazz.defineMethod (c$, "rightForm", 
+function () {
+return ")";
+});
+Clazz.defineMethod (c$, "sepForm", 
+function () {
+return "|";
+});
+Clazz.defineMethod (c$, "addOr", 
+function (p) {
+this.pv = null;
+this.v.addElement (p);
+p.setParent (this);
+return this;
+}, "com.stevesoft.pat.Pattern");
+Clazz.defineMethod (c$, "toString", 
+function () {
+var i;
+var sb =  new StringBuffer ();
+sb.append (this.leftForm ());
+if (this.v.size () > 0) {
+sb.append ((this.v.elementAt (0)).toString ());
+}for (i = 1; i < this.v.size (); i++) {
+sb.append (this.sepForm ());
+sb.append ((this.v.elementAt (i)).toString ());
+}
+sb.append (this.rightForm ());
+sb.append (this.nextString ());
+return sb.toString ();
+});
+Clazz.defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (this.pv == null) {
+this.pv =  new Array (this.v.size ());
+this.v.copyInto (this.pv);
+}for (var i = 0; i < this.v.size (); i++) {
+var p = this.pv[i];
+var r = p.matchInternal (pos, pt);
+if (r >= 0) {
+return r;
+}}
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+if (this.v.size () == 0) {
+return  new com.stevesoft.pat.patInt (0);
+}var m = (this.v.elementAt (0)).countMinChars ();
+for (var i = 1; i < this.v.size (); i++) {
+var p = this.v.elementAt (i);
+m.mineq (p.countMinChars ());
+}
+return m;
+});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+if (this.v.size () == 0) {
+return  new com.stevesoft.pat.patInt (0);
+}var m = (this.v.elementAt (0)).countMaxChars ();
+for (var i = 1; i < this.v.size (); i++) {
+var p = this.v.elementAt (i);
+m.maxeq (p.countMaxChars ());
+}
+return m;
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+var o =  new com.stevesoft.pat.Or ();
+h.put (this, o);
+h.put (o, o);
+for (var i = 0; i < this.v.size (); i++) {
+o.v.addElement ((this.v.elementAt (i)).clone (h));
+}
+return o;
+}, "java.util.Hashtable");
+});
index bf47fca..7590a74 100644 (file)
@@ -1,54 +1,54 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Or", "$.SubMark"], "com.stevesoft.pat.OrMark", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.sm = null;\r
-this.id = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "OrMark", com.stevesoft.pat.Or);\r
-Clazz.prepareFields (c$, function () {\r
-this.sm =  new com.stevesoft.pat.SubMark ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (i) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.OrMark, []);\r
-this.sm.om = this;\r
-this.id = i;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "leftForm", \r
-function () {\r
-return "(";\r
-});\r
-Clazz.defineMethod (c$, "getNext", \r
-function () {\r
-return this.sm;\r
-});\r
-Clazz.defineMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-this.sm.next = Clazz.superCall (this, com.stevesoft.pat.OrMark, "getNext", []);\r
-if (pt.marks == null) {\r
-var n2 = 2 * pt.nMarks + 2;\r
-pt.marks =  Clazz.newIntArray (n2, 0);\r
-for (var i = 0; i < n2; i++) {\r
-pt.marks[i] = -1;\r
-}\r
-}pt.marks[this.id] = pos;\r
-var ret = Clazz.superCall (this, com.stevesoft.pat.OrMark, "matchInternal", [pos, pt]);\r
-if (ret < 0) {\r
-pt.marks[this.id] = -1;\r
-} else if (pt.marks[this.id] > pt.marks[this.id + pt.nMarks]) {\r
-var swap = pt.marks[this.id];\r
-pt.marks[this.id] = pt.marks[this.id + pt.nMarks] + 1;\r
-pt.marks[this.id + pt.nMarks] = swap + 1;\r
-}return ret;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-var om =  new com.stevesoft.pat.OrMark (this.id);\r
-h.put (om, om);\r
-h.put (this, om);\r
-for (var i = 0; i < this.v.size (); i++) {\r
-om.v.addElement ((this.v.elementAt (i)).clone (h));\r
-}\r
-return om;\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Or", "$.SubMark"], "com.stevesoft.pat.OrMark", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.sm = null;
+this.id = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "OrMark", com.stevesoft.pat.Or);
+Clazz.prepareFields (c$, function () {
+this.sm =  new com.stevesoft.pat.SubMark ();
+});
+Clazz.makeConstructor (c$, 
+function (i) {
+Clazz.superConstructor (this, com.stevesoft.pat.OrMark, []);
+this.sm.om = this;
+this.id = i;
+}, "~N");
+Clazz.overrideMethod (c$, "leftForm", 
+function () {
+return "(";
+});
+Clazz.defineMethod (c$, "getNext", 
+function () {
+return this.sm;
+});
+Clazz.defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+this.sm.next = Clazz.superCall (this, com.stevesoft.pat.OrMark, "getNext", []);
+if (pt.marks == null) {
+var n2 = 2 * pt.nMarks + 2;
+pt.marks =  Clazz.newIntArray (n2, 0);
+for (var i = 0; i < n2; i++) {
+pt.marks[i] = -1;
+}
+}pt.marks[this.id] = pos;
+var ret = Clazz.superCall (this, com.stevesoft.pat.OrMark, "matchInternal", [pos, pt]);
+if (ret < 0) {
+pt.marks[this.id] = -1;
+} else if (pt.marks[this.id] > pt.marks[this.id + pt.nMarks]) {
+var swap = pt.marks[this.id];
+pt.marks[this.id] = pt.marks[this.id + pt.nMarks] + 1;
+pt.marks[this.id + pt.nMarks] = swap + 1;
+}return ret;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+var om =  new com.stevesoft.pat.OrMark (this.id);
+h.put (om, om);
+h.put (this, om);
+for (var i = 0; i < this.v.size (); i++) {
+om.v.addElement ((this.v.elementAt (i)).clone (h));
+}
+return om;
+}, "java.util.Hashtable");
+});
index 8490ff2..02fc0e3 100644 (file)
@@ -1,50 +1,50 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.StringLike"], "com.stevesoft.pat.PartialBuffer", ["java.lang.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.off = 0;\r
-this.allowOverRun = true;\r
-this.overRun = false;\r
-this.sb = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "PartialBuffer", null, com.stevesoft.pat.StringLike);\r
-Clazz.makeConstructor (c$, \r
-function (sb) {\r
-this.sb = sb;\r
-}, "StringBuffer");\r
-Clazz.overrideMethod (c$, "charAt", \r
-function (n) {\r
-n += this.off;\r
-if (n == this.sb.length ()) {\r
-this.overRun = true;\r
-return String.fromCharCode (0);\r
-}return this.sb.charAt (n);\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "length", \r
-function () {\r
-return this.allowOverRun ? this.sb.length () + 1 : this.sb.length ();\r
-});\r
-Clazz.overrideMethod (c$, "indexOf", \r
-function (c) {\r
-for (var i = 0; i < this.sb.length (); i++) {\r
-if (this.sb.charAt (i) == c) {\r
-return i;\r
-}}\r
-return -1;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "unwrap", \r
-function () {\r
-return this.sb;\r
-});\r
-Clazz.overrideMethod (c$, "substring", \r
-function (i1, i2) {\r
-var sb =  new StringBuffer (i2 - i1);\r
-for (var i = i1; i < i2; i++) {\r
-sb.append (this.charAt (i));\r
-}\r
-return sb.toString ();\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "newStringBufferLike", \r
-function () {\r
-return null;\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.StringLike"], "com.stevesoft.pat.PartialBuffer", ["java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.off = 0;
+this.allowOverRun = true;
+this.overRun = false;
+this.sb = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "PartialBuffer", null, com.stevesoft.pat.StringLike);
+Clazz.makeConstructor (c$, 
+function (sb) {
+this.sb = sb;
+}, "StringBuffer");
+Clazz.overrideMethod (c$, "charAt", 
+function (n) {
+n += this.off;
+if (n == this.sb.length ()) {
+this.overRun = true;
+return String.fromCharCode (0);
+}return this.sb.charAt (n);
+}, "~N");
+Clazz.overrideMethod (c$, "length", 
+function () {
+return this.allowOverRun ? this.sb.length () + 1 : this.sb.length ();
+});
+Clazz.overrideMethod (c$, "indexOf", 
+function (c) {
+for (var i = 0; i < this.sb.length (); i++) {
+if (this.sb.charAt (i) == c) {
+return i;
+}}
+return -1;
+}, "~S");
+Clazz.overrideMethod (c$, "unwrap", 
+function () {
+return this.sb;
+});
+Clazz.overrideMethod (c$, "substring", 
+function (i1, i2) {
+var sb =  new StringBuffer (i2 - i1);
+for (var i = i1; i < i2; i++) {
+sb.append (this.charAt (i));
+}
+return sb.toString ();
+}, "~N,~N");
+Clazz.overrideMethod (c$, "newStringBufferLike", 
+function () {
+return null;
+});
+});
index a4dc10b..a3dddd4 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (null, "com.stevesoft.pat.Pattern", ["com.stevesoft.pat.MessageManager", "$.patInf", "$.patInt", "java.lang.Error", "$.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.next = null;\r
-this.parent = null;\r
-this.mfrom = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Pattern");\r
-Clazz.defineMethod (c$, "getNext", \r
-function () {\r
-return this.next != null ? this.next : (this.parent == null ? null : this.parent.getNext ());\r
-});\r
-Clazz.defineMethod (c$, "setParent", \r
-function (p) {\r
-if (this.next != null) {\r
-this.next.setParent (p);\r
-} else {\r
-this.parent = p;\r
-}}, "com.stevesoft.pat.Pattern");\r
-Clazz.defineMethod (c$, "nextMatch", \r
-function (i, pt) {\r
-var p = this.getNext ();\r
-return p == null ? i : p.matchInternal (i, pt);\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.defineMethod (c$, "nextString", \r
-function () {\r
-if (this.next == null) {\r
-return "";\r
-}return this.next.toString ();\r
-});\r
-c$.inString = Clazz.defineMethod (c$, "inString", \r
-function (c, s) {\r
-var i;\r
-for (i = 0; i < s.length; i++) {\r
-if (s.charAt (i) == c) {\r
-return true;\r
-}}\r
-return false;\r
-}, "~S,~S");\r
-c$.protect = Clazz.defineMethod (c$, "protect", \r
-function (s, PROTECT_THESE, esc) {\r
-var i;\r
-var sb =  new StringBuffer ();\r
-var p = PROTECT_THESE + esc;\r
-for (i = 0; i < s.length; i++) {\r
-var c = s.charAt (i);\r
-if (com.stevesoft.pat.Pattern.inString (c, p)) {\r
-sb.append (esc);\r
-}sb.append (c);\r
-}\r
-return sb.toString ();\r
-}, "~S,~S,~S");\r
-Clazz.defineMethod (c$, "match", \r
-function (s, pt) {\r
-return this.matchAt (s, 0, pt);\r
-}, "com.stevesoft.pat.StringLike,com.stevesoft.pat.Pthings");\r
-Clazz.defineMethod (c$, "matchAt", \r
-function (s, i, pt) {\r
-pt.src = s;\r
-var r = this.matchInternal (i, pt);\r
-if (r < 0) {\r
-return -1;\r
-}this.mfrom = r < i ? r + 1 : i;\r
-return r < i ? i - r - 1 : r - i;\r
-}, "com.stevesoft.pat.StringLike,~N,com.stevesoft.pat.Pthings");\r
-Clazz.defineMethod (c$, "Masked", \r
-function (i, pt) {\r
-return pt.cbits == null ? false : pt.cbits.get (i);\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.defineMethod (c$, "add", \r
-function (p) {\r
-if (this.next == null) {\r
-if (p == null) {\r
-return this;\r
-}this.next = p;\r
-p.parent = this.parent;\r
-this.parent = null;\r
-} else {\r
-this.next.add (p);\r
-}return this;\r
-}, "com.stevesoft.pat.Pattern");\r
-Clazz.defineMethod (c$, "minChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (0);\r
-});\r
-Clazz.defineMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInf ();\r
-});\r
-Clazz.defineMethod (c$, "countMinChars", \r
-function () {\r
-var p = this;\r
-var sum =  new com.stevesoft.pat.patInt (0);\r
-while (p != null) {\r
-sum.pluseq (p.minChars ());\r
-p = p.next;\r
-}\r
-return sum;\r
-});\r
-Clazz.defineMethod (c$, "countMaxChars", \r
-function () {\r
-var p = this;\r
-var sum =  new com.stevesoft.pat.patInt (0);\r
-while (p != null) {\r
-sum.pluseq (p.maxChars ());\r
-p = p.next;\r
-}\r
-return sum;\r
-});\r
-Clazz.defineMethod (c$, "testMatch", \r
-function (p, pos, pt) {\r
-var tab = null;\r
-if (pt.marks != null) {\r
-try {\r
-tab =  Clazz.newIntArray (pt.marks.length, 0);\r
-for (var i = 0; i < tab.length; i++) {\r
-tab[i] = pt.marks[i];\r
-}\r
-} catch (t) {\r
-}\r
-}var ret = p.matchInternal (pos, pt);\r
-if (ret < 0) {\r
-pt.marks = tab;\r
-}return ret;\r
-}, "com.stevesoft.pat.Pattern,~N,com.stevesoft.pat.Pthings");\r
-Clazz.defineMethod (c$, "clone1", \r
-function (h) {\r
-throw  new Error (com.stevesoft.pat.MessageManager.formatMessage ("error.no_such_method_as_clone1_for",  Clazz.newArray (-1, [this.getClass ().getName ()])));\r
-}, "java.util.Hashtable");\r
-Clazz.defineMethod (c$, "clone", \r
-function (h) {\r
-var p = h.get (this);\r
-if (p != null) {\r
-return p;\r
-}p = this.clone1 (h);\r
-if (p == null) {\r
-throw  new Error (com.stevesoft.pat.MessageManager.getString ("error.null_from_clone1"));\r
-}h.put (this, p);\r
-h.put (p, p);\r
-if (this.next != null) {\r
-p.next = this.next.clone (h);\r
-}if (this.parent != null) {\r
-p.parent = this.parent.clone (h);\r
-}return p;\r
-}, "java.util.Hashtable");\r
-Clazz.overrideMethod (c$, "equals", \r
-function (o) {\r
-return o === this;\r
-}, "~O");\r
-Clazz.defineStatics (c$,\r
-"ESC", '\\',\r
-"PROTECT_THESE", "[]{}(),$,-\"^.");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, "com.stevesoft.pat.Pattern", ["com.stevesoft.pat.MessageManager", "$.patInf", "$.patInt", "java.lang.Error", "$.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.next = null;
+this.parent = null;
+this.mfrom = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Pattern");
+Clazz.defineMethod (c$, "getNext", 
+function () {
+return this.next != null ? this.next : (this.parent == null ? null : this.parent.getNext ());
+});
+Clazz.defineMethod (c$, "setParent", 
+function (p) {
+if (this.next != null) {
+this.next.setParent (p);
+} else {
+this.parent = p;
+}}, "com.stevesoft.pat.Pattern");
+Clazz.defineMethod (c$, "nextMatch", 
+function (i, pt) {
+var p = this.getNext ();
+return p == null ? i : p.matchInternal (i, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.defineMethod (c$, "nextString", 
+function () {
+if (this.next == null) {
+return "";
+}return this.next.toString ();
+});
+c$.inString = Clazz.defineMethod (c$, "inString", 
+function (c, s) {
+var i;
+for (i = 0; i < s.length; i++) {
+if (s.charAt (i) == c) {
+return true;
+}}
+return false;
+}, "~S,~S");
+c$.protect = Clazz.defineMethod (c$, "protect", 
+function (s, PROTECT_THESE, esc) {
+var i;
+var sb =  new StringBuffer ();
+var p = PROTECT_THESE + esc;
+for (i = 0; i < s.length; i++) {
+var c = s.charAt (i);
+if (com.stevesoft.pat.Pattern.inString (c, p)) {
+sb.append (esc);
+}sb.append (c);
+}
+return sb.toString ();
+}, "~S,~S,~S");
+Clazz.defineMethod (c$, "match", 
+function (s, pt) {
+return this.matchAt (s, 0, pt);
+}, "com.stevesoft.pat.StringLike,com.stevesoft.pat.Pthings");
+Clazz.defineMethod (c$, "matchAt", 
+function (s, i, pt) {
+pt.src = s;
+var r = this.matchInternal (i, pt);
+if (r < 0) {
+return -1;
+}this.mfrom = r < i ? r + 1 : i;
+return r < i ? i - r - 1 : r - i;
+}, "com.stevesoft.pat.StringLike,~N,com.stevesoft.pat.Pthings");
+Clazz.defineMethod (c$, "Masked", 
+function (i, pt) {
+return pt.cbits == null ? false : pt.cbits.get (i);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.defineMethod (c$, "add", 
+function (p) {
+if (this.next == null) {
+if (p == null) {
+return this;
+}this.next = p;
+p.parent = this.parent;
+this.parent = null;
+} else {
+this.next.add (p);
+}return this;
+}, "com.stevesoft.pat.Pattern");
+Clazz.defineMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (0);
+});
+Clazz.defineMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInf ();
+});
+Clazz.defineMethod (c$, "countMinChars", 
+function () {
+var p = this;
+var sum =  new com.stevesoft.pat.patInt (0);
+while (p != null) {
+sum.pluseq (p.minChars ());
+p = p.next;
+}
+return sum;
+});
+Clazz.defineMethod (c$, "countMaxChars", 
+function () {
+var p = this;
+var sum =  new com.stevesoft.pat.patInt (0);
+while (p != null) {
+sum.pluseq (p.maxChars ());
+p = p.next;
+}
+return sum;
+});
+Clazz.defineMethod (c$, "testMatch", 
+function (p, pos, pt) {
+var tab = null;
+if (pt.marks != null) {
+try {
+tab =  Clazz.newIntArray (pt.marks.length, 0);
+for (var i = 0; i < tab.length; i++) {
+tab[i] = pt.marks[i];
+}
+} catch (t) {
+}
+}var ret = p.matchInternal (pos, pt);
+if (ret < 0) {
+pt.marks = tab;
+}return ret;
+}, "com.stevesoft.pat.Pattern,~N,com.stevesoft.pat.Pthings");
+Clazz.defineMethod (c$, "clone1", 
+function (h) {
+throw  new Error (com.stevesoft.pat.MessageManager.formatMessage ("error.no_such_method_as_clone1_for",  Clazz.newArray (-1, [this.getClass ().getName ()])));
+}, "java.util.Hashtable");
+Clazz.defineMethod (c$, "clone", 
+function (h) {
+var p = h.get (this);
+if (p != null) {
+return p;
+}p = this.clone1 (h);
+if (p == null) {
+throw  new Error (com.stevesoft.pat.MessageManager.getString ("error.null_from_clone1"));
+}h.put (this, p);
+h.put (p, p);
+if (this.next != null) {
+p.next = this.next.clone (h);
+}if (this.parent != null) {
+p.parent = this.parent.clone (h);
+}return p;
+}, "java.util.Hashtable");
+Clazz.overrideMethod (c$, "equals", 
+function (o) {
+return o === this;
+}, "~O");
+Clazz.defineStatics (c$,
+"ESC", '\\',
+"PROTECT_THESE", "[]{}(),$,-\"^.");
+});
index 2199b2b..835661a 100644 (file)
@@ -1,7 +1,7 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.PatternSub", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.sub = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "PatternSub", com.stevesoft.pat.Pattern);\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.PatternSub", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.sub = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "PatternSub", com.stevesoft.pat.Pattern);
+});
index d983d19..92af006 100644 (file)
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.PopRule", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "PopRule", com.stevesoft.pat.SpecialRule);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.PopRule, []);\r
-});\r
-Clazz.overrideMethod (c$, "toString1", \r
-function () {\r
-return "${POP}";\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.PopRule", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "PopRule", com.stevesoft.pat.SpecialRule);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.PopRule, []);
+});
+Clazz.overrideMethod (c$, "toString1", 
+function () {
+return "${POP}";
+});
+});
index 7f99d0e..5dbb6db 100644 (file)
@@ -1,40 +1,40 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (null, "com.stevesoft.pat.Prop", ["com.stevesoft.pat.Bits"], function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "Prop");\r
-c$.isDecimalDigit = Clazz.defineMethod (c$, "isDecimalDigit", \r
-function (c) {\r
-if (com.stevesoft.pat.Bits.decimal_digit == null) {\r
-com.stevesoft.pat.Bits.decimal_digit_f ();\r
-}return com.stevesoft.pat.Bits.decimal_digit.get (c.charCodeAt (0));\r
-}, "~S");\r
-c$.isAlphabetic = Clazz.defineMethod (c$, "isAlphabetic", \r
-function (c) {\r
-if (com.stevesoft.pat.Bits.letter == null) {\r
-com.stevesoft.pat.Bits.letter_f ();\r
-}return com.stevesoft.pat.Bits.letter.get (c.charCodeAt (0));\r
-}, "~S");\r
-c$.isMath = Clazz.defineMethod (c$, "isMath", \r
-function (c) {\r
-if (com.stevesoft.pat.Bits.math == null) {\r
-com.stevesoft.pat.Bits.math_f ();\r
-}return com.stevesoft.pat.Bits.math.get (c.charCodeAt (0));\r
-}, "~S");\r
-c$.isCurrency = Clazz.defineMethod (c$, "isCurrency", \r
-function (c) {\r
-if (com.stevesoft.pat.Bits.currency == null) {\r
-com.stevesoft.pat.Bits.currency_f ();\r
-}return com.stevesoft.pat.Bits.currency.get (c.charCodeAt (0));\r
-}, "~S");\r
-c$.isWhite = Clazz.defineMethod (c$, "isWhite", \r
-function (c) {\r
-if (com.stevesoft.pat.Bits.white == null) {\r
-com.stevesoft.pat.Bits.white_f ();\r
-}return com.stevesoft.pat.Bits.white.get (c.charCodeAt (0));\r
-}, "~S");\r
-c$.isPunct = Clazz.defineMethod (c$, "isPunct", \r
-function (c) {\r
-if (com.stevesoft.pat.Bits.punct == null) {\r
-com.stevesoft.pat.Bits.punct_f ();\r
-}return com.stevesoft.pat.Bits.punct.get (c.charCodeAt (0));\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, "com.stevesoft.pat.Prop", ["com.stevesoft.pat.Bits"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "Prop");
+c$.isDecimalDigit = Clazz.defineMethod (c$, "isDecimalDigit", 
+function (c) {
+if (com.stevesoft.pat.Bits.decimal_digit == null) {
+com.stevesoft.pat.Bits.decimal_digit_f ();
+}return com.stevesoft.pat.Bits.decimal_digit.get (c.charCodeAt (0));
+}, "~S");
+c$.isAlphabetic = Clazz.defineMethod (c$, "isAlphabetic", 
+function (c) {
+if (com.stevesoft.pat.Bits.letter == null) {
+com.stevesoft.pat.Bits.letter_f ();
+}return com.stevesoft.pat.Bits.letter.get (c.charCodeAt (0));
+}, "~S");
+c$.isMath = Clazz.defineMethod (c$, "isMath", 
+function (c) {
+if (com.stevesoft.pat.Bits.math == null) {
+com.stevesoft.pat.Bits.math_f ();
+}return com.stevesoft.pat.Bits.math.get (c.charCodeAt (0));
+}, "~S");
+c$.isCurrency = Clazz.defineMethod (c$, "isCurrency", 
+function (c) {
+if (com.stevesoft.pat.Bits.currency == null) {
+com.stevesoft.pat.Bits.currency_f ();
+}return com.stevesoft.pat.Bits.currency.get (c.charCodeAt (0));
+}, "~S");
+c$.isWhite = Clazz.defineMethod (c$, "isWhite", 
+function (c) {
+if (com.stevesoft.pat.Bits.white == null) {
+com.stevesoft.pat.Bits.white_f ();
+}return com.stevesoft.pat.Bits.white.get (c.charCodeAt (0));
+}, "~S");
+c$.isPunct = Clazz.defineMethod (c$, "isPunct", 
+function (c) {
+if (com.stevesoft.pat.Bits.punct == null) {
+com.stevesoft.pat.Bits.punct_f ();
+}return com.stevesoft.pat.Bits.punct.get (c.charCodeAt (0));
+}, "~S");
+});
index 179ec6b..8969d4f 100644 (file)
@@ -1,13 +1,13 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.src = null;\r
-this.ignoreCase = false;\r
-this.mFlag = false;\r
-this.cbits = null;\r
-this.marks = null;\r
-this.nMarks = 0;\r
-this.dotDoesntMatchCR = false;\r
-this.no_check = false;\r
-this.lastPos = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Pthings");\r
+Clazz.declarePackage ("com.stevesoft.pat");
+c$ = Clazz.decorateAsClass (function () {
+this.src = null;
+this.ignoreCase = false;
+this.mFlag = false;
+this.cbits = null;
+this.marks = null;
+this.nMarks = 0;
+this.dotDoesntMatchCR = false;
+this.no_check = false;
+this.lastPos = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Pthings");
index bac59ef..fd7d64e 100644 (file)
@@ -1,35 +1,35 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.PushRule", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.NewRule = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "PushRule", com.stevesoft.pat.SpecialRule);\r
-Clazz.makeConstructor (c$, \r
-function (p) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.PushRule, []);\r
-this.NewRule = p.NewRule;\r
-}, "com.stevesoft.pat.PushRule");\r
-Clazz.makeConstructor (c$, \r
-function (nm, rr) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.PushRule, []);\r
-this.name = nm;\r
-this.NewRule = rr;\r
-}, "~S,com.stevesoft.pat.Regex");\r
-Clazz.makeConstructor (c$, \r
-function (nm, tr) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.PushRule, []);\r
-this.name = nm;\r
-this.NewRule = tr.rp;\r
-}, "~S,com.stevesoft.pat.Transformer");\r
-Clazz.overrideMethod (c$, "clone1", \r
-function () {\r
-return  new com.stevesoft.pat.PushRule (this);\r
-});\r
-Clazz.defineMethod (c$, "String1", \r
-function () {\r
-return "${+" + this.name + "}";\r
-});\r
-Clazz.overrideMethod (c$, "apply", \r
-function (sbl, rr) {\r
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.PushRule", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.NewRule = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "PushRule", com.stevesoft.pat.SpecialRule);
+Clazz.makeConstructor (c$, 
+function (p) {
+Clazz.superConstructor (this, com.stevesoft.pat.PushRule, []);
+this.NewRule = p.NewRule;
+}, "com.stevesoft.pat.PushRule");
+Clazz.makeConstructor (c$, 
+function (nm, rr) {
+Clazz.superConstructor (this, com.stevesoft.pat.PushRule, []);
+this.name = nm;
+this.NewRule = rr;
+}, "~S,com.stevesoft.pat.Regex");
+Clazz.makeConstructor (c$, 
+function (nm, tr) {
+Clazz.superConstructor (this, com.stevesoft.pat.PushRule, []);
+this.name = nm;
+this.NewRule = tr.rp;
+}, "~S,com.stevesoft.pat.Transformer");
+Clazz.overrideMethod (c$, "clone1", 
+function () {
+return  new com.stevesoft.pat.PushRule (this);
+});
+Clazz.defineMethod (c$, "String1", 
+function () {
+return "${+" + this.name + "}";
+});
+Clazz.overrideMethod (c$, "apply", 
+function (sbl, rr) {
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+});
index 529f8a2..27970cf 100644 (file)
@@ -1,32 +1,32 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (null, "com.stevesoft.pat.RBuffer", ["java.lang.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.done = false;\r
-this.sb = null;\r
-this.pos = 0;\r
-this.epos = 0;\r
-this.next = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "RBuffer");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (sb) {\r
-this.sb = sb;\r
-}, "StringBuffer");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "sb=" + this.sb.toString ().$replace ('\n', ' ') + " pos=" + this.pos + " epos=" + this.epos + " sb.length()=" + this.sb.length () + "\n" + this.sp (this.pos + 3) + "^" + this.sp (this.epos - this.pos - 1) + "^";\r
-});\r
-Clazz.defineMethod (c$, "sp", \r
-function (n) {\r
-if (n <= 0) {\r
-return "";\r
-}var sb =  new StringBuffer (n);\r
-for (var i = 0; i < n; i++) {\r
-sb.append (' ');\r
-}\r
-return sb.toString ();\r
-}, "~N");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, "com.stevesoft.pat.RBuffer", ["java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.done = false;
+this.sb = null;
+this.pos = 0;
+this.epos = 0;
+this.next = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "RBuffer");
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.makeConstructor (c$, 
+function (sb) {
+this.sb = sb;
+}, "StringBuffer");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "sb=" + this.sb.toString ().$replace ('\n', ' ') + " pos=" + this.pos + " epos=" + this.epos + " sb.length()=" + this.sb.length () + "\n" + this.sp (this.pos + 3) + "^" + this.sp (this.epos - this.pos - 1) + "^";
+});
+Clazz.defineMethod (c$, "sp", 
+function (n) {
+if (n <= 0) {
+return "";
+}var sb =  new StringBuffer (n);
+for (var i = 0; i < n; i++) {
+sb.append (' ');
+}
+return sb.toString ();
+}, "~N");
+});
index cb007c4..8294a31 100644 (file)
@@ -1,65 +1,65 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern", "$.RegSyntax"], ["com.stevesoft.pat.BadRangeArgs", "$.Range"], ["com.stevesoft.pat.RegSyntaxError", "$.oneChar", "$.patInt"], function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "BadRangeArgs", com.stevesoft.pat.RegSyntax);\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.lo = '\0';\r
-this.hi = '\0';\r
-this.altlo = '\0';\r
-this.althi = '\0';\r
-this.printBrackets = false;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Range", com.stevesoft.pat.Pattern);\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var s = com.stevesoft.pat.Pattern.protect ("" + this.lo, "[]{}(),$,-\"^.", '\\') + "-" + com.stevesoft.pat.Pattern.protect ("" + this.hi, "[]{}(),$,-\"^.", '\\');\r
-if (!this.printBrackets) {\r
-return s;\r
-}return "[" + s + "]";\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (loi, hii) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.Range, []);\r
-this.lo = loi;\r
-this.hi = hii;\r
-var o = null;\r
-if (this.lo >= this.hi) {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("Badly formed []'s : " + this.lo + " >= " + this.hi);\r
-}o =  new com.stevesoft.pat.oneChar (this.lo);\r
-this.altlo = o.altc;\r
-o =  new com.stevesoft.pat.oneChar (this.hi);\r
-this.althi = o.altc;\r
-}, "~S,~S");\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-if (pos >= pt.src.length ()) {\r
-return -1;\r
-}if (this.Masked (pos, pt)) {\r
-return -1;\r
-}var c = pt.src.charAt (pos);\r
-if (this.lo <= c && c <= this.hi || (pt.ignoreCase && (this.altlo <= c && c <= this.althi))) {\r
-return this.nextMatch (pos + 1, pt);\r
-}return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (1);\r
-});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (1);\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-try {\r
-var r =  new com.stevesoft.pat.Range (this.lo, this.hi);\r
-r.printBrackets = this.printBrackets;\r
-return r;\r
-} catch (rs) {\r
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {\r
-return null;\r
-} else {\r
-throw rs;\r
-}\r
-}\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern", "$.RegSyntax"], ["com.stevesoft.pat.BadRangeArgs", "$.Range"], ["com.stevesoft.pat.RegSyntaxError", "$.oneChar", "$.patInt"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "BadRangeArgs", com.stevesoft.pat.RegSyntax);
+c$ = Clazz.decorateAsClass (function () {
+this.lo = '\0';
+this.hi = '\0';
+this.altlo = '\0';
+this.althi = '\0';
+this.printBrackets = false;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Range", com.stevesoft.pat.Pattern);
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var s = com.stevesoft.pat.Pattern.protect ("" + this.lo, "[]{}(),$,-\"^.", '\\') + "-" + com.stevesoft.pat.Pattern.protect ("" + this.hi, "[]{}(),$,-\"^.", '\\');
+if (!this.printBrackets) {
+return s;
+}return "[" + s + "]";
+});
+Clazz.makeConstructor (c$, 
+function (loi, hii) {
+Clazz.superConstructor (this, com.stevesoft.pat.Range, []);
+this.lo = loi;
+this.hi = hii;
+var o = null;
+if (this.lo >= this.hi) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Badly formed []'s : " + this.lo + " >= " + this.hi);
+}o =  new com.stevesoft.pat.oneChar (this.lo);
+this.altlo = o.altc;
+o =  new com.stevesoft.pat.oneChar (this.hi);
+this.althi = o.altc;
+}, "~S,~S");
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (pos >= pt.src.length ()) {
+return -1;
+}if (this.Masked (pos, pt)) {
+return -1;
+}var c = pt.src.charAt (pos);
+if (this.lo <= c && c <= this.hi || (pt.ignoreCase && (this.altlo <= c && c <= this.althi))) {
+return this.nextMatch (pos + 1, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+try {
+var r =  new com.stevesoft.pat.Range (this.lo, this.hi);
+r.printBrackets = this.printBrackets;
+return r;
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Hashtable");
+});
index b62aeb0..96c50d7 100644 (file)
Binary files a/bin/com/stevesoft/pat/RegOpt.class and b/bin/com/stevesoft/pat/RegOpt.class differ
index ed70432..54e0ed8 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern", "$.oneChar", "java.util.Hashtable", "$.Vector"], ["com.stevesoft.pat.Branch", "$.RegOpt", "$.FastChar"], ["com.stevesoft.pat.Any", "$.Bracket", "$.Custom", "$.FastBracket", "$.FastMulti", "$.Multi", "$.NullPattern", "$.Or", "$.Range", "$.UniValidator", "$.patInt", "java.lang.Character", "$.StringBuffer"], function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "FastChar", com.stevesoft.pat.oneChar);\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (p, pt) {\r
-return (p < pt.src.length () && pt.src.charAt (p) == this.c) ? this.nextMatch (p + 1, pt) : -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-return  new com.stevesoft.pat.FastChar (this.c);\r
-}, "java.util.Hashtable");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.h = null;\r
-this.keys = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Branch", com.stevesoft.pat.Pattern);\r
-Clazz.prepareFields (c$, function () {\r
-this.h =  new java.util.Hashtable ();\r
-this.keys =  new java.util.Vector ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.Branch, []);\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (x) {\r
-var b =  new com.stevesoft.pat.Branch ();\r
-b.keys = this.keys.clone ();\r
-x.put (this, b);\r
-x.put (b, b);\r
-for (var i = 0; i < this.keys.size (); i++) {\r
-var p = this.h.get (this.keys.elementAt (i));\r
-b.h.put (this.keys.elementAt (i), p.clone (x));\r
-}\r
-return b;\r
-}, "java.util.Hashtable");\r
-Clazz.defineMethod (c$, "reduce", \r
-function (ignoreCase, dontMinQ) {\r
-if (this.h.size () == 1) {\r
-var e = this.h.keys ();\r
-var c = e.nextElement ();\r
-var oc;\r
-if (ignoreCase || dontMinQ) {\r
-oc =  new com.stevesoft.pat.oneChar (c.charValue ());\r
-} else {\r
-oc =  new com.stevesoft.pat.FastChar (c.charValue ());\r
-}oc.next = this.h.get (c);\r
-oc.add (this.next);\r
-return oc;\r
-} else if (this.h.size () == 0) {\r
-return null;\r
-}return this;\r
-}, "~B,~B");\r
-Clazz.defineMethod (c$, "maxChars", \r
-function () {\r
-var e = this.h.keys ();\r
-var count =  new com.stevesoft.pat.patInt (0);\r
-while (e.hasMoreElements ()) {\r
-var key = e.nextElement ();\r
-var pa = this.h.get (key);\r
-var pi = pa.maxChars ();\r
-pi.inc ();\r
-count.maxeq (pi);\r
-}\r
-return count;\r
-});\r
-Clazz.defineMethod (c$, "minChars", \r
-function () {\r
-var e = this.h.keys ();\r
-var count =  new com.stevesoft.pat.patInt (0);\r
-while (e.hasMoreElements ()) {\r
-var key = e.nextElement ();\r
-var pa = this.h.get (key);\r
-var pi = pa.minChars ();\r
-pi.inc ();\r
-count.mineq (pi);\r
-}\r
-return count;\r
-});\r
-Clazz.defineMethod (c$, "addc", \r
-function (o, ignoreCase, dontMinQ) {\r
-var n = o.next;\r
-if (n == null) {\r
-n =  new com.stevesoft.pat.NullPattern ();\r
-} else {\r
-n = com.stevesoft.pat.RegOpt.opt (n, ignoreCase, dontMinQ);\r
-}n.setParent (this);\r
-this.set ( new Character (o.c), n, ignoreCase, dontMinQ);\r
-if (ignoreCase) {\r
-if (o.c != o.altc) {\r
-this.set ( new Character (o.altc), n, ignoreCase, dontMinQ);\r
-}if (o.c != o.altc2 && o.altc != o.altc2) {\r
-this.set ( new Character (o.altc2), n, ignoreCase, dontMinQ);\r
-}}}, "com.stevesoft.pat.oneChar,~B,~B");\r
-Clazz.defineMethod (c$, "set", \r
-function (c, n, igc, dontMinQ) {\r
-var p = this.h.get (c);\r
-this.next = null;\r
-if (p == null) {\r
-if (Clazz.instanceOf (n, com.stevesoft.pat.Or)) {\r
-var np =  new com.stevesoft.pat.NullPattern ();\r
-np.add (n);\r
-this.h.put (c, np);\r
-} else {\r
-this.h.put (c, n);\r
-}this.keys.addElement (c);\r
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.Or)) {\r
-(p).addOr (n);\r
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && Clazz.instanceOf (n, com.stevesoft.pat.oneChar) && (p).c != (n).c) {\r
-var b =  new com.stevesoft.pat.Branch ();\r
-b.addc (p, igc, dontMinQ);\r
-b.addc (n, igc, dontMinQ);\r
-this.h.put (c, b);\r
-b.setParent (this);\r
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.Branch) && Clazz.instanceOf (n, com.stevesoft.pat.oneChar)) {\r
-(p).addc (n, igc, dontMinQ);\r
-n.setParent (p);\r
-} else {\r
-var o =  new com.stevesoft.pat.Or ();\r
-o.setParent (this);\r
-if (Clazz.instanceOf (p, com.stevesoft.pat.NullPattern) && p.parent == null && p.next != null) {\r
-o.addOr (p.next);\r
-} else {\r
-o.addOr (p);\r
-}o.addOr (n);\r
-var optpat = com.stevesoft.pat.RegOpt.opt (o, igc, dontMinQ);\r
-this.h.put (c, optpat);\r
-optpat.setParent (this);\r
-}}, "Character,com.stevesoft.pat.Pattern,~B,~B");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var sb =  new StringBuffer ();\r
-sb.append ("(?:(?#branch)");\r
-for (var i = 0; i < this.keys.size (); i++) {\r
-var c = this.keys.elementAt (i);\r
-sb.append (c);\r
-sb.append (this.h.get (c));\r
-if (i + 1 < this.keys.size ()) {\r
-sb.append ("|");\r
-}}\r
-sb.append (")");\r
-sb.append (this.nextString ());\r
-return sb.toString ();\r
-});\r
-Clazz.defineMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-if (pos >= pt.src.length ()) {\r
-return -1;\r
-}var n = this.h.get ( new Character (pt.src.charAt (pos)));\r
-if (n == null) {\r
-return -1;\r
-}if (pt.cbits != null && pt.cbits.get (pos)) {\r
-return -1;\r
-}return n.matchInternal (pos + 1, pt);\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "RegOpt");\r
-c$.opt = Clazz.defineMethod (c$, "opt", \r
-function (p, ignoreCase, dontMinQ) {\r
-if (p == null) {\r
-return p;\r
-}if (Clazz.instanceOf (p, com.stevesoft.pat.Bracket)) {\r
-var b = p;\r
-p = com.stevesoft.pat.FastBracket.process (b, ignoreCase);\r
-p.next = b.next;\r
-p.parent = b.parent;\r
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && !ignoreCase && !dontMinQ) {\r
-var o = p;\r
-p =  new com.stevesoft.pat.FastChar (o.c);\r
-p.next = o.next;\r
-p.parent = o.parent;\r
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.Or) && (p).leftForm ().equals ("(?:") && (p).v.size () == 1) {\r
-var o = p;\r
-p = o.v.elementAt (0);\r
-p.setParent (null);\r
-p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);\r
-p.add (o.next);\r
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.Or)) {\r
-var o = p;\r
-o.pv = null;\r
-var v = o.v;\r
-o.v =  new java.util.Vector ();\r
-var b =  new com.stevesoft.pat.Branch ();\r
-b.parent = o.parent;\r
-for (var i = 0; i < v.size (); i++) {\r
-var pp = v.elementAt (i);\r
-if (Clazz.instanceOf (pp, com.stevesoft.pat.oneChar) && (b.h.size () >= 1 || (i + 1 < v.size () && Clazz.instanceOf (v.elementAt (i + 1), com.stevesoft.pat.oneChar)))) {\r
-b.addc (pp, ignoreCase, dontMinQ);\r
-} else {\r
-if (b.keys.size () > 0) {\r
-var p2 = b.reduce (ignoreCase, dontMinQ);\r
-if (p2 != null) {\r
-o.addOr (p2);\r
-b =  new com.stevesoft.pat.Branch ();\r
-b.parent = o.parent;\r
-}}o.addOr (com.stevesoft.pat.RegOpt.opt (pp, ignoreCase, dontMinQ));\r
-}}\r
-if (b.keys.size () > 0) {\r
-var p2 = b.reduce (ignoreCase, dontMinQ);\r
-if (p2 != null) {\r
-o.addOr (p2);\r
-}}if (o.v.size () == 1 && o.leftForm ().equals ("(?:")) {\r
-p = o.v.elementAt (0);\r
-p.setParent (null);\r
-p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);\r
-p.add (o.next);\r
-}} else if (Clazz.instanceOf (p, com.stevesoft.pat.FastMulti)) {\r
-var ps = p;\r
-ps.sub = com.stevesoft.pat.RegOpt.opt (ps.sub, ignoreCase, dontMinQ);\r
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.Multi) && com.stevesoft.pat.RegOpt.safe4fm ((p).sub)) {\r
-var m = p;\r
-var fm = null;\r
-try {\r
-fm =  new com.stevesoft.pat.FastMulti (m.a, m.b, com.stevesoft.pat.RegOpt.opt (m.sub, ignoreCase, dontMinQ));\r
-} catch (rs) {\r
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {\r
-} else {\r
-throw rs;\r
-}\r
-}\r
-fm.parent = m.parent;\r
-fm.matchFewest = m.matchFewest;\r
-fm.next = m.next;\r
-p = fm;\r
-}if (p.next != null) {\r
-p.next = com.stevesoft.pat.RegOpt.opt (p.next, ignoreCase, dontMinQ);\r
-}return p;\r
-}, "com.stevesoft.pat.Pattern,~B,~B");\r
-c$.safe4fm = Clazz.defineMethod (c$, "safe4fm", \r
-function (x) {\r
-while (x != null) {\r
-if (Clazz.instanceOf (x, com.stevesoft.pat.Bracket)) {\r
-;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Range)) {\r
-;} else if (Clazz.instanceOf (x, com.stevesoft.pat.oneChar)) {\r
-;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Any)) {\r
-;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Custom) && Clazz.instanceOf ((x).v, com.stevesoft.pat.UniValidator)) {\r
-;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Or)) {\r
-var o = x;\r
-if (!o.leftForm ().equals ("(?:")) {\r
-return false;\r
-}var lo = o.countMinChars ();\r
-var hi = o.countMaxChars ();\r
-if (!lo.equals (hi)) {\r
-return false;\r
-}for (var i = 0; i < o.v.size (); i++) {\r
-if (!com.stevesoft.pat.RegOpt.safe4fm (o.v.elementAt (i))) {\r
-return false;\r
-}}\r
-} else {\r
-return false;\r
-}x = x.next;\r
-}\r
-return true;\r
-}, "com.stevesoft.pat.Pattern");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern", "$.oneChar", "java.util.Hashtable", "$.Vector"], ["com.stevesoft.pat.Branch", "$.RegOpt", "$.FastChar"], ["com.stevesoft.pat.Any", "$.Bracket", "$.Custom", "$.FastBracket", "$.FastMulti", "$.Multi", "$.NullPattern", "$.Or", "$.Range", "$.UniValidator", "$.patInt", "java.lang.Character", "$.StringBuffer"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "FastChar", com.stevesoft.pat.oneChar);
+Clazz.overrideMethod (c$, "matchInternal", 
+function (p, pt) {
+return (p < pt.src.length () && pt.src.charAt (p) == this.c) ? this.nextMatch (p + 1, pt) : -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.FastChar (this.c);
+}, "java.util.Hashtable");
+c$ = Clazz.decorateAsClass (function () {
+this.h = null;
+this.keys = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Branch", com.stevesoft.pat.Pattern);
+Clazz.prepareFields (c$, function () {
+this.h =  new java.util.Hashtable ();
+this.keys =  new java.util.Vector ();
+});
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.Branch, []);
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (x) {
+var b =  new com.stevesoft.pat.Branch ();
+b.keys = this.keys.clone ();
+x.put (this, b);
+x.put (b, b);
+for (var i = 0; i < this.keys.size (); i++) {
+var p = this.h.get (this.keys.elementAt (i));
+b.h.put (this.keys.elementAt (i), p.clone (x));
+}
+return b;
+}, "java.util.Hashtable");
+Clazz.defineMethod (c$, "reduce", 
+function (ignoreCase, dontMinQ) {
+if (this.h.size () == 1) {
+var e = this.h.keys ();
+var c = e.nextElement ();
+var oc;
+if (ignoreCase || dontMinQ) {
+oc =  new com.stevesoft.pat.oneChar (c.charValue ());
+} else {
+oc =  new com.stevesoft.pat.FastChar (c.charValue ());
+}oc.next = this.h.get (c);
+oc.add (this.next);
+return oc;
+} else if (this.h.size () == 0) {
+return null;
+}return this;
+}, "~B,~B");
+Clazz.defineMethod (c$, "maxChars", 
+function () {
+var e = this.h.keys ();
+var count =  new com.stevesoft.pat.patInt (0);
+while (e.hasMoreElements ()) {
+var key = e.nextElement ();
+var pa = this.h.get (key);
+var pi = pa.maxChars ();
+pi.inc ();
+count.maxeq (pi);
+}
+return count;
+});
+Clazz.defineMethod (c$, "minChars", 
+function () {
+var e = this.h.keys ();
+var count =  new com.stevesoft.pat.patInt (0);
+while (e.hasMoreElements ()) {
+var key = e.nextElement ();
+var pa = this.h.get (key);
+var pi = pa.minChars ();
+pi.inc ();
+count.mineq (pi);
+}
+return count;
+});
+Clazz.defineMethod (c$, "addc", 
+function (o, ignoreCase, dontMinQ) {
+var n = o.next;
+if (n == null) {
+n =  new com.stevesoft.pat.NullPattern ();
+} else {
+n = com.stevesoft.pat.RegOpt.opt (n, ignoreCase, dontMinQ);
+}n.setParent (this);
+this.set ( new Character (o.c), n, ignoreCase, dontMinQ);
+if (ignoreCase) {
+if (o.c != o.altc) {
+this.set ( new Character (o.altc), n, ignoreCase, dontMinQ);
+}if (o.c != o.altc2 && o.altc != o.altc2) {
+this.set ( new Character (o.altc2), n, ignoreCase, dontMinQ);
+}}}, "com.stevesoft.pat.oneChar,~B,~B");
+Clazz.defineMethod (c$, "set", 
+function (c, n, igc, dontMinQ) {
+var p = this.h.get (c);
+this.next = null;
+if (p == null) {
+if (Clazz.instanceOf (n, com.stevesoft.pat.Or)) {
+var np =  new com.stevesoft.pat.NullPattern ();
+np.add (n);
+this.h.put (c, np);
+} else {
+this.h.put (c, n);
+}this.keys.addElement (c);
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.Or)) {
+(p).addOr (n);
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && Clazz.instanceOf (n, com.stevesoft.pat.oneChar) && (p).c != (n).c) {
+var b =  new com.stevesoft.pat.Branch ();
+b.addc (p, igc, dontMinQ);
+b.addc (n, igc, dontMinQ);
+this.h.put (c, b);
+b.setParent (this);
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.Branch) && Clazz.instanceOf (n, com.stevesoft.pat.oneChar)) {
+(p).addc (n, igc, dontMinQ);
+n.setParent (p);
+} else {
+var o =  new com.stevesoft.pat.Or ();
+o.setParent (this);
+if (Clazz.instanceOf (p, com.stevesoft.pat.NullPattern) && p.parent == null && p.next != null) {
+o.addOr (p.next);
+} else {
+o.addOr (p);
+}o.addOr (n);
+var optpat = com.stevesoft.pat.RegOpt.opt (o, igc, dontMinQ);
+this.h.put (c, optpat);
+optpat.setParent (this);
+}}, "Character,com.stevesoft.pat.Pattern,~B,~B");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var sb =  new StringBuffer ();
+sb.append ("(?:(?#branch)");
+for (var i = 0; i < this.keys.size (); i++) {
+var c = this.keys.elementAt (i);
+sb.append (c);
+sb.append (this.h.get (c));
+if (i + 1 < this.keys.size ()) {
+sb.append ("|");
+}}
+sb.append (")");
+sb.append (this.nextString ());
+return sb.toString ();
+});
+Clazz.defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (pos >= pt.src.length ()) {
+return -1;
+}var n = this.h.get ( new Character (pt.src.charAt (pos)));
+if (n == null) {
+return -1;
+}if (pt.cbits != null && pt.cbits.get (pos)) {
+return -1;
+}return n.matchInternal (pos + 1, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+c$ = Clazz.declareType (com.stevesoft.pat, "RegOpt");
+c$.opt = Clazz.defineMethod (c$, "opt", 
+function (p, ignoreCase, dontMinQ) {
+if (p == null) {
+return p;
+}if (Clazz.instanceOf (p, com.stevesoft.pat.Bracket)) {
+var b = p;
+p = com.stevesoft.pat.FastBracket.process (b, ignoreCase);
+p.next = b.next;
+p.parent = b.parent;
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && !ignoreCase && !dontMinQ) {
+var o = p;
+p =  new com.stevesoft.pat.FastChar (o.c);
+p.next = o.next;
+p.parent = o.parent;
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.Or) && (p).leftForm ().equals ("(?:") && (p).v.size () == 1) {
+var o = p;
+p = o.v.elementAt (0);
+p.setParent (null);
+p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);
+p.add (o.next);
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.Or)) {
+var o = p;
+o.pv = null;
+var v = o.v;
+o.v =  new java.util.Vector ();
+var b =  new com.stevesoft.pat.Branch ();
+b.parent = o.parent;
+for (var i = 0; i < v.size (); i++) {
+var pp = v.elementAt (i);
+if (Clazz.instanceOf (pp, com.stevesoft.pat.oneChar) && (b.h.size () >= 1 || (i + 1 < v.size () && Clazz.instanceOf (v.elementAt (i + 1), com.stevesoft.pat.oneChar)))) {
+b.addc (pp, ignoreCase, dontMinQ);
+} else {
+if (b.keys.size () > 0) {
+var p2 = b.reduce (ignoreCase, dontMinQ);
+if (p2 != null) {
+o.addOr (p2);
+b =  new com.stevesoft.pat.Branch ();
+b.parent = o.parent;
+}}o.addOr (com.stevesoft.pat.RegOpt.opt (pp, ignoreCase, dontMinQ));
+}}
+if (b.keys.size () > 0) {
+var p2 = b.reduce (ignoreCase, dontMinQ);
+if (p2 != null) {
+o.addOr (p2);
+}}if (o.v.size () == 1 && o.leftForm ().equals ("(?:")) {
+p = o.v.elementAt (0);
+p.setParent (null);
+p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);
+p.add (o.next);
+}} else if (Clazz.instanceOf (p, com.stevesoft.pat.FastMulti)) {
+var ps = p;
+ps.sub = com.stevesoft.pat.RegOpt.opt (ps.sub, ignoreCase, dontMinQ);
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.Multi) && com.stevesoft.pat.RegOpt.safe4fm ((p).sub)) {
+var m = p;
+var fm = null;
+try {
+fm =  new com.stevesoft.pat.FastMulti (m.a, m.b, com.stevesoft.pat.RegOpt.opt (m.sub, ignoreCase, dontMinQ));
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw rs;
+}
+}
+fm.parent = m.parent;
+fm.matchFewest = m.matchFewest;
+fm.next = m.next;
+p = fm;
+}if (p.next != null) {
+p.next = com.stevesoft.pat.RegOpt.opt (p.next, ignoreCase, dontMinQ);
+}return p;
+}, "com.stevesoft.pat.Pattern,~B,~B");
+c$.safe4fm = Clazz.defineMethod (c$, "safe4fm", 
+function (x) {
+while (x != null) {
+if (Clazz.instanceOf (x, com.stevesoft.pat.Bracket)) {
+;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Range)) {
+;} else if (Clazz.instanceOf (x, com.stevesoft.pat.oneChar)) {
+;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Any)) {
+;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Custom) && Clazz.instanceOf ((x).v, com.stevesoft.pat.UniValidator)) {
+;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Or)) {
+var o = x;
+if (!o.leftForm ().equals ("(?:")) {
+return false;
+}var lo = o.countMinChars ();
+var hi = o.countMaxChars ();
+if (!lo.equals (hi)) {
+return false;
+}for (var i = 0; i < o.v.size (); i++) {
+if (!com.stevesoft.pat.RegOpt.safe4fm (o.v.elementAt (i))) {
+return false;
+}}
+} else {
+return false;
+}x = x.next;
+}
+return true;
+}, "com.stevesoft.pat.Pattern");
+});
index ec4def1..9a31c29 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (null, "com.stevesoft.pat.RegRes", ["java.lang.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.marks = null;\r
-this.didMatch_ = false;\r
-this.src = null;\r
-this.charsMatched_ = 0;\r
-this.matchFrom_ = 0;\r
-this.numSubs_ = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "RegRes");\r
-Clazz.defineMethod (c$, "getString", \r
-function () {\r
-return this.src.toString ();\r
-});\r
-Clazz.defineMethod (c$, "getStringLike", \r
-function () {\r
-return this.src;\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var sb =  new StringBuffer ();\r
-sb.append ("match=" + this.matchedFrom () + ":" + this.charsMatched ());\r
-if (!this.didMatch ()) {\r
-return sb.toString ();\r
-}for (var i = 0; i < this.numSubs (); i++) {\r
-var n = i + 1;\r
-sb.append (" sub(" + n + ")=" + this.matchedFromI (n) + ":" + this.charsMatchedI (n));\r
-}\r
-return sb.toString ();\r
-});\r
-Clazz.defineMethod (c$, "copyOutOf", \r
-function (r) {\r
-if (r.marks == null) {\r
-this.marks = null;\r
-} else {\r
-try {\r
-this.marks =  Clazz.newIntArray (r.marks.length, 0);\r
-for (var i = 0; i < this.marks.length; i++) {\r
-this.marks[i] = r.marks[i];\r
-}\r
-} catch (t) {\r
-}\r
-}this.didMatch_ = r.didMatch_;\r
-this.src = r.src;\r
-this.charsMatched_ = r.charsMatched_;\r
-this.matchFrom_ = r.matchFrom_;\r
-this.numSubs_ = r.numSubs_;\r
-}, "com.stevesoft.pat.RegRes");\r
-Clazz.defineMethod (c$, "equals", \r
-function (r) {\r
-if (this.charsMatched_ != r.charsMatched_ || this.matchFrom_ != r.matchFrom_ || this.didMatch_ != r.didMatch_ || this.numSubs_ != r.numSubs_ || !this.src.unwrap ().equals (r.src.unwrap ())) {\r
-return false;\r
-}if (this.marks == null && r.marks != null) {\r
-return false;\r
-}if (this.marks != null && r.marks == null) {\r
-return false;\r
-}for (var i = 1; i <= this.numSubs_; i++) {\r
-if (this.matchedFromI (i) != r.matchedFromI (i)) {\r
-return false;\r
-} else if (this.charsMatchedI (i) != r.charsMatchedI (i)) {\r
-return false;\r
-}}\r
-return true;\r
-}, "com.stevesoft.pat.RegRes");\r
-Clazz.defineMethod (c$, "stringMatched", \r
-function () {\r
-var mf = this.matchedFrom ();\r
-var cm = this.charsMatched ();\r
-return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf, mf + cm);\r
-});\r
-Clazz.defineMethod (c$, "matchedFromI", \r
-function (i) {\r
-if (this.marks == null || i > this.numSubs_) {\r
-return -1;\r
-}return this.marks[i];\r
-}, "~N");\r
-Clazz.defineMethod (c$, "charsMatchedI", \r
-function (i) {\r
-if (this.marks == null || i > this.numSubs_ || !this.didMatch_) {\r
-return -1;\r
-}var mf = this.matchedFromI (i);\r
-return mf < 0 ? -1 : this.marks[i + this.numSubs_] - this.matchedFromI (i);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "matchedToI", \r
-function (i) {\r
-if (this.marks == null || i > this.numSubs_ || !this.didMatch_) {\r
-return -1;\r
-}return this.marks[i + this.numSubs_];\r
-}, "~N");\r
-Clazz.defineMethod (c$, "stringMatchedI", \r
-function (i) {\r
-var mf = this.matchedFromI (i);\r
-var cm = this.charsMatchedI (i);\r
-return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf, mf + cm);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "left", \r
-function () {\r
-var mf = this.matchedFrom ();\r
-return !this.didMatch_ || (mf < 0) ? null : this.src.substring (0, mf);\r
-});\r
-Clazz.defineMethod (c$, "leftI", \r
-function (i) {\r
-var mf = this.matchedFromI (i);\r
-return !this.didMatch_ || (mf < 0) ? null : this.src.substring (0, mf);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "right", \r
-function () {\r
-var mf = this.matchedFrom ();\r
-var cm = this.charsMatched ();\r
-return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf + cm, this.src.length ());\r
-});\r
-Clazz.defineMethod (c$, "rightI", \r
-function (i) {\r
-var mf = this.matchedFromI (i);\r
-var cm = this.charsMatchedI (i);\r
-return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf + cm, this.src.length ());\r
-}, "~N");\r
-Clazz.defineMethod (c$, "matchedFrom", \r
-function () {\r
-return !this.didMatch_ ? -1 : this.matchFrom_;\r
-});\r
-Clazz.defineMethod (c$, "charsMatched", \r
-function () {\r
-return !this.didMatch_ || this.matchFrom_ < 0 ? -1 : this.charsMatched_;\r
-});\r
-Clazz.defineMethod (c$, "matchedTo", \r
-function () {\r
-return !this.didMatch_ ? -1 : this.matchFrom_ + this.charsMatched_;\r
-});\r
-Clazz.defineMethod (c$, "numSubs", \r
-function () {\r
-return this.numSubs_;\r
-});\r
-Clazz.defineMethod (c$, "didMatch", \r
-function () {\r
-return this.didMatch_;\r
-});\r
-Clazz.defineMethod (c$, "matchFrom", \r
-function () {\r
-return this.matchedFrom ();\r
-});\r
-Clazz.defineMethod (c$, "substring", \r
-function () {\r
-return this.stringMatched ();\r
-});\r
-Clazz.defineMethod (c$, "matchFromI", \r
-function (i) {\r
-return this.matchedFromI (i);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "substringI", \r
-function (i) {\r
-return this.stringMatchedI (i);\r
-}, "~N");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, "com.stevesoft.pat.RegRes", ["java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.marks = null;
+this.didMatch_ = false;
+this.src = null;
+this.charsMatched_ = 0;
+this.matchFrom_ = 0;
+this.numSubs_ = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "RegRes");
+Clazz.defineMethod (c$, "getString", 
+function () {
+return this.src.toString ();
+});
+Clazz.defineMethod (c$, "getStringLike", 
+function () {
+return this.src;
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var sb =  new StringBuffer ();
+sb.append ("match=" + this.matchedFrom () + ":" + this.charsMatched ());
+if (!this.didMatch ()) {
+return sb.toString ();
+}for (var i = 0; i < this.numSubs (); i++) {
+var n = i + 1;
+sb.append (" sub(" + n + ")=" + this.matchedFromI (n) + ":" + this.charsMatchedI (n));
+}
+return sb.toString ();
+});
+Clazz.defineMethod (c$, "copyOutOf", 
+function (r) {
+if (r.marks == null) {
+this.marks = null;
+} else {
+try {
+this.marks =  Clazz.newIntArray (r.marks.length, 0);
+for (var i = 0; i < this.marks.length; i++) {
+this.marks[i] = r.marks[i];
+}
+} catch (t) {
+}
+}this.didMatch_ = r.didMatch_;
+this.src = r.src;
+this.charsMatched_ = r.charsMatched_;
+this.matchFrom_ = r.matchFrom_;
+this.numSubs_ = r.numSubs_;
+}, "com.stevesoft.pat.RegRes");
+Clazz.defineMethod (c$, "equals", 
+function (r) {
+if (this.charsMatched_ != r.charsMatched_ || this.matchFrom_ != r.matchFrom_ || this.didMatch_ != r.didMatch_ || this.numSubs_ != r.numSubs_ || !this.src.unwrap ().equals (r.src.unwrap ())) {
+return false;
+}if (this.marks == null && r.marks != null) {
+return false;
+}if (this.marks != null && r.marks == null) {
+return false;
+}for (var i = 1; i <= this.numSubs_; i++) {
+if (this.matchedFromI (i) != r.matchedFromI (i)) {
+return false;
+} else if (this.charsMatchedI (i) != r.charsMatchedI (i)) {
+return false;
+}}
+return true;
+}, "com.stevesoft.pat.RegRes");
+Clazz.defineMethod (c$, "stringMatched", 
+function () {
+var mf = this.matchedFrom ();
+var cm = this.charsMatched ();
+return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf, mf + cm);
+});
+Clazz.defineMethod (c$, "matchedFromI", 
+function (i) {
+if (this.marks == null || i > this.numSubs_) {
+return -1;
+}return this.marks[i];
+}, "~N");
+Clazz.defineMethod (c$, "charsMatchedI", 
+function (i) {
+if (this.marks == null || i > this.numSubs_ || !this.didMatch_) {
+return -1;
+}var mf = this.matchedFromI (i);
+return mf < 0 ? -1 : this.marks[i + this.numSubs_] - this.matchedFromI (i);
+}, "~N");
+Clazz.defineMethod (c$, "matchedToI", 
+function (i) {
+if (this.marks == null || i > this.numSubs_ || !this.didMatch_) {
+return -1;
+}return this.marks[i + this.numSubs_];
+}, "~N");
+Clazz.defineMethod (c$, "stringMatchedI", 
+function (i) {
+var mf = this.matchedFromI (i);
+var cm = this.charsMatchedI (i);
+return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf, mf + cm);
+}, "~N");
+Clazz.defineMethod (c$, "left", 
+function () {
+var mf = this.matchedFrom ();
+return !this.didMatch_ || (mf < 0) ? null : this.src.substring (0, mf);
+});
+Clazz.defineMethod (c$, "leftI", 
+function (i) {
+var mf = this.matchedFromI (i);
+return !this.didMatch_ || (mf < 0) ? null : this.src.substring (0, mf);
+}, "~N");
+Clazz.defineMethod (c$, "right", 
+function () {
+var mf = this.matchedFrom ();
+var cm = this.charsMatched ();
+return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf + cm, this.src.length ());
+});
+Clazz.defineMethod (c$, "rightI", 
+function (i) {
+var mf = this.matchedFromI (i);
+var cm = this.charsMatchedI (i);
+return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf + cm, this.src.length ());
+}, "~N");
+Clazz.defineMethod (c$, "matchedFrom", 
+function () {
+return !this.didMatch_ ? -1 : this.matchFrom_;
+});
+Clazz.defineMethod (c$, "charsMatched", 
+function () {
+return !this.didMatch_ || this.matchFrom_ < 0 ? -1 : this.charsMatched_;
+});
+Clazz.defineMethod (c$, "matchedTo", 
+function () {
+return !this.didMatch_ ? -1 : this.matchFrom_ + this.charsMatched_;
+});
+Clazz.defineMethod (c$, "numSubs", 
+function () {
+return this.numSubs_;
+});
+Clazz.defineMethod (c$, "didMatch", 
+function () {
+return this.didMatch_;
+});
+Clazz.defineMethod (c$, "matchFrom", 
+function () {
+return this.matchedFrom ();
+});
+Clazz.defineMethod (c$, "substring", 
+function () {
+return this.stringMatched ();
+});
+Clazz.defineMethod (c$, "matchFromI", 
+function (i) {
+return this.matchedFromI (i);
+}, "~N");
+Clazz.defineMethod (c$, "substringI", 
+function (i) {
+return this.stringMatchedI (i);
+}, "~N");
+});
index 9275c48..8a6e621 100644 (file)
@@ -1,8 +1,8 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["java.lang.Exception"], "com.stevesoft.pat.RegSyntax", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "RegSyntax", Exception);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.RegSyntax, []);\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["java.lang.Exception"], "com.stevesoft.pat.RegSyntax", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "RegSyntax", Exception);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.RegSyntax, []);
+});
+});
index 5a81c21..3a127a5 100644 (file)
@@ -1,16 +1,16 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["java.lang.Error"], "com.stevesoft.pat.RegSyntaxError", ["com.stevesoft.pat.RegSyntax"], function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "RegSyntaxError", Error);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.RegSyntaxError, []);\r
-});\r
-c$.endItAll = Clazz.defineMethod (c$, "endItAll", \r
-function (s) {\r
-if (com.stevesoft.pat.RegSyntaxError.RegSyntaxErrorEnabled) {\r
-throw  new com.stevesoft.pat.RegSyntaxError (s);\r
-}throw  new com.stevesoft.pat.RegSyntax (s);\r
-}, "~S");\r
-Clazz.defineStatics (c$,\r
-"RegSyntaxErrorEnabled", false);\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["java.lang.Error"], "com.stevesoft.pat.RegSyntaxError", ["com.stevesoft.pat.RegSyntax"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "RegSyntaxError", Error);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.RegSyntaxError, []);
+});
+c$.endItAll = Clazz.defineMethod (c$, "endItAll", 
+function (s) {
+if (com.stevesoft.pat.RegSyntaxError.RegSyntaxErrorEnabled) {
+throw  new com.stevesoft.pat.RegSyntaxError (s);
+}throw  new com.stevesoft.pat.RegSyntax (s);
+}, "~S");
+Clazz.defineStatics (c$,
+"RegSyntaxErrorEnabled", false);
+});
index 89553f0..14f6f05 100644 (file)
Binary files a/bin/com/stevesoft/pat/Regex.class and b/bin/com/stevesoft/pat/Regex.class differ
index d05b95e..893eaa7 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.RegRes", "$.UniValidator", "jalview.jsdev.api.RegExpInterface", "com.stevesoft.pat.NoPattern", "$.Pthings", "$.patInt", "java.util.Hashtable"], ["com.stevesoft.pat.UnicodeW", "$.UnicodeCurrency", "$.UnicodeAlpha", "$.UnicodeUpper", "$.NUnicodeCurrency", "$.NUnicodeW", "$.NUnicodeAlpha", "$.UnicodeMath", "$.UnicodeWhite", "$.UnicodeDigit", "$.NUnicodeMath", "$.Regex", "$.NUnicodeDigit", "$.NUnicodeWhite", "$.NUnicodePunct", "$.UnicodePunct", "$.UnicodeLower"], ["com.stevesoft.pat.Any", "$.BackG", "$.BackMatch", "$.Backup", "$.Boundary", "$.Bracket", "$.CaseMgr", "$.Ctrl", "$.Custom", "$.CustomEndpoint", "$.DotMulti", "$.End", "$.FastMulti", "$.Group", "$.MessageManager", "$.Multi", "$.NullPattern", "$.Or", "$.OrMark", "$.Prop", "$.Range", "$.RegOpt", "$.RegSyntax", "$.RegSyntaxError", "$.ReplaceRule", "$.Replacer", "$.Rthings", "$.Skip", "$.Skipped", "$.Start", "$.StrPos", "$.lookAhead", "$.oneChar", "$.parsePerl", "$.patInf", "com.stevesoft.pat.wrap.StringWrap", "java.lang.NullPointerException", "$.StringBuffer", "java.util.BitSet"], function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "UnicodePunct", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-return from < s.length () && com.stevesoft.pat.Prop.isPunct (s.charAt (from)) ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeWhite", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-return from < s.length () && com.stevesoft.pat.Prop.isWhite (s.charAt (from)) ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "NUnicodePunct", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-return from < s.length () && !com.stevesoft.pat.Prop.isPunct (s.charAt (from)) ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "NUnicodeWhite", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-return from < s.length () && !com.stevesoft.pat.Prop.isWhite (s.charAt (from)) ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeW", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-if (from >= s.length ()) {\r
-return -1;\r
-}var c = s.charAt (from);\r
-return (com.stevesoft.pat.Prop.isAlphabetic (c) || com.stevesoft.pat.Prop.isDecimalDigit (c) || c == '_') ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "NUnicodeW", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-if (from >= s.length ()) {\r
-return -1;\r
-}var c = s.charAt (from);\r
-return !(com.stevesoft.pat.Prop.isAlphabetic (c) || com.stevesoft.pat.Prop.isDecimalDigit (c) || c == '_') ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeDigit", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-return from < s.length () && com.stevesoft.pat.Prop.isDecimalDigit (s.charAt (from)) ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "NUnicodeDigit", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-return from < s.length () && !com.stevesoft.pat.Prop.isDecimalDigit (s.charAt (from)) ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeMath", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-return from < s.length () && com.stevesoft.pat.Prop.isMath (s.charAt (from)) ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "NUnicodeMath", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-return from < s.length () && !com.stevesoft.pat.Prop.isMath (s.charAt (from)) ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeCurrency", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-return from < s.length () && com.stevesoft.pat.Prop.isCurrency (s.charAt (from)) ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "NUnicodeCurrency", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-return from < s.length () && !com.stevesoft.pat.Prop.isCurrency (s.charAt (from)) ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeAlpha", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-return from < s.length () && com.stevesoft.pat.Prop.isAlphabetic (s.charAt (from)) ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "NUnicodeAlpha", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-return from < s.length () && !com.stevesoft.pat.Prop.isAlphabetic (s.charAt (from)) ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeUpper", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-return from < s.length () && this.isUpper (s.charAt (from)) ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-Clazz.defineMethod (c$, "isUpper", \r
-function (c) {\r
-return c == com.stevesoft.pat.CaseMgr.toUpperCaseC (c) && c != com.stevesoft.pat.CaseMgr.toLowerCaseC (c);\r
-}, "~S");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeLower", com.stevesoft.pat.UniValidator);\r
-Clazz.overrideMethod (c$, "validate", \r
-function (s, from, to) {\r
-return from < s.length () && this.isLower (s.charAt (from)) ? to : -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-Clazz.defineMethod (c$, "isLower", \r
-function (c) {\r
-return c != com.stevesoft.pat.CaseMgr.toUpperCaseC (c) && c == com.stevesoft.pat.CaseMgr.toLowerCaseC (c);\r
-}, "~S");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.thePattern = null;\r
-this.minMatch = null;\r
-this.rep = null;\r
-this.dontMatchInQuotes = false;\r
-this.ignoreCase = false;\r
-this.repr = null;\r
-this.esc = '\\';\r
-this.pt = null;\r
-this.gFlags = null;\r
-this.gFlagto = 0;\r
-this.gFlag = false;\r
-this.sFlag = false;\r
-this.mFlag = false;\r
-this.p = null;\r
-this.or = null;\r
-this.skipper = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Regex", com.stevesoft.pat.RegRes, [jalview.jsdev.api.RegExpInterface, Cloneable]);\r
-Clazz.prepareFields (c$, function () {\r
-this.thePattern = com.stevesoft.pat.Regex.none;\r
-this.minMatch =  new com.stevesoft.pat.patInt (0);\r
-this.pt =  new com.stevesoft.pat.Pthings ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (s, strRp) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.Regex, []);\r
-try {\r
-if (s != null) this.compile (s);\r
-if (strRp.length > 0) this.rep = com.stevesoft.pat.ReplaceRule.perlCode (strRp);\r
-} catch (rs) {\r
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {\r
-} else {\r
-throw rs;\r
-}\r
-}\r
-}, "~S,~S");\r
-Clazz.overrideMethod (c$, "clone", \r
-function () {\r
-return  new com.stevesoft.pat.Regex (null, "").cloneFrom (this);\r
-});\r
-Clazz.defineMethod (c$, "cloneFrom", \r
-function (r) {\r
-this.copyOutOf (r);\r
-this.dontMatchInQuotes = r.dontMatchInQuotes;\r
-this.esc = r.esc;\r
-this.ignoreCase = r.ignoreCase;\r
-this.gFlag = r.gFlag;\r
-if (r.rep == null) {\r
-this.rep = null;\r
-} else {\r
-this.rep = r.rep.clone ();\r
-}this.thePattern = r.thePattern.clone ( new java.util.Hashtable ());\r
-this.minMatch = r.minMatch;\r
-this.skipper = r.skipper;\r
-return this;\r
-}, "com.stevesoft.pat.Regex");\r
-Clazz.defineMethod (c$, "setDontMatchInQuotes", \r
-function (b) {\r
-this.dontMatchInQuotes = b;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getDontMatchInQuotes", \r
-function () {\r
-return this.dontMatchInQuotes;\r
-});\r
-Clazz.overrideMethod (c$, "setIgnoreCase", \r
-function (b) {\r
-this.ignoreCase = b;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getIgnoreCase", \r
-function () {\r
-return this.ignoreCase;\r
-});\r
-c$.setDefaultMFlag = Clazz.defineMethod (c$, "setDefaultMFlag", \r
-function (mFlag) {\r
-com.stevesoft.pat.Regex.defaultMFlag = mFlag;\r
-}, "~B");\r
-c$.getDefaultMFlag = Clazz.defineMethod (c$, "getDefaultMFlag", \r
-function () {\r
-return com.stevesoft.pat.Regex.defaultMFlag;\r
-});\r
-Clazz.defineMethod (c$, "setReplaceRuleStr", \r
-function (rp) {\r
-this.rep = com.stevesoft.pat.ReplaceRule.perlCode (rp);\r
-this.repr = null;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setReplaceRule", \r
-function (rp) {\r
-this.rep = rp;\r
-}, "com.stevesoft.pat.ReplaceRule");\r
-c$.isDefined = Clazz.defineMethod (c$, "isDefined", \r
-function (nm) {\r
-return com.stevesoft.pat.Regex.validators.get (nm) != null;\r
-}, "~S");\r
-c$.undefine = Clazz.defineMethod (c$, "undefine", \r
-function (nm) {\r
-com.stevesoft.pat.Regex.validators.remove (nm);\r
-}, "~S");\r
-c$.defineV = Clazz.defineMethod (c$, "defineV", \r
-function (nm, pat, v) {\r
-v.pattern = pat;\r
-com.stevesoft.pat.Regex.validators.put (nm, v);\r
-}, "~S,~S,com.stevesoft.pat.Validator");\r
-c$.define = Clazz.defineMethod (c$, "define", \r
-function (nm, pat) {\r
-com.stevesoft.pat.Regex.validators.put (nm, pat);\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "getReplaceRule", \r
-function () {\r
-return this.rep;\r
-});\r
-Clazz.defineMethod (c$, "_getReplacer", \r
-function () {\r
-return this.repr == null ? this.repr =  new com.stevesoft.pat.Replacer () : this.repr;\r
-});\r
-Clazz.defineMethod (c$, "getReplacer", \r
-function () {\r
-if (this.repr == null) {\r
-this.repr =  new com.stevesoft.pat.Replacer ();\r
-}this.repr.rh.me = this;\r
-this.repr.rh.prev = null;\r
-return this.repr;\r
-});\r
-Clazz.defineMethod (c$, "replaceFirst", \r
-function (s) {\r
-return this._getReplacer ().replaceFirstRegion (s, this, 0, s.length).toString ();\r
-}, "~S");\r
-Clazz.defineMethod (c$, "replaceFirstFrom", \r
-function (s, pos) {\r
-return this._getReplacer ().replaceFirstRegion (s, this, pos, s.length).toString ();\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "replaceFirstRegion", \r
-function (s, start, end) {\r
-return this._getReplacer ().replaceFirstRegion (s, this, start, end).toString ();\r
-}, "~S,~N,~N");\r
-Clazz.overrideMethod (c$, "replaceAll", \r
-function (s) {\r
-return this._getReplacer ().replaceAllRegion (s, this, 0, s.length).toString ();\r
-}, "~S");\r
-Clazz.defineMethod (c$, "replaceAllLike", \r
-function (s) {\r
-return this._getReplacer ().replaceAllRegion (s, this, 0, s.length ());\r
-}, "com.stevesoft.pat.StringLike");\r
-Clazz.defineMethod (c$, "replaceAllFrom", \r
-function (s, pos) {\r
-return this._getReplacer ().replaceAllRegion (s, this, pos, s.length).toString ();\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "replaceAllRegion", \r
-function (s, start, end) {\r
-return this._getReplacer ().replaceAllRegion (s, this, start, end).toString ();\r
-}, "~S,~N,~N");\r
-Clazz.defineMethod (c$, "compile", \r
-function (prepat) {\r
-var postpat = com.stevesoft.pat.parsePerl.codify (prepat, true);\r
-var pat = postpat == null ? prepat : postpat;\r
-this.minMatch = null;\r
-this.ignoreCase = false;\r
-this.dontMatchInQuotes = false;\r
-var mk =  new com.stevesoft.pat.Rthings (this);\r
-var offset = mk.val;\r
-var newpat = pat;\r
-this.thePattern = com.stevesoft.pat.Regex.none;\r
-this.p = null;\r
-this.or = null;\r
-this.minMatch =  new com.stevesoft.pat.patInt (0);\r
-var sp =  new com.stevesoft.pat.StrPos (pat, 0);\r
-if (sp.incMatch ("(?e=")) {\r
-var newEsc = sp.c;\r
-sp.inc ();\r
-if (sp.match (')')) {\r
-newpat = com.stevesoft.pat.Regex.reEscape (pat.substring (6), newEsc, '\\');\r
-}} else if (this.esc != '\\') {\r
-newpat = com.stevesoft.pat.Regex.reEscape (pat, this.esc, '\\');\r
-}this.thePattern = this._compile (newpat, mk);\r
-this.numSubs_ = mk.val - offset;\r
-mk.set (this);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "equals", \r
-function (o) {\r
-if (Clazz.instanceOf (o, com.stevesoft.pat.Regex)) {\r
-if (this.toString ().equals (o.toString ())) {\r
-return Clazz.superCall (this, com.stevesoft.pat.Regex, "equals", [o]);\r
-} else {\r
-return false;\r
-}} else {\r
-return Clazz.superCall (this, com.stevesoft.pat.Regex, "equals", [o]);\r
-}}, "~O");\r
-Clazz.defineMethod (c$, "prep", \r
-function (s) {\r
-this.pt.lastPos = this.matchedTo ();\r
-if (this.pt.lastPos < 0) {\r
-this.pt.lastPos = 0;\r
-}if ((s == null ? null : s.unwrap ()) !== (this.src == null ? null : s.unwrap ())) {\r
-this.pt.lastPos = 0;\r
-}this.src = s;\r
-this.pt.dotDoesntMatchCR = com.stevesoft.pat.Regex.dotDoesntMatchCR && (!this.sFlag);\r
-this.pt.mFlag = ( new Boolean (this.mFlag | com.stevesoft.pat.Regex.defaultMFlag).valueOf ());\r
-this.pt.ignoreCase = this.ignoreCase;\r
-this.pt.no_check = false;\r
-if (this.pt.marks != null) {\r
-for (var i = 0; i < this.pt.marks.length; i++) {\r
-this.pt.marks[i] = -1;\r
-}\r
-}this.pt.marks = null;\r
-this.pt.nMarks = this.numSubs_;\r
-this.pt.src = s;\r
-if (this.dontMatchInQuotes) {\r
-com.stevesoft.pat.Regex.setCbits (s, this.pt);\r
-} else {\r
-this.pt.cbits = null;\r
-}return this.pt;\r
-}, "com.stevesoft.pat.StringLike");\r
-Clazz.defineMethod (c$, "matchAt", \r
-function (s, start_pos) {\r
-return this._search (s, start_pos, start_pos);\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "matchAtLike", \r
-function (s, start_pos) {\r
-return this._searchLike (s, start_pos, start_pos);\r
-}, "com.stevesoft.pat.StringLike,~N");\r
-Clazz.overrideMethod (c$, "search", \r
-function (s) {\r
-if (s == null) {\r
-throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_given_to_regex_search"));\r
-}return this._search (s, 0, s.length);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "searchLike", \r
-function (sl) {\r
-if (sl == null) {\r
-throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_search"));\r
-}return this._searchLike (sl, 0, sl.length ());\r
-}, "com.stevesoft.pat.StringLike");\r
-Clazz.defineMethod (c$, "reverseSearch", \r
-function (s) {\r
-if (s == null) {\r
-throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_given_to_regex_reverse_search"));\r
-}return this._reverseSearch (s, 0, s.length);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "reverseSearchLike", \r
-function (sl) {\r
-if (sl == null) {\r
-throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_reverse_search"));\r
-}return this._reverseSearchLike (sl, 0, sl.length ());\r
-}, "com.stevesoft.pat.StringLike");\r
-Clazz.overrideMethod (c$, "searchFrom", \r
-function (s, start) {\r
-if (s == null) {\r
-throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_search_from"));\r
-}return this._search (s, start, s.length);\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "searchFromLike", \r
-function (s, start) {\r
-if (s == null) {\r
-throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_search_from"));\r
-}return this._searchLike (s, start, s.length ());\r
-}, "com.stevesoft.pat.StringLike,~N");\r
-Clazz.defineMethod (c$, "searchRegion", \r
-function (s, start, end) {\r
-if (s == null) {\r
-throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_search_region"));\r
-}return this._search (s, start, end);\r
-}, "~S,~N,~N");\r
-Clazz.defineMethod (c$, "setGFlag", \r
-function (b) {\r
-this.gFlag = b;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getGFlag", \r
-function () {\r
-return this.gFlag;\r
-});\r
-Clazz.defineMethod (c$, "getSFlag", \r
-function () {\r
-return this.sFlag;\r
-});\r
-Clazz.defineMethod (c$, "getMFlag", \r
-function () {\r
-return this.mFlag;\r
-});\r
-Clazz.defineMethod (c$, "_search", \r
-function (s, start, end) {\r
-return this._searchLike ( new com.stevesoft.pat.wrap.StringWrap (s), start, end);\r
-}, "~S,~N,~N");\r
-Clazz.defineMethod (c$, "_searchLike", \r
-function (s, start, end) {\r
-if (this.gFlag && this.gFlagto > 0 && this.gFlags != null && s.unwrap () === this.gFlags.unwrap ()) {\r
-start = this.gFlagto;\r
-}this.gFlags = null;\r
-var pt = this.prep (s);\r
-var up = (this.minMatch == null ? end : end - this.minMatch.i);\r
-if (up < start && end >= start) {\r
-up = start;\r
-}if (this.skipper == null) {\r
-for (var i = start; i <= up; i++) {\r
-this.charsMatched_ = this.thePattern.matchAt (s, i, pt);\r
-if (this.charsMatched_ >= 0) {\r
-this.matchFrom_ = this.thePattern.mfrom;\r
-this.marks = pt.marks;\r
-this.gFlagto = this.matchFrom_ + this.charsMatched_;\r
-this.gFlags = s;\r
-return this.didMatch_ = true;\r
-}}\r
-} else {\r
-pt.no_check = true;\r
-for (var i = start; i <= up; i++) {\r
-i = this.skipper.find (this.src, i, up);\r
-if (i < 0) {\r
-this.charsMatched_ = this.matchFrom_ = -1;\r
-return this.didMatch_ = false;\r
-}this.charsMatched_ = this.thePattern.matchAt (s, i, pt);\r
-if (this.charsMatched_ >= 0) {\r
-this.matchFrom_ = this.thePattern.mfrom;\r
-this.marks = pt.marks;\r
-this.gFlagto = this.matchFrom_ + this.charsMatched_;\r
-this.gFlags = s;\r
-return this.didMatch_ = true;\r
-}}\r
-}return this.didMatch_ = false;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-Clazz.defineMethod (c$, "_reverseSearch", \r
-function (s, start, end) {\r
-return this._reverseSearchLike ( new com.stevesoft.pat.wrap.StringWrap (s), start, end);\r
-}, "~S,~N,~N");\r
-Clazz.defineMethod (c$, "_reverseSearchLike", \r
-function (s, start, end) {\r
-if (this.gFlag && this.gFlagto > 0 && s.unwrap () === this.gFlags.unwrap ()) {\r
-end = this.gFlagto;\r
-}this.gFlags = null;\r
-var pt = this.prep (s);\r
-for (var i = end; i >= start; i--) {\r
-this.charsMatched_ = this.thePattern.matchAt (s, i, pt);\r
-if (this.charsMatched_ >= 0) {\r
-this.matchFrom_ = this.thePattern.mfrom;\r
-this.marks = pt.marks;\r
-this.gFlagto = this.matchFrom_ - 1;\r
-this.gFlags = s;\r
-return this.didMatch_ = true;\r
-}}\r
-return this.didMatch_ = false;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$.setCbits = Clazz.defineMethod (c$, "setCbits", \r
-function (s, pt) {\r
-if (s === com.stevesoft.pat.Regex.lasts) {\r
-pt.cbits = com.stevesoft.pat.Regex.lastbs;\r
-return;\r
-}var bs =  new java.util.BitSet (s.length ());\r
-var qc = ' ';\r
-var setBit = false;\r
-for (var i = 0; i < s.length (); i++) {\r
-if (setBit) {\r
-bs.set (i);\r
-}var c = s.charAt (i);\r
-if (!setBit && c == '"') {\r
-qc = c;\r
-setBit = true;\r
-bs.set (i);\r
-} else if (!setBit && c == '\'') {\r
-qc = c;\r
-setBit = true;\r
-bs.set (i);\r
-} else if (setBit && c == qc) {\r
-setBit = false;\r
-} else if (setBit && c == '\\' && i + 1 < s.length ()) {\r
-i++;\r
-if (setBit) {\r
-bs.set (i);\r
-}}}\r
-pt.cbits = com.stevesoft.pat.Regex.lastbs = bs;\r
-com.stevesoft.pat.Regex.lasts = s;\r
-}, "com.stevesoft.pat.StringLike,com.stevesoft.pat.Pthings");\r
-Clazz.defineMethod (c$, "add", \r
-function (p2) {\r
-if (this.p == null) {\r
-this.p = p2;\r
-} else {\r
-this.p.add (p2);\r
-p2 = this.p;\r
-}}, "com.stevesoft.pat.Pattern");\r
-Clazz.defineMethod (c$, "compileSP", \r
-function (sp, mk) {\r
-if (sp.match ('[')) {\r
-sp.inc ();\r
-this.add (this.matchBracket (sp));\r
-} else if (sp.match ('|')) {\r
-if (this.or == null) {\r
-this.or =  new com.stevesoft.pat.Or ();\r
-}if (this.p == null) {\r
-this.p =  new com.stevesoft.pat.NullPattern ();\r
-}this.or.addOr (this.p);\r
-this.p = null;\r
-} else if (sp.incMatch ("(?<")) {\r
-var i = sp.getPatInt ();\r
-if (i == null) {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("No int after (?<");\r
-}this.add ( new com.stevesoft.pat.Backup (i.intValue ()));\r
-if (!sp.match (')')) {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("No ) after (?<");\r
-}} else if (sp.incMatch ("(?>")) {\r
-var i = sp.getPatInt ();\r
-if (i == null) {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("No int after (?>");\r
-}this.add ( new com.stevesoft.pat.Backup (-i.intValue ()));\r
-if (!sp.match (')')) {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("No ) after (?<");\r
-}} else if (sp.incMatch ("(?@")) {\r
-var op = sp.c;\r
-sp.inc ();\r
-var cl = sp.c;\r
-sp.inc ();\r
-if (!sp.match (')')) {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("(?@ does not have closing paren");\r
-}this.add ( new com.stevesoft.pat.Group (op, cl));\r
-} else if (sp.incMatch ("(?#")) {\r
-while (!sp.match (')')) {\r
-sp.inc ();\r
-}\r
-} else if (sp.dontMatch && sp.c == 'w') {\r
-var b =  new com.stevesoft.pat.Bracket (false);\r
-b.addOr ( new com.stevesoft.pat.Range ('a', 'z'));\r
-b.addOr ( new com.stevesoft.pat.Range ('A', 'Z'));\r
-b.addOr ( new com.stevesoft.pat.Range ('0', '9'));\r
-b.addOr ( new com.stevesoft.pat.oneChar ('_'));\r
-this.add (b);\r
-} else if (sp.dontMatch && sp.c == 'G') {\r
-this.add ( new com.stevesoft.pat.BackG ());\r
-} else if (sp.dontMatch && sp.c == 's') {\r
-var b =  new com.stevesoft.pat.Bracket (false);\r
-b.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (32)));\r
-b.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (8), String.fromCharCode (10)));\r
-b.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (13)));\r
-this.add (b);\r
-} else if (sp.dontMatch && sp.c == 'd') {\r
-var digit =  new com.stevesoft.pat.Range ('0', '9');\r
-digit.printBrackets = true;\r
-this.add (digit);\r
-} else if (sp.dontMatch && sp.c == 'W') {\r
-var b =  new com.stevesoft.pat.Bracket (true);\r
-b.addOr ( new com.stevesoft.pat.Range ('a', 'z'));\r
-b.addOr ( new com.stevesoft.pat.Range ('A', 'Z'));\r
-b.addOr ( new com.stevesoft.pat.Range ('0', '9'));\r
-b.addOr ( new com.stevesoft.pat.oneChar ('_'));\r
-this.add (b);\r
-} else if (sp.dontMatch && sp.c == 'S') {\r
-var b =  new com.stevesoft.pat.Bracket (true);\r
-b.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (32)));\r
-b.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (8), String.fromCharCode (10)));\r
-b.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (13)));\r
-this.add (b);\r
-} else if (sp.dontMatch && sp.c == 'D') {\r
-var b =  new com.stevesoft.pat.Bracket (true);\r
-b.addOr ( new com.stevesoft.pat.Range ('0', '9'));\r
-this.add (b);\r
-} else if (sp.dontMatch && sp.c == 'B') {\r
-var r =  new com.stevesoft.pat.Regex (null, "");\r
-r._compile ("(?!\\b)", mk);\r
-this.add (r.thePattern);\r
-} else if (this.isOctalString (sp)) {\r
-var d = sp.c.charCodeAt (0) - 48;\r
-sp.inc ();\r
-d = 8 * d + sp.c.charCodeAt (0) - 48;\r
-var sp2 =  new com.stevesoft.pat.StrPos (sp);\r
-sp2.inc ();\r
-if (this.isOctalDigit (sp2, false)) {\r
-sp.inc ();\r
-d = 8 * d + sp.c.charCodeAt (0) - 48;\r
-}this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (d)));\r
-} else if (sp.dontMatch && sp.c >= '1' && sp.c <= '9') {\r
-var iv = sp.c.charCodeAt (0) - 48;\r
-var s2 =  new com.stevesoft.pat.StrPos (sp);\r
-s2.inc ();\r
-if (!s2.dontMatch && s2.c >= '0' && s2.c <= '9') {\r
-iv = 10 * iv + (s2.c.charCodeAt (0) - 48);\r
-sp.inc ();\r
-}this.add ( new com.stevesoft.pat.BackMatch (iv));\r
-} else if (sp.dontMatch && sp.c == 'b') {\r
-this.add ( new com.stevesoft.pat.Boundary ());\r
-} else if (sp.match ('\b')) {\r
-this.add ( new com.stevesoft.pat.Boundary ());\r
-} else if (sp.match ('$')) {\r
-this.add ( new com.stevesoft.pat.End (true));\r
-} else if (sp.dontMatch && sp.c == 'Z') {\r
-this.add ( new com.stevesoft.pat.End (false));\r
-} else if (sp.match ('.')) {\r
-this.add ( new com.stevesoft.pat.Any ());\r
-} else if (sp.incMatch ("(??")) {\r
-var sb =  new StringBuffer ();\r
-var sb2 =  new StringBuffer ();\r
-while (!sp.match (')') && !sp.match (':')) {\r
-sb.append (sp.c);\r
-sp.inc ();\r
-}\r
-if (sp.incMatch (":")) {\r
-while (!sp.match (')')) {\r
-sb2.append (sp.c);\r
-sp.inc ();\r
-}\r
-}var sbs = sb.toString ();\r
-if (Clazz.instanceOf (com.stevesoft.pat.Regex.validators.get (sbs), String)) {\r
-var pat = com.stevesoft.pat.Regex.validators.get (sbs);\r
-var r =  new com.stevesoft.pat.Regex (null, "");\r
-var rth =  new com.stevesoft.pat.Rthings (this);\r
-rth.noBackRefs = true;\r
-r._compile (pat, rth);\r
-this.add (r.thePattern);\r
-} else {\r
-var cm =  new com.stevesoft.pat.Custom (sb.toString ());\r
-if (cm.v != null) {\r
-var v2 = cm.v.arg (sb2.toString ());\r
-if (v2 != null) {\r
-v2.argsave = sb2.toString ();\r
-var p = cm.v.pattern;\r
-cm.v = v2;\r
-v2.pattern = p;\r
-}var r =  new com.stevesoft.pat.Regex (null, "");\r
-var rth =  new com.stevesoft.pat.Rthings (this);\r
-rth.noBackRefs = true;\r
-r._compile (cm.v.pattern, rth);\r
-cm.sub = r.thePattern;\r
-cm.sub.add ( new com.stevesoft.pat.CustomEndpoint (cm));\r
-cm.sub.setParent (cm);\r
-this.add (cm);\r
-}}} else if (sp.match ('(')) {\r
-mk.parenLevel++;\r
-var r =  new com.stevesoft.pat.Regex (null, "");\r
-sp.inc ();\r
-if (sp.incMatch ("?:")) {\r
-r.or =  new com.stevesoft.pat.Or ();\r
-} else if (sp.incMatch ("?=")) {\r
-r.or =  new com.stevesoft.pat.lookAhead (false);\r
-} else if (sp.incMatch ("?!")) {\r
-r.or =  new com.stevesoft.pat.lookAhead (true);\r
-} else if (sp.match ('?')) {\r
-sp.inc ();\r
-do {\r
-if (sp.c == 'i') {\r
-mk.ignoreCase = true;\r
-}if (sp.c == 'Q') {\r
-mk.dontMatchInQuotes = true;\r
-}if (sp.c == 'o') {\r
-mk.optimizeMe = true;\r
-}if (sp.c == 'g') {\r
-mk.gFlag = true;\r
-}if (sp.c == 's') {\r
-mk.sFlag = true;\r
-}if (sp.c == 'm') {\r
-mk.mFlag = true;\r
-}sp.inc ();\r
-} while (!sp.match (')') && !sp.$eos);\r
-r = null;\r
-mk.parenLevel--;\r
-if (sp.$eos) {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("Unclosed ()");\r
-}} else {\r
-r.or = mk.noBackRefs ?  new com.stevesoft.pat.Or () :  new com.stevesoft.pat.OrMark (mk.val++);\r
-}if (r != null) {\r
-this.add (r._compileSP (sp, mk));\r
-}} else if (sp.match ('^')) {\r
-this.add ( new com.stevesoft.pat.Start (true));\r
-} else if (sp.dontMatch && sp.c == 'A') {\r
-this.add ( new com.stevesoft.pat.Start (false));\r
-} else if (sp.match ('*')) {\r
-this.addMulti ( new com.stevesoft.pat.patInt (0),  new com.stevesoft.pat.patInf ());\r
-} else if (sp.match ('+')) {\r
-this.addMulti ( new com.stevesoft.pat.patInt (1),  new com.stevesoft.pat.patInf ());\r
-} else if (sp.match ('?')) {\r
-this.addMulti ( new com.stevesoft.pat.patInt (0),  new com.stevesoft.pat.patInt (1));\r
-} else if (sp.match ('{')) {\r
-var bad = false;\r
-var sp2 =  new com.stevesoft.pat.StrPos (sp);\r
-sp.inc ();\r
-var i1 = sp.getPatInt ();\r
-var i2 = null;\r
-if (sp.match ('}')) {\r
-i2 = i1;\r
-} else {\r
-if (!sp.match (',')) {\r
-bad = true;\r
-}sp.inc ();\r
-if (sp.match ('}')) {\r
-i2 =  new com.stevesoft.pat.patInf ();\r
-} else {\r
-i2 = sp.getPatInt ();\r
-}}if (i1 == null || i2 == null) {\r
-bad = true;\r
-}if (bad) {\r
-sp.dup (sp2);\r
-this.add ( new com.stevesoft.pat.oneChar (sp.c));\r
-} else {\r
-this.addMulti (i1, i2);\r
-}} else if (sp.escMatch ('x') && this.next2Hex (sp)) {\r
-sp.inc ();\r
-var d = this.getHexDigit (sp);\r
-sp.inc ();\r
-d = 16 * d + this.getHexDigit (sp);\r
-this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (d)));\r
-} else if (sp.escMatch ('c')) {\r
-sp.inc ();\r
-if (sp.c.charCodeAt (0) < com.stevesoft.pat.Ctrl.cmap.length) {\r
-this.add ( new com.stevesoft.pat.oneChar (com.stevesoft.pat.Ctrl.cmap[sp.c.charCodeAt (0)]));\r
-} else {\r
-this.add ( new com.stevesoft.pat.oneChar (sp.c));\r
-}} else if (sp.escMatch ('f')) {\r
-this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (12)));\r
-} else if (sp.escMatch ('a')) {\r
-this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (7)));\r
-} else if (sp.escMatch ('t')) {\r
-this.add ( new com.stevesoft.pat.oneChar ('\t'));\r
-} else if (sp.escMatch ('n')) {\r
-this.add ( new com.stevesoft.pat.oneChar ('\n'));\r
-} else if (sp.escMatch ('r')) {\r
-this.add ( new com.stevesoft.pat.oneChar ('\r'));\r
-} else if (sp.escMatch ('b')) {\r
-this.add ( new com.stevesoft.pat.oneChar ('\b'));\r
-} else if (sp.escMatch ('e')) {\r
-this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (27)));\r
-} else {\r
-this.add ( new com.stevesoft.pat.oneChar (sp.c));\r
-if (sp.match (')')) {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("Unmatched right paren in pattern");\r
-}}}, "com.stevesoft.pat.StrPos,com.stevesoft.pat.Rthings");\r
-Clazz.defineMethod (c$, "_compile", \r
-($fz = function (pat, mk) {\r
-this.minMatch = null;\r
-this.sFlag = this.mFlag = this.ignoreCase = this.gFlag = false;\r
-var sp =  new com.stevesoft.pat.StrPos (pat, 0);\r
-this.thePattern = this._compileSP (sp, mk);\r
-this.pt.marks = null;\r
-return this.thePattern;\r
-}, $fz.isPrivate = true, $fz), "~S,com.stevesoft.pat.Rthings");\r
-Clazz.defineMethod (c$, "_compileSP", \r
-function (sp, mk) {\r
-while (!(sp.$eos || (this.or != null && sp.match (')')))) {\r
-this.compileSP (sp, mk);\r
-sp.inc ();\r
-}\r
-if (sp.match (')')) {\r
-mk.parenLevel--;\r
-} else if (sp.$eos && mk.parenLevel != 0) {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("Unclosed Parenthesis! lvl=" + mk.parenLevel);\r
-}if (this.or != null) {\r
-if (this.p == null) {\r
-this.p =  new com.stevesoft.pat.NullPattern ();\r
-}this.or.addOr (this.p);\r
-return this.or;\r
-}return this.p == null ?  new com.stevesoft.pat.NullPattern () : this.p;\r
-}, "com.stevesoft.pat.StrPos,com.stevesoft.pat.Rthings");\r
-Clazz.defineMethod (c$, "addMulti", \r
-function (i1, i2) {\r
-var last;\r
-var last2;\r
-for (last = this.p; last != null && last.next != null; last = last.next) {\r
-;}\r
-if (last == null || last === this.p) {\r
-last2 = null;\r
-} else {\r
-for (last2 = this.p; last2.next !== last; last2 = last2.next) {\r
-;}\r
-}if (Clazz.instanceOf (last, com.stevesoft.pat.Multi) && i1.intValue () == 0 && i2.intValue () == 1) {\r
-(last).matchFewest = true;\r
-} else if (Clazz.instanceOf (last, com.stevesoft.pat.FastMulti) && i1.intValue () == 0 && i2.intValue () == 1) {\r
-(last).matchFewest = true;\r
-} else if (Clazz.instanceOf (last, com.stevesoft.pat.DotMulti) && i1.intValue () == 0 && i2.intValue () == 1) {\r
-(last).matchFewest = true;\r
-} else if (Clazz.instanceOf (last, com.stevesoft.pat.Multi) || Clazz.instanceOf (last, com.stevesoft.pat.DotMulti) || Clazz.instanceOf (last, com.stevesoft.pat.FastMulti)) {\r
-throw  new com.stevesoft.pat.RegSyntax ("Syntax error.");\r
-} else if (last2 == null) {\r
-this.p = com.stevesoft.pat.Regex.mkMulti (i1, i2, this.p);\r
-} else {\r
-last2.next = com.stevesoft.pat.Regex.mkMulti (i1, i2, last);\r
-}}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt");\r
-c$.mkMulti = Clazz.defineMethod (c$, "mkMulti", \r
-function (lo, hi, p) {\r
-if (Clazz.instanceOf (p, com.stevesoft.pat.Any) && p.next == null) {\r
-return  new com.stevesoft.pat.DotMulti (lo, hi);\r
-}return com.stevesoft.pat.RegOpt.safe4fm (p) ?  new com.stevesoft.pat.FastMulti (lo, hi, p) :  new com.stevesoft.pat.Multi (lo, hi, p);\r
-}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");\r
-Clazz.defineMethod (c$, "matchBracket", \r
-function (sp) {\r
-var ret;\r
-if (sp.match ('^')) {\r
-ret =  new com.stevesoft.pat.Bracket (true);\r
-sp.inc ();\r
-} else {\r
-ret =  new com.stevesoft.pat.Bracket (false);\r
-}if (sp.match (']')) {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("Unmatched []");\r
-}while (!sp.$eos && !sp.match (']')) {\r
-var s1 =  new com.stevesoft.pat.StrPos (sp);\r
-s1.inc ();\r
-var s1_ =  new com.stevesoft.pat.StrPos (s1);\r
-s1_.inc ();\r
-if (s1.match ('-') && !s1_.match (']')) {\r
-var s2 =  new com.stevesoft.pat.StrPos (s1);\r
-s2.inc ();\r
-if (!s2.$eos) {\r
-ret.addOr ( new com.stevesoft.pat.Range (sp.c, s2.c));\r
-}sp.inc ();\r
-sp.inc ();\r
-} else if (sp.escMatch ('Q')) {\r
-sp.inc ();\r
-while (!sp.escMatch ('E')) {\r
-ret.addOr ( new com.stevesoft.pat.oneChar (sp.c));\r
-sp.inc ();\r
-}\r
-} else if (sp.escMatch ('d')) {\r
-ret.addOr ( new com.stevesoft.pat.Range ('0', '9'));\r
-} else if (sp.escMatch ('s')) {\r
-ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (32)));\r
-ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (8), String.fromCharCode (10)));\r
-ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (13)));\r
-} else if (sp.escMatch ('w')) {\r
-ret.addOr ( new com.stevesoft.pat.Range ('a', 'z'));\r
-ret.addOr ( new com.stevesoft.pat.Range ('A', 'Z'));\r
-ret.addOr ( new com.stevesoft.pat.Range ('0', '9'));\r
-ret.addOr ( new com.stevesoft.pat.oneChar ('_'));\r
-} else if (sp.escMatch ('D')) {\r
-ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (0), String.fromCharCode (47)));\r
-ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (58), String.fromCharCode (65535)));\r
-} else if (sp.escMatch ('S')) {\r
-ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (0), String.fromCharCode (7)));\r
-ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (11), String.fromCharCode (12)));\r
-ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (14), String.fromCharCode (31)));\r
-ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (33), String.fromCharCode (65535)));\r
-} else if (sp.escMatch ('W')) {\r
-ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (0), String.fromCharCode (64)));\r
-ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (91), String.fromCharCode (94)));\r
-ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (96)));\r
-ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (123), String.fromCharCode (65535)));\r
-} else if (sp.escMatch ('x') && this.next2Hex (sp)) {\r
-sp.inc ();\r
-var d = this.getHexDigit (sp);\r
-sp.inc ();\r
-d = 16 * d + this.getHexDigit (sp);\r
-ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (d)));\r
-} else if (sp.escMatch ('a')) {\r
-ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (7)));\r
-} else if (sp.escMatch ('f')) {\r
-ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (12)));\r
-} else if (sp.escMatch ('e')) {\r
-ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (27)));\r
-} else if (sp.escMatch ('n')) {\r
-ret.addOr ( new com.stevesoft.pat.oneChar ('\n'));\r
-} else if (sp.escMatch ('t')) {\r
-ret.addOr ( new com.stevesoft.pat.oneChar ('\t'));\r
-} else if (sp.escMatch ('r')) {\r
-ret.addOr ( new com.stevesoft.pat.oneChar ('\r'));\r
-} else if (sp.escMatch ('c')) {\r
-sp.inc ();\r
-if (sp.c.charCodeAt (0) < com.stevesoft.pat.Ctrl.cmap.length) {\r
-ret.addOr ( new com.stevesoft.pat.oneChar (com.stevesoft.pat.Ctrl.cmap[sp.c.charCodeAt (0)]));\r
-} else {\r
-ret.addOr ( new com.stevesoft.pat.oneChar (sp.c));\r
-}} else if (this.isOctalString (sp)) {\r
-var d = sp.c.charCodeAt (0) - 48;\r
-sp.inc ();\r
-d = 8 * d + sp.c.charCodeAt (0) - 48;\r
-var sp2 =  new com.stevesoft.pat.StrPos (sp);\r
-sp2.inc ();\r
-if (this.isOctalDigit (sp2, false)) {\r
-sp.inc ();\r
-d = 8 * d + sp.c.charCodeAt (0) - 48;\r
-}ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (d)));\r
-} else {\r
-ret.addOr ( new com.stevesoft.pat.oneChar (sp.c));\r
-}sp.inc ();\r
-}\r
-return ret;\r
-}, "com.stevesoft.pat.StrPos");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-{\r
-var sb =  new StringBuffer ();\r
-if (this.esc != '\\') {\r
-sb.append ("(?e=");\r
-sb.append (this.esc);\r
-sb.append (")");\r
-}if (this.gFlag || this.mFlag || !com.stevesoft.pat.Regex.dotDoesntMatchCR || this.sFlag || this.ignoreCase || this.dontMatchInQuotes || this.optimized ()) {\r
-sb.append ("(?");\r
-if (this.ignoreCase) {\r
-sb.append ("i");\r
-}if (this.mFlag) {\r
-sb.append ("m");\r
-}if (this.sFlag || !com.stevesoft.pat.Regex.dotDoesntMatchCR) {\r
-sb.append ("s");\r
-}if (this.dontMatchInQuotes) {\r
-sb.append ("Q");\r
-}if (this.optimized ()) {\r
-sb.append ("o");\r
-}if (this.gFlag) {\r
-sb.append ("g");\r
-}sb.append (")");\r
-}var patstr = this.thePattern.toString ();\r
-if (this.esc != '\\') {\r
-patstr = com.stevesoft.pat.Regex.reEscape (patstr, '\\', this.esc);\r
-}sb.append (patstr);\r
-return sb.toString ();\r
-}});\r
-c$.reEscape = Clazz.defineMethod (c$, "reEscape", \r
-function (s, oldEsc, newEsc) {\r
-if (oldEsc == newEsc) {\r
-return s;\r
-}var i;\r
-var sb =  new StringBuffer ();\r
-for (i = 0; i < s.length; i++) {\r
-if (s.charAt (i) == oldEsc && i + 1 < s.length) {\r
-if (s.charAt (i + 1) == oldEsc) {\r
-sb.append (oldEsc);\r
-} else {\r
-sb.append (newEsc);\r
-sb.append (s.charAt (i + 1));\r
-}i++;\r
-} else if (s.charAt (i) == newEsc) {\r
-sb.append (newEsc);\r
-sb.append (newEsc);\r
-} else {\r
-sb.append (s.charAt (i));\r
-}}\r
-return sb.toString ();\r
-}, "~S,~S,~S");\r
-Clazz.defineMethod (c$, "accept", \r
-function (dir, s) {\r
-return this.search (s);\r
-}, "java.io.File,~S");\r
-c$.version = Clazz.defineMethod (c$, "version", \r
-function () {\r
-return "lgpl release 1.5.3";\r
-});\r
-Clazz.defineMethod (c$, "optimize", \r
-function () {\r
-if (this.optimized () || this.thePattern == null) {\r
-return;\r
-}this.minMatch =  new com.stevesoft.pat.patInt (0);\r
-this.thePattern = com.stevesoft.pat.RegOpt.opt (this.thePattern, this.ignoreCase, this.dontMatchInQuotes);\r
-this.skipper = com.stevesoft.pat.Skip.findSkipRegex (this);\r
-return;\r
-});\r
-Clazz.defineMethod (c$, "optimized", \r
-function () {\r
-return this.minMatch != null;\r
-});\r
-c$.perlCode = Clazz.defineMethod (c$, "perlCode", \r
-function (s) {\r
-return com.stevesoft.pat.parsePerl.parse (s);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "isLiteral", \r
-function () {\r
-var x = this.thePattern;\r
-while (x != null) {\r
-if (Clazz.instanceOf (x, com.stevesoft.pat.oneChar)) {\r
-;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Skipped)) {\r
-;} else {\r
-return false;\r
-}x = x.next;\r
-}\r
-return true;\r
-});\r
-Clazz.defineMethod (c$, "countMinChars", \r
-function () {\r
-return this.thePattern.countMinChars ();\r
-});\r
-Clazz.defineMethod (c$, "countMaxChars", \r
-function () {\r
-return this.thePattern.countMaxChars ();\r
-});\r
-Clazz.defineMethod (c$, "isHexDigit", \r
-function (sp) {\r
-var r = !sp.$eos && !sp.dontMatch && ((sp.c >= '0' && sp.c <= '9') || (sp.c >= 'a' && sp.c <= 'f') || (sp.c >= 'A' && sp.c <= 'F'));\r
-return r;\r
-}, "com.stevesoft.pat.StrPos");\r
-Clazz.defineMethod (c$, "isOctalDigit", \r
-function (sp, first) {\r
-var r = !sp.$eos && !( new Boolean (first ^ sp.dontMatch).valueOf ()) && sp.c >= '0' && sp.c <= '7';\r
-return r;\r
-}, "com.stevesoft.pat.StrPos,~B");\r
-Clazz.defineMethod (c$, "getHexDigit", \r
-function (sp) {\r
-if (sp.c >= '0' && sp.c <= '9') {\r
-return sp.c.charCodeAt (0) - 48;\r
-}if (sp.c >= 'a' && sp.c <= 'f') {\r
-return sp.c.charCodeAt (0) - 97 + 10;\r
-}return sp.c.charCodeAt (0) - 65 + 10;\r
-}, "com.stevesoft.pat.StrPos");\r
-Clazz.defineMethod (c$, "next2Hex", \r
-function (sp) {\r
-var sp2 =  new com.stevesoft.pat.StrPos (sp);\r
-sp2.inc ();\r
-if (!this.isHexDigit (sp2)) {\r
-return false;\r
-}sp2.inc ();\r
-if (!this.isHexDigit (sp2)) {\r
-return false;\r
-}return true;\r
-}, "com.stevesoft.pat.StrPos");\r
-Clazz.defineMethod (c$, "isOctalString", \r
-function (sp) {\r
-if (!this.isOctalDigit (sp, true)) {\r
-return false;\r
-}var sp2 =  new com.stevesoft.pat.StrPos (sp);\r
-sp2.inc ();\r
-if (!this.isOctalDigit (sp2, false)) {\r
-return false;\r
-}return true;\r
-}, "com.stevesoft.pat.StrPos");\r
-Clazz.defineStatics (c$,\r
-"BackRefOffset", 1);\r
-c$.none = c$.prototype.none =  new com.stevesoft.pat.NoPattern ();\r
-c$.validators = c$.prototype.validators =  new java.util.Hashtable ();\r
-{\r
-com.stevesoft.pat.Regex.defineV ("p", "(?>1)",  new com.stevesoft.pat.UnicodePunct ());\r
-com.stevesoft.pat.Regex.defineV ("P", "(?>1)",  new com.stevesoft.pat.NUnicodePunct ());\r
-com.stevesoft.pat.Regex.defineV ("s", "(?>1)",  new com.stevesoft.pat.UnicodeWhite ());\r
-com.stevesoft.pat.Regex.defineV ("S", "(?>1)",  new com.stevesoft.pat.NUnicodeWhite ());\r
-com.stevesoft.pat.Regex.defineV ("w", "(?>1)",  new com.stevesoft.pat.UnicodeW ());\r
-com.stevesoft.pat.Regex.defineV ("W", "(?>1)",  new com.stevesoft.pat.NUnicodeW ());\r
-com.stevesoft.pat.Regex.defineV ("d", "(?>1)",  new com.stevesoft.pat.UnicodeDigit ());\r
-com.stevesoft.pat.Regex.defineV ("D", "(?>1)",  new com.stevesoft.pat.NUnicodeDigit ());\r
-com.stevesoft.pat.Regex.defineV ("m", "(?>1)",  new com.stevesoft.pat.UnicodeMath ());\r
-com.stevesoft.pat.Regex.defineV ("M", "(?>1)",  new com.stevesoft.pat.NUnicodeMath ());\r
-com.stevesoft.pat.Regex.defineV ("c", "(?>1)",  new com.stevesoft.pat.UnicodeCurrency ());\r
-com.stevesoft.pat.Regex.defineV ("C", "(?>1)",  new com.stevesoft.pat.NUnicodeCurrency ());\r
-com.stevesoft.pat.Regex.defineV ("a", "(?>1)",  new com.stevesoft.pat.UnicodeAlpha ());\r
-com.stevesoft.pat.Regex.defineV ("A", "(?>1)",  new com.stevesoft.pat.NUnicodeAlpha ());\r
-com.stevesoft.pat.Regex.defineV ("uc", "(?>1)",  new com.stevesoft.pat.UnicodeUpper ());\r
-com.stevesoft.pat.Regex.defineV ("lc", "(?>1)",  new com.stevesoft.pat.UnicodeLower ());\r
-}Clazz.defineStatics (c$,\r
-"defaultMFlag", false,\r
-"dotDoesntMatchCR", true,\r
-"lasts", null,\r
-"lastbs", null,\r
-"back_slash", '\\');\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.RegRes", "$.UniValidator", "jalview.jsdev.api.RegExpInterface", "com.stevesoft.pat.NoPattern", "$.Pthings", "$.patInt", "java.util.Hashtable"], ["com.stevesoft.pat.UnicodeW", "$.UnicodeCurrency", "$.UnicodeAlpha", "$.UnicodeUpper", "$.NUnicodeCurrency", "$.NUnicodeW", "$.NUnicodeAlpha", "$.UnicodeMath", "$.UnicodeWhite", "$.UnicodeDigit", "$.NUnicodeMath", "$.Regex", "$.NUnicodeDigit", "$.NUnicodeWhite", "$.NUnicodePunct", "$.UnicodePunct", "$.UnicodeLower"], ["com.stevesoft.pat.Any", "$.BackG", "$.BackMatch", "$.Backup", "$.Boundary", "$.Bracket", "$.CaseMgr", "$.Ctrl", "$.Custom", "$.CustomEndpoint", "$.DotMulti", "$.End", "$.FastMulti", "$.Group", "$.MessageManager", "$.Multi", "$.NullPattern", "$.Or", "$.OrMark", "$.Prop", "$.Range", "$.RegOpt", "$.RegSyntax", "$.RegSyntaxError", "$.ReplaceRule", "$.Replacer", "$.Rthings", "$.Skip", "$.Skipped", "$.Start", "$.StrPos", "$.lookAhead", "$.oneChar", "$.parsePerl", "$.patInf", "com.stevesoft.pat.wrap.StringWrap", "java.lang.NullPointerException", "$.StringBuffer", "java.util.BitSet"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "UnicodePunct", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && com.stevesoft.pat.Prop.isPunct (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeWhite", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && com.stevesoft.pat.Prop.isWhite (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz.declareType (com.stevesoft.pat, "NUnicodePunct", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && !com.stevesoft.pat.Prop.isPunct (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz.declareType (com.stevesoft.pat, "NUnicodeWhite", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && !com.stevesoft.pat.Prop.isWhite (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeW", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+if (from >= s.length ()) {
+return -1;
+}var c = s.charAt (from);
+return (com.stevesoft.pat.Prop.isAlphabetic (c) || com.stevesoft.pat.Prop.isDecimalDigit (c) || c == '_') ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz.declareType (com.stevesoft.pat, "NUnicodeW", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+if (from >= s.length ()) {
+return -1;
+}var c = s.charAt (from);
+return !(com.stevesoft.pat.Prop.isAlphabetic (c) || com.stevesoft.pat.Prop.isDecimalDigit (c) || c == '_') ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeDigit", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && com.stevesoft.pat.Prop.isDecimalDigit (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz.declareType (com.stevesoft.pat, "NUnicodeDigit", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && !com.stevesoft.pat.Prop.isDecimalDigit (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeMath", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && com.stevesoft.pat.Prop.isMath (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz.declareType (com.stevesoft.pat, "NUnicodeMath", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && !com.stevesoft.pat.Prop.isMath (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeCurrency", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && com.stevesoft.pat.Prop.isCurrency (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz.declareType (com.stevesoft.pat, "NUnicodeCurrency", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && !com.stevesoft.pat.Prop.isCurrency (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeAlpha", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && com.stevesoft.pat.Prop.isAlphabetic (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz.declareType (com.stevesoft.pat, "NUnicodeAlpha", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && !com.stevesoft.pat.Prop.isAlphabetic (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeUpper", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && this.isUpper (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz.defineMethod (c$, "isUpper", 
+function (c) {
+return c == com.stevesoft.pat.CaseMgr.toUpperCaseC (c) && c != com.stevesoft.pat.CaseMgr.toLowerCaseC (c);
+}, "~S");
+c$ = Clazz.declareType (com.stevesoft.pat, "UnicodeLower", com.stevesoft.pat.UniValidator);
+Clazz.overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && this.isLower (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz.defineMethod (c$, "isLower", 
+function (c) {
+return c != com.stevesoft.pat.CaseMgr.toUpperCaseC (c) && c == com.stevesoft.pat.CaseMgr.toLowerCaseC (c);
+}, "~S");
+c$ = Clazz.decorateAsClass (function () {
+this.thePattern = null;
+this.minMatch = null;
+this.rep = null;
+this.dontMatchInQuotes = false;
+this.ignoreCase = false;
+this.repr = null;
+this.esc = '\\';
+this.pt = null;
+this.gFlags = null;
+this.gFlagto = 0;
+this.gFlag = false;
+this.sFlag = false;
+this.mFlag = false;
+this.p = null;
+this.or = null;
+this.skipper = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Regex", com.stevesoft.pat.RegRes, [jalview.jsdev.api.RegExpInterface, Cloneable]);
+Clazz.prepareFields (c$, function () {
+this.thePattern = com.stevesoft.pat.Regex.none;
+this.minMatch =  new com.stevesoft.pat.patInt (0);
+this.pt =  new com.stevesoft.pat.Pthings ();
+});
+Clazz.makeConstructor (c$, 
+function (s, strRp) {
+Clazz.superConstructor (this, com.stevesoft.pat.Regex, []);
+try {
+if (s != null) this.compile (s);
+if (strRp.length > 0) this.rep = com.stevesoft.pat.ReplaceRule.perlCode (strRp);
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw rs;
+}
+}
+}, "~S,~S");
+Clazz.overrideMethod (c$, "clone", 
+function () {
+return  new com.stevesoft.pat.Regex (null, "").cloneFrom (this);
+});
+Clazz.defineMethod (c$, "cloneFrom", 
+function (r) {
+this.copyOutOf (r);
+this.dontMatchInQuotes = r.dontMatchInQuotes;
+this.esc = r.esc;
+this.ignoreCase = r.ignoreCase;
+this.gFlag = r.gFlag;
+if (r.rep == null) {
+this.rep = null;
+} else {
+this.rep = r.rep.clone ();
+}this.thePattern = r.thePattern.clone ( new java.util.Hashtable ());
+this.minMatch = r.minMatch;
+this.skipper = r.skipper;
+return this;
+}, "com.stevesoft.pat.Regex");
+Clazz.defineMethod (c$, "setDontMatchInQuotes", 
+function (b) {
+this.dontMatchInQuotes = b;
+}, "~B");
+Clazz.defineMethod (c$, "getDontMatchInQuotes", 
+function () {
+return this.dontMatchInQuotes;
+});
+Clazz.overrideMethod (c$, "setIgnoreCase", 
+function (b) {
+this.ignoreCase = b;
+}, "~B");
+Clazz.defineMethod (c$, "getIgnoreCase", 
+function () {
+return this.ignoreCase;
+});
+c$.setDefaultMFlag = Clazz.defineMethod (c$, "setDefaultMFlag", 
+function (mFlag) {
+com.stevesoft.pat.Regex.defaultMFlag = mFlag;
+}, "~B");
+c$.getDefaultMFlag = Clazz.defineMethod (c$, "getDefaultMFlag", 
+function () {
+return com.stevesoft.pat.Regex.defaultMFlag;
+});
+Clazz.defineMethod (c$, "setReplaceRuleStr", 
+function (rp) {
+this.rep = com.stevesoft.pat.ReplaceRule.perlCode (rp);
+this.repr = null;
+}, "~S");
+Clazz.defineMethod (c$, "setReplaceRule", 
+function (rp) {
+this.rep = rp;
+}, "com.stevesoft.pat.ReplaceRule");
+c$.isDefined = Clazz.defineMethod (c$, "isDefined", 
+function (nm) {
+return com.stevesoft.pat.Regex.validators.get (nm) != null;
+}, "~S");
+c$.undefine = Clazz.defineMethod (c$, "undefine", 
+function (nm) {
+com.stevesoft.pat.Regex.validators.remove (nm);
+}, "~S");
+c$.defineV = Clazz.defineMethod (c$, "defineV", 
+function (nm, pat, v) {
+v.pattern = pat;
+com.stevesoft.pat.Regex.validators.put (nm, v);
+}, "~S,~S,com.stevesoft.pat.Validator");
+c$.define = Clazz.defineMethod (c$, "define", 
+function (nm, pat) {
+com.stevesoft.pat.Regex.validators.put (nm, pat);
+}, "~S,~S");
+Clazz.defineMethod (c$, "getReplaceRule", 
+function () {
+return this.rep;
+});
+Clazz.defineMethod (c$, "_getReplacer", 
+function () {
+return this.repr == null ? this.repr =  new com.stevesoft.pat.Replacer () : this.repr;
+});
+Clazz.defineMethod (c$, "getReplacer", 
+function () {
+if (this.repr == null) {
+this.repr =  new com.stevesoft.pat.Replacer ();
+}this.repr.rh.me = this;
+this.repr.rh.prev = null;
+return this.repr;
+});
+Clazz.defineMethod (c$, "replaceFirst", 
+function (s) {
+return this._getReplacer ().replaceFirstRegion (s, this, 0, s.length).toString ();
+}, "~S");
+Clazz.defineMethod (c$, "replaceFirstFrom", 
+function (s, pos) {
+return this._getReplacer ().replaceFirstRegion (s, this, pos, s.length).toString ();
+}, "~S,~N");
+Clazz.defineMethod (c$, "replaceFirstRegion", 
+function (s, start, end) {
+return this._getReplacer ().replaceFirstRegion (s, this, start, end).toString ();
+}, "~S,~N,~N");
+Clazz.overrideMethod (c$, "replaceAll", 
+function (s) {
+return this._getReplacer ().replaceAllRegion (s, this, 0, s.length).toString ();
+}, "~S");
+Clazz.defineMethod (c$, "replaceAllLike", 
+function (s) {
+return this._getReplacer ().replaceAllRegion (s, this, 0, s.length ());
+}, "com.stevesoft.pat.StringLike");
+Clazz.defineMethod (c$, "replaceAllFrom", 
+function (s, pos) {
+return this._getReplacer ().replaceAllRegion (s, this, pos, s.length).toString ();
+}, "~S,~N");
+Clazz.defineMethod (c$, "replaceAllRegion", 
+function (s, start, end) {
+return this._getReplacer ().replaceAllRegion (s, this, start, end).toString ();
+}, "~S,~N,~N");
+Clazz.defineMethod (c$, "compile", 
+function (prepat) {
+var postpat = com.stevesoft.pat.parsePerl.codify (prepat, true);
+var pat = postpat == null ? prepat : postpat;
+this.minMatch = null;
+this.ignoreCase = false;
+this.dontMatchInQuotes = false;
+var mk =  new com.stevesoft.pat.Rthings (this);
+var offset = mk.val;
+var newpat = pat;
+this.thePattern = com.stevesoft.pat.Regex.none;
+this.p = null;
+this.or = null;
+this.minMatch =  new com.stevesoft.pat.patInt (0);
+var sp =  new com.stevesoft.pat.StrPos (pat, 0);
+if (sp.incMatch ("(?e=")) {
+var newEsc = sp.c;
+sp.inc ();
+if (sp.match (')')) {
+newpat = com.stevesoft.pat.Regex.reEscape (pat.substring (6), newEsc, '\\');
+}} else if (this.esc != '\\') {
+newpat = com.stevesoft.pat.Regex.reEscape (pat, this.esc, '\\');
+}this.thePattern = this._compile (newpat, mk);
+this.numSubs_ = mk.val - offset;
+mk.set (this);
+}, "~S");
+Clazz.defineMethod (c$, "equals", 
+function (o) {
+if (Clazz.instanceOf (o, com.stevesoft.pat.Regex)) {
+if (this.toString ().equals (o.toString ())) {
+return Clazz.superCall (this, com.stevesoft.pat.Regex, "equals", [o]);
+} else {
+return false;
+}} else {
+return Clazz.superCall (this, com.stevesoft.pat.Regex, "equals", [o]);
+}}, "~O");
+Clazz.defineMethod (c$, "prep", 
+function (s) {
+this.pt.lastPos = this.matchedTo ();
+if (this.pt.lastPos < 0) {
+this.pt.lastPos = 0;
+}if ((s == null ? null : s.unwrap ()) !== (this.src == null ? null : s.unwrap ())) {
+this.pt.lastPos = 0;
+}this.src = s;
+this.pt.dotDoesntMatchCR = com.stevesoft.pat.Regex.dotDoesntMatchCR && (!this.sFlag);
+this.pt.mFlag = ( new Boolean (this.mFlag | com.stevesoft.pat.Regex.defaultMFlag).valueOf ());
+this.pt.ignoreCase = this.ignoreCase;
+this.pt.no_check = false;
+if (this.pt.marks != null) {
+for (var i = 0; i < this.pt.marks.length; i++) {
+this.pt.marks[i] = -1;
+}
+}this.pt.marks = null;
+this.pt.nMarks = this.numSubs_;
+this.pt.src = s;
+if (this.dontMatchInQuotes) {
+com.stevesoft.pat.Regex.setCbits (s, this.pt);
+} else {
+this.pt.cbits = null;
+}return this.pt;
+}, "com.stevesoft.pat.StringLike");
+Clazz.defineMethod (c$, "matchAt", 
+function (s, start_pos) {
+return this._search (s, start_pos, start_pos);
+}, "~S,~N");
+Clazz.defineMethod (c$, "matchAtLike", 
+function (s, start_pos) {
+return this._searchLike (s, start_pos, start_pos);
+}, "com.stevesoft.pat.StringLike,~N");
+Clazz.overrideMethod (c$, "search", 
+function (s) {
+if (s == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_given_to_regex_search"));
+}return this._search (s, 0, s.length);
+}, "~S");
+Clazz.defineMethod (c$, "searchLike", 
+function (sl) {
+if (sl == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_search"));
+}return this._searchLike (sl, 0, sl.length ());
+}, "com.stevesoft.pat.StringLike");
+Clazz.defineMethod (c$, "reverseSearch", 
+function (s) {
+if (s == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_given_to_regex_reverse_search"));
+}return this._reverseSearch (s, 0, s.length);
+}, "~S");
+Clazz.defineMethod (c$, "reverseSearchLike", 
+function (sl) {
+if (sl == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_reverse_search"));
+}return this._reverseSearchLike (sl, 0, sl.length ());
+}, "com.stevesoft.pat.StringLike");
+Clazz.overrideMethod (c$, "searchFrom", 
+function (s, start) {
+if (s == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_search_from"));
+}return this._search (s, start, s.length);
+}, "~S,~N");
+Clazz.defineMethod (c$, "searchFromLike", 
+function (s, start) {
+if (s == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_search_from"));
+}return this._searchLike (s, start, s.length ());
+}, "com.stevesoft.pat.StringLike,~N");
+Clazz.defineMethod (c$, "searchRegion", 
+function (s, start, end) {
+if (s == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_search_region"));
+}return this._search (s, start, end);
+}, "~S,~N,~N");
+Clazz.defineMethod (c$, "setGFlag", 
+function (b) {
+this.gFlag = b;
+}, "~B");
+Clazz.defineMethod (c$, "getGFlag", 
+function () {
+return this.gFlag;
+});
+Clazz.defineMethod (c$, "getSFlag", 
+function () {
+return this.sFlag;
+});
+Clazz.defineMethod (c$, "getMFlag", 
+function () {
+return this.mFlag;
+});
+Clazz.defineMethod (c$, "_search", 
+function (s, start, end) {
+return this._searchLike ( new com.stevesoft.pat.wrap.StringWrap (s), start, end);
+}, "~S,~N,~N");
+Clazz.defineMethod (c$, "_searchLike", 
+function (s, start, end) {
+if (this.gFlag && this.gFlagto > 0 && this.gFlags != null && s.unwrap () === this.gFlags.unwrap ()) {
+start = this.gFlagto;
+}this.gFlags = null;
+var pt = this.prep (s);
+var up = (this.minMatch == null ? end : end - this.minMatch.i);
+if (up < start && end >= start) {
+up = start;
+}if (this.skipper == null) {
+for (var i = start; i <= up; i++) {
+this.charsMatched_ = this.thePattern.matchAt (s, i, pt);
+if (this.charsMatched_ >= 0) {
+this.matchFrom_ = this.thePattern.mfrom;
+this.marks = pt.marks;
+this.gFlagto = this.matchFrom_ + this.charsMatched_;
+this.gFlags = s;
+return this.didMatch_ = true;
+}}
+} else {
+pt.no_check = true;
+for (var i = start; i <= up; i++) {
+i = this.skipper.find (this.src, i, up);
+if (i < 0) {
+this.charsMatched_ = this.matchFrom_ = -1;
+return this.didMatch_ = false;
+}this.charsMatched_ = this.thePattern.matchAt (s, i, pt);
+if (this.charsMatched_ >= 0) {
+this.matchFrom_ = this.thePattern.mfrom;
+this.marks = pt.marks;
+this.gFlagto = this.matchFrom_ + this.charsMatched_;
+this.gFlags = s;
+return this.didMatch_ = true;
+}}
+}return this.didMatch_ = false;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz.defineMethod (c$, "_reverseSearch", 
+function (s, start, end) {
+return this._reverseSearchLike ( new com.stevesoft.pat.wrap.StringWrap (s), start, end);
+}, "~S,~N,~N");
+Clazz.defineMethod (c$, "_reverseSearchLike", 
+function (s, start, end) {
+if (this.gFlag && this.gFlagto > 0 && s.unwrap () === this.gFlags.unwrap ()) {
+end = this.gFlagto;
+}this.gFlags = null;
+var pt = this.prep (s);
+for (var i = end; i >= start; i--) {
+this.charsMatched_ = this.thePattern.matchAt (s, i, pt);
+if (this.charsMatched_ >= 0) {
+this.matchFrom_ = this.thePattern.mfrom;
+this.marks = pt.marks;
+this.gFlagto = this.matchFrom_ - 1;
+this.gFlags = s;
+return this.didMatch_ = true;
+}}
+return this.didMatch_ = false;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$.setCbits = Clazz.defineMethod (c$, "setCbits", 
+function (s, pt) {
+if (s === com.stevesoft.pat.Regex.lasts) {
+pt.cbits = com.stevesoft.pat.Regex.lastbs;
+return;
+}var bs =  new java.util.BitSet (s.length ());
+var qc = ' ';
+var setBit = false;
+for (var i = 0; i < s.length (); i++) {
+if (setBit) {
+bs.set (i);
+}var c = s.charAt (i);
+if (!setBit && c == '"') {
+qc = c;
+setBit = true;
+bs.set (i);
+} else if (!setBit && c == '\'') {
+qc = c;
+setBit = true;
+bs.set (i);
+} else if (setBit && c == qc) {
+setBit = false;
+} else if (setBit && c == '\\' && i + 1 < s.length ()) {
+i++;
+if (setBit) {
+bs.set (i);
+}}}
+pt.cbits = com.stevesoft.pat.Regex.lastbs = bs;
+com.stevesoft.pat.Regex.lasts = s;
+}, "com.stevesoft.pat.StringLike,com.stevesoft.pat.Pthings");
+Clazz.defineMethod (c$, "add", 
+function (p2) {
+if (this.p == null) {
+this.p = p2;
+} else {
+this.p.add (p2);
+p2 = this.p;
+}}, "com.stevesoft.pat.Pattern");
+Clazz.defineMethod (c$, "compileSP", 
+function (sp, mk) {
+if (sp.match ('[')) {
+sp.inc ();
+this.add (this.matchBracket (sp));
+} else if (sp.match ('|')) {
+if (this.or == null) {
+this.or =  new com.stevesoft.pat.Or ();
+}if (this.p == null) {
+this.p =  new com.stevesoft.pat.NullPattern ();
+}this.or.addOr (this.p);
+this.p = null;
+} else if (sp.incMatch ("(?<")) {
+var i = sp.getPatInt ();
+if (i == null) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("No int after (?<");
+}this.add ( new com.stevesoft.pat.Backup (i.intValue ()));
+if (!sp.match (')')) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("No ) after (?<");
+}} else if (sp.incMatch ("(?>")) {
+var i = sp.getPatInt ();
+if (i == null) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("No int after (?>");
+}this.add ( new com.stevesoft.pat.Backup (-i.intValue ()));
+if (!sp.match (')')) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("No ) after (?<");
+}} else if (sp.incMatch ("(?@")) {
+var op = sp.c;
+sp.inc ();
+var cl = sp.c;
+sp.inc ();
+if (!sp.match (')')) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("(?@ does not have closing paren");
+}this.add ( new com.stevesoft.pat.Group (op, cl));
+} else if (sp.incMatch ("(?#")) {
+while (!sp.match (')')) {
+sp.inc ();
+}
+} else if (sp.dontMatch && sp.c == 'w') {
+var b =  new com.stevesoft.pat.Bracket (false);
+b.addOr ( new com.stevesoft.pat.Range ('a', 'z'));
+b.addOr ( new com.stevesoft.pat.Range ('A', 'Z'));
+b.addOr ( new com.stevesoft.pat.Range ('0', '9'));
+b.addOr ( new com.stevesoft.pat.oneChar ('_'));
+this.add (b);
+} else if (sp.dontMatch && sp.c == 'G') {
+this.add ( new com.stevesoft.pat.BackG ());
+} else if (sp.dontMatch && sp.c == 's') {
+var b =  new com.stevesoft.pat.Bracket (false);
+b.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (32)));
+b.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (8), String.fromCharCode (10)));
+b.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (13)));
+this.add (b);
+} else if (sp.dontMatch && sp.c == 'd') {
+var digit =  new com.stevesoft.pat.Range ('0', '9');
+digit.printBrackets = true;
+this.add (digit);
+} else if (sp.dontMatch && sp.c == 'W') {
+var b =  new com.stevesoft.pat.Bracket (true);
+b.addOr ( new com.stevesoft.pat.Range ('a', 'z'));
+b.addOr ( new com.stevesoft.pat.Range ('A', 'Z'));
+b.addOr ( new com.stevesoft.pat.Range ('0', '9'));
+b.addOr ( new com.stevesoft.pat.oneChar ('_'));
+this.add (b);
+} else if (sp.dontMatch && sp.c == 'S') {
+var b =  new com.stevesoft.pat.Bracket (true);
+b.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (32)));
+b.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (8), String.fromCharCode (10)));
+b.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (13)));
+this.add (b);
+} else if (sp.dontMatch && sp.c == 'D') {
+var b =  new com.stevesoft.pat.Bracket (true);
+b.addOr ( new com.stevesoft.pat.Range ('0', '9'));
+this.add (b);
+} else if (sp.dontMatch && sp.c == 'B') {
+var r =  new com.stevesoft.pat.Regex (null, "");
+r._compile ("(?!\\b)", mk);
+this.add (r.thePattern);
+} else if (this.isOctalString (sp)) {
+var d = sp.c.charCodeAt (0) - 48;
+sp.inc ();
+d = 8 * d + sp.c.charCodeAt (0) - 48;
+var sp2 =  new com.stevesoft.pat.StrPos (sp);
+sp2.inc ();
+if (this.isOctalDigit (sp2, false)) {
+sp.inc ();
+d = 8 * d + sp.c.charCodeAt (0) - 48;
+}this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (d)));
+} else if (sp.dontMatch && sp.c >= '1' && sp.c <= '9') {
+var iv = sp.c.charCodeAt (0) - 48;
+var s2 =  new com.stevesoft.pat.StrPos (sp);
+s2.inc ();
+if (!s2.dontMatch && s2.c >= '0' && s2.c <= '9') {
+iv = 10 * iv + (s2.c.charCodeAt (0) - 48);
+sp.inc ();
+}this.add ( new com.stevesoft.pat.BackMatch (iv));
+} else if (sp.dontMatch && sp.c == 'b') {
+this.add ( new com.stevesoft.pat.Boundary ());
+} else if (sp.match ('\b')) {
+this.add ( new com.stevesoft.pat.Boundary ());
+} else if (sp.match ('$')) {
+this.add ( new com.stevesoft.pat.End (true));
+} else if (sp.dontMatch && sp.c == 'Z') {
+this.add ( new com.stevesoft.pat.End (false));
+} else if (sp.match ('.')) {
+this.add ( new com.stevesoft.pat.Any ());
+} else if (sp.incMatch ("(??")) {
+var sb =  new StringBuffer ();
+var sb2 =  new StringBuffer ();
+while (!sp.match (')') && !sp.match (':')) {
+sb.append (sp.c);
+sp.inc ();
+}
+if (sp.incMatch (":")) {
+while (!sp.match (')')) {
+sb2.append (sp.c);
+sp.inc ();
+}
+}var sbs = sb.toString ();
+if (Clazz.instanceOf (com.stevesoft.pat.Regex.validators.get (sbs), String)) {
+var pat = com.stevesoft.pat.Regex.validators.get (sbs);
+var r =  new com.stevesoft.pat.Regex (null, "");
+var rth =  new com.stevesoft.pat.Rthings (this);
+rth.noBackRefs = true;
+r._compile (pat, rth);
+this.add (r.thePattern);
+} else {
+var cm =  new com.stevesoft.pat.Custom (sb.toString ());
+if (cm.v != null) {
+var v2 = cm.v.arg (sb2.toString ());
+if (v2 != null) {
+v2.argsave = sb2.toString ();
+var p = cm.v.pattern;
+cm.v = v2;
+v2.pattern = p;
+}var r =  new com.stevesoft.pat.Regex (null, "");
+var rth =  new com.stevesoft.pat.Rthings (this);
+rth.noBackRefs = true;
+r._compile (cm.v.pattern, rth);
+cm.sub = r.thePattern;
+cm.sub.add ( new com.stevesoft.pat.CustomEndpoint (cm));
+cm.sub.setParent (cm);
+this.add (cm);
+}}} else if (sp.match ('(')) {
+mk.parenLevel++;
+var r =  new com.stevesoft.pat.Regex (null, "");
+sp.inc ();
+if (sp.incMatch ("?:")) {
+r.or =  new com.stevesoft.pat.Or ();
+} else if (sp.incMatch ("?=")) {
+r.or =  new com.stevesoft.pat.lookAhead (false);
+} else if (sp.incMatch ("?!")) {
+r.or =  new com.stevesoft.pat.lookAhead (true);
+} else if (sp.match ('?')) {
+sp.inc ();
+do {
+if (sp.c == 'i') {
+mk.ignoreCase = true;
+}if (sp.c == 'Q') {
+mk.dontMatchInQuotes = true;
+}if (sp.c == 'o') {
+mk.optimizeMe = true;
+}if (sp.c == 'g') {
+mk.gFlag = true;
+}if (sp.c == 's') {
+mk.sFlag = true;
+}if (sp.c == 'm') {
+mk.mFlag = true;
+}sp.inc ();
+} while (!sp.match (')') && !sp.$eos);
+r = null;
+mk.parenLevel--;
+if (sp.$eos) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Unclosed ()");
+}} else {
+r.or = mk.noBackRefs ?  new com.stevesoft.pat.Or () :  new com.stevesoft.pat.OrMark (mk.val++);
+}if (r != null) {
+this.add (r._compileSP (sp, mk));
+}} else if (sp.match ('^')) {
+this.add ( new com.stevesoft.pat.Start (true));
+} else if (sp.dontMatch && sp.c == 'A') {
+this.add ( new com.stevesoft.pat.Start (false));
+} else if (sp.match ('*')) {
+this.addMulti ( new com.stevesoft.pat.patInt (0),  new com.stevesoft.pat.patInf ());
+} else if (sp.match ('+')) {
+this.addMulti ( new com.stevesoft.pat.patInt (1),  new com.stevesoft.pat.patInf ());
+} else if (sp.match ('?')) {
+this.addMulti ( new com.stevesoft.pat.patInt (0),  new com.stevesoft.pat.patInt (1));
+} else if (sp.match ('{')) {
+var bad = false;
+var sp2 =  new com.stevesoft.pat.StrPos (sp);
+sp.inc ();
+var i1 = sp.getPatInt ();
+var i2 = null;
+if (sp.match ('}')) {
+i2 = i1;
+} else {
+if (!sp.match (',')) {
+bad = true;
+}sp.inc ();
+if (sp.match ('}')) {
+i2 =  new com.stevesoft.pat.patInf ();
+} else {
+i2 = sp.getPatInt ();
+}}if (i1 == null || i2 == null) {
+bad = true;
+}if (bad) {
+sp.dup (sp2);
+this.add ( new com.stevesoft.pat.oneChar (sp.c));
+} else {
+this.addMulti (i1, i2);
+}} else if (sp.escMatch ('x') && this.next2Hex (sp)) {
+sp.inc ();
+var d = this.getHexDigit (sp);
+sp.inc ();
+d = 16 * d + this.getHexDigit (sp);
+this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (d)));
+} else if (sp.escMatch ('c')) {
+sp.inc ();
+if (sp.c.charCodeAt (0) < com.stevesoft.pat.Ctrl.cmap.length) {
+this.add ( new com.stevesoft.pat.oneChar (com.stevesoft.pat.Ctrl.cmap[sp.c.charCodeAt (0)]));
+} else {
+this.add ( new com.stevesoft.pat.oneChar (sp.c));
+}} else if (sp.escMatch ('f')) {
+this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (12)));
+} else if (sp.escMatch ('a')) {
+this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (7)));
+} else if (sp.escMatch ('t')) {
+this.add ( new com.stevesoft.pat.oneChar ('\t'));
+} else if (sp.escMatch ('n')) {
+this.add ( new com.stevesoft.pat.oneChar ('\n'));
+} else if (sp.escMatch ('r')) {
+this.add ( new com.stevesoft.pat.oneChar ('\r'));
+} else if (sp.escMatch ('b')) {
+this.add ( new com.stevesoft.pat.oneChar ('\b'));
+} else if (sp.escMatch ('e')) {
+this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (27)));
+} else {
+this.add ( new com.stevesoft.pat.oneChar (sp.c));
+if (sp.match (')')) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Unmatched right paren in pattern");
+}}}, "com.stevesoft.pat.StrPos,com.stevesoft.pat.Rthings");
+Clazz.defineMethod (c$, "_compile", 
+($fz = function (pat, mk) {
+this.minMatch = null;
+this.sFlag = this.mFlag = this.ignoreCase = this.gFlag = false;
+var sp =  new com.stevesoft.pat.StrPos (pat, 0);
+this.thePattern = this._compileSP (sp, mk);
+this.pt.marks = null;
+return this.thePattern;
+}, $fz.isPrivate = true, $fz), "~S,com.stevesoft.pat.Rthings");
+Clazz.defineMethod (c$, "_compileSP", 
+function (sp, mk) {
+while (!(sp.$eos || (this.or != null && sp.match (')')))) {
+this.compileSP (sp, mk);
+sp.inc ();
+}
+if (sp.match (')')) {
+mk.parenLevel--;
+} else if (sp.$eos && mk.parenLevel != 0) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Unclosed Parenthesis! lvl=" + mk.parenLevel);
+}if (this.or != null) {
+if (this.p == null) {
+this.p =  new com.stevesoft.pat.NullPattern ();
+}this.or.addOr (this.p);
+return this.or;
+}return this.p == null ?  new com.stevesoft.pat.NullPattern () : this.p;
+}, "com.stevesoft.pat.StrPos,com.stevesoft.pat.Rthings");
+Clazz.defineMethod (c$, "addMulti", 
+function (i1, i2) {
+var last;
+var last2;
+for (last = this.p; last != null && last.next != null; last = last.next) {
+;}
+if (last == null || last === this.p) {
+last2 = null;
+} else {
+for (last2 = this.p; last2.next !== last; last2 = last2.next) {
+;}
+}if (Clazz.instanceOf (last, com.stevesoft.pat.Multi) && i1.intValue () == 0 && i2.intValue () == 1) {
+(last).matchFewest = true;
+} else if (Clazz.instanceOf (last, com.stevesoft.pat.FastMulti) && i1.intValue () == 0 && i2.intValue () == 1) {
+(last).matchFewest = true;
+} else if (Clazz.instanceOf (last, com.stevesoft.pat.DotMulti) && i1.intValue () == 0 && i2.intValue () == 1) {
+(last).matchFewest = true;
+} else if (Clazz.instanceOf (last, com.stevesoft.pat.Multi) || Clazz.instanceOf (last, com.stevesoft.pat.DotMulti) || Clazz.instanceOf (last, com.stevesoft.pat.FastMulti)) {
+throw  new com.stevesoft.pat.RegSyntax ("Syntax error.");
+} else if (last2 == null) {
+this.p = com.stevesoft.pat.Regex.mkMulti (i1, i2, this.p);
+} else {
+last2.next = com.stevesoft.pat.Regex.mkMulti (i1, i2, last);
+}}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt");
+c$.mkMulti = Clazz.defineMethod (c$, "mkMulti", 
+function (lo, hi, p) {
+if (Clazz.instanceOf (p, com.stevesoft.pat.Any) && p.next == null) {
+return  new com.stevesoft.pat.DotMulti (lo, hi);
+}return com.stevesoft.pat.RegOpt.safe4fm (p) ?  new com.stevesoft.pat.FastMulti (lo, hi, p) :  new com.stevesoft.pat.Multi (lo, hi, p);
+}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
+Clazz.defineMethod (c$, "matchBracket", 
+function (sp) {
+var ret;
+if (sp.match ('^')) {
+ret =  new com.stevesoft.pat.Bracket (true);
+sp.inc ();
+} else {
+ret =  new com.stevesoft.pat.Bracket (false);
+}if (sp.match (']')) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Unmatched []");
+}while (!sp.$eos && !sp.match (']')) {
+var s1 =  new com.stevesoft.pat.StrPos (sp);
+s1.inc ();
+var s1_ =  new com.stevesoft.pat.StrPos (s1);
+s1_.inc ();
+if (s1.match ('-') && !s1_.match (']')) {
+var s2 =  new com.stevesoft.pat.StrPos (s1);
+s2.inc ();
+if (!s2.$eos) {
+ret.addOr ( new com.stevesoft.pat.Range (sp.c, s2.c));
+}sp.inc ();
+sp.inc ();
+} else if (sp.escMatch ('Q')) {
+sp.inc ();
+while (!sp.escMatch ('E')) {
+ret.addOr ( new com.stevesoft.pat.oneChar (sp.c));
+sp.inc ();
+}
+} else if (sp.escMatch ('d')) {
+ret.addOr ( new com.stevesoft.pat.Range ('0', '9'));
+} else if (sp.escMatch ('s')) {
+ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (32)));
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (8), String.fromCharCode (10)));
+ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (13)));
+} else if (sp.escMatch ('w')) {
+ret.addOr ( new com.stevesoft.pat.Range ('a', 'z'));
+ret.addOr ( new com.stevesoft.pat.Range ('A', 'Z'));
+ret.addOr ( new com.stevesoft.pat.Range ('0', '9'));
+ret.addOr ( new com.stevesoft.pat.oneChar ('_'));
+} else if (sp.escMatch ('D')) {
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (0), String.fromCharCode (47)));
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (58), String.fromCharCode (65535)));
+} else if (sp.escMatch ('S')) {
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (0), String.fromCharCode (7)));
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (11), String.fromCharCode (12)));
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (14), String.fromCharCode (31)));
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (33), String.fromCharCode (65535)));
+} else if (sp.escMatch ('W')) {
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (0), String.fromCharCode (64)));
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (91), String.fromCharCode (94)));
+ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (96)));
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (123), String.fromCharCode (65535)));
+} else if (sp.escMatch ('x') && this.next2Hex (sp)) {
+sp.inc ();
+var d = this.getHexDigit (sp);
+sp.inc ();
+d = 16 * d + this.getHexDigit (sp);
+ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (d)));
+} else if (sp.escMatch ('a')) {
+ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (7)));
+} else if (sp.escMatch ('f')) {
+ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (12)));
+} else if (sp.escMatch ('e')) {
+ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (27)));
+} else if (sp.escMatch ('n')) {
+ret.addOr ( new com.stevesoft.pat.oneChar ('\n'));
+} else if (sp.escMatch ('t')) {
+ret.addOr ( new com.stevesoft.pat.oneChar ('\t'));
+} else if (sp.escMatch ('r')) {
+ret.addOr ( new com.stevesoft.pat.oneChar ('\r'));
+} else if (sp.escMatch ('c')) {
+sp.inc ();
+if (sp.c.charCodeAt (0) < com.stevesoft.pat.Ctrl.cmap.length) {
+ret.addOr ( new com.stevesoft.pat.oneChar (com.stevesoft.pat.Ctrl.cmap[sp.c.charCodeAt (0)]));
+} else {
+ret.addOr ( new com.stevesoft.pat.oneChar (sp.c));
+}} else if (this.isOctalString (sp)) {
+var d = sp.c.charCodeAt (0) - 48;
+sp.inc ();
+d = 8 * d + sp.c.charCodeAt (0) - 48;
+var sp2 =  new com.stevesoft.pat.StrPos (sp);
+sp2.inc ();
+if (this.isOctalDigit (sp2, false)) {
+sp.inc ();
+d = 8 * d + sp.c.charCodeAt (0) - 48;
+}ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (d)));
+} else {
+ret.addOr ( new com.stevesoft.pat.oneChar (sp.c));
+}sp.inc ();
+}
+return ret;
+}, "com.stevesoft.pat.StrPos");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+{
+var sb =  new StringBuffer ();
+if (this.esc != '\\') {
+sb.append ("(?e=");
+sb.append (this.esc);
+sb.append (")");
+}if (this.gFlag || this.mFlag || !com.stevesoft.pat.Regex.dotDoesntMatchCR || this.sFlag || this.ignoreCase || this.dontMatchInQuotes || this.optimized ()) {
+sb.append ("(?");
+if (this.ignoreCase) {
+sb.append ("i");
+}if (this.mFlag) {
+sb.append ("m");
+}if (this.sFlag || !com.stevesoft.pat.Regex.dotDoesntMatchCR) {
+sb.append ("s");
+}if (this.dontMatchInQuotes) {
+sb.append ("Q");
+}if (this.optimized ()) {
+sb.append ("o");
+}if (this.gFlag) {
+sb.append ("g");
+}sb.append (")");
+}var patstr = this.thePattern.toString ();
+if (this.esc != '\\') {
+patstr = com.stevesoft.pat.Regex.reEscape (patstr, '\\', this.esc);
+}sb.append (patstr);
+return sb.toString ();
+}});
+c$.reEscape = Clazz.defineMethod (c$, "reEscape", 
+function (s, oldEsc, newEsc) {
+if (oldEsc == newEsc) {
+return s;
+}var i;
+var sb =  new StringBuffer ();
+for (i = 0; i < s.length; i++) {
+if (s.charAt (i) == oldEsc && i + 1 < s.length) {
+if (s.charAt (i + 1) == oldEsc) {
+sb.append (oldEsc);
+} else {
+sb.append (newEsc);
+sb.append (s.charAt (i + 1));
+}i++;
+} else if (s.charAt (i) == newEsc) {
+sb.append (newEsc);
+sb.append (newEsc);
+} else {
+sb.append (s.charAt (i));
+}}
+return sb.toString ();
+}, "~S,~S,~S");
+Clazz.defineMethod (c$, "accept", 
+function (dir, s) {
+return this.search (s);
+}, "java.io.File,~S");
+c$.version = Clazz.defineMethod (c$, "version", 
+function () {
+return "lgpl release 1.5.3";
+});
+Clazz.defineMethod (c$, "optimize", 
+function () {
+if (this.optimized () || this.thePattern == null) {
+return;
+}this.minMatch =  new com.stevesoft.pat.patInt (0);
+this.thePattern = com.stevesoft.pat.RegOpt.opt (this.thePattern, this.ignoreCase, this.dontMatchInQuotes);
+this.skipper = com.stevesoft.pat.Skip.findSkipRegex (this);
+return;
+});
+Clazz.defineMethod (c$, "optimized", 
+function () {
+return this.minMatch != null;
+});
+c$.perlCode = Clazz.defineMethod (c$, "perlCode", 
+function (s) {
+return com.stevesoft.pat.parsePerl.parse (s);
+}, "~S");
+Clazz.defineMethod (c$, "isLiteral", 
+function () {
+var x = this.thePattern;
+while (x != null) {
+if (Clazz.instanceOf (x, com.stevesoft.pat.oneChar)) {
+;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Skipped)) {
+;} else {
+return false;
+}x = x.next;
+}
+return true;
+});
+Clazz.defineMethod (c$, "countMinChars", 
+function () {
+return this.thePattern.countMinChars ();
+});
+Clazz.defineMethod (c$, "countMaxChars", 
+function () {
+return this.thePattern.countMaxChars ();
+});
+Clazz.defineMethod (c$, "isHexDigit", 
+function (sp) {
+var r = !sp.$eos && !sp.dontMatch && ((sp.c >= '0' && sp.c <= '9') || (sp.c >= 'a' && sp.c <= 'f') || (sp.c >= 'A' && sp.c <= 'F'));
+return r;
+}, "com.stevesoft.pat.StrPos");
+Clazz.defineMethod (c$, "isOctalDigit", 
+function (sp, first) {
+var r = !sp.$eos && !( new Boolean (first ^ sp.dontMatch).valueOf ()) && sp.c >= '0' && sp.c <= '7';
+return r;
+}, "com.stevesoft.pat.StrPos,~B");
+Clazz.defineMethod (c$, "getHexDigit", 
+function (sp) {
+if (sp.c >= '0' && sp.c <= '9') {
+return sp.c.charCodeAt (0) - 48;
+}if (sp.c >= 'a' && sp.c <= 'f') {
+return sp.c.charCodeAt (0) - 97 + 10;
+}return sp.c.charCodeAt (0) - 65 + 10;
+}, "com.stevesoft.pat.StrPos");
+Clazz.defineMethod (c$, "next2Hex", 
+function (sp) {
+var sp2 =  new com.stevesoft.pat.StrPos (sp);
+sp2.inc ();
+if (!this.isHexDigit (sp2)) {
+return false;
+}sp2.inc ();
+if (!this.isHexDigit (sp2)) {
+return false;
+}return true;
+}, "com.stevesoft.pat.StrPos");
+Clazz.defineMethod (c$, "isOctalString", 
+function (sp) {
+if (!this.isOctalDigit (sp, true)) {
+return false;
+}var sp2 =  new com.stevesoft.pat.StrPos (sp);
+sp2.inc ();
+if (!this.isOctalDigit (sp2, false)) {
+return false;
+}return true;
+}, "com.stevesoft.pat.StrPos");
+Clazz.defineStatics (c$,
+"BackRefOffset", 1);
+c$.none = c$.prototype.none =  new com.stevesoft.pat.NoPattern ();
+c$.validators = c$.prototype.validators =  new java.util.Hashtable ();
+{
+com.stevesoft.pat.Regex.defineV ("p", "(?>1)",  new com.stevesoft.pat.UnicodePunct ());
+com.stevesoft.pat.Regex.defineV ("P", "(?>1)",  new com.stevesoft.pat.NUnicodePunct ());
+com.stevesoft.pat.Regex.defineV ("s", "(?>1)",  new com.stevesoft.pat.UnicodeWhite ());
+com.stevesoft.pat.Regex.defineV ("S", "(?>1)",  new com.stevesoft.pat.NUnicodeWhite ());
+com.stevesoft.pat.Regex.defineV ("w", "(?>1)",  new com.stevesoft.pat.UnicodeW ());
+com.stevesoft.pat.Regex.defineV ("W", "(?>1)",  new com.stevesoft.pat.NUnicodeW ());
+com.stevesoft.pat.Regex.defineV ("d", "(?>1)",  new com.stevesoft.pat.UnicodeDigit ());
+com.stevesoft.pat.Regex.defineV ("D", "(?>1)",  new com.stevesoft.pat.NUnicodeDigit ());
+com.stevesoft.pat.Regex.defineV ("m", "(?>1)",  new com.stevesoft.pat.UnicodeMath ());
+com.stevesoft.pat.Regex.defineV ("M", "(?>1)",  new com.stevesoft.pat.NUnicodeMath ());
+com.stevesoft.pat.Regex.defineV ("c", "(?>1)",  new com.stevesoft.pat.UnicodeCurrency ());
+com.stevesoft.pat.Regex.defineV ("C", "(?>1)",  new com.stevesoft.pat.NUnicodeCurrency ());
+com.stevesoft.pat.Regex.defineV ("a", "(?>1)",  new com.stevesoft.pat.UnicodeAlpha ());
+com.stevesoft.pat.Regex.defineV ("A", "(?>1)",  new com.stevesoft.pat.NUnicodeAlpha ());
+com.stevesoft.pat.Regex.defineV ("uc", "(?>1)",  new com.stevesoft.pat.UnicodeUpper ());
+com.stevesoft.pat.Regex.defineV ("lc", "(?>1)",  new com.stevesoft.pat.UnicodeLower ());
+}Clazz.defineStatics (c$,
+"defaultMFlag", false,
+"dotDoesntMatchCR", true,
+"lasts", null,
+"lastbs", null,
+"back_slash", '\\');
+});
index 2639d15..613abb5 100644 (file)
Binary files a/bin/com/stevesoft/pat/RegexReader.class and b/bin/com/stevesoft/pat/RegexReader.class differ
index 301d8e7..d767d80 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["java.io.Reader", "com.stevesoft.pat.PartialBuffer", "$.RBuffer", "java.lang.StringBuffer"], "com.stevesoft.pat.RegexReader", ["com.stevesoft.pat.StringBufferLike", "com.stevesoft.pat.wrap.StringBufferWrap"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.rb = null;\r
-this.wrap = null;\r
-this.moreToRead = true;\r
-this.r = null;\r
-this.rp = null;\r
-this.nmax = 2048;\r
-this.max_lines = 2;\r
-this.EOLchar = '\n';\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "RegexReader", java.io.Reader);\r
-Clazz.prepareFields (c$, function () {\r
-this.rb =  new com.stevesoft.pat.RBuffer ( new StringBuffer ());\r
-this.wrap =  new com.stevesoft.pat.PartialBuffer (this.rb.sb);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (rex, r) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.RegexReader, []);\r
-this.r = r;\r
-this.rp = rex.getReplacer ();\r
-}, "com.stevesoft.pat.Regex,java.io.Reader");\r
-Clazz.makeConstructor (c$, \r
-function (tex, r) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.RegexReader, []);\r
-this.r = r;\r
-this.rp = tex.getReplacer ();\r
-}, "com.stevesoft.pat.Transformer,java.io.Reader");\r
-Clazz.defineMethod (c$, "reset", \r
-function () {\r
-this.r.reset ();\r
-this.rb =  new com.stevesoft.pat.RBuffer ( new StringBuffer ());\r
-this.wrap =  new com.stevesoft.pat.PartialBuffer (this.rb.sb);\r
-this.moreToRead = true;\r
-});\r
-Clazz.defineMethod (c$, "readData", \r
-function () {\r
-var c;\r
-var n = 0;\r
-while ((c = this.r.read ()) != -1) {\r
-this.rb.sb.append (String.fromCharCode (c));\r
-if (n++ > this.nmax) {\r
-break;\r
-}}\r
-if (c == -1 && n == 0) {\r
-this.moreToRead = false;\r
-this.wrap.allowOverRun = false;\r
-}});\r
-Clazz.defineMethod (c$, "getMoreData", \r
-function () {\r
-while (this.rb.pos >= this.rb.epos) {\r
-this.wrap.overRun = false;\r
-if (this.rb.next != null) {\r
-this.rb = this.rb.next;\r
-} else if (this.rb.done) {\r
-break;\r
-} else if (this.rb.epos >= this.rb.sb.length () && this.rb.epos > this.nmax) {\r
-this.rb.pos = 1;\r
-this.rb.epos = 1;\r
-this.rb.sb.setLength (1);\r
-this.readData ();\r
-} else if (this.rb.epos >= this.rb.sb.length () && this.moreToRead) {\r
-this.readData ();\r
-} else if (this.rp.getRegex ().matchAtLike (this.wrap, this.rb.epos)) {\r
-if (this.wrap.overRun) {\r
-this.readData ();\r
-} else {\r
-var sbw =  new com.stevesoft.pat.wrap.StringBufferWrap ();\r
-var sbl =  new com.stevesoft.pat.StringBufferLike (sbw);\r
-var rex = this.rp.getRegex ();\r
-var npos = rex.matchedTo ();\r
-this.rp.setBuffer (sbl);\r
-this.rp.setSource (this.wrap);\r
-this.rp.setPos (npos);\r
-this.rp.apply (rex, rex.getReplaceRule ());\r
-var opos = this.rb.epos;\r
-var rb2 =  new com.stevesoft.pat.RBuffer (sbw.unwrap ());\r
-rb2.epos = rb2.sb.length ();\r
-var rb3 =  new com.stevesoft.pat.RBuffer (this.rb.sb);\r
-this.rb.next = rb2;\r
-rb2.next = rb3;\r
-if (npos == opos) {\r
-rb3.epos = npos + 1;\r
-if (rb3.epos > rb3.sb.length ()) {\r
-if (this.rb.pos >= this.rb.epos) {\r
-this.rb = this.rb.next;\r
-}rb3.pos = rb3.epos = 0;\r
-rb3.done = true;\r
-}rb3.pos = npos;\r
-} else {\r
-rb3.pos = rb3.epos = npos;\r
-}}} else {\r
-if (this.wrap.overRun) {\r
-this.readData ();\r
-} else if (this.rb.epos < this.rb.sb.length ()) {\r
-this.rb.epos++;\r
-} else {\r
-break;\r
-}}}\r
-});\r
-Clazz.defineMethod (c$, "read", \r
-function () {\r
-if (this.rb.pos >= this.rb.epos) {\r
-this.getMoreData ();\r
-if (this.rb.pos >= this.rb.epos) {\r
-return -1;\r
-}}return this.rb.sb.charAt (this.rb.pos++);\r
-});\r
-Clazz.defineMethod (c$, "read", \r
-function (buf, off, len) {\r
-var c = -1;\r
-var end = off + len;\r
-for (var i = off; i < end; i++) {\r
-c = this.read ();\r
-if (c < 0) {\r
-if (i == off) {\r
-return -1;\r
-}return i - off;\r
-}buf[i] = String.fromCharCode (c);\r
-}\r
-return len;\r
-}, "~A,~N,~N");\r
-Clazz.defineMethod (c$, "close", \r
-function () {\r
-this.r.close ();\r
-});\r
-Clazz.overrideMethod (c$, "markSupported", \r
-function () {\r
-return false;\r
-});\r
-Clazz.defineMethod (c$, "getBufferSize", \r
-function () {\r
-return this.nmax;\r
-});\r
-Clazz.defineMethod (c$, "setBufferSize", \r
-function (n) {\r
-this.nmax = n;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getMaxLines", \r
-function () {\r
-return this.max_lines;\r
-});\r
-Clazz.defineMethod (c$, "setMaxLines", \r
-function (ml) {\r
-this.max_lines = ml;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getEOLchar", \r
-function () {\r
-return this.EOLchar;\r
-});\r
-Clazz.defineMethod (c$, "setEOLchar", \r
-function (c) {\r
-this.EOLchar = c;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "skip", \r
-function (d) {\r
-var n = 0;\r
-while (n < d && this.read () != -1) {\r
-n++;\r
-}\r
-return n;\r
-}, "~N");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["java.io.Reader", "com.stevesoft.pat.PartialBuffer", "$.RBuffer", "java.lang.StringBuffer"], "com.stevesoft.pat.RegexReader", ["com.stevesoft.pat.StringBufferLike", "com.stevesoft.pat.wrap.StringBufferWrap"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.rb = null;
+this.wrap = null;
+this.moreToRead = true;
+this.r = null;
+this.rp = null;
+this.nmax = 2048;
+this.max_lines = 2;
+this.EOLchar = '\n';
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "RegexReader", java.io.Reader);
+Clazz.prepareFields (c$, function () {
+this.rb =  new com.stevesoft.pat.RBuffer ( new StringBuffer ());
+this.wrap =  new com.stevesoft.pat.PartialBuffer (this.rb.sb);
+});
+Clazz.makeConstructor (c$, 
+function (rex, r) {
+Clazz.superConstructor (this, com.stevesoft.pat.RegexReader, []);
+this.r = r;
+this.rp = rex.getReplacer ();
+}, "com.stevesoft.pat.Regex,java.io.Reader");
+Clazz.makeConstructor (c$, 
+function (tex, r) {
+Clazz.superConstructor (this, com.stevesoft.pat.RegexReader, []);
+this.r = r;
+this.rp = tex.getReplacer ();
+}, "com.stevesoft.pat.Transformer,java.io.Reader");
+Clazz.defineMethod (c$, "reset", 
+function () {
+this.r.reset ();
+this.rb =  new com.stevesoft.pat.RBuffer ( new StringBuffer ());
+this.wrap =  new com.stevesoft.pat.PartialBuffer (this.rb.sb);
+this.moreToRead = true;
+});
+Clazz.defineMethod (c$, "readData", 
+function () {
+var c;
+var n = 0;
+while ((c = this.r.read ()) != -1) {
+this.rb.sb.append (String.fromCharCode (c));
+if (n++ > this.nmax) {
+break;
+}}
+if (c == -1 && n == 0) {
+this.moreToRead = false;
+this.wrap.allowOverRun = false;
+}});
+Clazz.defineMethod (c$, "getMoreData", 
+function () {
+while (this.rb.pos >= this.rb.epos) {
+this.wrap.overRun = false;
+if (this.rb.next != null) {
+this.rb = this.rb.next;
+} else if (this.rb.done) {
+break;
+} else if (this.rb.epos >= this.rb.sb.length () && this.rb.epos > this.nmax) {
+this.rb.pos = 1;
+this.rb.epos = 1;
+this.rb.sb.setLength (1);
+this.readData ();
+} else if (this.rb.epos >= this.rb.sb.length () && this.moreToRead) {
+this.readData ();
+} else if (this.rp.getRegex ().matchAtLike (this.wrap, this.rb.epos)) {
+if (this.wrap.overRun) {
+this.readData ();
+} else {
+var sbw =  new com.stevesoft.pat.wrap.StringBufferWrap ();
+var sbl =  new com.stevesoft.pat.StringBufferLike (sbw);
+var rex = this.rp.getRegex ();
+var npos = rex.matchedTo ();
+this.rp.setBuffer (sbl);
+this.rp.setSource (this.wrap);
+this.rp.setPos (npos);
+this.rp.apply (rex, rex.getReplaceRule ());
+var opos = this.rb.epos;
+var rb2 =  new com.stevesoft.pat.RBuffer (sbw.unwrap ());
+rb2.epos = rb2.sb.length ();
+var rb3 =  new com.stevesoft.pat.RBuffer (this.rb.sb);
+this.rb.next = rb2;
+rb2.next = rb3;
+if (npos == opos) {
+rb3.epos = npos + 1;
+if (rb3.epos > rb3.sb.length ()) {
+if (this.rb.pos >= this.rb.epos) {
+this.rb = this.rb.next;
+}rb3.pos = rb3.epos = 0;
+rb3.done = true;
+}rb3.pos = npos;
+} else {
+rb3.pos = rb3.epos = npos;
+}}} else {
+if (this.wrap.overRun) {
+this.readData ();
+} else if (this.rb.epos < this.rb.sb.length ()) {
+this.rb.epos++;
+} else {
+break;
+}}}
+});
+Clazz.defineMethod (c$, "read", 
+function () {
+if (this.rb.pos >= this.rb.epos) {
+this.getMoreData ();
+if (this.rb.pos >= this.rb.epos) {
+return -1;
+}}return this.rb.sb.charAt (this.rb.pos++);
+});
+Clazz.defineMethod (c$, "read", 
+function (buf, off, len) {
+var c = -1;
+var end = off + len;
+for (var i = off; i < end; i++) {
+c = this.read ();
+if (c < 0) {
+if (i == off) {
+return -1;
+}return i - off;
+}buf[i] = String.fromCharCode (c);
+}
+return len;
+}, "~A,~N,~N");
+Clazz.defineMethod (c$, "close", 
+function () {
+this.r.close ();
+});
+Clazz.overrideMethod (c$, "markSupported", 
+function () {
+return false;
+});
+Clazz.defineMethod (c$, "getBufferSize", 
+function () {
+return this.nmax;
+});
+Clazz.defineMethod (c$, "setBufferSize", 
+function (n) {
+this.nmax = n;
+}, "~N");
+Clazz.defineMethod (c$, "getMaxLines", 
+function () {
+return this.max_lines;
+});
+Clazz.defineMethod (c$, "setMaxLines", 
+function (ml) {
+this.max_lines = ml;
+}, "~N");
+Clazz.defineMethod (c$, "getEOLchar", 
+function () {
+return this.EOLchar;
+});
+Clazz.defineMethod (c$, "setEOLchar", 
+function (c) {
+this.EOLchar = c;
+}, "~S");
+Clazz.overrideMethod (c$, "skip", 
+function (d) {
+var n = 0;
+while (n < d && this.read () != -1) {
+n++;
+}
+return n;
+}, "~N");
+});
index 08cc754..c5774f3 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["java.util.Enumeration", "$.Vector"], "com.stevesoft.pat.RegexTokenizer", ["com.stevesoft.pat.Regex"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.toParse = null;\r
-this.r = null;\r
-this.count = 0;\r
-this.v = null;\r
-this.vi = null;\r
-this.pos = 0;\r
-this.offset = 1;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "RegexTokenizer", null, java.util.Enumeration);\r
-Clazz.prepareFields (c$, function () {\r
-this.v =  new java.util.Vector ();\r
-this.vi =  new java.util.Vector ();\r
-});\r
-Clazz.defineMethod (c$, "getMore", \r
-function () {\r
-var s = this.r.right ();\r
-if (this.r.searchFrom (this.toParse, this.pos)) {\r
-this.v.addElement (this.r.left ().substring (this.pos));\r
-this.vi.addElement ( new Integer (this.r.matchFrom () + this.r.charsMatched ()));\r
-for (var i = 0; i < this.r.numSubs (); i++) {\r
-if (this.r.substring () != null) {\r
-this.v.addElement (this.r.substringI (i + this.offset));\r
-this.vi.addElement ( new Integer (this.r.matchFromI (i + this.offset) + this.r.charsMatchedI (i + this.offset)));\r
-}}\r
-this.pos = this.r.matchFrom () + this.r.charsMatched ();\r
-} else if (s != null) {\r
-this.v.addElement (s);\r
-}});\r
-Clazz.makeConstructor (c$, \r
-function (txt, ptrn) {\r
-this.toParse = txt;\r
-this.r =  new com.stevesoft.pat.Regex (ptrn, "");\r
-this.offset = com.stevesoft.pat.Regex.BackRefOffset;\r
-this.getMore ();\r
-}, "~S,~S");\r
-Clazz.makeConstructor (c$, \r
-function (txt, r) {\r
-this.toParse = txt;\r
-this.r = r;\r
-this.offset = com.stevesoft.pat.Regex.BackRefOffset;\r
-this.getMore ();\r
-}, "~S,com.stevesoft.pat.Regex");\r
-Clazz.overrideMethod (c$, "nextElement", \r
-function () {\r
-if (this.count >= this.v.size ()) {\r
-this.getMore ();\r
-}return this.v.elementAt (this.count++);\r
-});\r
-Clazz.defineMethod (c$, "nextToken", \r
-function () {\r
-return this.nextElement ();\r
-});\r
-Clazz.defineMethod (c$, "nextToken", \r
-function (newpat) {\r
-try {\r
-this.r.compile (newpat);\r
-} catch (r_) {\r
-if (Clazz.exceptionOf (r_, com.stevesoft.pat.RegSyntax)) {\r
-} else {\r
-throw r_;\r
-}\r
-}\r
-return this.nextToken (this.r);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "nextToken", \r
-function (nr) {\r
-this.r = nr;\r
-if (this.vi.size () > this.count) {\r
-this.pos = (this.vi.elementAt (this.count)).intValue ();\r
-this.v.setSize (this.count);\r
-this.vi.setSize (this.count);\r
-}this.getMore ();\r
-return this.nextToken ();\r
-}, "com.stevesoft.pat.Regex");\r
-Clazz.overrideMethod (c$, "hasMoreElements", \r
-function () {\r
-if (this.count >= this.v.size ()) {\r
-this.getMore ();\r
-}return this.count < this.v.size ();\r
-});\r
-Clazz.defineMethod (c$, "hasMoreTokens", \r
-function () {\r
-return this.hasMoreElements ();\r
-});\r
-Clazz.defineMethod (c$, "countTokens", \r
-function () {\r
-var _count = this.count;\r
-while (this.hasMoreTokens ()) {\r
-this.nextToken ();\r
-}\r
-this.count = _count;\r
-return this.v.size () - this.count;\r
-});\r
-Clazz.defineMethod (c$, "allTokens", \r
-function () {\r
-this.countTokens ();\r
-var ret =  new Array (this.v.size ());\r
-this.v.copyInto (ret);\r
-return ret;\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["java.util.Enumeration", "$.Vector"], "com.stevesoft.pat.RegexTokenizer", ["com.stevesoft.pat.Regex"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.toParse = null;
+this.r = null;
+this.count = 0;
+this.v = null;
+this.vi = null;
+this.pos = 0;
+this.offset = 1;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "RegexTokenizer", null, java.util.Enumeration);
+Clazz.prepareFields (c$, function () {
+this.v =  new java.util.Vector ();
+this.vi =  new java.util.Vector ();
+});
+Clazz.defineMethod (c$, "getMore", 
+function () {
+var s = this.r.right ();
+if (this.r.searchFrom (this.toParse, this.pos)) {
+this.v.addElement (this.r.left ().substring (this.pos));
+this.vi.addElement ( new Integer (this.r.matchFrom () + this.r.charsMatched ()));
+for (var i = 0; i < this.r.numSubs (); i++) {
+if (this.r.substring () != null) {
+this.v.addElement (this.r.substringI (i + this.offset));
+this.vi.addElement ( new Integer (this.r.matchFromI (i + this.offset) + this.r.charsMatchedI (i + this.offset)));
+}}
+this.pos = this.r.matchFrom () + this.r.charsMatched ();
+} else if (s != null) {
+this.v.addElement (s);
+}});
+Clazz.makeConstructor (c$, 
+function (txt, ptrn) {
+this.toParse = txt;
+this.r =  new com.stevesoft.pat.Regex (ptrn, "");
+this.offset = com.stevesoft.pat.Regex.BackRefOffset;
+this.getMore ();
+}, "~S,~S");
+Clazz.makeConstructor (c$, 
+function (txt, r) {
+this.toParse = txt;
+this.r = r;
+this.offset = com.stevesoft.pat.Regex.BackRefOffset;
+this.getMore ();
+}, "~S,com.stevesoft.pat.Regex");
+Clazz.overrideMethod (c$, "nextElement", 
+function () {
+if (this.count >= this.v.size ()) {
+this.getMore ();
+}return this.v.elementAt (this.count++);
+});
+Clazz.defineMethod (c$, "nextToken", 
+function () {
+return this.nextElement ();
+});
+Clazz.defineMethod (c$, "nextToken", 
+function (newpat) {
+try {
+this.r.compile (newpat);
+} catch (r_) {
+if (Clazz.exceptionOf (r_, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw r_;
+}
+}
+return this.nextToken (this.r);
+}, "~S");
+Clazz.defineMethod (c$, "nextToken", 
+function (nr) {
+this.r = nr;
+if (this.vi.size () > this.count) {
+this.pos = (this.vi.elementAt (this.count)).intValue ();
+this.v.setSize (this.count);
+this.vi.setSize (this.count);
+}this.getMore ();
+return this.nextToken ();
+}, "com.stevesoft.pat.Regex");
+Clazz.overrideMethod (c$, "hasMoreElements", 
+function () {
+if (this.count >= this.v.size ()) {
+this.getMore ();
+}return this.count < this.v.size ();
+});
+Clazz.defineMethod (c$, "hasMoreTokens", 
+function () {
+return this.hasMoreElements ();
+});
+Clazz.defineMethod (c$, "countTokens", 
+function () {
+var _count = this.count;
+while (this.hasMoreTokens ()) {
+this.nextToken ();
+}
+this.count = _count;
+return this.v.size () - this.count;
+});
+Clazz.defineMethod (c$, "allTokens", 
+function () {
+this.countTokens ();
+var ret =  new Array (this.v.size ());
+this.v.copyInto (ret);
+return ret;
+});
+});
index 36bb465..e4e7fdd 100644 (file)
Binary files a/bin/com/stevesoft/pat/RegexWriter.class and b/bin/com/stevesoft/pat/RegexWriter.class differ
index 817515b..f1be88e 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["java.io.Writer", "com.stevesoft.pat.PartialBuffer", "java.lang.StringBuffer"], "com.stevesoft.pat.RegexWriter", ["com.stevesoft.pat.StringBufferLike", "com.stevesoft.pat.wrap.WriterWrap"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.repr = null;\r
-this.w = null;\r
-this.ww = null;\r
-this.sb = null;\r
-this.wrap = null;\r
-this.pos = 0;\r
-this.epos = 0;\r
-this.interval = 128;\r
-this.bufferSize = 2048;\r
-this.EOLchar = '\n';\r
-this.max_lines = 2;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "RegexWriter", java.io.Writer);\r
-Clazz.prepareFields (c$, function () {\r
-this.sb =  new StringBuffer ();\r
-this.wrap =  new com.stevesoft.pat.PartialBuffer (this.sb);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (t, w) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.RegexWriter, []);\r
-this.w = w;\r
-this.ww =  new com.stevesoft.pat.wrap.WriterWrap (w);\r
-this.repr = t.getReplacer ();\r
-this.repr.setBuffer ( new com.stevesoft.pat.StringBufferLike (this.ww));\r
-this.repr.setSource (this.wrap);\r
-}, "com.stevesoft.pat.Transformer,java.io.Writer");\r
-Clazz.makeConstructor (c$, \r
-function (r, w) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.RegexWriter, []);\r
-this.w = w;\r
-this.ww =  new com.stevesoft.pat.wrap.WriterWrap (w);\r
-this.repr = r.getReplacer ();\r
-this.repr.setBuffer ( new com.stevesoft.pat.StringBufferLike (this.ww));\r
-this.repr.setSource (this.wrap);\r
-}, "com.stevesoft.pat.Regex,java.io.Writer");\r
-Clazz.defineMethod (c$, "getEOLchar", \r
-function () {\r
-return this.EOLchar;\r
-});\r
-Clazz.defineMethod (c$, "setEOLchar", \r
-function (c) {\r
-this.EOLchar = c;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getMaxLines", \r
-function () {\r
-return this.max_lines;\r
-});\r
-Clazz.defineMethod (c$, "setMaxLines", \r
-function (ml) {\r
-this.max_lines = ml;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "write", \r
-function () {\r
-var rex = this.repr.getRegex ();\r
-var eposOld = this.epos;\r
-if (rex.matchAtLike (this.wrap, this.epos) && !this.wrap.overRun) {\r
-while (this.pos < this.epos) {\r
-this.w.write (this.sb.charCodeAt (this.pos++));\r
-}\r
-var to = rex.matchedTo ();\r
-this.repr.setPos (to);\r
-this.repr.apply (rex, rex.getReplaceRule ());\r
-this.epos = this.pos = to;\r
-if (this.epos == eposOld && this.epos < this.sb.length ()) {\r
-this.epos++;\r
-}} else if (!this.wrap.overRun && this.epos < this.sb.length ()) {\r
-this.epos++;\r
-}while (this.pos < this.epos) {\r
-this.w.write (this.sb.charCodeAt (this.pos++));\r
-}\r
-if (this.epos == this.sb.length ()) {\r
-this.sb.setLength (1);\r
-this.pos = this.epos = 1;\r
-} else if (this.pos > this.bufferSize) {\r
-for (var i = this.bufferSize; i < this.sb.length (); i++) {\r
-this.sb.setCharAt (i - this.bufferSize, this.sb.charAt (i));\r
-}\r
-this.pos -= this.bufferSize;\r
-this.epos -= this.bufferSize;\r
-this.sb.setLength (this.sb.length () - this.bufferSize);\r
-}});\r
-Clazz.defineMethod (c$, "write", \r
-function (ca, b, n) {\r
-var m = b + n;\r
-for (var i = b; i < m; i++) {\r
-this.sb.append (ca[i]);\r
-if (this.sb.length () % this.interval == this.interval - 1) {\r
-this.wrap.overRun = false;\r
-while (this.epos + this.interval < this.sb.length () && !this.wrap.overRun) {\r
-this.write ();\r
-}\r
-}}\r
-}, "~A,~N,~N");\r
-Clazz.overrideMethod (c$, "flush", \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "close", \r
-function () {\r
-this.wrap.allowOverRun = false;\r
-this.wrap.overRun = false;\r
-while (this.epos < this.sb.length ()) {\r
-this.write ();\r
-}\r
-this.write ();\r
-this.w.close ();\r
-});\r
-Clazz.defineMethod (c$, "length", \r
-function () {\r
-return this.sb.length ();\r
-});\r
-Clazz.defineMethod (c$, "charAt", \r
-function (i) {\r
-return this.sb.charAt (i);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setInterval", \r
-function (i) {\r
-this.interval = i;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getInterval", \r
-function () {\r
-return this.interval;\r
-});\r
-Clazz.defineMethod (c$, "getBufferSize", \r
-function () {\r
-return this.bufferSize;\r
-});\r
-Clazz.defineMethod (c$, "setBufferSize", \r
-function (i) {\r
-this.bufferSize = i;\r
-}, "~N");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["java.io.Writer", "com.stevesoft.pat.PartialBuffer", "java.lang.StringBuffer"], "com.stevesoft.pat.RegexWriter", ["com.stevesoft.pat.StringBufferLike", "com.stevesoft.pat.wrap.WriterWrap"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.repr = null;
+this.w = null;
+this.ww = null;
+this.sb = null;
+this.wrap = null;
+this.pos = 0;
+this.epos = 0;
+this.interval = 128;
+this.bufferSize = 2048;
+this.EOLchar = '\n';
+this.max_lines = 2;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "RegexWriter", java.io.Writer);
+Clazz.prepareFields (c$, function () {
+this.sb =  new StringBuffer ();
+this.wrap =  new com.stevesoft.pat.PartialBuffer (this.sb);
+});
+Clazz.makeConstructor (c$, 
+function (t, w) {
+Clazz.superConstructor (this, com.stevesoft.pat.RegexWriter, []);
+this.w = w;
+this.ww =  new com.stevesoft.pat.wrap.WriterWrap (w);
+this.repr = t.getReplacer ();
+this.repr.setBuffer ( new com.stevesoft.pat.StringBufferLike (this.ww));
+this.repr.setSource (this.wrap);
+}, "com.stevesoft.pat.Transformer,java.io.Writer");
+Clazz.makeConstructor (c$, 
+function (r, w) {
+Clazz.superConstructor (this, com.stevesoft.pat.RegexWriter, []);
+this.w = w;
+this.ww =  new com.stevesoft.pat.wrap.WriterWrap (w);
+this.repr = r.getReplacer ();
+this.repr.setBuffer ( new com.stevesoft.pat.StringBufferLike (this.ww));
+this.repr.setSource (this.wrap);
+}, "com.stevesoft.pat.Regex,java.io.Writer");
+Clazz.defineMethod (c$, "getEOLchar", 
+function () {
+return this.EOLchar;
+});
+Clazz.defineMethod (c$, "setEOLchar", 
+function (c) {
+this.EOLchar = c;
+}, "~S");
+Clazz.defineMethod (c$, "getMaxLines", 
+function () {
+return this.max_lines;
+});
+Clazz.defineMethod (c$, "setMaxLines", 
+function (ml) {
+this.max_lines = ml;
+}, "~N");
+Clazz.defineMethod (c$, "write", 
+function () {
+var rex = this.repr.getRegex ();
+var eposOld = this.epos;
+if (rex.matchAtLike (this.wrap, this.epos) && !this.wrap.overRun) {
+while (this.pos < this.epos) {
+this.w.write (this.sb.charCodeAt (this.pos++));
+}
+var to = rex.matchedTo ();
+this.repr.setPos (to);
+this.repr.apply (rex, rex.getReplaceRule ());
+this.epos = this.pos = to;
+if (this.epos == eposOld && this.epos < this.sb.length ()) {
+this.epos++;
+}} else if (!this.wrap.overRun && this.epos < this.sb.length ()) {
+this.epos++;
+}while (this.pos < this.epos) {
+this.w.write (this.sb.charCodeAt (this.pos++));
+}
+if (this.epos == this.sb.length ()) {
+this.sb.setLength (1);
+this.pos = this.epos = 1;
+} else if (this.pos > this.bufferSize) {
+for (var i = this.bufferSize; i < this.sb.length (); i++) {
+this.sb.setCharAt (i - this.bufferSize, this.sb.charAt (i));
+}
+this.pos -= this.bufferSize;
+this.epos -= this.bufferSize;
+this.sb.setLength (this.sb.length () - this.bufferSize);
+}});
+Clazz.defineMethod (c$, "write", 
+function (ca, b, n) {
+var m = b + n;
+for (var i = b; i < m; i++) {
+this.sb.append (ca[i]);
+if (this.sb.length () % this.interval == this.interval - 1) {
+this.wrap.overRun = false;
+while (this.epos + this.interval < this.sb.length () && !this.wrap.overRun) {
+this.write ();
+}
+}}
+}, "~A,~N,~N");
+Clazz.overrideMethod (c$, "flush", 
+function () {
+});
+Clazz.defineMethod (c$, "close", 
+function () {
+this.wrap.allowOverRun = false;
+this.wrap.overRun = false;
+while (this.epos < this.sb.length ()) {
+this.write ();
+}
+this.write ();
+this.w.close ();
+});
+Clazz.defineMethod (c$, "length", 
+function () {
+return this.sb.length ();
+});
+Clazz.defineMethod (c$, "charAt", 
+function (i) {
+return this.sb.charAt (i);
+}, "~N");
+Clazz.defineMethod (c$, "setInterval", 
+function (i) {
+this.interval = i;
+}, "~N");
+Clazz.defineMethod (c$, "getInterval", 
+function () {
+return this.interval;
+});
+Clazz.defineMethod (c$, "getBufferSize", 
+function () {
+return this.bufferSize;
+});
+Clazz.defineMethod (c$, "setBufferSize", 
+function (i) {
+this.bufferSize = i;
+}, "~N");
+});
index 02e0aca..07dc4de 100644 (file)
Binary files a/bin/com/stevesoft/pat/ReplaceRule.class and b/bin/com/stevesoft/pat/ReplaceRule.class differ
index 795545b..7485c5f 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["java.util.Hashtable"], "com.stevesoft.pat.ReplaceRule", ["com.stevesoft.pat.Ctrl", "$.Regex", "$.Transformer", "java.lang.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.next = null;\r
-this.name = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "ReplaceRule");\r
-Clazz.prepareFields (c$, function () {\r
-this.name = this.getClass ().getName ();\r
-});\r
-Clazz.defineMethod (c$, "clone1", \r
-function () {\r
-return  new com.stevesoft.pat.RuleHolder (this);\r
-});\r
-Clazz.overrideMethod (c$, "clone", \r
-function () {\r
-var x = this.clone1 ();\r
-var xsav = x;\r
-var y = this;\r
-while (y.next != null) {\r
-x.next = y.next.clone1 ();\r
-x.name = y.name;\r
-x = x.next;\r
-y = y.next;\r
-}\r
-return xsav;\r
-});\r
-c$.add = Clazz.defineMethod (c$, "add", \r
-function (head, adding) {\r
-if (head == null) {\r
-return head = adding;\r
-}head.addRule (adding);\r
-return head;\r
-}, "com.stevesoft.pat.ReplaceRule,com.stevesoft.pat.ReplaceRule");\r
-Clazz.defineMethod (c$, "add", \r
-function (adding) {\r
-return com.stevesoft.pat.ReplaceRule.add (this, adding);\r
-}, "com.stevesoft.pat.ReplaceRule");\r
-Clazz.defineMethod (c$, "addRule", \r
-function (r) {\r
-if (this.next == null) {\r
-this.next = r;\r
-} else {\r
-this.next.addRule (r);\r
-}}, "com.stevesoft.pat.ReplaceRule");\r
-c$.getv = Clazz.defineMethod (c$, "getv", \r
-($fz = function () {\r
-if (com.stevesoft.pat.ReplaceRule.getvar != null) {\r
-return com.stevesoft.pat.ReplaceRule.getvar.clone ();\r
-}com.stevesoft.pat.ReplaceRule.getvar =  new com.stevesoft.pat.Regex ("(?:\\\\(\\d+)|\\$(?:(\\d+)|(\\w+)|([&\'`])|\\{(?:(\\d+)|([^\n}\\\\]+))})|\\\\([nrbtaef])|\\\\c([\u0000-\uffff])|\\\\x([A-Fa-f0-9]{2})|\\\\([\u0000-\uffff]))", "");\r
-com.stevesoft.pat.ReplaceRule.getvar.optimize ();\r
-return com.stevesoft.pat.ReplaceRule.getvar;\r
-}, $fz.isPrivate = true, $fz));\r
-c$.perlCode = Clazz.defineMethod (c$, "perlCode", \r
-function (s) {\r
-try {\r
-var mf = 0;\r
-var mt = 0;\r
-var gv = com.stevesoft.pat.ReplaceRule.getv ();\r
-var head = null;\r
-var tmp = null;\r
-while (gv.searchFrom (s, mt)) {\r
-var off = com.stevesoft.pat.Regex.BackRefOffset - 1;\r
-mf = gv.matchedFrom ();\r
-if (mf > mt) {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule (s.substring (mt, mf)));\r
-}var $var = null;\r
-if (($var = gv.stringMatchedI (1 + off)) != null || ($var = gv.stringMatchedI (2 + off)) != null || ($var = gv.stringMatchedI (5 + off)) != null) {\r
-var d = 0;\r
-for (var i = 0; i < $var.length; i++) {\r
-d = 8 * d + ($var.charCodeAt (i) - 48);\r
-}\r
-if ($var.length == 1) {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.BackRefRule (d));\r
-} else {\r
-head =  new com.stevesoft.pat.StringRule ("" + String.fromCharCode (d));\r
-}} else if (($var = gv.stringMatchedI (10 + off)) != null) {\r
-if ("QELlUu".indexOf ($var) >= 0) {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.CodeRule ($var.charAt (0)));\r
-} else {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ($var));\r
-}} else if (($var = gv.stringMatchedI (3 + off)) != null || ($var = gv.stringMatchedI (4 + off)) != null || ($var = gv.stringMatchedI (6 + off)) != null) {\r
-var arg = "";\r
-var pc;\r
-if ((pc = $var.indexOf (':')) > 0) {\r
-arg = $var.substring (pc + 1);\r
-$var = $var.substring (0, pc);\r
-}if ($var.equals ("&") || $var.equals ("MATCH")) {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.AmpersandRule ());\r
-} else if ($var.equals ("`") || $var.equals ("PREMATCH")) {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.LeftRule ());\r
-} else if ($var.equals ("'") || $var.equals ("POSTMATCH")) {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.RightRule ());\r
-} else if ($var.equals ("WANT_MORE_TEXT")) {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.WantMoreTextReplaceRule ());\r
-} else if ($var.equals ("POP")) {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.PopRule ());\r
-} else if ($var.startsWith ("+") && (tmp = com.stevesoft.pat.ReplaceRule.defs.get ($var.substring (1))) != null) {\r
-if (Clazz.instanceOf (tmp, com.stevesoft.pat.Regex)) {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.PushRule ($var.substring (1), tmp));\r
-} else if (Clazz.instanceOf (tmp, com.stevesoft.pat.Transformer)) {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.PushRule ($var.substring (1), tmp));\r
-} else {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("${" + $var + "}"));\r
-}} else if ($var.startsWith ("=") && (tmp = com.stevesoft.pat.ReplaceRule.defs.get ($var.substring (1))) != null) {\r
-if (Clazz.instanceOf (tmp, com.stevesoft.pat.Regex)) {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.ChangeRule ($var.substring (1), tmp));\r
-} else if (Clazz.instanceOf (tmp, com.stevesoft.pat.Transformer)) {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.ChangeRule ($var.substring (1), tmp));\r
-} else {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("${" + $var + "}"));\r
-}} else if ((tmp = com.stevesoft.pat.ReplaceRule.defs.get ($var)) != null) {\r
-if (Clazz.instanceOf (tmp, com.stevesoft.pat.ReplaceRule)) {\r
-var alt = (tmp).arg (arg);\r
-if (alt == null) {\r
-alt = (tmp);\r
-}head = com.stevesoft.pat.ReplaceRule.add (head, (alt.clone ()));\r
-}} else {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("${" + $var + "}"));\r
-}} else if (($var = gv.stringMatchedI (7 + off)) != null) {\r
-var c = $var.charAt (0);\r
-if (c == 'n') {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\n"));\r
-} else if (c == 't') {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\t"));\r
-} else if (c == 'r') {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\r"));\r
-} else if (c == 'b') {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\r"));\r
-} else if (c == 'a') {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\u0007"));\r
-} else if (c == 'e') {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\u001b"));\r
-} else if (c == 'f') {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\f"));\r
-}} else if (($var = gv.stringMatchedI (8 + off)) != null) {\r
-var c = $var.charAt (0);\r
-if (c.charCodeAt (0) < com.stevesoft.pat.Ctrl.cmap.length) {\r
-c = com.stevesoft.pat.Ctrl.cmap[c.charCodeAt (0)];\r
-}head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("" + c));\r
-} else if (($var = gv.stringMatchedI (9 + off)) != null) {\r
-var d = 16 * com.stevesoft.pat.ReplaceRule.getHexDigit ($var.charAt (0)) + com.stevesoft.pat.ReplaceRule.getHexDigit ($var.charAt (1));\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("" + String.fromCharCode (d)));\r
-}mt = gv.matchedTo ();\r
-}\r
-if (mt <= s.length) {\r
-head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule (s.substring (mt)));\r
-}return head;\r
-} finally {\r
-}\r
-}, "~S");\r
-c$.isDefined = Clazz.defineMethod (c$, "isDefined", \r
-function (s) {\r
-return com.stevesoft.pat.ReplaceRule.defs.get (s) != null;\r
-}, "~S");\r
-c$.define = Clazz.defineMethod (c$, "define", \r
-function (s, r) {\r
-com.stevesoft.pat.ReplaceRule.defs.put (s, r);\r
-}, "~S,com.stevesoft.pat.Regex");\r
-c$.define = Clazz.defineMethod (c$, "define", \r
-function (s, r) {\r
-com.stevesoft.pat.ReplaceRule.defs.put (s, r);\r
-r.name = s;\r
-}, "~S,com.stevesoft.pat.ReplaceRule");\r
-c$.define = Clazz.defineMethod (c$, "define", \r
-function (s, t) {\r
-com.stevesoft.pat.ReplaceRule.defs.put (s, t);\r
-}, "~S,com.stevesoft.pat.Transformer");\r
-c$.undefine = Clazz.defineMethod (c$, "undefine", \r
-function (s) {\r
-com.stevesoft.pat.ReplaceRule.defs.remove (s);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "toString1", \r
-function () {\r
-return "${" + this.name + "}";\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var sb =  new StringBuffer ();\r
-sb.append (this.toString1 ());\r
-var rr = this.next;\r
-while (rr != null) {\r
-sb.append (rr.toString1 ());\r
-rr = rr.next;\r
-}\r
-return sb.toString ();\r
-});\r
-Clazz.defineMethod (c$, "arg", \r
-function (s) {\r
-return null;\r
-}, "~S");\r
-c$.getHexDigit = Clazz.defineMethod (c$, "getHexDigit", \r
-function (c) {\r
-if (c >= '0' && c <= '9') {\r
-return c.charCodeAt (0) - 48;\r
-}if (c >= 'a' && c <= 'f') {\r
-return c.charCodeAt (0) - 97 + 10;\r
-}return c.charCodeAt (0) - 65 + 10;\r
-}, "~S");\r
-Clazz.defineStatics (c$,\r
-"getvar", null);\r
-c$.defs = c$.prototype.defs =  new java.util.Hashtable ();\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["java.util.Hashtable"], "com.stevesoft.pat.ReplaceRule", ["com.stevesoft.pat.Ctrl", "$.Regex", "$.Transformer", "java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.next = null;
+this.name = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "ReplaceRule");
+Clazz.prepareFields (c$, function () {
+this.name = this.getClass ().getName ();
+});
+Clazz.defineMethod (c$, "clone1", 
+function () {
+return  new com.stevesoft.pat.RuleHolder (this);
+});
+Clazz.overrideMethod (c$, "clone", 
+function () {
+var x = this.clone1 ();
+var xsav = x;
+var y = this;
+while (y.next != null) {
+x.next = y.next.clone1 ();
+x.name = y.name;
+x = x.next;
+y = y.next;
+}
+return xsav;
+});
+c$.add = Clazz.defineMethod (c$, "add", 
+function (head, adding) {
+if (head == null) {
+return head = adding;
+}head.addRule (adding);
+return head;
+}, "com.stevesoft.pat.ReplaceRule,com.stevesoft.pat.ReplaceRule");
+Clazz.defineMethod (c$, "add", 
+function (adding) {
+return com.stevesoft.pat.ReplaceRule.add (this, adding);
+}, "com.stevesoft.pat.ReplaceRule");
+Clazz.defineMethod (c$, "addRule", 
+function (r) {
+if (this.next == null) {
+this.next = r;
+} else {
+this.next.addRule (r);
+}}, "com.stevesoft.pat.ReplaceRule");
+c$.getv = Clazz.defineMethod (c$, "getv", 
+($fz = function () {
+if (com.stevesoft.pat.ReplaceRule.getvar != null) {
+return com.stevesoft.pat.ReplaceRule.getvar.clone ();
+}com.stevesoft.pat.ReplaceRule.getvar =  new com.stevesoft.pat.Regex ("(?:\\\\(\\d+)|\\$(?:(\\d+)|(\\w+)|([&\'`])|\\{(?:(\\d+)|([^\n}\\\\]+))})|\\\\([nrbtaef])|\\\\c([\u0000-\uffff])|\\\\x([A-Fa-f0-9]{2})|\\\\([\u0000-\uffff]))", "");
+com.stevesoft.pat.ReplaceRule.getvar.optimize ();
+return com.stevesoft.pat.ReplaceRule.getvar;
+}, $fz.isPrivate = true, $fz));
+c$.perlCode = Clazz.defineMethod (c$, "perlCode", 
+function (s) {
+try {
+var mf = 0;
+var mt = 0;
+var gv = com.stevesoft.pat.ReplaceRule.getv ();
+var head = null;
+var tmp = null;
+while (gv.searchFrom (s, mt)) {
+var off = com.stevesoft.pat.Regex.BackRefOffset - 1;
+mf = gv.matchedFrom ();
+if (mf > mt) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule (s.substring (mt, mf)));
+}var $var = null;
+if (($var = gv.stringMatchedI (1 + off)) != null || ($var = gv.stringMatchedI (2 + off)) != null || ($var = gv.stringMatchedI (5 + off)) != null) {
+var d = 0;
+for (var i = 0; i < $var.length; i++) {
+d = 8 * d + ($var.charCodeAt (i) - 48);
+}
+if ($var.length == 1) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.BackRefRule (d));
+} else {
+head =  new com.stevesoft.pat.StringRule ("" + String.fromCharCode (d));
+}} else if (($var = gv.stringMatchedI (10 + off)) != null) {
+if ("QELlUu".indexOf ($var) >= 0) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.CodeRule ($var.charAt (0)));
+} else {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ($var));
+}} else if (($var = gv.stringMatchedI (3 + off)) != null || ($var = gv.stringMatchedI (4 + off)) != null || ($var = gv.stringMatchedI (6 + off)) != null) {
+var arg = "";
+var pc;
+if ((pc = $var.indexOf (':')) > 0) {
+arg = $var.substring (pc + 1);
+$var = $var.substring (0, pc);
+}if ($var.equals ("&") || $var.equals ("MATCH")) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.AmpersandRule ());
+} else if ($var.equals ("`") || $var.equals ("PREMATCH")) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.LeftRule ());
+} else if ($var.equals ("'") || $var.equals ("POSTMATCH")) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.RightRule ());
+} else if ($var.equals ("WANT_MORE_TEXT")) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.WantMoreTextReplaceRule ());
+} else if ($var.equals ("POP")) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.PopRule ());
+} else if ($var.startsWith ("+") && (tmp = com.stevesoft.pat.ReplaceRule.defs.get ($var.substring (1))) != null) {
+if (Clazz.instanceOf (tmp, com.stevesoft.pat.Regex)) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.PushRule ($var.substring (1), tmp));
+} else if (Clazz.instanceOf (tmp, com.stevesoft.pat.Transformer)) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.PushRule ($var.substring (1), tmp));
+} else {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("${" + $var + "}"));
+}} else if ($var.startsWith ("=") && (tmp = com.stevesoft.pat.ReplaceRule.defs.get ($var.substring (1))) != null) {
+if (Clazz.instanceOf (tmp, com.stevesoft.pat.Regex)) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.ChangeRule ($var.substring (1), tmp));
+} else if (Clazz.instanceOf (tmp, com.stevesoft.pat.Transformer)) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.ChangeRule ($var.substring (1), tmp));
+} else {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("${" + $var + "}"));
+}} else if ((tmp = com.stevesoft.pat.ReplaceRule.defs.get ($var)) != null) {
+if (Clazz.instanceOf (tmp, com.stevesoft.pat.ReplaceRule)) {
+var alt = (tmp).arg (arg);
+if (alt == null) {
+alt = (tmp);
+}head = com.stevesoft.pat.ReplaceRule.add (head, (alt.clone ()));
+}} else {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("${" + $var + "}"));
+}} else if (($var = gv.stringMatchedI (7 + off)) != null) {
+var c = $var.charAt (0);
+if (c == 'n') {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\n"));
+} else if (c == 't') {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\t"));
+} else if (c == 'r') {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\r"));
+} else if (c == 'b') {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\r"));
+} else if (c == 'a') {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\u0007"));
+} else if (c == 'e') {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\u001b"));
+} else if (c == 'f') {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\f"));
+}} else if (($var = gv.stringMatchedI (8 + off)) != null) {
+var c = $var.charAt (0);
+if (c.charCodeAt (0) < com.stevesoft.pat.Ctrl.cmap.length) {
+c = com.stevesoft.pat.Ctrl.cmap[c.charCodeAt (0)];
+}head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("" + c));
+} else if (($var = gv.stringMatchedI (9 + off)) != null) {
+var d = 16 * com.stevesoft.pat.ReplaceRule.getHexDigit ($var.charAt (0)) + com.stevesoft.pat.ReplaceRule.getHexDigit ($var.charAt (1));
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("" + String.fromCharCode (d)));
+}mt = gv.matchedTo ();
+}
+if (mt <= s.length) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule (s.substring (mt)));
+}return head;
+} finally {
+}
+}, "~S");
+c$.isDefined = Clazz.defineMethod (c$, "isDefined", 
+function (s) {
+return com.stevesoft.pat.ReplaceRule.defs.get (s) != null;
+}, "~S");
+c$.define = Clazz.defineMethod (c$, "define", 
+function (s, r) {
+com.stevesoft.pat.ReplaceRule.defs.put (s, r);
+}, "~S,com.stevesoft.pat.Regex");
+c$.define = Clazz.defineMethod (c$, "define", 
+function (s, r) {
+com.stevesoft.pat.ReplaceRule.defs.put (s, r);
+r.name = s;
+}, "~S,com.stevesoft.pat.ReplaceRule");
+c$.define = Clazz.defineMethod (c$, "define", 
+function (s, t) {
+com.stevesoft.pat.ReplaceRule.defs.put (s, t);
+}, "~S,com.stevesoft.pat.Transformer");
+c$.undefine = Clazz.defineMethod (c$, "undefine", 
+function (s) {
+com.stevesoft.pat.ReplaceRule.defs.remove (s);
+}, "~S");
+Clazz.defineMethod (c$, "toString1", 
+function () {
+return "${" + this.name + "}";
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var sb =  new StringBuffer ();
+sb.append (this.toString1 ());
+var rr = this.next;
+while (rr != null) {
+sb.append (rr.toString1 ());
+rr = rr.next;
+}
+return sb.toString ();
+});
+Clazz.defineMethod (c$, "arg", 
+function (s) {
+return null;
+}, "~S");
+c$.getHexDigit = Clazz.defineMethod (c$, "getHexDigit", 
+function (c) {
+if (c >= '0' && c <= '9') {
+return c.charCodeAt (0) - 48;
+}if (c >= 'a' && c <= 'f') {
+return c.charCodeAt (0) - 97 + 10;
+}return c.charCodeAt (0) - 65 + 10;
+}, "~S");
+Clazz.defineStatics (c$,
+"getvar", null);
+c$.defs = c$.prototype.defs =  new java.util.Hashtable ();
+});
index 331ff3b..813f56f 100644 (file)
Binary files a/bin/com/stevesoft/pat/Replacer.class and b/bin/com/stevesoft/pat/Replacer.class differ
index 847b11c..996de92 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (null, ["com.stevesoft.pat.RegHolder", "$.Replacer", "$.CodeVal"], ["com.stevesoft.pat.AmpersandRule", "$.ChangeRule", "$.MessageManager", "$.PopRule", "$.PushRule", "$.RuleHolder", "$.SpecialRule", "$.StringBufferLike", "$.WantMoreTextReplaceRule", "com.stevesoft.pat.wrap.StringWrap", "java.lang.NullPointerException"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.me = null;\r
-this.prev = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "RegHolder");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.pos = 0;\r
-this.code = '\0';\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "CodeVal");\r
-Clazz.makeConstructor (c$, \r
-function (p, c) {\r
-this.pos = p;\r
-this.code = c;\r
-}, "~N,~S");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "(" + this.pos + "," + this.code + ")";\r
-});\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.first = false;\r
-this.rh = null;\r
-this.sb = null;\r
-this.src = null;\r
-this.pos = 0;\r
-this.want_more_text = false;\r
-this.want_more_text_enable = false;\r
-this.$lastMatchedTo = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Replacer");\r
-Clazz.prepareFields (c$, function () {\r
-this.rh =  new com.stevesoft.pat.RegHolder ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "replaceFirstRegion", \r
-function (s, r, start, end) {\r
-return this.replaceFirstRegion ( new com.stevesoft.pat.wrap.StringWrap (s), r, start, end);\r
-}, "~S,com.stevesoft.pat.Regex,~N,~N");\r
-Clazz.defineMethod (c$, "replaceFirstRegion", \r
-function (s, r, start, end) {\r
-this.first = true;\r
-this.rh.me = r;\r
-this.rh.prev = null;\r
-return this.dorep (s, start, end);\r
-}, "com.stevesoft.pat.StringLike,com.stevesoft.pat.Regex,~N,~N");\r
-Clazz.defineMethod (c$, "replaceFirst", \r
-function (s) {\r
-return this.replaceFirstRegion (s, 0, s.length ());\r
-}, "com.stevesoft.pat.StringLike");\r
-Clazz.defineMethod (c$, "replaceFirstFrom", \r
-function (s, start) {\r
-return this.replaceFirstRegion (s, start, s.length ());\r
-}, "com.stevesoft.pat.StringLike,~N");\r
-Clazz.defineMethod (c$, "replaceFirstRegion", \r
-function (s, start, end) {\r
-this.first = true;\r
-return this.dorep (s, start, end);\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-Clazz.defineMethod (c$, "replaceAllRegion", \r
-function (s, r, start, end) {\r
-return this.replaceAllRegion ( new com.stevesoft.pat.wrap.StringWrap (s), r, start, end);\r
-}, "~S,com.stevesoft.pat.Regex,~N,~N");\r
-Clazz.defineMethod (c$, "replaceAllRegion", \r
-function (s, r, start, end) {\r
-this.first = false;\r
-this.rh.me = r;\r
-this.rh.prev = null;\r
-return this.dorep (s, start, end);\r
-}, "com.stevesoft.pat.StringLike,com.stevesoft.pat.Regex,~N,~N");\r
-Clazz.defineMethod (c$, "replaceAll", \r
-function (s) {\r
-return this.replaceAllRegion (s, 0, s.length ());\r
-}, "com.stevesoft.pat.StringLike");\r
-Clazz.defineMethod (c$, "replaceAllFrom", \r
-function (s, start) {\r
-return this.replaceAllRegion (s, start, s.length ());\r
-}, "com.stevesoft.pat.StringLike,~N");\r
-Clazz.defineMethod (c$, "replaceAllRegion", \r
-function (s, start, end) {\r
-this.first = false;\r
-return this.dorep (s, start, end);\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-Clazz.defineMethod (c$, "replaceAll", \r
-function (s) {\r
-return this.replaceAllRegion ( new com.stevesoft.pat.wrap.StringWrap (s), 0, s.length).toString ();\r
-}, "~S");\r
-Clazz.defineMethod (c$, "replaceAllFrom", \r
-function (s, start) {\r
-return this.replaceAllRegion ( new com.stevesoft.pat.wrap.StringWrap (s), start, s.length).toString ();\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "replaceAllRegion", \r
-function (s, start, end) {\r
-this.first = false;\r
-return this.dorep ( new com.stevesoft.pat.wrap.StringWrap (s), start, end).toString ();\r
-}, "~S,~N,~N");\r
-Clazz.defineMethod (c$, "isSpecial", \r
-function (x) {\r
-while (x != null) {\r
-if (Clazz.instanceOf (x, com.stevesoft.pat.SpecialRule) || (Clazz.instanceOf (x, com.stevesoft.pat.RuleHolder) && Clazz.instanceOf ((x).held, com.stevesoft.pat.SpecialRule))) {\r
-return true;\r
-}x = x.next;\r
-}\r
-return false;\r
-}, "com.stevesoft.pat.ReplaceRule");\r
-Clazz.defineMethod (c$, "apply1", \r
-function (rr) {\r
-rr.charsMatched_++;\r
-this.apply (rr, null);\r
-rr.charsMatched_--;\r
-}, "com.stevesoft.pat.RegRes");\r
-Clazz.defineMethod (c$, "dorep", \r
-function (s, start, end) {\r
-var ret = s;\r
-this.want_more_text = false;\r
-this.$lastMatchedTo = 0;\r
-if (this.rh.me == null) {\r
-throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.replace_null_regex_pointer"));\r
-}if (this.rh.me._searchLike (s, start, end)) {\r
-var rmn = this.rh.me.matchedTo ();\r
-if (this.rh.me.charsMatched () == 0 && !this.isSpecial (this.rh.me.getReplaceRule ())) {\r
-this.apply1 (this.rh.me);\r
-rmn++;\r
-}this.apply (this.rh.me);\r
-if (!this.first) {\r
-for (var i = rmn; !this.want_more_text && this.rh.me._searchLike (s, i, end); i = rmn) {\r
-rmn = this.rh.me.matchedTo ();\r
-if (this.rh.me.charsMatched () == 0) {\r
-if (!this.isSpecial (this.rh.me.getReplaceRule ())) {\r
-this.apply1 (this.rh.me);\r
-}rmn++;\r
-}this.apply (this.rh.me);\r
-}\r
-}ret = this.finish ();\r
-ret = ret == null ? s : ret;\r
-}return ret;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-Clazz.defineMethod (c$, "apply", \r
-function (r, rp) {\r
-if (rp == null || (rp.next == null && Clazz.instanceOf (rp, com.stevesoft.pat.AmpersandRule))) {\r
-return;\r
-}if (r.didMatch ()) {\r
-if (this.src == null) {\r
-this.src = r.getStringLike ();\r
-}if (this.sb == null) {\r
-this.sb =  new com.stevesoft.pat.StringBufferLike (this.src.newStringBufferLike ());\r
-}var rmf = r.matchedFrom ();\r
-for (var ii = this.pos; ii < rmf; ii++) {\r
-this.sb.appendC (this.src.charAt (ii));\r
-}\r
-for (var x = rp; x != null; x = x.next) {\r
-x.apply (this.sb, r);\r
-if (Clazz.instanceOf (x, com.stevesoft.pat.SpecialRule)) {\r
-if (Clazz.instanceOf (x, com.stevesoft.pat.WantMoreTextReplaceRule) && this.want_more_text_enable) {\r
-this.want_more_text = true;\r
-} else if (Clazz.instanceOf (x, com.stevesoft.pat.PushRule)) {\r
-var rh2 =  new com.stevesoft.pat.RegHolder ();\r
-rh2.me = (x).NewRule;\r
-rh2.prev = this.rh;\r
-this.rh = rh2;\r
-} else if (Clazz.instanceOf (x, com.stevesoft.pat.PopRule)) {\r
-if (this.rh.prev != null) {\r
-this.rh = this.rh.prev;\r
-}} else if (Clazz.instanceOf (x, com.stevesoft.pat.ChangeRule)) {\r
-this.rh.me = (x).NewRule;\r
-}}}\r
-if (!this.want_more_text) {\r
-this.pos = r.matchedTo ();\r
-}}}, "com.stevesoft.pat.RegRes,com.stevesoft.pat.ReplaceRule");\r
-Clazz.defineMethod (c$, "WantMoreText", \r
-function () {\r
-return this.want_more_text;\r
-});\r
-Clazz.defineMethod (c$, "apply", \r
-function (r) {\r
-this.apply (r, r.getReplaceRule ());\r
-}, "com.stevesoft.pat.Regex");\r
-Clazz.defineMethod (c$, "finish", \r
-function () {\r
-if (this.src == null) {\r
-return null;\r
-}var s_end = this.src.length ();\r
-for (var ii = this.pos; ii < s_end; ii++) {\r
-this.sb.appendC (this.src.charAt (ii));\r
-}\r
-this.src = null;\r
-this.$lastMatchedTo = this.pos;\r
-this.pos = 0;\r
-var retstr = this.sb.toStringLike ();\r
-this.sb = null;\r
-return retstr;\r
-});\r
-Clazz.overrideMethod (c$, "clone", \r
-function () {\r
-var r =  new com.stevesoft.pat.Replacer ();\r
-r.first = this.first;\r
-r.src = this.src;\r
-r.sb = this.sb;\r
-r.pos = this.pos;\r
-r.$lastMatchedTo = this.$lastMatchedTo;\r
-r.want_more_text = this.want_more_text;\r
-r.want_more_text_enable = this.want_more_text_enable;\r
-r.rh.me = this.rh.me;\r
-r.rh.prev = this.rh.prev;\r
-return r;\r
-});\r
-Clazz.defineMethod (c$, "lastMatchedTo", \r
-function () {\r
-return this.$lastMatchedTo;\r
-});\r
-Clazz.defineMethod (c$, "getRegex", \r
-function () {\r
-return this.rh.me;\r
-});\r
-Clazz.defineMethod (c$, "setSource", \r
-function (sl) {\r
-this.src = sl;\r
-}, "com.stevesoft.pat.StringLike");\r
-Clazz.defineMethod (c$, "setBuffer", \r
-function (sbl) {\r
-this.sb = sbl;\r
-}, "com.stevesoft.pat.StringBufferLike");\r
-Clazz.defineMethod (c$, "setPos", \r
-function (pos) {\r
-this.pos = pos;\r
-}, "~N");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, ["com.stevesoft.pat.RegHolder", "$.Replacer", "$.CodeVal"], ["com.stevesoft.pat.AmpersandRule", "$.ChangeRule", "$.MessageManager", "$.PopRule", "$.PushRule", "$.RuleHolder", "$.SpecialRule", "$.StringBufferLike", "$.WantMoreTextReplaceRule", "com.stevesoft.pat.wrap.StringWrap", "java.lang.NullPointerException"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.me = null;
+this.prev = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "RegHolder");
+c$ = Clazz.decorateAsClass (function () {
+this.pos = 0;
+this.code = '\0';
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "CodeVal");
+Clazz.makeConstructor (c$, 
+function (p, c) {
+this.pos = p;
+this.code = c;
+}, "~N,~S");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "(" + this.pos + "," + this.code + ")";
+});
+c$ = Clazz.decorateAsClass (function () {
+this.first = false;
+this.rh = null;
+this.sb = null;
+this.src = null;
+this.pos = 0;
+this.want_more_text = false;
+this.want_more_text_enable = false;
+this.$lastMatchedTo = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Replacer");
+Clazz.prepareFields (c$, function () {
+this.rh =  new com.stevesoft.pat.RegHolder ();
+});
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.defineMethod (c$, "replaceFirstRegion", 
+function (s, r, start, end) {
+return this.replaceFirstRegion ( new com.stevesoft.pat.wrap.StringWrap (s), r, start, end);
+}, "~S,com.stevesoft.pat.Regex,~N,~N");
+Clazz.defineMethod (c$, "replaceFirstRegion", 
+function (s, r, start, end) {
+this.first = true;
+this.rh.me = r;
+this.rh.prev = null;
+return this.dorep (s, start, end);
+}, "com.stevesoft.pat.StringLike,com.stevesoft.pat.Regex,~N,~N");
+Clazz.defineMethod (c$, "replaceFirst", 
+function (s) {
+return this.replaceFirstRegion (s, 0, s.length ());
+}, "com.stevesoft.pat.StringLike");
+Clazz.defineMethod (c$, "replaceFirstFrom", 
+function (s, start) {
+return this.replaceFirstRegion (s, start, s.length ());
+}, "com.stevesoft.pat.StringLike,~N");
+Clazz.defineMethod (c$, "replaceFirstRegion", 
+function (s, start, end) {
+this.first = true;
+return this.dorep (s, start, end);
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz.defineMethod (c$, "replaceAllRegion", 
+function (s, r, start, end) {
+return this.replaceAllRegion ( new com.stevesoft.pat.wrap.StringWrap (s), r, start, end);
+}, "~S,com.stevesoft.pat.Regex,~N,~N");
+Clazz.defineMethod (c$, "replaceAllRegion", 
+function (s, r, start, end) {
+this.first = false;
+this.rh.me = r;
+this.rh.prev = null;
+return this.dorep (s, start, end);
+}, "com.stevesoft.pat.StringLike,com.stevesoft.pat.Regex,~N,~N");
+Clazz.defineMethod (c$, "replaceAll", 
+function (s) {
+return this.replaceAllRegion (s, 0, s.length ());
+}, "com.stevesoft.pat.StringLike");
+Clazz.defineMethod (c$, "replaceAllFrom", 
+function (s, start) {
+return this.replaceAllRegion (s, start, s.length ());
+}, "com.stevesoft.pat.StringLike,~N");
+Clazz.defineMethod (c$, "replaceAllRegion", 
+function (s, start, end) {
+this.first = false;
+return this.dorep (s, start, end);
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz.defineMethod (c$, "replaceAll", 
+function (s) {
+return this.replaceAllRegion ( new com.stevesoft.pat.wrap.StringWrap (s), 0, s.length).toString ();
+}, "~S");
+Clazz.defineMethod (c$, "replaceAllFrom", 
+function (s, start) {
+return this.replaceAllRegion ( new com.stevesoft.pat.wrap.StringWrap (s), start, s.length).toString ();
+}, "~S,~N");
+Clazz.defineMethod (c$, "replaceAllRegion", 
+function (s, start, end) {
+this.first = false;
+return this.dorep ( new com.stevesoft.pat.wrap.StringWrap (s), start, end).toString ();
+}, "~S,~N,~N");
+Clazz.defineMethod (c$, "isSpecial", 
+function (x) {
+while (x != null) {
+if (Clazz.instanceOf (x, com.stevesoft.pat.SpecialRule) || (Clazz.instanceOf (x, com.stevesoft.pat.RuleHolder) && Clazz.instanceOf ((x).held, com.stevesoft.pat.SpecialRule))) {
+return true;
+}x = x.next;
+}
+return false;
+}, "com.stevesoft.pat.ReplaceRule");
+Clazz.defineMethod (c$, "apply1", 
+function (rr) {
+rr.charsMatched_++;
+this.apply (rr, null);
+rr.charsMatched_--;
+}, "com.stevesoft.pat.RegRes");
+Clazz.defineMethod (c$, "dorep", 
+function (s, start, end) {
+var ret = s;
+this.want_more_text = false;
+this.$lastMatchedTo = 0;
+if (this.rh.me == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.replace_null_regex_pointer"));
+}if (this.rh.me._searchLike (s, start, end)) {
+var rmn = this.rh.me.matchedTo ();
+if (this.rh.me.charsMatched () == 0 && !this.isSpecial (this.rh.me.getReplaceRule ())) {
+this.apply1 (this.rh.me);
+rmn++;
+}this.apply (this.rh.me);
+if (!this.first) {
+for (var i = rmn; !this.want_more_text && this.rh.me._searchLike (s, i, end); i = rmn) {
+rmn = this.rh.me.matchedTo ();
+if (this.rh.me.charsMatched () == 0) {
+if (!this.isSpecial (this.rh.me.getReplaceRule ())) {
+this.apply1 (this.rh.me);
+}rmn++;
+}this.apply (this.rh.me);
+}
+}ret = this.finish ();
+ret = ret == null ? s : ret;
+}return ret;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz.defineMethod (c$, "apply", 
+function (r, rp) {
+if (rp == null || (rp.next == null && Clazz.instanceOf (rp, com.stevesoft.pat.AmpersandRule))) {
+return;
+}if (r.didMatch ()) {
+if (this.src == null) {
+this.src = r.getStringLike ();
+}if (this.sb == null) {
+this.sb =  new com.stevesoft.pat.StringBufferLike (this.src.newStringBufferLike ());
+}var rmf = r.matchedFrom ();
+for (var ii = this.pos; ii < rmf; ii++) {
+this.sb.appendC (this.src.charAt (ii));
+}
+for (var x = rp; x != null; x = x.next) {
+x.apply (this.sb, r);
+if (Clazz.instanceOf (x, com.stevesoft.pat.SpecialRule)) {
+if (Clazz.instanceOf (x, com.stevesoft.pat.WantMoreTextReplaceRule) && this.want_more_text_enable) {
+this.want_more_text = true;
+} else if (Clazz.instanceOf (x, com.stevesoft.pat.PushRule)) {
+var rh2 =  new com.stevesoft.pat.RegHolder ();
+rh2.me = (x).NewRule;
+rh2.prev = this.rh;
+this.rh = rh2;
+} else if (Clazz.instanceOf (x, com.stevesoft.pat.PopRule)) {
+if (this.rh.prev != null) {
+this.rh = this.rh.prev;
+}} else if (Clazz.instanceOf (x, com.stevesoft.pat.ChangeRule)) {
+this.rh.me = (x).NewRule;
+}}}
+if (!this.want_more_text) {
+this.pos = r.matchedTo ();
+}}}, "com.stevesoft.pat.RegRes,com.stevesoft.pat.ReplaceRule");
+Clazz.defineMethod (c$, "WantMoreText", 
+function () {
+return this.want_more_text;
+});
+Clazz.defineMethod (c$, "apply", 
+function (r) {
+this.apply (r, r.getReplaceRule ());
+}, "com.stevesoft.pat.Regex");
+Clazz.defineMethod (c$, "finish", 
+function () {
+if (this.src == null) {
+return null;
+}var s_end = this.src.length ();
+for (var ii = this.pos; ii < s_end; ii++) {
+this.sb.appendC (this.src.charAt (ii));
+}
+this.src = null;
+this.$lastMatchedTo = this.pos;
+this.pos = 0;
+var retstr = this.sb.toStringLike ();
+this.sb = null;
+return retstr;
+});
+Clazz.overrideMethod (c$, "clone", 
+function () {
+var r =  new com.stevesoft.pat.Replacer ();
+r.first = this.first;
+r.src = this.src;
+r.sb = this.sb;
+r.pos = this.pos;
+r.$lastMatchedTo = this.$lastMatchedTo;
+r.want_more_text = this.want_more_text;
+r.want_more_text_enable = this.want_more_text_enable;
+r.rh.me = this.rh.me;
+r.rh.prev = this.rh.prev;
+return r;
+});
+Clazz.defineMethod (c$, "lastMatchedTo", 
+function () {
+return this.$lastMatchedTo;
+});
+Clazz.defineMethod (c$, "getRegex", 
+function () {
+return this.rh.me;
+});
+Clazz.defineMethod (c$, "setSource", 
+function (sl) {
+this.src = sl;
+}, "com.stevesoft.pat.StringLike");
+Clazz.defineMethod (c$, "setBuffer", 
+function (sbl) {
+this.sb = sbl;
+}, "com.stevesoft.pat.StringBufferLike");
+Clazz.defineMethod (c$, "setPos", 
+function (pos) {
+this.pos = pos;
+}, "~N");
+});
index 60fa08d..ab453dd 100644 (file)
@@ -1,16 +1,16 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.RightRule", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "RightRule", com.stevesoft.pat.ReplaceRule);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.RightRule, []);\r
-});\r
-Clazz.overrideMethod (c$, "apply", \r
-function (sb, res) {\r
-sb.append (res.right ());\r
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");\r
-Clazz.overrideMethod (c$, "toString1", \r
-function () {\r
-return "$'";\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.RightRule", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "RightRule", com.stevesoft.pat.ReplaceRule);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.RightRule, []);
+});
+Clazz.overrideMethod (c$, "apply", 
+function (sb, res) {
+sb.append (res.right ());
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz.overrideMethod (c$, "toString1", 
+function () {
+return "$'";
+});
+});
index c9c902e..66f9c83 100644 (file)
@@ -1,35 +1,35 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Regex"], "com.stevesoft.pat.Rthings", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.val = 0;\r
-this.ignoreCase = false;\r
-this.dontMatchInQuotes = false;\r
-this.optimizeMe = false;\r
-this.noBackRefs = false;\r
-this.parenLevel = 0;\r
-this.gFlag = false;\r
-this.mFlag = false;\r
-this.sFlag = false;\r
-this.p = null;\r
-this.o = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Rthings");\r
-Clazz.prepareFields (c$, function () {\r
-this.val = com.stevesoft.pat.Regex.BackRefOffset;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (r) {\r
-this.ignoreCase = r.ignoreCase;\r
-this.dontMatchInQuotes = r.dontMatchInQuotes;\r
-}, "com.stevesoft.pat.Regex");\r
-Clazz.defineMethod (c$, "set", \r
-function (r) {\r
-r.gFlag = this.gFlag;\r
-r.mFlag = this.mFlag;\r
-r.sFlag = this.sFlag;\r
-r.ignoreCase = this.ignoreCase;\r
-r.dontMatchInQuotes = this.dontMatchInQuotes;\r
-if (this.optimizeMe) {\r
-r.optimize ();\r
-}}, "com.stevesoft.pat.Regex");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Regex"], "com.stevesoft.pat.Rthings", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.val = 0;
+this.ignoreCase = false;
+this.dontMatchInQuotes = false;
+this.optimizeMe = false;
+this.noBackRefs = false;
+this.parenLevel = 0;
+this.gFlag = false;
+this.mFlag = false;
+this.sFlag = false;
+this.p = null;
+this.o = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Rthings");
+Clazz.prepareFields (c$, function () {
+this.val = com.stevesoft.pat.Regex.BackRefOffset;
+});
+Clazz.makeConstructor (c$, 
+function (r) {
+this.ignoreCase = r.ignoreCase;
+this.dontMatchInQuotes = r.dontMatchInQuotes;
+}, "com.stevesoft.pat.Regex");
+Clazz.defineMethod (c$, "set", 
+function (r) {
+r.gFlag = this.gFlag;
+r.mFlag = this.mFlag;
+r.sFlag = this.sFlag;
+r.ignoreCase = this.ignoreCase;
+r.dontMatchInQuotes = this.dontMatchInQuotes;
+if (this.optimizeMe) {
+r.optimize ();
+}}, "com.stevesoft.pat.Regex");
+});
index a628201..6924899 100644 (file)
@@ -1,32 +1,32 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.RuleHolder", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.held = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "RuleHolder", com.stevesoft.pat.ReplaceRule);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.RuleHolder, []);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (h) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.RuleHolder, []);\r
-this.held = h;\r
-}, "com.stevesoft.pat.ReplaceRule");\r
-Clazz.overrideMethod (c$, "clone1", \r
-function () {\r
-return  new com.stevesoft.pat.RuleHolder (this.held);\r
-});\r
-Clazz.defineMethod (c$, "toString1", \r
-function () {\r
-return this.held.toString1 ();\r
-});\r
-Clazz.defineMethod (c$, "apply", \r
-function (sb, rr) {\r
-this.held.apply (sb, rr);\r
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");\r
-Clazz.defineMethod (c$, "arg", \r
-function (s) {\r
-return  new com.stevesoft.pat.RuleHolder (this.held.arg (s));\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.RuleHolder", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.held = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "RuleHolder", com.stevesoft.pat.ReplaceRule);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.RuleHolder, []);
+});
+Clazz.makeConstructor (c$, 
+function (h) {
+Clazz.superConstructor (this, com.stevesoft.pat.RuleHolder, []);
+this.held = h;
+}, "com.stevesoft.pat.ReplaceRule");
+Clazz.overrideMethod (c$, "clone1", 
+function () {
+return  new com.stevesoft.pat.RuleHolder (this.held);
+});
+Clazz.defineMethod (c$, "toString1", 
+function () {
+return this.held.toString1 ();
+});
+Clazz.defineMethod (c$, "apply", 
+function (sb, rr) {
+this.held.apply (sb, rr);
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz.defineMethod (c$, "arg", 
+function (s) {
+return  new com.stevesoft.pat.RuleHolder (this.held.arg (s));
+}, "~S");
+});
index bdf02e4..6dd2756 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (null, "com.stevesoft.pat.Skip", ["com.stevesoft.pat.CaseMgr", "$.Or", "$.Skipped", "$.oneChar", "java.lang.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.src = null;\r
-this.c = 0;\r
-this.mask = 0;\r
-this.$offset = 0;\r
-this.ign = false;\r
-this.m1 = false;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Skip");\r
-c$.mkmask = Clazz.defineMethod (c$, "mkmask", \r
-function (c) {\r
-var x = String.fromCharCode (c);\r
-return ~((com.stevesoft.pat.CaseMgr.toUpperCaseC (x)).charCodeAt (0) | (com.stevesoft.pat.CaseMgr.toLowerCaseC (x)).charCodeAt (0) | (com.stevesoft.pat.CaseMgr.toTitleCaseC (x)).charCodeAt (0));\r
-}, "~N");\r
-c$.string = Clazz.defineMethod (c$, "string", \r
-function (r) {\r
-return r.skipper == null ? null : r.skipper.src;\r
-}, "com.stevesoft.pat.Regex");\r
-c$.offset = Clazz.defineMethod (c$, "offset", \r
-function (r) {\r
-return r.skipper == null ? -1 : r.skipper.$offset;\r
-}, "com.stevesoft.pat.Regex");\r
-Clazz.makeConstructor (c$, \r
-function (s, ign, o) {\r
-this.src = s;\r
-this.c = s.charCodeAt (0);\r
-if (ign) {\r
-this.mask = com.stevesoft.pat.Skip.mkmask (this.c);\r
-} else {\r
-this.mask = 0;\r
-}this.$offset = o;\r
-this.ign = ign;\r
-this.m1 = (s.length == 1);\r
-}, "~S,~B,~N");\r
-Clazz.defineMethod (c$, "find", \r
-function (s) {\r
-return this.find (s, 0, s.length ());\r
-}, "com.stevesoft.pat.StringLike");\r
-c$.min = Clazz.defineMethod (c$, "min", \r
-function (a, b) {\r
-return a < b ? a : b;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "find", \r
-function (s, start, end) {\r
-if (start > end) {\r
-return -1;\r
-}start += this.$offset;\r
-var vend = com.stevesoft.pat.Skip.min (s.length () - 1, end + this.$offset);\r
-if (this.mask != this.c) {\r
-for (var i = start; i <= vend; i++) {\r
-if (0 == (s.charCodeAt (i) & this.mask)) {\r
-if (this.m1 || com.stevesoft.pat.CaseMgr.regionMatchesLike2 (s, this.ign, i, this.src, 0, this.src.length)) {\r
-return i - this.$offset;\r
-}}}\r
-} else {\r
-for (var i = start; i <= vend; i++) {\r
-if (this.c == s.charCodeAt (i)) {\r
-if (this.m1 || com.stevesoft.pat.CaseMgr.regionMatchesLike2 (s, this.ign, i, this.src, 0, this.src.length)) {\r
-return i - this.$offset;\r
-}}}\r
-}return -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-c$.findSkipRegex = Clazz.defineMethod (c$, "findSkipRegex", \r
-function (r) {\r
-return com.stevesoft.pat.Skip.findSkip (r.thePattern, r.ignoreCase, !r.dontMatchInQuotes);\r
-}, "com.stevesoft.pat.Regex");\r
-c$.findSkip = Clazz.defineMethod (c$, "findSkip", \r
-function (p, ignoreCase, trnc) {\r
-var sb =  new StringBuffer ();\r
-var subsk = null;\r
-var offset = 0;\r
-var skipc = -1;\r
-var skipoff = 0;\r
-for (; p != null; p = p.next) {\r
-if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar)) {\r
-skipc = ((p).c).charCodeAt (0);\r
-skipoff = offset;\r
-}if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && Clazz.instanceOf (p.next, com.stevesoft.pat.oneChar)) {\r
-var psav = p;\r
-sb.append ((p).c);\r
-while (Clazz.instanceOf (p.next, com.stevesoft.pat.oneChar)) {\r
-sb.append ((p.next).c);\r
-p = p.next;\r
-}\r
-var st = sb.toString ();\r
-var sk = null;\r
-if (st.length > 2) {\r
-sk =  new com.stevesoft.pat.SkipBMH (st, ignoreCase, offset);\r
-} else {\r
-sk =  new com.stevesoft.pat.Skip2 (st, ignoreCase, offset);\r
-}if (trnc && st.length > 2) {\r
-psav.next =  new com.stevesoft.pat.Skipped (st.substring (1));\r
-psav.next.next = p.next;\r
-psav.next.parent = p.parent;\r
-}return sk;\r
-} else if (Clazz.instanceOf (p, com.stevesoft.pat.Or) && (p).v.size () == 1 && !(p).leftForm ().equals ("(?!") && null != (subsk = com.stevesoft.pat.Skip.findSkip ((p).v.elementAt (0), ignoreCase, trnc))) {\r
-subsk.$offset += offset;\r
-return subsk;\r
-} else if (p.minChars ().equals (p.maxChars ())) {\r
-offset += p.minChars ().intValue ();\r
-} else {\r
-return skipc < 0 ? null :  new com.stevesoft.pat.Skip ("" + String.fromCharCode (skipc), ignoreCase, skipoff);\r
-}}\r
-return null;\r
-}, "com.stevesoft.pat.Pattern,~B,~B");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, "com.stevesoft.pat.Skip", ["com.stevesoft.pat.CaseMgr", "$.Or", "$.Skipped", "$.oneChar", "java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.src = null;
+this.c = 0;
+this.mask = 0;
+this.$offset = 0;
+this.ign = false;
+this.m1 = false;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Skip");
+c$.mkmask = Clazz.defineMethod (c$, "mkmask", 
+function (c) {
+var x = String.fromCharCode (c);
+return ~((com.stevesoft.pat.CaseMgr.toUpperCaseC (x)).charCodeAt (0) | (com.stevesoft.pat.CaseMgr.toLowerCaseC (x)).charCodeAt (0) | (com.stevesoft.pat.CaseMgr.toTitleCaseC (x)).charCodeAt (0));
+}, "~N");
+c$.string = Clazz.defineMethod (c$, "string", 
+function (r) {
+return r.skipper == null ? null : r.skipper.src;
+}, "com.stevesoft.pat.Regex");
+c$.offset = Clazz.defineMethod (c$, "offset", 
+function (r) {
+return r.skipper == null ? -1 : r.skipper.$offset;
+}, "com.stevesoft.pat.Regex");
+Clazz.makeConstructor (c$, 
+function (s, ign, o) {
+this.src = s;
+this.c = s.charCodeAt (0);
+if (ign) {
+this.mask = com.stevesoft.pat.Skip.mkmask (this.c);
+} else {
+this.mask = 0;
+}this.$offset = o;
+this.ign = ign;
+this.m1 = (s.length == 1);
+}, "~S,~B,~N");
+Clazz.defineMethod (c$, "find", 
+function (s) {
+return this.find (s, 0, s.length ());
+}, "com.stevesoft.pat.StringLike");
+c$.min = Clazz.defineMethod (c$, "min", 
+function (a, b) {
+return a < b ? a : b;
+}, "~N,~N");
+Clazz.defineMethod (c$, "find", 
+function (s, start, end) {
+if (start > end) {
+return -1;
+}start += this.$offset;
+var vend = com.stevesoft.pat.Skip.min (s.length () - 1, end + this.$offset);
+if (this.mask != this.c) {
+for (var i = start; i <= vend; i++) {
+if (0 == (s.charCodeAt (i) & this.mask)) {
+if (this.m1 || com.stevesoft.pat.CaseMgr.regionMatchesLike2 (s, this.ign, i, this.src, 0, this.src.length)) {
+return i - this.$offset;
+}}}
+} else {
+for (var i = start; i <= vend; i++) {
+if (this.c == s.charCodeAt (i)) {
+if (this.m1 || com.stevesoft.pat.CaseMgr.regionMatchesLike2 (s, this.ign, i, this.src, 0, this.src.length)) {
+return i - this.$offset;
+}}}
+}return -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$.findSkipRegex = Clazz.defineMethod (c$, "findSkipRegex", 
+function (r) {
+return com.stevesoft.pat.Skip.findSkip (r.thePattern, r.ignoreCase, !r.dontMatchInQuotes);
+}, "com.stevesoft.pat.Regex");
+c$.findSkip = Clazz.defineMethod (c$, "findSkip", 
+function (p, ignoreCase, trnc) {
+var sb =  new StringBuffer ();
+var subsk = null;
+var offset = 0;
+var skipc = -1;
+var skipoff = 0;
+for (; p != null; p = p.next) {
+if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar)) {
+skipc = ((p).c).charCodeAt (0);
+skipoff = offset;
+}if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && Clazz.instanceOf (p.next, com.stevesoft.pat.oneChar)) {
+var psav = p;
+sb.append ((p).c);
+while (Clazz.instanceOf (p.next, com.stevesoft.pat.oneChar)) {
+sb.append ((p.next).c);
+p = p.next;
+}
+var st = sb.toString ();
+var sk = null;
+if (st.length > 2) {
+sk =  new com.stevesoft.pat.SkipBMH (st, ignoreCase, offset);
+} else {
+sk =  new com.stevesoft.pat.Skip2 (st, ignoreCase, offset);
+}if (trnc && st.length > 2) {
+psav.next =  new com.stevesoft.pat.Skipped (st.substring (1));
+psav.next.next = p.next;
+psav.next.parent = p.parent;
+}return sk;
+} else if (Clazz.instanceOf (p, com.stevesoft.pat.Or) && (p).v.size () == 1 && !(p).leftForm ().equals ("(?!") && null != (subsk = com.stevesoft.pat.Skip.findSkip ((p).v.elementAt (0), ignoreCase, trnc))) {
+subsk.$offset += offset;
+return subsk;
+} else if (p.minChars ().equals (p.maxChars ())) {
+offset += p.minChars ().intValue ();
+} else {
+return skipc < 0 ? null :  new com.stevesoft.pat.Skip ("" + String.fromCharCode (skipc), ignoreCase, skipoff);
+}}
+return null;
+}, "com.stevesoft.pat.Pattern,~B,~B");
+});
index c06b56e..e69b45e 100644 (file)
@@ -1,31 +1,31 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Skip"], "com.stevesoft.pat.Skip2", ["com.stevesoft.pat.CaseMgr"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.c1 = 0;\r
-this.mask1 = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Skip2", com.stevesoft.pat.Skip);\r
-Clazz.makeConstructor (c$, \r
-function (s, ign, offset) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.Skip2, [s, ign, offset]);\r
-this.c1 = s.charCodeAt (1);\r
-this.m1 = 2 == s.length;\r
-if (ign) {\r
-this.mask1 = com.stevesoft.pat.Skip.mkmask (this.c1);\r
-} else {\r
-this.mask1 = 0;\r
-}}, "~S,~B,~N");\r
-Clazz.defineMethod (c$, "find", \r
-function (s, start, end) {\r
-if (start > end) {\r
-return -1;\r
-}start += this.$offset;\r
-var vend = com.stevesoft.pat.Skip.min (s.length () - 2, end + this.$offset);\r
-for (var i = start; i <= vend; i++) {\r
-if (0 == (s.charCodeAt (i) & this.mask) && 0 == (s.charCodeAt (i + 1) & this.mask1)) {\r
-if (this.m1 || com.stevesoft.pat.CaseMgr.regionMatchesLike2 (s, this.ign, i, this.src, 0, this.src.length)) {\r
-return i - this.$offset;\r
-}}}\r
-return -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Skip"], "com.stevesoft.pat.Skip2", ["com.stevesoft.pat.CaseMgr"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.c1 = 0;
+this.mask1 = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Skip2", com.stevesoft.pat.Skip);
+Clazz.makeConstructor (c$, 
+function (s, ign, offset) {
+Clazz.superConstructor (this, com.stevesoft.pat.Skip2, [s, ign, offset]);
+this.c1 = s.charCodeAt (1);
+this.m1 = 2 == s.length;
+if (ign) {
+this.mask1 = com.stevesoft.pat.Skip.mkmask (this.c1);
+} else {
+this.mask1 = 0;
+}}, "~S,~B,~N");
+Clazz.defineMethod (c$, "find", 
+function (s, start, end) {
+if (start > end) {
+return -1;
+}start += this.$offset;
+var vend = com.stevesoft.pat.Skip.min (s.length () - 2, end + this.$offset);
+for (var i = start; i <= vend; i++) {
+if (0 == (s.charCodeAt (i) & this.mask) && 0 == (s.charCodeAt (i + 1) & this.mask1)) {
+if (this.m1 || com.stevesoft.pat.CaseMgr.regionMatchesLike2 (s, this.ign, i, this.src, 0, this.src.length)) {
+return i - this.$offset;
+}}}
+return -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+});
index 9ea4116..ac81e43 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Skip"], "com.stevesoft.pat.SkipBMH", ["com.stevesoft.pat.CaseMgr", "com.stevesoft.pat.wrap.StringWrap"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.MAX_CHAR = 64;\r
-this.skip = null;\r
-this.sm1 = 0;\r
-this.jump_ahead = 0;\r
-this.uc = '\0';\r
-this.lc = '\0';\r
-this.tc = '\0';\r
-this.x = '\0';\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "SkipBMH", com.stevesoft.pat.Skip);\r
-Clazz.prepareFields (c$, function () {\r
-this.skip =  Clazz.newCharArray (64, '\0');\r
-});\r
-Clazz.defineMethod (c$, "exact", \r
-function (c) {\r
-return (this.ign && this.anyc (c)) || c == this.x;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "anyc", \r
-function (c) {\r
-return c == this.uc || c == this.lc || c == this.tc;\r
-}, "~S");\r
-Clazz.makeConstructor (c$, \r
-function (pt, ign) {\r
-this.construct (pt, ign, 0);\r
-}, "~S,~B");\r
-Clazz.makeConstructor (c$, \r
-function (pt) {\r
-this.construct (pt, false, 0);\r
-}, "~S");\r
-Clazz.makeConstructor (c$, \r
-function (pt, ign, offset) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.SkipBMH, [pt, ign, offset]);\r
-for (var k = 0; k < 64; k++) {\r
-this.skip[k] = String.fromCharCode (this.src.length);\r
-}\r
-this.sm1 = this.src.length - 1;\r
-this.x = this.src.charAt (this.sm1);\r
-this.uc = com.stevesoft.pat.CaseMgr.toUpperCaseC (this.x);\r
-this.lc = com.stevesoft.pat.CaseMgr.toLowerCaseC (this.x);\r
-this.tc = com.stevesoft.pat.CaseMgr.toTitleCaseC (this.x);\r
-for (var k = 0; k < this.src.length - 1; k++) {\r
-var x_ = this.src.charAt (k);\r
-if (ign) {\r
-var uc_ = com.stevesoft.pat.CaseMgr.toUpperCaseC (x_);\r
-var lc_ = com.stevesoft.pat.CaseMgr.toLowerCaseC (x_);\r
-var tc_ = com.stevesoft.pat.CaseMgr.toTitleCaseC (x_);\r
-this.skip[uc_.charCodeAt (0) & (63)] = String.fromCharCode (this.src.length - k - 1);\r
-this.skip[lc_.charCodeAt (0) & (63)] = String.fromCharCode (this.src.length - k - 1);\r
-this.skip[tc_.charCodeAt (0) & (63)] = String.fromCharCode (this.src.length - k - 1);\r
-} else {\r
-this.skip[x_.charCodeAt (0) & (63)] = String.fromCharCode (this.src.length - k - 1);\r
-}}\r
-this.jump_ahead = this.src.length - 1;\r
-for (var k = 0; k < this.src.length - 1; k++) {\r
-var y = this.src.charAt (this.sm1 - k - 1);\r
-if (this.exact (y)) {\r
-this.jump_ahead = k;\r
-break;\r
-}}\r
-}, "~S,~B,~N");\r
-Clazz.defineMethod (c$, "searchRegion", \r
-function (s, start, end) {\r
-return this.find (s, start, end);\r
-}, "~S,~N,~N");\r
-Clazz.defineMethod (c$, "searchFrom", \r
-function (s, start) {\r
-return this.find (s, start, s.length);\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "search", \r
-function (s) {\r
-return this.find (s, 0, s.length);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "find", \r
-function (s, start, end) {\r
-start += this.$offset + this.sm1;\r
-var vend = com.stevesoft.pat.Skip.min (s.length - 1, end + this.sm1 + this.$offset);\r
-var k;\r
-var vend1 = vend - this.jump_ahead;\r
-if (this.ign) {\r
-for (k = start; k <= vend1; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {\r
-if (this.anyc (s.charAt (k))) {\r
-if (com.stevesoft.pat.CaseMgr.regionMatches2 (this.src, this.ign, 0, s, k - this.sm1, this.sm1)) {\r
-return k - this.sm1 - this.$offset;\r
-}k += this.jump_ahead;\r
-}}\r
-for (; k <= vend; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {\r
-if (this.anyc (s.charAt (k))) {\r
-if (com.stevesoft.pat.CaseMgr.regionMatches2 (this.src, this.ign, 0, s, k - this.sm1, this.sm1)) {\r
-return k - this.sm1 - this.$offset;\r
-}k += this.jump_ahead;\r
-if (k > vend) {\r
-return -1;\r
-}}}\r
-} else {\r
-for (k = start; k <= vend1; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {\r
-if (this.x == s.charAt (k)) {\r
-if (com.stevesoft.pat.CaseMgr.regionMatches2 (this.src, false, 0, s, k - this.sm1, this.sm1)) {\r
-return k - this.sm1 - this.$offset;\r
-}k += this.jump_ahead;\r
-}}\r
-for (; k <= vend; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {\r
-if (this.x == s.charAt (k)) {\r
-if (com.stevesoft.pat.CaseMgr.regionMatches2 (this.src, false, 0, s, k - this.sm1, this.sm1)) {\r
-return k - this.sm1 - this.$offset;\r
-}k += this.jump_ahead;\r
-if (k > vend) {\r
-return -1;\r
-}}}\r
-}return -1;\r
-}, "~S,~N,~N");\r
-Clazz.defineMethod (c$, "find", \r
-function (s, start, end) {\r
-if (Clazz.instanceOf (s, com.stevesoft.pat.wrap.StringWrap)) {\r
-return this.find (s.toString (), start, end);\r
-}start += this.$offset + this.sm1;\r
-var vend = com.stevesoft.pat.Skip.min (s.length () - 1, end + this.sm1 + this.$offset);\r
-var k;\r
-var vend1 = vend - this.jump_ahead;\r
-if (this.ign) {\r
-for (k = start; k <= vend1; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {\r
-if (this.anyc (s.charAt (k))) {\r
-if (com.stevesoft.pat.CaseMgr.regionMatches (this.src, this.ign, 0, s, k - this.sm1, this.sm1)) {\r
-return k - this.sm1 - this.$offset;\r
-}k += this.jump_ahead;\r
-}}\r
-for (; k <= vend; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {\r
-if (this.anyc (s.charAt (k))) {\r
-if (com.stevesoft.pat.CaseMgr.regionMatches (this.src, this.ign, 0, s, k - this.sm1, this.sm1)) {\r
-return k - this.sm1 - this.$offset;\r
-}k += this.jump_ahead;\r
-if (k > vend) {\r
-return -1;\r
-}}}\r
-} else {\r
-for (k = start; k <= vend1; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {\r
-if (this.x == s.charAt (k)) {\r
-if (com.stevesoft.pat.CaseMgr.regionMatches (this.src, false, 0, s, k - this.sm1, this.sm1)) {\r
-return k - this.sm1 - this.$offset;\r
-}k += this.jump_ahead;\r
-}}\r
-for (; k <= vend; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {\r
-if (this.x == s.charAt (k)) {\r
-if (com.stevesoft.pat.CaseMgr.regionMatches (this.src, false, 0, s, k - this.sm1, this.sm1)) {\r
-return k - this.sm1 - this.$offset;\r
-}k += this.jump_ahead;\r
-if (k > vend) {\r
-return -1;\r
-}}}\r
-}return -1;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Skip"], "com.stevesoft.pat.SkipBMH", ["com.stevesoft.pat.CaseMgr", "com.stevesoft.pat.wrap.StringWrap"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.MAX_CHAR = 64;
+this.skip = null;
+this.sm1 = 0;
+this.jump_ahead = 0;
+this.uc = '\0';
+this.lc = '\0';
+this.tc = '\0';
+this.x = '\0';
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "SkipBMH", com.stevesoft.pat.Skip);
+Clazz.prepareFields (c$, function () {
+this.skip =  Clazz.newCharArray (64, '\0');
+});
+Clazz.defineMethod (c$, "exact", 
+function (c) {
+return (this.ign && this.anyc (c)) || c == this.x;
+}, "~S");
+Clazz.defineMethod (c$, "anyc", 
+function (c) {
+return c == this.uc || c == this.lc || c == this.tc;
+}, "~S");
+Clazz.makeConstructor (c$, 
+function (pt, ign) {
+this.construct (pt, ign, 0);
+}, "~S,~B");
+Clazz.makeConstructor (c$, 
+function (pt) {
+this.construct (pt, false, 0);
+}, "~S");
+Clazz.makeConstructor (c$, 
+function (pt, ign, offset) {
+Clazz.superConstructor (this, com.stevesoft.pat.SkipBMH, [pt, ign, offset]);
+for (var k = 0; k < 64; k++) {
+this.skip[k] = String.fromCharCode (this.src.length);
+}
+this.sm1 = this.src.length - 1;
+this.x = this.src.charAt (this.sm1);
+this.uc = com.stevesoft.pat.CaseMgr.toUpperCaseC (this.x);
+this.lc = com.stevesoft.pat.CaseMgr.toLowerCaseC (this.x);
+this.tc = com.stevesoft.pat.CaseMgr.toTitleCaseC (this.x);
+for (var k = 0; k < this.src.length - 1; k++) {
+var x_ = this.src.charAt (k);
+if (ign) {
+var uc_ = com.stevesoft.pat.CaseMgr.toUpperCaseC (x_);
+var lc_ = com.stevesoft.pat.CaseMgr.toLowerCaseC (x_);
+var tc_ = com.stevesoft.pat.CaseMgr.toTitleCaseC (x_);
+this.skip[uc_.charCodeAt (0) & (63)] = String.fromCharCode (this.src.length - k - 1);
+this.skip[lc_.charCodeAt (0) & (63)] = String.fromCharCode (this.src.length - k - 1);
+this.skip[tc_.charCodeAt (0) & (63)] = String.fromCharCode (this.src.length - k - 1);
+} else {
+this.skip[x_.charCodeAt (0) & (63)] = String.fromCharCode (this.src.length - k - 1);
+}}
+this.jump_ahead = this.src.length - 1;
+for (var k = 0; k < this.src.length - 1; k++) {
+var y = this.src.charAt (this.sm1 - k - 1);
+if (this.exact (y)) {
+this.jump_ahead = k;
+break;
+}}
+}, "~S,~B,~N");
+Clazz.defineMethod (c$, "searchRegion", 
+function (s, start, end) {
+return this.find (s, start, end);
+}, "~S,~N,~N");
+Clazz.defineMethod (c$, "searchFrom", 
+function (s, start) {
+return this.find (s, start, s.length);
+}, "~S,~N");
+Clazz.defineMethod (c$, "search", 
+function (s) {
+return this.find (s, 0, s.length);
+}, "~S");
+Clazz.defineMethod (c$, "find", 
+function (s, start, end) {
+start += this.$offset + this.sm1;
+var vend = com.stevesoft.pat.Skip.min (s.length - 1, end + this.sm1 + this.$offset);
+var k;
+var vend1 = vend - this.jump_ahead;
+if (this.ign) {
+for (k = start; k <= vend1; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {
+if (this.anyc (s.charAt (k))) {
+if (com.stevesoft.pat.CaseMgr.regionMatches2 (this.src, this.ign, 0, s, k - this.sm1, this.sm1)) {
+return k - this.sm1 - this.$offset;
+}k += this.jump_ahead;
+}}
+for (; k <= vend; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {
+if (this.anyc (s.charAt (k))) {
+if (com.stevesoft.pat.CaseMgr.regionMatches2 (this.src, this.ign, 0, s, k - this.sm1, this.sm1)) {
+return k - this.sm1 - this.$offset;
+}k += this.jump_ahead;
+if (k > vend) {
+return -1;
+}}}
+} else {
+for (k = start; k <= vend1; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {
+if (this.x == s.charAt (k)) {
+if (com.stevesoft.pat.CaseMgr.regionMatches2 (this.src, false, 0, s, k - this.sm1, this.sm1)) {
+return k - this.sm1 - this.$offset;
+}k += this.jump_ahead;
+}}
+for (; k <= vend; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {
+if (this.x == s.charAt (k)) {
+if (com.stevesoft.pat.CaseMgr.regionMatches2 (this.src, false, 0, s, k - this.sm1, this.sm1)) {
+return k - this.sm1 - this.$offset;
+}k += this.jump_ahead;
+if (k > vend) {
+return -1;
+}}}
+}return -1;
+}, "~S,~N,~N");
+Clazz.defineMethod (c$, "find", 
+function (s, start, end) {
+if (Clazz.instanceOf (s, com.stevesoft.pat.wrap.StringWrap)) {
+return this.find (s.toString (), start, end);
+}start += this.$offset + this.sm1;
+var vend = com.stevesoft.pat.Skip.min (s.length () - 1, end + this.sm1 + this.$offset);
+var k;
+var vend1 = vend - this.jump_ahead;
+if (this.ign) {
+for (k = start; k <= vend1; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {
+if (this.anyc (s.charAt (k))) {
+if (com.stevesoft.pat.CaseMgr.regionMatches (this.src, this.ign, 0, s, k - this.sm1, this.sm1)) {
+return k - this.sm1 - this.$offset;
+}k += this.jump_ahead;
+}}
+for (; k <= vend; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {
+if (this.anyc (s.charAt (k))) {
+if (com.stevesoft.pat.CaseMgr.regionMatches (this.src, this.ign, 0, s, k - this.sm1, this.sm1)) {
+return k - this.sm1 - this.$offset;
+}k += this.jump_ahead;
+if (k > vend) {
+return -1;
+}}}
+} else {
+for (k = start; k <= vend1; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {
+if (this.x == s.charAt (k)) {
+if (com.stevesoft.pat.CaseMgr.regionMatches (this.src, false, 0, s, k - this.sm1, this.sm1)) {
+return k - this.sm1 - this.$offset;
+}k += this.jump_ahead;
+}}
+for (; k <= vend; k += (this.skip[s.charCodeAt (k) & (63)]).charCodeAt (0)) {
+if (this.x == s.charAt (k)) {
+if (com.stevesoft.pat.CaseMgr.regionMatches (this.src, false, 0, s, k - this.sm1, this.sm1)) {
+return k - this.sm1 - this.$offset;
+}k += this.jump_ahead;
+if (k > vend) {
+return -1;
+}}}
+}return -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+});
index 07c5ca9..8f6f1d3 100644 (file)
@@ -1,34 +1,34 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Skipped", ["com.stevesoft.pat.CaseMgr", "$.patInt"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.s = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Skipped", com.stevesoft.pat.Pattern);\r
-Clazz.makeConstructor (c$, \r
-function (s) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.Skipped, []);\r
-this.s = s;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return this.s + this.nextString ();\r
-});\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-if (pt.no_check || com.stevesoft.pat.CaseMgr.regionMatches (this.s, pt.ignoreCase, 0, pt.src, pos, this.s.length)) {\r
-return this.nextMatch (pos + this.s.length, pt);\r
-}return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (this.s.length);\r
-});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (this.s.length);\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-return  new com.stevesoft.pat.Skipped (this.s);\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Skipped", ["com.stevesoft.pat.CaseMgr", "$.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.s = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Skipped", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$, 
+function (s) {
+Clazz.superConstructor (this, com.stevesoft.pat.Skipped, []);
+this.s = s;
+}, "~S");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return this.s + this.nextString ();
+});
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (pt.no_check || com.stevesoft.pat.CaseMgr.regionMatches (this.s, pt.ignoreCase, 0, pt.src, pos, this.s.length)) {
+return this.nextMatch (pos + this.s.length, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (this.s.length);
+});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (this.s.length);
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.Skipped (this.s);
+}, "java.util.Hashtable");
+});
index 13dfbe5..aed49a6 100644 (file)
@@ -1,11 +1,11 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.SpecialRule", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "SpecialRule", com.stevesoft.pat.ReplaceRule);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.SpecialRule, []);\r
-});\r
-Clazz.overrideMethod (c$, "apply", \r
-function (sb, rr) {\r
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.SpecialRule", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "SpecialRule", com.stevesoft.pat.ReplaceRule);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.SpecialRule, []);
+});
+Clazz.overrideMethod (c$, "apply", 
+function (sb, rr) {
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+});
index 56168b1..1ef02d7 100644 (file)
@@ -1,35 +1,35 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Start", ["com.stevesoft.pat.patInt"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.retIsStart = false;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Start", com.stevesoft.pat.Pattern);\r
-Clazz.makeConstructor (c$, \r
-function (b) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.Start, []);\r
-this.retIsStart = b;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-if (this.retIsStart && pt.mFlag && pos > 0 && pt.src.charAt (pos - 1) == '\n') {\r
-return this.nextMatch (pos, pt);\r
-}if (pos == 0) {\r
-return this.nextMatch (pos, pt);\r
-}return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-if (this.retIsStart) {\r
-return "^" + this.nextString ();\r
-} else {\r
-return "\\A" + this.nextString ();\r
-}});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (0);\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-return  new com.stevesoft.pat.Start (this.retIsStart);\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Start", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.retIsStart = false;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Start", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$, 
+function (b) {
+Clazz.superConstructor (this, com.stevesoft.pat.Start, []);
+this.retIsStart = b;
+}, "~B");
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (this.retIsStart && pt.mFlag && pos > 0 && pt.src.charAt (pos - 1) == '\n') {
+return this.nextMatch (pos, pt);
+}if (pos == 0) {
+return this.nextMatch (pos, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+if (this.retIsStart) {
+return "^" + this.nextString ();
+} else {
+return "\\A" + this.nextString ();
+}});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (0);
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.Start (this.retIsStart);
+}, "java.util.Hashtable");
+});
index 249075c..cc761f6 100644 (file)
Binary files a/bin/com/stevesoft/pat/StrPos.class and b/bin/com/stevesoft/pat/StrPos.class differ
index fb1baf4..366f46b 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (null, "com.stevesoft.pat.StrPos", ["com.stevesoft.pat.patInf", "$.patInt"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.s = null;\r
-this.$pos = 0;\r
-this.esc = '\\';\r
-this.c = '\0';\r
-this.dontMatch = false;\r
-this.$eos = false;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "StrPos");\r
-Clazz.defineMethod (c$, "pos", \r
-function () {\r
-return this.$pos;\r
-});\r
-Clazz.defineMethod (c$, "thisChar", \r
-function () {\r
-return this.c;\r
-});\r
-Clazz.defineMethod (c$, "eos", \r
-function () {\r
-return this.$eos;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (sp) {\r
-this.dup (sp);\r
-}, "com.stevesoft.pat.StrPos");\r
-Clazz.defineMethod (c$, "dup", \r
-function (sp) {\r
-this.s = sp.s;\r
-this.$pos = sp.$pos;\r
-this.c = sp.c;\r
-this.dontMatch = sp.dontMatch;\r
-this.$eos = sp.$eos;\r
-}, "com.stevesoft.pat.StrPos");\r
-Clazz.makeConstructor (c$, \r
-function (s, pos) {\r
-this.s = s;\r
-this.$pos = pos - 1;\r
-this.inc ();\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "inc", \r
-function () {\r
-this.$pos++;\r
-if (this.$pos >= this.s.length) {\r
-this.$eos = true;\r
-return this;\r
-}this.$eos = false;\r
-this.c = this.s.charAt (this.$pos);\r
-if (this.c == this.esc && this.$pos + 1 < this.s.length) {\r
-this.$pos++;\r
-this.c = this.s.charAt (this.$pos);\r
-if (this.c != this.esc) {\r
-this.dontMatch = true;\r
-} else {\r
-this.dontMatch = false;\r
-}} else {\r
-this.dontMatch = false;\r
-}return this;\r
-});\r
-Clazz.defineMethod (c$, "match", \r
-function (ch) {\r
-if (this.dontMatch || this.$eos) {\r
-return false;\r
-}return this.c == ch;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "escMatch", \r
-function (ch) {\r
-if (!this.dontMatch || this.$eos) {\r
-return false;\r
-}return this.c == ch;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "escaped", \r
-function () {\r
-return this.dontMatch;\r
-});\r
-Clazz.defineMethod (c$, "incMatch", \r
-function (st) {\r
-var sp =  new com.stevesoft.pat.StrPos (this);\r
-var i;\r
-for (i = 0; i < st.length; i++) {\r
-if (!sp.match (st.charAt (i))) {\r
-return false;\r
-}sp.inc ();\r
-}\r
-this.dup (sp);\r
-return true;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getPatInt", \r
-function () {\r
-if (this.incMatch ("inf")) {\r
-return  new com.stevesoft.pat.patInf ();\r
-}var i;\r
-var cnt = 0;\r
-var sp =  new com.stevesoft.pat.StrPos (this);\r
-for (i = 0; !sp.$eos && sp.c >= '0' && sp.c <= '9'; i++) {\r
-cnt = 10 * cnt + sp.c.charCodeAt (0) - 48;\r
-sp.inc ();\r
-}\r
-if (i == 0) {\r
-return null;\r
-}this.dup (sp);\r
-return  new com.stevesoft.pat.patInt (cnt);\r
-});\r
-Clazz.defineMethod (c$, "getString", \r
-function () {\r
-return this.s;\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, "com.stevesoft.pat.StrPos", ["com.stevesoft.pat.patInf", "$.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.s = null;
+this.$pos = 0;
+this.esc = '\\';
+this.c = '\0';
+this.dontMatch = false;
+this.$eos = false;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "StrPos");
+Clazz.defineMethod (c$, "pos", 
+function () {
+return this.$pos;
+});
+Clazz.defineMethod (c$, "thisChar", 
+function () {
+return this.c;
+});
+Clazz.defineMethod (c$, "eos", 
+function () {
+return this.$eos;
+});
+Clazz.makeConstructor (c$, 
+function (sp) {
+this.dup (sp);
+}, "com.stevesoft.pat.StrPos");
+Clazz.defineMethod (c$, "dup", 
+function (sp) {
+this.s = sp.s;
+this.$pos = sp.$pos;
+this.c = sp.c;
+this.dontMatch = sp.dontMatch;
+this.$eos = sp.$eos;
+}, "com.stevesoft.pat.StrPos");
+Clazz.makeConstructor (c$, 
+function (s, pos) {
+this.s = s;
+this.$pos = pos - 1;
+this.inc ();
+}, "~S,~N");
+Clazz.defineMethod (c$, "inc", 
+function () {
+this.$pos++;
+if (this.$pos >= this.s.length) {
+this.$eos = true;
+return this;
+}this.$eos = false;
+this.c = this.s.charAt (this.$pos);
+if (this.c == this.esc && this.$pos + 1 < this.s.length) {
+this.$pos++;
+this.c = this.s.charAt (this.$pos);
+if (this.c != this.esc) {
+this.dontMatch = true;
+} else {
+this.dontMatch = false;
+}} else {
+this.dontMatch = false;
+}return this;
+});
+Clazz.defineMethod (c$, "match", 
+function (ch) {
+if (this.dontMatch || this.$eos) {
+return false;
+}return this.c == ch;
+}, "~S");
+Clazz.defineMethod (c$, "escMatch", 
+function (ch) {
+if (!this.dontMatch || this.$eos) {
+return false;
+}return this.c == ch;
+}, "~S");
+Clazz.defineMethod (c$, "escaped", 
+function () {
+return this.dontMatch;
+});
+Clazz.defineMethod (c$, "incMatch", 
+function (st) {
+var sp =  new com.stevesoft.pat.StrPos (this);
+var i;
+for (i = 0; i < st.length; i++) {
+if (!sp.match (st.charAt (i))) {
+return false;
+}sp.inc ();
+}
+this.dup (sp);
+return true;
+}, "~S");
+Clazz.defineMethod (c$, "getPatInt", 
+function () {
+if (this.incMatch ("inf")) {
+return  new com.stevesoft.pat.patInf ();
+}var i;
+var cnt = 0;
+var sp =  new com.stevesoft.pat.StrPos (this);
+for (i = 0; !sp.$eos && sp.c >= '0' && sp.c <= '9'; i++) {
+cnt = 10 * cnt + sp.c.charCodeAt (0) - 48;
+sp.inc ();
+}
+if (i == 0) {
+return null;
+}this.dup (sp);
+return  new com.stevesoft.pat.patInt (cnt);
+});
+Clazz.defineMethod (c$, "getString", 
+function () {
+return this.s;
+});
+});
index 6426a06..0bfeef2 100644 (file)
Binary files a/bin/com/stevesoft/pat/StringBufferLike.class and b/bin/com/stevesoft/pat/StringBufferLike.class differ
index 2455329..fd5b6c3 100644 (file)
@@ -1,62 +1,62 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.BasicStringBufferLike"], "com.stevesoft.pat.StringBufferLike", ["com.stevesoft.pat.CaseMgr"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.sbl = null;\r
-this.mode = 'E';\r
-this.altMode = ' ';\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "StringBufferLike", null, com.stevesoft.pat.BasicStringBufferLike);\r
-Clazz.makeConstructor (c$, \r
-function (sbl) {\r
-this.sbl = sbl;\r
-}, "com.stevesoft.pat.BasicStringBufferLike");\r
-Clazz.defineMethod (c$, "toStringLike", \r
-function () {\r
-return this.sbl.toStringLike ();\r
-});\r
-Clazz.defineMethod (c$, "toString", \r
-function () {\r
-return this.sbl.toString ();\r
-});\r
-Clazz.defineMethod (c$, "appendC", \r
-function (c) {\r
-switch (this.mode) {\r
-case 'u':\r
-this.mode = this.altMode;\r
-this.altMode = ' ';\r
-case 'U':\r
-this.sbl.appendC (com.stevesoft.pat.CaseMgr.toUpperCaseC (c));\r
-break;\r
-case 'l':\r
-this.mode = this.altMode;\r
-this.altMode = ' ';\r
-case 'L':\r
-this.sbl.appendC (com.stevesoft.pat.CaseMgr.toLowerCaseC (c));\r
-break;\r
-case 'Q':\r
-if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) {\r
-;} else {\r
-this.sbl.appendC ('\\');\r
-}default:\r
-this.sbl.appendC (c);\r
-break;\r
-}\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "append", \r
-function (s) {\r
-for (var i = 0; i < s.length; i++) {\r
-this.appendC (s.charAt (i));\r
-}\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setMode", \r
-function (c) {\r
-if (c == 'u' || c == 'l') {\r
-if (this.altMode == ' ') {\r
-this.altMode = this.mode;\r
-}}this.mode = c;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "unwrap", \r
-function () {\r
-return this.sbl.unwrap ();\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.BasicStringBufferLike"], "com.stevesoft.pat.StringBufferLike", ["com.stevesoft.pat.CaseMgr"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.sbl = null;
+this.mode = 'E';
+this.altMode = ' ';
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "StringBufferLike", null, com.stevesoft.pat.BasicStringBufferLike);
+Clazz.makeConstructor (c$, 
+function (sbl) {
+this.sbl = sbl;
+}, "com.stevesoft.pat.BasicStringBufferLike");
+Clazz.defineMethod (c$, "toStringLike", 
+function () {
+return this.sbl.toStringLike ();
+});
+Clazz.defineMethod (c$, "toString", 
+function () {
+return this.sbl.toString ();
+});
+Clazz.defineMethod (c$, "appendC", 
+function (c) {
+switch (this.mode) {
+case 'u':
+this.mode = this.altMode;
+this.altMode = ' ';
+case 'U':
+this.sbl.appendC (com.stevesoft.pat.CaseMgr.toUpperCaseC (c));
+break;
+case 'l':
+this.mode = this.altMode;
+this.altMode = ' ';
+case 'L':
+this.sbl.appendC (com.stevesoft.pat.CaseMgr.toLowerCaseC (c));
+break;
+case 'Q':
+if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) {
+;} else {
+this.sbl.appendC ('\\');
+}default:
+this.sbl.appendC (c);
+break;
+}
+}, "~S");
+Clazz.overrideMethod (c$, "append", 
+function (s) {
+for (var i = 0; i < s.length; i++) {
+this.appendC (s.charAt (i));
+}
+}, "~S");
+Clazz.defineMethod (c$, "setMode", 
+function (c) {
+if (c == 'u' || c == 'l') {
+if (this.altMode == ' ') {
+this.altMode = this.mode;
+}}this.mode = c;
+}, "~S");
+Clazz.defineMethod (c$, "unwrap", 
+function () {
+return this.sbl.unwrap ();
+});
+});
index c677532..12b2dc9 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.declareInterface (com.stevesoft.pat, "StringLike");\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.declareInterface (com.stevesoft.pat, "StringLike");
index aea8a98..1c04a68 100644 (file)
@@ -1,24 +1,24 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.StringRule", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.s = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "StringRule", com.stevesoft.pat.ReplaceRule);\r
-Clazz.makeConstructor (c$, \r
-function (s) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.StringRule, []);\r
-this.s = s;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "apply", \r
-function (sb, res) {\r
-sb.append (this.s);\r
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");\r
-Clazz.overrideMethod (c$, "toString1", \r
-function () {\r
-return this.s;\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function () {\r
-return  new com.stevesoft.pat.StringRule (this.s);\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.StringRule", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.s = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "StringRule", com.stevesoft.pat.ReplaceRule);
+Clazz.makeConstructor (c$, 
+function (s) {
+Clazz.superConstructor (this, com.stevesoft.pat.StringRule, []);
+this.s = s;
+}, "~S");
+Clazz.overrideMethod (c$, "apply", 
+function (sb, res) {
+sb.append (this.s);
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz.overrideMethod (c$, "toString1", 
+function () {
+return this.s;
+});
+Clazz.overrideMethod (c$, "clone1", 
+function () {
+return  new com.stevesoft.pat.StringRule (this.s);
+});
+});
index 0ea6b3a..9e1b5b8 100644 (file)
@@ -1,21 +1,21 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.SubMark", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.end_pos = 0;\r
-this.start_pos = 0;\r
-this.om = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "SubMark", com.stevesoft.pat.Pattern);\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "";\r
-});\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (i, pt) {\r
-pt.marks[this.om.id + pt.nMarks] = i;\r
-var ret = this.nextMatch (i, pt);\r
-if (ret < 0) {\r
-pt.marks[this.om.id + pt.nMarks] = -1;\r
-}return ret;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.SubMark", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.end_pos = 0;
+this.start_pos = 0;
+this.om = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "SubMark", com.stevesoft.pat.Pattern);
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "";
+});
+Clazz.overrideMethod (c$, "matchInternal", 
+function (i, pt) {
+pt.marks[this.om.id + pt.nMarks] = i;
+var ret = this.nextMatch (i, pt);
+if (ret < 0) {
+pt.marks[this.om.id + pt.nMarks] = -1;
+}return ret;
+}, "~N,com.stevesoft.pat.Pthings");
+});
index ec296f1..65f32a1 100644 (file)
@@ -1,35 +1,35 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.TransPat", ["com.stevesoft.pat.Regex"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.ra = null;\r
-this.ra_len = 0;\r
-this.pn = -1;\r
-this.lastMatchedTo = -1;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "TransPat", com.stevesoft.pat.Pattern);\r
-Clazz.prepareFields (c$, function () {\r
-this.ra =  new Array (10);\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "(?#TransPat)";\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.TransPat, []);\r
-});\r
-Clazz.defineMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-for (var i = 0; i < this.ra_len; i++) {\r
-pt.ignoreCase = this.ra[i].ignoreCase;\r
-pt.mFlag = this.ra[i].mFlag;\r
-pt.dotDoesntMatchCR = com.stevesoft.pat.Regex.dotDoesntMatchCR;\r
-var r = this.ra[i].thePattern.matchInternal (pos, pt);\r
-if (r >= 0) {\r
-this.pn = i;\r
-return r;\r
-}}\r
-this.pn = -1;\r
-return -1;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.TransPat", ["com.stevesoft.pat.Regex"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.ra = null;
+this.ra_len = 0;
+this.pn = -1;
+this.lastMatchedTo = -1;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "TransPat", com.stevesoft.pat.Pattern);
+Clazz.prepareFields (c$, function () {
+this.ra =  new Array (10);
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "(?#TransPat)";
+});
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.TransPat, []);
+});
+Clazz.defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+for (var i = 0; i < this.ra_len; i++) {
+pt.ignoreCase = this.ra[i].ignoreCase;
+pt.mFlag = this.ra[i].mFlag;
+pt.dotDoesntMatchCR = com.stevesoft.pat.Regex.dotDoesntMatchCR;
+var r = this.ra[i].thePattern.matchInternal (pos, pt);
+if (r >= 0) {
+this.pn = i;
+return r;
+}}
+this.pn = -1;
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+});
index 3d169f9..25ef39f 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.ReplaceRule", "$.Replacer"], ["com.stevesoft.pat.Transformer", "$.TransRepRule"], ["com.stevesoft.pat.MessageManager", "$.Regex", "$.TransPat", "com.stevesoft.pat.wrap.StringWrap", "java.lang.ArrayIndexOutOfBoundsException", "$.NullPointerException"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.t = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "TransRepRule", com.stevesoft.pat.ReplaceRule);\r
-Clazz.makeConstructor (c$, \r
-function (t) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.TransRepRule, []);\r
-this.t = t;\r
-}, "com.stevesoft.pat.Transformer");\r
-Clazz.overrideMethod (c$, "toString1", \r
-function () {\r
-return "";\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function () {\r
-return  new com.stevesoft.pat.TransRepRule (this.t);\r
-});\r
-Clazz.overrideMethod (c$, "apply", \r
-function (sb, rr) {\r
-this.next = this.t.tp.ra[this.t.tp.pn].getReplaceRule ();\r
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.tp = null;\r
-this.rp = null;\r
-this.auto_optimize = false;\r
-this.repr = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Transformer");\r
-Clazz.prepareFields (c$, function () {\r
-this.repr =  new com.stevesoft.pat.Replacer ();\r
-});\r
-Clazz.defineMethod (c$, "getReplacer", \r
-function () {\r
-return this.rp.getReplacer ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (auto) {\r
-this.rp =  new com.stevesoft.pat.Regex (null, "");\r
-this.auto_optimize = auto;\r
-this.tp =  new com.stevesoft.pat.TransPat ();\r
-this.rp.setReplaceRule ( new com.stevesoft.pat.TransRepRule (this));\r
-this.rp.thePattern = this.tp;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "add", \r
-function (r) {\r
-if (this.auto_optimize) {\r
-r.optimize ();\r
-}this.tp.ra[this.tp.ra_len++] = r;\r
-if (this.tp.ra.length == this.tp.ra_len) {\r
-var ra2 =  new Array (this.tp.ra_len + 10);\r
-for (var i = 0; i < this.tp.ra_len; i++) {\r
-ra2[i] = this.tp.ra[i];\r
-}\r
-this.tp.ra = ra2;\r
-}this.rp.numSubs_ = r.numSubs_ > this.rp.numSubs_ ? r.numSubs_ : this.rp.numSubs_;\r
-}, "com.stevesoft.pat.Regex");\r
-Clazz.defineMethod (c$, "patterns", \r
-function () {\r
-return this.tp.ra_len;\r
-});\r
-Clazz.defineMethod (c$, "getRegexAt", \r
-function (i) {\r
-if (i >= this.tp.ra_len) {\r
-throw  new ArrayIndexOutOfBoundsException ("i=" + i + ">=" + this.patterns ());\r
-}if (i < 0) {\r
-throw  new ArrayIndexOutOfBoundsException ("i=" + i + "< 0");\r
-}return this.tp.ra[i];\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setRegexAt", \r
-function (rx, i) {\r
-if (i >= this.tp.ra_len) {\r
-throw  new ArrayIndexOutOfBoundsException ("i=" + i + ">=" + this.patterns ());\r
-}if (i < 0) {\r
-throw  new ArrayIndexOutOfBoundsException ("i=" + i + "< 0");\r
-}this.tp.ra[i] = rx;\r
-}, "com.stevesoft.pat.Regex,~N");\r
-Clazz.defineMethod (c$, "add", \r
-function (rs) {\r
-var r = com.stevesoft.pat.Regex.perlCode (rs);\r
-if (r == null) {\r
-throw  new NullPointerException (com.stevesoft.pat.MessageManager.formatMessage ("exception.bad_pattern_to_regex_perl_code",  Clazz.newArray (-1, [rs])));\r
-}this.add (r);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "add", \r
-function (array) {\r
-for (var i = 0; i < array.length; i++) {\r
-this.add (array[i]);\r
-}\r
-}, "~A");\r
-Clazz.defineMethod (c$, "replaceAll", \r
-function (s) {\r
-return this.dorep (s, 0, s.length);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "replaceAll", \r
-function (s) {\r
-return this.dorep (s, 0, s.length ());\r
-}, "com.stevesoft.pat.StringLike");\r
-Clazz.defineMethod (c$, "replaceAllFrom", \r
-function (s, start) {\r
-return this.dorep (s, start, s.length);\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "replaceAllRegion", \r
-function (s, start, end) {\r
-return this.dorep (s, start, end);\r
-}, "~S,~N,~N");\r
-Clazz.defineMethod (c$, "dorep", \r
-function (s, start, end) {\r
-var tfmd = this.repr.replaceAllRegion (s, this.rp, start, end);\r
-this.tp.lastMatchedTo = this.repr.$lastMatchedTo;\r
-return tfmd;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-Clazz.defineMethod (c$, "dorep", \r
-function (s, start, end) {\r
-return this.dorep ( new com.stevesoft.pat.wrap.StringWrap (s), start, end).toString ();\r
-}, "~S,~N,~N");\r
-Clazz.defineMethod (c$, "replaceFirst", \r
-function (s) {\r
-return this.dorep (s, 0, s.length);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "replaceFirstFrom", \r
-function (s, start) {\r
-return this.dorep (s, start, s.length);\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "replaceFirstRegion", \r
-function (s, start, end) {\r
-return this.dorep (s, start, end);\r
-}, "~S,~N,~N");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.ReplaceRule", "$.Replacer"], ["com.stevesoft.pat.Transformer", "$.TransRepRule"], ["com.stevesoft.pat.MessageManager", "$.Regex", "$.TransPat", "com.stevesoft.pat.wrap.StringWrap", "java.lang.ArrayIndexOutOfBoundsException", "$.NullPointerException"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.t = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "TransRepRule", com.stevesoft.pat.ReplaceRule);
+Clazz.makeConstructor (c$, 
+function (t) {
+Clazz.superConstructor (this, com.stevesoft.pat.TransRepRule, []);
+this.t = t;
+}, "com.stevesoft.pat.Transformer");
+Clazz.overrideMethod (c$, "toString1", 
+function () {
+return "";
+});
+Clazz.overrideMethod (c$, "clone1", 
+function () {
+return  new com.stevesoft.pat.TransRepRule (this.t);
+});
+Clazz.overrideMethod (c$, "apply", 
+function (sb, rr) {
+this.next = this.t.tp.ra[this.t.tp.pn].getReplaceRule ();
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+c$ = Clazz.decorateAsClass (function () {
+this.tp = null;
+this.rp = null;
+this.auto_optimize = false;
+this.repr = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Transformer");
+Clazz.prepareFields (c$, function () {
+this.repr =  new com.stevesoft.pat.Replacer ();
+});
+Clazz.defineMethod (c$, "getReplacer", 
+function () {
+return this.rp.getReplacer ();
+});
+Clazz.makeConstructor (c$, 
+function (auto) {
+this.rp =  new com.stevesoft.pat.Regex (null, "");
+this.auto_optimize = auto;
+this.tp =  new com.stevesoft.pat.TransPat ();
+this.rp.setReplaceRule ( new com.stevesoft.pat.TransRepRule (this));
+this.rp.thePattern = this.tp;
+}, "~B");
+Clazz.defineMethod (c$, "add", 
+function (r) {
+if (this.auto_optimize) {
+r.optimize ();
+}this.tp.ra[this.tp.ra_len++] = r;
+if (this.tp.ra.length == this.tp.ra_len) {
+var ra2 =  new Array (this.tp.ra_len + 10);
+for (var i = 0; i < this.tp.ra_len; i++) {
+ra2[i] = this.tp.ra[i];
+}
+this.tp.ra = ra2;
+}this.rp.numSubs_ = r.numSubs_ > this.rp.numSubs_ ? r.numSubs_ : this.rp.numSubs_;
+}, "com.stevesoft.pat.Regex");
+Clazz.defineMethod (c$, "patterns", 
+function () {
+return this.tp.ra_len;
+});
+Clazz.defineMethod (c$, "getRegexAt", 
+function (i) {
+if (i >= this.tp.ra_len) {
+throw  new ArrayIndexOutOfBoundsException ("i=" + i + ">=" + this.patterns ());
+}if (i < 0) {
+throw  new ArrayIndexOutOfBoundsException ("i=" + i + "< 0");
+}return this.tp.ra[i];
+}, "~N");
+Clazz.defineMethod (c$, "setRegexAt", 
+function (rx, i) {
+if (i >= this.tp.ra_len) {
+throw  new ArrayIndexOutOfBoundsException ("i=" + i + ">=" + this.patterns ());
+}if (i < 0) {
+throw  new ArrayIndexOutOfBoundsException ("i=" + i + "< 0");
+}this.tp.ra[i] = rx;
+}, "com.stevesoft.pat.Regex,~N");
+Clazz.defineMethod (c$, "add", 
+function (rs) {
+var r = com.stevesoft.pat.Regex.perlCode (rs);
+if (r == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.formatMessage ("exception.bad_pattern_to_regex_perl_code",  Clazz.newArray (-1, [rs])));
+}this.add (r);
+}, "~S");
+Clazz.defineMethod (c$, "add", 
+function (array) {
+for (var i = 0; i < array.length; i++) {
+this.add (array[i]);
+}
+}, "~A");
+Clazz.defineMethod (c$, "replaceAll", 
+function (s) {
+return this.dorep (s, 0, s.length);
+}, "~S");
+Clazz.defineMethod (c$, "replaceAll", 
+function (s) {
+return this.dorep (s, 0, s.length ());
+}, "com.stevesoft.pat.StringLike");
+Clazz.defineMethod (c$, "replaceAllFrom", 
+function (s, start) {
+return this.dorep (s, start, s.length);
+}, "~S,~N");
+Clazz.defineMethod (c$, "replaceAllRegion", 
+function (s, start, end) {
+return this.dorep (s, start, end);
+}, "~S,~N,~N");
+Clazz.defineMethod (c$, "dorep", 
+function (s, start, end) {
+var tfmd = this.repr.replaceAllRegion (s, this.rp, start, end);
+this.tp.lastMatchedTo = this.repr.$lastMatchedTo;
+return tfmd;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz.defineMethod (c$, "dorep", 
+function (s, start, end) {
+return this.dorep ( new com.stevesoft.pat.wrap.StringWrap (s), start, end).toString ();
+}, "~S,~N,~N");
+Clazz.defineMethod (c$, "replaceFirst", 
+function (s) {
+return this.dorep (s, 0, s.length);
+}, "~S");
+Clazz.defineMethod (c$, "replaceFirstFrom", 
+function (s, start) {
+return this.dorep (s, start, s.length);
+}, "~S,~N");
+Clazz.defineMethod (c$, "replaceFirstRegion", 
+function (s, start, end) {
+return this.dorep (s, start, end);
+}, "~S,~N,~N");
+});
index e1731a4..18aa516 100644 (file)
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Validator"], "com.stevesoft.pat.UniValidator", ["com.stevesoft.pat.patInt"], function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "UniValidator", com.stevesoft.pat.Validator);\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (1);\r
-});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (1);\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Validator"], "com.stevesoft.pat.UniValidator", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "UniValidator", com.stevesoft.pat.Validator);
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+});
index 6573d7b..3058320 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-c$ = Clazz.declareType (com.stevesoft.pat, "Util");\r
+Clazz.declarePackage ("com.stevesoft.pat");
+c$ = Clazz.declareType (com.stevesoft.pat, "Util");
index c929431..e364969 100644 (file)
@@ -1,24 +1,24 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (null, "com.stevesoft.pat.Validator", ["com.stevesoft.pat.patInf", "$.patInt"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.argsave = null;\r
-this.pattern = ".";\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "Validator");\r
-Clazz.defineMethod (c$, "validate", \r
-function (src, start, end) {\r
-return end;\r
-}, "com.stevesoft.pat.StringLike,~N,~N");\r
-Clazz.defineMethod (c$, "arg", \r
-function (s) {\r
-return null;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "minChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (0);\r
-});\r
-Clazz.defineMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInf ();\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, "com.stevesoft.pat.Validator", ["com.stevesoft.pat.patInf", "$.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.argsave = null;
+this.pattern = ".";
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "Validator");
+Clazz.defineMethod (c$, "validate", 
+function (src, start, end) {
+return end;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz.defineMethod (c$, "arg", 
+function (s) {
+return null;
+}, "~S");
+Clazz.defineMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (0);
+});
+Clazz.defineMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInf ();
+});
+});
index e305e86..b572563 100644 (file)
@@ -1,15 +1,15 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.WantMoreTextReplaceRule", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "WantMoreTextReplaceRule", com.stevesoft.pat.SpecialRule);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.WantMoreTextReplaceRule, []);\r
-});\r
-Clazz.overrideMethod (c$, "apply", \r
-function (sb, res) {\r
-}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");\r
-Clazz.overrideMethod (c$, "toString1", \r
-function () {\r
-return "${WANT_MORE_TEXT}";\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.WantMoreTextReplaceRule", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "WantMoreTextReplaceRule", com.stevesoft.pat.SpecialRule);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.WantMoreTextReplaceRule, []);
+});
+Clazz.overrideMethod (c$, "apply", 
+function (sb, res) {
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz.overrideMethod (c$, "toString1", 
+function () {
+return "${WANT_MORE_TEXT}";
+});
+});
index 05e888d..6b9fe88 100644 (file)
@@ -1,62 +1,62 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Or"], "com.stevesoft.pat.lookAhead", ["com.stevesoft.pat.patInt"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.reverse = false;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "lookAhead", com.stevesoft.pat.Or);\r
-Clazz.makeConstructor (c$, \r
-function (b) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.lookAhead, []);\r
-this.reverse = b;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getNext", \r
-function () {\r
-return null;\r
-});\r
-Clazz.overrideMethod (c$, "nextMatch", \r
-function (pos, pt) {\r
-var p = Clazz.superCall (this, com.stevesoft.pat.lookAhead, "getNext", []);\r
-if (p != null) {\r
-return p.matchInternal (pos, pt);\r
-} else {\r
-return pos;\r
-}}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.defineMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-if (Clazz.superCall (this, com.stevesoft.pat.lookAhead, "matchInternal", [pos, pt]) >= 0) {\r
-if (this.reverse) {\r
-return -1;\r
-} else {\r
-return this.nextMatch (pos, pt);\r
-}} else {\r
-if (this.reverse) {\r
-return this.nextMatch (pos, pt);\r
-} else {\r
-return -1;\r
-}}}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "leftForm", \r
-function () {\r
-if (this.reverse) {\r
-return "(?!";\r
-} else {\r
-return "(?=";\r
-}});\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (0);\r
-});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (0);\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-var la =  new com.stevesoft.pat.lookAhead (this.reverse);\r
-h.put (this, la);\r
-h.put (la, la);\r
-for (var i = 0; i < this.v.size (); i++) {\r
-la.v.addElement ((this.v.elementAt (i)).clone (h));\r
-}\r
-return la;\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Or"], "com.stevesoft.pat.lookAhead", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.reverse = false;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "lookAhead", com.stevesoft.pat.Or);
+Clazz.makeConstructor (c$, 
+function (b) {
+Clazz.superConstructor (this, com.stevesoft.pat.lookAhead, []);
+this.reverse = b;
+}, "~B");
+Clazz.defineMethod (c$, "getNext", 
+function () {
+return null;
+});
+Clazz.overrideMethod (c$, "nextMatch", 
+function (pos, pt) {
+var p = Clazz.superCall (this, com.stevesoft.pat.lookAhead, "getNext", []);
+if (p != null) {
+return p.matchInternal (pos, pt);
+} else {
+return pos;
+}}, "~N,com.stevesoft.pat.Pthings");
+Clazz.defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (Clazz.superCall (this, com.stevesoft.pat.lookAhead, "matchInternal", [pos, pt]) >= 0) {
+if (this.reverse) {
+return -1;
+} else {
+return this.nextMatch (pos, pt);
+}} else {
+if (this.reverse) {
+return this.nextMatch (pos, pt);
+} else {
+return -1;
+}}}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "leftForm", 
+function () {
+if (this.reverse) {
+return "(?!";
+} else {
+return "(?=";
+}});
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (0);
+});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (0);
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+var la =  new com.stevesoft.pat.lookAhead (this.reverse);
+h.put (this, la);
+h.put (la, la);
+for (var i = 0; i < this.v.size (); i++) {
+la.v.addElement ((this.v.elementAt (i)).clone (h));
+}
+return la;
+}, "java.util.Hashtable");
+});
index 3dac704..1fbc400 100644 (file)
@@ -1,55 +1,55 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.oneChar", ["com.stevesoft.pat.CaseMgr", "$.patInt"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.c = '\0';\r
-this.altc = '\0';\r
-this.altc2 = '\0';\r
-this.mask = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "oneChar", com.stevesoft.pat.Pattern);\r
-Clazz.makeConstructor (c$, \r
-function (ci) {\r
-Clazz.superConstructor (this, com.stevesoft.pat.oneChar, []);\r
-this.c = ci;\r
-var cu;\r
-var cl;\r
-var ct;\r
-cu = com.stevesoft.pat.CaseMgr.toUpperCaseC (this.c);\r
-cl = com.stevesoft.pat.CaseMgr.toLowerCaseC (this.c);\r
-ct = com.stevesoft.pat.CaseMgr.toTitleCaseC (this.c);\r
-if (this.c == cu) {\r
-this.altc = cl;\r
-this.altc2 = ct;\r
-} else if (this.c == cl) {\r
-this.altc = cu;\r
-this.altc2 = ct;\r
-} else {\r
-this.altc = cl;\r
-this.altc2 = cu;\r
-}this.mask = this.c.charCodeAt (0) & this.altc.charCodeAt (0) & this.altc2.charCodeAt (0);\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "matchInternal", \r
-function (pos, pt) {\r
-var p;\r
-var ret = -1;\r
-if (pos < pt.src.length () && !this.Masked (pos, pt) && ((p = pt.src.charAt (pos)) == this.c || (pt.ignoreCase && (p == this.altc || p == this.altc2)))) {\r
-ret = this.nextMatch (pos + 1, pt);\r
-}return ret;\r
-}, "~N,com.stevesoft.pat.Pthings");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return com.stevesoft.pat.Pattern.protect ("" + this.c, "[]{}(),$,-\"^.", '\\') + this.nextString ();\r
-});\r
-Clazz.overrideMethod (c$, "minChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (1);\r
-});\r
-Clazz.overrideMethod (c$, "maxChars", \r
-function () {\r
-return  new com.stevesoft.pat.patInt (1);\r
-});\r
-Clazz.overrideMethod (c$, "clone1", \r
-function (h) {\r
-return  new com.stevesoft.pat.oneChar (this.c);\r
-}, "java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.oneChar", ["com.stevesoft.pat.CaseMgr", "$.patInt"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.c = '\0';
+this.altc = '\0';
+this.altc2 = '\0';
+this.mask = 0;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "oneChar", com.stevesoft.pat.Pattern);
+Clazz.makeConstructor (c$, 
+function (ci) {
+Clazz.superConstructor (this, com.stevesoft.pat.oneChar, []);
+this.c = ci;
+var cu;
+var cl;
+var ct;
+cu = com.stevesoft.pat.CaseMgr.toUpperCaseC (this.c);
+cl = com.stevesoft.pat.CaseMgr.toLowerCaseC (this.c);
+ct = com.stevesoft.pat.CaseMgr.toTitleCaseC (this.c);
+if (this.c == cu) {
+this.altc = cl;
+this.altc2 = ct;
+} else if (this.c == cl) {
+this.altc = cu;
+this.altc2 = ct;
+} else {
+this.altc = cl;
+this.altc2 = cu;
+}this.mask = this.c.charCodeAt (0) & this.altc.charCodeAt (0) & this.altc2.charCodeAt (0);
+}, "~S");
+Clazz.overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+var p;
+var ret = -1;
+if (pos < pt.src.length () && !this.Masked (pos, pt) && ((p = pt.src.charAt (pos)) == this.c || (pt.ignoreCase && (p == this.altc || p == this.altc2)))) {
+ret = this.nextMatch (pos + 1, pt);
+}return ret;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return com.stevesoft.pat.Pattern.protect ("" + this.c, "[]{}(),$,-\"^.", '\\') + this.nextString ();
+});
+Clazz.overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz.overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.oneChar (this.c);
+}, "java.util.Hashtable");
+});
index c28d225..1c96a94 100644 (file)
@@ -1,34 +1,34 @@
-var path = ClazzLoader.getClasspathFor ("com.stevesoft.pat.package");\r
-path = path.substring (0, path.lastIndexOf ("package.js"));\r
-ClazzLoader.jarClasspath (path + "Transformer.js", [\r
-"com.stevesoft.pat.Transformer",\r
-"$.TransRepRule"]);\r
-ClazzLoader.jarClasspath (path + "Replacer.js", [\r
-"com.stevesoft.pat.RegHolder",\r
-"$.Replacer",\r
-"$.CodeVal"]);\r
-ClazzLoader.jarClasspath (path + "Regex.js", [\r
-"com.stevesoft.pat.UnicodeW",\r
-"$.UnicodeCurrency",\r
-"$.UnicodeAlpha",\r
-"$.UnicodeUpper",\r
-"$.NUnicodeCurrency",\r
-"$.NUnicodeW",\r
-"$.NUnicodeAlpha",\r
-"$.UnicodeMath",\r
-"$.UnicodeWhite",\r
-"$.UnicodeDigit",\r
-"$.NUnicodeMath",\r
-"$.Regex",\r
-"$.NUnicodeDigit",\r
-"$.NUnicodeWhite",\r
-"$.NUnicodePunct",\r
-"$.UnicodePunct",\r
-"$.UnicodeLower"]);\r
-ClazzLoader.jarClasspath (path + "RegOpt.js", [\r
-"com.stevesoft.pat.Branch",\r
-"$.RegOpt",\r
-"$.FastChar"]);\r
-ClazzLoader.jarClasspath (path + "Range.js", [\r
-"com.stevesoft.pat.BadRangeArgs",\r
-"$.Range"]);\r
+var path = ClazzLoader.getClasspathFor ("com.stevesoft.pat.package");
+path = path.substring (0, path.lastIndexOf ("package.js"));
+ClazzLoader.jarClasspath (path + "Range.js", [
+"com.stevesoft.pat.BadRangeArgs",
+"$.Range"]);
+ClazzLoader.jarClasspath (path + "RegOpt.js", [
+"com.stevesoft.pat.Branch",
+"$.RegOpt",
+"$.FastChar"]);
+ClazzLoader.jarClasspath (path + "Regex.js", [
+"com.stevesoft.pat.UnicodeW",
+"$.UnicodeCurrency",
+"$.UnicodeAlpha",
+"$.UnicodeUpper",
+"$.NUnicodeCurrency",
+"$.NUnicodeW",
+"$.NUnicodeAlpha",
+"$.UnicodeMath",
+"$.UnicodeWhite",
+"$.UnicodeDigit",
+"$.NUnicodeMath",
+"$.Regex",
+"$.NUnicodeDigit",
+"$.NUnicodeWhite",
+"$.NUnicodePunct",
+"$.UnicodePunct",
+"$.UnicodeLower"]);
+ClazzLoader.jarClasspath (path + "Replacer.js", [
+"com.stevesoft.pat.RegHolder",
+"$.Replacer",
+"$.CodeVal"]);
+ClazzLoader.jarClasspath (path + "Transformer.js", [
+"com.stevesoft.pat.Transformer",
+"$.TransRepRule"]);
index 09045a1..6c525dc 100644 (file)
Binary files a/bin/com/stevesoft/pat/parsePerl.class and b/bin/com/stevesoft/pat/parsePerl.class differ
index 005236e..d34fbd4 100644 (file)
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (null, "com.stevesoft.pat.parsePerl", ["com.stevesoft.pat.CaseMgr", "$.Prop", "$.RegSyntaxError", "$.Regex", "$.ReplaceRule", "$.StringRule", "java.lang.StringBuffer"], function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "parsePerl");\r
-c$.close = Clazz.defineMethod (c$, "close", \r
-function (c) {\r
-if (c == '<') {\r
-return '>';\r
-}if (c == '[') {\r
-return ']';\r
-}if (c == '(') {\r
-return ')';\r
-}if (c == '{') {\r
-return '}';\r
-}return c;\r
-}, "~S");\r
-c$.codify = Clazz.defineMethod (c$, "codify", \r
-function (s, keepbs) {\r
-return com.stevesoft.pat.parsePerl.codifyRange (s, 0, s.length, keepbs);\r
-}, "~S,~B");\r
-c$.codifyRange = Clazz.defineMethod (c$, "codifyRange", \r
-function (s, i0, iN, keepbs) {\r
-var sb =  new StringBuffer ();\r
-var ucmode = false;\r
-var lcmode = false;\r
-var litmode = false;\r
-var uc1 = false;\r
-var lc1 = false;\r
-var modified = false;\r
-for (var i = i0; i < iN; i++) {\r
-var c = s.charAt (i);\r
-var mf = true;\r
-var app = true;\r
-if (c == '\\') {\r
-app = false;\r
-i++;\r
-if (i < s.length) {\r
-var c2 = s.charAt (i);\r
-switch (c2) {\r
-case 'Q':\r
-litmode = true;\r
-break;\r
-case 'U':\r
-ucmode = true;\r
-break;\r
-case 'L':\r
-lcmode = true;\r
-break;\r
-case 'u':\r
-uc1 = true;\r
-break;\r
-case 'l':\r
-lc1 = true;\r
-break;\r
-case 'E':\r
-uc1 = lc1 = ucmode = lcmode = litmode = false;\r
-break;\r
-default:\r
-if (keepbs) {\r
-sb.append ('\\');\r
-}c = c2;\r
-if (keepbs) {\r
-mf = false;\r
-}app = true;\r
-break;\r
-}\r
-modified = new Boolean (modified | mf).valueOf ();\r
-}}if (app) {\r
-if (lc1) {\r
-c = com.stevesoft.pat.parsePerl.lc (c);\r
-lc1 = false;\r
-} else if (uc1) {\r
-c = com.stevesoft.pat.parsePerl.uc (c);\r
-uc1 = false;\r
-} else if (ucmode) {\r
-c = com.stevesoft.pat.parsePerl.uc (c);\r
-} else if (lcmode) {\r
-c = com.stevesoft.pat.parsePerl.lc (c);\r
-}if (litmode && com.stevesoft.pat.parsePerl.needbs (c)) {\r
-sb.append ('\\');\r
-}sb.append (c);\r
-}}\r
-return modified ? sb.toString () : s;\r
-}, "~S,~N,~N,~B");\r
-c$.uc = Clazz.defineMethod (c$, "uc", \r
-function (c) {\r
-return com.stevesoft.pat.CaseMgr.toUpperCaseC (c);\r
-}, "~S");\r
-c$.lc = Clazz.defineMethod (c$, "lc", \r
-function (c) {\r
-return com.stevesoft.pat.CaseMgr.toLowerCaseC (c);\r
-}, "~S");\r
-c$.needbs = Clazz.defineMethod (c$, "needbs", \r
-function (c) {\r
-if (c >= 'a' && c <= 'z') {\r
-return false;\r
-}if (c >= 'A' && c <= 'Z') {\r
-return false;\r
-}if (c >= '0' && c <= '9') {\r
-return false;\r
-}if (c == '_') {\r
-return false;\r
-}return true;\r
-}, "~S");\r
-c$.parse = Clazz.defineMethod (c$, "parse", \r
-function (s) {\r
-var igncase = false;\r
-var optim = false;\r
-var gFlag = false;\r
-var sFlag = false;\r
-var mFlag = false;\r
-var xFlag = false;\r
-var s1 =  new StringBuffer ();\r
-var s2 =  new StringBuffer ();\r
-var i = 0;\r
-var count = 0;\r
-var mode;\r
-var delim = '/';\r
-var cdelim = '/';\r
-if (s.length >= 3 && s.charAt (0) == 's') {\r
-mode = 's';\r
-delim = s.charAt (1);\r
-cdelim = com.stevesoft.pat.parsePerl.close (delim);\r
-i = 2;\r
-} else if (s.length >= 2 && s.charAt (0) == 'm') {\r
-mode = 'm';\r
-delim = s.charAt (1);\r
-cdelim = com.stevesoft.pat.parsePerl.close (delim);\r
-i = 2;\r
-} else if (s.length >= 1 && s.charAt (0) == '/') {\r
-mode = 'm';\r
-i = 1;\r
-} else {\r
-try {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("Regex.perlCode should be of the form s/// or m// or //");\r
-} catch (rs) {\r
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {\r
-} else {\r
-throw rs;\r
-}\r
-}\r
-return null;\r
-}for (; i < s.length; i++) {\r
-if (s.charAt (i) == '\\') {\r
-s1.append ('\\');\r
-i++;\r
-} else if (s.charAt (i) == cdelim && count == 0) {\r
-i++;\r
-break;\r
-} else if (s.charAt (i) == delim && cdelim != delim) {\r
-count++;\r
-} else if (s.charAt (i) == cdelim && cdelim != delim) {\r
-count--;\r
-}s1.append (s.charAt (i));\r
-}\r
-if (mode == 's' && cdelim != delim) {\r
-while (i < s.length && com.stevesoft.pat.Prop.isWhite (s.charAt (i))) {\r
-i++;\r
-}\r
-if (i >= s.length) {\r
-try {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("" + mode + delim + " needs " + cdelim);\r
-} catch (rs) {\r
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {\r
-} else {\r
-throw rs;\r
-}\r
-}\r
-return null;\r
-}cdelim = com.stevesoft.pat.parsePerl.close (delim = s.charAt (i));\r
-i++;\r
-}count = 0;\r
-if (mode == 's') {\r
-for (; i < s.length; i++) {\r
-if (s.charAt (i) == '\\') {\r
-s2.append ('\\');\r
-i++;\r
-} else if (s.charAt (i) == cdelim && count == 0) {\r
-i++;\r
-break;\r
-} else if (s.charAt (i) == delim && cdelim != delim) {\r
-count++;\r
-} else if (s.charAt (i) == cdelim && cdelim != delim) {\r
-count--;\r
-}s2.append (s.charAt (i));\r
-}\r
-}for (; i < s.length; i++) {\r
-var c = s.charAt (i);\r
-switch (c) {\r
-case 'x':\r
-xFlag = true;\r
-break;\r
-case 'i':\r
-igncase = true;\r
-break;\r
-case 'o':\r
-optim = true;\r
-break;\r
-case 's':\r
-sFlag = true;\r
-break;\r
-case 'm':\r
-mFlag = true;\r
-break;\r
-case 'g':\r
-gFlag = true;\r
-break;\r
-default:\r
-try {\r
-com.stevesoft.pat.RegSyntaxError.endItAll ("Illegal flag to pattern: " + c);\r
-} catch (rs) {\r
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {\r
-} else {\r
-throw rs;\r
-}\r
-}\r
-return null;\r
-}\r
-}\r
-var r =  new com.stevesoft.pat.Regex (null, "");\r
-try {\r
-var pat = s1.toString ();\r
-var reprul = s2.toString ();\r
-if (xFlag) {\r
-pat = com.stevesoft.pat.parsePerl.strip (pat);\r
-reprul = com.stevesoft.pat.parsePerl.strip (reprul);\r
-}r.compile (pat);\r
-r.ignoreCase = new Boolean (r.ignoreCase | igncase).valueOf ();\r
-r.gFlag = new Boolean (r.gFlag | gFlag).valueOf ();\r
-r.sFlag = new Boolean (r.sFlag | sFlag).valueOf ();\r
-r.mFlag = new Boolean (r.mFlag | mFlag).valueOf ();\r
-if (optim) {\r
-r.optimize ();\r
-}if (delim == '\'') {\r
-r.setReplaceRule ( new com.stevesoft.pat.StringRule (reprul));\r
-} else {\r
-r.setReplaceRule (com.stevesoft.pat.ReplaceRule.perlCode (reprul));\r
-}} catch (rs) {\r
-if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {\r
-r = null;\r
-} else {\r
-throw rs;\r
-}\r
-}\r
-return r;\r
-}, "~S");\r
-c$.strip = Clazz.defineMethod (c$, "strip", \r
-function (s) {\r
-var sb =  new StringBuffer ();\r
-for (var i = 0; i < s.length; i++) {\r
-var c = s.charAt (i);\r
-if (com.stevesoft.pat.Prop.isWhite (c)) {\r
-;} else if (c == '#') {\r
-i++;\r
-while (i < s.length) {\r
-if (s.charAt (i) == '\n') {\r
-break;\r
-}i++;\r
-}\r
-} else if (c == '\\') {\r
-sb.append (c);\r
-sb.append (s.charAt (++i));\r
-} else {\r
-sb.append (c);\r
-}}\r
-return sb.toString ();\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (null, "com.stevesoft.pat.parsePerl", ["com.stevesoft.pat.CaseMgr", "$.Prop", "$.RegSyntaxError", "$.Regex", "$.ReplaceRule", "$.StringRule", "java.lang.StringBuffer"], function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "parsePerl");
+c$.close = Clazz.defineMethod (c$, "close", 
+function (c) {
+if (c == '<') {
+return '>';
+}if (c == '[') {
+return ']';
+}if (c == '(') {
+return ')';
+}if (c == '{') {
+return '}';
+}return c;
+}, "~S");
+c$.codify = Clazz.defineMethod (c$, "codify", 
+function (s, keepbs) {
+return com.stevesoft.pat.parsePerl.codifyRange (s, 0, s.length, keepbs);
+}, "~S,~B");
+c$.codifyRange = Clazz.defineMethod (c$, "codifyRange", 
+function (s, i0, iN, keepbs) {
+var sb =  new StringBuffer ();
+var ucmode = false;
+var lcmode = false;
+var litmode = false;
+var uc1 = false;
+var lc1 = false;
+var modified = false;
+for (var i = i0; i < iN; i++) {
+var c = s.charAt (i);
+var mf = true;
+var app = true;
+if (c == '\\') {
+app = false;
+i++;
+if (i < s.length) {
+var c2 = s.charAt (i);
+switch (c2) {
+case 'Q':
+litmode = true;
+break;
+case 'U':
+ucmode = true;
+break;
+case 'L':
+lcmode = true;
+break;
+case 'u':
+uc1 = true;
+break;
+case 'l':
+lc1 = true;
+break;
+case 'E':
+uc1 = lc1 = ucmode = lcmode = litmode = false;
+break;
+default:
+if (keepbs) {
+sb.append ('\\');
+}c = c2;
+if (keepbs) {
+mf = false;
+}app = true;
+break;
+}
+modified = new Boolean (modified | mf).valueOf ();
+}}if (app) {
+if (lc1) {
+c = com.stevesoft.pat.parsePerl.lc (c);
+lc1 = false;
+} else if (uc1) {
+c = com.stevesoft.pat.parsePerl.uc (c);
+uc1 = false;
+} else if (ucmode) {
+c = com.stevesoft.pat.parsePerl.uc (c);
+} else if (lcmode) {
+c = com.stevesoft.pat.parsePerl.lc (c);
+}if (litmode && com.stevesoft.pat.parsePerl.needbs (c)) {
+sb.append ('\\');
+}sb.append (c);
+}}
+return modified ? sb.toString () : s;
+}, "~S,~N,~N,~B");
+c$.uc = Clazz.defineMethod (c$, "uc", 
+function (c) {
+return com.stevesoft.pat.CaseMgr.toUpperCaseC (c);
+}, "~S");
+c$.lc = Clazz.defineMethod (c$, "lc", 
+function (c) {
+return com.stevesoft.pat.CaseMgr.toLowerCaseC (c);
+}, "~S");
+c$.needbs = Clazz.defineMethod (c$, "needbs", 
+function (c) {
+if (c >= 'a' && c <= 'z') {
+return false;
+}if (c >= 'A' && c <= 'Z') {
+return false;
+}if (c >= '0' && c <= '9') {
+return false;
+}if (c == '_') {
+return false;
+}return true;
+}, "~S");
+c$.parse = Clazz.defineMethod (c$, "parse", 
+function (s) {
+var igncase = false;
+var optim = false;
+var gFlag = false;
+var sFlag = false;
+var mFlag = false;
+var xFlag = false;
+var s1 =  new StringBuffer ();
+var s2 =  new StringBuffer ();
+var i = 0;
+var count = 0;
+var mode;
+var delim = '/';
+var cdelim = '/';
+if (s.length >= 3 && s.charAt (0) == 's') {
+mode = 's';
+delim = s.charAt (1);
+cdelim = com.stevesoft.pat.parsePerl.close (delim);
+i = 2;
+} else if (s.length >= 2 && s.charAt (0) == 'm') {
+mode = 'm';
+delim = s.charAt (1);
+cdelim = com.stevesoft.pat.parsePerl.close (delim);
+i = 2;
+} else if (s.length >= 1 && s.charAt (0) == '/') {
+mode = 'm';
+i = 1;
+} else {
+try {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Regex.perlCode should be of the form s/// or m// or //");
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw rs;
+}
+}
+return null;
+}for (; i < s.length; i++) {
+if (s.charAt (i) == '\\') {
+s1.append ('\\');
+i++;
+} else if (s.charAt (i) == cdelim && count == 0) {
+i++;
+break;
+} else if (s.charAt (i) == delim && cdelim != delim) {
+count++;
+} else if (s.charAt (i) == cdelim && cdelim != delim) {
+count--;
+}s1.append (s.charAt (i));
+}
+if (mode == 's' && cdelim != delim) {
+while (i < s.length && com.stevesoft.pat.Prop.isWhite (s.charAt (i))) {
+i++;
+}
+if (i >= s.length) {
+try {
+com.stevesoft.pat.RegSyntaxError.endItAll ("" + mode + delim + " needs " + cdelim);
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw rs;
+}
+}
+return null;
+}cdelim = com.stevesoft.pat.parsePerl.close (delim = s.charAt (i));
+i++;
+}count = 0;
+if (mode == 's') {
+for (; i < s.length; i++) {
+if (s.charAt (i) == '\\') {
+s2.append ('\\');
+i++;
+} else if (s.charAt (i) == cdelim && count == 0) {
+i++;
+break;
+} else if (s.charAt (i) == delim && cdelim != delim) {
+count++;
+} else if (s.charAt (i) == cdelim && cdelim != delim) {
+count--;
+}s2.append (s.charAt (i));
+}
+}for (; i < s.length; i++) {
+var c = s.charAt (i);
+switch (c) {
+case 'x':
+xFlag = true;
+break;
+case 'i':
+igncase = true;
+break;
+case 'o':
+optim = true;
+break;
+case 's':
+sFlag = true;
+break;
+case 'm':
+mFlag = true;
+break;
+case 'g':
+gFlag = true;
+break;
+default:
+try {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Illegal flag to pattern: " + c);
+} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw rs;
+}
+}
+return null;
+}
+}
+var r =  new com.stevesoft.pat.Regex (null, "");
+try {
+var pat = s1.toString ();
+var reprul = s2.toString ();
+if (xFlag) {
+pat = com.stevesoft.pat.parsePerl.strip (pat);
+reprul = com.stevesoft.pat.parsePerl.strip (reprul);
+}r.compile (pat);
+r.ignoreCase = new Boolean (r.ignoreCase | igncase).valueOf ();
+r.gFlag = new Boolean (r.gFlag | gFlag).valueOf ();
+r.sFlag = new Boolean (r.sFlag | sFlag).valueOf ();
+r.mFlag = new Boolean (r.mFlag | mFlag).valueOf ();
+if (optim) {
+r.optimize ();
+}if (delim == '\'') {
+r.setReplaceRule ( new com.stevesoft.pat.StringRule (reprul));
+} else {
+r.setReplaceRule (com.stevesoft.pat.ReplaceRule.perlCode (reprul));
+}} catch (rs) {
+if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+r = null;
+} else {
+throw rs;
+}
+}
+return r;
+}, "~S");
+c$.strip = Clazz.defineMethod (c$, "strip", 
+function (s) {
+var sb =  new StringBuffer ();
+for (var i = 0; i < s.length; i++) {
+var c = s.charAt (i);
+if (com.stevesoft.pat.Prop.isWhite (c)) {
+;} else if (c == '#') {
+i++;
+while (i < s.length) {
+if (s.charAt (i) == '\n') {
+break;
+}i++;
+}
+} else if (c == '\\') {
+sb.append (c);
+sb.append (s.charAt (++i));
+} else {
+sb.append (c);
+}}
+return sb.toString ();
+}, "~S");
+});
index daf7087..1e11499 100644 (file)
@@ -1,9 +1,9 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-Clazz.load (["com.stevesoft.pat.patInt"], "com.stevesoft.pat.patInf", null, function () {\r
-c$ = Clazz.declareType (com.stevesoft.pat, "patInf", com.stevesoft.pat.patInt);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, com.stevesoft.pat.patInf, []);\r
-this.inf = true;\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+Clazz.load (["com.stevesoft.pat.patInt"], "com.stevesoft.pat.patInf", null, function () {
+c$ = Clazz.declareType (com.stevesoft.pat, "patInf", com.stevesoft.pat.patInt);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, com.stevesoft.pat.patInf, []);
+this.inf = true;
+});
+});
index 2d65e56..b7226f7 100644 (file)
@@ -1,94 +1,94 @@
-Clazz.declarePackage ("com.stevesoft.pat");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.i = 0;\r
-this.inf = false;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat, "patInt");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.i = 0;\r
-this.inf = false;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (init) {\r
-this.i = init;\r
-this.inf = false;\r
-}, "~N");\r
-Clazz.makeConstructor (c$, \r
-function (p) {\r
-this.i = p.i;\r
-this.inf = p.inf;\r
-}, "com.stevesoft.pat.patInt");\r
-Clazz.defineMethod (c$, "setInf", \r
-function (b) {\r
-this.inf = b;\r
-if (b) {\r
-this.i = 2147483647;\r
-}}, "~B");\r
-Clazz.defineMethod (c$, "inc", \r
-function () {\r
-if (!this.inf) {\r
-this.i++;\r
-}});\r
-Clazz.defineMethod (c$, "dec", \r
-function () {\r
-if (!this.inf) {\r
-this.i--;\r
-}});\r
-Clazz.defineMethod (c$, "lessEq", \r
-function (j) {\r
-return !this.inf && (j.inf || this.i <= j.i);\r
-}, "com.stevesoft.pat.patInt");\r
-Clazz.defineMethod (c$, "equals", \r
-function (j) {\r
-return !j.inf && !this.inf && this.i == j.i;\r
-}, "com.stevesoft.pat.patInt");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-if (this.inf) {\r
-return "";\r
-} else {\r
-return "" + this.i;\r
-}});\r
-Clazz.defineMethod (c$, "pluseq", \r
-function (p) {\r
-if (this.inf || p.inf) {\r
-this.setInf (true);\r
-} else {\r
-this.i += p.i;\r
-}return this;\r
-}, "com.stevesoft.pat.patInt");\r
-Clazz.defineMethod (c$, "mul", \r
-function (p) {\r
-if (this.inf || p.inf) {\r
-return  new com.stevesoft.pat.patInf ();\r
-}return  new com.stevesoft.pat.patInt (this.i * p.i);\r
-}, "com.stevesoft.pat.patInt");\r
-Clazz.defineMethod (c$, "mineq", \r
-function (p) {\r
-if (p.inf) {\r
-return this;\r
-}if (this.inf) {\r
-this.i = p.i;\r
-} else if (p.i < this.i) {\r
-this.i = p.i;\r
-}this.setInf (false);\r
-return this;\r
-}, "com.stevesoft.pat.patInt");\r
-Clazz.defineMethod (c$, "maxeq", \r
-function (p) {\r
-if (this.inf || p.inf) {\r
-this.setInf (true);\r
-return this;\r
-}if (p.i > this.i) {\r
-this.i = p.i;\r
-}return this;\r
-}, "com.stevesoft.pat.patInt");\r
-Clazz.defineMethod (c$, "finite", \r
-function () {\r
-return !this.inf;\r
-});\r
-Clazz.defineMethod (c$, "intValue", \r
-function () {\r
-return this.inf ? 2147483647 : this.i;\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat");
+c$ = Clazz.decorateAsClass (function () {
+this.i = 0;
+this.inf = false;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat, "patInt");
+Clazz.makeConstructor (c$, 
+function () {
+this.i = 0;
+this.inf = false;
+});
+Clazz.makeConstructor (c$, 
+function (init) {
+this.i = init;
+this.inf = false;
+}, "~N");
+Clazz.makeConstructor (c$, 
+function (p) {
+this.i = p.i;
+this.inf = p.inf;
+}, "com.stevesoft.pat.patInt");
+Clazz.defineMethod (c$, "setInf", 
+function (b) {
+this.inf = b;
+if (b) {
+this.i = 2147483647;
+}}, "~B");
+Clazz.defineMethod (c$, "inc", 
+function () {
+if (!this.inf) {
+this.i++;
+}});
+Clazz.defineMethod (c$, "dec", 
+function () {
+if (!this.inf) {
+this.i--;
+}});
+Clazz.defineMethod (c$, "lessEq", 
+function (j) {
+return !this.inf && (j.inf || this.i <= j.i);
+}, "com.stevesoft.pat.patInt");
+Clazz.defineMethod (c$, "equals", 
+function (j) {
+return !j.inf && !this.inf && this.i == j.i;
+}, "com.stevesoft.pat.patInt");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+if (this.inf) {
+return "";
+} else {
+return "" + this.i;
+}});
+Clazz.defineMethod (c$, "pluseq", 
+function (p) {
+if (this.inf || p.inf) {
+this.setInf (true);
+} else {
+this.i += p.i;
+}return this;
+}, "com.stevesoft.pat.patInt");
+Clazz.defineMethod (c$, "mul", 
+function (p) {
+if (this.inf || p.inf) {
+return  new com.stevesoft.pat.patInf ();
+}return  new com.stevesoft.pat.patInt (this.i * p.i);
+}, "com.stevesoft.pat.patInt");
+Clazz.defineMethod (c$, "mineq", 
+function (p) {
+if (p.inf) {
+return this;
+}if (this.inf) {
+this.i = p.i;
+} else if (p.i < this.i) {
+this.i = p.i;
+}this.setInf (false);
+return this;
+}, "com.stevesoft.pat.patInt");
+Clazz.defineMethod (c$, "maxeq", 
+function (p) {
+if (this.inf || p.inf) {
+this.setInf (true);
+return this;
+}if (p.i > this.i) {
+this.i = p.i;
+}return this;
+}, "com.stevesoft.pat.patInt");
+Clazz.defineMethod (c$, "finite", 
+function () {
+return !this.inf;
+});
+Clazz.defineMethod (c$, "intValue", 
+function () {
+return this.inf ? 2147483647 : this.i;
+});
index cfade25..ce61261 100644 (file)
@@ -1,38 +1,38 @@
-Clazz.declarePackage ("com.stevesoft.pat.wrap");\r
-Clazz.load (["com.stevesoft.pat.BasicStringBufferLike", "java.lang.StringBuffer"], "com.stevesoft.pat.wrap.CharArrayBufferWrap", ["com.stevesoft.pat.wrap.CharArrayWrap"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.sb = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat.wrap, "CharArrayBufferWrap", null, com.stevesoft.pat.BasicStringBufferLike);\r
-Clazz.prepareFields (c$, function () {\r
-this.sb =  new StringBuffer ();\r
-});\r
-Clazz.overrideMethod (c$, "appendC", \r
-function (c) {\r
-this.sb.append (c);\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "append", \r
-function (s) {\r
-this.sb.append (s);\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "toStringLike", \r
-function () {\r
-var ca =  Clazz.newCharArray (this.sb.length (), '\0');\r
-for (var i = 0; i < ca.length; i++) {\r
-ca[i] = this.sb.charAt (i);\r
-}\r
-return  new com.stevesoft.pat.wrap.CharArrayWrap (ca);\r
-});\r
-Clazz.defineMethod (c$, "length", \r
-function () {\r
-return this.sb.length ();\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return this.sb.toString ();\r
-});\r
-Clazz.overrideMethod (c$, "unwrap", \r
-function () {\r
-return this.sb;\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat.wrap");
+Clazz.load (["com.stevesoft.pat.BasicStringBufferLike", "java.lang.StringBuffer"], "com.stevesoft.pat.wrap.CharArrayBufferWrap", ["com.stevesoft.pat.wrap.CharArrayWrap"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.sb = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat.wrap, "CharArrayBufferWrap", null, com.stevesoft.pat.BasicStringBufferLike);
+Clazz.prepareFields (c$, function () {
+this.sb =  new StringBuffer ();
+});
+Clazz.overrideMethod (c$, "appendC", 
+function (c) {
+this.sb.append (c);
+}, "~S");
+Clazz.overrideMethod (c$, "append", 
+function (s) {
+this.sb.append (s);
+}, "~S");
+Clazz.overrideMethod (c$, "toStringLike", 
+function () {
+var ca =  Clazz.newCharArray (this.sb.length (), '\0');
+for (var i = 0; i < ca.length; i++) {
+ca[i] = this.sb.charAt (i);
+}
+return  new com.stevesoft.pat.wrap.CharArrayWrap (ca);
+});
+Clazz.defineMethod (c$, "length", 
+function () {
+return this.sb.length ();
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return this.sb.toString ();
+});
+Clazz.overrideMethod (c$, "unwrap", 
+function () {
+return this.sb;
+});
+});
index 374d1dd..679bede 100644 (file)
@@ -1,51 +1,51 @@
-Clazz.declarePackage ("com.stevesoft.pat.wrap");\r
-Clazz.load (["com.stevesoft.pat.StringLike"], "com.stevesoft.pat.wrap.CharArrayWrap", ["com.stevesoft.pat.wrap.CharArrayBufferWrap", "java.lang.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.ca = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat.wrap, "CharArrayWrap", null, com.stevesoft.pat.StringLike);\r
-Clazz.defineMethod (c$, "getCharArray", \r
-function () {\r
-return this.ca;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (ca) {\r
-this.ca = ca;\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return  String.instantialize (this.ca);\r
-});\r
-Clazz.overrideMethod (c$, "charAt", \r
-function (i) {\r
-return this.ca[i];\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "length", \r
-function () {\r
-return this.ca.length;\r
-});\r
-Clazz.overrideMethod (c$, "substring", \r
-function (i1, i2) {\r
-var sb =  new StringBuffer ();\r
-for (var i = i1; i < i2; i++) {\r
-sb.append (this.ca[i]);\r
-}\r
-return sb.toString ();\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "unwrap", \r
-function () {\r
-return this.ca;\r
-});\r
-Clazz.overrideMethod (c$, "newStringBufferLike", \r
-function () {\r
-return  new com.stevesoft.pat.wrap.CharArrayBufferWrap ();\r
-});\r
-Clazz.overrideMethod (c$, "indexOf", \r
-function (c) {\r
-for (var i = 0; i < this.ca.length; i++) {\r
-if (this.ca[i] == c) {\r
-return i;\r
-}}\r
-return -1;\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat.wrap");
+Clazz.load (["com.stevesoft.pat.StringLike"], "com.stevesoft.pat.wrap.CharArrayWrap", ["com.stevesoft.pat.wrap.CharArrayBufferWrap", "java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.ca = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat.wrap, "CharArrayWrap", null, com.stevesoft.pat.StringLike);
+Clazz.defineMethod (c$, "getCharArray", 
+function () {
+return this.ca;
+});
+Clazz.makeConstructor (c$, 
+function (ca) {
+this.ca = ca;
+}, "~A");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return  String.instantialize (this.ca);
+});
+Clazz.overrideMethod (c$, "charAt", 
+function (i) {
+return this.ca[i];
+}, "~N");
+Clazz.overrideMethod (c$, "length", 
+function () {
+return this.ca.length;
+});
+Clazz.overrideMethod (c$, "substring", 
+function (i1, i2) {
+var sb =  new StringBuffer ();
+for (var i = i1; i < i2; i++) {
+sb.append (this.ca[i]);
+}
+return sb.toString ();
+}, "~N,~N");
+Clazz.overrideMethod (c$, "unwrap", 
+function () {
+return this.ca;
+});
+Clazz.overrideMethod (c$, "newStringBufferLike", 
+function () {
+return  new com.stevesoft.pat.wrap.CharArrayBufferWrap ();
+});
+Clazz.overrideMethod (c$, "indexOf", 
+function (c) {
+for (var i = 0; i < this.ca.length; i++) {
+if (this.ca[i] == c) {
+return i;
+}}
+return -1;
+}, "~S");
+});
index a2b42c5..3b115fe 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("com.stevesoft.pat.wrap");\r
-c$ = Clazz.declareType (com.stevesoft.pat.wrap, "RandomAccessFileWrap");\r
+Clazz.declarePackage ("com.stevesoft.pat.wrap");
+c$ = Clazz.declareType (com.stevesoft.pat.wrap, "RandomAccessFileWrap");
index 811c548..ea57230 100644 (file)
@@ -1,34 +1,34 @@
-Clazz.declarePackage ("com.stevesoft.pat.wrap");\r
-Clazz.load (["com.stevesoft.pat.BasicStringBufferLike", "java.lang.StringBuffer"], "com.stevesoft.pat.wrap.StringBufferWrap", ["com.stevesoft.pat.wrap.StringWrap"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.sb = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat.wrap, "StringBufferWrap", null, com.stevesoft.pat.BasicStringBufferLike);\r
-Clazz.prepareFields (c$, function () {\r
-this.sb =  new StringBuffer ();\r
-});\r
-Clazz.overrideMethod (c$, "appendC", \r
-function (c) {\r
-this.sb.append (c);\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "append", \r
-function (s) {\r
-this.sb.append (s);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "length", \r
-function () {\r
-return this.sb.length ();\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return this.sb.toString ();\r
-});\r
-Clazz.overrideMethod (c$, "toStringLike", \r
-function () {\r
-return  new com.stevesoft.pat.wrap.StringWrap (this.sb.toString ());\r
-});\r
-Clazz.overrideMethod (c$, "unwrap", \r
-function () {\r
-return this.sb;\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat.wrap");
+Clazz.load (["com.stevesoft.pat.BasicStringBufferLike", "java.lang.StringBuffer"], "com.stevesoft.pat.wrap.StringBufferWrap", ["com.stevesoft.pat.wrap.StringWrap"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.sb = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat.wrap, "StringBufferWrap", null, com.stevesoft.pat.BasicStringBufferLike);
+Clazz.prepareFields (c$, function () {
+this.sb =  new StringBuffer ();
+});
+Clazz.overrideMethod (c$, "appendC", 
+function (c) {
+this.sb.append (c);
+}, "~S");
+Clazz.overrideMethod (c$, "append", 
+function (s) {
+this.sb.append (s);
+}, "~S");
+Clazz.defineMethod (c$, "length", 
+function () {
+return this.sb.length ();
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return this.sb.toString ();
+});
+Clazz.overrideMethod (c$, "toStringLike", 
+function () {
+return  new com.stevesoft.pat.wrap.StringWrap (this.sb.toString ());
+});
+Clazz.overrideMethod (c$, "unwrap", 
+function () {
+return this.sb;
+});
+});
index d8e9dfe..a468b0d 100644 (file)
@@ -1,39 +1,39 @@
-Clazz.declarePackage ("com.stevesoft.pat.wrap");\r
-Clazz.load (["com.stevesoft.pat.StringLike"], "com.stevesoft.pat.wrap.StringWrap", ["com.stevesoft.pat.wrap.StringBufferWrap"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.s = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat.wrap, "StringWrap", null, com.stevesoft.pat.StringLike);\r
-Clazz.makeConstructor (c$, \r
-function (s) {\r
-this.s = s;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return this.s;\r
-});\r
-Clazz.overrideMethod (c$, "charAt", \r
-function (i) {\r
-return this.s.charAt (i);\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "length", \r
-function () {\r
-return this.s.length;\r
-});\r
-Clazz.overrideMethod (c$, "substring", \r
-function (i1, i2) {\r
-return this.s.substring (i1, i2);\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "unwrap", \r
-function () {\r
-return this.s;\r
-});\r
-Clazz.overrideMethod (c$, "newStringBufferLike", \r
-function () {\r
-return  new com.stevesoft.pat.wrap.StringBufferWrap ();\r
-});\r
-Clazz.overrideMethod (c$, "indexOf", \r
-function (c) {\r
-return this.s.indexOf (c);\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat.wrap");
+Clazz.load (["com.stevesoft.pat.StringLike"], "com.stevesoft.pat.wrap.StringWrap", ["com.stevesoft.pat.wrap.StringBufferWrap"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.s = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat.wrap, "StringWrap", null, com.stevesoft.pat.StringLike);
+Clazz.makeConstructor (c$, 
+function (s) {
+this.s = s;
+}, "~S");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return this.s;
+});
+Clazz.overrideMethod (c$, "charAt", 
+function (i) {
+return this.s.charAt (i);
+}, "~N");
+Clazz.overrideMethod (c$, "length", 
+function () {
+return this.s.length;
+});
+Clazz.overrideMethod (c$, "substring", 
+function (i1, i2) {
+return this.s.substring (i1, i2);
+}, "~N,~N");
+Clazz.overrideMethod (c$, "unwrap", 
+function () {
+return this.s;
+});
+Clazz.overrideMethod (c$, "newStringBufferLike", 
+function () {
+return  new com.stevesoft.pat.wrap.StringBufferWrap ();
+});
+Clazz.overrideMethod (c$, "indexOf", 
+function (c) {
+return this.s.indexOf (c);
+}, "~S");
+});
index 4c80649..9eff73c 100644 (file)
@@ -1,41 +1,41 @@
-Clazz.declarePackage ("com.stevesoft.pat.wrap");\r
-Clazz.load (["com.stevesoft.pat.BasicStringBufferLike"], "com.stevesoft.pat.wrap.WriterWrap", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.w = null;\r
-Clazz.instantialize (this, arguments);\r
-}, com.stevesoft.pat.wrap, "WriterWrap", null, com.stevesoft.pat.BasicStringBufferLike);\r
-Clazz.makeConstructor (c$, \r
-function (w) {\r
-this.w = w;\r
-}, "java.io.Writer");\r
-Clazz.overrideMethod (c$, "appendC", \r
-function (c) {\r
-try {\r
-this.w.write ((c).charCodeAt (0));\r
-} catch (ioe) {\r
-if (Clazz.exceptionOf (ioe, java.io.IOException)) {\r
-} else {\r
-throw ioe;\r
-}\r
-}\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "append", \r
-function (s) {\r
-try {\r
-this.w.write (s);\r
-} catch (ioe) {\r
-if (Clazz.exceptionOf (ioe, java.io.IOException)) {\r
-} else {\r
-throw ioe;\r
-}\r
-}\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "toStringLike", \r
-function () {\r
-return null;\r
-});\r
-Clazz.overrideMethod (c$, "unwrap", \r
-function () {\r
-return this.w;\r
-});\r
-});\r
+Clazz.declarePackage ("com.stevesoft.pat.wrap");
+Clazz.load (["com.stevesoft.pat.BasicStringBufferLike"], "com.stevesoft.pat.wrap.WriterWrap", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.w = null;
+Clazz.instantialize (this, arguments);
+}, com.stevesoft.pat.wrap, "WriterWrap", null, com.stevesoft.pat.BasicStringBufferLike);
+Clazz.makeConstructor (c$, 
+function (w) {
+this.w = w;
+}, "java.io.Writer");
+Clazz.overrideMethod (c$, "appendC", 
+function (c) {
+try {
+this.w.write ((c).charCodeAt (0));
+} catch (ioe) {
+if (Clazz.exceptionOf (ioe, java.io.IOException)) {
+} else {
+throw ioe;
+}
+}
+}, "~S");
+Clazz.overrideMethod (c$, "append", 
+function (s) {
+try {
+this.w.write (s);
+} catch (ioe) {
+if (Clazz.exceptionOf (ioe, java.io.IOException)) {
+} else {
+throw ioe;
+}
+}
+}, "~S");
+Clazz.overrideMethod (c$, "toStringLike", 
+function () {
+return null;
+});
+Clazz.overrideMethod (c$, "unwrap", 
+function () {
+return this.w;
+});
+});
index 18df75b..c762cf3 100644 (file)
@@ -1,10 +1,10 @@
-Clazz.declarePackage ("fr.orsay.lri.varna.models.rna");\r
-c$ = Clazz.declareType (fr.orsay.lri.varna.models.rna, "RNA");\r
-Clazz.defineMethod (c$, "getSize", \r
-function () {\r
-return 0;\r
-});\r
-Clazz.defineMethod (c$, "getStructDBN", \r
-function (b) {\r
-return null;\r
-}, "~B");\r
+Clazz.declarePackage ("fr.orsay.lri.varna.models.rna");
+c$ = Clazz.declareType (fr.orsay.lri.varna.models.rna, "RNA");
+Clazz.defineMethod (c$, "getSize", 
+function () {
+return 0;
+});
+Clazz.defineMethod (c$, "getStructDBN", 
+function (b) {
+return null;
+}, "~B");
index 4b1e306..89830d7 100644 (file)
Binary files a/bin/jalview/analysis/AAFrequency.class and b/bin/jalview/analysis/AAFrequency.class differ
index 8e3d4c5..a7a69d1 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (null, "jalview.analysis.AAFrequency", ["jalview.analysis.CodingUtils", "jalview.datamodel.Annotation", "jalview.util.Format", "$.MappingUtils", "$.QuickSort", "java.lang.Float", "$.StringBuilder", "java.util.Arrays", "$.Hashtable"], function () {\r
-c$ = Clazz.declareType (jalview.analysis, "AAFrequency");\r
-c$.calculate = Clazz.defineMethod (c$, "calculate", \r
-function (list, start, end) {\r
-return jalview.analysis.AAFrequency.calculate (list, start, end, false);\r
-}, "java.util.List,~N,~N");\r
-c$.calculate = Clazz.defineMethod (c$, "calculate", \r
-function (sequences, start, end, profile) {\r
-var seqs =  new Array (sequences.size ());\r
-var width = 0;\r
-{\r
-for (var i = 0; i < sequences.size (); i++) {\r
-seqs[i] = sequences.get (i);\r
-if (seqs[i].getLength () > width) {\r
-width = seqs[i].getLength ();\r
-}}\r
-var reply =  new Array (width);\r
-if (end >= width) {\r
-end = width;\r
-}jalview.analysis.AAFrequency.calculate (seqs, start, end, reply, profile);\r
-return reply;\r
-}}, "java.util.List,~N,~N,~B");\r
-c$.calculate = Clazz.defineMethod (c$, "calculate", \r
-function (sequences, start, end, result, profile) {\r
-var residueHash;\r
-var maxCount;\r
-var nongap;\r
-var i;\r
-var j;\r
-var v;\r
-var jSize = sequences.length;\r
-var maxResidue;\r
-var c = '-';\r
-var percentage;\r
-var values =  Clazz.newIntArray (255, 0);\r
-var seq;\r
-for (i = start; i < end; i++) {\r
-residueHash =  new java.util.Hashtable ();\r
-maxCount = 0;\r
-maxResidue = "";\r
-nongap = 0;\r
-values =  Clazz.newIntArray (255, 0);\r
-for (j = 0; j < jSize; j++) {\r
-if (sequences[j] == null) {\r
-System.err.println ("WARNING: Consensus skipping null sequence - possible race condition.");\r
-continue;\r
-}seq = sequences[j].getSequence ();\r
-if (seq.length > i) {\r
-c = seq[i];\r
-if (c == '.' || c == ' ') {\r
-c = '-';\r
-}if (c == '-') {\r
-values['-'.charCodeAt (0)]++;\r
-continue;\r
-} else if ('a' <= c && c <= 'z') {\r
-c = String.fromCharCode (c.charCodeAt (0) + -32);\r
-}nongap++;\r
-values[c.charCodeAt (0)]++;\r
-} else {\r
-values['-'.charCodeAt (0)]++;\r
-}}\r
-if (jSize == 1) {\r
-maxResidue = String.valueOf (c);\r
-maxCount = 1;\r
-} else {\r
-for (v = 65; v <= 90; v++) {\r
-if (values[v] < 1 || values[v] < maxCount) {\r
-continue;\r
-}if (values[v] > maxCount) {\r
-maxResidue = jalview.analysis.AAFrequency.CHARS[v - 65];\r
-} else if (values[v] == maxCount) {\r
-maxResidue += jalview.analysis.AAFrequency.CHARS[v - 65];\r
-}maxCount = values[v];\r
-}\r
-}if (maxResidue.length == 0) {\r
-maxResidue = "-";\r
-}if (profile) {\r
-residueHash.put ("P",  Clazz.newArray (-1, [values,  Clazz.newIntArray (-1, [jSize, nongap])]));\r
-}residueHash.put ("C",  new Integer (maxCount));\r
-residueHash.put ("R", maxResidue);\r
-percentage = (maxCount * 100) / jSize;\r
-residueHash.put ("G",  new Float (percentage));\r
-if (nongap > 0) {\r
-percentage = (maxCount * 100) / nongap;\r
-}residueHash.put ("N",  new Float (percentage));\r
-result[i] = residueHash;\r
-}\r
-}, "~A,~N,~N,~A,~B");\r
-c$.completeConsensus = Clazz.defineMethod (c$, "completeConsensus", \r
-function (consensus, hconsensus, iStart, width, ignoreGapsInConsensusCalculation, includeAllConsSymbols, nseq) {\r
-jalview.analysis.AAFrequency.completeConsensus (consensus, hconsensus, iStart, width, ignoreGapsInConsensusCalculation, includeAllConsSymbols, null, nseq);\r
-}, "jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~B,~B,~N");\r
-c$.completeConsensus = Clazz.defineMethod (c$, "completeConsensus", \r
-function (consensus, hconsensus, iStart, width, ignoreGapsInConsensusCalculation, includeAllConsSymbols, alphabet, nseq) {\r
-if (consensus == null || consensus.annotations == null || consensus.annotations.length < width) {\r
-return;\r
-}var fmt = jalview.analysis.AAFrequency.getPercentageFormat (nseq);\r
-for (var i = iStart; i < width; i++) {\r
-var hci;\r
-if (i >= hconsensus.length || ((hci = hconsensus[i]) == null)) {\r
-consensus.annotations[i] = null;\r
-continue;\r
-}var fv = hci.get (ignoreGapsInConsensusCalculation ? "N" : "G");\r
-if (fv == null) {\r
-consensus.annotations[i] = null;\r
-continue;\r
-}var value = fv.floatValue ();\r
-var maxRes = hci.get ("R").toString ();\r
-var mouseOver =  new StringBuilder (64);\r
-if (maxRes.length > 1) {\r
-mouseOver.append ("[").append (maxRes).append ("] ");\r
-maxRes = "+";\r
-} else {\r
-mouseOver.append (hci.get ("R") + " ");\r
-}var profile = hci.get ("P");\r
-if (profile != null && includeAllConsSymbols) {\r
-var sequenceCount = profile[1][0];\r
-var nonGappedCount = profile[1][1];\r
-var normalisedBy = ignoreGapsInConsensusCalculation ? nonGappedCount : sequenceCount;\r
-mouseOver.setLength (0);\r
-if (alphabet != null) {\r
-for (var c = 0; c < alphabet.length; c++) {\r
-var tval = profile[0][alphabet[c].charCodeAt (0)] * 100 / normalisedBy;\r
-mouseOver.append (((c == 0) ? "" : "; ")).append (alphabet[c]).append (" ").append (((fmt != null) ? fmt.formDouble (tval) : (Clazz.floatToInt (tval)))).append ("%");\r
-}\r
-} else {\r
-var ca =  Clazz.newCharArray (profile[0].length, '\0');\r
-var vl =  Clazz.newFloatArray (profile[0].length, 0);\r
-for (var c = 0; c < ca.length; c++) {\r
-ca[c] = String.fromCharCode (c);\r
-vl[c] = profile[0][c];\r
-}\r
-jalview.util.QuickSort.sortFloatChar (vl, ca);\r
-for (var p = 0, c = ca.length - 1; profile[0][ca[c].charCodeAt (0)] > 0; c--) {\r
-var residue = ca[c];\r
-if (residue != '-') {\r
-var tval = profile[0][residue.charCodeAt (0)] * 100 / normalisedBy;\r
-mouseOver.append ((((p == 0) ? "" : "; "))).append (residue).append (" ").append (((fmt != null) ? fmt.formDouble (tval) : (Clazz.floatToInt (tval)))).append ("%");\r
-p++;\r
-}}\r
-}} else {\r
-mouseOver.append ((((fmt != null) ? fmt.formDouble (value) : (Clazz.floatToInt (value))))).append ("%");\r
-}consensus.annotations[i] =  new jalview.datamodel.Annotation (maxRes, mouseOver.toString (), ' ', value);\r
-}\r
-}, "jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~B,~B,~A,~N");\r
-c$.getPercentageFormat = Clazz.defineMethod (c$, "getPercentageFormat", \r
-function (nseq) {\r
-var scale = 0;\r
-while (nseq >= 10) {\r
-scale++;\r
-nseq /= 10;\r
-}\r
-return scale <= 1 ? null :  new jalview.util.Format ("%3." + (scale - 1) + "f");\r
-}, "~N");\r
-c$.extractProfile = Clazz.defineMethod (c$, "extractProfile", \r
-function (hconsensus, ignoreGaps) {\r
-var rtnval =  Clazz.newIntArray (64, 0);\r
-var profile = hconsensus.get ("P");\r
-if (profile == null) {\r
-return null;\r
-}var ca =  Clazz.newCharArray (profile[0].length, '\0');\r
-var vl =  Clazz.newFloatArray (profile[0].length, 0);\r
-for (var c = 0; c < ca.length; c++) {\r
-ca[c] = String.fromCharCode (c);\r
-vl[c] = profile[0][c];\r
-}\r
-jalview.util.QuickSort.sortFloatChar (vl, ca);\r
-var nextArrayPos = 2;\r
-var totalPercentage = 0;\r
-var distinctValuesCount = 0;\r
-var divisor = profile[1][ignoreGaps ? 1 : 0];\r
-for (var c = ca.length - 1; profile[0][ca[c].charCodeAt (0)] > 0; c--) {\r
-if (ca[c] != '-') {\r
-rtnval[nextArrayPos++] = (ca[c]).charCodeAt (0);\r
-var percentage = Clazz.floatToInt (profile[0][ca[c].charCodeAt (0)] * 100 / divisor);\r
-rtnval[nextArrayPos++] = percentage;\r
-totalPercentage += percentage;\r
-distinctValuesCount++;\r
-}}\r
-rtnval[0] = distinctValuesCount;\r
-rtnval[1] = totalPercentage;\r
-var result =  Clazz.newIntArray (rtnval.length + 1, 0);\r
-result[0] = 0;\r
-System.arraycopy (rtnval, 0, result, 1, rtnval.length);\r
-return result;\r
-}, "java.util.Hashtable,~B");\r
-c$.extractCdnaProfile = Clazz.defineMethod (c$, "extractCdnaProfile", \r
-function (hashtable, ignoreGaps) {\r
-var codonCounts = hashtable.get ("P");\r
-var sortedCounts =  Clazz.newIntArray (codonCounts.length - 2, 0);\r
-System.arraycopy (codonCounts, 2, sortedCounts, 0, codonCounts.length - 2);\r
-var result =  Clazz.newIntArray (3 + 2 * sortedCounts.length, 0);\r
-result[0] = 2;\r
-var codons =  Clazz.newCharArray (sortedCounts.length, '\0');\r
-for (var i = 0; i < codons.length; i++) {\r
-codons[i] = String.fromCharCode (i);\r
-}\r
-jalview.util.QuickSort.sortIntChar (sortedCounts, codons);\r
-var totalPercentage = 0;\r
-var distinctValuesCount = 0;\r
-var j = 3;\r
-var divisor = ignoreGaps ? codonCounts[1] : codonCounts[0];\r
-for (var i = codons.length - 1; i >= 0; i--) {\r
-var codonCount = sortedCounts[i];\r
-if (codonCount == 0) {\r
-break;\r
-}distinctValuesCount++;\r
-result[j++] = (codons[i]).charCodeAt (0);\r
-var percentage = Clazz.doubleToInt (codonCount * 100 / divisor);\r
-result[j++] = percentage;\r
-totalPercentage += percentage;\r
-}\r
-result[2] = totalPercentage;\r
-result[1] = distinctValuesCount;\r
-return java.util.Arrays.copyOfRange (result, 0, j);\r
-}, "java.util.Hashtable,~B");\r
-c$.calculateCdna = Clazz.defineMethod (c$, "calculateCdna", \r
-function (alignment, mappings, hconsensus, col0, col1) {\r
-var gapCharacter = alignment.getGapCharacter ();\r
-for (var col = col0; col < col1; col++) {\r
-var columnHash =  new java.util.Hashtable ();\r
-var codonCounts =  Clazz.newIntArray (66, 0);\r
-codonCounts[0] = alignment.getSequences ().size ();\r
-var ungappedCount = 0;\r
-for (var seq, $seq = alignment.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-if (seq.getCharAt (col) == gapCharacter) {\r
-continue;\r
-}var codon = jalview.util.MappingUtils.findCodonFor (seq, col, mappings);\r
-var codonEncoded = jalview.analysis.CodingUtils.encodeCodon (codon);\r
-if (codonEncoded >= 0) {\r
-codonCounts[codonEncoded + 2]++;\r
-ungappedCount++;\r
-}}\r
-codonCounts[1] = ungappedCount;\r
-columnHash.put ("P", codonCounts);\r
-hconsensus[col] = columnHash;\r
-}\r
-}, "jalview.datamodel.AlignmentI,java.util.Set,~A,~N,~N");\r
-c$.completeCdnaConsensus = Clazz.defineMethod (c$, "completeCdnaConsensus", \r
-function (consensusAnnotation, consensusData, showProfileLogo, nseqs) {\r
-if (consensusAnnotation == null || consensusAnnotation.annotations == null || consensusAnnotation.annotations.length < consensusData.length) {\r
-return;\r
-}consensusAnnotation.scaleColLabel = true;\r
-for (var col = 0; col < consensusData.length; col++) {\r
-var hci = consensusData[col];\r
-if (hci == null) {\r
-continue;\r
-}var codonCounts = hci.get ("P");\r
-var totalCount = 0;\r
-var codons =  Clazz.newCharArray (codonCounts.length - 2, '\0');\r
-for (var j = 2; j < codonCounts.length; j++) {\r
-var codonCount = codonCounts[j];\r
-codons[j - 2] = String.fromCharCode (j - 2);\r
-totalCount += codonCount;\r
-}\r
-var sortedCodonCounts =  Clazz.newIntArray (codonCounts.length - 2, 0);\r
-System.arraycopy (codonCounts, 2, sortedCodonCounts, 0, codonCounts.length - 2);\r
-jalview.util.QuickSort.sortIntChar (sortedCodonCounts, codons);\r
-var modalCodonEncoded = (codons[codons.length - 1]).charCodeAt (0);\r
-var modalCodonCount = sortedCodonCounts[codons.length - 1];\r
-var modalCodon = String.valueOf (jalview.analysis.CodingUtils.decodeCodon (modalCodonEncoded));\r
-if (sortedCodonCounts.length > 1 && sortedCodonCounts[codons.length - 2] == modalCodonEncoded) {\r
-modalCodon = "+";\r
-}var pid = sortedCodonCounts[sortedCodonCounts.length - 1] * 100 / totalCount;\r
-var mouseOver =  new StringBuilder (32);\r
-var samePercent =  new StringBuilder ();\r
-var percent = null;\r
-var lastPercent = null;\r
-var fmt = jalview.analysis.AAFrequency.getPercentageFormat (nseqs);\r
-for (var j = codons.length - 1; j >= 0; j--) {\r
-var codonCount = sortedCodonCounts[j];\r
-if (codonCount == 0) {\r
-if (samePercent.length () > 0) {\r
-mouseOver.append (samePercent).append (": ").append (percent).append ("% ");\r
-}break;\r
-}var codonEncoded = (codons[j]).charCodeAt (0);\r
-var pct = Clazz.doubleToInt (codonCount * 100 / totalCount);\r
-var codon = String.valueOf (jalview.analysis.CodingUtils.decodeCodon (codonEncoded));\r
-percent = fmt == null ? Integer.toString (pct) : fmt.formLong (pct);\r
-if (showProfileLogo || codonCount == modalCodonCount) {\r
-if (percent.equals (lastPercent) && j > 0) {\r
-samePercent.append (samePercent.length () == 0 ? "" : ", ");\r
-samePercent.append (codon);\r
-} else {\r
-if (samePercent.length () > 0) {\r
-mouseOver.append (samePercent).append (": ").append (lastPercent).append ("% ");\r
-}samePercent.setLength (0);\r
-samePercent.append (codon);\r
-}lastPercent = percent;\r
-}}\r
-consensusAnnotation.annotations[col] =  new jalview.datamodel.Annotation (modalCodon, mouseOver.toString (), ' ', pid);\r
-}\r
-}, "jalview.datamodel.AlignmentAnnotation,~A,~B,~N");\r
-Clazz.defineStatics (c$,\r
-"TO_UPPER_CASE", -32,\r
-"MAXCOUNT", "C",\r
-"MAXRESIDUE", "R",\r
-"PID_GAPS", "G",\r
-"PID_NOGAPS", "N",\r
-"PROFILE", "P",\r
-"ENCODED_CHARS", "E");\r
-c$.CHARS = c$.prototype.CHARS =  new Array (26);\r
-{\r
-for (var c = 'A'; c <= 'Z'; c = String.fromCharCode (c.charCodeAt (0) + 1)) {\r
-jalview.analysis.AAFrequency.CHARS[c.charCodeAt (0) - 65] = String.valueOf (c);\r
-}\r
-}});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (null, "jalview.analysis.AAFrequency", ["jalview.analysis.CodingUtils", "jalview.datamodel.Annotation", "jalview.util.Format", "$.MappingUtils", "$.QuickSort", "java.lang.Float", "$.StringBuilder", "java.util.Arrays", "$.Hashtable"], function () {
+c$ = Clazz.declareType (jalview.analysis, "AAFrequency");
+c$.calculate = Clazz.defineMethod (c$, "calculate", 
+function (list, start, end) {
+return jalview.analysis.AAFrequency.calculate (list, start, end, false);
+}, "java.util.List,~N,~N");
+c$.calculate = Clazz.defineMethod (c$, "calculate", 
+function (sequences, start, end, profile) {
+var seqs =  new Array (sequences.size ());
+var width = 0;
+{
+for (var i = 0; i < sequences.size (); i++) {
+seqs[i] = sequences.get (i);
+if (seqs[i].getLength () > width) {
+width = seqs[i].getLength ();
+}}
+var reply =  new Array (width);
+if (end >= width) {
+end = width;
+}jalview.analysis.AAFrequency.calculate (seqs, start, end, reply, profile);
+return reply;
+}}, "java.util.List,~N,~N,~B");
+c$.calculate = Clazz.defineMethod (c$, "calculate", 
+function (sequences, start, end, result, profile) {
+var residueHash;
+var maxCount;
+var nongap;
+var i;
+var j;
+var v;
+var jSize = sequences.length;
+var maxResidue;
+var c = '-';
+var percentage;
+var values =  Clazz.newIntArray (255, 0);
+var seq;
+for (i = start; i < end; i++) {
+residueHash =  new java.util.Hashtable ();
+maxCount = 0;
+maxResidue = "";
+nongap = 0;
+values =  Clazz.newIntArray (255, 0);
+for (j = 0; j < jSize; j++) {
+if (sequences[j] == null) {
+System.err.println ("WARNING: Consensus skipping null sequence - possible race condition.");
+continue;
+}seq = sequences[j].getSequence ();
+if (seq.length > i) {
+c = seq[i];
+if (c == '.' || c == ' ') {
+c = '-';
+}if (c == '-') {
+values['-'.charCodeAt (0)]++;
+continue;
+} else if ('a' <= c && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) + -32);
+}nongap++;
+values[c.charCodeAt (0)]++;
+} else {
+values['-'.charCodeAt (0)]++;
+}}
+if (jSize == 1) {
+maxResidue = String.valueOf (c);
+maxCount = 1;
+} else {
+for (v = 65; v <= 90; v++) {
+if (values[v] < 1 || values[v] < maxCount) {
+continue;
+}if (values[v] > maxCount) {
+maxResidue = jalview.analysis.AAFrequency.CHARS[v - 65];
+} else if (values[v] == maxCount) {
+maxResidue += jalview.analysis.AAFrequency.CHARS[v - 65];
+}maxCount = values[v];
+}
+}if (maxResidue.length == 0) {
+maxResidue = "-";
+}if (profile) {
+residueHash.put ("P",  Clazz.newArray (-1, [values,  Clazz.newIntArray (-1, [jSize, nongap])]));
+}residueHash.put ("C",  new Integer (maxCount));
+residueHash.put ("R", maxResidue);
+percentage = (maxCount * 100) / jSize;
+residueHash.put ("G",  new Float (percentage));
+if (nongap > 0) {
+percentage = (maxCount * 100) / nongap;
+}residueHash.put ("N",  new Float (percentage));
+result[i] = residueHash;
+}
+}, "~A,~N,~N,~A,~B");
+c$.completeConsensus = Clazz.defineMethod (c$, "completeConsensus", 
+function (consensus, hconsensus, iStart, width, ignoreGapsInConsensusCalculation, includeAllConsSymbols, nseq) {
+jalview.analysis.AAFrequency.completeConsensus (consensus, hconsensus, iStart, width, ignoreGapsInConsensusCalculation, includeAllConsSymbols, null, nseq);
+}, "jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~B,~B,~N");
+c$.completeConsensus = Clazz.defineMethod (c$, "completeConsensus", 
+function (consensus, hconsensus, iStart, width, ignoreGapsInConsensusCalculation, includeAllConsSymbols, alphabet, nseq) {
+if (consensus == null || consensus.annotations == null || consensus.annotations.length < width) {
+return;
+}var fmt = jalview.analysis.AAFrequency.getPercentageFormat (nseq);
+for (var i = iStart; i < width; i++) {
+var hci;
+if (i >= hconsensus.length || ((hci = hconsensus[i]) == null)) {
+consensus.annotations[i] = null;
+continue;
+}var fv = hci.get (ignoreGapsInConsensusCalculation ? "N" : "G");
+if (fv == null) {
+consensus.annotations[i] = null;
+continue;
+}var value = fv.floatValue ();
+var maxRes = hci.get ("R").toString ();
+var mouseOver =  new StringBuilder (64);
+if (maxRes.length > 1) {
+mouseOver.append ("[").append (maxRes).append ("] ");
+maxRes = "+";
+} else {
+mouseOver.append (hci.get ("R") + " ");
+}var profile = hci.get ("P");
+if (profile != null && includeAllConsSymbols) {
+var sequenceCount = profile[1][0];
+var nonGappedCount = profile[1][1];
+var normalisedBy = ignoreGapsInConsensusCalculation ? nonGappedCount : sequenceCount;
+mouseOver.setLength (0);
+if (alphabet != null) {
+for (var c = 0; c < alphabet.length; c++) {
+var tval = profile[0][alphabet[c].charCodeAt (0)] * 100 / normalisedBy;
+mouseOver.append (((c == 0) ? "" : "; ")).append (alphabet[c]).append (" ").append (((fmt != null) ? fmt.formDouble (tval) : (Clazz.floatToInt (tval)))).append ("%");
+}
+} else {
+var ca =  Clazz.newCharArray (profile[0].length, '\0');
+var vl =  Clazz.newFloatArray (profile[0].length, 0);
+for (var c = 0; c < ca.length; c++) {
+ca[c] = String.fromCharCode (c);
+vl[c] = profile[0][c];
+}
+jalview.util.QuickSort.sortFloatChar (vl, ca);
+for (var p = 0, c = ca.length - 1; profile[0][ca[c].charCodeAt (0)] > 0; c--) {
+var residue = ca[c];
+if (residue != '-') {
+var tval = profile[0][residue.charCodeAt (0)] * 100 / normalisedBy;
+mouseOver.append ((((p == 0) ? "" : "; "))).append (residue).append (" ").append (((fmt != null) ? fmt.formDouble (tval) : (Clazz.floatToInt (tval)))).append ("%");
+p++;
+}}
+}} else {
+mouseOver.append ((((fmt != null) ? fmt.formDouble (value) : (Clazz.floatToInt (value))))).append ("%");
+}consensus.annotations[i] =  new jalview.datamodel.Annotation (maxRes, mouseOver.toString (), ' ', value);
+}
+}, "jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~B,~B,~A,~N");
+c$.getPercentageFormat = Clazz.defineMethod (c$, "getPercentageFormat", 
+function (nseq) {
+var scale = 0;
+while (nseq >= 10) {
+scale++;
+nseq /= 10;
+}
+return scale <= 1 ? null :  new jalview.util.Format ("%3." + (scale - 1) + "f");
+}, "~N");
+c$.extractProfile = Clazz.defineMethod (c$, "extractProfile", 
+function (hconsensus, ignoreGaps) {
+var rtnval =  Clazz.newIntArray (64, 0);
+var profile = hconsensus.get ("P");
+if (profile == null) {
+return null;
+}var ca =  Clazz.newCharArray (profile[0].length, '\0');
+var vl =  Clazz.newFloatArray (profile[0].length, 0);
+for (var c = 0; c < ca.length; c++) {
+ca[c] = String.fromCharCode (c);
+vl[c] = profile[0][c];
+}
+jalview.util.QuickSort.sortFloatChar (vl, ca);
+var nextArrayPos = 2;
+var totalPercentage = 0;
+var distinctValuesCount = 0;
+var divisor = profile[1][ignoreGaps ? 1 : 0];
+for (var c = ca.length - 1; profile[0][ca[c].charCodeAt (0)] > 0; c--) {
+if (ca[c] != '-') {
+rtnval[nextArrayPos++] = (ca[c]).charCodeAt (0);
+var percentage = Clazz.floatToInt (profile[0][ca[c].charCodeAt (0)] * 100 / divisor);
+rtnval[nextArrayPos++] = percentage;
+totalPercentage += percentage;
+distinctValuesCount++;
+}}
+rtnval[0] = distinctValuesCount;
+rtnval[1] = totalPercentage;
+var result =  Clazz.newIntArray (rtnval.length + 1, 0);
+result[0] = 0;
+System.arraycopy (rtnval, 0, result, 1, rtnval.length);
+return result;
+}, "java.util.Hashtable,~B");
+c$.extractCdnaProfile = Clazz.defineMethod (c$, "extractCdnaProfile", 
+function (hashtable, ignoreGaps) {
+var codonCounts = hashtable.get ("P");
+var sortedCounts =  Clazz.newIntArray (codonCounts.length - 2, 0);
+System.arraycopy (codonCounts, 2, sortedCounts, 0, codonCounts.length - 2);
+var result =  Clazz.newIntArray (3 + 2 * sortedCounts.length, 0);
+result[0] = 2;
+var codons =  Clazz.newCharArray (sortedCounts.length, '\0');
+for (var i = 0; i < codons.length; i++) {
+codons[i] = String.fromCharCode (i);
+}
+jalview.util.QuickSort.sortIntChar (sortedCounts, codons);
+var totalPercentage = 0;
+var distinctValuesCount = 0;
+var j = 3;
+var divisor = ignoreGaps ? codonCounts[1] : codonCounts[0];
+for (var i = codons.length - 1; i >= 0; i--) {
+var codonCount = sortedCounts[i];
+if (codonCount == 0) {
+break;
+}distinctValuesCount++;
+result[j++] = (codons[i]).charCodeAt (0);
+var percentage = Clazz.doubleToInt (codonCount * 100 / divisor);
+result[j++] = percentage;
+totalPercentage += percentage;
+}
+result[2] = totalPercentage;
+result[1] = distinctValuesCount;
+return java.util.Arrays.copyOfRange (result, 0, j);
+}, "java.util.Hashtable,~B");
+c$.calculateCdna = Clazz.defineMethod (c$, "calculateCdna", 
+function (alignment, mappings, hconsensus, col0, col1) {
+var gapCharacter = alignment.getGapCharacter ();
+for (var col = col0; col < col1; col++) {
+var columnHash =  new java.util.Hashtable ();
+var codonCounts =  Clazz.newIntArray (66, 0);
+codonCounts[0] = alignment.getSequences ().size ();
+var ungappedCount = 0;
+for (var seq, $seq = alignment.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+if (seq.getCharAt (col) == gapCharacter) {
+continue;
+}var codon = jalview.util.MappingUtils.findCodonFor (seq, col, mappings);
+var codonEncoded = jalview.analysis.CodingUtils.encodeCodon (codon);
+if (codonEncoded >= 0) {
+codonCounts[codonEncoded + 2]++;
+ungappedCount++;
+}}
+codonCounts[1] = ungappedCount;
+columnHash.put ("P", codonCounts);
+hconsensus[col] = columnHash;
+}
+}, "jalview.datamodel.AlignmentI,java.util.Set,~A,~N,~N");
+c$.completeCdnaConsensus = Clazz.defineMethod (c$, "completeCdnaConsensus", 
+function (consensusAnnotation, consensusData, showProfileLogo, nseqs) {
+if (consensusAnnotation == null || consensusAnnotation.annotations == null || consensusAnnotation.annotations.length < consensusData.length) {
+return;
+}consensusAnnotation.scaleColLabel = true;
+for (var col = 0; col < consensusData.length; col++) {
+var hci = consensusData[col];
+if (hci == null) {
+continue;
+}var codonCounts = hci.get ("P");
+var totalCount = 0;
+var codons =  Clazz.newCharArray (codonCounts.length - 2, '\0');
+for (var j = 2; j < codonCounts.length; j++) {
+var codonCount = codonCounts[j];
+codons[j - 2] = String.fromCharCode (j - 2);
+totalCount += codonCount;
+}
+var sortedCodonCounts =  Clazz.newIntArray (codonCounts.length - 2, 0);
+System.arraycopy (codonCounts, 2, sortedCodonCounts, 0, codonCounts.length - 2);
+jalview.util.QuickSort.sortIntChar (sortedCodonCounts, codons);
+var modalCodonEncoded = (codons[codons.length - 1]).charCodeAt (0);
+var modalCodonCount = sortedCodonCounts[codons.length - 1];
+var modalCodon = String.valueOf (jalview.analysis.CodingUtils.decodeCodon (modalCodonEncoded));
+if (sortedCodonCounts.length > 1 && sortedCodonCounts[codons.length - 2] == modalCodonEncoded) {
+modalCodon = "+";
+}var pid = sortedCodonCounts[sortedCodonCounts.length - 1] * 100 / totalCount;
+var mouseOver =  new StringBuilder (32);
+var samePercent =  new StringBuilder ();
+var percent = null;
+var lastPercent = null;
+var fmt = jalview.analysis.AAFrequency.getPercentageFormat (nseqs);
+for (var j = codons.length - 1; j >= 0; j--) {
+var codonCount = sortedCodonCounts[j];
+if (codonCount == 0) {
+if (samePercent.length () > 0) {
+mouseOver.append (samePercent).append (": ").append (percent).append ("% ");
+}break;
+}var codonEncoded = (codons[j]).charCodeAt (0);
+var pct = Clazz.doubleToInt (codonCount * 100 / totalCount);
+var codon = String.valueOf (jalview.analysis.CodingUtils.decodeCodon (codonEncoded));
+percent = fmt == null ? Integer.toString (pct) : fmt.formLong (pct);
+if (showProfileLogo || codonCount == modalCodonCount) {
+if (percent.equals (lastPercent) && j > 0) {
+samePercent.append (samePercent.length () == 0 ? "" : ", ");
+samePercent.append (codon);
+} else {
+if (samePercent.length () > 0) {
+mouseOver.append (samePercent).append (": ").append (lastPercent).append ("% ");
+}samePercent.setLength (0);
+samePercent.append (codon);
+}lastPercent = percent;
+}}
+consensusAnnotation.annotations[col] =  new jalview.datamodel.Annotation (modalCodon, mouseOver.toString (), ' ', pid);
+}
+}, "jalview.datamodel.AlignmentAnnotation,~A,~B,~N");
+Clazz.defineStatics (c$,
+"TO_UPPER_CASE", -32,
+"MAXCOUNT", "C",
+"MAXRESIDUE", "R",
+"PID_GAPS", "G",
+"PID_NOGAPS", "N",
+"PROFILE", "P",
+"ENCODED_CHARS", "E");
+c$.CHARS = c$.prototype.CHARS =  new Array (26);
+{
+for (var c = 'A'; c <= 'Z'; c = String.fromCharCode (c.charCodeAt (0) + 1)) {
+jalview.analysis.AAFrequency.CHARS[c.charCodeAt (0) - 65] = String.valueOf (c);
+}
+}});
index 7d2744f..b5cdebf 100644 (file)
Binary files a/bin/jalview/analysis/AlignSeq.class and b/bin/jalview/analysis/AlignSeq.class differ
index 38f84c2..31dcb24 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (["jalview.schemes.ResidueProperties", "java.lang.StringBuffer"], "jalview.analysis.AlignSeq", ["jalview.datamodel.Mapping", "$.Sequence", "jalview.util.Comparison", "$.Format", "$.MapList", "$.MessageManager", "java.awt.Color", "java.lang.Error", "$.StringBuilder", "java.util.ArrayList", "$.Arrays", "$.StringTokenizer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.score = null;\r
-this.E = null;\r
-this.F = null;\r
-this.traceback = null;\r
-this.seq1 = null;\r
-this.seq2 = null;\r
-this.s1 = null;\r
-this.s2 = null;\r
-this.s1str = null;\r
-this.s2str = null;\r
-this.maxi = 0;\r
-this.maxj = 0;\r
-this.aseq1 = null;\r
-this.aseq2 = null;\r
-this.astr1 = "";\r
-this.astr2 = "";\r
-this.seq1start = 0;\r
-this.seq1end = 0;\r
-this.seq2start = 0;\r
-this.seq2end = 0;\r
-this.count = 0;\r
-this.maxscore = 0;\r
-this.pid = 0;\r
-this.prev = 0;\r
-this.gapOpen = 120;\r
-this.gapExtend = 20;\r
-this.lookup = null;\r
-this.intToStr = null;\r
-this.defInt = 23;\r
-this.output = null;\r
-this.type = null;\r
-this.charToInt = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis, "AlignSeq");\r
-Clazz.prepareFields (c$, function () {\r
-this.lookup = jalview.schemes.ResidueProperties.getBLOSUM62 ();\r
-this.intToStr = jalview.analysis.AlignSeq.pep;\r
-this.output =  new StringBuffer ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (s1, s2, type) {\r
-this.SeqInit (s1, s1.getSequenceAsString (), s2, s2.getSequenceAsString (), type);\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~S");\r
-Clazz.makeConstructor (c$, \r
-function (s1, string1, s2, string2, type) {\r
-this.SeqInit (s1, string1.toUpperCase (), s2, string2.toUpperCase (), type);\r
-}, "jalview.datamodel.SequenceI,~S,jalview.datamodel.SequenceI,~S,~S");\r
-Clazz.defineMethod (c$, "getMaxScore", \r
-function () {\r
-return this.maxscore;\r
-});\r
-Clazz.defineMethod (c$, "getSeq2Start", \r
-function () {\r
-return this.seq2start;\r
-});\r
-Clazz.defineMethod (c$, "getSeq2End", \r
-function () {\r
-return this.seq2end;\r
-});\r
-Clazz.defineMethod (c$, "getSeq1Start", \r
-function () {\r
-return this.seq1start;\r
-});\r
-Clazz.defineMethod (c$, "getSeq1End", \r
-function () {\r
-return this.seq1end;\r
-});\r
-Clazz.defineMethod (c$, "getOutput", \r
-function () {\r
-return this.output.toString ();\r
-});\r
-Clazz.defineMethod (c$, "getAStr1", \r
-function () {\r
-return this.astr1;\r
-});\r
-Clazz.defineMethod (c$, "getAStr2", \r
-function () {\r
-return this.astr2;\r
-});\r
-Clazz.defineMethod (c$, "getASeq1", \r
-function () {\r
-return this.aseq1;\r
-});\r
-Clazz.defineMethod (c$, "getASeq2", \r
-function () {\r
-return this.aseq2;\r
-});\r
-Clazz.defineMethod (c$, "getS1", \r
-function () {\r
-return this.s1;\r
-});\r
-Clazz.defineMethod (c$, "getS2", \r
-function () {\r
-return this.s2;\r
-});\r
-Clazz.defineMethod (c$, "getAlignedSeq1", \r
-function () {\r
-var alSeq1 =  new jalview.datamodel.Sequence (this.s1.getName (), this.getAStr1 ());\r
-alSeq1.setStart (this.s1.getStart () + this.getSeq1Start () - 1);\r
-alSeq1.setEnd (this.s1.getStart () + this.getSeq1End () - 1);\r
-alSeq1.setDatasetSequence (this.s1.getDatasetSequence () == null ? this.s1 : this.s1.getDatasetSequence ());\r
-return alSeq1;\r
-});\r
-Clazz.defineMethod (c$, "getAlignedSeq2", \r
-function () {\r
-var alSeq2 =  new jalview.datamodel.Sequence (this.s2.getName (), this.getAStr2 ());\r
-alSeq2.setStart (this.s2.getStart () + this.getSeq2Start () - 1);\r
-alSeq2.setEnd (this.s2.getStart () + this.getSeq2End () - 1);\r
-alSeq2.setDatasetSequence (this.s2.getDatasetSequence () == null ? this.s2 : this.s2.getDatasetSequence ());\r
-return alSeq2;\r
-});\r
-Clazz.defineMethod (c$, "SeqInit", \r
-function (s1, string1, s2, string2, type) {\r
-this.s1 = s1;\r
-this.s2 = s2;\r
-this.setDefaultParams (type);\r
-this.SeqInit (string1, string2);\r
-}, "jalview.datamodel.SequenceI,~S,jalview.datamodel.SequenceI,~S,~S");\r
-Clazz.defineMethod (c$, "SeqInit", \r
-function (s1, string1, s2, string2, scoreMatrix) {\r
-this.s1 = s1;\r
-this.s2 = s2;\r
-this.setType (scoreMatrix.isDNA () ? "dna" : "pep");\r
-this.lookup = scoreMatrix.getMatrix ();\r
-}, "jalview.datamodel.SequenceI,~S,jalview.datamodel.SequenceI,~S,jalview.schemes.ScoreMatrix");\r
-Clazz.defineMethod (c$, "SeqInit", \r
-($fz = function (string1, string2) {\r
-this.s1str = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, string1);\r
-this.s2str = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, string2);\r
-if (this.s1str.length == 0 || this.s2str.length == 0) {\r
-this.output.append ("ALL GAPS: " + (this.s1str.length == 0 ? this.s1.getName () : " ") + (this.s2str.length == 0 ? this.s2.getName () : ""));\r
-return;\r
-}this.seq1 =  Clazz.newIntArray (this.s1str.length, 0);\r
-this.seq2 =  Clazz.newIntArray (this.s2str.length, 0);\r
-this.score =  Clazz.newIntArray (this.s1str.length, this.s2str.length, 0);\r
-this.E =  Clazz.newIntArray (this.s1str.length, this.s2str.length, 0);\r
-this.F =  Clazz.newIntArray (this.s1str.length, this.s2str.length, 0);\r
-this.traceback =  Clazz.newIntArray (this.s1str.length, this.s2str.length, 0);\r
-this.seq1 = this.stringToInt (this.s1str, this.type);\r
-this.seq2 = this.stringToInt (this.s2str, this.type);\r
-}, $fz.isPrivate = true, $fz), "~S,~S");\r
-Clazz.defineMethod (c$, "setDefaultParams", \r
-($fz = function (type) {\r
-this.setType (type);\r
-if (type.equals ("pep")) {\r
-this.lookup = jalview.schemes.ResidueProperties.getDefaultPeptideMatrix ();\r
-} else if (type.equals ("dna")) {\r
-this.lookup = jalview.schemes.ResidueProperties.getDefaultDnaMatrix ();\r
-}}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "setType", \r
-($fz = function (type2) {\r
-this.type = type2;\r
-if (this.type.equals ("pep")) {\r
-this.intToStr = jalview.analysis.AlignSeq.pep;\r
-this.charToInt = jalview.schemes.ResidueProperties.aaIndex;\r
-this.defInt = 23;\r
-} else if (this.type.equals ("dna")) {\r
-this.intToStr = jalview.analysis.AlignSeq.dna;\r
-this.charToInt = jalview.schemes.ResidueProperties.nucleotideIndex;\r
-this.defInt = 10;\r
-} else {\r
-this.output.append ("Wrong type = dna or pep only");\r
-throw  new Error (jalview.util.MessageManager.formatMessage ("error.unknown_type_dna_or_pep",  Clazz.newArray (-1, [type2])));\r
-}}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "traceAlignment", \r
-function () {\r
-var max = -9999;\r
-for (var i = 0; i < this.seq1.length; i++) {\r
-if (this.score[i][this.seq2.length - 1] > max) {\r
-max = this.score[i][this.seq2.length - 1];\r
-this.maxi = i;\r
-this.maxj = this.seq2.length - 1;\r
-}}\r
-for (var j = 0; j < this.seq2.length; j++) {\r
-if (this.score[this.seq1.length - 1][j] > max) {\r
-max = this.score[this.seq1.length - 1][j];\r
-this.maxi = this.seq1.length - 1;\r
-this.maxj = j;\r
-}}\r
-var i = this.maxi;\r
-var j = this.maxj;\r
-var trace;\r
-this.maxscore = Clazz.doubleToInt (this.score[i][j] / 10);\r
-this.seq1end = this.maxi + 1;\r
-this.seq2end = this.maxj + 1;\r
-this.aseq1 =  Clazz.newIntArray (this.seq1.length + this.seq2.length, 0);\r
-this.aseq2 =  Clazz.newIntArray (this.seq1.length + this.seq2.length, 0);\r
-this.count = (this.seq1.length + this.seq2.length) - 1;\r
-while ((i > 0) && (j > 0)) {\r
-if ((this.aseq1[this.count] != this.defInt) && (i >= 0)) {\r
-this.aseq1[this.count] = this.seq1[i];\r
-this.astr1 = this.s1str.charAt (i) + this.astr1;\r
-}if ((this.aseq2[this.count] != this.defInt) && (j > 0)) {\r
-this.aseq2[this.count] = this.seq2[j];\r
-this.astr2 = this.s2str.charAt (j) + this.astr2;\r
-}trace = this.findTrace (i, j);\r
-if (trace == 0) {\r
-i--;\r
-j--;\r
-} else if (trace == 1) {\r
-j--;\r
-this.aseq1[this.count] = this.defInt;\r
-this.astr1 = "-" + this.astr1.substring (1);\r
-} else if (trace == -1) {\r
-i--;\r
-this.aseq2[this.count] = this.defInt;\r
-this.astr2 = "-" + this.astr2.substring (1);\r
-}this.count--;\r
-}\r
-this.seq1start = i + 1;\r
-this.seq2start = j + 1;\r
-if (this.aseq1[this.count] != this.defInt) {\r
-this.aseq1[this.count] = this.seq1[i];\r
-this.astr1 = this.s1str.charAt (i) + this.astr1;\r
-}if (this.aseq2[this.count] != this.defInt) {\r
-this.aseq2[this.count] = this.seq2[j];\r
-this.astr2 = this.s2str.charAt (j) + this.astr2;\r
-}});\r
-Clazz.defineMethod (c$, "printAlignment", \r
-function (os) {\r
-var s1id = this.s1.getName ();\r
-var s2id = this.s2.getName ();\r
-var maxid = this.s1.getName ().length;\r
-if (this.s2.getName ().length > maxid) {\r
-maxid = this.s2.getName ().length;\r
-}if (maxid > 30) {\r
-maxid = 30;\r
-if (this.s1.getName ().length > maxid) {\r
-s1id = this.s1.getName ().substring (0, 30);\r
-}if (this.s2.getName ().length > maxid) {\r
-s2id = this.s2.getName ().substring (0, 30);\r
-}}var len = 72 - maxid - 1;\r
-var nochunks = (Clazz.doubleToInt ((this.aseq1.length - this.count) / len)) + 1;\r
-this.pid = 0;\r
-this.output.append ("Score = ").append (this.score[this.maxi][this.maxj]).append (jalview.analysis.AlignSeq.NEWLINE);\r
-this.output.append ("Length of alignment = ").append (String.valueOf (this.aseq1.length - this.count)).append (jalview.analysis.AlignSeq.NEWLINE);\r
-this.output.append ("Sequence ");\r
-this.output.append ( new jalview.util.Format ("%" + maxid + "s").form (this.s1.getName ()));\r
-this.output.append (" :  ").append (String.valueOf (this.s1.getStart ())).append (" - ").append (String.valueOf (this.s1.getEnd ()));\r
-this.output.append (" (Sequence length = ").append (String.valueOf (this.s1str.length)).append (")").append (jalview.analysis.AlignSeq.NEWLINE);\r
-this.output.append ("Sequence ");\r
-this.output.append ( new jalview.util.Format ("%" + maxid + "s").form (this.s2.getName ()));\r
-this.output.append (" :  ").append (String.valueOf (this.s2.getStart ())).append (" - ").append (String.valueOf (this.s2.getEnd ()));\r
-this.output.append (" (Sequence length = ").append (String.valueOf (this.s2str.length)).append (")").append (jalview.analysis.AlignSeq.NEWLINE).append (jalview.analysis.AlignSeq.NEWLINE);\r
-for (var j = 0; j < nochunks; j++) {\r
-this.output.append ( new jalview.util.Format ("%" + (maxid) + "s").form (s1id)).append (" ");\r
-for (var i = 0; i < len; i++) {\r
-if ((i + (j * len)) < this.astr1.length) {\r
-this.output.append (this.astr1.charAt (i + (j * len)));\r
-}}\r
-this.output.append (jalview.analysis.AlignSeq.NEWLINE);\r
-this.output.append ( new jalview.util.Format ("%" + (maxid) + "s").form (" ")).append (" ");\r
-for (var i = 0; i < len; i++) {\r
-if ((i + (j * len)) < this.astr1.length) {\r
-if (this.astr1.charAt (i + (j * len)) == this.astr2.charAt (i + (j * len)) && !jalview.util.Comparison.isGap (this.astr1.charAt (i + (j * len)))) {\r
-this.pid++;\r
-this.output.append ("|");\r
-} else if (this.type.equals ("pep")) {\r
-if (jalview.schemes.ResidueProperties.getPAM250 (this.astr1.charAt (i + (j * len)), this.astr2.charAt (i + (j * len))) > 0) {\r
-this.output.append (".");\r
-} else {\r
-this.output.append (" ");\r
-}} else {\r
-this.output.append (" ");\r
-}}}\r
-this.output = this.output.append (jalview.analysis.AlignSeq.NEWLINE);\r
-this.output = this.output.append ( new jalview.util.Format ("%" + (maxid) + "s").form (s2id)).append (" ");\r
-for (var i = 0; i < len; i++) {\r
-if ((i + (j * len)) < this.astr2.length) {\r
-this.output.append (this.astr2.charAt (i + (j * len)));\r
-}}\r
-this.output.append (jalview.analysis.AlignSeq.NEWLINE).append (jalview.analysis.AlignSeq.NEWLINE);\r
-}\r
-this.pid = this.pid / (this.aseq1.length - this.count) * 100;\r
-this.output = this.output.append ( new jalview.util.Format ("Percentage ID = %2.2f\n\n").formDouble (this.pid));\r
-try {\r
-os.print (this.output.toString ());\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}, "java.io.PrintStream");\r
-Clazz.defineMethod (c$, "printScoreMatrix", \r
-function (mat) {\r
-var n = this.seq1.length;\r
-var m = this.seq2.length;\r
-for (var i = 0; i < n; i++) {\r
-if (i == 0) {\r
-jalview.util.Format.print (System.out, "%8s", this.s2str.substring (0, 1));\r
-for (var jj = 1; jj < m; jj++) {\r
-jalview.util.Format.print (System.out, "%5s", this.s2str.substring (jj, jj + 1));\r
-}\r
-System.out.println ();\r
-}for (var j = 0; j < m; j++) {\r
-if (j == 0) {\r
-jalview.util.Format.print (System.out, "%3s", this.s1str.substring (i, i + 1));\r
-}jalview.util.Format.printLong (System.out, "%3d ", Clazz.doubleToInt (mat[i][j] / 10));\r
-}\r
-System.out.println ();\r
-}\r
-}, "~A");\r
-Clazz.defineMethod (c$, "findTrace", \r
-function (i, j) {\r
-var t = 0;\r
-var max = this.score[i - 1][j - 1] + (this.lookup[this.seq1[i]][this.seq2[j]] * 10);\r
-if (this.F[i][j] > max) {\r
-max = this.F[i][j];\r
-t = -1;\r
-} else if (this.F[i][j] == max) {\r
-if (this.prev == -1) {\r
-max = this.F[i][j];\r
-t = -1;\r
-}}if (this.E[i][j] >= max) {\r
-max = this.E[i][j];\r
-t = 1;\r
-} else if (this.E[i][j] == max) {\r
-if (this.prev == 1) {\r
-max = this.E[i][j];\r
-t = 1;\r
-}}this.prev = t;\r
-return t;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "calcScoreMatrix", \r
-function () {\r
-var n = this.seq1.length;\r
-var m = this.seq2.length;\r
-this.score[0][0] = this.lookup[this.seq1[0]][this.seq2[0]] * 10;\r
-this.E[0][0] = -this.gapExtend;\r
-this.F[0][0] = 0;\r
-for (var j = 1; j < m; j++) {\r
-this.E[0][j] = this.max (this.score[0][j - 1] - this.gapOpen, this.E[0][j - 1] - this.gapExtend);\r
-this.F[0][j] = -this.gapExtend;\r
-this.score[0][j] = this.max (this.lookup[this.seq1[0]][this.seq2[j]] * 10, -this.gapOpen, -this.gapExtend);\r
-this.traceback[0][j] = 1;\r
-}\r
-for (var i = 1; i < n; i++) {\r
-this.E[i][0] = -this.gapOpen;\r
-this.F[i][0] = this.max (this.score[i - 1][0] - this.gapOpen, this.F[i - 1][0] - this.gapExtend);\r
-this.score[i][0] = this.max (this.lookup[this.seq1[i]][this.seq2[0]] * 10, this.E[i][0], this.F[i][0]);\r
-this.traceback[i][0] = -1;\r
-}\r
-for (var i = 1; i < n; i++) {\r
-for (var j = 1; j < m; j++) {\r
-this.E[i][j] = this.max (this.score[i][j - 1] - this.gapOpen, this.E[i][j - 1] - this.gapExtend);\r
-this.F[i][j] = this.max (this.score[i - 1][j] - this.gapOpen, this.F[i - 1][j] - this.gapExtend);\r
-this.score[i][j] = this.max (this.score[i - 1][j - 1] + (this.lookup[this.seq1[i]][this.seq2[j]] * 10), this.E[i][j], this.F[i][j]);\r
-this.traceback[i][j] = this.findTrace (i, j);\r
-}\r
-}\r
-});\r
-c$.extractGaps = Clazz.defineMethod (c$, "extractGaps", \r
-function (gapChars, seq) {\r
-if (gapChars == null || seq == null) {\r
-return null;\r
-}var str =  new java.util.StringTokenizer (seq, gapChars);\r
-var newString =  new StringBuilder (seq.length);\r
-while (str.hasMoreTokens ()) {\r
-newString.append (str.nextToken ());\r
-}\r
-return newString.toString ();\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "max", \r
-function (i1, i2, i3) {\r
-var max = i1;\r
-if (i2 > i1) {\r
-max = i2;\r
-}if (i3 > max) {\r
-max = i3;\r
-}return max;\r
-}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "max", \r
-function (i1, i2) {\r
-var max = i1;\r
-if (i2 > i1) {\r
-max = i2;\r
-}return max;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "stringToInt", \r
-function (s, type) {\r
-var seq1 =  Clazz.newIntArray (s.length, 0);\r
-for (var i = 0; i < s.length; i++) {\r
-var c = s.charAt (i);\r
-if ('a' <= c && c <= 'z') {\r
-c = String.fromCharCode (c.charCodeAt (0) - (32));\r
-}try {\r
-seq1[i] = this.charToInt[c.charCodeAt (0)];\r
-if (seq1[i] < 0 || seq1[i] > this.defInt) {\r
-seq1[i] = this.defInt;\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-seq1[i] = this.defInt;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}\r
-return seq1;\r
-}, "~S,~S");\r
-c$.displayMatrix = Clazz.defineMethod (c$, "displayMatrix", \r
-function (g, mat, n, m, psize) {\r
-var max = -1000;\r
-var min = 1000;\r
-for (var i = 0; i < n; i++) {\r
-for (var j = 0; j < m; j++) {\r
-if (mat[i][j] >= max) {\r
-max = mat[i][j];\r
-}if (mat[i][j] <= min) {\r
-min = mat[i][j];\r
-}}\r
-}\r
-System.out.println (max + " " + min);\r
-for (var i = 0; i < n; i++) {\r
-for (var j = 0; j < m; j++) {\r
-var x = psize * i;\r
-var y = psize * j;\r
-var score = (mat[i][j] - min) / (max - min);\r
-g.setColor ( new java.awt.Color (score, 0, 0));\r
-g.fillRect (x, y, psize, psize);\r
-}\r
-}\r
-}, "java.awt.Graphics,~A,~N,~N,~N");\r
-c$.doGlobalNWAlignment = Clazz.defineMethod (c$, "doGlobalNWAlignment", \r
-function (s1, s2, type) {\r
-var as =  new jalview.analysis.AlignSeq (s1, s2, type);\r
-as.calcScoreMatrix ();\r
-as.traceAlignment ();\r
-return as;\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~S");\r
-Clazz.defineMethod (c$, "getMappingFromS1", \r
-function (allowmismatch) {\r
-var as1 =  new java.util.ArrayList ();\r
-var as2 =  new java.util.ArrayList ();\r
-var pdbpos = this.s2.getStart () + this.getSeq2Start () - 2;\r
-var alignpos = this.s1.getStart () + this.getSeq1Start () - 2;\r
-var lp2 = pdbpos - 3;\r
-var lp1 = alignpos - 3;\r
-var lastmatch = false;\r
-for (var i = 0; i < this.astr1.length; i++) {\r
-var c1 = this.astr1.charAt (i);\r
-var c2 = this.astr2.charAt (i);\r
-if (c1 != '-') {\r
-alignpos++;\r
-}if (c2 != '-') {\r
-pdbpos++;\r
-}if (allowmismatch || c1 == c2) {\r
-if (lp1 + 1 != alignpos || lp2 + 1 != pdbpos) {\r
-as1.add (Integer.$valueOf (alignpos));\r
-as2.add (Integer.$valueOf (pdbpos));\r
-}lastmatch = true;\r
-lp1 = alignpos;\r
-lp2 = pdbpos;\r
-} else {\r
-if (lastmatch) {\r
-as1.add (Integer.$valueOf (lp1));\r
-as2.add (Integer.$valueOf (lp2));\r
-}lastmatch = false;\r
-}}\r
-var mapseq1 =  Clazz.newIntArray (as1.size () + (lastmatch ? 1 : 0), 0);\r
-var mapseq2 =  Clazz.newIntArray (as2.size () + (lastmatch ? 1 : 0), 0);\r
-var i = 0;\r
-for (var ip, $ip = as1.iterator (); $ip.hasNext () && ((ip = $ip.next ()) || true);) {\r
-mapseq1[i++] = (ip).intValue ();\r
-}\r
-;i = 0;\r
-for (var ip, $ip = as2.iterator (); $ip.hasNext () && ((ip = $ip.next ()) || true);) {\r
-mapseq2[i++] = (ip).intValue ();\r
-}\r
-;if (lastmatch) {\r
-mapseq1[mapseq1.length - 1] = alignpos;\r
-mapseq2[mapseq2.length - 1] = pdbpos;\r
-}var map =  new jalview.util.MapList (mapseq1, mapseq2, 1, 1);\r
-var mapping =  new jalview.datamodel.Mapping (map);\r
-mapping.setTo (this.s2);\r
-return mapping;\r
-}, "~B");\r
-c$.replaceMatchingSeqsWith = Clazz.defineMethod (c$, "replaceMatchingSeqsWith", \r
-function (seqs, annotations, ochains, al, dnaOrProtein, removeOldAnnots) {\r
-var orig =  new java.util.ArrayList ();\r
-var repl =  new java.util.ArrayList ();\r
-var aligs =  new java.util.ArrayList ();\r
-if (al != null && al.getHeight () > 0) {\r
-var matches =  new java.util.ArrayList ();\r
-var aligns =  new java.util.ArrayList ();\r
-for (var sq, $sq = ochains.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {\r
-var bestm = null;\r
-var bestaseq = null;\r
-var bestscore = 0;\r
-for (var msq, $msq = al.getSequences ().iterator (); $msq.hasNext () && ((msq = $msq.next ()) || true);) {\r
-var aseq = jalview.analysis.AlignSeq.doGlobalNWAlignment (msq, sq, dnaOrProtein);\r
-if (bestm == null || aseq.getMaxScore () > bestscore) {\r
-bestscore = aseq.getMaxScore ();\r
-bestaseq = aseq;\r
-bestm = msq;\r
-}}\r
-System.out.println ("Best Score for " + (matches.size () + 1) + " :" + bestscore);\r
-matches.add (bestm);\r
-aligns.add (bestaseq);\r
-al.deleteSequence (bestm);\r
-}\r
-for (var p = 0, pSize = seqs.size (); p < pSize; p++) {\r
-var sq;\r
-var sp = seqs.get (p);\r
-var q;\r
-if ((q = ochains.indexOf (sp)) > -1) {\r
-seqs.set (p, sq = matches.get (q));\r
-orig.add (sp);\r
-repl.add (sq);\r
-sq.setName (sp.getName ());\r
-sq.setDescription (sp.getDescription ());\r
-var sp2sq;\r
-sq.transferAnnotation (sp, sp2sq = aligns.get (q).getMappingFromS1 (false));\r
-aligs.add (aligns.get (q));\r
-var inspos = -1;\r
-for (var ap = 0; ap < annotations.size (); ) {\r
-if (annotations.get (ap).sequenceRef === sp) {\r
-if (inspos == -1) {\r
-inspos = ap;\r
-}if (removeOldAnnots) {\r
-annotations.remove (ap);\r
-} else {\r
-var alan = annotations.remove (ap);\r
-alan.liftOver (sq, sp2sq);\r
-alan.setSequenceRef (sq);\r
-sq.addAlignmentAnnotation (alan);\r
-}} else {\r
-ap++;\r
-}}\r
-if (sq.getAnnotation () != null && sq.getAnnotation ().length > 0) {\r
-annotations.addAll (inspos == -1 ? annotations.size () : inspos, java.util.Arrays.asList (sq.getAnnotation ()));\r
-}}}\r
-}return java.util.Arrays.asList ([orig, repl, aligs]);\r
-}, "java.util.List,java.util.List,java.util.List,jalview.datamodel.AlignmentI,~S,~B");\r
-c$.computeRedundancyMatrix = Clazz.defineMethod (c$, "computeRedundancyMatrix", \r
-function (originalSequences, omitHidden, start, end, ungapped) {\r
-var height = originalSequences.length;\r
-var redundancy =  Clazz.newFloatArray (height, 0);\r
-var lngth =  Clazz.newIntArray (height, 0);\r
-for (var i = 0; i < height; i++) {\r
-redundancy[i] = 0;\r
-lngth[i] = -1;\r
-}\r
-var pid;\r
-var seqi;\r
-var seqj;\r
-for (var i = 0; i < height; i++) {\r
-for (var j = 0; j < i; j++) {\r
-if (i == j) {\r
-continue;\r
-}if (omitHidden == null) {\r
-seqi = originalSequences[i].getSequenceAsString (start, end);\r
-seqj = originalSequences[j].getSequenceAsString (start, end);\r
-} else {\r
-seqi = omitHidden[i];\r
-seqj = omitHidden[j];\r
-}if (lngth[i] == -1) {\r
-var ug = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, seqi);\r
-lngth[i] = ug.length;\r
-if (ungapped) {\r
-seqi = ug;\r
-}}if (lngth[j] == -1) {\r
-var ug = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, seqj);\r
-lngth[j] = ug.length;\r
-if (ungapped) {\r
-seqj = ug;\r
-}}pid = jalview.util.Comparison.PID (seqi, seqj);\r
-if (lngth[j] < lngth[i]) {\r
-redundancy[j] = Math.max (pid, redundancy[j]);\r
-} else {\r
-redundancy[i] = Math.max (pid, redundancy[i]);\r
-}}\r
-}\r
-return redundancy;\r
-}, "~A,~A,~N,~N,~B");\r
-Clazz.defineStatics (c$,\r
-"PEP", "pep",\r
-"DNA", "dna");\r
-c$.NEWLINE = c$.prototype.NEWLINE = System.lineSeparator ();\r
-Clazz.defineStatics (c$,\r
-"dna",  Clazz.newArray (-1, ["A", "C", "G", "T", "-"]),\r
-"pep",  Clazz.newArray (-1, ["A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V", "B", "Z", "X", "-"]));\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (["jalview.schemes.ResidueProperties", "java.lang.StringBuffer"], "jalview.analysis.AlignSeq", ["jalview.datamodel.Mapping", "$.Sequence", "jalview.util.Comparison", "$.Format", "$.MapList", "$.MessageManager", "java.awt.Color", "java.lang.Error", "$.StringBuilder", "java.util.ArrayList", "$.Arrays", "$.StringTokenizer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.score = null;
+this.E = null;
+this.F = null;
+this.traceback = null;
+this.seq1 = null;
+this.seq2 = null;
+this.s1 = null;
+this.s2 = null;
+this.s1str = null;
+this.s2str = null;
+this.maxi = 0;
+this.maxj = 0;
+this.aseq1 = null;
+this.aseq2 = null;
+this.astr1 = "";
+this.astr2 = "";
+this.seq1start = 0;
+this.seq1end = 0;
+this.seq2start = 0;
+this.seq2end = 0;
+this.count = 0;
+this.maxscore = 0;
+this.pid = 0;
+this.prev = 0;
+this.gapOpen = 120;
+this.gapExtend = 20;
+this.lookup = null;
+this.intToStr = null;
+this.defInt = 23;
+this.output = null;
+this.type = null;
+this.charToInt = null;
+Clazz.instantialize (this, arguments);
+}, jalview.analysis, "AlignSeq");
+Clazz.prepareFields (c$, function () {
+this.lookup = jalview.schemes.ResidueProperties.getBLOSUM62 ();
+this.intToStr = jalview.analysis.AlignSeq.pep;
+this.output =  new StringBuffer ();
+});
+Clazz.makeConstructor (c$, 
+function (s1, s2, type) {
+this.SeqInit (s1, s1.getSequenceAsString (), s2, s2.getSequenceAsString (), type);
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~S");
+Clazz.makeConstructor (c$, 
+function (s1, string1, s2, string2, type) {
+this.SeqInit (s1, string1.toUpperCase (), s2, string2.toUpperCase (), type);
+}, "jalview.datamodel.SequenceI,~S,jalview.datamodel.SequenceI,~S,~S");
+Clazz.defineMethod (c$, "getMaxScore", 
+function () {
+return this.maxscore;
+});
+Clazz.defineMethod (c$, "getSeq2Start", 
+function () {
+return this.seq2start;
+});
+Clazz.defineMethod (c$, "getSeq2End", 
+function () {
+return this.seq2end;
+});
+Clazz.defineMethod (c$, "getSeq1Start", 
+function () {
+return this.seq1start;
+});
+Clazz.defineMethod (c$, "getSeq1End", 
+function () {
+return this.seq1end;
+});
+Clazz.defineMethod (c$, "getOutput", 
+function () {
+return this.output.toString ();
+});
+Clazz.defineMethod (c$, "getAStr1", 
+function () {
+return this.astr1;
+});
+Clazz.defineMethod (c$, "getAStr2", 
+function () {
+return this.astr2;
+});
+Clazz.defineMethod (c$, "getASeq1", 
+function () {
+return this.aseq1;
+});
+Clazz.defineMethod (c$, "getASeq2", 
+function () {
+return this.aseq2;
+});
+Clazz.defineMethod (c$, "getS1", 
+function () {
+return this.s1;
+});
+Clazz.defineMethod (c$, "getS2", 
+function () {
+return this.s2;
+});
+Clazz.defineMethod (c$, "getAlignedSeq1", 
+function () {
+var alSeq1 =  new jalview.datamodel.Sequence (this.s1.getName (), this.getAStr1 ());
+alSeq1.setStart (this.s1.getStart () + this.getSeq1Start () - 1);
+alSeq1.setEnd (this.s1.getStart () + this.getSeq1End () - 1);
+alSeq1.setDatasetSequence (this.s1.getDatasetSequence () == null ? this.s1 : this.s1.getDatasetSequence ());
+return alSeq1;
+});
+Clazz.defineMethod (c$, "getAlignedSeq2", 
+function () {
+var alSeq2 =  new jalview.datamodel.Sequence (this.s2.getName (), this.getAStr2 ());
+alSeq2.setStart (this.s2.getStart () + this.getSeq2Start () - 1);
+alSeq2.setEnd (this.s2.getStart () + this.getSeq2End () - 1);
+alSeq2.setDatasetSequence (this.s2.getDatasetSequence () == null ? this.s2 : this.s2.getDatasetSequence ());
+return alSeq2;
+});
+Clazz.defineMethod (c$, "SeqInit", 
+function (s1, string1, s2, string2, type) {
+this.s1 = s1;
+this.s2 = s2;
+this.setDefaultParams (type);
+this.SeqInit (string1, string2);
+}, "jalview.datamodel.SequenceI,~S,jalview.datamodel.SequenceI,~S,~S");
+Clazz.defineMethod (c$, "SeqInit", 
+function (s1, string1, s2, string2, scoreMatrix) {
+this.s1 = s1;
+this.s2 = s2;
+this.setType (scoreMatrix.isDNA () ? "dna" : "pep");
+this.lookup = scoreMatrix.getMatrix ();
+}, "jalview.datamodel.SequenceI,~S,jalview.datamodel.SequenceI,~S,jalview.schemes.ScoreMatrix");
+Clazz.defineMethod (c$, "SeqInit", 
+($fz = function (string1, string2) {
+this.s1str = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, string1);
+this.s2str = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, string2);
+if (this.s1str.length == 0 || this.s2str.length == 0) {
+this.output.append ("ALL GAPS: " + (this.s1str.length == 0 ? this.s1.getName () : " ") + (this.s2str.length == 0 ? this.s2.getName () : ""));
+return;
+}this.seq1 =  Clazz.newIntArray (this.s1str.length, 0);
+this.seq2 =  Clazz.newIntArray (this.s2str.length, 0);
+this.score =  Clazz.newIntArray (this.s1str.length, this.s2str.length, 0);
+this.E =  Clazz.newIntArray (this.s1str.length, this.s2str.length, 0);
+this.F =  Clazz.newIntArray (this.s1str.length, this.s2str.length, 0);
+this.traceback =  Clazz.newIntArray (this.s1str.length, this.s2str.length, 0);
+this.seq1 = this.stringToInt (this.s1str, this.type);
+this.seq2 = this.stringToInt (this.s2str, this.type);
+}, $fz.isPrivate = true, $fz), "~S,~S");
+Clazz.defineMethod (c$, "setDefaultParams", 
+($fz = function (type) {
+this.setType (type);
+if (type.equals ("pep")) {
+this.lookup = jalview.schemes.ResidueProperties.getDefaultPeptideMatrix ();
+} else if (type.equals ("dna")) {
+this.lookup = jalview.schemes.ResidueProperties.getDefaultDnaMatrix ();
+}}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "setType", 
+($fz = function (type2) {
+this.type = type2;
+if (this.type.equals ("pep")) {
+this.intToStr = jalview.analysis.AlignSeq.pep;
+this.charToInt = jalview.schemes.ResidueProperties.aaIndex;
+this.defInt = 23;
+} else if (this.type.equals ("dna")) {
+this.intToStr = jalview.analysis.AlignSeq.dna;
+this.charToInt = jalview.schemes.ResidueProperties.nucleotideIndex;
+this.defInt = 10;
+} else {
+this.output.append ("Wrong type = dna or pep only");
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.unknown_type_dna_or_pep",  Clazz.newArray (-1, [type2])));
+}}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "traceAlignment", 
+function () {
+var max = -9999;
+for (var i = 0; i < this.seq1.length; i++) {
+if (this.score[i][this.seq2.length - 1] > max) {
+max = this.score[i][this.seq2.length - 1];
+this.maxi = i;
+this.maxj = this.seq2.length - 1;
+}}
+for (var j = 0; j < this.seq2.length; j++) {
+if (this.score[this.seq1.length - 1][j] > max) {
+max = this.score[this.seq1.length - 1][j];
+this.maxi = this.seq1.length - 1;
+this.maxj = j;
+}}
+var i = this.maxi;
+var j = this.maxj;
+var trace;
+this.maxscore = Clazz.doubleToInt (this.score[i][j] / 10);
+this.seq1end = this.maxi + 1;
+this.seq2end = this.maxj + 1;
+this.aseq1 =  Clazz.newIntArray (this.seq1.length + this.seq2.length, 0);
+this.aseq2 =  Clazz.newIntArray (this.seq1.length + this.seq2.length, 0);
+this.count = (this.seq1.length + this.seq2.length) - 1;
+while ((i > 0) && (j > 0)) {
+if ((this.aseq1[this.count] != this.defInt) && (i >= 0)) {
+this.aseq1[this.count] = this.seq1[i];
+this.astr1 = this.s1str.charAt (i) + this.astr1;
+}if ((this.aseq2[this.count] != this.defInt) && (j > 0)) {
+this.aseq2[this.count] = this.seq2[j];
+this.astr2 = this.s2str.charAt (j) + this.astr2;
+}trace = this.findTrace (i, j);
+if (trace == 0) {
+i--;
+j--;
+} else if (trace == 1) {
+j--;
+this.aseq1[this.count] = this.defInt;
+this.astr1 = "-" + this.astr1.substring (1);
+} else if (trace == -1) {
+i--;
+this.aseq2[this.count] = this.defInt;
+this.astr2 = "-" + this.astr2.substring (1);
+}this.count--;
+}
+this.seq1start = i + 1;
+this.seq2start = j + 1;
+if (this.aseq1[this.count] != this.defInt) {
+this.aseq1[this.count] = this.seq1[i];
+this.astr1 = this.s1str.charAt (i) + this.astr1;
+}if (this.aseq2[this.count] != this.defInt) {
+this.aseq2[this.count] = this.seq2[j];
+this.astr2 = this.s2str.charAt (j) + this.astr2;
+}});
+Clazz.defineMethod (c$, "printAlignment", 
+function (os) {
+var s1id = this.s1.getName ();
+var s2id = this.s2.getName ();
+var maxid = this.s1.getName ().length;
+if (this.s2.getName ().length > maxid) {
+maxid = this.s2.getName ().length;
+}if (maxid > 30) {
+maxid = 30;
+if (this.s1.getName ().length > maxid) {
+s1id = this.s1.getName ().substring (0, 30);
+}if (this.s2.getName ().length > maxid) {
+s2id = this.s2.getName ().substring (0, 30);
+}}var len = 72 - maxid - 1;
+var nochunks = (Clazz.doubleToInt ((this.aseq1.length - this.count) / len)) + 1;
+this.pid = 0;
+this.output.append ("Score = ").append ("" + this.score[this.maxi][this.maxj]).append (jalview.analysis.AlignSeq.NEWLINE);
+this.output.append ("Length of alignment = ").append (String.valueOf (this.aseq1.length - this.count)).append (jalview.analysis.AlignSeq.NEWLINE);
+this.output.append ("Sequence ");
+this.output.append ( new jalview.util.Format ("%" + maxid + "s").form (this.s1.getName ()));
+this.output.append (" :  ").append (String.valueOf (this.s1.getStart ())).append (" - ").append (String.valueOf (this.s1.getEnd ()));
+this.output.append (" (Sequence length = ").append (String.valueOf (this.s1str.length)).append (")").append (jalview.analysis.AlignSeq.NEWLINE);
+this.output.append ("Sequence ");
+this.output.append ( new jalview.util.Format ("%" + maxid + "s").form (this.s2.getName ()));
+this.output.append (" :  ").append (String.valueOf (this.s2.getStart ())).append (" - ").append (String.valueOf (this.s2.getEnd ()));
+this.output.append (" (Sequence length = ").append (String.valueOf (this.s2str.length)).append (")").append (jalview.analysis.AlignSeq.NEWLINE).append (jalview.analysis.AlignSeq.NEWLINE);
+for (var j = 0; j < nochunks; j++) {
+this.output.append ( new jalview.util.Format ("%" + (maxid) + "s").form (s1id)).append (" ");
+for (var i = 0; i < len; i++) {
+if ((i + (j * len)) < this.astr1.length) {
+this.output.append (this.astr1.charAt (i + (j * len)));
+}}
+this.output.append (jalview.analysis.AlignSeq.NEWLINE);
+this.output.append ( new jalview.util.Format ("%" + (maxid) + "s").form (" ")).append (" ");
+for (var i = 0; i < len; i++) {
+if ((i + (j * len)) < this.astr1.length) {
+if (this.astr1.charAt (i + (j * len)) == this.astr2.charAt (i + (j * len)) && !jalview.util.Comparison.isGap (this.astr1.charAt (i + (j * len)))) {
+this.pid++;
+this.output.append ("|");
+} else if (this.type.equals ("pep")) {
+if (jalview.schemes.ResidueProperties.getPAM250 (this.astr1.charAt (i + (j * len)), this.astr2.charAt (i + (j * len))) > 0) {
+this.output.append (".");
+} else {
+this.output.append (" ");
+}} else {
+this.output.append (" ");
+}}}
+this.output = this.output.append (jalview.analysis.AlignSeq.NEWLINE);
+this.output = this.output.append ( new jalview.util.Format ("%" + (maxid) + "s").form (s2id)).append (" ");
+for (var i = 0; i < len; i++) {
+if ((i + (j * len)) < this.astr2.length) {
+this.output.append (this.astr2.charAt (i + (j * len)));
+}}
+this.output.append (jalview.analysis.AlignSeq.NEWLINE).append (jalview.analysis.AlignSeq.NEWLINE);
+}
+this.pid = this.pid / (this.aseq1.length - this.count) * 100;
+this.output = this.output.append ( new jalview.util.Format ("Percentage ID = %2.2f\n\n").formDouble (this.pid));
+try {
+os.print (this.output.toString ());
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}, "java.io.PrintStream");
+Clazz.defineMethod (c$, "printScoreMatrix", 
+function (mat) {
+var n = this.seq1.length;
+var m = this.seq2.length;
+for (var i = 0; i < n; i++) {
+if (i == 0) {
+jalview.util.Format.print (System.out, "%8s", this.s2str.substring (0, 1));
+for (var jj = 1; jj < m; jj++) {
+jalview.util.Format.print (System.out, "%5s", this.s2str.substring (jj, jj + 1));
+}
+System.out.println ();
+}for (var j = 0; j < m; j++) {
+if (j == 0) {
+jalview.util.Format.print (System.out, "%3s", this.s1str.substring (i, i + 1));
+}jalview.util.Format.printLong (System.out, "%3d ", Clazz.doubleToInt (mat[i][j] / 10));
+}
+System.out.println ();
+}
+}, "~A");
+Clazz.defineMethod (c$, "findTrace", 
+function (i, j) {
+var t = 0;
+var max = this.score[i - 1][j - 1] + (this.lookup[this.seq1[i]][this.seq2[j]] * 10);
+if (this.F[i][j] > max) {
+max = this.F[i][j];
+t = -1;
+} else if (this.F[i][j] == max) {
+if (this.prev == -1) {
+max = this.F[i][j];
+t = -1;
+}}if (this.E[i][j] >= max) {
+max = this.E[i][j];
+t = 1;
+} else if (this.E[i][j] == max) {
+if (this.prev == 1) {
+max = this.E[i][j];
+t = 1;
+}}this.prev = t;
+return t;
+}, "~N,~N");
+Clazz.defineMethod (c$, "calcScoreMatrix", 
+function () {
+var n = this.seq1.length;
+var m = this.seq2.length;
+this.score[0][0] = this.lookup[this.seq1[0]][this.seq2[0]] * 10;
+this.E[0][0] = -this.gapExtend;
+this.F[0][0] = 0;
+for (var j = 1; j < m; j++) {
+this.E[0][j] = this.max (this.score[0][j - 1] - this.gapOpen, this.E[0][j - 1] - this.gapExtend);
+this.F[0][j] = -this.gapExtend;
+this.score[0][j] = this.max (this.lookup[this.seq1[0]][this.seq2[j]] * 10, -this.gapOpen, -this.gapExtend);
+this.traceback[0][j] = 1;
+}
+for (var i = 1; i < n; i++) {
+this.E[i][0] = -this.gapOpen;
+this.F[i][0] = this.max (this.score[i - 1][0] - this.gapOpen, this.F[i - 1][0] - this.gapExtend);
+this.score[i][0] = this.max (this.lookup[this.seq1[i]][this.seq2[0]] * 10, this.E[i][0], this.F[i][0]);
+this.traceback[i][0] = -1;
+}
+for (var i = 1; i < n; i++) {
+for (var j = 1; j < m; j++) {
+this.E[i][j] = this.max (this.score[i][j - 1] - this.gapOpen, this.E[i][j - 1] - this.gapExtend);
+this.F[i][j] = this.max (this.score[i - 1][j] - this.gapOpen, this.F[i - 1][j] - this.gapExtend);
+this.score[i][j] = this.max (this.score[i - 1][j - 1] + (this.lookup[this.seq1[i]][this.seq2[j]] * 10), this.E[i][j], this.F[i][j]);
+this.traceback[i][j] = this.findTrace (i, j);
+}
+}
+});
+c$.extractGaps = Clazz.defineMethod (c$, "extractGaps", 
+function (gapChars, seq) {
+if (gapChars == null || seq == null) {
+return null;
+}var str =  new java.util.StringTokenizer (seq, gapChars);
+var newString =  new StringBuilder (seq.length);
+while (str.hasMoreTokens ()) {
+newString.append (str.nextToken ());
+}
+return newString.toString ();
+}, "~S,~S");
+Clazz.defineMethod (c$, "max", 
+function (i1, i2, i3) {
+var max = i1;
+if (i2 > i1) {
+max = i2;
+}if (i3 > max) {
+max = i3;
+}return max;
+}, "~N,~N,~N");
+Clazz.defineMethod (c$, "max", 
+function (i1, i2) {
+var max = i1;
+if (i2 > i1) {
+max = i2;
+}return max;
+}, "~N,~N");
+Clazz.defineMethod (c$, "stringToInt", 
+function (s, type) {
+var seq1 =  Clazz.newIntArray (s.length, 0);
+for (var i = 0; i < s.length; i++) {
+var c = s.charAt (i);
+if ('a' <= c && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) - (32));
+}try {
+seq1[i] = this.charToInt[c.charCodeAt (0)];
+if (seq1[i] < 0 || seq1[i] > this.defInt) {
+seq1[i] = this.defInt;
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+seq1[i] = this.defInt;
+} else {
+throw e;
+}
+}
+}
+return seq1;
+}, "~S,~S");
+c$.displayMatrix = Clazz.defineMethod (c$, "displayMatrix", 
+function (g, mat, n, m, psize) {
+var max = -1000;
+var min = 1000;
+for (var i = 0; i < n; i++) {
+for (var j = 0; j < m; j++) {
+if (mat[i][j] >= max) {
+max = mat[i][j];
+}if (mat[i][j] <= min) {
+min = mat[i][j];
+}}
+}
+System.out.println (max + " " + min);
+for (var i = 0; i < n; i++) {
+for (var j = 0; j < m; j++) {
+var x = psize * i;
+var y = psize * j;
+var score = (mat[i][j] - min) / (max - min);
+g.setColor ( new java.awt.Color (score, 0, 0));
+g.fillRect (x, y, psize, psize);
+}
+}
+}, "java.awt.Graphics,~A,~N,~N,~N");
+c$.doGlobalNWAlignment = Clazz.defineMethod (c$, "doGlobalNWAlignment", 
+function (s1, s2, type) {
+var as =  new jalview.analysis.AlignSeq (s1, s2, type);
+as.calcScoreMatrix ();
+as.traceAlignment ();
+return as;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~S");
+Clazz.defineMethod (c$, "getMappingFromS1", 
+function (allowmismatch) {
+var as1 =  new java.util.ArrayList ();
+var as2 =  new java.util.ArrayList ();
+var pdbpos = this.s2.getStart () + this.getSeq2Start () - 2;
+var alignpos = this.s1.getStart () + this.getSeq1Start () - 2;
+var lp2 = pdbpos - 3;
+var lp1 = alignpos - 3;
+var lastmatch = false;
+for (var i = 0; i < this.astr1.length; i++) {
+var c1 = this.astr1.charAt (i);
+var c2 = this.astr2.charAt (i);
+if (c1 != '-') {
+alignpos++;
+}if (c2 != '-') {
+pdbpos++;
+}if (allowmismatch || c1 == c2) {
+if (lp1 + 1 != alignpos || lp2 + 1 != pdbpos) {
+as1.add (Integer.$valueOf (alignpos));
+as2.add (Integer.$valueOf (pdbpos));
+}lastmatch = true;
+lp1 = alignpos;
+lp2 = pdbpos;
+} else {
+if (lastmatch) {
+as1.add (Integer.$valueOf (lp1));
+as2.add (Integer.$valueOf (lp2));
+}lastmatch = false;
+}}
+var mapseq1 =  Clazz.newIntArray (as1.size () + (lastmatch ? 1 : 0), 0);
+var mapseq2 =  Clazz.newIntArray (as2.size () + (lastmatch ? 1 : 0), 0);
+var i = 0;
+for (var ip, $ip = as1.iterator (); $ip.hasNext () && ((ip = $ip.next ()) || true);) {
+mapseq1[i++] = (ip).intValue ();
+}
+;i = 0;
+for (var ip, $ip = as2.iterator (); $ip.hasNext () && ((ip = $ip.next ()) || true);) {
+mapseq2[i++] = (ip).intValue ();
+}
+;if (lastmatch) {
+mapseq1[mapseq1.length - 1] = alignpos;
+mapseq2[mapseq2.length - 1] = pdbpos;
+}var map =  new jalview.util.MapList (mapseq1, mapseq2, 1, 1);
+var mapping =  new jalview.datamodel.Mapping (map);
+mapping.setTo (this.s2);
+return mapping;
+}, "~B");
+c$.replaceMatchingSeqsWith = Clazz.defineMethod (c$, "replaceMatchingSeqsWith", 
+function (seqs, annotations, ochains, al, dnaOrProtein, removeOldAnnots) {
+var orig =  new java.util.ArrayList ();
+var repl =  new java.util.ArrayList ();
+var aligs =  new java.util.ArrayList ();
+if (al != null && al.getHeight () > 0) {
+var matches =  new java.util.ArrayList ();
+var aligns =  new java.util.ArrayList ();
+for (var sq, $sq = ochains.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+var bestm = null;
+var bestaseq = null;
+var bestscore = 0;
+for (var msq, $msq = al.getSequences ().iterator (); $msq.hasNext () && ((msq = $msq.next ()) || true);) {
+var aseq = jalview.analysis.AlignSeq.doGlobalNWAlignment (msq, sq, dnaOrProtein);
+if (bestm == null || aseq.getMaxScore () > bestscore) {
+bestscore = aseq.getMaxScore ();
+bestaseq = aseq;
+bestm = msq;
+}}
+System.out.println ("Best Score for " + (matches.size () + 1) + " :" + bestscore);
+matches.add (bestm);
+aligns.add (bestaseq);
+al.deleteSequence (bestm);
+}
+for (var p = 0, pSize = seqs.size (); p < pSize; p++) {
+var sq;
+var sp = seqs.get (p);
+var q;
+if ((q = ochains.indexOf (sp)) > -1) {
+seqs.set (p, sq = matches.get (q));
+orig.add (sp);
+repl.add (sq);
+sq.setName (sp.getName ());
+sq.setDescription (sp.getDescription ());
+var sp2sq;
+sq.transferAnnotation (sp, sp2sq = aligns.get (q).getMappingFromS1 (false));
+aligs.add (aligns.get (q));
+var inspos = -1;
+for (var ap = 0; ap < annotations.size (); ) {
+if (annotations.get (ap).sequenceRef === sp) {
+if (inspos == -1) {
+inspos = ap;
+}if (removeOldAnnots) {
+annotations.remove (ap);
+} else {
+var alan = annotations.remove (ap);
+alan.liftOver (sq, sp2sq);
+alan.setSequenceRef (sq);
+sq.addAlignmentAnnotation (alan);
+}} else {
+ap++;
+}}
+if (sq.getAnnotation () != null && sq.getAnnotation ().length > 0) {
+annotations.addAll (inspos == -1 ? annotations.size () : inspos, java.util.Arrays.asList (sq.getAnnotation ()));
+}}}
+}return java.util.Arrays.asList ([orig, repl, aligs]);
+}, "java.util.List,java.util.List,java.util.List,jalview.datamodel.AlignmentI,~S,~B");
+c$.computeRedundancyMatrix = Clazz.defineMethod (c$, "computeRedundancyMatrix", 
+function (originalSequences, omitHidden, start, end, ungapped) {
+var height = originalSequences.length;
+var redundancy =  Clazz.newFloatArray (height, 0);
+var lngth =  Clazz.newIntArray (height, 0);
+for (var i = 0; i < height; i++) {
+redundancy[i] = 0;
+lngth[i] = -1;
+}
+var pid;
+var seqi;
+var seqj;
+for (var i = 0; i < height; i++) {
+for (var j = 0; j < i; j++) {
+if (i == j) {
+continue;
+}if (omitHidden == null) {
+seqi = originalSequences[i].getSequenceAsString (start, end);
+seqj = originalSequences[j].getSequenceAsString (start, end);
+} else {
+seqi = omitHidden[i];
+seqj = omitHidden[j];
+}if (lngth[i] == -1) {
+var ug = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, seqi);
+lngth[i] = ug.length;
+if (ungapped) {
+seqi = ug;
+}}if (lngth[j] == -1) {
+var ug = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, seqj);
+lngth[j] = ug.length;
+if (ungapped) {
+seqj = ug;
+}}pid = jalview.util.Comparison.PID (seqi, seqj);
+if (lngth[j] < lngth[i]) {
+redundancy[j] = Math.max (pid, redundancy[j]);
+} else {
+redundancy[i] = Math.max (pid, redundancy[i]);
+}}
+}
+return redundancy;
+}, "~A,~A,~N,~N,~B");
+Clazz.defineStatics (c$,
+"PEP", "pep",
+"DNA", "dna");
+c$.NEWLINE = c$.prototype.NEWLINE = System.lineSeparator ();
+Clazz.defineStatics (c$,
+"dna",  Clazz.newArray (-1, ["A", "C", "G", "T", "-"]),
+"pep",  Clazz.newArray (-1, ["A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V", "B", "Z", "X", "-"]));
+});
index 4d24030..a01673f 100644 (file)
Binary files a/bin/jalview/analysis/AlignmentAnnotationUtils.class and b/bin/jalview/analysis/AlignmentAnnotationUtils.class differ
index f742aa9..9522f6e 100644 (file)
@@ -1,73 +1,73 @@
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (null, "jalview.analysis.AlignmentAnnotationUtils", ["java.util.ArrayList", "$.Arrays", "$.BitSet", "$.Collections", "$.HashMap"], function () {\r
-c$ = Clazz.declareType (jalview.analysis, "AlignmentAnnotationUtils");\r
-c$.getShownHiddenTypes = Clazz.defineMethod (c$, "getShownHiddenTypes", \r
-function (shownTypes, hiddenTypes, annotations, forSequences) {\r
-var visibleGraphGroups = jalview.analysis.AlignmentAnnotationUtils.getVisibleLineGraphGroups (annotations);\r
-var groupLabels =  new java.util.HashMap ();\r
-var addedToShown =  new java.util.ArrayList ();\r
-var addedToHidden =  new java.util.ArrayList ();\r
-for (var aa, $aa = annotations.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {\r
-if (aa.annotations == null) {\r
-continue;\r
-}if (forSequences != null && (aa.sequenceRef != null && forSequences.contains (aa.sequenceRef))) {\r
-var calcId = aa.getCalcId ();\r
-var labelAsList =  new java.util.ArrayList ();\r
-var displayLabel = aa.label;\r
-labelAsList.add (displayLabel);\r
-if (aa.graph == 2 && aa.graphGroup > -1) {\r
-if (!groupLabels.containsKey (calcId)) {\r
-groupLabels.put (calcId,  new java.util.HashMap ());\r
-}var groupLabelsForCalcId = groupLabels.get (calcId);\r
-if (groupLabelsForCalcId.containsKey (new Integer (aa.graphGroup))) {\r
-if (!groupLabelsForCalcId.get (new Integer (aa.graphGroup)).contains (displayLabel)) {\r
-groupLabelsForCalcId.get (new Integer (aa.graphGroup)).add (displayLabel);\r
-}} else {\r
-groupLabelsForCalcId.put (new Integer (aa.graphGroup), labelAsList);\r
-}} else {\r
-var rememberAs = calcId + "!" + displayLabel;\r
-if (aa.visible && !addedToShown.contains (rememberAs)) {\r
-if (!shownTypes.containsKey (calcId)) {\r
-shownTypes.put (calcId,  new java.util.ArrayList ());\r
-}shownTypes.get (calcId).add (labelAsList);\r
-addedToShown.add (rememberAs);\r
-} else {\r
-if (!aa.visible && !addedToHidden.contains (rememberAs)) {\r
-if (!hiddenTypes.containsKey (calcId)) {\r
-hiddenTypes.put (calcId,  new java.util.ArrayList ());\r
-}hiddenTypes.get (calcId).add (labelAsList);\r
-addedToHidden.add (rememberAs);\r
-}}}}}\r
-for (var calcId, $calcId = groupLabels.keySet ().iterator (); $calcId.hasNext () && ((calcId = $calcId.next ()) || true);) {\r
-for (var group, $group = groupLabels.get (calcId).keySet ().iterator (); $group.hasNext () && ((group = $group.next ()) || true);) {\r
-var groupLabel = groupLabels.get (calcId).get (new Integer (group));\r
-java.util.Collections.sort (groupLabel);\r
-if (visibleGraphGroups.get (group)) {\r
-if (!shownTypes.containsKey (calcId)) {\r
-shownTypes.put (calcId,  new java.util.ArrayList ());\r
-}if (!shownTypes.get (calcId).contains (groupLabel)) {\r
-shownTypes.get (calcId).add (groupLabel);\r
-}} else {\r
-if (!hiddenTypes.containsKey (calcId)) {\r
-hiddenTypes.put (calcId,  new java.util.ArrayList ());\r
-}if (!hiddenTypes.get (calcId).contains (groupLabel)) {\r
-hiddenTypes.get (calcId).add (groupLabel);\r
-}}}\r
-}\r
-}, "java.util.Map,java.util.Map,java.util.List,java.util.List");\r
-c$.getVisibleLineGraphGroups = Clazz.defineMethod (c$, "getVisibleLineGraphGroups", \r
-function (annotations) {\r
-var result =  new java.util.BitSet ();\r
-for (var ann, $ann = annotations.iterator (); $ann.hasNext () && ((ann = $ann.next ()) || true);) {\r
-if (ann.graph == 2 && ann.visible) {\r
-var gg = ann.graphGroup;\r
-if (gg > -1) {\r
-result.set (gg);\r
-}}}\r
-return result;\r
-}, "java.util.List");\r
-c$.asList = Clazz.defineMethod (c$, "asList", \r
-function (anns) {\r
-return (anns == null ? java.util.Collections.emptyList () : java.util.Arrays.asList (anns));\r
-}, "~A");\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (null, "jalview.analysis.AlignmentAnnotationUtils", ["java.util.ArrayList", "$.Arrays", "$.BitSet", "$.Collections", "$.HashMap"], function () {
+c$ = Clazz.declareType (jalview.analysis, "AlignmentAnnotationUtils");
+c$.getShownHiddenTypes = Clazz.defineMethod (c$, "getShownHiddenTypes", 
+function (shownTypes, hiddenTypes, annotations, forSequences) {
+var visibleGraphGroups = jalview.analysis.AlignmentAnnotationUtils.getVisibleLineGraphGroups (annotations);
+var groupLabels =  new java.util.HashMap ();
+var addedToShown =  new java.util.ArrayList ();
+var addedToHidden =  new java.util.ArrayList ();
+for (var aa, $aa = annotations.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {
+if (aa.annotations == null) {
+continue;
+}if (forSequences != null && (aa.sequenceRef != null && forSequences.contains (aa.sequenceRef))) {
+var calcId = aa.getCalcId ();
+var labelAsList =  new java.util.ArrayList ();
+var displayLabel = aa.label;
+labelAsList.add (displayLabel);
+if (aa.graph == 2 && aa.graphGroup > -1) {
+if (!groupLabels.containsKey (calcId)) {
+groupLabels.put (calcId,  new java.util.HashMap ());
+}var groupLabelsForCalcId = groupLabels.get (calcId);
+if (groupLabelsForCalcId.containsKey (new Integer (aa.graphGroup))) {
+if (!groupLabelsForCalcId.get (new Integer (aa.graphGroup)).contains (displayLabel)) {
+groupLabelsForCalcId.get (new Integer (aa.graphGroup)).add (displayLabel);
+}} else {
+groupLabelsForCalcId.put (new Integer (aa.graphGroup), labelAsList);
+}} else {
+var rememberAs = calcId + "!" + displayLabel;
+if (aa.visible && !addedToShown.contains (rememberAs)) {
+if (!shownTypes.containsKey (calcId)) {
+shownTypes.put (calcId,  new java.util.ArrayList ());
+}shownTypes.get (calcId).add (labelAsList);
+addedToShown.add (rememberAs);
+} else {
+if (!aa.visible && !addedToHidden.contains (rememberAs)) {
+if (!hiddenTypes.containsKey (calcId)) {
+hiddenTypes.put (calcId,  new java.util.ArrayList ());
+}hiddenTypes.get (calcId).add (labelAsList);
+addedToHidden.add (rememberAs);
+}}}}}
+for (var calcId, $calcId = groupLabels.keySet ().iterator (); $calcId.hasNext () && ((calcId = $calcId.next ()) || true);) {
+for (var group, $group = groupLabels.get (calcId).keySet ().iterator (); $group.hasNext () && ((group = $group.next ()) || true);) {
+var groupLabel = groupLabels.get (calcId).get (new Integer (group));
+java.util.Collections.sort (groupLabel);
+if (visibleGraphGroups.get (group)) {
+if (!shownTypes.containsKey (calcId)) {
+shownTypes.put (calcId,  new java.util.ArrayList ());
+}if (!shownTypes.get (calcId).contains (groupLabel)) {
+shownTypes.get (calcId).add (groupLabel);
+}} else {
+if (!hiddenTypes.containsKey (calcId)) {
+hiddenTypes.put (calcId,  new java.util.ArrayList ());
+}if (!hiddenTypes.get (calcId).contains (groupLabel)) {
+hiddenTypes.get (calcId).add (groupLabel);
+}}}
+}
+}, "java.util.Map,java.util.Map,java.util.List,java.util.List");
+c$.getVisibleLineGraphGroups = Clazz.defineMethod (c$, "getVisibleLineGraphGroups", 
+function (annotations) {
+var result =  new java.util.BitSet ();
+for (var ann, $ann = annotations.iterator (); $ann.hasNext () && ((ann = $ann.next ()) || true);) {
+if (ann.graph == 2 && ann.visible) {
+var gg = ann.graphGroup;
+if (gg > -1) {
+result.set (gg);
+}}}
+return result;
+}, "java.util.List");
+c$.asList = Clazz.defineMethod (c$, "asList", 
+function (anns) {
+return (anns == null ? java.util.Collections.emptyList () : java.util.Arrays.asList (anns));
+}, "~A");
+});
index ef50ded..012f2ee 100644 (file)
Binary files a/bin/jalview/analysis/AlignmentSorter.class and b/bin/jalview/analysis/AlignmentSorter.class differ
index 4c0604a..bcf66d4 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (null, "jalview.analysis.AlignmentSorter", ["jalview.datamodel.SequenceI", "jalview.util.Comparison", "$.MessageManager", "$.QuickSort", "java.lang.Error", "$.Float", "$.StringBuffer", "java.util.ArrayList"], function () {\r
-c$ = Clazz.declareType (jalview.analysis, "AlignmentSorter");\r
-c$.sortByPID = Clazz.defineMethod (c$, "sortByPID", \r
-function (align, s, tosort) {\r
-jalview.analysis.AlignmentSorter.sortByPID (align, s, tosort, 0, -1);\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI,~A");\r
-c$.sortByPID = Clazz.defineMethod (c$, "sortByPID", \r
-function (align, s, tosort, start, end) {\r
-var nSeq = align.getHeight ();\r
-var scores =  Clazz.newFloatArray (nSeq, 0);\r
-var seqs =  new Array (nSeq);\r
-for (var i = 0; i < nSeq; i++) {\r
-scores[i] = jalview.util.Comparison.PID (align.getSequenceAt (i).getSequenceAsString (), s.getSequenceAsString ());\r
-seqs[i] = align.getSequenceAt (i);\r
-}\r
-jalview.util.QuickSort.sortFloatObject (scores, seqs);\r
-jalview.analysis.AlignmentSorter.setReverseOrder (align, seqs);\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI,~A,~N,~N");\r
-c$.setReverseOrder = Clazz.defineMethod (c$, "setReverseOrder", \r
-($fz = function (align, seqs) {\r
-var nSeq = seqs.length;\r
-var len = 0;\r
-if ((nSeq % 2) == 0) {\r
-len = Clazz.doubleToInt (nSeq / 2);\r
-} else {\r
-len = Clazz.doubleToInt ((nSeq + 1) / 2);\r
-}var asq;\r
-{\r
-for (var i = 0; i < len; i++) {\r
-asq.set (i, seqs[nSeq - i - 1]);\r
-asq.set (nSeq - i - 1, seqs[i]);\r
-}\r
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,~A");\r
-c$.setOrder = Clazz.defineMethod (c$, "setOrder", \r
-($fz = function (align, tmp) {\r
-jalview.analysis.AlignmentSorter.setOrder (align, jalview.analysis.AlignmentSorter.vectorSubsetToArray (tmp, align.getSequences ()));\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,java.util.List");\r
-c$.setOrder = Clazz.defineMethod (c$, "setOrder", \r
-function (align, seqs) {\r
-var algn;\r
-{\r
-var tmp =  new java.util.ArrayList ();\r
-for (var i = 0; i < seqs.length; i++) {\r
-if (algn.contains (seqs[i])) {\r
-tmp.add (seqs[i]);\r
-}}\r
-algn.clear ();\r
-for (var i = 0; i < tmp.size (); i++) {\r
-algn.add (tmp.get (i));\r
-}\r
-}}, "jalview.datamodel.AlignmentI,~A");\r
-c$.sortByID = Clazz.defineMethod (c$, "sortByID", \r
-function (align) {\r
-var nSeq = align.getHeight ();\r
-var ids =  new Array (nSeq);\r
-var seqs =  new Array (nSeq);\r
-for (var i = 0; i < nSeq; i++) {\r
-ids[i] = align.getSequenceAt (i).getName ();\r
-seqs[i] = align.getSequenceAt (i);\r
-}\r
-jalview.util.QuickSort.sort (ids, seqs);\r
-if (jalview.analysis.AlignmentSorter.sortIdAscending) {\r
-jalview.analysis.AlignmentSorter.setReverseOrder (align, seqs);\r
-} else {\r
-jalview.analysis.AlignmentSorter.setOrder (align, seqs);\r
-}jalview.analysis.AlignmentSorter.sortIdAscending = !jalview.analysis.AlignmentSorter.sortIdAscending;\r
-}, "jalview.datamodel.AlignmentI");\r
-c$.sortByLength = Clazz.defineMethod (c$, "sortByLength", \r
-function (align) {\r
-var nSeq = align.getHeight ();\r
-var length =  Clazz.newFloatArray (nSeq, 0);\r
-var seqs =  new Array (nSeq);\r
-for (var i = 0; i < nSeq; i++) {\r
-seqs[i] = align.getSequenceAt (i);\r
-length[i] = (seqs[i].getEnd () - seqs[i].getStart ());\r
-}\r
-jalview.util.QuickSort.sortFloatObject (length, seqs);\r
-if (jalview.analysis.AlignmentSorter.sortLengthAscending) {\r
-jalview.analysis.AlignmentSorter.setReverseOrder (align, seqs);\r
-} else {\r
-jalview.analysis.AlignmentSorter.setOrder (align, seqs);\r
-}jalview.analysis.AlignmentSorter.sortLengthAscending = !jalview.analysis.AlignmentSorter.sortLengthAscending;\r
-}, "jalview.datamodel.AlignmentI");\r
-c$.sortByGroup = Clazz.defineMethod (c$, "sortByGroup", \r
-function (align) {\r
-var groups =  new java.util.ArrayList ();\r
-if (groups.hashCode () != jalview.analysis.AlignmentSorter.lastGroupHash) {\r
-jalview.analysis.AlignmentSorter.sortGroupAscending = true;\r
-jalview.analysis.AlignmentSorter.lastGroupHash = groups.hashCode ();\r
-} else {\r
-jalview.analysis.AlignmentSorter.sortGroupAscending = !jalview.analysis.AlignmentSorter.sortGroupAscending;\r
-}for (var sg, $sg = align.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-for (var j = 0; j < groups.size (); j++) {\r
-var sg2 = groups.get (j);\r
-if (sg.getSize () > sg2.getSize ()) {\r
-groups.add (j, sg);\r
-break;\r
-}}\r
-if (!groups.contains (sg)) {\r
-groups.add (sg);\r
-}}\r
-var seqs =  new java.util.ArrayList ();\r
-for (var i = 0; i < groups.size (); i++) {\r
-var sg = groups.get (i);\r
-var orderedseqs = sg.getSequencesInOrder (align);\r
-for (var j = 0; j < orderedseqs.length; j++) {\r
-seqs.add (orderedseqs[j]);\r
-}\r
-}\r
-if (jalview.analysis.AlignmentSorter.sortGroupAscending) {\r
-jalview.analysis.AlignmentSorter.setOrder (align, seqs);\r
-} else {\r
-jalview.analysis.AlignmentSorter.setReverseOrder (align, jalview.analysis.AlignmentSorter.vectorSubsetToArray (seqs, align.getSequences ()));\r
-}}, "jalview.datamodel.AlignmentI");\r
-c$.vectorSubsetToArray = Clazz.defineMethod (c$, "vectorSubsetToArray", \r
-($fz = function (tmp, mask) {\r
-var seqs =  new java.util.ArrayList ();\r
-var i;\r
-var idx;\r
-var tmask =  Clazz.newBooleanArray (mask.size (), false);\r
-for (i = 0; i < mask.size (); i++) {\r
-tmask[i] = true;\r
-}\r
-for (i = 0; i < tmp.size (); i++) {\r
-var sq = tmp.get (i);\r
-idx = mask.indexOf (sq);\r
-if (idx > -1 && tmask[idx]) {\r
-tmask[idx] = false;\r
-seqs.add (sq);\r
-}}\r
-for (i = 0; i < tmask.length; i++) {\r
-if (tmask[i]) {\r
-seqs.add (mask.get (i));\r
-}}\r
-return seqs.toArray ( new Array (seqs.size ()));\r
-}, $fz.isPrivate = true, $fz), "java.util.List,java.util.List");\r
-c$.sortBy = Clazz.defineMethod (c$, "sortBy", \r
-function (align, order) {\r
-var tmp = order.getOrder ();\r
-if (jalview.analysis.AlignmentSorter.lastOrder === order) {\r
-jalview.analysis.AlignmentSorter.sortOrderAscending = !jalview.analysis.AlignmentSorter.sortOrderAscending;\r
-} else {\r
-jalview.analysis.AlignmentSorter.sortOrderAscending = true;\r
-}if (jalview.analysis.AlignmentSorter.sortOrderAscending) {\r
-jalview.analysis.AlignmentSorter.setOrder (align, tmp);\r
-} else {\r
-jalview.analysis.AlignmentSorter.setReverseOrder (align, jalview.analysis.AlignmentSorter.vectorSubsetToArray (tmp, align.getSequences ()));\r
-}}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentOrder");\r
-c$.getOrderByTree = Clazz.defineMethod (c$, "getOrderByTree", \r
-($fz = function (align, tree) {\r
-var nSeq = align.getHeight ();\r
-var tmp =  new java.util.ArrayList ();\r
-tmp = jalview.analysis.AlignmentSorter._sortByTree (tree.getTopNode (), tmp, align.getSequences ());\r
-if (tmp.size () != nSeq) {\r
-if (tmp.size () != nSeq) {\r
-jalview.analysis.AlignmentSorter.addStrays (align, tmp);\r
-}if (tmp.size () != nSeq) {\r
-System.err.println ("WARNING: tmp.size()=" + tmp.size () + " != nseq=" + nSeq + " in getOrderByTree - tree contains sequences not in alignment");\r
-}}return tmp;\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,jalview.analysis.NJTree");\r
-c$.sortByTree = Clazz.defineMethod (c$, "sortByTree", \r
-function (align, tree) {\r
-var tmp = jalview.analysis.AlignmentSorter.getOrderByTree (align, tree);\r
-if (jalview.analysis.AlignmentSorter.lastTree !== tree) {\r
-jalview.analysis.AlignmentSorter.sortTreeAscending = true;\r
-jalview.analysis.AlignmentSorter.lastTree = tree;\r
-} else {\r
-jalview.analysis.AlignmentSorter.sortTreeAscending = !jalview.analysis.AlignmentSorter.sortTreeAscending;\r
-}if (jalview.analysis.AlignmentSorter.sortTreeAscending) {\r
-jalview.analysis.AlignmentSorter.setOrder (align, tmp);\r
-} else {\r
-jalview.analysis.AlignmentSorter.setReverseOrder (align, jalview.analysis.AlignmentSorter.vectorSubsetToArray (tmp, align.getSequences ()));\r
-}}, "jalview.datamodel.AlignmentI,jalview.analysis.NJTree");\r
-c$.addStrays = Clazz.defineMethod (c$, "addStrays", \r
-($fz = function (align, tmp) {\r
-var nSeq = align.getHeight ();\r
-for (var i = 0; i < nSeq; i++) {\r
-if (!tmp.contains (align.getSequenceAt (i))) {\r
-tmp.add (align.getSequenceAt (i));\r
-}}\r
-if (nSeq != tmp.size ()) {\r
-System.err.println ("ERROR: Size still not right even after addStrays");\r
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,java.util.List");\r
-c$._sortByTree = Clazz.defineMethod (c$, "_sortByTree", \r
-($fz = function (node, tmp, seqset) {\r
-if (node == null) {\r
-return tmp;\r
-}var left = node.left ();\r
-var right = node.right ();\r
-if ((left == null) && (right == null)) {\r
-if (!node.isPlaceholder () && (node.element () != null)) {\r
-if (Clazz.instanceOf (node.element (), jalview.datamodel.SequenceI)) {\r
-if (!tmp.contains (node.element ())) {\r
-tmp.add (node.element ());\r
-}}}return tmp;\r
-} else {\r
-jalview.analysis.AlignmentSorter._sortByTree (left, tmp, seqset);\r
-jalview.analysis.AlignmentSorter._sortByTree (right, tmp, seqset);\r
-}return tmp;\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceNode,java.util.List,java.util.List");\r
-c$.recoverOrder = Clazz.defineMethod (c$, "recoverOrder", \r
-function (alignment) {\r
-var ids =  Clazz.newFloatArray (alignment.length, 0);\r
-for (var i = 0; i < alignment.length; i++) {\r
-ids[i] = ( new Float (alignment[i].getName ().substring (8))).floatValue ();\r
-}\r
-jalview.util.QuickSort.sortFloatObject (ids, alignment);\r
-}, "~A");\r
-c$.sortByAnnotationScore = Clazz.defineMethod (c$, "sortByAnnotationScore", \r
-function (scoreLabel, alignment) {\r
-var seqs = alignment.getSequencesArray ();\r
-var hasScore =  Clazz.newBooleanArray (seqs.length, false);\r
-var hasScores = 0;\r
-var scores =  Clazz.newDoubleArray (seqs.length, 0);\r
-var min = 0;\r
-var max = 0;\r
-for (var i = 0; i < seqs.length; i++) {\r
-var scoreAnn = seqs[i].getAnnotation (scoreLabel);\r
-if (scoreAnn != null) {\r
-hasScores++;\r
-hasScore[i] = true;\r
-scores[i] = scoreAnn[0].getScore ();\r
-if (hasScores == 1) {\r
-max = min = scores[i];\r
-} else {\r
-if (max < scores[i]) {\r
-max = scores[i];\r
-}if (min > scores[i]) {\r
-min = scores[i];\r
-}}} else {\r
-hasScore[i] = false;\r
-}}\r
-if (hasScores == 0) {\r
-return;\r
-}if (hasScores < seqs.length) {\r
-for (var i = 0; i < seqs.length; i++) {\r
-if (!hasScore[i]) {\r
-scores[i] = (max + i + 1.0);\r
-}}\r
-}jalview.util.QuickSort.sortDouble (scores, seqs);\r
-if (jalview.analysis.AlignmentSorter.lastSortByScore !== scoreLabel) {\r
-jalview.analysis.AlignmentSorter.lastSortByScore = scoreLabel;\r
-jalview.analysis.AlignmentSorter.setOrder (alignment, seqs);\r
-} else {\r
-jalview.analysis.AlignmentSorter.setReverseOrder (alignment, seqs);\r
-}}, "~S,jalview.datamodel.AlignmentI");\r
-c$.sortByFeature = Clazz.defineMethod (c$, "sortByFeature", \r
-function (featureLabel, groupLabel, start, stop, alignment, method) {\r
-jalview.analysis.AlignmentSorter.sortByFeature (featureLabel == null ? null :  Clazz.newArray (-1, [featureLabel]), groupLabel == null ? null :  Clazz.newArray (-1, [groupLabel]), start, stop, alignment, method);\r
-}, "~S,~S,~N,~N,jalview.datamodel.AlignmentI,~S");\r
-c$.containsIgnoreCase = Clazz.defineMethod (c$, "containsIgnoreCase", \r
-($fz = function (lab, labs) {\r
-if (labs == null) {\r
-return true;\r
-}if (lab == null) {\r
-return false;\r
-}for (var q = 0; q < labs.length; q++) {\r
-if (labs[q] != null && lab.equalsIgnoreCase (labs[q])) {\r
-return true;\r
-}}\r
-return false;\r
-}, $fz.isPrivate = true, $fz), "~S,~A");\r
-c$.sortByFeature = Clazz.defineMethod (c$, "sortByFeature", \r
-function (featureLabels, groupLabels, start, stop, alignment, method) {\r
-if (method !== jalview.analysis.AlignmentSorter.FEATURE_SCORE && method !== jalview.analysis.AlignmentSorter.FEATURE_LABEL && method !== jalview.analysis.AlignmentSorter.FEATURE_DENSITY) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_sortbyfeature"));\r
-}var ignoreScore = method !== jalview.analysis.AlignmentSorter.FEATURE_SCORE;\r
-var scoreLabel =  new StringBuffer ();\r
-scoreLabel.append (start + stop + method);\r
-for (var i = 0; featureLabels != null && i < featureLabels.length; i++) {\r
-scoreLabel.append (featureLabels[i] == null ? "null" : featureLabels[i]);\r
-}\r
-for (var i = 0; groupLabels != null && i < groupLabels.length; i++) {\r
-scoreLabel.append (groupLabels[i] == null ? "null" : groupLabels[i]);\r
-}\r
-var seqs = alignment.getSequencesArray ();\r
-var hasScore =  Clazz.newBooleanArray (seqs.length, false);\r
-var hasScores = 0;\r
-var scores =  Clazz.newDoubleArray (seqs.length, 0);\r
-var seqScores =  Clazz.newIntArray (seqs.length, 0);\r
-var feats =  new Array (seqs.length);\r
-var min = 0;\r
-var max = 0;\r
-for (var i = 0; i < seqs.length; i++) {\r
-var sf = seqs[i].getSequenceFeatures ();\r
-if (sf == null) {\r
-sf =  new Array (0);\r
-} else {\r
-var tmp =  new Array (sf.length);\r
-for (var s = 0; s < tmp.length; s++) {\r
-tmp[s] = sf[s];\r
-}\r
-sf = tmp;\r
-}var sstart = (start == -1) ? start : seqs[i].findPosition (start);\r
-var sstop = (stop == -1) ? stop : seqs[i].findPosition (stop);\r
-seqScores[i] = 0;\r
-scores[i] = 0.0;\r
-var n = sf.length;\r
-for (var f = 0; f < sf.length; f++) {\r
-if ((sf[f].end < sstart || sf[f].begin > sstop) || (featureLabels != null && !jalview.analysis.AlignmentSorter.containsIgnoreCase (sf[f].type, featureLabels)) || (groupLabels != null && (sf[f].getFeatureGroup () != null && !jalview.analysis.AlignmentSorter.containsIgnoreCase (sf[f].getFeatureGroup (), groupLabels)))) {\r
-sf[f] = null;\r
-n--;\r
-} else {\r
-if (!ignoreScore && !Float.isNaN (sf[f].getScore ())) {\r
-if (seqScores[i] == 0) {\r
-hasScores++;\r
-}seqScores[i]++;\r
-hasScore[i] = true;\r
-scores[i] += sf[f].getScore ();\r
-}}}\r
-var fs;\r
-feats[i] = fs =  new Array (n);\r
-if (n > 0) {\r
-n = 0;\r
-for (var f = 0; f < sf.length; f++) {\r
-if (sf[f] != null) {\r
-(feats[i])[n++] = sf[f];\r
-}}\r
-if (method === jalview.analysis.AlignmentSorter.FEATURE_LABEL) {\r
-var labs =  new Array (fs.length);\r
-for (var l = 0; l < labs.length; l++) {\r
-labs[l] = (fs[l].getDescription () != null ? fs[l].getDescription () : fs[l].getType ());\r
-}\r
-jalview.util.QuickSort.sort (labs, (feats[i]));\r
-}}if (hasScore[i]) {\r
-scores[i] /= seqScores[i];\r
-if (hasScores == 1) {\r
-max = min = scores[i];\r
-} else {\r
-if (max < scores[i]) {\r
-max = scores[i];\r
-}if (min > scores[i]) {\r
-min = scores[i];\r
-}}}}\r
-if (method === jalview.analysis.AlignmentSorter.FEATURE_SCORE) {\r
-if (hasScores == 0) {\r
-return;\r
-}if (hasScores < seqs.length) {\r
-for (var i = 0; i < seqs.length; i++) {\r
-if (!hasScore[i]) {\r
-scores[i] = (max + 1 + i);\r
-} else {\r
-var nf = (feats[i] == null) ? 0 : (feats[i]).length;\r
-}}\r
-}jalview.util.QuickSort.sortDouble (scores, seqs);\r
-} else if (method === jalview.analysis.AlignmentSorter.FEATURE_DENSITY) {\r
-var fr = 0.9 / (1.0 * seqs.length);\r
-for (var i = 0; i < seqs.length; i++) {\r
-var nf;\r
-scores[i] = (0.05 + fr * i) + (nf = ((feats[i] == null) ? 0.0 : 1.0 * (feats[i]).length));\r
-}\r
-jalview.util.QuickSort.sortDouble (scores, seqs);\r
-} else {\r
-if (method === jalview.analysis.AlignmentSorter.FEATURE_LABEL) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented"));\r
-}}if (jalview.analysis.AlignmentSorter.lastSortByFeatureScore == null || !scoreLabel.toString ().equals (jalview.analysis.AlignmentSorter.lastSortByFeatureScore)) {\r
-jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending = true;\r
-} else {\r
-jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending = !jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending;\r
-}if (jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending) {\r
-jalview.analysis.AlignmentSorter.setOrder (alignment, seqs);\r
-} else {\r
-jalview.analysis.AlignmentSorter.setReverseOrder (alignment, seqs);\r
-}jalview.analysis.AlignmentSorter.lastSortByFeatureScore = scoreLabel.toString ();\r
-}, "~A,~A,~N,~N,jalview.datamodel.AlignmentI,~S");\r
-Clazz.defineStatics (c$,\r
-"sortIdAscending", true,\r
-"lastGroupHash", 0,\r
-"sortGroupAscending", true,\r
-"lastOrder", null,\r
-"sortOrderAscending", true,\r
-"lastTree", null,\r
-"sortTreeAscending", true,\r
-"lastSortByScore", null,\r
-"sortByScoreAscending", true,\r
-"lastSortByFeatureScore", null,\r
-"sortByFeatureScoreAscending", true,\r
-"sortLengthAscending", false,\r
-"FEATURE_SCORE", "average_score",\r
-"FEATURE_LABEL", "text",\r
-"FEATURE_DENSITY", "density");\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (null, "jalview.analysis.AlignmentSorter", ["jalview.datamodel.SequenceI", "jalview.util.Comparison", "$.MessageManager", "$.QuickSort", "java.lang.Error", "$.Float", "$.StringBuffer", "java.util.ArrayList"], function () {
+c$ = Clazz.declareType (jalview.analysis, "AlignmentSorter");
+c$.sortByPID = Clazz.defineMethod (c$, "sortByPID", 
+function (align, s, tosort) {
+jalview.analysis.AlignmentSorter.sortByPID (align, s, tosort, 0, -1);
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI,~A");
+c$.sortByPID = Clazz.defineMethod (c$, "sortByPID", 
+function (align, s, tosort, start, end) {
+var nSeq = align.getHeight ();
+var scores =  Clazz.newFloatArray (nSeq, 0);
+var seqs =  new Array (nSeq);
+for (var i = 0; i < nSeq; i++) {
+scores[i] = jalview.util.Comparison.PID (align.getSequenceAt (i).getSequenceAsString (), s.getSequenceAsString ());
+seqs[i] = align.getSequenceAt (i);
+}
+jalview.util.QuickSort.sortFloatObject (scores, seqs);
+jalview.analysis.AlignmentSorter.setReverseOrder (align, seqs);
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI,~A,~N,~N");
+c$.setReverseOrder = Clazz.defineMethod (c$, "setReverseOrder", 
+($fz = function (align, seqs) {
+var nSeq = seqs.length;
+var len = 0;
+if ((nSeq % 2) == 0) {
+len = Clazz.doubleToInt (nSeq / 2);
+} else {
+len = Clazz.doubleToInt ((nSeq + 1) / 2);
+}var asq;
+{
+for (var i = 0; i < len; i++) {
+asq.set (i, seqs[nSeq - i - 1]);
+asq.set (nSeq - i - 1, seqs[i]);
+}
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,~A");
+c$.setOrder = Clazz.defineMethod (c$, "setOrder", 
+($fz = function (align, tmp) {
+jalview.analysis.AlignmentSorter.setOrder (align, jalview.analysis.AlignmentSorter.vectorSubsetToArray (tmp, align.getSequences ()));
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,java.util.List");
+c$.setOrder = Clazz.defineMethod (c$, "setOrder", 
+function (align, seqs) {
+var algn;
+{
+var tmp =  new java.util.ArrayList ();
+for (var i = 0; i < seqs.length; i++) {
+if (algn.contains (seqs[i])) {
+tmp.add (seqs[i]);
+}}
+algn.clear ();
+for (var i = 0; i < tmp.size (); i++) {
+algn.add (tmp.get (i));
+}
+}}, "jalview.datamodel.AlignmentI,~A");
+c$.sortByID = Clazz.defineMethod (c$, "sortByID", 
+function (align) {
+var nSeq = align.getHeight ();
+var ids =  new Array (nSeq);
+var seqs =  new Array (nSeq);
+for (var i = 0; i < nSeq; i++) {
+ids[i] = align.getSequenceAt (i).getName ();
+seqs[i] = align.getSequenceAt (i);
+}
+jalview.util.QuickSort.sort (ids, seqs);
+if (jalview.analysis.AlignmentSorter.sortIdAscending) {
+jalview.analysis.AlignmentSorter.setReverseOrder (align, seqs);
+} else {
+jalview.analysis.AlignmentSorter.setOrder (align, seqs);
+}jalview.analysis.AlignmentSorter.sortIdAscending = !jalview.analysis.AlignmentSorter.sortIdAscending;
+}, "jalview.datamodel.AlignmentI");
+c$.sortByLength = Clazz.defineMethod (c$, "sortByLength", 
+function (align) {
+var nSeq = align.getHeight ();
+var length =  Clazz.newFloatArray (nSeq, 0);
+var seqs =  new Array (nSeq);
+for (var i = 0; i < nSeq; i++) {
+seqs[i] = align.getSequenceAt (i);
+length[i] = (seqs[i].getEnd () - seqs[i].getStart ());
+}
+jalview.util.QuickSort.sortFloatObject (length, seqs);
+if (jalview.analysis.AlignmentSorter.sortLengthAscending) {
+jalview.analysis.AlignmentSorter.setReverseOrder (align, seqs);
+} else {
+jalview.analysis.AlignmentSorter.setOrder (align, seqs);
+}jalview.analysis.AlignmentSorter.sortLengthAscending = !jalview.analysis.AlignmentSorter.sortLengthAscending;
+}, "jalview.datamodel.AlignmentI");
+c$.sortByGroup = Clazz.defineMethod (c$, "sortByGroup", 
+function (align) {
+var groups =  new java.util.ArrayList ();
+if (groups.hashCode () != jalview.analysis.AlignmentSorter.lastGroupHash) {
+jalview.analysis.AlignmentSorter.sortGroupAscending = true;
+jalview.analysis.AlignmentSorter.lastGroupHash = groups.hashCode ();
+} else {
+jalview.analysis.AlignmentSorter.sortGroupAscending = !jalview.analysis.AlignmentSorter.sortGroupAscending;
+}for (var sg, $sg = align.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+for (var j = 0; j < groups.size (); j++) {
+var sg2 = groups.get (j);
+if (sg.getSize () > sg2.getSize ()) {
+groups.add (j, sg);
+break;
+}}
+if (!groups.contains (sg)) {
+groups.add (sg);
+}}
+var seqs =  new java.util.ArrayList ();
+for (var i = 0; i < groups.size (); i++) {
+var sg = groups.get (i);
+var orderedseqs = sg.getSequencesInOrder (align);
+for (var j = 0; j < orderedseqs.length; j++) {
+seqs.add (orderedseqs[j]);
+}
+}
+if (jalview.analysis.AlignmentSorter.sortGroupAscending) {
+jalview.analysis.AlignmentSorter.setOrder (align, seqs);
+} else {
+jalview.analysis.AlignmentSorter.setReverseOrder (align, jalview.analysis.AlignmentSorter.vectorSubsetToArray (seqs, align.getSequences ()));
+}}, "jalview.datamodel.AlignmentI");
+c$.vectorSubsetToArray = Clazz.defineMethod (c$, "vectorSubsetToArray", 
+($fz = function (tmp, mask) {
+var seqs =  new java.util.ArrayList ();
+var i;
+var idx;
+var tmask =  Clazz.newBooleanArray (mask.size (), false);
+for (i = 0; i < mask.size (); i++) {
+tmask[i] = true;
+}
+for (i = 0; i < tmp.size (); i++) {
+var sq = tmp.get (i);
+idx = mask.indexOf (sq);
+if (idx > -1 && tmask[idx]) {
+tmask[idx] = false;
+seqs.add (sq);
+}}
+for (i = 0; i < tmask.length; i++) {
+if (tmask[i]) {
+seqs.add (mask.get (i));
+}}
+return seqs.toArray ( new Array (seqs.size ()));
+}, $fz.isPrivate = true, $fz), "java.util.List,java.util.List");
+c$.sortBy = Clazz.defineMethod (c$, "sortBy", 
+function (align, order) {
+var tmp = order.getOrder ();
+if (jalview.analysis.AlignmentSorter.lastOrder === order) {
+jalview.analysis.AlignmentSorter.sortOrderAscending = !jalview.analysis.AlignmentSorter.sortOrderAscending;
+} else {
+jalview.analysis.AlignmentSorter.sortOrderAscending = true;
+}if (jalview.analysis.AlignmentSorter.sortOrderAscending) {
+jalview.analysis.AlignmentSorter.setOrder (align, tmp);
+} else {
+jalview.analysis.AlignmentSorter.setReverseOrder (align, jalview.analysis.AlignmentSorter.vectorSubsetToArray (tmp, align.getSequences ()));
+}}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentOrder");
+c$.getOrderByTree = Clazz.defineMethod (c$, "getOrderByTree", 
+($fz = function (align, tree) {
+var nSeq = align.getHeight ();
+var tmp =  new java.util.ArrayList ();
+tmp = jalview.analysis.AlignmentSorter._sortByTree (tree.getTopNode (), tmp, align.getSequences ());
+if (tmp.size () != nSeq) {
+if (tmp.size () != nSeq) {
+jalview.analysis.AlignmentSorter.addStrays (align, tmp);
+}if (tmp.size () != nSeq) {
+System.err.println ("WARNING: tmp.size()=" + tmp.size () + " != nseq=" + nSeq + " in getOrderByTree - tree contains sequences not in alignment");
+}}return tmp;
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,jalview.analysis.NJTree");
+c$.sortByTree = Clazz.defineMethod (c$, "sortByTree", 
+function (align, tree) {
+var tmp = jalview.analysis.AlignmentSorter.getOrderByTree (align, tree);
+if (jalview.analysis.AlignmentSorter.lastTree !== tree) {
+jalview.analysis.AlignmentSorter.sortTreeAscending = true;
+jalview.analysis.AlignmentSorter.lastTree = tree;
+} else {
+jalview.analysis.AlignmentSorter.sortTreeAscending = !jalview.analysis.AlignmentSorter.sortTreeAscending;
+}if (jalview.analysis.AlignmentSorter.sortTreeAscending) {
+jalview.analysis.AlignmentSorter.setOrder (align, tmp);
+} else {
+jalview.analysis.AlignmentSorter.setReverseOrder (align, jalview.analysis.AlignmentSorter.vectorSubsetToArray (tmp, align.getSequences ()));
+}}, "jalview.datamodel.AlignmentI,jalview.analysis.NJTree");
+c$.addStrays = Clazz.defineMethod (c$, "addStrays", 
+($fz = function (align, tmp) {
+var nSeq = align.getHeight ();
+for (var i = 0; i < nSeq; i++) {
+if (!tmp.contains (align.getSequenceAt (i))) {
+tmp.add (align.getSequenceAt (i));
+}}
+if (nSeq != tmp.size ()) {
+System.err.println ("ERROR: Size still not right even after addStrays");
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,java.util.List");
+c$._sortByTree = Clazz.defineMethod (c$, "_sortByTree", 
+($fz = function (node, tmp, seqset) {
+if (node == null) {
+return tmp;
+}var left = node.left ();
+var right = node.right ();
+if ((left == null) && (right == null)) {
+if (!node.isPlaceholder () && (node.element () != null)) {
+if (Clazz.instanceOf (node.element (), jalview.datamodel.SequenceI)) {
+if (!tmp.contains (node.element ())) {
+tmp.add (node.element ());
+}}}return tmp;
+} else {
+jalview.analysis.AlignmentSorter._sortByTree (left, tmp, seqset);
+jalview.analysis.AlignmentSorter._sortByTree (right, tmp, seqset);
+}return tmp;
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceNode,java.util.List,java.util.List");
+c$.recoverOrder = Clazz.defineMethod (c$, "recoverOrder", 
+function (alignment) {
+var ids =  Clazz.newFloatArray (alignment.length, 0);
+for (var i = 0; i < alignment.length; i++) {
+ids[i] = ( new Float (alignment[i].getName ().substring (8))).floatValue ();
+}
+jalview.util.QuickSort.sortFloatObject (ids, alignment);
+}, "~A");
+c$.sortByAnnotationScore = Clazz.defineMethod (c$, "sortByAnnotationScore", 
+function (scoreLabel, alignment) {
+var seqs = alignment.getSequencesArray ();
+var hasScore =  Clazz.newBooleanArray (seqs.length, false);
+var hasScores = 0;
+var scores =  Clazz.newDoubleArray (seqs.length, 0);
+var min = 0;
+var max = 0;
+for (var i = 0; i < seqs.length; i++) {
+var scoreAnn = seqs[i].getAnnotation (scoreLabel);
+if (scoreAnn != null) {
+hasScores++;
+hasScore[i] = true;
+scores[i] = scoreAnn[0].getScore ();
+if (hasScores == 1) {
+max = min = scores[i];
+} else {
+if (max < scores[i]) {
+max = scores[i];
+}if (min > scores[i]) {
+min = scores[i];
+}}} else {
+hasScore[i] = false;
+}}
+if (hasScores == 0) {
+return;
+}if (hasScores < seqs.length) {
+for (var i = 0; i < seqs.length; i++) {
+if (!hasScore[i]) {
+scores[i] = (max + i + 1.0);
+}}
+}jalview.util.QuickSort.sortDouble (scores, seqs);
+if (jalview.analysis.AlignmentSorter.lastSortByScore !== scoreLabel) {
+jalview.analysis.AlignmentSorter.lastSortByScore = scoreLabel;
+jalview.analysis.AlignmentSorter.setOrder (alignment, seqs);
+} else {
+jalview.analysis.AlignmentSorter.setReverseOrder (alignment, seqs);
+}}, "~S,jalview.datamodel.AlignmentI");
+c$.sortByFeature = Clazz.defineMethod (c$, "sortByFeature", 
+function (featureLabel, groupLabel, start, stop, alignment, method) {
+jalview.analysis.AlignmentSorter.sortByFeature (featureLabel == null ? null :  Clazz.newArray (-1, [featureLabel]), groupLabel == null ? null :  Clazz.newArray (-1, [groupLabel]), start, stop, alignment, method);
+}, "~S,~S,~N,~N,jalview.datamodel.AlignmentI,~S");
+c$.containsIgnoreCase = Clazz.defineMethod (c$, "containsIgnoreCase", 
+($fz = function (lab, labs) {
+if (labs == null) {
+return true;
+}if (lab == null) {
+return false;
+}for (var q = 0; q < labs.length; q++) {
+if (labs[q] != null && lab.equalsIgnoreCase (labs[q])) {
+return true;
+}}
+return false;
+}, $fz.isPrivate = true, $fz), "~S,~A");
+c$.sortByFeature = Clazz.defineMethod (c$, "sortByFeature", 
+function (featureLabels, groupLabels, start, stop, alignment, method) {
+if (method !== jalview.analysis.AlignmentSorter.FEATURE_SCORE && method !== jalview.analysis.AlignmentSorter.FEATURE_LABEL && method !== jalview.analysis.AlignmentSorter.FEATURE_DENSITY) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_sortbyfeature"));
+}var ignoreScore = method !== jalview.analysis.AlignmentSorter.FEATURE_SCORE;
+var scoreLabel =  new StringBuffer ();
+scoreLabel.append (start + stop + method);
+for (var i = 0; featureLabels != null && i < featureLabels.length; i++) {
+scoreLabel.append (featureLabels[i] == null ? "null" : featureLabels[i]);
+}
+for (var i = 0; groupLabels != null && i < groupLabels.length; i++) {
+scoreLabel.append (groupLabels[i] == null ? "null" : groupLabels[i]);
+}
+var seqs = alignment.getSequencesArray ();
+var hasScore =  Clazz.newBooleanArray (seqs.length, false);
+var hasScores = 0;
+var scores =  Clazz.newDoubleArray (seqs.length, 0);
+var seqScores =  Clazz.newIntArray (seqs.length, 0);
+var feats =  new Array (seqs.length);
+var min = 0;
+var max = 0;
+for (var i = 0; i < seqs.length; i++) {
+var sf = seqs[i].getSequenceFeatures ();
+if (sf == null) {
+sf =  new Array (0);
+} else {
+var tmp =  new Array (sf.length);
+for (var s = 0; s < tmp.length; s++) {
+tmp[s] = sf[s];
+}
+sf = tmp;
+}var sstart = (start == -1) ? start : seqs[i].findPosition (start);
+var sstop = (stop == -1) ? stop : seqs[i].findPosition (stop);
+seqScores[i] = 0;
+scores[i] = 0.0;
+var n = sf.length;
+for (var f = 0; f < sf.length; f++) {
+if ((sf[f].end < sstart || sf[f].begin > sstop) || (featureLabels != null && !jalview.analysis.AlignmentSorter.containsIgnoreCase (sf[f].type, featureLabels)) || (groupLabels != null && (sf[f].getFeatureGroup () != null && !jalview.analysis.AlignmentSorter.containsIgnoreCase (sf[f].getFeatureGroup (), groupLabels)))) {
+sf[f] = null;
+n--;
+} else {
+if (!ignoreScore && !Float.isNaN (sf[f].getScore ())) {
+if (seqScores[i] == 0) {
+hasScores++;
+}seqScores[i]++;
+hasScore[i] = true;
+scores[i] += sf[f].getScore ();
+}}}
+var fs;
+feats[i] = fs =  new Array (n);
+if (n > 0) {
+n = 0;
+for (var f = 0; f < sf.length; f++) {
+if (sf[f] != null) {
+(feats[i])[n++] = sf[f];
+}}
+if (method === jalview.analysis.AlignmentSorter.FEATURE_LABEL) {
+var labs =  new Array (fs.length);
+for (var l = 0; l < labs.length; l++) {
+labs[l] = (fs[l].getDescription () != null ? fs[l].getDescription () : fs[l].getType ());
+}
+jalview.util.QuickSort.sort (labs, (feats[i]));
+}}if (hasScore[i]) {
+scores[i] /= seqScores[i];
+if (hasScores == 1) {
+max = min = scores[i];
+} else {
+if (max < scores[i]) {
+max = scores[i];
+}if (min > scores[i]) {
+min = scores[i];
+}}}}
+if (method === jalview.analysis.AlignmentSorter.FEATURE_SCORE) {
+if (hasScores == 0) {
+return;
+}if (hasScores < seqs.length) {
+for (var i = 0; i < seqs.length; i++) {
+if (!hasScore[i]) {
+scores[i] = (max + 1 + i);
+} else {
+var nf = (feats[i] == null) ? 0 : (feats[i]).length;
+}}
+}jalview.util.QuickSort.sortDouble (scores, seqs);
+} else if (method === jalview.analysis.AlignmentSorter.FEATURE_DENSITY) {
+var fr = 0.9 / (1.0 * seqs.length);
+for (var i = 0; i < seqs.length; i++) {
+var nf;
+scores[i] = (0.05 + fr * i) + (nf = ((feats[i] == null) ? 0.0 : 1.0 * (feats[i]).length));
+}
+jalview.util.QuickSort.sortDouble (scores, seqs);
+} else {
+if (method === jalview.analysis.AlignmentSorter.FEATURE_LABEL) {
+throw  new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented"));
+}}if (jalview.analysis.AlignmentSorter.lastSortByFeatureScore == null || !scoreLabel.toString ().equals (jalview.analysis.AlignmentSorter.lastSortByFeatureScore)) {
+jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending = true;
+} else {
+jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending = !jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending;
+}if (jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending) {
+jalview.analysis.AlignmentSorter.setOrder (alignment, seqs);
+} else {
+jalview.analysis.AlignmentSorter.setReverseOrder (alignment, seqs);
+}jalview.analysis.AlignmentSorter.lastSortByFeatureScore = scoreLabel.toString ();
+}, "~A,~A,~N,~N,jalview.datamodel.AlignmentI,~S");
+Clazz.defineStatics (c$,
+"sortIdAscending", true,
+"lastGroupHash", 0,
+"sortGroupAscending", true,
+"lastOrder", null,
+"sortOrderAscending", true,
+"lastTree", null,
+"sortTreeAscending", true,
+"lastSortByScore", null,
+"sortByScoreAscending", true,
+"lastSortByFeatureScore", null,
+"sortByFeatureScoreAscending", true,
+"sortLengthAscending", false,
+"FEATURE_SCORE", "average_score",
+"FEATURE_LABEL", "text",
+"FEATURE_DENSITY", "density");
+});
index c52a1d7..85e58d3 100644 (file)
Binary files a/bin/jalview/analysis/AlignmentUtils.class and b/bin/jalview/analysis/AlignmentUtils.class differ
index 6af5e7a..2990b03 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (null, "jalview.analysis.AlignmentUtils", ["jalview.analysis.CodonComparator", "jalview.datamodel.AlignedCodonFrame", "$.Alignment", "$.AlignmentAnnotation", "$.DBRefEntry", "$.DBRefSource", "$.FeatureProperties", "$.SearchResults", "$.Sequence", "jalview.schemes.ResidueProperties", "jalview.util.DBRefUtils", "$.MapList", "$.MappingUtils", "java.lang.StringBuilder", "java.util.ArrayList", "$.Arrays", "$.HashMap", "$.HashSet", "$.LinkedHashMap", "$.LinkedHashSet", "$.TreeMap"], function () {\r
-c$ = Clazz.declareType (jalview.analysis, "AlignmentUtils");\r
-c$.expandContext = Clazz.defineMethod (c$, "expandContext", \r
-function (core, flankSize) {\r
-var sq =  new java.util.ArrayList ();\r
-var maxoffset = 0;\r
-for (var s, $s = core.getSequences ().iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {\r
-var newSeq = s.deriveSequence ();\r
-var newSeqStart = newSeq.getStart () - 1;\r
-if (newSeqStart > maxoffset && newSeq.getDatasetSequence ().getStart () < s.getStart ()) {\r
-maxoffset = newSeqStart;\r
-}sq.add (newSeq);\r
-}\r
-if (flankSize > -1) {\r
-maxoffset = Math.min (maxoffset, flankSize);\r
-}for (var s, $s = sq.iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {\r
-var ds = s;\r
-while (ds.getDatasetSequence () != null) {\r
-ds = ds.getDatasetSequence ();\r
-}\r
-var s_end = s.findPosition (s.getStart () + s.getLength ());\r
-var ustream_ds = s.getStart () - ds.getStart ();\r
-var dstream_ds = ds.getEnd () - s_end;\r
-var offset = maxoffset - ustream_ds;\r
-if (flankSize >= 0) {\r
-if (flankSize < ustream_ds) {\r
-offset = maxoffset - flankSize;\r
-ustream_ds = flankSize;\r
-}if (flankSize <= dstream_ds) {\r
-dstream_ds = flankSize - 1;\r
-}}var upstream =  String.instantialize (ds.getSequence (s.getStart () - 1 - ustream_ds, s.getStart () - 1)).toLowerCase ().toCharArray ();\r
-var downstream =  String.instantialize (ds.getSequence (s_end - 1, s_end + dstream_ds)).toLowerCase ().toCharArray ();\r
-var coreseq = s.getSequence ();\r
-var nseq =  Clazz.newCharArray (offset + upstream.length + downstream.length + coreseq.length, '\0');\r
-var c = core.getGapCharacter ();\r
-var p = 0;\r
-for (; p < offset; p++) {\r
-nseq[p] = c;\r
-}\r
-System.arraycopy (upstream, 0, nseq, p, upstream.length);\r
-System.arraycopy (coreseq, 0, nseq, p + upstream.length, coreseq.length);\r
-System.arraycopy (downstream, 0, nseq, p + coreseq.length + upstream.length, downstream.length);\r
-s.setSequence ( String.instantialize (nseq));\r
-s.setStart (s.getStart () - ustream_ds);\r
-s.setEnd (s_end + downstream.length);\r
-}\r
-var newAl =  new jalview.datamodel.Alignment (sq.toArray ( new Array (0)));\r
-for (var s, $s = sq.iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {\r
-if (s.getAnnotation () != null) {\r
-for (var aa, $aa = 0, $$aa = s.getAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {\r
-aa.adjustForAlignment ();\r
-newAl.addAnnotation (aa);\r
-}\r
-}}\r
-newAl.setDataset (core.getDataset ());\r
-return newAl;\r
-}, "jalview.datamodel.AlignmentI,~N");\r
-c$.getSequenceIndex = Clazz.defineMethod (c$, "getSequenceIndex", \r
-function (al, seq) {\r
-var result = -1;\r
-var pos = 0;\r
-for (var alSeq, $alSeq = al.getSequences ().iterator (); $alSeq.hasNext () && ((alSeq = $alSeq.next ()) || true);) {\r
-if (alSeq === seq) {\r
-result = pos;\r
-break;\r
-}pos++;\r
-}\r
-return result;\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI");\r
-c$.getSequencesByName = Clazz.defineMethod (c$, "getSequencesByName", \r
-function (al) {\r
-var theMap =  new java.util.LinkedHashMap ();\r
-for (var seq, $seq = al.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-var name = seq.getName ();\r
-if (name != null) {\r
-var seqs = theMap.get (name);\r
-if (seqs == null) {\r
-seqs =  new java.util.ArrayList ();\r
-theMap.put (name, seqs);\r
-}seqs.add (seq);\r
-}}\r
-return theMap;\r
-}, "jalview.datamodel.AlignmentI");\r
-c$.mapProteinToCdna = Clazz.defineMethod (c$, "mapProteinToCdna", \r
-function (proteinAlignment, cdnaAlignment) {\r
-if (proteinAlignment == null || cdnaAlignment == null) {\r
-return false;\r
-}var mappedDna =  new java.util.HashSet ();\r
-var mappedProtein =  new java.util.HashSet ();\r
-var mappingPerformed = jalview.analysis.AlignmentUtils.mapProteinToCdna (proteinAlignment, cdnaAlignment, mappedDna, mappedProtein, true);\r
-mappingPerformed = new Boolean (mappingPerformed | jalview.analysis.AlignmentUtils.mapProteinToCdna (proteinAlignment, cdnaAlignment, mappedDna, mappedProtein, false)).valueOf ();\r
-return mappingPerformed;\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");\r
-c$.mapProteinToCdna = Clazz.defineMethod (c$, "mapProteinToCdna", \r
-function (proteinAlignment, cdnaAlignment, mappedDna, mappedProtein, xrefsOnly) {\r
-var mappingPerformed = false;\r
-var thisSeqs = proteinAlignment.getSequences ();\r
-for (var aaSeq, $aaSeq = thisSeqs.iterator (); $aaSeq.hasNext () && ((aaSeq = $aaSeq.next ()) || true);) {\r
-var proteinMapped = false;\r
-var acf =  new jalview.datamodel.AlignedCodonFrame ();\r
-for (var cdnaSeq, $cdnaSeq = cdnaAlignment.getSequences ().iterator (); $cdnaSeq.hasNext () && ((cdnaSeq = $cdnaSeq.next ()) || true);) {\r
-if (xrefsOnly && !jalview.analysis.AlignmentUtils.haveCrossRef (aaSeq, cdnaSeq)) {\r
-continue;\r
-}if (!xrefsOnly && (mappedProtein.contains (aaSeq) || mappedDna.contains (cdnaSeq))) {\r
-continue;\r
-}if (!jalview.analysis.AlignmentUtils.mappingExists (proteinAlignment.getCodonFrames (), aaSeq.getDatasetSequence (), cdnaSeq.getDatasetSequence ())) {\r
-var map = jalview.analysis.AlignmentUtils.mapProteinToCdna (aaSeq, cdnaSeq);\r
-if (map != null) {\r
-acf.addMap (cdnaSeq, aaSeq, map);\r
-mappingPerformed = true;\r
-proteinMapped = true;\r
-mappedDna.add (cdnaSeq);\r
-mappedProtein.add (aaSeq);\r
-}}}\r
-if (proteinMapped) {\r
-proteinAlignment.addCodonFrame (acf);\r
-}}\r
-return mappingPerformed;\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI,java.util.Set,java.util.Set,~B");\r
-c$.mappingExists = Clazz.defineMethod (c$, "mappingExists", \r
-function (set, aaSeq, cdnaSeq) {\r
-if (set != null) {\r
-for (var acf, $acf = set.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {\r
-if (cdnaSeq === acf.getDnaForAaSeq (aaSeq)) {\r
-return true;\r
-}}\r
-}return false;\r
-}, "java.util.Set,jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");\r
-c$.mapProteinToCdna = Clazz.defineMethod (c$, "mapProteinToCdna", \r
-function (proteinSeq, cdnaSeq) {\r
-var proteinDataset = proteinSeq.getDatasetSequence ();\r
-var aaSeqChars = proteinDataset != null ? proteinDataset.getSequence () : proteinSeq.getSequence ();\r
-var cdnaDataset = cdnaSeq.getDatasetSequence ();\r
-var cdnaSeqChars = cdnaDataset != null ? cdnaDataset.getSequence () : cdnaSeq.getSequence ();\r
-if (aaSeqChars == null || cdnaSeqChars == null) {\r
-return null;\r
-}var mappedLength = 3 * aaSeqChars.length;\r
-var cdnaLength = cdnaSeqChars.length;\r
-var cdnaStart = 1;\r
-var cdnaEnd = cdnaLength;\r
-var proteinStart = 1;\r
-var proteinEnd = aaSeqChars.length;\r
-if (cdnaLength != mappedLength && cdnaLength > 2) {\r
-var lastCodon = String.valueOf (cdnaSeqChars, cdnaLength - 3, 3).toUpperCase ();\r
-for (var stop, $stop = jalview.schemes.ResidueProperties.STOP.iterator (); $stop.hasNext () && ((stop = $stop.next ()) || true);) {\r
-if (lastCodon.equals (stop)) {\r
-cdnaEnd -= 3;\r
-cdnaLength -= 3;\r
-break;\r
-}}\r
-}if (cdnaLength != mappedLength && cdnaLength > 2 && String.valueOf (cdnaSeqChars, 0, 3).toUpperCase ().equals (jalview.schemes.ResidueProperties.START)) {\r
-cdnaStart += 3;\r
-cdnaLength -= 3;\r
-}if (cdnaLength != mappedLength) {\r
-return null;\r
-}if (!jalview.analysis.AlignmentUtils.translatesAs (cdnaSeqChars, cdnaStart - 1, aaSeqChars)) {\r
-return null;\r
-}var map =  new jalview.util.MapList ( Clazz.newIntArray (-1, [cdnaStart, cdnaEnd]),  Clazz.newIntArray (-1, [1, proteinEnd]), 3, 1);\r
-return map;\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");\r
-c$.translatesAs = Clazz.defineMethod (c$, "translatesAs", \r
-function (cdnaSeqChars, cdnaStart, aaSeqChars) {\r
-var aaResidue = 0;\r
-for (var i = cdnaStart; i < cdnaSeqChars.length - 2 && aaResidue < aaSeqChars.length; i += 3, aaResidue++) {\r
-var codon = String.valueOf (cdnaSeqChars, i, 3);\r
-var translated = jalview.schemes.ResidueProperties.codonTranslate (codon);\r
-var aaRes = aaSeqChars[aaResidue];\r
-if ((translated == null || "STOP".equals (translated)) && aaRes == 'X') {\r
-continue;\r
-}if (translated == null || !(aaRes == translated.charAt (0))) {\r
-return false;\r
-}}\r
-return (aaResidue == aaSeqChars.length);\r
-}, "~A,~N,~A");\r
-c$.alignSequenceAs = Clazz.defineMethod (c$, "alignSequenceAs", \r
-function (seq, al, gap, preserveMappedGaps, preserveUnmappedGaps) {\r
-var mappings = al.getCodonFrame (seq);\r
-if (mappings == null || mappings.isEmpty ()) {\r
-return false;\r
-}var alignFrom = null;\r
-var mapping = null;\r
-for (var mp, $mp = mappings.iterator (); $mp.hasNext () && ((mp = $mp.next ()) || true);) {\r
-alignFrom = mp.findAlignedSequence (seq.getDatasetSequence (), al);\r
-if (alignFrom != null) {\r
-mapping = mp;\r
-break;\r
-}}\r
-if (alignFrom == null) {\r
-return false;\r
-}jalview.analysis.AlignmentUtils.alignSequenceAs (seq, alignFrom, mapping, gap, al.getGapCharacter (), preserveMappedGaps, preserveUnmappedGaps);\r
-return true;\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,~S,~B,~B");\r
-c$.alignSequenceAs = Clazz.defineMethod (c$, "alignSequenceAs", \r
-function (alignTo, alignFrom, mapping, myGap, sourceGap, preserveMappedGaps, preserveUnmappedGaps) {\r
-var thisSeq = alignTo.getSequence ();\r
-var thatAligned = alignFrom.getSequence ();\r
-var thisAligned =  new StringBuilder (2 * thisSeq.length);\r
-var thisSeqPos = 0;\r
-var sourceDsPos = 0;\r
-var basesWritten = 0;\r
-var myGapChar = myGap.charAt (0);\r
-var ratio = myGap.length;\r
-var sourceGapMappedLength = 0;\r
-var inExon = false;\r
-for (var sourceChar, $sourceChar = 0, $$sourceChar = thatAligned; $sourceChar < $$sourceChar.length && ((sourceChar = $$sourceChar[$sourceChar]) || true); $sourceChar++) {\r
-if (sourceChar == sourceGap) {\r
-sourceGapMappedLength += ratio;\r
-continue;\r
-}sourceDsPos++;\r
-var mappedPos = mapping.getMappedRegion (alignTo, alignFrom, sourceDsPos);\r
-if (mappedPos == null) {\r
-System.err.println ("Can't align: no codon mapping to residue " + sourceDsPos + "(" + sourceChar + ")");\r
-return;\r
-}var mappedCodonStart = mappedPos[0];\r
-var mappedCodonEnd = mappedPos[mappedPos.length - 1];\r
-var trailingCopiedGap =  new StringBuilder ();\r
-var intronLength = 0;\r
-while (basesWritten < mappedCodonEnd && thisSeqPos < thisSeq.length) {\r
-var c = thisSeq[thisSeqPos++];\r
-if (c != myGapChar) {\r
-basesWritten++;\r
-if (basesWritten < mappedCodonStart) {\r
-if (preserveUnmappedGaps && trailingCopiedGap.length () > 0) {\r
-thisAligned.append (trailingCopiedGap.toString ());\r
-intronLength += trailingCopiedGap.length ();\r
-trailingCopiedGap =  new StringBuilder ();\r
-}intronLength++;\r
-inExon = false;\r
-} else {\r
-var startOfCodon = basesWritten == mappedCodonStart;\r
-var gapsToAdd = jalview.analysis.AlignmentUtils.calculateGapsToInsert (preserveMappedGaps, preserveUnmappedGaps, sourceGapMappedLength, inExon, trailingCopiedGap.length (), intronLength, startOfCodon);\r
-for (var i = 0; i < gapsToAdd; i++) {\r
-thisAligned.append (myGapChar);\r
-}\r
-sourceGapMappedLength = 0;\r
-inExon = true;\r
-}thisAligned.append (c);\r
-trailingCopiedGap =  new StringBuilder ();\r
-} else {\r
-if (inExon && preserveMappedGaps) {\r
-trailingCopiedGap.append (myGapChar);\r
-} else if (!inExon && preserveUnmappedGaps) {\r
-trailingCopiedGap.append (myGapChar);\r
-}}}\r
-}\r
-while (thisSeqPos < thisSeq.length) {\r
-var c = thisSeq[thisSeqPos++];\r
-if (c != myGapChar || preserveUnmappedGaps) {\r
-thisAligned.append (c);\r
-}}\r
-alignTo.setSequence ( String.instantialize (thisAligned));\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,jalview.datamodel.AlignedCodonFrame,~S,~S,~B,~B");\r
-c$.calculateGapsToInsert = Clazz.defineMethod (c$, "calculateGapsToInsert", \r
-function (preserveMappedGaps, preserveUnmappedGaps, sourceGapMappedLength, inExon, trailingGapLength, intronLength, startOfCodon) {\r
-var gapsToAdd = 0;\r
-if (startOfCodon) {\r
-if (inExon && !preserveMappedGaps) {\r
-trailingGapLength = 0;\r
-}if (!inExon && !(preserveMappedGaps && preserveUnmappedGaps)) {\r
-trailingGapLength = 0;\r
-}if (inExon) {\r
-gapsToAdd = Math.max (sourceGapMappedLength, trailingGapLength);\r
-} else {\r
-if (intronLength + trailingGapLength <= sourceGapMappedLength) {\r
-gapsToAdd = sourceGapMappedLength - intronLength;\r
-} else {\r
-gapsToAdd = Math.min (intronLength + trailingGapLength - sourceGapMappedLength, trailingGapLength);\r
-}}} else {\r
-if (!preserveMappedGaps) {\r
-trailingGapLength = 0;\r
-}gapsToAdd = Math.max (sourceGapMappedLength, trailingGapLength);\r
-}return gapsToAdd;\r
-}, "~B,~B,~N,~B,~N,~N,~B");\r
-c$.getAlignedTranslation = Clazz.defineMethod (c$, "getAlignedTranslation", \r
-function (sequences, gapCharacter, mappings) {\r
-var alignedSeqs =  new java.util.ArrayList ();\r
-for (var seq, $seq = sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-var mapped = jalview.analysis.AlignmentUtils.getAlignedTranslation (seq, gapCharacter, mappings);\r
-alignedSeqs.addAll (mapped);\r
-}\r
-return alignedSeqs;\r
-}, "java.util.List,~S,java.util.Set");\r
-c$.getAlignedTranslation = Clazz.defineMethod (c$, "getAlignedTranslation", \r
-function (seq, gapCharacter, mappings) {\r
-var result =  new java.util.ArrayList ();\r
-for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {\r
-if (mapping.involvesSequence (seq)) {\r
-var mapped = jalview.analysis.AlignmentUtils.getAlignedTranslation (seq, gapCharacter, mapping);\r
-if (mapped != null) {\r
-result.add (mapped);\r
-}}}\r
-return result;\r
-}, "jalview.datamodel.SequenceI,~S,java.util.Set");\r
-c$.getAlignedTranslation = Clazz.defineMethod (c$, "getAlignedTranslation", \r
-function (seq, gapCharacter, mapping) {\r
-var gap = String.valueOf (gapCharacter);\r
-var toDna = false;\r
-var fromRatio = 1;\r
-var mapTo = mapping.getDnaForAaSeq (seq);\r
-if (mapTo != null) {\r
-toDna = true;\r
-gap = String.valueOf ( Clazz.newCharArray (-1, [gapCharacter, gapCharacter, gapCharacter]));\r
-} else {\r
-mapTo = mapping.getAaForDnaSeq (seq);\r
-fromRatio = 3;\r
-}var newseq =  new StringBuilder (seq.getLength () * (toDna ? 3 : 1));\r
-var residueNo = 0;\r
-var phrase =  Clazz.newIntArray (fromRatio, 0);\r
-var phraseOffset = 0;\r
-var gapWidth = 0;\r
-var first = true;\r
-var alignedSeq =  new jalview.datamodel.Sequence ("", "");\r
-for (var c, $c = 0, $$c = seq.getSequence (); $c < $$c.length && ((c = $$c[$c]) || true); $c++) {\r
-if (c == gapCharacter) {\r
-gapWidth++;\r
-if (gapWidth >= fromRatio) {\r
-newseq.append (gap);\r
-gapWidth = 0;\r
-}} else {\r
-phrase[phraseOffset++] = residueNo + 1;\r
-if (phraseOffset == fromRatio) {\r
-var sr =  new jalview.datamodel.SearchResults ();\r
-for (var pos, $pos = 0, $$pos = phrase; $pos < $$pos.length && ((pos = $$pos[$pos]) || true); $pos++) {\r
-mapping.markMappedRegion (seq, pos, sr);\r
-}\r
-newseq.append (sr.toString ());\r
-if (first) {\r
-first = false;\r
-var mappedTo = sr.getResultSequence (0);\r
-alignedSeq.setName (mappedTo.getName ());\r
-alignedSeq.setDescription (mappedTo.getDescription ());\r
-alignedSeq.setDatasetSequence (mappedTo);\r
-}phraseOffset = 0;\r
-}residueNo++;\r
-}}\r
-alignedSeq.setSequence (newseq.toString ());\r
-return alignedSeq;\r
-}, "jalview.datamodel.SequenceI,~S,jalview.datamodel.AlignedCodonFrame");\r
-c$.alignProteinAsDna = Clazz.defineMethod (c$, "alignProteinAsDna", \r
-function (protein, dna) {\r
-var mappings = protein.getCodonFrames ();\r
-var alignedCodons =  new java.util.TreeMap ( new jalview.analysis.CodonComparator ());\r
-for (var dnaSeq, $dnaSeq = dna.getSequences ().iterator (); $dnaSeq.hasNext () && ((dnaSeq = $dnaSeq.next ()) || true);) {\r
-for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {\r
-var seqMap = mapping.getMappingForSequence (dnaSeq);\r
-var prot = mapping.findAlignedSequence (dnaSeq.getDatasetSequence (), protein);\r
-if (prot != null) {\r
-jalview.analysis.AlignmentUtils.addCodonPositions (dnaSeq, prot, protein.getGapCharacter (), seqMap, alignedCodons);\r
-}}\r
-}\r
-return jalview.analysis.AlignmentUtils.alignProteinAs (protein, alignedCodons);\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");\r
-c$.alignProteinAs = Clazz.defineMethod (c$, "alignProteinAs", \r
-function (protein, alignedCodons) {\r
-var alignedWidth = alignedCodons.size ();\r
-var gaps =  Clazz.newCharArray (alignedWidth, '\0');\r
-java.util.Arrays.fill (gaps, protein.getGapCharacter ());\r
-var allGaps = String.valueOf (gaps);\r
-for (var seq, $seq = protein.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-seq.setSequence (allGaps);\r
-}\r
-var column = 0;\r
-for (var codon, $codon = alignedCodons.keySet ().iterator (); $codon.hasNext () && ((codon = $codon.next ()) || true);) {\r
-var columnResidues = alignedCodons.get (codon);\r
-for (var entry, $entry = columnResidues.entrySet ().iterator (); $entry.hasNext () && ((entry = $entry.next ()) || true);) {\r
-entry.getKey ().getSequence ()[column] = entry.getValue ().charAt (0);\r
-}\r
-column++;\r
-}\r
-return 0;\r
-}, "jalview.datamodel.AlignmentI,java.util.Map");\r
-c$.addCodonPositions = Clazz.defineMethod (c$, "addCodonPositions", \r
-function (dna, protein, gapChar, seqMap, alignedCodons) {\r
-var codons = seqMap.getCodonIterator (dna, gapChar);\r
-while (codons.hasNext ()) {\r
-var codon = codons.next ();\r
-var seqProduct = alignedCodons.get (codon);\r
-if (seqProduct == null) {\r
-seqProduct =  new java.util.HashMap ();\r
-alignedCodons.put (codon, seqProduct);\r
-}seqProduct.put (protein, codon.product);\r
-}\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~S,jalview.datamodel.Mapping,java.util.Map");\r
-c$.isMappable = Clazz.defineMethod (c$, "isMappable", \r
-function (al1, al2) {\r
-if (al1.isNucleotide () == al2.isNucleotide ()) {\r
-return false;\r
-}var dna = al1.isNucleotide () ? al1 : al2;\r
-var protein = dna === al1 ? al2 : al1;\r
-var mappings = protein.getCodonFrames ();\r
-for (var dnaSeq, $dnaSeq = dna.getSequences ().iterator (); $dnaSeq.hasNext () && ((dnaSeq = $dnaSeq.next ()) || true);) {\r
-for (var proteinSeq, $proteinSeq = protein.getSequences ().iterator (); $proteinSeq.hasNext () && ((proteinSeq = $proteinSeq.next ()) || true);) {\r
-if (jalview.analysis.AlignmentUtils.isMappable (dnaSeq, proteinSeq, mappings)) {\r
-return true;\r
-}}\r
-}\r
-return false;\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");\r
-c$.isMappable = Clazz.defineMethod (c$, "isMappable", \r
-function (dnaSeq, proteinSeq, mappings) {\r
-var dnaDs = dnaSeq.getDatasetSequence () == null ? dnaSeq : dnaSeq.getDatasetSequence ();\r
-var proteinDs = proteinSeq.getDatasetSequence () == null ? proteinSeq : proteinSeq.getDatasetSequence ();\r
-for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {\r
-if (proteinDs === mapping.getAaForDnaSeq (dnaDs)) {\r
-return true;\r
-}}\r
-return jalview.analysis.AlignmentUtils.mapProteinToCdna (proteinDs, dnaDs) != null;\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,java.util.Set");\r
-c$.findAddableReferenceAnnotations = Clazz.defineMethod (c$, "findAddableReferenceAnnotations", \r
-function (sequenceScope, labelForCalcId, candidates, al) {\r
-if (sequenceScope == null) {\r
-return;\r
-}for (var seq, $seq = sequenceScope.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-var dataset = seq.getDatasetSequence ();\r
-if (dataset == null) {\r
-continue;\r
-}var datasetAnnotations = dataset.getAnnotation ();\r
-if (datasetAnnotations == null) {\r
-continue;\r
-}var result =  new java.util.ArrayList ();\r
-for (var dsann, $dsann = 0, $$dsann = datasetAnnotations; $dsann < $$dsann.length && ((dsann = $$dsann[$dsann]) || true); $dsann++) {\r
-var matchedAlignmentAnnotations = al.findAnnotations (seq, dsann.getCalcId (), dsann.label);\r
-if (!matchedAlignmentAnnotations.iterator ().hasNext ()) {\r
-result.add (dsann);\r
-if (labelForCalcId != null) {\r
-labelForCalcId.put (dsann.getCalcId (), dsann.label);\r
-}}}\r
-if (!result.isEmpty ()) {\r
-candidates.put (seq, result);\r
-}}\r
-}, "java.util.List,java.util.Map,java.util.Map,jalview.datamodel.AlignmentI");\r
-c$.addReferenceAnnotations = Clazz.defineMethod (c$, "addReferenceAnnotations", \r
-function (annotations, alignment, selectionGroup) {\r
-for (var seq, $seq = annotations.keySet ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-for (var ann, $ann = annotations.get (seq).iterator (); $ann.hasNext () && ((ann = $ann.next ()) || true);) {\r
-var copyAnn =  new jalview.datamodel.AlignmentAnnotation (ann);\r
-var startRes = 0;\r
-var endRes = ann.annotations.length;\r
-if (selectionGroup != null) {\r
-startRes = selectionGroup.getStartRes ();\r
-endRes = selectionGroup.getEndRes ();\r
-}copyAnn.restrict (startRes, endRes);\r
-if (!seq.hasAnnotation (ann)) {\r
-seq.addAlignmentAnnotation (copyAnn);\r
-}copyAnn.adjustForAlignment ();\r
-alignment.addAnnotation (copyAnn);\r
-copyAnn.visible = true;\r
-}\r
-}\r
-}, "java.util.Map,jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");\r
-c$.showOrHideSequenceAnnotations = Clazz.defineMethod (c$, "showOrHideSequenceAnnotations", \r
-function (al, types, forSequences, anyType, doShow) {\r
-for (var aa, $aa = 0, $$aa = al.getAlignmentAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {\r
-if (anyType || types.contains (aa.label)) {\r
-if ((aa.sequenceRef != null) && (forSequences == null || forSequences.contains (aa.sequenceRef))) {\r
-aa.visible = doShow;\r
-}}}\r
-}, "jalview.datamodel.AlignmentI,java.util.Collection,java.util.List,~B,~B");\r
-c$.haveCrossRef = Clazz.defineMethod (c$, "haveCrossRef", \r
-function (seq1, seq2) {\r
-return jalview.analysis.AlignmentUtils.hasCrossRef (seq1, seq2) || jalview.analysis.AlignmentUtils.hasCrossRef (seq2, seq1);\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");\r
-c$.hasCrossRef = Clazz.defineMethod (c$, "hasCrossRef", \r
-function (seq1, seq2) {\r
-if (seq1 == null || seq2 == null) {\r
-return false;\r
-}var name = seq2.getName ();\r
-var xrefs = seq1.getDBRef ();\r
-if (xrefs != null) {\r
-for (var xref, $xref = 0, $$xref = xrefs; $xref < $$xref.length && ((xref = $$xref[$xref]) || true); $xref++) {\r
-var xrefName = xref.getSource () + "|" + xref.getAccessionId ();\r
-if (xrefName.equalsIgnoreCase (name)) {\r
-return true;\r
-}}\r
-}return false;\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");\r
-c$.makeExonAlignment = Clazz.defineMethod (c$, "makeExonAlignment", \r
-function (dna, mappings) {\r
-var newMappings =  new java.util.LinkedHashSet ();\r
-var exonSequences =  new java.util.ArrayList ();\r
-for (var dnaSeq, $dnaSeq = 0, $$dnaSeq = dna; $dnaSeq < $$dnaSeq.length && ((dnaSeq = $$dnaSeq[$dnaSeq]) || true); $dnaSeq++) {\r
-var ds = dnaSeq.getDatasetSequence ();\r
-var seqMappings = jalview.util.MappingUtils.findMappingsForSequence (ds, mappings);\r
-for (var acf, $acf = seqMappings.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {\r
-var newMapping =  new jalview.datamodel.AlignedCodonFrame ();\r
-var mappedExons = jalview.analysis.AlignmentUtils.makeExonSequences (ds, acf, newMapping);\r
-if (!mappedExons.isEmpty ()) {\r
-exonSequences.addAll (mappedExons);\r
-newMappings.add (newMapping);\r
-}}\r
-}\r
-var al =  new jalview.datamodel.Alignment (exonSequences.toArray ( new Array (exonSequences.size ())));\r
-al.setDataset (null);\r
-mappings.clear ();\r
-mappings.addAll (newMappings);\r
-return al;\r
-}, "~A,java.util.Set");\r
-c$.makeExonSequences = Clazz.defineMethod (c$, "makeExonSequences", \r
-function (dnaSeq, mapping, newMapping) {\r
-var exonSequences =  new java.util.ArrayList ();\r
-var seqMappings = mapping.getMappingsForSequence (dnaSeq);\r
-var dna = dnaSeq.getSequence ();\r
-for (var seqMapping, $seqMapping = seqMappings.iterator (); $seqMapping.hasNext () && ((seqMapping = $seqMapping.next ()) || true);) {\r
-var newSequence =  new StringBuilder (dnaSeq.getLength ());\r
-var dnaExonRanges = seqMapping.getMap ().getFromRanges ();\r
-for (var range, $range = dnaExonRanges.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {\r
-for (var pos = range[0]; pos <= range[1]; pos++) {\r
-newSequence.append (dna[pos - 1]);\r
-}\r
-}\r
-var exon =  new jalview.datamodel.Sequence (dnaSeq.getName (), newSequence.toString ());\r
-var cdsAccId = jalview.datamodel.FeatureProperties.getCodingFeature (jalview.datamodel.DBRefSource.EMBL);\r
-var cdsRefs = jalview.util.DBRefUtils.selectRefs (seqMapping.getTo ().getDBRef (), jalview.datamodel.DBRefSource.CODINGDBS);\r
-if (cdsRefs != null) {\r
-for (var cdsRef, $cdsRef = 0, $$cdsRef = cdsRefs; $cdsRef < $$cdsRef.length && ((cdsRef = $$cdsRef[$cdsRef]) || true); $cdsRef++) {\r
-exon.addDBRef ( new jalview.datamodel.DBRefEntry (cdsRef));\r
-cdsAccId = cdsRef.getAccessionId ();\r
-}\r
-}exon.setName (exon.getName () + "|" + cdsAccId);\r
-exon.createDatasetSequence ();\r
-var exonRange =  new java.util.ArrayList ();\r
-exonRange.add ( Clazz.newIntArray (-1, [1, newSequence.length ()]));\r
-var map =  new jalview.util.MapList (exonRange, seqMapping.getMap ().getToRanges (), 3, 1);\r
-newMapping.addMap (exon.getDatasetSequence (), seqMapping.getTo (), map);\r
-var cdsToDnaMap =  new jalview.util.MapList (dnaExonRanges, exonRange, 1, 1);\r
-newMapping.addMap (dnaSeq, exon.getDatasetSequence (), cdsToDnaMap);\r
-exonSequences.add (exon);\r
-}\r
-return exonSequences;\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignedCodonFrame,jalview.datamodel.AlignedCodonFrame");\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (null, "jalview.analysis.AlignmentUtils", ["jalview.analysis.CodonComparator", "jalview.datamodel.AlignedCodonFrame", "$.Alignment", "$.AlignmentAnnotation", "$.DBRefEntry", "$.DBRefSource", "$.FeatureProperties", "$.SearchResults", "$.Sequence", "jalview.schemes.ResidueProperties", "jalview.util.DBRefUtils", "$.MapList", "$.MappingUtils", "java.lang.StringBuilder", "java.util.ArrayList", "$.Arrays", "$.HashMap", "$.HashSet", "$.LinkedHashMap", "$.LinkedHashSet", "$.TreeMap"], function () {
+c$ = Clazz.declareType (jalview.analysis, "AlignmentUtils");
+c$.expandContext = Clazz.defineMethod (c$, "expandContext", 
+function (core, flankSize) {
+var sq =  new java.util.ArrayList ();
+var maxoffset = 0;
+for (var s, $s = core.getSequences ().iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {
+var newSeq = s.deriveSequence ();
+var newSeqStart = newSeq.getStart () - 1;
+if (newSeqStart > maxoffset && newSeq.getDatasetSequence ().getStart () < s.getStart ()) {
+maxoffset = newSeqStart;
+}sq.add (newSeq);
+}
+if (flankSize > -1) {
+maxoffset = Math.min (maxoffset, flankSize);
+}for (var s, $s = sq.iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {
+var ds = s;
+while (ds.getDatasetSequence () != null) {
+ds = ds.getDatasetSequence ();
+}
+var s_end = s.findPosition (s.getStart () + s.getLength ());
+var ustream_ds = s.getStart () - ds.getStart ();
+var dstream_ds = ds.getEnd () - s_end;
+var offset = maxoffset - ustream_ds;
+if (flankSize >= 0) {
+if (flankSize < ustream_ds) {
+offset = maxoffset - flankSize;
+ustream_ds = flankSize;
+}if (flankSize <= dstream_ds) {
+dstream_ds = flankSize - 1;
+}}var upstream =  String.instantialize (ds.getSequence (s.getStart () - 1 - ustream_ds, s.getStart () - 1)).toLowerCase ().toCharArray ();
+var downstream =  String.instantialize (ds.getSequence (s_end - 1, s_end + dstream_ds)).toLowerCase ().toCharArray ();
+var coreseq = s.getSequence ();
+var nseq =  Clazz.newCharArray (offset + upstream.length + downstream.length + coreseq.length, '\0');
+var c = core.getGapCharacter ();
+var p = 0;
+for (; p < offset; p++) {
+nseq[p] = c;
+}
+System.arraycopy (upstream, 0, nseq, p, upstream.length);
+System.arraycopy (coreseq, 0, nseq, p + upstream.length, coreseq.length);
+System.arraycopy (downstream, 0, nseq, p + coreseq.length + upstream.length, downstream.length);
+s.setSequence ( String.instantialize (nseq));
+s.setStart (s.getStart () - ustream_ds);
+s.setEnd (s_end + downstream.length);
+}
+var newAl =  new jalview.datamodel.Alignment (sq.toArray ( new Array (0)));
+for (var s, $s = sq.iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {
+if (s.getAnnotation () != null) {
+for (var aa, $aa = 0, $$aa = s.getAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
+aa.adjustForAlignment ();
+newAl.addAnnotation (aa);
+}
+}}
+newAl.setDataset (core.getDataset ());
+return newAl;
+}, "jalview.datamodel.AlignmentI,~N");
+c$.getSequenceIndex = Clazz.defineMethod (c$, "getSequenceIndex", 
+function (al, seq) {
+var result = -1;
+var pos = 0;
+for (var alSeq, $alSeq = al.getSequences ().iterator (); $alSeq.hasNext () && ((alSeq = $alSeq.next ()) || true);) {
+if (alSeq === seq) {
+result = pos;
+break;
+}pos++;
+}
+return result;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI");
+c$.getSequencesByName = Clazz.defineMethod (c$, "getSequencesByName", 
+function (al) {
+var theMap =  new java.util.LinkedHashMap ();
+for (var seq, $seq = al.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+var name = seq.getName ();
+if (name != null) {
+var seqs = theMap.get (name);
+if (seqs == null) {
+seqs =  new java.util.ArrayList ();
+theMap.put (name, seqs);
+}seqs.add (seq);
+}}
+return theMap;
+}, "jalview.datamodel.AlignmentI");
+c$.mapProteinToCdna = Clazz.defineMethod (c$, "mapProteinToCdna", 
+function (proteinAlignment, cdnaAlignment) {
+if (proteinAlignment == null || cdnaAlignment == null) {
+return false;
+}var mappedDna =  new java.util.HashSet ();
+var mappedProtein =  new java.util.HashSet ();
+var mappingPerformed = jalview.analysis.AlignmentUtils.mapProteinToCdna (proteinAlignment, cdnaAlignment, mappedDna, mappedProtein, true);
+mappingPerformed = new Boolean (mappingPerformed | jalview.analysis.AlignmentUtils.mapProteinToCdna (proteinAlignment, cdnaAlignment, mappedDna, mappedProtein, false)).valueOf ();
+return mappingPerformed;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");
+c$.mapProteinToCdna = Clazz.defineMethod (c$, "mapProteinToCdna", 
+function (proteinAlignment, cdnaAlignment, mappedDna, mappedProtein, xrefsOnly) {
+var mappingPerformed = false;
+var thisSeqs = proteinAlignment.getSequences ();
+for (var aaSeq, $aaSeq = thisSeqs.iterator (); $aaSeq.hasNext () && ((aaSeq = $aaSeq.next ()) || true);) {
+var proteinMapped = false;
+var acf =  new jalview.datamodel.AlignedCodonFrame ();
+for (var cdnaSeq, $cdnaSeq = cdnaAlignment.getSequences ().iterator (); $cdnaSeq.hasNext () && ((cdnaSeq = $cdnaSeq.next ()) || true);) {
+if (xrefsOnly && !jalview.analysis.AlignmentUtils.haveCrossRef (aaSeq, cdnaSeq)) {
+continue;
+}if (!xrefsOnly && (mappedProtein.contains (aaSeq) || mappedDna.contains (cdnaSeq))) {
+continue;
+}if (!jalview.analysis.AlignmentUtils.mappingExists (proteinAlignment.getCodonFrames (), aaSeq.getDatasetSequence (), cdnaSeq.getDatasetSequence ())) {
+var map = jalview.analysis.AlignmentUtils.mapProteinToCdna (aaSeq, cdnaSeq);
+if (map != null) {
+acf.addMap (cdnaSeq, aaSeq, map);
+mappingPerformed = true;
+proteinMapped = true;
+mappedDna.add (cdnaSeq);
+mappedProtein.add (aaSeq);
+}}}
+if (proteinMapped) {
+proteinAlignment.addCodonFrame (acf);
+}}
+return mappingPerformed;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI,java.util.Set,java.util.Set,~B");
+c$.mappingExists = Clazz.defineMethod (c$, "mappingExists", 
+function (set, aaSeq, cdnaSeq) {
+if (set != null) {
+for (var acf, $acf = set.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+if (cdnaSeq === acf.getDnaForAaSeq (aaSeq)) {
+return true;
+}}
+}return false;
+}, "java.util.Set,jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+c$.mapProteinToCdna = Clazz.defineMethod (c$, "mapProteinToCdna", 
+function (proteinSeq, cdnaSeq) {
+var proteinDataset = proteinSeq.getDatasetSequence ();
+var aaSeqChars = proteinDataset != null ? proteinDataset.getSequence () : proteinSeq.getSequence ();
+var cdnaDataset = cdnaSeq.getDatasetSequence ();
+var cdnaSeqChars = cdnaDataset != null ? cdnaDataset.getSequence () : cdnaSeq.getSequence ();
+if (aaSeqChars == null || cdnaSeqChars == null) {
+return null;
+}var mappedLength = 3 * aaSeqChars.length;
+var cdnaLength = cdnaSeqChars.length;
+var cdnaStart = 1;
+var cdnaEnd = cdnaLength;
+var proteinStart = 1;
+var proteinEnd = aaSeqChars.length;
+if (cdnaLength != mappedLength && cdnaLength > 2) {
+var lastCodon = String.valueOf (cdnaSeqChars, cdnaLength - 3, 3).toUpperCase ();
+for (var stop, $stop = jalview.schemes.ResidueProperties.STOP.iterator (); $stop.hasNext () && ((stop = $stop.next ()) || true);) {
+if (lastCodon.equals (stop)) {
+cdnaEnd -= 3;
+cdnaLength -= 3;
+break;
+}}
+}if (cdnaLength != mappedLength && cdnaLength > 2 && String.valueOf (cdnaSeqChars, 0, 3).toUpperCase ().equals (jalview.schemes.ResidueProperties.START)) {
+cdnaStart += 3;
+cdnaLength -= 3;
+}if (cdnaLength != mappedLength) {
+return null;
+}if (!jalview.analysis.AlignmentUtils.translatesAs (cdnaSeqChars, cdnaStart - 1, aaSeqChars)) {
+return null;
+}var map =  new jalview.util.MapList ( Clazz.newIntArray (-1, [cdnaStart, cdnaEnd]),  Clazz.newIntArray (-1, [1, proteinEnd]), 3, 1);
+return map;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+c$.translatesAs = Clazz.defineMethod (c$, "translatesAs", 
+function (cdnaSeqChars, cdnaStart, aaSeqChars) {
+var aaResidue = 0;
+for (var i = cdnaStart; i < cdnaSeqChars.length - 2 && aaResidue < aaSeqChars.length; i += 3, aaResidue++) {
+var codon = String.valueOf (cdnaSeqChars, i, 3);
+var translated = jalview.schemes.ResidueProperties.codonTranslate (codon);
+var aaRes = aaSeqChars[aaResidue];
+if ((translated == null || "STOP".equals (translated)) && aaRes == 'X') {
+continue;
+}if (translated == null || !(aaRes == translated.charAt (0))) {
+return false;
+}}
+return (aaResidue == aaSeqChars.length);
+}, "~A,~N,~A");
+c$.alignSequenceAs = Clazz.defineMethod (c$, "alignSequenceAs", 
+function (seq, al, gap, preserveMappedGaps, preserveUnmappedGaps) {
+var mappings = al.getCodonFrame (seq);
+if (mappings == null || mappings.isEmpty ()) {
+return false;
+}var alignFrom = null;
+var mapping = null;
+for (var mp, $mp = mappings.iterator (); $mp.hasNext () && ((mp = $mp.next ()) || true);) {
+alignFrom = mp.findAlignedSequence (seq.getDatasetSequence (), al);
+if (alignFrom != null) {
+mapping = mp;
+break;
+}}
+if (alignFrom == null) {
+return false;
+}jalview.analysis.AlignmentUtils.alignSequenceAs (seq, alignFrom, mapping, gap, al.getGapCharacter (), preserveMappedGaps, preserveUnmappedGaps);
+return true;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,~S,~B,~B");
+c$.alignSequenceAs = Clazz.defineMethod (c$, "alignSequenceAs", 
+function (alignTo, alignFrom, mapping, myGap, sourceGap, preserveMappedGaps, preserveUnmappedGaps) {
+var thisSeq = alignTo.getSequence ();
+var thatAligned = alignFrom.getSequence ();
+var thisAligned =  new StringBuilder (2 * thisSeq.length);
+var thisSeqPos = 0;
+var sourceDsPos = 0;
+var basesWritten = 0;
+var myGapChar = myGap.charAt (0);
+var ratio = myGap.length;
+var sourceGapMappedLength = 0;
+var inExon = false;
+for (var sourceChar, $sourceChar = 0, $$sourceChar = thatAligned; $sourceChar < $$sourceChar.length && ((sourceChar = $$sourceChar[$sourceChar]) || true); $sourceChar++) {
+if (sourceChar == sourceGap) {
+sourceGapMappedLength += ratio;
+continue;
+}sourceDsPos++;
+var mappedPos = mapping.getMappedRegion (alignTo, alignFrom, sourceDsPos);
+if (mappedPos == null) {
+System.err.println ("Can't align: no codon mapping to residue " + sourceDsPos + "(" + sourceChar + ")");
+return;
+}var mappedCodonStart = mappedPos[0];
+var mappedCodonEnd = mappedPos[mappedPos.length - 1];
+var trailingCopiedGap =  new StringBuilder ();
+var intronLength = 0;
+while (basesWritten < mappedCodonEnd && thisSeqPos < thisSeq.length) {
+var c = thisSeq[thisSeqPos++];
+if (c != myGapChar) {
+basesWritten++;
+if (basesWritten < mappedCodonStart) {
+if (preserveUnmappedGaps && trailingCopiedGap.length () > 0) {
+thisAligned.append (trailingCopiedGap.toString ());
+intronLength += trailingCopiedGap.length ();
+trailingCopiedGap =  new StringBuilder ();
+}intronLength++;
+inExon = false;
+} else {
+var startOfCodon = basesWritten == mappedCodonStart;
+var gapsToAdd = jalview.analysis.AlignmentUtils.calculateGapsToInsert (preserveMappedGaps, preserveUnmappedGaps, sourceGapMappedLength, inExon, trailingCopiedGap.length (), intronLength, startOfCodon);
+for (var i = 0; i < gapsToAdd; i++) {
+thisAligned.append (myGapChar);
+}
+sourceGapMappedLength = 0;
+inExon = true;
+}thisAligned.append (c);
+trailingCopiedGap =  new StringBuilder ();
+} else {
+if (inExon && preserveMappedGaps) {
+trailingCopiedGap.append (myGapChar);
+} else if (!inExon && preserveUnmappedGaps) {
+trailingCopiedGap.append (myGapChar);
+}}}
+}
+while (thisSeqPos < thisSeq.length) {
+var c = thisSeq[thisSeqPos++];
+if (c != myGapChar || preserveUnmappedGaps) {
+thisAligned.append (c);
+}}
+alignTo.setSequence ( String.instantialize (thisAligned));
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,jalview.datamodel.AlignedCodonFrame,~S,~S,~B,~B");
+c$.calculateGapsToInsert = Clazz.defineMethod (c$, "calculateGapsToInsert", 
+function (preserveMappedGaps, preserveUnmappedGaps, sourceGapMappedLength, inExon, trailingGapLength, intronLength, startOfCodon) {
+var gapsToAdd = 0;
+if (startOfCodon) {
+if (inExon && !preserveMappedGaps) {
+trailingGapLength = 0;
+}if (!inExon && !(preserveMappedGaps && preserveUnmappedGaps)) {
+trailingGapLength = 0;
+}if (inExon) {
+gapsToAdd = Math.max (sourceGapMappedLength, trailingGapLength);
+} else {
+if (intronLength + trailingGapLength <= sourceGapMappedLength) {
+gapsToAdd = sourceGapMappedLength - intronLength;
+} else {
+gapsToAdd = Math.min (intronLength + trailingGapLength - sourceGapMappedLength, trailingGapLength);
+}}} else {
+if (!preserveMappedGaps) {
+trailingGapLength = 0;
+}gapsToAdd = Math.max (sourceGapMappedLength, trailingGapLength);
+}return gapsToAdd;
+}, "~B,~B,~N,~B,~N,~N,~B");
+c$.getAlignedTranslation = Clazz.defineMethod (c$, "getAlignedTranslation", 
+function (sequences, gapCharacter, mappings) {
+var alignedSeqs =  new java.util.ArrayList ();
+for (var seq, $seq = sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+var mapped = jalview.analysis.AlignmentUtils.getAlignedTranslation (seq, gapCharacter, mappings);
+alignedSeqs.addAll (mapped);
+}
+return alignedSeqs;
+}, "java.util.List,~S,java.util.Set");
+c$.getAlignedTranslation = Clazz.defineMethod (c$, "getAlignedTranslation", 
+function (seq, gapCharacter, mappings) {
+var result =  new java.util.ArrayList ();
+for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {
+if (mapping.involvesSequence (seq)) {
+var mapped = jalview.analysis.AlignmentUtils.getAlignedTranslation (seq, gapCharacter, mapping);
+if (mapped != null) {
+result.add (mapped);
+}}}
+return result;
+}, "jalview.datamodel.SequenceI,~S,java.util.Set");
+c$.getAlignedTranslation = Clazz.defineMethod (c$, "getAlignedTranslation", 
+function (seq, gapCharacter, mapping) {
+var gap = String.valueOf (gapCharacter);
+var toDna = false;
+var fromRatio = 1;
+var mapTo = mapping.getDnaForAaSeq (seq);
+if (mapTo != null) {
+toDna = true;
+gap = String.valueOf ( Clazz.newCharArray (-1, [gapCharacter, gapCharacter, gapCharacter]));
+} else {
+mapTo = mapping.getAaForDnaSeq (seq);
+fromRatio = 3;
+}var newseq =  new StringBuilder (seq.getLength () * (toDna ? 3 : 1));
+var residueNo = 0;
+var phrase =  Clazz.newIntArray (fromRatio, 0);
+var phraseOffset = 0;
+var gapWidth = 0;
+var first = true;
+var alignedSeq =  new jalview.datamodel.Sequence ("", "");
+for (var c, $c = 0, $$c = seq.getSequence (); $c < $$c.length && ((c = $$c[$c]) || true); $c++) {
+if (c == gapCharacter) {
+gapWidth++;
+if (gapWidth >= fromRatio) {
+newseq.append (gap);
+gapWidth = 0;
+}} else {
+phrase[phraseOffset++] = residueNo + 1;
+if (phraseOffset == fromRatio) {
+var sr =  new jalview.datamodel.SearchResults ();
+for (var pos, $pos = 0, $$pos = phrase; $pos < $$pos.length && ((pos = $$pos[$pos]) || true); $pos++) {
+mapping.markMappedRegion (seq, pos, sr);
+}
+newseq.append (sr.toString ());
+if (first) {
+first = false;
+var mappedTo = sr.getResultSequence (0);
+alignedSeq.setName (mappedTo.getName ());
+alignedSeq.setDescription (mappedTo.getDescription ());
+alignedSeq.setDatasetSequence (mappedTo);
+}phraseOffset = 0;
+}residueNo++;
+}}
+alignedSeq.setSequence (newseq.toString ());
+return alignedSeq;
+}, "jalview.datamodel.SequenceI,~S,jalview.datamodel.AlignedCodonFrame");
+c$.alignProteinAsDna = Clazz.defineMethod (c$, "alignProteinAsDna", 
+function (protein, dna) {
+var mappings = protein.getCodonFrames ();
+var alignedCodons =  new java.util.TreeMap ( new jalview.analysis.CodonComparator ());
+for (var dnaSeq, $dnaSeq = dna.getSequences ().iterator (); $dnaSeq.hasNext () && ((dnaSeq = $dnaSeq.next ()) || true);) {
+for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {
+var seqMap = mapping.getMappingForSequence (dnaSeq);
+var prot = mapping.findAlignedSequence (dnaSeq.getDatasetSequence (), protein);
+if (prot != null) {
+jalview.analysis.AlignmentUtils.addCodonPositions (dnaSeq, prot, protein.getGapCharacter (), seqMap, alignedCodons);
+}}
+}
+return jalview.analysis.AlignmentUtils.alignProteinAs (protein, alignedCodons);
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");
+c$.alignProteinAs = Clazz.defineMethod (c$, "alignProteinAs", 
+function (protein, alignedCodons) {
+var alignedWidth = alignedCodons.size ();
+var gaps =  Clazz.newCharArray (alignedWidth, '\0');
+java.util.Arrays.fill (gaps, protein.getGapCharacter ());
+var allGaps = String.valueOf (gaps);
+for (var seq, $seq = protein.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+seq.setSequence (allGaps);
+}
+var column = 0;
+for (var codon, $codon = alignedCodons.keySet ().iterator (); $codon.hasNext () && ((codon = $codon.next ()) || true);) {
+var columnResidues = alignedCodons.get (codon);
+for (var entry, $entry = columnResidues.entrySet ().iterator (); $entry.hasNext () && ((entry = $entry.next ()) || true);) {
+entry.getKey ().getSequence ()[column] = entry.getValue ().charAt (0);
+}
+column++;
+}
+return 0;
+}, "jalview.datamodel.AlignmentI,java.util.Map");
+c$.addCodonPositions = Clazz.defineMethod (c$, "addCodonPositions", 
+function (dna, protein, gapChar, seqMap, alignedCodons) {
+var codons = seqMap.getCodonIterator (dna, gapChar);
+while (codons.hasNext ()) {
+var codon = codons.next ();
+var seqProduct = alignedCodons.get (codon);
+if (seqProduct == null) {
+seqProduct =  new java.util.HashMap ();
+alignedCodons.put (codon, seqProduct);
+}seqProduct.put (protein, codon.product);
+}
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~S,jalview.datamodel.Mapping,java.util.Map");
+c$.isMappable = Clazz.defineMethod (c$, "isMappable", 
+function (al1, al2) {
+if (al1.isNucleotide () == al2.isNucleotide ()) {
+return false;
+}var dna = al1.isNucleotide () ? al1 : al2;
+var protein = dna === al1 ? al2 : al1;
+var mappings = protein.getCodonFrames ();
+for (var dnaSeq, $dnaSeq = dna.getSequences ().iterator (); $dnaSeq.hasNext () && ((dnaSeq = $dnaSeq.next ()) || true);) {
+for (var proteinSeq, $proteinSeq = protein.getSequences ().iterator (); $proteinSeq.hasNext () && ((proteinSeq = $proteinSeq.next ()) || true);) {
+if (jalview.analysis.AlignmentUtils.isMappable (dnaSeq, proteinSeq, mappings)) {
+return true;
+}}
+}
+return false;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");
+c$.isMappable = Clazz.defineMethod (c$, "isMappable", 
+function (dnaSeq, proteinSeq, mappings) {
+var dnaDs = dnaSeq.getDatasetSequence () == null ? dnaSeq : dnaSeq.getDatasetSequence ();
+var proteinDs = proteinSeq.getDatasetSequence () == null ? proteinSeq : proteinSeq.getDatasetSequence ();
+for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {
+if (proteinDs === mapping.getAaForDnaSeq (dnaDs)) {
+return true;
+}}
+return jalview.analysis.AlignmentUtils.mapProteinToCdna (proteinDs, dnaDs) != null;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,java.util.Set");
+c$.findAddableReferenceAnnotations = Clazz.defineMethod (c$, "findAddableReferenceAnnotations", 
+function (sequenceScope, labelForCalcId, candidates, al) {
+if (sequenceScope == null) {
+return;
+}for (var seq, $seq = sequenceScope.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+var dataset = seq.getDatasetSequence ();
+if (dataset == null) {
+continue;
+}var datasetAnnotations = dataset.getAnnotation ();
+if (datasetAnnotations == null) {
+continue;
+}var result =  new java.util.ArrayList ();
+for (var dsann, $dsann = 0, $$dsann = datasetAnnotations; $dsann < $$dsann.length && ((dsann = $$dsann[$dsann]) || true); $dsann++) {
+var matchedAlignmentAnnotations = al.findAnnotations (seq, dsann.getCalcId (), dsann.label);
+if (!matchedAlignmentAnnotations.iterator ().hasNext ()) {
+result.add (dsann);
+if (labelForCalcId != null) {
+labelForCalcId.put (dsann.getCalcId (), dsann.label);
+}}}
+if (!result.isEmpty ()) {
+candidates.put (seq, result);
+}}
+}, "java.util.List,java.util.Map,java.util.Map,jalview.datamodel.AlignmentI");
+c$.addReferenceAnnotations = Clazz.defineMethod (c$, "addReferenceAnnotations", 
+function (annotations, alignment, selectionGroup) {
+for (var seq, $seq = annotations.keySet ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+for (var ann, $ann = annotations.get (seq).iterator (); $ann.hasNext () && ((ann = $ann.next ()) || true);) {
+var copyAnn =  new jalview.datamodel.AlignmentAnnotation (ann);
+var startRes = 0;
+var endRes = ann.annotations.length;
+if (selectionGroup != null) {
+startRes = selectionGroup.getStartRes ();
+endRes = selectionGroup.getEndRes ();
+}copyAnn.restrict (startRes, endRes);
+if (!seq.hasAnnotation (ann)) {
+seq.addAlignmentAnnotation (copyAnn);
+}copyAnn.adjustForAlignment ();
+alignment.addAnnotation (copyAnn);
+copyAnn.visible = true;
+}
+}
+}, "java.util.Map,jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
+c$.showOrHideSequenceAnnotations = Clazz.defineMethod (c$, "showOrHideSequenceAnnotations", 
+function (al, types, forSequences, anyType, doShow) {
+for (var aa, $aa = 0, $$aa = al.getAlignmentAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
+if (anyType || types.contains (aa.label)) {
+if ((aa.sequenceRef != null) && (forSequences == null || forSequences.contains (aa.sequenceRef))) {
+aa.visible = doShow;
+}}}
+}, "jalview.datamodel.AlignmentI,java.util.Collection,java.util.List,~B,~B");
+c$.haveCrossRef = Clazz.defineMethod (c$, "haveCrossRef", 
+function (seq1, seq2) {
+return jalview.analysis.AlignmentUtils.hasCrossRef (seq1, seq2) || jalview.analysis.AlignmentUtils.hasCrossRef (seq2, seq1);
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+c$.hasCrossRef = Clazz.defineMethod (c$, "hasCrossRef", 
+function (seq1, seq2) {
+if (seq1 == null || seq2 == null) {
+return false;
+}var name = seq2.getName ();
+var xrefs = seq1.getDBRef ();
+if (xrefs != null) {
+for (var xref, $xref = 0, $$xref = xrefs; $xref < $$xref.length && ((xref = $$xref[$xref]) || true); $xref++) {
+var xrefName = xref.getSource () + "|" + xref.getAccessionId ();
+if (xrefName.equalsIgnoreCase (name)) {
+return true;
+}}
+}return false;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+c$.makeExonAlignment = Clazz.defineMethod (c$, "makeExonAlignment", 
+function (dna, mappings) {
+var newMappings =  new java.util.LinkedHashSet ();
+var exonSequences =  new java.util.ArrayList ();
+for (var dnaSeq, $dnaSeq = 0, $$dnaSeq = dna; $dnaSeq < $$dnaSeq.length && ((dnaSeq = $$dnaSeq[$dnaSeq]) || true); $dnaSeq++) {
+var ds = dnaSeq.getDatasetSequence ();
+var seqMappings = jalview.util.MappingUtils.findMappingsForSequence (ds, mappings);
+for (var acf, $acf = seqMappings.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+var newMapping =  new jalview.datamodel.AlignedCodonFrame ();
+var mappedExons = jalview.analysis.AlignmentUtils.makeExonSequences (ds, acf, newMapping);
+if (!mappedExons.isEmpty ()) {
+exonSequences.addAll (mappedExons);
+newMappings.add (newMapping);
+}}
+}
+var al =  new jalview.datamodel.Alignment (exonSequences.toArray ( new Array (exonSequences.size ())));
+al.setDataset (null);
+mappings.clear ();
+mappings.addAll (newMappings);
+return al;
+}, "~A,java.util.Set");
+c$.makeExonSequences = Clazz.defineMethod (c$, "makeExonSequences", 
+function (dnaSeq, mapping, newMapping) {
+var exonSequences =  new java.util.ArrayList ();
+var seqMappings = mapping.getMappingsForSequence (dnaSeq);
+var dna = dnaSeq.getSequence ();
+for (var seqMapping, $seqMapping = seqMappings.iterator (); $seqMapping.hasNext () && ((seqMapping = $seqMapping.next ()) || true);) {
+var newSequence =  new StringBuilder (dnaSeq.getLength ());
+var dnaExonRanges = seqMapping.getMap ().getFromRanges ();
+for (var range, $range = dnaExonRanges.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {
+for (var pos = range[0]; pos <= range[1]; pos++) {
+newSequence.append (dna[pos - 1]);
+}
+}
+var exon =  new jalview.datamodel.Sequence (dnaSeq.getName (), newSequence.toString ());
+var cdsAccId = jalview.datamodel.FeatureProperties.getCodingFeature (jalview.datamodel.DBRefSource.EMBL);
+var cdsRefs = jalview.util.DBRefUtils.selectRefs (seqMapping.getTo ().getDBRef (), jalview.datamodel.DBRefSource.CODINGDBS);
+if (cdsRefs != null) {
+for (var cdsRef, $cdsRef = 0, $$cdsRef = cdsRefs; $cdsRef < $$cdsRef.length && ((cdsRef = $$cdsRef[$cdsRef]) || true); $cdsRef++) {
+exon.addDBRef ( new jalview.datamodel.DBRefEntry (cdsRef));
+cdsAccId = cdsRef.getAccessionId ();
+}
+}exon.setName (exon.getName () + "|" + cdsAccId);
+exon.createDatasetSequence ();
+var exonRange =  new java.util.ArrayList ();
+exonRange.add ( Clazz.newIntArray (-1, [1, newSequence.length ()]));
+var map =  new jalview.util.MapList (exonRange, seqMapping.getMap ().getToRanges (), 3, 1);
+newMapping.addMap (exon.getDatasetSequence (), seqMapping.getTo (), map);
+var cdsToDnaMap =  new jalview.util.MapList (dnaExonRanges, exonRange, 1, 1);
+newMapping.addMap (dnaSeq, exon.getDatasetSequence (), cdsToDnaMap);
+exonSequences.add (exon);
+}
+return exonSequences;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignedCodonFrame,jalview.datamodel.AlignedCodonFrame");
+});
index 2757955..b7d78cd 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (["java.lang.Enum", "java.util.HashMap"], "jalview.analysis.AnnotationSorter", ["jalview.analysis.AlignmentUtils", "java.lang.UnsupportedOperationException", "java.util.Arrays"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.alignment = null;\r
-this.showAutocalcAbove = false;\r
-this.sequenceIndices = null;\r
-this.bySequenceAndLabel = null;\r
-this.byLabelAndSequence = null;\r
-this.noSort = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis, "AnnotationSorter");\r
-Clazz.prepareFields (c$, function () {\r
-this.sequenceIndices =  new java.util.HashMap ();\r
-this.bySequenceAndLabel = ((Clazz.isClassDefined ("jalview.analysis.AnnotationSorter$1") ? 0 : jalview.analysis.AnnotationSorter.$AnnotationSorter$1$ ()), Clazz.innerTypeInstance (jalview.analysis.AnnotationSorter$1, this, null));\r
-this.byLabelAndSequence = ((Clazz.isClassDefined ("jalview.analysis.AnnotationSorter$2") ? 0 : jalview.analysis.AnnotationSorter.$AnnotationSorter$2$ ()), Clazz.innerTypeInstance (jalview.analysis.AnnotationSorter$2, this, null));\r
-this.noSort = ((Clazz.isClassDefined ("jalview.analysis.AnnotationSorter$3") ? 0 : jalview.analysis.AnnotationSorter.$AnnotationSorter$3$ ()), Clazz.innerTypeInstance (jalview.analysis.AnnotationSorter$3, this, null));\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (alignmentI, showAutocalculatedAbove) {\r
-this.alignment = alignmentI;\r
-this.showAutocalcAbove = showAutocalculatedAbove;\r
-}, "jalview.datamodel.AlignmentI,~B");\r
-Clazz.defineMethod (c$, "sort", \r
-function (alignmentAnnotations, order) {\r
-if (alignmentAnnotations == null) {\r
-return;\r
-}this.saveSequenceIndices (alignmentAnnotations);\r
-var comparator = this.getComparator (order);\r
-if (alignmentAnnotations != null) {\r
-{\r
-java.util.Arrays.sort (alignmentAnnotations, comparator);\r
-}}}, "~A,jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");\r
-Clazz.defineMethod (c$, "saveSequenceIndices", \r
-($fz = function (alignmentAnnotations) {\r
-this.sequenceIndices.clear ();\r
-for (var ann, $ann = 0, $$ann = alignmentAnnotations; $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {\r
-var seq = ann.sequenceRef;\r
-if (seq != null) {\r
-var index = jalview.analysis.AlignmentUtils.getSequenceIndex (this.alignment, seq);\r
-this.sequenceIndices.put (seq, new Integer (index));\r
-}}\r
-}, $fz.isPrivate = true, $fz), "~A");\r
-Clazz.defineMethod (c$, "getComparator", \r
-($fz = function (order) {\r
-if (order == null) {\r
-return this.noSort;\r
-}switch (order) {\r
-case jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE:\r
-return this.noSort;\r
-case jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.SEQUENCE_AND_LABEL:\r
-return this.bySequenceAndLabel;\r
-case jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.LABEL_AND_SEQUENCE:\r
-return this.byLabelAndSequence;\r
-default:\r
-throw  new UnsupportedOperationException (order.toString ());\r
-}\r
-}, $fz.isPrivate = true, $fz), "jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");\r
-Clazz.defineMethod (c$, "compareLabels", \r
-($fz = function (o1, o2) {\r
-if (o1 == null || o2 == null) {\r
-return 0;\r
-}var label1 = o1.label;\r
-var label2 = o2.label;\r
-if (label1 == null && label2 == null) {\r
-return 0;\r
-}if (label1 == null) {\r
-return -1;\r
-}if (label2 == null) {\r
-return 1;\r
-}return label1.toUpperCase ().compareTo (label2.toUpperCase ());\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");\r
-Clazz.defineMethod (c$, "compareSequences", \r
-($fz = function (o1, o2) {\r
-var seq1 = o1.sequenceRef;\r
-var seq2 = o2.sequenceRef;\r
-if (seq1 == null && seq2 == null) {\r
-return 0;\r
-}if (seq1 == null) {\r
-return this.showAutocalcAbove ? -1 : 1;\r
-}if (seq2 == null) {\r
-return this.showAutocalcAbove ? 1 : -1;\r
-}var index1 = (this.sequenceIndices.get (seq1)).intValue ();\r
-var index2 = (this.sequenceIndices.get (seq2)).intValue ();\r
-if (index1 == index2) {\r
-return 0;\r
-}if (index1 == -1) {\r
-return -1;\r
-}if (index2 == -1) {\r
-return 1;\r
-}return Integer.compare (index1, index2);\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");\r
-c$.$AnnotationSorter$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.analysis, "AnnotationSorter$1", null, java.util.Comparator);\r
-Clazz.overrideMethod (c$, "compare", \r
-function (o1, o2) {\r
-if (o1 == null && o2 == null) {\r
-return 0;\r
-}if (o1 == null) {\r
-return -1;\r
-}if (o2 == null) {\r
-return 1;\r
-}if (o1.sequenceRef == null && o2.sequenceRef == null) {\r
-return 0;\r
-}var sequenceOrder = this.b$["jalview.analysis.AnnotationSorter"].compareSequences (o1, o2);\r
-return sequenceOrder == 0 ? this.b$["jalview.analysis.AnnotationSorter"].compareLabels (o1, o2) : sequenceOrder;\r
-}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationSorter$2$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.analysis, "AnnotationSorter$2", null, java.util.Comparator);\r
-Clazz.overrideMethod (c$, "compare", \r
-function (o1, o2) {\r
-if (o1 == null && o2 == null) {\r
-return 0;\r
-}if (o1 == null) {\r
-return -1;\r
-}if (o2 == null) {\r
-return 1;\r
-}if (o1.sequenceRef == null && o2.sequenceRef == null) {\r
-return 0;\r
-}if (o1.sequenceRef == null) {\r
-return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove ? -1 : 1;\r
-}if (o2.sequenceRef == null) {\r
-return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove ? 1 : -1;\r
-}var labelOrder = this.b$["jalview.analysis.AnnotationSorter"].compareLabels (o1, o2);\r
-return labelOrder == 0 ? this.b$["jalview.analysis.AnnotationSorter"].compareSequences (o1, o2) : labelOrder;\r
-}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationSorter$3$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.analysis, "AnnotationSorter$3", null, java.util.Comparator);\r
-Clazz.overrideMethod (c$, "compare", \r
-function (o1, o2) {\r
-if (o1 != null && o2 != null) {\r
-if (o1.sequenceRef == null && o2.sequenceRef != null) {\r
-return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove ? -1 : 1;\r
-}if (o1.sequenceRef != null && o2.sequenceRef == null) {\r
-return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove ? 1 : -1;\r
-}}return 0;\r
-}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.description = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis.AnnotationSorter, "SequenceAnnotationOrder", Enum);\r
-Clazz.makeConstructor (c$, \r
-($fz = function (a) {\r
-this.description = a;\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return this.description;\r
-});\r
-c$.forDescription = Clazz.defineMethod (c$, "forDescription", \r
-function (a) {\r
-for (var order, $order = 0, $$order = jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.values (); $order < $$order.length && ((order = $$order[$order]) || true); $order++) {\r
-if (order.toString ().equals (a)) {\r
-return order;\r
-}}\r
-return null;\r
-}, "~S");\r
-Clazz.defineEnumConstant (c$, "SEQUENCE_AND_LABEL", 0, ["Sequence"]);\r
-Clazz.defineEnumConstant (c$, "LABEL_AND_SEQUENCE", 1, ["Label"]);\r
-Clazz.defineEnumConstant (c$, "NONE", 2, ["No sort"]);\r
-c$ = Clazz.p0p ();\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (["java.lang.Enum", "java.util.HashMap"], "jalview.analysis.AnnotationSorter", ["jalview.analysis.AlignmentUtils", "java.lang.UnsupportedOperationException", "java.util.Arrays"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.alignment = null;
+this.showAutocalcAbove = false;
+this.sequenceIndices = null;
+this.bySequenceAndLabel = null;
+this.byLabelAndSequence = null;
+this.noSort = null;
+Clazz.instantialize (this, arguments);
+}, jalview.analysis, "AnnotationSorter");
+Clazz.prepareFields (c$, function () {
+this.sequenceIndices =  new java.util.HashMap ();
+this.bySequenceAndLabel = ((Clazz.isClassDefined ("jalview.analysis.AnnotationSorter$1") ? 0 : jalview.analysis.AnnotationSorter.$AnnotationSorter$1$ ()), Clazz.innerTypeInstance (jalview.analysis.AnnotationSorter$1, this, null));
+this.byLabelAndSequence = ((Clazz.isClassDefined ("jalview.analysis.AnnotationSorter$2") ? 0 : jalview.analysis.AnnotationSorter.$AnnotationSorter$2$ ()), Clazz.innerTypeInstance (jalview.analysis.AnnotationSorter$2, this, null));
+this.noSort = ((Clazz.isClassDefined ("jalview.analysis.AnnotationSorter$3") ? 0 : jalview.analysis.AnnotationSorter.$AnnotationSorter$3$ ()), Clazz.innerTypeInstance (jalview.analysis.AnnotationSorter$3, this, null));
+});
+Clazz.makeConstructor (c$, 
+function (alignmentI, showAutocalculatedAbove) {
+this.alignment = alignmentI;
+this.showAutocalcAbove = showAutocalculatedAbove;
+}, "jalview.datamodel.AlignmentI,~B");
+Clazz.defineMethod (c$, "sort", 
+function (alignmentAnnotations, order) {
+if (alignmentAnnotations == null) {
+return;
+}this.saveSequenceIndices (alignmentAnnotations);
+var comparator = this.getComparator (order);
+if (alignmentAnnotations != null) {
+{
+java.util.Arrays.sort (alignmentAnnotations, comparator);
+}}}, "~A,jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");
+Clazz.defineMethod (c$, "saveSequenceIndices", 
+($fz = function (alignmentAnnotations) {
+this.sequenceIndices.clear ();
+for (var ann, $ann = 0, $$ann = alignmentAnnotations; $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {
+var seq = ann.sequenceRef;
+if (seq != null) {
+var index = jalview.analysis.AlignmentUtils.getSequenceIndex (this.alignment, seq);
+this.sequenceIndices.put (seq, new Integer (index));
+}}
+}, $fz.isPrivate = true, $fz), "~A");
+Clazz.defineMethod (c$, "getComparator", 
+($fz = function (order) {
+if (order == null) {
+return this.noSort;
+}switch (order) {
+case jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE:
+return this.noSort;
+case jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.SEQUENCE_AND_LABEL:
+return this.bySequenceAndLabel;
+case jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.LABEL_AND_SEQUENCE:
+return this.byLabelAndSequence;
+default:
+throw  new UnsupportedOperationException (order.toString ());
+}
+}, $fz.isPrivate = true, $fz), "jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");
+Clazz.defineMethod (c$, "compareLabels", 
+($fz = function (o1, o2) {
+if (o1 == null || o2 == null) {
+return 0;
+}var label1 = o1.label;
+var label2 = o2.label;
+if (label1 == null && label2 == null) {
+return 0;
+}if (label1 == null) {
+return -1;
+}if (label2 == null) {
+return 1;
+}return label1.toUpperCase ().compareTo (label2.toUpperCase ());
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "compareSequences", 
+($fz = function (o1, o2) {
+var seq1 = o1.sequenceRef;
+var seq2 = o2.sequenceRef;
+if (seq1 == null && seq2 == null) {
+return 0;
+}if (seq1 == null) {
+return this.showAutocalcAbove ? -1 : 1;
+}if (seq2 == null) {
+return this.showAutocalcAbove ? 1 : -1;
+}var index1 = (this.sequenceIndices.get (seq1)).intValue ();
+var index2 = (this.sequenceIndices.get (seq2)).intValue ();
+if (index1 == index2) {
+return 0;
+}if (index1 == -1) {
+return -1;
+}if (index2 == -1) {
+return 1;
+}return Integer.compare (index1, index2);
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");
+c$.$AnnotationSorter$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.analysis, "AnnotationSorter$1", null, java.util.Comparator);
+Clazz.overrideMethod (c$, "compare", 
+function (o1, o2) {
+if (o1 == null && o2 == null) {
+return 0;
+}if (o1 == null) {
+return -1;
+}if (o2 == null) {
+return 1;
+}if (o1.sequenceRef == null && o2.sequenceRef == null) {
+return 0;
+}var sequenceOrder = this.b$["jalview.analysis.AnnotationSorter"].compareSequences (o1, o2);
+return sequenceOrder == 0 ? this.b$["jalview.analysis.AnnotationSorter"].compareLabels (o1, o2) : sequenceOrder;
+}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationSorter$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.analysis, "AnnotationSorter$2", null, java.util.Comparator);
+Clazz.overrideMethod (c$, "compare", 
+function (o1, o2) {
+if (o1 == null && o2 == null) {
+return 0;
+}if (o1 == null) {
+return -1;
+}if (o2 == null) {
+return 1;
+}if (o1.sequenceRef == null && o2.sequenceRef == null) {
+return 0;
+}if (o1.sequenceRef == null) {
+return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove ? -1 : 1;
+}if (o2.sequenceRef == null) {
+return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove ? 1 : -1;
+}var labelOrder = this.b$["jalview.analysis.AnnotationSorter"].compareLabels (o1, o2);
+return labelOrder == 0 ? this.b$["jalview.analysis.AnnotationSorter"].compareSequences (o1, o2) : labelOrder;
+}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationSorter$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.analysis, "AnnotationSorter$3", null, java.util.Comparator);
+Clazz.overrideMethod (c$, "compare", 
+function (o1, o2) {
+if (o1 != null && o2 != null) {
+if (o1.sequenceRef == null && o2.sequenceRef != null) {
+return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove ? -1 : 1;
+}if (o1.sequenceRef != null && o2.sequenceRef == null) {
+return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove ? 1 : -1;
+}}return 0;
+}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");
+c$ = Clazz.p0p ();
+};
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+this.description = null;
+Clazz.instantialize (this, arguments);
+}, jalview.analysis.AnnotationSorter, "SequenceAnnotationOrder", Enum);
+Clazz.makeConstructor (c$, 
+($fz = function (a) {
+this.description = a;
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return this.description;
+});
+c$.forDescription = Clazz.defineMethod (c$, "forDescription", 
+function (a) {
+for (var order, $order = 0, $$order = jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.values (); $order < $$order.length && ((order = $$order[$order]) || true); $order++) {
+if (order.toString ().equals (a)) {
+return order;
+}}
+return null;
+}, "~S");
+Clazz.defineEnumConstant (c$, "SEQUENCE_AND_LABEL", 0, ["Sequence"]);
+Clazz.defineEnumConstant (c$, "LABEL_AND_SEQUENCE", 1, ["Label"]);
+Clazz.defineEnumConstant (c$, "NONE", 2, ["No sort"]);
+c$ = Clazz.p0p ();
+});
index 08fa0ce..69abb90 100644 (file)
@@ -1,64 +1,64 @@
-Clazz.declarePackage ("jalview.analysis");\r
-c$ = Clazz.declareType (jalview.analysis, "CodingUtils");\r
-c$.encodeCodon = Clazz.defineMethod (c$, "encodeCodon", \r
-function (codon) {\r
-if (codon == null) {\r
-return -1;\r
-}return jalview.analysis.CodingUtils.encodeCodon (codon[2]) + (jalview.analysis.CodingUtils.encodeCodon (codon[1]) << 2) + (jalview.analysis.CodingUtils.encodeCodon (codon[0]) << (4));\r
-}, "~A");\r
-c$.encodeCodon = Clazz.defineMethod (c$, "encodeCodon", \r
-function (c) {\r
-var result = -2147483648;\r
-switch (c) {\r
-case 'A':\r
-case 'a':\r
-result = 0;\r
-break;\r
-case 'C':\r
-case 'c':\r
-result = 1;\r
-break;\r
-case 'G':\r
-case 'g':\r
-result = 2;\r
-break;\r
-case 'T':\r
-case 't':\r
-case 'U':\r
-case 'u':\r
-result = 3;\r
-break;\r
-}\r
-return result;\r
-}, "~S");\r
-c$.decodeCodon = Clazz.defineMethod (c$, "decodeCodon", \r
-function (encoded) {\r
-var result =  Clazz.newCharArray (3, '\0');\r
-result[2] = jalview.analysis.CodingUtils.decodeNucleotide (encoded & 3);\r
-encoded = encoded >>> 2;\r
-result[1] = jalview.analysis.CodingUtils.decodeNucleotide (encoded & 3);\r
-encoded = encoded >>> 2;\r
-result[0] = jalview.analysis.CodingUtils.decodeNucleotide (encoded & 3);\r
-return result;\r
-}, "~N");\r
-c$.decodeNucleotide = Clazz.defineMethod (c$, "decodeNucleotide", \r
-function (i) {\r
-var result = '0';\r
-switch (i) {\r
-case 0:\r
-result = 'A';\r
-break;\r
-case 1:\r
-result = 'C';\r
-break;\r
-case 2:\r
-result = 'G';\r
-break;\r
-case 3:\r
-result = 'T';\r
-break;\r
-}\r
-return result;\r
-}, "~N");\r
-Clazz.defineStatics (c$,\r
-"CODON_ENCODING_BITSHIFT", 2);\r
+Clazz.declarePackage ("jalview.analysis");
+c$ = Clazz.declareType (jalview.analysis, "CodingUtils");
+c$.encodeCodon = Clazz.defineMethod (c$, "encodeCodon", 
+function (codon) {
+if (codon == null) {
+return -1;
+}return jalview.analysis.CodingUtils.encodeCodon (codon[2]) + (jalview.analysis.CodingUtils.encodeCodon (codon[1]) << 2) + (jalview.analysis.CodingUtils.encodeCodon (codon[0]) << (4));
+}, "~A");
+c$.encodeCodon = Clazz.defineMethod (c$, "encodeCodon", 
+function (c) {
+var result = -2147483648;
+switch (c) {
+case 'A':
+case 'a':
+result = 0;
+break;
+case 'C':
+case 'c':
+result = 1;
+break;
+case 'G':
+case 'g':
+result = 2;
+break;
+case 'T':
+case 't':
+case 'U':
+case 'u':
+result = 3;
+break;
+}
+return result;
+}, "~S");
+c$.decodeCodon = Clazz.defineMethod (c$, "decodeCodon", 
+function (encoded) {
+var result =  Clazz.newCharArray (3, '\0');
+result[2] = jalview.analysis.CodingUtils.decodeNucleotide (encoded & 3);
+encoded = encoded >>> 2;
+result[1] = jalview.analysis.CodingUtils.decodeNucleotide (encoded & 3);
+encoded = encoded >>> 2;
+result[0] = jalview.analysis.CodingUtils.decodeNucleotide (encoded & 3);
+return result;
+}, "~N");
+c$.decodeNucleotide = Clazz.defineMethod (c$, "decodeNucleotide", 
+function (i) {
+var result = '0';
+switch (i) {
+case 0:
+result = 'A';
+break;
+case 1:
+result = 'C';
+break;
+case 2:
+result = 'G';
+break;
+case 3:
+result = 'T';
+break;
+}
+return result;
+}, "~N");
+Clazz.defineStatics (c$,
+"CODON_ENCODING_BITSHIFT", 2);
index 7c07b92..afa4c8d 100644 (file)
@@ -1,21 +1,21 @@
-Clazz.declarePackage ("jalview.analysis");\r
-c$ = Clazz.declareType (jalview.analysis, "CodonComparator", null, java.util.Comparator);\r
-Clazz.overrideMethod (c$, "compare", \r
-function (ac1, ac2) {\r
-if (ac1 == null || ac2 == null || ac1.equals (ac2)) {\r
-return 0;\r
-}if (ac1.pos1 < ac2.pos1 && ac1.pos3 <= ac2.pos3) {\r
-return -1;\r
-}if (ac2.pos1 < ac1.pos1 && ac2.pos3 <= ac1.pos3) {\r
-return 1;\r
-}if (ac1.pos3 > ac2.pos3 && ac1.pos1 >= ac2.pos1) {\r
-return 1;\r
-}if (ac2.pos3 > ac1.pos3 && ac2.pos1 >= ac1.pos1) {\r
-return -1;\r
-}if (ac1.pos1 == ac2.pos1 && ac1.pos3 == ac2.pos3) {\r
-return Integer.compare (ac1.pos2, ac2.pos2);\r
-}var compareMiddles = Integer.compare (ac1.pos2, ac2.pos2);\r
-if (compareMiddles != 0) {\r
-return compareMiddles;\r
-}return Integer.compare (ac1.pos1, ac2.pos1);\r
-}, "jalview.datamodel.AlignedCodon,jalview.datamodel.AlignedCodon");\r
+Clazz.declarePackage ("jalview.analysis");
+c$ = Clazz.declareType (jalview.analysis, "CodonComparator", null, java.util.Comparator);
+Clazz.overrideMethod (c$, "compare", 
+function (ac1, ac2) {
+if (ac1 == null || ac2 == null || ac1.equals (ac2)) {
+return 0;
+}if (ac1.pos1 < ac2.pos1 && ac1.pos3 <= ac2.pos3) {
+return -1;
+}if (ac2.pos1 < ac1.pos1 && ac2.pos3 <= ac1.pos3) {
+return 1;
+}if (ac1.pos3 > ac2.pos3 && ac1.pos1 >= ac2.pos1) {
+return 1;
+}if (ac2.pos3 > ac1.pos3 && ac2.pos1 >= ac1.pos1) {
+return -1;
+}if (ac1.pos1 == ac2.pos1 && ac1.pos3 == ac2.pos3) {
+return Integer.compare (ac1.pos2, ac2.pos2);
+}var compareMiddles = Integer.compare (ac1.pos2, ac2.pos2);
+if (compareMiddles != 0) {
+return compareMiddles;
+}return Integer.compare (ac1.pos1, ac2.pos1);
+}, "jalview.datamodel.AlignedCodon,jalview.datamodel.AlignedCodon");
index c48157a..91e2340 100644 (file)
Binary files a/bin/jalview/analysis/Conservation.class and b/bin/jalview/analysis/Conservation.class differ
index 1a43b1a..aa95a73 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (null, "jalview.analysis.Conservation", ["jalview.datamodel.Annotation", "$.Sequence", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.awt.Color", "java.lang.Character", "$.Double", "$.StringBuffer", "java.util.Hashtable", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.sequences = null;\r
-this.start = 0;\r
-this.end = 0;\r
-this.seqNums = null;\r
-this.maxLength = 0;\r
-this.seqNumsChanged = false;\r
-this.total = null;\r
-this.canonicaliseAa = true;\r
-this.quality = null;\r
-this.qualityRange = null;\r
-this.consString = "";\r
-this.consSequence = null;\r
-this.propHash = null;\r
-this.threshold = 0;\r
-this.name = "";\r
-this.cons2 = null;\r
-this.consSymbs = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis, "Conservation");\r
-Clazz.prepareFields (c$, function () {\r
-this.qualityRange =  new Array (2);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (name, propHash, threshold, sequences, start, end) {\r
-this.name = name;\r
-this.propHash = propHash;\r
-this.threshold = threshold;\r
-this.start = start;\r
-this.end = end;\r
-this.maxLength = end - start + 1;\r
-var s;\r
-var sSize = sequences.size ();\r
-var sarray =  new Array (sSize);\r
-this.sequences = sarray;\r
-try {\r
-for (s = 0; s < sSize; s++) {\r
-sarray[s] = sequences.get (s);\r
-if (sarray[s].getLength () > this.maxLength) {\r
-this.maxLength = sarray[s].getLength ();\r
-}}\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, ArrayIndexOutOfBoundsException)) {\r
-this.sequences =  new Array (0);\r
-this.maxLength = 0;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}, "~S,java.util.Hashtable,~N,java.util.List,~N,~N");\r
-Clazz.defineMethod (c$, "calcSeqNum", \r
-($fz = function (i) {\r
-var sq = null;\r
-var sqnum = null;\r
-var sSize = this.sequences.length;\r
-if ((i > -1) && (i < sSize)) {\r
-sq = this.sequences[i].getSequenceAsString ();\r
-if (this.seqNums.size () <= i) {\r
-this.seqNums.addElement ( Clazz.newIntArray (sq.length + 1, 0));\r
-}if (sq.hashCode () != (this.seqNums.elementAt (i))[0]) {\r
-var j;\r
-var len;\r
-this.seqNumsChanged = true;\r
-len = sq.length;\r
-if (this.maxLength < len) {\r
-this.maxLength = len;\r
-}sqnum =  Clazz.newIntArray (len + 1, 0);\r
-sqnum[0] = sq.hashCode ();\r
-for (j = 1; j <= len; j++) {\r
-sqnum[j] = jalview.schemes.ResidueProperties.aaIndex[sq.charCodeAt (j - 1)];\r
-}\r
-this.seqNums.setElementAt (sqnum, i);\r
-} else {\r
-System.out.println ("SEQUENCE HAS BEEN DELETED!!!");\r
-}} else {\r
-System.err.println ("ERROR: calcSeqNum called with out of range sequence index for Alignment\n");\r
-}}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "calculate", \r
-function () {\r
-var resultHash;\r
-var ht;\r
-var thresh;\r
-var j;\r
-var jSize = this.sequences.length;\r
-var values;\r
-var type;\r
-var res = null;\r
-var c;\r
-var enumeration2;\r
-this.total =  new Array (this.maxLength);\r
-for (var i = this.start; i <= this.end; i++) {\r
-values =  Clazz.newIntArray (255, 0);\r
-for (j = 0; j < jSize; j++) {\r
-if (this.sequences[j].getLength () > i) {\r
-c = this.sequences[j].getCharAt (i);\r
-if (this.canonicaliseAa) {\r
-c = String.fromCharCode (jalview.schemes.ResidueProperties.aaIndex[this.sequences[j].getCharAt (i).charCodeAt (0)]);\r
-if (c.charCodeAt (0) > 20) {\r
-c = '-';\r
-} else {\r
-c = jalview.schemes.ResidueProperties.aa[c.charCodeAt (0)].charAt (0);\r
-}} else {\r
-if (c == '.' || c == ' ') {\r
-c = '-';\r
-}if (!this.canonicaliseAa && 'a' <= c && c <= 'z') {\r
-c = String.fromCharCode (c.charCodeAt (0) - (32));\r
-}}values[c.charCodeAt (0)]++;\r
-} else {\r
-values['-'.charCodeAt (0)]++;\r
-}}\r
-thresh = Clazz.doubleToInt ((this.threshold * (jSize)) / 100);\r
-resultHash =  new java.util.Hashtable ();\r
-for (var v = '-'; v < 'Z'; v = String.fromCharCode (v.charCodeAt (0) + 1)) {\r
-if (values[v.charCodeAt (0)] > thresh) {\r
-res = String.valueOf (v);\r
-enumeration2 = this.propHash.keys ();\r
-while (enumeration2.hasMoreElements ()) {\r
-type = enumeration2.nextElement ();\r
-ht = this.propHash.get (type);\r
-if (!resultHash.containsKey (type)) {\r
-if (ht.containsKey (res)) {\r
-resultHash.put (type, ht.get (res));\r
-} else {\r
-resultHash.put (type, ht.get ("-"));\r
-}} else if ((resultHash.get (type)).equals (ht.get (res)) == false) {\r
-resultHash.put (type,  new Integer (-1));\r
-}}\r
-}}\r
-if (this.total.length > 0) {\r
-this.total[i - this.start] = resultHash;\r
-}}\r
-});\r
-Clazz.defineMethod (c$, "countConsNGaps", \r
-function (j) {\r
-var count = 0;\r
-var cons = 0;\r
-var nres = 0;\r
-var r =  Clazz.newIntArray (2, 0);\r
-var f = '$';\r
-var i;\r
-var iSize = this.sequences.length;\r
-var c;\r
-for (i = 0; i < iSize; i++) {\r
-if (j >= this.sequences[i].getLength ()) {\r
-count++;\r
-continue;\r
-}c = this.sequences[i].getCharAt (j);\r
-if (jalview.util.Comparison.isGap ((c))) {\r
-count++;\r
-} else {\r
-nres++;\r
-if (nres == 1) {\r
-f = c;\r
-cons++;\r
-} else if (f == c) {\r
-cons++;\r
-}}}\r
-r[0] = (nres == cons) ? 1 : 0;\r
-r[1] = count;\r
-return r;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "verdict", \r
-function (consflag, percentageGaps) {\r
-var consString =  new StringBuffer ();\r
-var type;\r
-var result;\r
-var gapcons;\r
-var totGaps;\r
-var count;\r
-var pgaps;\r
-var resultHash;\r
-var enumeration;\r
-for (var i = 0; i < this.start; i++) {\r
-consString.append ('-');\r
-}\r
-this.consSymbs =  new Array (this.end - this.start + 1);\r
-for (var i = this.start; i <= this.end; i++) {\r
-gapcons = this.countConsNGaps (i);\r
-totGaps = gapcons[1];\r
-pgaps = (totGaps * 100) / this.sequences.length;\r
-this.consSymbs[i - this.start] =  String.instantialize ();\r
-if (percentageGaps > pgaps) {\r
-resultHash = this.total[i - this.start];\r
-count = 0;\r
-enumeration = resultHash.keys ();\r
-while (enumeration.hasMoreElements ()) {\r
-type = enumeration.nextElement ();\r
-result = resultHash.get (type);\r
-if (consflag) {\r
-if (result.intValue () == 1) {\r
-this.consSymbs[i - this.start] = type + " " + this.consSymbs[i - this.start];\r
-count++;\r
-}} else {\r
-if (result.intValue () != -1) {\r
-{\r
-if (result.intValue () == 0) {\r
-this.consSymbs[i - this.start] = this.consSymbs[i - this.start] + " !" + type;\r
-} else {\r
-this.consSymbs[i - this.start] = type + " " + this.consSymbs[i - this.start];\r
-}}count++;\r
-}}}\r
-if (count < 10) {\r
-{\r
-consString.append(""+count);\r
-}} else {\r
-consString.append ((gapcons[0] == 1) ? "*" : "+");\r
-}} else {\r
-consString.append ('-');\r
-}}\r
-this.consSequence =  new jalview.datamodel.Sequence (this.name, consString.toString (), this.start, this.end);\r
-}, "~B,~N");\r
-Clazz.defineMethod (c$, "getConsSequence", \r
-function () {\r
-return this.consSequence;\r
-});\r
-Clazz.defineMethod (c$, "findQuality", \r
-function () {\r
-this.findQuality (0, this.maxLength - 1);\r
-});\r
-Clazz.defineMethod (c$, "percentIdentity2", \r
-($fz = function () {\r
-this.seqNums =  new java.util.Vector ();\r
-var i = 0;\r
-var iSize = this.sequences.length;\r
-for (i = 0; i < iSize; i++) {\r
-this.calcSeqNum (i);\r
-}\r
-if ((this.cons2 == null) || this.seqNumsChanged) {\r
-this.cons2 =  Clazz.newIntArray (this.maxLength, 24, 0);\r
-for (var j = 0; j < 24; j++) {\r
-for (i = 0; i < this.maxLength; i++) {\r
-this.cons2[i][j] = 0;\r
-}\r
-}\r
-var sqnum;\r
-var j = 0;\r
-while (j < this.sequences.length) {\r
-sqnum = this.seqNums.elementAt (j);\r
-for (i = 1; i < sqnum.length; i++) {\r
-this.cons2[i - 1][sqnum[i]]++;\r
-}\r
-for (i = sqnum.length - 1; i < this.maxLength; i++) {\r
-this.cons2[i][23]++;\r
-}\r
-j++;\r
-}\r
-}}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "findQuality", \r
-function (start, end) {\r
-this.quality =  new java.util.Vector ();\r
-var max = -10000;\r
-var BLOSUM62 = jalview.schemes.ResidueProperties.getBLOSUM62 ();\r
-this.percentIdentity2 ();\r
-var size = this.seqNums.size ();\r
-var lengths =  Clazz.newIntArray (size, 0);\r
-var tot;\r
-var bigtot;\r
-var sr;\r
-var tmp;\r
-var x;\r
-var xx;\r
-var l;\r
-var j;\r
-var i;\r
-var ii;\r
-var i2;\r
-var k;\r
-var seqNum;\r
-for (l = 0; l < size; l++) {\r
-lengths[l] = (this.seqNums.elementAt (l)).length - 1;\r
-}\r
-for (j = start; j <= end; j++) {\r
-bigtot = 0;\r
-x =  Clazz.newDoubleArray (24, 0);\r
-for (ii = 0; ii < 24; ii++) {\r
-x[ii] = 0;\r
-for (i2 = 0; i2 < 24; i2++) {\r
-x[ii] += ((this.cons2[j][i2] * BLOSUM62[ii][i2]) + 4);\r
-}\r
-x[ii] /= size;\r
-}\r
-for (k = 0; k < size; k++) {\r
-tot = 0;\r
-xx =  Clazz.newDoubleArray (24, 0);\r
-seqNum = (j < lengths[k]) ? (this.seqNums.elementAt (k))[j + 1] : 23;\r
-for (i = 0; i < 23; i++) {\r
-sr = 0;\r
-sr = BLOSUM62[i][seqNum] + 4;\r
-xx[i] = x[i] - sr;\r
-tot += (xx[i] * xx[i]);\r
-}\r
-bigtot += Math.sqrt (tot);\r
-}\r
-if (max < bigtot) {\r
-max = bigtot;\r
-}this.quality.addElement ( new Double (bigtot));\r
-}\r
-var newmax = -10000;\r
-for (j = start; j <= end; j++) {\r
-tmp = (this.quality.elementAt (j)).doubleValue ();\r
-tmp = ((max - tmp) * (size - this.cons2[j][23])) / size;\r
-this.quality.setElementAt ( new Double (tmp), j);\r
-if (tmp > newmax) {\r
-newmax = tmp;\r
-}}\r
-this.qualityRange[0] =  new Double (0);\r
-this.qualityRange[1] =  new Double (newmax);\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "completeAnnotations", \r
-function (conservation, quality2, istart, alWidth) {\r
-var sequence = this.getConsSequence ().getSequence ();\r
-var minR;\r
-var minG;\r
-var minB;\r
-var maxR;\r
-var maxG;\r
-var maxB;\r
-minR = 0.3;\r
-minG = 0.0;\r
-minB = 0;\r
-maxR = 1.0 - minR;\r
-maxG = 0.9 - minG;\r
-maxB = 0 - minB;\r
-var min = 0;\r
-var max = 11;\r
-var qmin = 0;\r
-var qmax = 0;\r
-var c;\r
-if (conservation.annotations != null && conservation.annotations.length < alWidth) {\r
-conservation.annotations =  new Array (alWidth);\r
-}if (quality2 != null) {\r
-quality2.graphMax = this.qualityRange[1].floatValue ();\r
-if (quality2.annotations != null && quality2.annotations.length < alWidth) {\r
-quality2.annotations =  new Array (alWidth);\r
-}qmin = this.qualityRange[0].floatValue ();\r
-qmax = this.qualityRange[1].floatValue ();\r
-}for (var i = 0; i < alWidth; i++) {\r
-var value = 0;\r
-c = sequence[i];\r
-if (Character.isDigit (c)) {\r
-value = c.charCodeAt (0) - 48;\r
-} else if (c == '*') {\r
-value = 11;\r
-} else if (c == '+') {\r
-value = 10;\r
-}var vprop = value - min;\r
-vprop /= max;\r
-conservation.annotations[i] =  new jalview.datamodel.Annotation (String.valueOf (c), this.consSymbs[i - this.start], ' ', value,  new java.awt.Color (minR + (maxR * vprop), minG + (maxG * vprop), minB + (maxB * vprop)));\r
-if (quality2 != null) {\r
-value = (this.quality.elementAt (i)).floatValue ();\r
-vprop = value - qmin;\r
-vprop /= qmax;\r
-quality2.annotations[i] =  new jalview.datamodel.Annotation (" ", String.valueOf (value), ' ', value,  new java.awt.Color (minR + (maxR * vprop), minG + (maxG * vprop), minB + (maxB * vprop)));\r
-}}\r
-}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation,~N,~N");\r
-c$.calculateConservation = Clazz.defineMethod (c$, "calculateConservation", \r
-function (name, consHash, threshold, seqs, start, end, posOrNeg, consPercGaps, calcQuality) {\r
-var cons =  new jalview.analysis.Conservation (name, consHash, threshold, seqs, start, end);\r
-return jalview.analysis.Conservation.calculateConservation (cons, posOrNeg, consPercGaps, calcQuality);\r
-}, "~S,java.util.Hashtable,~N,java.util.List,~N,~N,~B,~N,~B");\r
-c$.calculateConservation = Clazz.defineMethod (c$, "calculateConservation", \r
-function (cons, b, consPercGaps, calcQuality) {\r
-cons.calculate ();\r
-cons.verdict (b, consPercGaps);\r
-if (calcQuality) {\r
-cons.findQuality ();\r
-}return cons;\r
-}, "jalview.analysis.Conservation,~B,~N,~B");\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (null, "jalview.analysis.Conservation", ["jalview.datamodel.Annotation", "$.Sequence", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.awt.Color", "java.lang.Character", "$.Double", "$.StringBuffer", "java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.sequences = null;
+this.start = 0;
+this.end = 0;
+this.seqNums = null;
+this.maxLength = 0;
+this.seqNumsChanged = false;
+this.total = null;
+this.canonicaliseAa = true;
+this.quality = null;
+this.qualityRange = null;
+this.consString = "";
+this.consSequence = null;
+this.propHash = null;
+this.threshold = 0;
+this.name = "";
+this.cons2 = null;
+this.consSymbs = null;
+Clazz.instantialize (this, arguments);
+}, jalview.analysis, "Conservation");
+Clazz.prepareFields (c$, function () {
+this.qualityRange =  new Array (2);
+});
+Clazz.makeConstructor (c$, 
+function (name, propHash, threshold, sequences, start, end) {
+this.name = name;
+this.propHash = propHash;
+this.threshold = threshold;
+this.start = start;
+this.end = end;
+this.maxLength = end - start + 1;
+var s;
+var sSize = sequences.size ();
+var sarray =  new Array (sSize);
+this.sequences = sarray;
+try {
+for (s = 0; s < sSize; s++) {
+sarray[s] = sequences.get (s);
+if (sarray[s].getLength () > this.maxLength) {
+this.maxLength = sarray[s].getLength ();
+}}
+} catch (ex) {
+if (Clazz.exceptionOf (ex, ArrayIndexOutOfBoundsException)) {
+this.sequences =  new Array (0);
+this.maxLength = 0;
+} else {
+throw ex;
+}
+}
+}, "~S,java.util.Hashtable,~N,java.util.List,~N,~N");
+Clazz.defineMethod (c$, "calcSeqNum", 
+($fz = function (i) {
+var sq = null;
+var sqnum = null;
+var sSize = this.sequences.length;
+if ((i > -1) && (i < sSize)) {
+sq = this.sequences[i].getSequenceAsString ();
+if (this.seqNums.size () <= i) {
+this.seqNums.addElement ( Clazz.newIntArray (sq.length + 1, 0));
+}if (sq.hashCode () != (this.seqNums.elementAt (i))[0]) {
+var j;
+var len;
+this.seqNumsChanged = true;
+len = sq.length;
+if (this.maxLength < len) {
+this.maxLength = len;
+}sqnum =  Clazz.newIntArray (len + 1, 0);
+sqnum[0] = sq.hashCode ();
+for (j = 1; j <= len; j++) {
+sqnum[j] = jalview.schemes.ResidueProperties.aaIndex[sq.charCodeAt (j - 1)];
+}
+this.seqNums.setElementAt (sqnum, i);
+} else {
+System.out.println ("SEQUENCE HAS BEEN DELETED!!!");
+}} else {
+System.err.println ("ERROR: calcSeqNum called with out of range sequence index for Alignment\n");
+}}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "calculate", 
+function () {
+var resultHash;
+var ht;
+var thresh;
+var j;
+var jSize = this.sequences.length;
+var values;
+var type;
+var res = null;
+var c;
+var enumeration2;
+this.total =  new Array (this.maxLength);
+for (var i = this.start; i <= this.end; i++) {
+values =  Clazz.newIntArray (255, 0);
+for (j = 0; j < jSize; j++) {
+if (this.sequences[j].getLength () > i) {
+c = this.sequences[j].getCharAt (i);
+if (this.canonicaliseAa) {
+c = String.fromCharCode (jalview.schemes.ResidueProperties.aaIndex[this.sequences[j].getCharAt (i).charCodeAt (0)]);
+if (c.charCodeAt (0) > 20) {
+c = '-';
+} else {
+c = jalview.schemes.ResidueProperties.aa[c.charCodeAt (0)].charAt (0);
+}} else {
+if (c == '.' || c == ' ') {
+c = '-';
+}if (!this.canonicaliseAa && 'a' <= c && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) - (32));
+}}values[c.charCodeAt (0)]++;
+} else {
+values['-'.charCodeAt (0)]++;
+}}
+thresh = Clazz.doubleToInt ((this.threshold * (jSize)) / 100);
+resultHash =  new java.util.Hashtable ();
+for (var v = '-'; v < 'Z'; v = String.fromCharCode (v.charCodeAt (0) + 1)) {
+if (values[v.charCodeAt (0)] > thresh) {
+res = String.valueOf (v);
+enumeration2 = this.propHash.keys ();
+while (enumeration2.hasMoreElements ()) {
+type = enumeration2.nextElement ();
+ht = this.propHash.get (type);
+if (!resultHash.containsKey (type)) {
+if (ht.containsKey (res)) {
+resultHash.put (type, ht.get (res));
+} else {
+resultHash.put (type, ht.get ("-"));
+}} else if ((resultHash.get (type)).equals (ht.get (res)) == false) {
+resultHash.put (type,  new Integer (-1));
+}}
+}}
+if (this.total.length > 0) {
+this.total[i - this.start] = resultHash;
+}}
+});
+Clazz.defineMethod (c$, "countConsNGaps", 
+function (j) {
+var count = 0;
+var cons = 0;
+var nres = 0;
+var r =  Clazz.newIntArray (2, 0);
+var f = '$';
+var i;
+var iSize = this.sequences.length;
+var c;
+for (i = 0; i < iSize; i++) {
+if (j >= this.sequences[i].getLength ()) {
+count++;
+continue;
+}c = this.sequences[i].getCharAt (j);
+if (jalview.util.Comparison.isGap ((c))) {
+count++;
+} else {
+nres++;
+if (nres == 1) {
+f = c;
+cons++;
+} else if (f == c) {
+cons++;
+}}}
+r[0] = (nres == cons) ? 1 : 0;
+r[1] = count;
+return r;
+}, "~N");
+Clazz.defineMethod (c$, "verdict", 
+function (consflag, percentageGaps) {
+var consString =  new StringBuffer ();
+var type;
+var result;
+var gapcons;
+var totGaps;
+var count;
+var pgaps;
+var resultHash;
+var enumeration;
+for (var i = 0; i < this.start; i++) {
+consString.append ('-');
+}
+this.consSymbs =  new Array (this.end - this.start + 1);
+for (var i = this.start; i <= this.end; i++) {
+gapcons = this.countConsNGaps (i);
+totGaps = gapcons[1];
+pgaps = (totGaps * 100) / this.sequences.length;
+this.consSymbs[i - this.start] =  String.instantialize ();
+if (percentageGaps > pgaps) {
+resultHash = this.total[i - this.start];
+count = 0;
+enumeration = resultHash.keys ();
+while (enumeration.hasMoreElements ()) {
+type = enumeration.nextElement ();
+result = resultHash.get (type);
+if (consflag) {
+if (result.intValue () == 1) {
+this.consSymbs[i - this.start] = type + " " + this.consSymbs[i - this.start];
+count++;
+}} else {
+if (result.intValue () != -1) {
+{
+if (result.intValue () == 0) {
+this.consSymbs[i - this.start] = this.consSymbs[i - this.start] + " !" + type;
+} else {
+this.consSymbs[i - this.start] = type + " " + this.consSymbs[i - this.start];
+}}count++;
+}}}
+if (count < 10) {
+consString.append ("" + count);
+} else {
+consString.append ((gapcons[0] == 1) ? "*" : "+");
+}} else {
+consString.append ('-');
+}}
+this.consSequence =  new jalview.datamodel.Sequence (this.name, consString.toString (), this.start, this.end);
+}, "~B,~N");
+Clazz.defineMethod (c$, "getConsSequence", 
+function () {
+return this.consSequence;
+});
+Clazz.defineMethod (c$, "findQuality", 
+function () {
+this.findQuality (0, this.maxLength - 1);
+});
+Clazz.defineMethod (c$, "percentIdentity2", 
+($fz = function () {
+this.seqNums =  new java.util.Vector ();
+var i = 0;
+var iSize = this.sequences.length;
+for (i = 0; i < iSize; i++) {
+this.calcSeqNum (i);
+}
+if ((this.cons2 == null) || this.seqNumsChanged) {
+this.cons2 =  Clazz.newIntArray (this.maxLength, 24, 0);
+for (var j = 0; j < 24; j++) {
+for (i = 0; i < this.maxLength; i++) {
+this.cons2[i][j] = 0;
+}
+}
+var sqnum;
+var j = 0;
+while (j < this.sequences.length) {
+sqnum = this.seqNums.elementAt (j);
+for (i = 1; i < sqnum.length; i++) {
+this.cons2[i - 1][sqnum[i]]++;
+}
+for (i = sqnum.length - 1; i < this.maxLength; i++) {
+this.cons2[i][23]++;
+}
+j++;
+}
+}}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "findQuality", 
+function (start, end) {
+this.quality =  new java.util.Vector ();
+var max = -10000;
+var BLOSUM62 = jalview.schemes.ResidueProperties.getBLOSUM62 ();
+this.percentIdentity2 ();
+var size = this.seqNums.size ();
+var lengths =  Clazz.newIntArray (size, 0);
+var tot;
+var bigtot;
+var sr;
+var tmp;
+var x;
+var xx;
+var l;
+var j;
+var i;
+var ii;
+var i2;
+var k;
+var seqNum;
+for (l = 0; l < size; l++) {
+lengths[l] = (this.seqNums.elementAt (l)).length - 1;
+}
+for (j = start; j <= end; j++) {
+bigtot = 0;
+x =  Clazz.newDoubleArray (24, 0);
+for (ii = 0; ii < 24; ii++) {
+x[ii] = 0;
+for (i2 = 0; i2 < 24; i2++) {
+x[ii] += ((this.cons2[j][i2] * BLOSUM62[ii][i2]) + 4);
+}
+x[ii] /= size;
+}
+for (k = 0; k < size; k++) {
+tot = 0;
+xx =  Clazz.newDoubleArray (24, 0);
+seqNum = (j < lengths[k]) ? (this.seqNums.elementAt (k))[j + 1] : 23;
+for (i = 0; i < 23; i++) {
+sr = 0;
+sr = BLOSUM62[i][seqNum] + 4;
+xx[i] = x[i] - sr;
+tot += (xx[i] * xx[i]);
+}
+bigtot += Math.sqrt (tot);
+}
+if (max < bigtot) {
+max = bigtot;
+}this.quality.addElement ( new Double (bigtot));
+}
+var newmax = -10000;
+for (j = start; j <= end; j++) {
+tmp = (this.quality.elementAt (j)).doubleValue ();
+tmp = ((max - tmp) * (size - this.cons2[j][23])) / size;
+this.quality.setElementAt ( new Double (tmp), j);
+if (tmp > newmax) {
+newmax = tmp;
+}}
+this.qualityRange[0] =  new Double (0);
+this.qualityRange[1] =  new Double (newmax);
+}, "~N,~N");
+Clazz.defineMethod (c$, "completeAnnotations", 
+function (conservation, quality2, istart, alWidth) {
+var sequence = this.getConsSequence ().getSequence ();
+var minR;
+var minG;
+var minB;
+var maxR;
+var maxG;
+var maxB;
+minR = 0.3;
+minG = 0.0;
+minB = 0;
+maxR = 1.0 - minR;
+maxG = 0.9 - minG;
+maxB = 0 - minB;
+var min = 0;
+var max = 11;
+var qmin = 0;
+var qmax = 0;
+var c;
+if (conservation.annotations != null && conservation.annotations.length < alWidth) {
+conservation.annotations =  new Array (alWidth);
+}if (quality2 != null) {
+quality2.graphMax = this.qualityRange[1].floatValue ();
+if (quality2.annotations != null && quality2.annotations.length < alWidth) {
+quality2.annotations =  new Array (alWidth);
+}qmin = this.qualityRange[0].floatValue ();
+qmax = this.qualityRange[1].floatValue ();
+}for (var i = 0; i < alWidth; i++) {
+var value = 0;
+c = sequence[i];
+if (Character.isDigit (c)) {
+value = c.charCodeAt (0) - 48;
+} else if (c == '*') {
+value = 11;
+} else if (c == '+') {
+value = 10;
+}var vprop = value - min;
+vprop /= max;
+conservation.annotations[i] =  new jalview.datamodel.Annotation (String.valueOf (c), this.consSymbs[i - this.start], ' ', value,  new java.awt.Color (minR + (maxR * vprop), minG + (maxG * vprop), minB + (maxB * vprop)));
+if (quality2 != null) {
+value = (this.quality.elementAt (i)).floatValue ();
+vprop = value - qmin;
+vprop /= qmax;
+quality2.annotations[i] =  new jalview.datamodel.Annotation (" ", String.valueOf (value), ' ', value,  new java.awt.Color (minR + (maxR * vprop), minG + (maxG * vprop), minB + (maxB * vprop)));
+}}
+}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation,~N,~N");
+c$.calculateConservation = Clazz.defineMethod (c$, "calculateConservation", 
+function (name, consHash, threshold, seqs, start, end, posOrNeg, consPercGaps, calcQuality) {
+var cons =  new jalview.analysis.Conservation (name, consHash, threshold, seqs, start, end);
+return jalview.analysis.Conservation.calculateConservation (cons, posOrNeg, consPercGaps, calcQuality);
+}, "~S,java.util.Hashtable,~N,java.util.List,~N,~N,~B,~N,~B");
+c$.calculateConservation = Clazz.defineMethod (c$, "calculateConservation", 
+function (cons, b, consPercGaps, calcQuality) {
+cons.calculate ();
+cons.verdict (b, consPercGaps);
+if (calcQuality) {
+cons.findQuality ();
+}return cons;
+}, "jalview.analysis.Conservation,~B,~N,~B");
+});
index 3ae87d0..23cc7cb 100644 (file)
Binary files a/bin/jalview/analysis/Dna.class and b/bin/jalview/analysis/Dna.class differ
index 68086a9..57c052f 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (["jalview.analysis.CodonComparator"], "jalview.analysis.Dna", ["jalview.datamodel.AlignedCodon", "$.AlignedCodonFrame", "$.Alignment", "$.AlignmentAnnotation", "$.Annotation", "$.DBRefSource", "$.FeatureProperties", "$.GraphLine", "$.Sequence", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "$.DBRefUtils", "$.MapList", "$.ShiftList", "java.lang.IllegalStateException", "$.StringBuilder", "java.util.ArrayList", "$.Arrays"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.selection = null;\r
-this.seqstring = null;\r
-this.contigs = null;\r
-this.gapChar = '\0';\r
-this.annotations = null;\r
-this.dnaWidth = 0;\r
-this.dataset = null;\r
-this.aaWidth = 0;\r
-this.alignedCodons = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis, "Dna");\r
-Clazz.makeConstructor (c$, \r
-function (viewport, visibleContigs) {\r
-this.selection = java.util.Arrays.asList (viewport.getSequenceSelection ());\r
-this.seqstring = viewport.getViewAsString (true);\r
-this.contigs = visibleContigs;\r
-this.gapChar = viewport.getGapCharacter ();\r
-this.annotations = viewport.getAlignment ().getAlignmentAnnotation ();\r
-this.dnaWidth = viewport.getAlignment ().getWidth ();\r
-this.dataset = viewport.getAlignment ().getDataset ();\r
-}, "jalview.api.AlignViewportI,~A");\r
-c$.compareCodonPos = Clazz.defineMethod (c$, "compareCodonPos", \r
-function (ac1, ac2) {\r
-return jalview.analysis.Dna.comparator.compare (ac1, ac2);\r
-}, "jalview.datamodel.AlignedCodon,jalview.datamodel.AlignedCodon");\r
-Clazz.defineMethod (c$, "translateCdna", \r
-function () {\r
-var acf =  new jalview.datamodel.AlignedCodonFrame ();\r
-this.alignedCodons =  new Array (this.dnaWidth);\r
-var s;\r
-var sSize = this.selection.size ();\r
-var pepseqs =  new java.util.ArrayList ();\r
-for (s = 0; s < sSize; s++) {\r
-var newseq = this.translateCodingRegion (this.selection.get (s), this.seqstring[s], acf, pepseqs);\r
-if (newseq != null) {\r
-pepseqs.add (newseq);\r
-var ds = newseq;\r
-if (this.dataset != null) {\r
-while (ds.getDatasetSequence () != null) {\r
-ds = ds.getDatasetSequence ();\r
-}\r
-this.dataset.addSequence (ds);\r
-}}}\r
-var newseqs = pepseqs.toArray ( new Array (pepseqs.size ()));\r
-var al =  new jalview.datamodel.Alignment (newseqs);\r
-al.padGaps ();\r
-al.setDataset (this.dataset);\r
-this.translateAlignedAnnotations (al, acf);\r
-al.addCodonFrame (acf);\r
-return al;\r
-});\r
-c$.canTranslate = Clazz.defineMethod (c$, "canTranslate", \r
-function (selection, viscontigs) {\r
-for (var gd = 0; gd < selection.length; gd++) {\r
-var dna = selection[gd];\r
-var dnarefs = jalview.util.DBRefUtils.selectRefs (dna.getDBRef (), jalview.datamodel.DBRefSource.DNACODINGDBS);\r
-if (dnarefs != null) {\r
-var mappedrefs =  new java.util.ArrayList ();\r
-var refs = dna.getDBRef ();\r
-for (var d = 0; d < refs.length; d++) {\r
-if (refs[d].getMap () != null && refs[d].getMap ().getMap () != null && refs[d].getMap ().getMap ().getFromRatio () == 3 && refs[d].getMap ().getMap ().getToRatio () == 1) {\r
-mappedrefs.add (refs[d]);\r
-}}\r
-dnarefs = mappedrefs.toArray ( new Array (mappedrefs.size ()));\r
-for (var d = 0; d < dnarefs.length; d++) {\r
-var mp = dnarefs[d].getMap ();\r
-if (mp != null) {\r
-for (var vc = 0; vc < viscontigs.length; vc += 2) {\r
-var mpr = mp.locateMappedRange (viscontigs[vc], viscontigs[vc + 1]);\r
-if (mpr != null) {\r
-return true;\r
-}}\r
-}}\r
-}}\r
-return false;\r
-}, "~A,~A");\r
-Clazz.defineMethod (c$, "translateAlignedAnnotations", \r
-function (al, acf) {\r
-if (this.annotations != null) {\r
-for (var annotation, $annotation = 0, $$annotation = this.annotations; $annotation < $$annotation.length && ((annotation = $$annotation[$annotation]) || true); $annotation++) {\r
-if (annotation.autoCalculated || !annotation.visible || annotation.isRNA ()) {\r
-continue;\r
-}var aSize = this.aaWidth;\r
-var anots = (annotation.annotations == null) ? null :  new Array (aSize);\r
-if (anots != null) {\r
-for (var a = 0; a < aSize; a++) {\r
-if (a < this.alignedCodons.length && this.alignedCodons[a] != null && this.alignedCodons[a].pos1 == (this.alignedCodons[a].pos3 - 2)) {\r
-anots[a] = jalview.analysis.Dna.getCodonAnnotation (this.alignedCodons[a], annotation.annotations);\r
-}}\r
-}var aa =  new jalview.datamodel.AlignmentAnnotation (annotation.label, annotation.description, anots);\r
-aa.graph = annotation.graph;\r
-aa.graphGroup = annotation.graphGroup;\r
-aa.graphHeight = annotation.graphHeight;\r
-if (annotation.getThreshold () != null) {\r
-aa.setThreshold ( new jalview.datamodel.GraphLine (annotation.getThreshold ()));\r
-}if (annotation.$hasScore) {\r
-aa.setScore (annotation.getScore ());\r
-}var seqRef = annotation.sequenceRef;\r
-if (seqRef != null) {\r
-var aaSeq = acf.getAaForDnaSeq (seqRef);\r
-if (aaSeq != null) {\r
-aa.setSequenceRef (aaSeq);\r
-aa.createSequenceMapping (aaSeq, aaSeq.getStart (), true);\r
-aa.adjustForAlignment ();\r
-aaSeq.addAlignmentAnnotation (aa);\r
-}}al.addAnnotation (aa);\r
-}\r
-}}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignedCodonFrame");\r
-c$.getCodonAnnotation = Clazz.defineMethod (c$, "getCodonAnnotation", \r
-($fz = function (is, annotations) {\r
-var contrib = 0;\r
-var annot = null;\r
-for (var p = 1; p <= 3; p++) {\r
-var dnaCol = is.getBaseColumn (p);\r
-if (annotations[dnaCol] != null) {\r
-if (annot == null) {\r
-annot =  new jalview.datamodel.Annotation (annotations[dnaCol]);\r
-contrib = 1;\r
-} else {\r
-var cpy =  new jalview.datamodel.Annotation (annotations[dnaCol]);\r
-if (annot.colour == null) {\r
-annot.colour = cpy.colour;\r
-}if (annot.description == null || annot.description.length == 0) {\r
-annot.description = cpy.description;\r
-}if (annot.displayCharacter == null) {\r
-annot.displayCharacter = cpy.displayCharacter;\r
-}if (annot.secondaryStructure.charCodeAt (0) == 0) {\r
-annot.secondaryStructure = cpy.secondaryStructure;\r
-}annot.value += cpy.value;\r
-contrib++;\r
-}}}\r
-if (contrib > 1) {\r
-annot.value /= contrib;\r
-}return annot;\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignedCodon,~A");\r
-Clazz.defineMethod (c$, "translateCodingRegion", \r
-function (selection, seqstring, acf, proteinSeqs) {\r
-var skip =  new java.util.ArrayList ();\r
-var skipint = null;\r
-var vismapping =  new jalview.util.ShiftList ();\r
-var vc;\r
-var scontigs =  Clazz.newIntArray (this.contigs.length, 0);\r
-var npos = 0;\r
-for (vc = 0; vc < this.contigs.length; vc += 2) {\r
-if (vc == 0) {\r
-vismapping.addShift (npos, this.contigs[vc]);\r
-} else {\r
-vismapping.addShift (npos, this.contigs[vc] - this.contigs[vc - 1] + 1);\r
-}scontigs[vc] = this.contigs[vc];\r
-scontigs[vc + 1] = this.contigs[vc + 1];\r
-}\r
-var protein =  new StringBuilder (Clazz.doubleToInt (seqstring.length / 2));\r
-var seq = seqstring.$replace ('U', 'T').$replace ('u', 'T');\r
-var codon =  Clazz.newCharArray (3, '\0');\r
-var cdp =  Clazz.newIntArray (3, 0);\r
-var rf = 0;\r
-var lastnpos = 0;\r
-var nend;\r
-var aspos = 0;\r
-var resSize = 0;\r
-for (npos = 0, nend = seq.length; npos < nend; npos++) {\r
-if (!jalview.util.Comparison.isGap (seq.charAt (npos))) {\r
-cdp[rf] = npos;\r
-codon[rf++] = seq.charAt (npos);\r
-}if (rf == 3) {\r
-var alignedCodon =  new jalview.datamodel.AlignedCodon (cdp[0], cdp[1], cdp[2]);\r
-var aa = jalview.schemes.ResidueProperties.codonTranslate ( String.instantialize (codon));\r
-rf = 0;\r
-var gapString = String.valueOf (this.gapChar);\r
-if (aa == null) {\r
-aa = gapString;\r
-if (skipint == null) {\r
-skipint =  Clazz.newIntArray (-1, [alignedCodon.pos1, alignedCodon.pos3]);\r
-}skipint[1] = alignedCodon.pos3;\r
-} else {\r
-if (skipint != null) {\r
-skipint[0] = vismapping.shift (skipint[0]);\r
-skipint[1] = vismapping.shift (skipint[1]);\r
-for (vc = 0; vc < scontigs.length; ) {\r
-if (scontigs[vc + 1] < skipint[0]) {\r
-vc += 2;\r
-continue;\r
-}if (scontigs[vc] > skipint[1]) {\r
-break;\r
-}var t;\r
-if (scontigs[vc] <= skipint[0]) {\r
-if (skipint[0] == scontigs[vc]) {\r
-if (scontigs[vc + 1] > skipint[1]) {\r
-scontigs[vc] = skipint[1];\r
-vc += 2;\r
-} else {\r
-if (scontigs[vc + 1] == skipint[1]) {\r
-t =  Clazz.newIntArray (scontigs.length - 2, 0);\r
-if (vc > 0) {\r
-System.arraycopy (scontigs, 0, t, 0, vc - 1);\r
-}if (vc + 2 < t.length) {\r
-System.arraycopy (scontigs, vc + 2, t, vc, t.length - vc + 2);\r
-}scontigs = t;\r
-} else {\r
-scontigs[vc + 1] = skipint[0] - 1;\r
-vc += 2;\r
-}}} else {\r
-if (scontigs[vc + 1] < skipint[1]) {\r
-scontigs[vc + 1] = skipint[0] - 1;\r
-vc += 2;\r
-} else {\r
-t =  Clazz.newIntArray (scontigs.length + 2, 0);\r
-System.arraycopy (scontigs, 0, t, 0, vc + 1);\r
-t[vc + 1] = skipint[0];\r
-t[vc + 2] = skipint[1];\r
-System.arraycopy (scontigs, vc + 1, t, vc + 3, scontigs.length - (vc + 1));\r
-scontigs = t;\r
-vc += 4;\r
-}}}}\r
-skip.add (skipint);\r
-skipint = null;\r
-}if (aa.equals ("STOP")) {\r
-aa = "X";\r
-}resSize++;\r
-}var findpos = true;\r
-while (findpos) {\r
-var compareCodonPos = jalview.analysis.Dna.compareCodonPos (alignedCodon, this.alignedCodons[aspos]);\r
-switch (compareCodonPos) {\r
-case -1:\r
-this.insertAAGap (aspos, proteinSeqs);\r
-findpos = false;\r
-break;\r
-case 1:\r
-aa = gapString + aa;\r
-aspos++;\r
-break;\r
-case 0:\r
-findpos = false;\r
-}\r
-}\r
-protein.append (aa);\r
-lastnpos = npos;\r
-if (this.alignedCodons[aspos] == null) {\r
-this.alignedCodons[aspos] = alignedCodon;\r
-} else if (!this.alignedCodons[aspos].equals (alignedCodon)) {\r
-throw  new IllegalStateException ("Tried to coalign " + this.alignedCodons[aspos].toString () + " with " + alignedCodon.toString ());\r
-}if (aspos >= this.aaWidth) {\r
-this.aaWidth = aspos;\r
-}aspos++;\r
-}}\r
-if (resSize > 0) {\r
-var newseq =  new jalview.datamodel.Sequence (selection.getName (), protein.toString ());\r
-if (rf != 0) {\r
-var errMsg = "trimming contigs for incomplete terminal codon.";\r
-System.err.println ("trimming contigs for incomplete terminal codon.");\r
-vc = scontigs.length - 1;\r
-lastnpos = vismapping.shift (lastnpos);\r
-while (vc >= 0 && scontigs[vc] > lastnpos) {\r
-if (vc > 0 && scontigs[vc - 1] > lastnpos) {\r
-vc -= 2;\r
-} else {\r
-scontigs[vc] = lastnpos;\r
-}}\r
-if (vc > 0 && (vc + 1) < scontigs.length) {\r
-var t =  Clazz.newIntArray (vc + 1, 0);\r
-System.arraycopy (scontigs, 0, t, 0, vc + 1);\r
-scontigs = t;\r
-}if (vc <= 0) {\r
-scontigs = null;\r
-}}if (scontigs != null) {\r
-npos = 0;\r
-for (vc = 0; vc < scontigs.length; vc += 2) {\r
-scontigs[vc] = selection.findPosition (scontigs[vc]);\r
-scontigs[vc + 1] = selection.findPosition (scontigs[vc + 1]);\r
-if (scontigs[vc + 1] == selection.getEnd ()) {\r
-break;\r
-}}\r
-if ((vc + 2) < scontigs.length) {\r
-var t =  Clazz.newIntArray (vc + 2, 0);\r
-System.arraycopy (scontigs, 0, t, 0, vc + 2);\r
-scontigs = t;\r
-}var map =  new jalview.util.MapList (scontigs,  Clazz.newIntArray (-1, [1, resSize]), 3, 1);\r
-jalview.analysis.Dna.transferCodedFeatures (selection, newseq, map, null, null);\r
-var rseq = newseq.deriveSequence ();\r
-acf.addMap (selection, rseq, map);\r
-return rseq;\r
-}}return null;\r
-}, "jalview.datamodel.SequenceI,~S,jalview.datamodel.AlignedCodonFrame,java.util.List");\r
-Clazz.defineMethod (c$, "insertAAGap", \r
-function (pos, proteinSeqs) {\r
-this.aaWidth++;\r
-for (var seq, $seq = proteinSeqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-seq.insertCharAt (pos, this.gapChar);\r
-}\r
-this.checkCodonFrameWidth ();\r
-if (pos < this.aaWidth) {\r
-this.aaWidth++;\r
-System.arraycopy (this.alignedCodons, pos, this.alignedCodons, pos + 1, this.alignedCodons.length - pos - 1);\r
-this.alignedCodons[pos] = null;\r
-}}, "~N,java.util.List");\r
-Clazz.defineMethod (c$, "checkCodonFrameWidth", \r
-function () {\r
-if (this.alignedCodons[this.alignedCodons.length - 1] != null) {\r
-var c =  new Array (this.alignedCodons.length + 10);\r
-System.arraycopy (this.alignedCodons, 0, c, 0, this.alignedCodons.length);\r
-this.alignedCodons = c;\r
-}});\r
-c$.transferCodedFeatures = Clazz.defineMethod (c$, "transferCodedFeatures", \r
-($fz = function (dna, pep, map, featureTypes, featureGroups) {\r
-var sfs = dna.getSequenceFeatures ();\r
-var fgstate;\r
-var dnarefs = jalview.util.DBRefUtils.selectRefs (dna.getDBRef (), jalview.datamodel.DBRefSource.DNACODINGDBS);\r
-if (dnarefs != null) {\r
-for (var d = 0; d < dnarefs.length; d++) {\r
-var mp = dnarefs[d].getMap ();\r
-if (mp != null) {\r
-}}\r
-}if (sfs != null) {\r
-for (var sf, $sf = 0, $$sf = sfs; $sf < $$sf.length && ((sf = $$sf[$sf]) || true); $sf++) {\r
-fgstate = (featureGroups == null) ? null : featureGroups.get (sf.featureGroup);\r
-if ((featureTypes == null || featureTypes.containsKey (sf.getType ())) && (fgstate == null || fgstate.booleanValue ())) {\r
-if (jalview.datamodel.FeatureProperties.isCodingFeature (null, sf.getType ())) {\r
-{\r
-}}}}\r
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,jalview.util.MapList,java.util.Map,java.util.Map");\r
-Clazz.defineStatics (c$,\r
-"STOP_X", "X");\r
-c$.comparator = c$.prototype.comparator =  new jalview.analysis.CodonComparator ();\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (["jalview.analysis.CodonComparator"], "jalview.analysis.Dna", ["jalview.datamodel.AlignedCodon", "$.AlignedCodonFrame", "$.Alignment", "$.AlignmentAnnotation", "$.Annotation", "$.DBRefSource", "$.FeatureProperties", "$.GraphLine", "$.Sequence", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "$.DBRefUtils", "$.MapList", "$.ShiftList", "java.lang.IllegalStateException", "$.StringBuilder", "java.util.ArrayList", "$.Arrays"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.selection = null;
+this.seqstring = null;
+this.contigs = null;
+this.gapChar = '\0';
+this.annotations = null;
+this.dnaWidth = 0;
+this.dataset = null;
+this.aaWidth = 0;
+this.alignedCodons = null;
+Clazz.instantialize (this, arguments);
+}, jalview.analysis, "Dna");
+Clazz.makeConstructor (c$, 
+function (viewport, visibleContigs) {
+this.selection = java.util.Arrays.asList (viewport.getSequenceSelection ());
+this.seqstring = viewport.getViewAsString (true);
+this.contigs = visibleContigs;
+this.gapChar = viewport.getGapCharacter ();
+this.annotations = viewport.getAlignment ().getAlignmentAnnotation ();
+this.dnaWidth = viewport.getAlignment ().getWidth ();
+this.dataset = viewport.getAlignment ().getDataset ();
+}, "jalview.api.AlignViewportI,~A");
+c$.compareCodonPos = Clazz.defineMethod (c$, "compareCodonPos", 
+function (ac1, ac2) {
+return jalview.analysis.Dna.comparator.compare (ac1, ac2);
+}, "jalview.datamodel.AlignedCodon,jalview.datamodel.AlignedCodon");
+Clazz.defineMethod (c$, "translateCdna", 
+function () {
+var acf =  new jalview.datamodel.AlignedCodonFrame ();
+this.alignedCodons =  new Array (this.dnaWidth);
+var s;
+var sSize = this.selection.size ();
+var pepseqs =  new java.util.ArrayList ();
+for (s = 0; s < sSize; s++) {
+var newseq = this.translateCodingRegion (this.selection.get (s), this.seqstring[s], acf, pepseqs);
+if (newseq != null) {
+pepseqs.add (newseq);
+var ds = newseq;
+if (this.dataset != null) {
+while (ds.getDatasetSequence () != null) {
+ds = ds.getDatasetSequence ();
+}
+this.dataset.addSequence (ds);
+}}}
+var newseqs = pepseqs.toArray ( new Array (pepseqs.size ()));
+var al =  new jalview.datamodel.Alignment (newseqs);
+al.padGaps ();
+al.setDataset (this.dataset);
+this.translateAlignedAnnotations (al, acf);
+al.addCodonFrame (acf);
+return al;
+});
+c$.canTranslate = Clazz.defineMethod (c$, "canTranslate", 
+function (selection, viscontigs) {
+for (var gd = 0; gd < selection.length; gd++) {
+var dna = selection[gd];
+var dnarefs = jalview.util.DBRefUtils.selectRefs (dna.getDBRef (), jalview.datamodel.DBRefSource.DNACODINGDBS);
+if (dnarefs != null) {
+var mappedrefs =  new java.util.ArrayList ();
+var refs = dna.getDBRef ();
+for (var d = 0; d < refs.length; d++) {
+if (refs[d].getMap () != null && refs[d].getMap ().getMap () != null && refs[d].getMap ().getMap ().getFromRatio () == 3 && refs[d].getMap ().getMap ().getToRatio () == 1) {
+mappedrefs.add (refs[d]);
+}}
+dnarefs = mappedrefs.toArray ( new Array (mappedrefs.size ()));
+for (var d = 0; d < dnarefs.length; d++) {
+var mp = dnarefs[d].getMap ();
+if (mp != null) {
+for (var vc = 0; vc < viscontigs.length; vc += 2) {
+var mpr = mp.locateMappedRange (viscontigs[vc], viscontigs[vc + 1]);
+if (mpr != null) {
+return true;
+}}
+}}
+}}
+return false;
+}, "~A,~A");
+Clazz.defineMethod (c$, "translateAlignedAnnotations", 
+function (al, acf) {
+if (this.annotations != null) {
+for (var annotation, $annotation = 0, $$annotation = this.annotations; $annotation < $$annotation.length && ((annotation = $$annotation[$annotation]) || true); $annotation++) {
+if (annotation.autoCalculated || !annotation.visible || annotation.isRNA ()) {
+continue;
+}var aSize = this.aaWidth;
+var anots = (annotation.annotations == null) ? null :  new Array (aSize);
+if (anots != null) {
+for (var a = 0; a < aSize; a++) {
+if (a < this.alignedCodons.length && this.alignedCodons[a] != null && this.alignedCodons[a].pos1 == (this.alignedCodons[a].pos3 - 2)) {
+anots[a] = jalview.analysis.Dna.getCodonAnnotation (this.alignedCodons[a], annotation.annotations);
+}}
+}var aa =  new jalview.datamodel.AlignmentAnnotation (annotation.label, annotation.description, anots);
+aa.graph = annotation.graph;
+aa.graphGroup = annotation.graphGroup;
+aa.graphHeight = annotation.graphHeight;
+if (annotation.getThreshold () != null) {
+aa.setThreshold ( new jalview.datamodel.GraphLine (annotation.getThreshold ()));
+}if (annotation.$hasScore) {
+aa.setScore (annotation.getScore ());
+}var seqRef = annotation.sequenceRef;
+if (seqRef != null) {
+var aaSeq = acf.getAaForDnaSeq (seqRef);
+if (aaSeq != null) {
+aa.setSequenceRef (aaSeq);
+aa.createSequenceMapping (aaSeq, aaSeq.getStart (), true);
+aa.adjustForAlignment ();
+aaSeq.addAlignmentAnnotation (aa);
+}}al.addAnnotation (aa);
+}
+}}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignedCodonFrame");
+c$.getCodonAnnotation = Clazz.defineMethod (c$, "getCodonAnnotation", 
+($fz = function (is, annotations) {
+var contrib = 0;
+var annot = null;
+for (var p = 1; p <= 3; p++) {
+var dnaCol = is.getBaseColumn (p);
+if (annotations[dnaCol] != null) {
+if (annot == null) {
+annot =  new jalview.datamodel.Annotation (annotations[dnaCol]);
+contrib = 1;
+} else {
+var cpy =  new jalview.datamodel.Annotation (annotations[dnaCol]);
+if (annot.colour == null) {
+annot.colour = cpy.colour;
+}if (annot.description == null || annot.description.length == 0) {
+annot.description = cpy.description;
+}if (annot.displayCharacter == null) {
+annot.displayCharacter = cpy.displayCharacter;
+}if (annot.secondaryStructure.charCodeAt (0) == 0) {
+annot.secondaryStructure = cpy.secondaryStructure;
+}annot.value += cpy.value;
+contrib++;
+}}}
+if (contrib > 1) {
+annot.value /= contrib;
+}return annot;
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignedCodon,~A");
+Clazz.defineMethod (c$, "translateCodingRegion", 
+function (selection, seqstring, acf, proteinSeqs) {
+var skip =  new java.util.ArrayList ();
+var skipint = null;
+var vismapping =  new jalview.util.ShiftList ();
+var vc;
+var scontigs =  Clazz.newIntArray (this.contigs.length, 0);
+var npos = 0;
+for (vc = 0; vc < this.contigs.length; vc += 2) {
+if (vc == 0) {
+vismapping.addShift (npos, this.contigs[vc]);
+} else {
+vismapping.addShift (npos, this.contigs[vc] - this.contigs[vc - 1] + 1);
+}scontigs[vc] = this.contigs[vc];
+scontigs[vc + 1] = this.contigs[vc + 1];
+}
+var protein =  new StringBuilder (Clazz.doubleToInt (seqstring.length / 2));
+var seq = seqstring.$replace ('U', 'T').$replace ('u', 'T');
+var codon =  Clazz.newCharArray (3, '\0');
+var cdp =  Clazz.newIntArray (3, 0);
+var rf = 0;
+var lastnpos = 0;
+var nend;
+var aspos = 0;
+var resSize = 0;
+for (npos = 0, nend = seq.length; npos < nend; npos++) {
+if (!jalview.util.Comparison.isGap (seq.charAt (npos))) {
+cdp[rf] = npos;
+codon[rf++] = seq.charAt (npos);
+}if (rf == 3) {
+var alignedCodon =  new jalview.datamodel.AlignedCodon (cdp[0], cdp[1], cdp[2]);
+var aa = jalview.schemes.ResidueProperties.codonTranslate ( String.instantialize (codon));
+rf = 0;
+var gapString = String.valueOf (this.gapChar);
+if (aa == null) {
+aa = gapString;
+if (skipint == null) {
+skipint =  Clazz.newIntArray (-1, [alignedCodon.pos1, alignedCodon.pos3]);
+}skipint[1] = alignedCodon.pos3;
+} else {
+if (skipint != null) {
+skipint[0] = vismapping.shift (skipint[0]);
+skipint[1] = vismapping.shift (skipint[1]);
+for (vc = 0; vc < scontigs.length; ) {
+if (scontigs[vc + 1] < skipint[0]) {
+vc += 2;
+continue;
+}if (scontigs[vc] > skipint[1]) {
+break;
+}var t;
+if (scontigs[vc] <= skipint[0]) {
+if (skipint[0] == scontigs[vc]) {
+if (scontigs[vc + 1] > skipint[1]) {
+scontigs[vc] = skipint[1];
+vc += 2;
+} else {
+if (scontigs[vc + 1] == skipint[1]) {
+t =  Clazz.newIntArray (scontigs.length - 2, 0);
+if (vc > 0) {
+System.arraycopy (scontigs, 0, t, 0, vc - 1);
+}if (vc + 2 < t.length) {
+System.arraycopy (scontigs, vc + 2, t, vc, t.length - vc + 2);
+}scontigs = t;
+} else {
+scontigs[vc + 1] = skipint[0] - 1;
+vc += 2;
+}}} else {
+if (scontigs[vc + 1] < skipint[1]) {
+scontigs[vc + 1] = skipint[0] - 1;
+vc += 2;
+} else {
+t =  Clazz.newIntArray (scontigs.length + 2, 0);
+System.arraycopy (scontigs, 0, t, 0, vc + 1);
+t[vc + 1] = skipint[0];
+t[vc + 2] = skipint[1];
+System.arraycopy (scontigs, vc + 1, t, vc + 3, scontigs.length - (vc + 1));
+scontigs = t;
+vc += 4;
+}}}}
+skip.add (skipint);
+skipint = null;
+}if (aa.equals ("STOP")) {
+aa = "X";
+}resSize++;
+}var findpos = true;
+while (findpos) {
+var compareCodonPos = jalview.analysis.Dna.compareCodonPos (alignedCodon, this.alignedCodons[aspos]);
+switch (compareCodonPos) {
+case -1:
+this.insertAAGap (aspos, proteinSeqs);
+findpos = false;
+break;
+case 1:
+aa = gapString + aa;
+aspos++;
+break;
+case 0:
+findpos = false;
+}
+}
+protein.append (aa);
+lastnpos = npos;
+if (this.alignedCodons[aspos] == null) {
+this.alignedCodons[aspos] = alignedCodon;
+} else if (!this.alignedCodons[aspos].equals (alignedCodon)) {
+throw  new IllegalStateException ("Tried to coalign " + this.alignedCodons[aspos].toString () + " with " + alignedCodon.toString ());
+}if (aspos >= this.aaWidth) {
+this.aaWidth = aspos;
+}aspos++;
+}}
+if (resSize > 0) {
+var newseq =  new jalview.datamodel.Sequence (selection.getName (), protein.toString ());
+if (rf != 0) {
+var errMsg = "trimming contigs for incomplete terminal codon.";
+System.err.println ("trimming contigs for incomplete terminal codon.");
+vc = scontigs.length - 1;
+lastnpos = vismapping.shift (lastnpos);
+while (vc >= 0 && scontigs[vc] > lastnpos) {
+if (vc > 0 && scontigs[vc - 1] > lastnpos) {
+vc -= 2;
+} else {
+scontigs[vc] = lastnpos;
+}}
+if (vc > 0 && (vc + 1) < scontigs.length) {
+var t =  Clazz.newIntArray (vc + 1, 0);
+System.arraycopy (scontigs, 0, t, 0, vc + 1);
+scontigs = t;
+}if (vc <= 0) {
+scontigs = null;
+}}if (scontigs != null) {
+npos = 0;
+for (vc = 0; vc < scontigs.length; vc += 2) {
+scontigs[vc] = selection.findPosition (scontigs[vc]);
+scontigs[vc + 1] = selection.findPosition (scontigs[vc + 1]);
+if (scontigs[vc + 1] == selection.getEnd ()) {
+break;
+}}
+if ((vc + 2) < scontigs.length) {
+var t =  Clazz.newIntArray (vc + 2, 0);
+System.arraycopy (scontigs, 0, t, 0, vc + 2);
+scontigs = t;
+}var map =  new jalview.util.MapList (scontigs,  Clazz.newIntArray (-1, [1, resSize]), 3, 1);
+jalview.analysis.Dna.transferCodedFeatures (selection, newseq, map, null, null);
+var rseq = newseq.deriveSequence ();
+acf.addMap (selection, rseq, map);
+return rseq;
+}}return null;
+}, "jalview.datamodel.SequenceI,~S,jalview.datamodel.AlignedCodonFrame,java.util.List");
+Clazz.defineMethod (c$, "insertAAGap", 
+function (pos, proteinSeqs) {
+this.aaWidth++;
+for (var seq, $seq = proteinSeqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+seq.insertCharAt (pos, this.gapChar);
+}
+this.checkCodonFrameWidth ();
+if (pos < this.aaWidth) {
+this.aaWidth++;
+System.arraycopy (this.alignedCodons, pos, this.alignedCodons, pos + 1, this.alignedCodons.length - pos - 1);
+this.alignedCodons[pos] = null;
+}}, "~N,java.util.List");
+Clazz.defineMethod (c$, "checkCodonFrameWidth", 
+function () {
+if (this.alignedCodons[this.alignedCodons.length - 1] != null) {
+var c =  new Array (this.alignedCodons.length + 10);
+System.arraycopy (this.alignedCodons, 0, c, 0, this.alignedCodons.length);
+this.alignedCodons = c;
+}});
+c$.transferCodedFeatures = Clazz.defineMethod (c$, "transferCodedFeatures", 
+($fz = function (dna, pep, map, featureTypes, featureGroups) {
+var sfs = dna.getSequenceFeatures ();
+var fgstate;
+var dnarefs = jalview.util.DBRefUtils.selectRefs (dna.getDBRef (), jalview.datamodel.DBRefSource.DNACODINGDBS);
+if (dnarefs != null) {
+for (var d = 0; d < dnarefs.length; d++) {
+var mp = dnarefs[d].getMap ();
+if (mp != null) {
+}}
+}if (sfs != null) {
+for (var sf, $sf = 0, $$sf = sfs; $sf < $$sf.length && ((sf = $$sf[$sf]) || true); $sf++) {
+fgstate = (featureGroups == null) ? null : featureGroups.get (sf.featureGroup);
+if ((featureTypes == null || featureTypes.containsKey (sf.getType ())) && (fgstate == null || fgstate.booleanValue ())) {
+if (jalview.datamodel.FeatureProperties.isCodingFeature (null, sf.getType ())) {
+{
+}}}}
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,jalview.util.MapList,java.util.Map,java.util.Map");
+Clazz.defineStatics (c$,
+"STOP_X", "X");
+c$.comparator = c$.prototype.comparator =  new jalview.analysis.CodonComparator ();
+});
index ec046f2..3648614 100644 (file)
Binary files a/bin/jalview/analysis/Finder.class and b/bin/jalview/analysis/Finder.class differ
index cf1d8f9..5d20c2c 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (null, "jalview.analysis.Finder", ["jalview.datamodel.SearchResults", "jalview.jsdev.RegExp", "jalview.util.Comparison", "java.lang.StringBuffer", "java.util.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.searchResults = null;\r
-this.alignment = null;\r
-this.selection = null;\r
-this.idMatch = null;\r
-this.caseSensitive = false;\r
-this.includeDescription = false;\r
-this.findAll = false;\r
-this.regex = null;\r
-this.seqIndex = 0;\r
-this.resIndex = -1;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis, "Finder");\r
-Clazz.makeConstructor (c$, \r
-function (alignment, selection) {\r
-this.alignment = alignment;\r
-this.selection = selection;\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");\r
-Clazz.makeConstructor (c$, \r
-function (alignment, selectionGroup, seqIndex, resIndex) {\r
-this.construct (alignment, selectionGroup);\r
-this.seqIndex = seqIndex;\r
-this.resIndex = resIndex;\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup,~N,~N");\r
-Clazz.defineMethod (c$, "find", \r
-function (searchString) {\r
-var hasResults = false;\r
-if (!this.caseSensitive) {\r
-searchString = searchString.toUpperCase ();\r
-}this.regex = jalview.jsdev.RegExp.newRegex ([searchString]);\r
-this.regex.setIgnoreCase (!this.caseSensitive);\r
-this.searchResults =  new jalview.datamodel.SearchResults ();\r
-this.idMatch =  new java.util.Vector ();\r
-var seq;\r
-var item = null;\r
-var found = false;\r
-var end = this.alignment.getHeight ();\r
-if (this.selection != null) {\r
-if ((this.selection.getSize () < 1) || ((this.selection.getEndRes () - this.selection.getStartRes ()) < 2)) {\r
-this.selection = null;\r
-}}while (!found && (this.seqIndex < end)) {\r
-seq = this.alignment.getSequenceAt (this.seqIndex);\r
-if ((this.selection != null && this.selection.getSize () > 0) && !this.selection.getSequences (null).contains (seq)) {\r
-this.seqIndex++;\r
-this.resIndex = -1;\r
-continue;\r
-}if (this.resIndex < 0) {\r
-this.resIndex = 0;\r
-try {\r
-var res = Integer.parseInt (searchString);\r
-if (seq.getEnd () >= res) {\r
-this.searchResults.addResult (seq, res, res);\r
-hasResults = true;\r
-if (!this.findAll) {\r
-found = true;\r
-break;\r
-}}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-if (this.regex.search (seq.getName ())) {\r
-this.idMatch.addElement (seq);\r
-hasResults = true;\r
-if (!this.findAll) {\r
-found = true;\r
-break;\r
-}}if (this.isIncludeDescription () && seq.getDescription () != null && this.regex.search (seq.getDescription ())) {\r
-this.idMatch.addElement (seq);\r
-hasResults = true;\r
-if (!this.findAll) {\r
-found = true;\r
-break;\r
-}}}item = seq.getSequenceAsString ();\r
-if ((this.selection != null) && (this.selection.getEndRes () < this.alignment.getWidth () - 1)) {\r
-item = item.substring (0, this.selection.getEndRes () + 1);\r
-}var noGapsSB =  new StringBuffer ();\r
-var insertCount = 0;\r
-var spaces =  new java.util.Vector ();\r
-for (var j = 0; j < item.length; j++) {\r
-if (!jalview.util.Comparison.isGap (item.charAt (j))) {\r
-noGapsSB.append (item.charAt (j));\r
-spaces.addElement ( new Integer (insertCount));\r
-} else {\r
-insertCount++;\r
-}}\r
-var noGaps = noGapsSB.toString ();\r
-for (var r = this.resIndex; r < noGaps.length; r++) {\r
-if (this.regex.searchFrom (noGaps, r)) {\r
-this.resIndex = this.regex.matchedFrom ();\r
-if ((this.selection != null && this.selection.getSize () > 0) && ((this.resIndex + Integer.parseInt (spaces.elementAt (this.resIndex).toString ())) < this.selection.getStartRes ())) {\r
-continue;\r
-}var sres = seq.findPosition (this.resIndex + Integer.parseInt (spaces.elementAt (this.resIndex).toString ()));\r
-var eres = seq.findPosition (this.regex.matchedTo () - 1 + Integer.parseInt (spaces.elementAt (this.regex.matchedTo () - 1).toString ()));\r
-this.searchResults.addResult (seq, sres, eres);\r
-hasResults = true;\r
-if (!this.findAll) {\r
-found = true;\r
-this.resIndex++;\r
-break;\r
-}r = this.resIndex;\r
-} else {\r
-break;\r
-}}\r
-if (!found) {\r
-this.seqIndex++;\r
-this.resIndex = -1;\r
-}}\r
-return hasResults;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getAlignment", \r
-function () {\r
-return this.alignment;\r
-});\r
-Clazz.defineMethod (c$, "setAlignment", \r
-function (alignment) {\r
-this.alignment = alignment;\r
-}, "jalview.datamodel.AlignmentI");\r
-Clazz.defineMethod (c$, "isCaseSensitive", \r
-function () {\r
-return this.caseSensitive;\r
-});\r
-Clazz.defineMethod (c$, "setCaseSensitive", \r
-function (caseSensitive) {\r
-this.caseSensitive = caseSensitive;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isFindAll", \r
-function () {\r
-return this.findAll;\r
-});\r
-Clazz.defineMethod (c$, "setFindAll", \r
-function (findAll) {\r
-this.findAll = findAll;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getSelection", \r
-function () {\r
-return this.selection;\r
-});\r
-Clazz.defineMethod (c$, "setSelection", \r
-function (selection) {\r
-this.selection = selection;\r
-}, "jalview.datamodel.SequenceGroup");\r
-Clazz.defineMethod (c$, "getIdMatch", \r
-function () {\r
-return this.idMatch;\r
-});\r
-Clazz.defineMethod (c$, "getRegex", \r
-function () {\r
-return this.regex;\r
-});\r
-Clazz.defineMethod (c$, "getSearchResults", \r
-function () {\r
-return this.searchResults;\r
-});\r
-Clazz.defineMethod (c$, "getResIndex", \r
-function () {\r
-return this.resIndex;\r
-});\r
-Clazz.defineMethod (c$, "setResIndex", \r
-function (resIndex) {\r
-this.resIndex = resIndex;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getSeqIndex", \r
-function () {\r
-return this.seqIndex;\r
-});\r
-Clazz.defineMethod (c$, "setSeqIndex", \r
-function (seqIndex) {\r
-this.seqIndex = seqIndex;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "isIncludeDescription", \r
-function () {\r
-return this.includeDescription;\r
-});\r
-Clazz.defineMethod (c$, "setIncludeDescription", \r
-function (includeDescription) {\r
-this.includeDescription = includeDescription;\r
-}, "~B");\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (null, "jalview.analysis.Finder", ["jalview.datamodel.SearchResults", "jalview.jsdev.RegExp", "jalview.util.Comparison", "java.lang.StringBuffer", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.searchResults = null;
+this.alignment = null;
+this.selection = null;
+this.idMatch = null;
+this.caseSensitive = false;
+this.includeDescription = false;
+this.findAll = false;
+this.regex = null;
+this.seqIndex = 0;
+this.resIndex = -1;
+Clazz.instantialize (this, arguments);
+}, jalview.analysis, "Finder");
+Clazz.makeConstructor (c$, 
+function (alignment, selection) {
+this.alignment = alignment;
+this.selection = selection;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
+Clazz.makeConstructor (c$, 
+function (alignment, selectionGroup, seqIndex, resIndex) {
+this.construct (alignment, selectionGroup);
+this.seqIndex = seqIndex;
+this.resIndex = resIndex;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup,~N,~N");
+Clazz.defineMethod (c$, "find", 
+function (searchString) {
+var hasResults = false;
+if (!this.caseSensitive) {
+searchString = searchString.toUpperCase ();
+}this.regex = jalview.jsdev.RegExp.newRegex ([searchString]);
+this.regex.setIgnoreCase (!this.caseSensitive);
+this.searchResults =  new jalview.datamodel.SearchResults ();
+this.idMatch =  new java.util.Vector ();
+var seq;
+var item = null;
+var found = false;
+var end = this.alignment.getHeight ();
+if (this.selection != null) {
+if ((this.selection.getSize () < 1) || ((this.selection.getEndRes () - this.selection.getStartRes ()) < 2)) {
+this.selection = null;
+}}while (!found && (this.seqIndex < end)) {
+seq = this.alignment.getSequenceAt (this.seqIndex);
+if ((this.selection != null && this.selection.getSize () > 0) && !this.selection.getSequences (null).contains (seq)) {
+this.seqIndex++;
+this.resIndex = -1;
+continue;
+}if (this.resIndex < 0) {
+this.resIndex = 0;
+try {
+var res = Integer.parseInt (searchString);
+if (seq.getEnd () >= res) {
+this.searchResults.addResult (seq, res, res);
+hasResults = true;
+if (!this.findAll) {
+found = true;
+break;
+}}} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+if (this.regex.search (seq.getName ())) {
+this.idMatch.addElement (seq);
+hasResults = true;
+if (!this.findAll) {
+found = true;
+break;
+}}if (this.isIncludeDescription () && seq.getDescription () != null && this.regex.search (seq.getDescription ())) {
+this.idMatch.addElement (seq);
+hasResults = true;
+if (!this.findAll) {
+found = true;
+break;
+}}}item = seq.getSequenceAsString ();
+if ((this.selection != null) && (this.selection.getEndRes () < this.alignment.getWidth () - 1)) {
+item = item.substring (0, this.selection.getEndRes () + 1);
+}var noGapsSB =  new StringBuffer ();
+var insertCount = 0;
+var spaces =  new java.util.Vector ();
+for (var j = 0; j < item.length; j++) {
+if (!jalview.util.Comparison.isGap (item.charAt (j))) {
+noGapsSB.append (item.charAt (j));
+spaces.addElement ( new Integer (insertCount));
+} else {
+insertCount++;
+}}
+var noGaps = noGapsSB.toString ();
+for (var r = this.resIndex; r < noGaps.length; r++) {
+if (this.regex.searchFrom (noGaps, r)) {
+this.resIndex = this.regex.matchedFrom ();
+if ((this.selection != null && this.selection.getSize () > 0) && ((this.resIndex + Integer.parseInt (spaces.elementAt (this.resIndex).toString ())) < this.selection.getStartRes ())) {
+continue;
+}var sres = seq.findPosition (this.resIndex + Integer.parseInt (spaces.elementAt (this.resIndex).toString ()));
+var eres = seq.findPosition (this.regex.matchedTo () - 1 + Integer.parseInt (spaces.elementAt (this.regex.matchedTo () - 1).toString ()));
+this.searchResults.addResult (seq, sres, eres);
+hasResults = true;
+if (!this.findAll) {
+found = true;
+this.resIndex++;
+break;
+}r = this.resIndex;
+} else {
+break;
+}}
+if (!found) {
+this.seqIndex++;
+this.resIndex = -1;
+}}
+return hasResults;
+}, "~S");
+Clazz.defineMethod (c$, "getAlignment", 
+function () {
+return this.alignment;
+});
+Clazz.defineMethod (c$, "setAlignment", 
+function (alignment) {
+this.alignment = alignment;
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "isCaseSensitive", 
+function () {
+return this.caseSensitive;
+});
+Clazz.defineMethod (c$, "setCaseSensitive", 
+function (caseSensitive) {
+this.caseSensitive = caseSensitive;
+}, "~B");
+Clazz.defineMethod (c$, "isFindAll", 
+function () {
+return this.findAll;
+});
+Clazz.defineMethod (c$, "setFindAll", 
+function (findAll) {
+this.findAll = findAll;
+}, "~B");
+Clazz.defineMethod (c$, "getSelection", 
+function () {
+return this.selection;
+});
+Clazz.defineMethod (c$, "setSelection", 
+function (selection) {
+this.selection = selection;
+}, "jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "getIdMatch", 
+function () {
+return this.idMatch;
+});
+Clazz.defineMethod (c$, "getRegex", 
+function () {
+return this.regex;
+});
+Clazz.defineMethod (c$, "getSearchResults", 
+function () {
+return this.searchResults;
+});
+Clazz.defineMethod (c$, "getResIndex", 
+function () {
+return this.resIndex;
+});
+Clazz.defineMethod (c$, "setResIndex", 
+function (resIndex) {
+this.resIndex = resIndex;
+}, "~N");
+Clazz.defineMethod (c$, "getSeqIndex", 
+function () {
+return this.seqIndex;
+});
+Clazz.defineMethod (c$, "setSeqIndex", 
+function (seqIndex) {
+this.seqIndex = seqIndex;
+}, "~N");
+Clazz.defineMethod (c$, "isIncludeDescription", 
+function () {
+return this.includeDescription;
+});
+Clazz.defineMethod (c$, "setIncludeDescription", 
+function (includeDescription) {
+this.includeDescription = includeDescription;
+}, "~B");
+});
index 60e2571..49d4004 100644 (file)
@@ -1,88 +1,88 @@
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (null, "jalview.analysis.Grouping", ["jalview.datamodel.SequenceGroup", "java.lang.StringBuilder", "java.util.ArrayList", "$.HashMap"], function () {\r
-c$ = Clazz.declareType (jalview.analysis, "Grouping");\r
-c$.makeGroupsFrom = Clazz.defineMethod (c$, "makeGroupsFrom", \r
-function (sequences, selectedChars, list) {\r
-var gps =  new java.util.HashMap ();\r
-var width = 0;\r
-var i;\r
-var pgroup =  new java.util.HashMap ();\r
-if (list != null) {\r
-for (var sg, $sg = list.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-for (var sq, $sq = sg.getSequences (null).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {\r
-pgroup.put (sq.toString (), sg);\r
-}\r
-}\r
-}for (i = 0; i < sequences.length; i++) {\r
-var schar = selectedChars[i];\r
-var pgp = pgroup.get ((sequences[i]).toString ());\r
-if (pgp != null) {\r
-schar = pgp.getName () + ":" + schar;\r
-}var svec = gps.get (schar);\r
-if (svec == null) {\r
-svec =  new java.util.ArrayList ();\r
-gps.put (schar, svec);\r
-}if (width < sequences[i].getLength ()) {\r
-width = sequences[i].getLength ();\r
-}svec.add (sequences[i]);\r
-}\r
-var groups =  new Array (gps.size ());\r
-i = 0;\r
-for (var key, $key = gps.keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) {\r
-var group =  new jalview.datamodel.SequenceGroup (gps.get (key), "Subseq: " + key, null, true, true, false, 0, width - 1);\r
-groups[i++] = group;\r
-}\r
-gps.clear ();\r
-pgroup.clear ();\r
-return groups;\r
-}, "~A,~A,java.util.List");\r
-c$.makeGroupsFromCols = Clazz.defineMethod (c$, "makeGroupsFromCols", \r
-function (sequences, cs, list) {\r
-var gps =  new java.util.HashMap ();\r
-var pgroup =  new java.util.HashMap ();\r
-if (list != null) {\r
-for (var sg, $sg = list.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-for (var sq, $sq = sg.getSequences (null).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {\r
-pgroup.put (sq.toString (), sg);\r
-}\r
-}\r
-}var spos =  Clazz.newIntArray (cs.getSelected ().size (), 0);\r
-var width = -1;\r
-var i = 0;\r
-for (var pos, $pos = cs.getSelected ().iterator (); $pos.hasNext () && ((pos = $pos.next ()) || true);) {\r
-spos[i++] = pos.intValue ();\r
-}\r
-;for (i = 0; i < sequences.length; i++) {\r
-var slen = sequences[i].getLength ();\r
-if (width < slen) {\r
-width = slen;\r
-}var pgp = pgroup.get ((sequences[i]).toString ());\r
-var schar =  new StringBuilder ();\r
-if (pgp != null) {\r
-schar.append (pgp.getName () + ":");\r
-}for (var p, $p = 0, $$p = spos; $p < $$p.length && ((p = $$p[$p]) || true); $p++) {\r
-if (p >= slen) {\r
-schar.append ("~");\r
-} else {\r
-schar.append (sequences[i].getCharAt (p));\r
-}}\r
-var svec = gps.get (schar.toString ());\r
-if (svec == null) {\r
-svec =  new java.util.ArrayList ();\r
-gps.put (schar.toString (), svec);\r
-}svec.add (sequences[i]);\r
-}\r
-var groups =  new Array (gps.size ());\r
-i = 0;\r
-for (var key, $key = gps.keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) {\r
-var group =  new jalview.datamodel.SequenceGroup (gps.get (key), "Subseq: " + key, null, true, true, false, 0, width - 1);\r
-groups[i++] = group;\r
-}\r
-gps.clear ();\r
-pgroup.clear ();\r
-return groups;\r
-}, "~A,jalview.datamodel.ColumnSelection,java.util.List");\r
-c$.divideByFeature = Clazz.defineMethod (c$, "divideByFeature", \r
-function (featureLabels, groupLabels, start, stop, sequences, exgroups, method) {\r
-}, "~A,~A,~N,~N,~A,java.util.Vector,~S");\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (null, "jalview.analysis.Grouping", ["jalview.datamodel.SequenceGroup", "java.lang.StringBuilder", "java.util.ArrayList", "$.HashMap"], function () {
+c$ = Clazz.declareType (jalview.analysis, "Grouping");
+c$.makeGroupsFrom = Clazz.defineMethod (c$, "makeGroupsFrom", 
+function (sequences, selectedChars, list) {
+var gps =  new java.util.HashMap ();
+var width = 0;
+var i;
+var pgroup =  new java.util.HashMap ();
+if (list != null) {
+for (var sg, $sg = list.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+for (var sq, $sq = sg.getSequences (null).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+pgroup.put (sq.toString (), sg);
+}
+}
+}for (i = 0; i < sequences.length; i++) {
+var schar = selectedChars[i];
+var pgp = pgroup.get ((sequences[i]).toString ());
+if (pgp != null) {
+schar = pgp.getName () + ":" + schar;
+}var svec = gps.get (schar);
+if (svec == null) {
+svec =  new java.util.ArrayList ();
+gps.put (schar, svec);
+}if (width < sequences[i].getLength ()) {
+width = sequences[i].getLength ();
+}svec.add (sequences[i]);
+}
+var groups =  new Array (gps.size ());
+i = 0;
+for (var key, $key = gps.keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) {
+var group =  new jalview.datamodel.SequenceGroup (gps.get (key), "Subseq: " + key, null, true, true, false, 0, width - 1);
+groups[i++] = group;
+}
+gps.clear ();
+pgroup.clear ();
+return groups;
+}, "~A,~A,java.util.List");
+c$.makeGroupsFromCols = Clazz.defineMethod (c$, "makeGroupsFromCols", 
+function (sequences, cs, list) {
+var gps =  new java.util.HashMap ();
+var pgroup =  new java.util.HashMap ();
+if (list != null) {
+for (var sg, $sg = list.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+for (var sq, $sq = sg.getSequences (null).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+pgroup.put (sq.toString (), sg);
+}
+}
+}var spos =  Clazz.newIntArray (cs.getSelected ().size (), 0);
+var width = -1;
+var i = 0;
+for (var pos, $pos = cs.getSelected ().iterator (); $pos.hasNext () && ((pos = $pos.next ()) || true);) {
+spos[i++] = pos.intValue ();
+}
+;for (i = 0; i < sequences.length; i++) {
+var slen = sequences[i].getLength ();
+if (width < slen) {
+width = slen;
+}var pgp = pgroup.get ((sequences[i]).toString ());
+var schar =  new StringBuilder ();
+if (pgp != null) {
+schar.append (pgp.getName () + ":");
+}for (var p, $p = 0, $$p = spos; $p < $$p.length && ((p = $$p[$p]) || true); $p++) {
+if (p >= slen) {
+schar.append ("~");
+} else {
+schar.append (sequences[i].getCharAt (p));
+}}
+var svec = gps.get (schar.toString ());
+if (svec == null) {
+svec =  new java.util.ArrayList ();
+gps.put (schar.toString (), svec);
+}svec.add (sequences[i]);
+}
+var groups =  new Array (gps.size ());
+i = 0;
+for (var key, $key = gps.keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) {
+var group =  new jalview.datamodel.SequenceGroup (gps.get (key), "Subseq: " + key, null, true, true, false, 0, width - 1);
+groups[i++] = group;
+}
+gps.clear ();
+pgroup.clear ();
+return groups;
+}, "~A,jalview.datamodel.ColumnSelection,java.util.List");
+c$.divideByFeature = Clazz.defineMethod (c$, "divideByFeature", 
+function (featureLabels, groupLabels, start, stop, sequences, exgroups, method) {
+}, "~A,~A,~N,~N,~A,java.util.Vector,~S");
+});
index d31a891..b64f07a 100644 (file)
Binary files a/bin/jalview/analysis/NJTree.class and b/bin/jalview/analysis/NJTree.class differ
index 24a8fc5..8f3a367 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (["java.util.Vector"], ["jalview.analysis.Cluster", "$.NJTree"], ["jalview.analysis.SequenceIdMatcher", "jalview.datamodel.AlignmentView", "$.CigarArray", "$.NodeTransformI", "$.SeqCigar", "$.Sequence", "$.SequenceI", "$.SequenceNode", "jalview.io.NewickFile", "jalview.schemes.ResidueProperties", "jalview.util.Format", "java.lang.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.$cluster = null;\r
-this.sequence = null;\r
-this.seqData = null;\r
-this.done = null;\r
-this.noseqs = 0;\r
-this.noClus = 0;\r
-this.distance = null;\r
-this.mini = 0;\r
-this.minj = 0;\r
-this.ri = 0;\r
-this.rj = 0;\r
-this.groups = null;\r
-this.maxdist = null;\r
-this.top = null;\r
-this.maxDistValue = 0;\r
-this.maxheight = 0;\r
-this.ycount = 0;\r
-this.node = null;\r
-this.type = null;\r
-this.pwtype = null;\r
-this.found = null;\r
-this.leaves = null;\r
-this.hasDistances = true;\r
-this.hasBootstrap = false;\r
-this.hasRootDistance = true;\r
-this._lycount = 0;\r
-this._lylimit = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis, "NJTree");\r
-Clazz.prepareFields (c$, function () {\r
-this.groups =  new java.util.Vector ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (seqs, odata, treefile) {\r
-this.construct (seqs, treefile);\r
-if (odata != null) {\r
-this.seqData = odata;\r
-}}, "~A,jalview.datamodel.AlignmentView,jalview.io.NewickFile");\r
-Clazz.makeConstructor (c$, \r
-function (seqs, treefile) {\r
-this.sequence = seqs;\r
-this.top = treefile.getTree ();\r
-this.hasDistances = treefile.HasDistances ();\r
-this.hasBootstrap = treefile.HasBootstrap ();\r
-this.hasRootDistance = treefile.HasRootDistance ();\r
-this.maxheight = this.findHeight (this.top);\r
-var algnIds =  new jalview.analysis.SequenceIdMatcher (seqs);\r
-var leaves =  new java.util.Vector ();\r
-this.findLeaves (this.top, leaves);\r
-var i = 0;\r
-var namesleft = seqs.length;\r
-var j;\r
-var nam;\r
-var realnam;\r
-var one2many =  new java.util.Vector ();\r
-var countOne2Many = 0;\r
-while (i < leaves.size ()) {\r
-j = leaves.elementAt (i++);\r
-realnam = j.getName ();\r
-nam = null;\r
-if (namesleft > -1) {\r
-nam = algnIds.findIdMatch (realnam);\r
-}if (nam != null) {\r
-j.setElement (nam);\r
-if (one2many.contains (nam)) {\r
-countOne2Many++;\r
-} else {\r
-one2many.addElement (nam);\r
-namesleft--;\r
-}} else {\r
-j.setElement ( new jalview.datamodel.Sequence (realnam, "THISISAPLACEHLDER"));\r
-j.setPlaceholder (true);\r
-}}\r
-}, "~A,jalview.io.NewickFile");\r
-Clazz.makeConstructor (c$, \r
-function (sequence, seqData, type, pwtype, sm, start, end) {\r
-this.sequence = sequence;\r
-this.node =  new java.util.Vector ();\r
-this.type = type;\r
-this.pwtype = pwtype;\r
-if (seqData != null) {\r
-this.seqData = seqData;\r
-} else {\r
-var seqs =  new Array (sequence.length);\r
-for (var i = 0; i < sequence.length; i++) {\r
-seqs[i] =  new jalview.datamodel.SeqCigar (sequence[i], start, end);\r
-}\r
-var sdata =  new jalview.datamodel.CigarArray (seqs);\r
-sdata.addOperation ('M', end - start + 1);\r
-this.seqData =  new jalview.datamodel.AlignmentView (sdata, start);\r
-}if (!(type.equals ("NJ"))) {\r
-type = "AV";\r
-}if (sm == null && !(pwtype.equals ("PID"))) {\r
-if (jalview.schemes.ResidueProperties.getScoreMatrix (pwtype) == null) {\r
-pwtype = "BLOSUM62";\r
-}}var i = 0;\r
-this.done =  Clazz.newIntArray (sequence.length, 0);\r
-while ((i < sequence.length) && (sequence[i] != null)) {\r
-this.done[i] = 0;\r
-i++;\r
-}\r
-this.noseqs = i++;\r
-this.distance = this.findDistances (sm);\r
-this.makeLeaves ();\r
-this.noClus = this.$cluster.size ();\r
-this.cluster ();\r
-}, "~A,jalview.datamodel.AlignmentView,~S,~S,jalview.api.analysis.ScoreModelI,~N,~N");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var fout =  new jalview.io.NewickFile (this.getTopNode ());\r
-return fout.print (this.isHasBootstrap (), this.isHasDistances (), this.isHasRootDistance ());\r
-});\r
-Clazz.defineMethod (c$, "UpdatePlaceHolders", \r
-function (list) {\r
-var leaves =  new java.util.Vector ();\r
-this.findLeaves (this.top, leaves);\r
-var sz = leaves.size ();\r
-var seqmatcher = null;\r
-var i = 0;\r
-while (i < sz) {\r
-var leaf = leaves.elementAt (i++);\r
-if (list.contains (leaf.element ())) {\r
-leaf.setPlaceholder (false);\r
-} else {\r
-if (seqmatcher == null) {\r
-var seqs =  new Array (list.size ());\r
-for (var j = 0; j < seqs.length; j++) {\r
-seqs[j] = list.get (j);\r
-}\r
-seqmatcher =  new jalview.analysis.SequenceIdMatcher (seqs);\r
-}var nam = seqmatcher.findIdMatch (leaf.getName ());\r
-if (nam != null) {\r
-if (!leaf.isPlaceholder ()) {\r
-}leaf.setPlaceholder (false);\r
-leaf.setElement (nam);\r
-} else {\r
-if (!leaf.isPlaceholder ()) {\r
-leaf.setElement ( new jalview.datamodel.Sequence (leaf.getName (), "THISISAPLACEHLDER"));\r
-}leaf.setPlaceholder (true);\r
-}}}\r
-}, "java.util.List");\r
-Clazz.defineMethod (c$, "renameAssociatedNodes", \r
-function () {\r
-this.applyToNodes (((Clazz.isClassDefined ("jalview.analysis.NJTree$1") ? 0 : jalview.analysis.NJTree.$NJTree$1$ ()), Clazz.innerTypeInstance (jalview.analysis.NJTree$1, this, null)));\r
-});\r
-Clazz.defineMethod (c$, "cluster", \r
-function () {\r
-while (this.noClus > 2) {\r
-if (this.type.equals ("NJ")) {\r
-this.findMinNJDistance ();\r
-} else {\r
-this.findMinDistance ();\r
-}var c = this.joinClusters (this.mini, this.minj);\r
-this.done[this.minj] = 1;\r
-this.$cluster.setElementAt (null, this.minj);\r
-this.$cluster.setElementAt (c, this.mini);\r
-this.noClus--;\r
-}\r
-var onefound = false;\r
-var one = -1;\r
-var two = -1;\r
-for (var i = 0; i < this.noseqs; i++) {\r
-if (this.done[i] != 1) {\r
-if (onefound == false) {\r
-two = i;\r
-onefound = true;\r
-} else {\r
-one = i;\r
-}}}\r
-this.joinClusters (one, two);\r
-this.top = (this.node.elementAt (one));\r
-this.reCount (this.top);\r
-this.findHeight (this.top);\r
-this.findMaxDist (this.top);\r
-});\r
-Clazz.defineMethod (c$, "joinClusters", \r
-function (i, j) {\r
-var dist = this.distance[i][j];\r
-var noi = (this.$cluster.elementAt (i)).value.length;\r
-var noj = (this.$cluster.elementAt (j)).value.length;\r
-var value =  Clazz.newIntArray (noi + noj, 0);\r
-for (var ii = 0; ii < noi; ii++) {\r
-value[ii] = (this.$cluster.elementAt (i)).value[ii];\r
-}\r
-for (var ii = noi; ii < (noi + noj); ii++) {\r
-value[ii] = (this.$cluster.elementAt (j)).value[ii - noi];\r
-}\r
-var c =  new jalview.analysis.Cluster (value);\r
-this.ri = this.findr (i, j);\r
-this.rj = this.findr (j, i);\r
-if (this.type.equals ("NJ")) {\r
-this.findClusterNJDistance (i, j);\r
-} else {\r
-this.findClusterDistance (i, j);\r
-}var sn =  new jalview.datamodel.SequenceNode ();\r
-sn.setLeft ((this.node.elementAt (i)));\r
-sn.setRight ((this.node.elementAt (j)));\r
-var tmpi = (this.node.elementAt (i));\r
-var tmpj = (this.node.elementAt (j));\r
-if (this.type.equals ("NJ")) {\r
-this.findNewNJDistances (tmpi, tmpj, dist);\r
-} else {\r
-this.findNewDistances (tmpi, tmpj, dist);\r
-}tmpi.setParent (sn);\r
-tmpj.setParent (sn);\r
-this.node.setElementAt (sn, i);\r
-return c;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "findNewNJDistances", \r
-function (tmpi, tmpj, dist) {\r
-tmpi.dist = ((dist + this.ri) - this.rj) / 2;\r
-tmpj.dist = (dist - tmpi.dist);\r
-if (tmpi.dist < 0) {\r
-tmpi.dist = 0;\r
-}if (tmpj.dist < 0) {\r
-tmpj.dist = 0;\r
-}}, "jalview.datamodel.SequenceNode,jalview.datamodel.SequenceNode,~N");\r
-Clazz.defineMethod (c$, "findNewDistances", \r
-function (tmpi, tmpj, dist) {\r
-var ih = 0;\r
-var jh = 0;\r
-var sni = tmpi;\r
-var snj = tmpj;\r
-while (sni != null) {\r
-ih = ih + sni.dist;\r
-sni = sni.left ();\r
-}\r
-while (snj != null) {\r
-jh = jh + snj.dist;\r
-snj = snj.left ();\r
-}\r
-tmpi.dist = ((dist / 2) - ih);\r
-tmpj.dist = ((dist / 2) - jh);\r
-}, "jalview.datamodel.SequenceNode,jalview.datamodel.SequenceNode,~N");\r
-Clazz.defineMethod (c$, "findClusterDistance", \r
-function (i, j) {\r
-var noi = (this.$cluster.elementAt (i)).value.length;\r
-var noj = (this.$cluster.elementAt (j)).value.length;\r
-var newdist =  Clazz.newFloatArray (this.noseqs, 0);\r
-for (var l = 0; l < this.noseqs; l++) {\r
-if ((l != i) && (l != j)) {\r
-newdist[l] = ((this.distance[i][l] * noi) + (this.distance[j][l] * noj)) / (noi + noj);\r
-} else {\r
-newdist[l] = 0;\r
-}}\r
-for (var ii = 0; ii < this.noseqs; ii++) {\r
-this.distance[i][ii] = newdist[ii];\r
-this.distance[ii][i] = newdist[ii];\r
-}\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "findClusterNJDistance", \r
-function (i, j) {\r
-var newdist =  Clazz.newFloatArray (this.noseqs, 0);\r
-for (var l = 0; l < this.noseqs; l++) {\r
-if ((l != i) && (l != j)) {\r
-newdist[l] = ((this.distance[i][l] + this.distance[j][l]) - this.distance[i][j]) / 2;\r
-} else {\r
-newdist[l] = 0;\r
-}}\r
-for (var ii = 0; ii < this.noseqs; ii++) {\r
-this.distance[i][ii] = newdist[ii];\r
-this.distance[ii][i] = newdist[ii];\r
-}\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "findr", \r
-function (i, j) {\r
-var tmp = 1;\r
-for (var k = 0; k < this.noseqs; k++) {\r
-if ((k != i) && (k != j) && (this.done[k] != 1)) {\r
-tmp = tmp + this.distance[i][k];\r
-}}\r
-if (this.noClus > 2) {\r
-tmp = tmp / (this.noClus - 2);\r
-}return tmp;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "findMinNJDistance", \r
-function () {\r
-var min = 100000;\r
-for (var i = 0; i < (this.noseqs - 1); i++) {\r
-for (var j = i + 1; j < this.noseqs; j++) {\r
-if ((this.done[i] != 1) && (this.done[j] != 1)) {\r
-var tmp = this.distance[i][j] - (this.findr (i, j) + this.findr (j, i));\r
-if (tmp < min) {\r
-this.mini = i;\r
-this.minj = j;\r
-min = tmp;\r
-}}}\r
-}\r
-return min;\r
-});\r
-Clazz.defineMethod (c$, "findMinDistance", \r
-function () {\r
-var min = 100000;\r
-for (var i = 0; i < (this.noseqs - 1); i++) {\r
-for (var j = i + 1; j < this.noseqs; j++) {\r
-if ((this.done[i] != 1) && (this.done[j] != 1)) {\r
-if (this.distance[i][j] < min) {\r
-this.mini = i;\r
-this.minj = j;\r
-min = this.distance[i][j];\r
-}}}\r
-}\r
-return min;\r
-});\r
-Clazz.defineMethod (c$, "findDistances", \r
-function (_pwmatrix) {\r
-var distance =  Clazz.newFloatArray (this.noseqs, this.noseqs, 0);\r
-if (_pwmatrix == null) {\r
-_pwmatrix = jalview.schemes.ResidueProperties.getScoreModel (this.pwtype);\r
-if (_pwmatrix == null) {\r
-_pwmatrix = jalview.schemes.ResidueProperties.getScoreMatrix ("BLOSUM62");\r
-}}distance = _pwmatrix.findDistances (this.seqData);\r
-return distance;\r
-}, "jalview.api.analysis.ScoreModelI");\r
-Clazz.defineMethod (c$, "makeLeaves", \r
-function () {\r
-this.$cluster =  new java.util.Vector ();\r
-for (var i = 0; i < this.noseqs; i++) {\r
-var sn =  new jalview.datamodel.SequenceNode ();\r
-sn.setElement (this.sequence[i]);\r
-sn.setName (this.sequence[i].getName ());\r
-this.node.addElement (sn);\r
-var value =  Clazz.newIntArray (1, 0);\r
-value[0] = i;\r
-var c =  new jalview.analysis.Cluster (value);\r
-this.$cluster.addElement (c);\r
-}\r
-});\r
-Clazz.defineMethod (c$, "findLeaves", \r
-function (node, leaves) {\r
-if (node == null) {\r
-return leaves;\r
-}if ((node.left () == null) && (node.right () == null)) {\r
-leaves.addElement (node);\r
-return leaves;\r
-} else {\r
-this.findLeaves (node.left (), leaves);\r
-this.findLeaves (node.right (), leaves);\r
-}return leaves;\r
-}, "jalview.datamodel.SequenceNode,java.util.Vector");\r
-Clazz.defineMethod (c$, "findLeaf", \r
-function (node, count) {\r
-this.found = this._findLeaf (node, count);\r
-return this.found;\r
-}, "jalview.datamodel.SequenceNode,~N");\r
-Clazz.defineMethod (c$, "_findLeaf", \r
-function (node, count) {\r
-if (node == null) {\r
-return null;\r
-}if (node.ycount == count) {\r
-this.found = node.element ();\r
-return this.found;\r
-} else {\r
-this._findLeaf (node.left (), count);\r
-this._findLeaf (node.right (), count);\r
-}return this.found;\r
-}, "jalview.datamodel.SequenceNode,~N");\r
-Clazz.defineMethod (c$, "printNode", \r
-function (node) {\r
-if (node == null) {\r
-return;\r
-}if ((node.left () == null) && (node.right () == null)) {\r
-System.out.println ("Leaf = " + (node.element ()).getName ());\r
-System.out.println ("Dist " + node.dist);\r
-System.out.println ("Boot " + node.getBootstrap ());\r
-} else {\r
-System.out.println ("Dist " + node.dist);\r
-this.printNode (node.left ());\r
-this.printNode (node.right ());\r
-}}, "jalview.datamodel.SequenceNode");\r
-Clazz.defineMethod (c$, "findMaxDist", \r
-function (node) {\r
-if (node == null) {\r
-return;\r
-}if ((node.left () == null) && (node.right () == null)) {\r
-var dist = node.dist;\r
-if (dist > this.maxDistValue) {\r
-this.maxdist = node;\r
-this.maxDistValue = dist;\r
-}} else {\r
-this.findMaxDist (node.left ());\r
-this.findMaxDist (node.right ());\r
-}}, "jalview.datamodel.SequenceNode");\r
-Clazz.defineMethod (c$, "getGroups", \r
-function () {\r
-return this.groups;\r
-});\r
-Clazz.defineMethod (c$, "getMaxHeight", \r
-function () {\r
-return this.maxheight;\r
-});\r
-Clazz.defineMethod (c$, "groupNodes", \r
-function (node, threshold) {\r
-if (node == null) {\r
-return;\r
-}if ((node.height / this.maxheight) > threshold) {\r
-this.groups.addElement (node);\r
-} else {\r
-this.groupNodes (node.left (), threshold);\r
-this.groupNodes (node.right (), threshold);\r
-}}, "jalview.datamodel.SequenceNode,~N");\r
-Clazz.defineMethod (c$, "findHeight", \r
-function (node) {\r
-if (node == null) {\r
-return this.maxheight;\r
-}if ((node.left () == null) && (node.right () == null)) {\r
-node.height = (node.parent ()).height + node.dist;\r
-if (node.height > this.maxheight) {\r
-return node.height;\r
-} else {\r
-return this.maxheight;\r
-}} else {\r
-if (node.parent () != null) {\r
-node.height = (node.parent ()).height + node.dist;\r
-} else {\r
-this.maxheight = 0;\r
-node.height = 0.0;\r
-}this.maxheight = this.findHeight ((node.left ()));\r
-this.maxheight = this.findHeight ((node.right ()));\r
-}return this.maxheight;\r
-}, "jalview.datamodel.SequenceNode");\r
-Clazz.defineMethod (c$, "reRoot", \r
-function () {\r
-if (this.maxdist != null) {\r
-this.ycount = 0;\r
-var tmpdist = this.maxdist.dist;\r
-var sn =  new jalview.datamodel.SequenceNode ();\r
-sn.setParent (null);\r
-var snr = this.maxdist.parent ();\r
-this.changeDirection (snr, this.maxdist);\r
-System.out.println ("Printing reversed tree");\r
-this.printN (snr);\r
-snr.dist = tmpdist / 2;\r
-this.maxdist.dist = tmpdist / 2;\r
-snr.setParent (sn);\r
-this.maxdist.setParent (sn);\r
-sn.setRight (snr);\r
-sn.setLeft (this.maxdist);\r
-this.top = sn;\r
-this.ycount = 0;\r
-this.reCount (this.top);\r
-this.findHeight (this.top);\r
-}return this.top;\r
-});\r
-Clazz.defineMethod (c$, "hasOriginalSequenceData", \r
-function () {\r
-return this.seqData != null;\r
-});\r
-Clazz.defineMethod (c$, "printOriginalSequenceData", \r
-function (gapChar) {\r
-if (this.seqData == null) {\r
-return null;\r
-}var sb =  new StringBuffer ();\r
-var seqdatas = this.seqData.getSequenceStrings (gapChar);\r
-for (var i = 0; i < seqdatas.length; i++) {\r
-sb.append ( new jalview.util.Format ("%-15s").form (this.sequence[i].getName ()));\r
-sb.append (" " + seqdatas[i] + "\n");\r
-}\r
-return sb.toString ();\r
-}, "~S");\r
-Clazz.defineMethod (c$, "printN", \r
-function (node) {\r
-if (node == null) {\r
-return;\r
-}if ((node.left () != null) && (node.right () != null)) {\r
-this.printN (node.left ());\r
-this.printN (node.right ());\r
-} else {\r
-System.out.println (" name = " + (node.element ()).getName ());\r
-}System.out.println (" dist = " + node.dist + " " + node.count + " " + node.height);\r
-}, "jalview.datamodel.SequenceNode");\r
-Clazz.defineMethod (c$, "reCount", \r
-function (node) {\r
-this.ycount = 0;\r
-this._lycount = 0;\r
-this._reCount (node);\r
-}, "jalview.datamodel.SequenceNode");\r
-Clazz.defineMethod (c$, "_reCount", \r
-function (node) {\r
-if (node == null) {\r
-return;\r
-}this._lycount++;\r
-if ((node.left () != null) && (node.right () != null)) {\r
-this._reCount (node.left ());\r
-this._reCount (node.right ());\r
-var l = node.left ();\r
-var r = node.right ();\r
-node.count = l.count + r.count;\r
-node.ycount = (l.ycount + r.ycount) / 2;\r
-} else {\r
-node.count = 1;\r
-node.ycount = this.ycount++;\r
-}this._lycount--;\r
-}, "jalview.datamodel.SequenceNode");\r
-Clazz.defineMethod (c$, "swapNodes", \r
-function (node) {\r
-if (node == null) {\r
-return;\r
-}var tmp = node.left ();\r
-node.setLeft (node.right ());\r
-node.setRight (tmp);\r
-}, "jalview.datamodel.SequenceNode");\r
-Clazz.defineMethod (c$, "changeDirection", \r
-function (node, dir) {\r
-if (node == null) {\r
-return;\r
-}if (node.parent () !== this.top) {\r
-this.changeDirection (node.parent (), node);\r
-var tmp = node.parent ();\r
-if (dir === node.left ()) {\r
-node.setParent (dir);\r
-node.setLeft (tmp);\r
-} else if (dir === node.right ()) {\r
-node.setParent (dir);\r
-node.setRight (tmp);\r
-}} else {\r
-if (dir === node.left ()) {\r
-node.setParent (node.left ());\r
-if (this.top.left () === node) {\r
-node.setRight (this.top.right ());\r
-} else {\r
-node.setRight (this.top.left ());\r
-}} else {\r
-node.setParent (node.right ());\r
-if (this.top.left () === node) {\r
-node.setLeft (this.top.right ());\r
-} else {\r
-node.setLeft (this.top.left ());\r
-}}}}, "jalview.datamodel.SequenceNode,jalview.datamodel.SequenceNode");\r
-Clazz.defineMethod (c$, "getMaxDist", \r
-function () {\r
-return this.maxdist;\r
-});\r
-Clazz.defineMethod (c$, "getTopNode", \r
-function () {\r
-return this.top;\r
-});\r
-Clazz.defineMethod (c$, "isHasDistances", \r
-function () {\r
-return this.hasDistances;\r
-});\r
-Clazz.defineMethod (c$, "isHasBootstrap", \r
-function () {\r
-return this.hasBootstrap;\r
-});\r
-Clazz.defineMethod (c$, "isHasRootDistance", \r
-function () {\r
-return this.hasRootDistance;\r
-});\r
-Clazz.defineMethod (c$, "applyToNodes", \r
-function (nodeTransformI) {\r
-for (var nodes = this.node.elements (); nodes.hasMoreElements (); nodeTransformI.transform (nodes.nextElement ())) {\r
-;}\r
-}, "jalview.datamodel.NodeTransformI");\r
-c$.$NJTree$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.analysis, "NJTree$1", null, jalview.datamodel.NodeTransformI);\r
-Clazz.defineMethod (c$, "transform", \r
-function (node) {\r
-var el = node.element ();\r
-if (el != null && Clazz.instanceOf (el, jalview.datamodel.SequenceI)) {\r
-node.setName ((el).getName ());\r
-}}, "jalview.datamodel.BinaryNode");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.value = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis, "Cluster");\r
-Clazz.makeConstructor (c$, \r
-function (value) {\r
-this.value = value;\r
-}, "~A");\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (["java.util.Vector"], ["jalview.analysis.Cluster", "$.NJTree"], ["jalview.analysis.SequenceIdMatcher", "jalview.datamodel.AlignmentView", "$.CigarArray", "$.NodeTransformI", "$.SeqCigar", "$.Sequence", "$.SequenceI", "$.SequenceNode", "jalview.io.NewickFile", "jalview.schemes.ResidueProperties", "jalview.util.Format", "java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.$cluster = null;
+this.sequence = null;
+this.seqData = null;
+this.done = null;
+this.noseqs = 0;
+this.noClus = 0;
+this.distance = null;
+this.mini = 0;
+this.minj = 0;
+this.ri = 0;
+this.rj = 0;
+this.groups = null;
+this.maxdist = null;
+this.top = null;
+this.maxDistValue = 0;
+this.maxheight = 0;
+this.ycount = 0;
+this.node = null;
+this.type = null;
+this.pwtype = null;
+this.found = null;
+this.leaves = null;
+this.hasDistances = true;
+this.hasBootstrap = false;
+this.hasRootDistance = true;
+this._lycount = 0;
+this._lylimit = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.analysis, "NJTree");
+Clazz.prepareFields (c$, function () {
+this.groups =  new java.util.Vector ();
+});
+Clazz.makeConstructor (c$, 
+function (seqs, odata, treefile) {
+this.construct (seqs, treefile);
+if (odata != null) {
+this.seqData = odata;
+}}, "~A,jalview.datamodel.AlignmentView,jalview.io.NewickFile");
+Clazz.makeConstructor (c$, 
+function (seqs, treefile) {
+this.sequence = seqs;
+this.top = treefile.getTree ();
+this.hasDistances = treefile.HasDistances ();
+this.hasBootstrap = treefile.HasBootstrap ();
+this.hasRootDistance = treefile.HasRootDistance ();
+this.maxheight = this.findHeight (this.top);
+var algnIds =  new jalview.analysis.SequenceIdMatcher (seqs);
+var leaves =  new java.util.Vector ();
+this.findLeaves (this.top, leaves);
+var i = 0;
+var namesleft = seqs.length;
+var j;
+var nam;
+var realnam;
+var one2many =  new java.util.Vector ();
+var countOne2Many = 0;
+while (i < leaves.size ()) {
+j = leaves.elementAt (i++);
+realnam = j.getName ();
+nam = null;
+if (namesleft > -1) {
+nam = algnIds.findIdMatch (realnam);
+}if (nam != null) {
+j.setElement (nam);
+if (one2many.contains (nam)) {
+countOne2Many++;
+} else {
+one2many.addElement (nam);
+namesleft--;
+}} else {
+j.setElement ( new jalview.datamodel.Sequence (realnam, "THISISAPLACEHLDER"));
+j.setPlaceholder (true);
+}}
+}, "~A,jalview.io.NewickFile");
+Clazz.makeConstructor (c$, 
+function (sequence, seqData, type, pwtype, sm, start, end) {
+this.sequence = sequence;
+this.node =  new java.util.Vector ();
+this.type = type;
+this.pwtype = pwtype;
+if (seqData != null) {
+this.seqData = seqData;
+} else {
+var seqs =  new Array (sequence.length);
+for (var i = 0; i < sequence.length; i++) {
+seqs[i] =  new jalview.datamodel.SeqCigar (sequence[i], start, end);
+}
+var sdata =  new jalview.datamodel.CigarArray (seqs);
+sdata.addOperation ('M', end - start + 1);
+this.seqData =  new jalview.datamodel.AlignmentView (sdata, start);
+}if (!(type.equals ("NJ"))) {
+type = "AV";
+}if (sm == null && !(pwtype.equals ("PID"))) {
+if (jalview.schemes.ResidueProperties.getScoreMatrix (pwtype) == null) {
+pwtype = "BLOSUM62";
+}}var i = 0;
+this.done =  Clazz.newIntArray (sequence.length, 0);
+while ((i < sequence.length) && (sequence[i] != null)) {
+this.done[i] = 0;
+i++;
+}
+this.noseqs = i++;
+this.distance = this.findDistances (sm);
+this.makeLeaves ();
+this.noClus = this.$cluster.size ();
+this.cluster ();
+}, "~A,jalview.datamodel.AlignmentView,~S,~S,jalview.api.analysis.ScoreModelI,~N,~N");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var fout =  new jalview.io.NewickFile (this.getTopNode ());
+return fout.print (this.isHasBootstrap (), this.isHasDistances (), this.isHasRootDistance ());
+});
+Clazz.defineMethod (c$, "UpdatePlaceHolders", 
+function (list) {
+var leaves =  new java.util.Vector ();
+this.findLeaves (this.top, leaves);
+var sz = leaves.size ();
+var seqmatcher = null;
+var i = 0;
+while (i < sz) {
+var leaf = leaves.elementAt (i++);
+if (list.contains (leaf.element ())) {
+leaf.setPlaceholder (false);
+} else {
+if (seqmatcher == null) {
+var seqs =  new Array (list.size ());
+for (var j = 0; j < seqs.length; j++) {
+seqs[j] = list.get (j);
+}
+seqmatcher =  new jalview.analysis.SequenceIdMatcher (seqs);
+}var nam = seqmatcher.findIdMatch (leaf.getName ());
+if (nam != null) {
+if (!leaf.isPlaceholder ()) {
+}leaf.setPlaceholder (false);
+leaf.setElement (nam);
+} else {
+if (!leaf.isPlaceholder ()) {
+leaf.setElement ( new jalview.datamodel.Sequence (leaf.getName (), "THISISAPLACEHLDER"));
+}leaf.setPlaceholder (true);
+}}}
+}, "java.util.List");
+Clazz.defineMethod (c$, "renameAssociatedNodes", 
+function () {
+this.applyToNodes (((Clazz.isClassDefined ("jalview.analysis.NJTree$1") ? 0 : jalview.analysis.NJTree.$NJTree$1$ ()), Clazz.innerTypeInstance (jalview.analysis.NJTree$1, this, null)));
+});
+Clazz.defineMethod (c$, "cluster", 
+function () {
+while (this.noClus > 2) {
+if (this.type.equals ("NJ")) {
+this.findMinNJDistance ();
+} else {
+this.findMinDistance ();
+}var c = this.joinClusters (this.mini, this.minj);
+this.done[this.minj] = 1;
+this.$cluster.setElementAt (null, this.minj);
+this.$cluster.setElementAt (c, this.mini);
+this.noClus--;
+}
+var onefound = false;
+var one = -1;
+var two = -1;
+for (var i = 0; i < this.noseqs; i++) {
+if (this.done[i] != 1) {
+if (onefound == false) {
+two = i;
+onefound = true;
+} else {
+one = i;
+}}}
+this.joinClusters (one, two);
+this.top = (this.node.elementAt (one));
+this.reCount (this.top);
+this.findHeight (this.top);
+this.findMaxDist (this.top);
+});
+Clazz.defineMethod (c$, "joinClusters", 
+function (i, j) {
+var dist = this.distance[i][j];
+var noi = (this.$cluster.elementAt (i)).value.length;
+var noj = (this.$cluster.elementAt (j)).value.length;
+var value =  Clazz.newIntArray (noi + noj, 0);
+for (var ii = 0; ii < noi; ii++) {
+value[ii] = (this.$cluster.elementAt (i)).value[ii];
+}
+for (var ii = noi; ii < (noi + noj); ii++) {
+value[ii] = (this.$cluster.elementAt (j)).value[ii - noi];
+}
+var c =  new jalview.analysis.Cluster (value);
+this.ri = this.findr (i, j);
+this.rj = this.findr (j, i);
+if (this.type.equals ("NJ")) {
+this.findClusterNJDistance (i, j);
+} else {
+this.findClusterDistance (i, j);
+}var sn =  new jalview.datamodel.SequenceNode ();
+sn.setLeft ((this.node.elementAt (i)));
+sn.setRight ((this.node.elementAt (j)));
+var tmpi = (this.node.elementAt (i));
+var tmpj = (this.node.elementAt (j));
+if (this.type.equals ("NJ")) {
+this.findNewNJDistances (tmpi, tmpj, dist);
+} else {
+this.findNewDistances (tmpi, tmpj, dist);
+}tmpi.setParent (sn);
+tmpj.setParent (sn);
+this.node.setElementAt (sn, i);
+return c;
+}, "~N,~N");
+Clazz.defineMethod (c$, "findNewNJDistances", 
+function (tmpi, tmpj, dist) {
+tmpi.dist = ((dist + this.ri) - this.rj) / 2;
+tmpj.dist = (dist - tmpi.dist);
+if (tmpi.dist < 0) {
+tmpi.dist = 0;
+}if (tmpj.dist < 0) {
+tmpj.dist = 0;
+}}, "jalview.datamodel.SequenceNode,jalview.datamodel.SequenceNode,~N");
+Clazz.defineMethod (c$, "findNewDistances", 
+function (tmpi, tmpj, dist) {
+var ih = 0;
+var jh = 0;
+var sni = tmpi;
+var snj = tmpj;
+while (sni != null) {
+ih = ih + sni.dist;
+sni = sni.left ();
+}
+while (snj != null) {
+jh = jh + snj.dist;
+snj = snj.left ();
+}
+tmpi.dist = ((dist / 2) - ih);
+tmpj.dist = ((dist / 2) - jh);
+}, "jalview.datamodel.SequenceNode,jalview.datamodel.SequenceNode,~N");
+Clazz.defineMethod (c$, "findClusterDistance", 
+function (i, j) {
+var noi = (this.$cluster.elementAt (i)).value.length;
+var noj = (this.$cluster.elementAt (j)).value.length;
+var newdist =  Clazz.newFloatArray (this.noseqs, 0);
+for (var l = 0; l < this.noseqs; l++) {
+if ((l != i) && (l != j)) {
+newdist[l] = ((this.distance[i][l] * noi) + (this.distance[j][l] * noj)) / (noi + noj);
+} else {
+newdist[l] = 0;
+}}
+for (var ii = 0; ii < this.noseqs; ii++) {
+this.distance[i][ii] = newdist[ii];
+this.distance[ii][i] = newdist[ii];
+}
+}, "~N,~N");
+Clazz.defineMethod (c$, "findClusterNJDistance", 
+function (i, j) {
+var newdist =  Clazz.newFloatArray (this.noseqs, 0);
+for (var l = 0; l < this.noseqs; l++) {
+if ((l != i) && (l != j)) {
+newdist[l] = ((this.distance[i][l] + this.distance[j][l]) - this.distance[i][j]) / 2;
+} else {
+newdist[l] = 0;
+}}
+for (var ii = 0; ii < this.noseqs; ii++) {
+this.distance[i][ii] = newdist[ii];
+this.distance[ii][i] = newdist[ii];
+}
+}, "~N,~N");
+Clazz.defineMethod (c$, "findr", 
+function (i, j) {
+var tmp = 1;
+for (var k = 0; k < this.noseqs; k++) {
+if ((k != i) && (k != j) && (this.done[k] != 1)) {
+tmp = tmp + this.distance[i][k];
+}}
+if (this.noClus > 2) {
+tmp = tmp / (this.noClus - 2);
+}return tmp;
+}, "~N,~N");
+Clazz.defineMethod (c$, "findMinNJDistance", 
+function () {
+var min = 100000;
+for (var i = 0; i < (this.noseqs - 1); i++) {
+for (var j = i + 1; j < this.noseqs; j++) {
+if ((this.done[i] != 1) && (this.done[j] != 1)) {
+var tmp = this.distance[i][j] - (this.findr (i, j) + this.findr (j, i));
+if (tmp < min) {
+this.mini = i;
+this.minj = j;
+min = tmp;
+}}}
+}
+return min;
+});
+Clazz.defineMethod (c$, "findMinDistance", 
+function () {
+var min = 100000;
+for (var i = 0; i < (this.noseqs - 1); i++) {
+for (var j = i + 1; j < this.noseqs; j++) {
+if ((this.done[i] != 1) && (this.done[j] != 1)) {
+if (this.distance[i][j] < min) {
+this.mini = i;
+this.minj = j;
+min = this.distance[i][j];
+}}}
+}
+return min;
+});
+Clazz.defineMethod (c$, "findDistances", 
+function (_pwmatrix) {
+var distance =  Clazz.newFloatArray (this.noseqs, this.noseqs, 0);
+if (_pwmatrix == null) {
+_pwmatrix = jalview.schemes.ResidueProperties.getScoreModel (this.pwtype);
+if (_pwmatrix == null) {
+_pwmatrix = jalview.schemes.ResidueProperties.getScoreMatrix ("BLOSUM62");
+}}distance = _pwmatrix.findDistances (this.seqData);
+return distance;
+}, "jalview.api.analysis.ScoreModelI");
+Clazz.defineMethod (c$, "makeLeaves", 
+function () {
+this.$cluster =  new java.util.Vector ();
+for (var i = 0; i < this.noseqs; i++) {
+var sn =  new jalview.datamodel.SequenceNode ();
+sn.setElement (this.sequence[i]);
+sn.setName (this.sequence[i].getName ());
+this.node.addElement (sn);
+var value =  Clazz.newIntArray (1, 0);
+value[0] = i;
+var c =  new jalview.analysis.Cluster (value);
+this.$cluster.addElement (c);
+}
+});
+Clazz.defineMethod (c$, "findLeaves", 
+function (node, leaves) {
+if (node == null) {
+return leaves;
+}if ((node.left () == null) && (node.right () == null)) {
+leaves.addElement (node);
+return leaves;
+} else {
+this.findLeaves (node.left (), leaves);
+this.findLeaves (node.right (), leaves);
+}return leaves;
+}, "jalview.datamodel.SequenceNode,java.util.Vector");
+Clazz.defineMethod (c$, "findLeaf", 
+function (node, count) {
+this.found = this._findLeaf (node, count);
+return this.found;
+}, "jalview.datamodel.SequenceNode,~N");
+Clazz.defineMethod (c$, "_findLeaf", 
+function (node, count) {
+if (node == null) {
+return null;
+}if (node.ycount == count) {
+this.found = node.element ();
+return this.found;
+} else {
+this._findLeaf (node.left (), count);
+this._findLeaf (node.right (), count);
+}return this.found;
+}, "jalview.datamodel.SequenceNode,~N");
+Clazz.defineMethod (c$, "printNode", 
+function (node) {
+if (node == null) {
+return;
+}if ((node.left () == null) && (node.right () == null)) {
+System.out.println ("Leaf = " + (node.element ()).getName ());
+System.out.println ("Dist " + node.dist);
+System.out.println ("Boot " + node.getBootstrap ());
+} else {
+System.out.println ("Dist " + node.dist);
+this.printNode (node.left ());
+this.printNode (node.right ());
+}}, "jalview.datamodel.SequenceNode");
+Clazz.defineMethod (c$, "findMaxDist", 
+function (node) {
+if (node == null) {
+return;
+}if ((node.left () == null) && (node.right () == null)) {
+var dist = node.dist;
+if (dist > this.maxDistValue) {
+this.maxdist = node;
+this.maxDistValue = dist;
+}} else {
+this.findMaxDist (node.left ());
+this.findMaxDist (node.right ());
+}}, "jalview.datamodel.SequenceNode");
+Clazz.defineMethod (c$, "getGroups", 
+function () {
+return this.groups;
+});
+Clazz.defineMethod (c$, "getMaxHeight", 
+function () {
+return this.maxheight;
+});
+Clazz.defineMethod (c$, "groupNodes", 
+function (node, threshold) {
+if (node == null) {
+return;
+}if ((node.height / this.maxheight) > threshold) {
+this.groups.addElement (node);
+} else {
+this.groupNodes (node.left (), threshold);
+this.groupNodes (node.right (), threshold);
+}}, "jalview.datamodel.SequenceNode,~N");
+Clazz.defineMethod (c$, "findHeight", 
+function (node) {
+if (node == null) {
+return this.maxheight;
+}if ((node.left () == null) && (node.right () == null)) {
+node.height = (node.parent ()).height + node.dist;
+if (node.height > this.maxheight) {
+return node.height;
+} else {
+return this.maxheight;
+}} else {
+if (node.parent () != null) {
+node.height = (node.parent ()).height + node.dist;
+} else {
+this.maxheight = 0;
+node.height = 0.0;
+}this.maxheight = this.findHeight ((node.left ()));
+this.maxheight = this.findHeight ((node.right ()));
+}return this.maxheight;
+}, "jalview.datamodel.SequenceNode");
+Clazz.defineMethod (c$, "reRoot", 
+function () {
+if (this.maxdist != null) {
+this.ycount = 0;
+var tmpdist = this.maxdist.dist;
+var sn =  new jalview.datamodel.SequenceNode ();
+sn.setParent (null);
+var snr = this.maxdist.parent ();
+this.changeDirection (snr, this.maxdist);
+System.out.println ("Printing reversed tree");
+this.printN (snr);
+snr.dist = tmpdist / 2;
+this.maxdist.dist = tmpdist / 2;
+snr.setParent (sn);
+this.maxdist.setParent (sn);
+sn.setRight (snr);
+sn.setLeft (this.maxdist);
+this.top = sn;
+this.ycount = 0;
+this.reCount (this.top);
+this.findHeight (this.top);
+}return this.top;
+});
+Clazz.defineMethod (c$, "hasOriginalSequenceData", 
+function () {
+return this.seqData != null;
+});
+Clazz.defineMethod (c$, "printOriginalSequenceData", 
+function (gapChar) {
+if (this.seqData == null) {
+return null;
+}var sb =  new StringBuffer ();
+var seqdatas = this.seqData.getSequenceStrings (gapChar);
+for (var i = 0; i < seqdatas.length; i++) {
+sb.append ( new jalview.util.Format ("%-15s").form (this.sequence[i].getName ()));
+sb.append (" " + seqdatas[i] + "\n");
+}
+return sb.toString ();
+}, "~S");
+Clazz.defineMethod (c$, "printN", 
+function (node) {
+if (node == null) {
+return;
+}if ((node.left () != null) && (node.right () != null)) {
+this.printN (node.left ());
+this.printN (node.right ());
+} else {
+System.out.println (" name = " + (node.element ()).getName ());
+}System.out.println (" dist = " + node.dist + " " + node.count + " " + node.height);
+}, "jalview.datamodel.SequenceNode");
+Clazz.defineMethod (c$, "reCount", 
+function (node) {
+this.ycount = 0;
+this._lycount = 0;
+this._reCount (node);
+}, "jalview.datamodel.SequenceNode");
+Clazz.defineMethod (c$, "_reCount", 
+function (node) {
+if (node == null) {
+return;
+}this._lycount++;
+if ((node.left () != null) && (node.right () != null)) {
+this._reCount (node.left ());
+this._reCount (node.right ());
+var l = node.left ();
+var r = node.right ();
+node.count = l.count + r.count;
+node.ycount = (l.ycount + r.ycount) / 2;
+} else {
+node.count = 1;
+node.ycount = this.ycount++;
+}this._lycount--;
+}, "jalview.datamodel.SequenceNode");
+Clazz.defineMethod (c$, "swapNodes", 
+function (node) {
+if (node == null) {
+return;
+}var tmp = node.left ();
+node.setLeft (node.right ());
+node.setRight (tmp);
+}, "jalview.datamodel.SequenceNode");
+Clazz.defineMethod (c$, "changeDirection", 
+function (node, dir) {
+if (node == null) {
+return;
+}if (node.parent () !== this.top) {
+this.changeDirection (node.parent (), node);
+var tmp = node.parent ();
+if (dir === node.left ()) {
+node.setParent (dir);
+node.setLeft (tmp);
+} else if (dir === node.right ()) {
+node.setParent (dir);
+node.setRight (tmp);
+}} else {
+if (dir === node.left ()) {
+node.setParent (node.left ());
+if (this.top.left () === node) {
+node.setRight (this.top.right ());
+} else {
+node.setRight (this.top.left ());
+}} else {
+node.setParent (node.right ());
+if (this.top.left () === node) {
+node.setLeft (this.top.right ());
+} else {
+node.setLeft (this.top.left ());
+}}}}, "jalview.datamodel.SequenceNode,jalview.datamodel.SequenceNode");
+Clazz.defineMethod (c$, "getMaxDist", 
+function () {
+return this.maxdist;
+});
+Clazz.defineMethod (c$, "getTopNode", 
+function () {
+return this.top;
+});
+Clazz.defineMethod (c$, "isHasDistances", 
+function () {
+return this.hasDistances;
+});
+Clazz.defineMethod (c$, "isHasBootstrap", 
+function () {
+return this.hasBootstrap;
+});
+Clazz.defineMethod (c$, "isHasRootDistance", 
+function () {
+return this.hasRootDistance;
+});
+Clazz.defineMethod (c$, "applyToNodes", 
+function (nodeTransformI) {
+for (var nodes = this.node.elements (); nodes.hasMoreElements (); nodeTransformI.transform (nodes.nextElement ())) {
+;}
+}, "jalview.datamodel.NodeTransformI");
+c$.$NJTree$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.analysis, "NJTree$1", null, jalview.datamodel.NodeTransformI);
+Clazz.defineMethod (c$, "transform", 
+function (node) {
+var el = node.element ();
+if (el != null && Clazz.instanceOf (el, jalview.datamodel.SequenceI)) {
+node.setName ((el).getName ());
+}}, "jalview.datamodel.BinaryNode");
+c$ = Clazz.p0p ();
+};
+c$ = Clazz.decorateAsClass (function () {
+this.value = null;
+Clazz.instantialize (this, arguments);
+}, jalview.analysis, "Cluster");
+Clazz.makeConstructor (c$, 
+function (value) {
+this.value = value;
+}, "~A");
+});
index c9e885c..5effde0 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (["java.lang.StringBuffer"], "jalview.analysis.PCA", ["jalview.datamodel.BinarySequence", "jalview.math.Matrix", "jalview.schemes.ResidueProperties"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.m = null;\r
-this.symm = null;\r
-this.m2 = null;\r
-this.eigenvalue = null;\r
-this.eigenvector = null;\r
-this.details = null;\r
-this.jvCalcMode = true;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis, "PCA", null, Runnable);\r
-Clazz.prepareFields (c$, function () {\r
-this.details =  new StringBuffer ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (s) {\r
-this.construct (s, false);\r
-}, "~A");\r
-Clazz.makeConstructor (c$, \r
-function (s, nucleotides) {\r
-this.construct (s, nucleotides, null);\r
-}, "~A,~B");\r
-Clazz.makeConstructor (c$, \r
-function (s, nucleotides, s_m) {\r
-var bs =  new Array (s.length);\r
-var ii = 0;\r
-while ((ii < s.length) && (s[ii] != null)) {\r
-bs[ii] =  new jalview.datamodel.BinarySequence (s[ii], nucleotides);\r
-bs[ii].encode ();\r
-ii++;\r
-}\r
-var bs2 =  new Array (s.length);\r
-ii = 0;\r
-var smtrx = null;\r
-var sm = s_m;\r
-if (sm != null) {\r
-smtrx = jalview.schemes.ResidueProperties.getScoreMatrix (sm);\r
-}if (smtrx == null) {\r
-smtrx = jalview.schemes.ResidueProperties.getScoreMatrix (sm = (nucleotides ? "DNA" : "BLOSUM62"));\r
-}this.details.append ("PCA calculation using " + sm + " sequence similarity matrix\n========\n\n");\r
-while ((ii < s.length) && (s[ii] != null)) {\r
-bs2[ii] =  new jalview.datamodel.BinarySequence (s[ii], nucleotides);\r
-if (smtrx != null) {\r
-try {\r
-bs2[ii].matrixEncode (smtrx);\r
-} catch (x) {\r
-if (Clazz.exceptionOf (x, jalview.datamodel.BinarySequence.InvalidSequenceTypeException)) {\r
-this.details.append ("Unexpected mismatch of sequence type and score matrix. Calculation will not be valid!\n\n");\r
-} else {\r
-throw x;\r
-}\r
-}\r
-}ii++;\r
-}\r
-var count = 0;\r
-while ((count < bs.length) && (bs[count] != null)) {\r
-count++;\r
-}\r
-var seqmat =  Clazz.newDoubleArray (count, bs[0].getDBinary ().length, 0);\r
-var seqmat2 =  Clazz.newDoubleArray (count, bs2[0].getDBinary ().length, 0);\r
-var i = 0;\r
-while (i < count) {\r
-seqmat[i] = bs[i].getDBinary ();\r
-seqmat2[i] = bs2[i].getDBinary ();\r
-i++;\r
-}\r
-this.m =  new jalview.math.Matrix (seqmat, count, bs[0].getDBinary ().length);\r
-this.m2 =  new jalview.math.Matrix (seqmat2, count, bs2[0].getDBinary ().length);\r
-}, "~A,~B,~S");\r
-Clazz.defineMethod (c$, "getM", \r
-function () {\r
-return this.m;\r
-});\r
-Clazz.defineMethod (c$, "getEigenvalue", \r
-function (i) {\r
-return this.eigenvector.d[i];\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getComponents", \r
-function (l, n, mm, factor) {\r
-var out =  Clazz.newFloatArray (this.m.rows, 3, 0);\r
-for (var i = 0; i < this.m.rows; i++) {\r
-out[i][0] = this.component (i, l) * factor;\r
-out[i][1] = this.component (i, n) * factor;\r
-out[i][2] = this.component (i, mm) * factor;\r
-}\r
-return out;\r
-}, "~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "component", \r
-function (n) {\r
-var out =  Clazz.newDoubleArray (this.m.rows, 0);\r
-for (var i = 0; i < this.m.rows; i++) {\r
-out[i] = this.component (i, n);\r
-}\r
-return out;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "component", \r
-function (row, n) {\r
-var out = 0.0;\r
-for (var i = 0; i < this.symm.cols; i++) {\r
-out += (this.symm.value[row][i] * this.eigenvector.value[i][n]);\r
-}\r
-return out / this.eigenvector.d[n];\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getDetails", \r
-function () {\r
-return this.details.toString ();\r
-});\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-var ps = ((Clazz.isClassDefined ("jalview.analysis.PCA$1") ? 0 : jalview.analysis.PCA.$PCA$1$ ()), Clazz.innerTypeInstance (jalview.analysis.PCA$1, this, null, System.out));\r
-try {\r
-this.details.append ("PCA Calculation Mode is " + (this.jvCalcMode ? "Jalview variant" : "Original SeqSpace") + "\n");\r
-var mt = this.m.transpose ();\r
-this.details.append (" --- OrigT * Orig ---- \n");\r
-if (!this.jvCalcMode) {\r
-this.eigenvector = mt.preMultiply (this.m);\r
-} else {\r
-this.eigenvector = mt.preMultiply (this.m2);\r
-}this.eigenvector.print (ps);\r
-this.symm = this.eigenvector.copy ();\r
-this.eigenvector.tred ();\r
-this.details.append (" ---Tridiag transform matrix ---\n");\r
-this.details.append (" --- D vector ---\n");\r
-this.eigenvector.printD (ps);\r
-ps.println ();\r
-this.details.append ("--- E vector ---\n");\r
-this.eigenvector.printE (ps);\r
-ps.println ();\r
-this.eigenvector.tqli ();\r
-} catch (q) {\r
-if (Clazz.exceptionOf (q, Exception)) {\r
-q.printStackTrace ();\r
-this.details.append ("\n*** Unexpected exception when performing PCA ***\n" + q.getLocalizedMessage ());\r
-this.details.append ("*** Matrices below may not be fully diagonalised. ***\n");\r
-} else {\r
-throw q;\r
-}\r
-}\r
-this.details.append (" --- New diagonalization matrix ---\n");\r
-this.eigenvector.print (ps);\r
-this.details.append (" --- Eigenvalues ---\n");\r
-this.eigenvector.printD (ps);\r
-ps.println ();\r
-});\r
-Clazz.defineMethod (c$, "setJvCalcMode", \r
-function (calcMode) {\r
-this.jvCalcMode = calcMode;\r
-}, "~B");\r
-c$.$PCA$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.analysis, "PCA$1", java.io.PrintStream);\r
-Clazz.defineMethod (c$, "print", \r
-function (x) {\r
-this.b$["jalview.analysis.PCA"].details.append (x);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "println", \r
-function () {\r
-this.b$["jalview.analysis.PCA"].details.append ("\n");\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (["java.lang.StringBuffer"], "jalview.analysis.PCA", ["jalview.datamodel.BinarySequence", "jalview.math.Matrix", "jalview.schemes.ResidueProperties"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.m = null;
+this.symm = null;
+this.m2 = null;
+this.eigenvalue = null;
+this.eigenvector = null;
+this.details = null;
+this.jvCalcMode = true;
+Clazz.instantialize (this, arguments);
+}, jalview.analysis, "PCA", null, Runnable);
+Clazz.prepareFields (c$, function () {
+this.details =  new StringBuffer ();
+});
+Clazz.makeConstructor (c$, 
+function (s) {
+this.construct (s, false);
+}, "~A");
+Clazz.makeConstructor (c$, 
+function (s, nucleotides) {
+this.construct (s, nucleotides, null);
+}, "~A,~B");
+Clazz.makeConstructor (c$, 
+function (s, nucleotides, s_m) {
+var bs =  new Array (s.length);
+var ii = 0;
+while ((ii < s.length) && (s[ii] != null)) {
+bs[ii] =  new jalview.datamodel.BinarySequence (s[ii], nucleotides);
+bs[ii].encode ();
+ii++;
+}
+var bs2 =  new Array (s.length);
+ii = 0;
+var smtrx = null;
+var sm = s_m;
+if (sm != null) {
+smtrx = jalview.schemes.ResidueProperties.getScoreMatrix (sm);
+}if (smtrx == null) {
+smtrx = jalview.schemes.ResidueProperties.getScoreMatrix (sm = (nucleotides ? "DNA" : "BLOSUM62"));
+}this.details.append ("PCA calculation using " + sm + " sequence similarity matrix\n========\n\n");
+while ((ii < s.length) && (s[ii] != null)) {
+bs2[ii] =  new jalview.datamodel.BinarySequence (s[ii], nucleotides);
+if (smtrx != null) {
+try {
+bs2[ii].matrixEncode (smtrx);
+} catch (x) {
+if (Clazz.exceptionOf (x, jalview.datamodel.BinarySequence.InvalidSequenceTypeException)) {
+this.details.append ("Unexpected mismatch of sequence type and score matrix. Calculation will not be valid!\n\n");
+} else {
+throw x;
+}
+}
+}ii++;
+}
+var count = 0;
+while ((count < bs.length) && (bs[count] != null)) {
+count++;
+}
+var seqmat =  Clazz.newDoubleArray (count, bs[0].getDBinary ().length, 0);
+var seqmat2 =  Clazz.newDoubleArray (count, bs2[0].getDBinary ().length, 0);
+var i = 0;
+while (i < count) {
+seqmat[i] = bs[i].getDBinary ();
+seqmat2[i] = bs2[i].getDBinary ();
+i++;
+}
+this.m =  new jalview.math.Matrix (seqmat, count, bs[0].getDBinary ().length);
+this.m2 =  new jalview.math.Matrix (seqmat2, count, bs2[0].getDBinary ().length);
+}, "~A,~B,~S");
+Clazz.defineMethod (c$, "getM", 
+function () {
+return this.m;
+});
+Clazz.defineMethod (c$, "getEigenvalue", 
+function (i) {
+return this.eigenvector.d[i];
+}, "~N");
+Clazz.defineMethod (c$, "getComponents", 
+function (l, n, mm, factor) {
+var out =  Clazz.newFloatArray (this.m.rows, 3, 0);
+for (var i = 0; i < this.m.rows; i++) {
+out[i][0] = this.component (i, l) * factor;
+out[i][1] = this.component (i, n) * factor;
+out[i][2] = this.component (i, mm) * factor;
+}
+return out;
+}, "~N,~N,~N,~N");
+Clazz.defineMethod (c$, "component", 
+function (n) {
+var out =  Clazz.newDoubleArray (this.m.rows, 0);
+for (var i = 0; i < this.m.rows; i++) {
+out[i] = this.component (i, n);
+}
+return out;
+}, "~N");
+Clazz.defineMethod (c$, "component", 
+function (row, n) {
+var out = 0.0;
+for (var i = 0; i < this.symm.cols; i++) {
+out += (this.symm.value[row][i] * this.eigenvector.value[i][n]);
+}
+return out / this.eigenvector.d[n];
+}, "~N,~N");
+Clazz.defineMethod (c$, "getDetails", 
+function () {
+return this.details.toString ();
+});
+Clazz.overrideMethod (c$, "run", 
+function () {
+var ps = ((Clazz.isClassDefined ("jalview.analysis.PCA$1") ? 0 : jalview.analysis.PCA.$PCA$1$ ()), Clazz.innerTypeInstance (jalview.analysis.PCA$1, this, null, System.out));
+try {
+this.details.append ("PCA Calculation Mode is " + (this.jvCalcMode ? "Jalview variant" : "Original SeqSpace") + "\n");
+var mt = this.m.transpose ();
+this.details.append (" --- OrigT * Orig ---- \n");
+if (!this.jvCalcMode) {
+this.eigenvector = mt.preMultiply (this.m);
+} else {
+this.eigenvector = mt.preMultiply (this.m2);
+}this.eigenvector.print (ps);
+this.symm = this.eigenvector.copy ();
+this.eigenvector.tred ();
+this.details.append (" ---Tridiag transform matrix ---\n");
+this.details.append (" --- D vector ---\n");
+this.eigenvector.printD (ps);
+ps.println ();
+this.details.append ("--- E vector ---\n");
+this.eigenvector.printE (ps);
+ps.println ();
+this.eigenvector.tqli ();
+} catch (q) {
+if (Clazz.exceptionOf (q, Exception)) {
+q.printStackTrace ();
+this.details.append ("\n*** Unexpected exception when performing PCA ***\n" + q.getLocalizedMessage ());
+this.details.append ("*** Matrices below may not be fully diagonalised. ***\n");
+} else {
+throw q;
+}
+}
+this.details.append (" --- New diagonalization matrix ---\n");
+this.eigenvector.print (ps);
+this.details.append (" --- Eigenvalues ---\n");
+this.eigenvector.printD (ps);
+ps.println ();
+});
+Clazz.defineMethod (c$, "setJvCalcMode", 
+function (calcMode) {
+this.jvCalcMode = calcMode;
+}, "~B");
+c$.$PCA$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.analysis, "PCA$1", java.io.PrintStream);
+Clazz.defineMethod (c$, "print", 
+function (x) {
+this.b$["jalview.analysis.PCA"].details.append (x);
+}, "~S");
+Clazz.defineMethod (c$, "println", 
+function () {
+this.b$["jalview.analysis.PCA"].details.append ("\n");
+});
+c$ = Clazz.p0p ();
+};
+});
index d18979d..c117d07 100644 (file)
@@ -1,75 +1,75 @@
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (null, "jalview.analysis.ParseProperties", ["jalview.datamodel.AlignmentAnnotation", "jalview.jsdev.RegExp", "java.lang.Double"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.al = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis, "ParseProperties");\r
-Clazz.makeConstructor (c$, \r
-function (al) {\r
-this.al = al;\r
-}, "jalview.datamodel.AlignmentI");\r
-Clazz.defineMethod (c$, "getScoresFromDescription", \r
-function (ScoreName, ScoreDescriptions, regex, repeat) {\r
-return this.getScoresFromDescription ( Clazz.newArray (-1, [ScoreName]),  Clazz.newArray (-1, [ScoreDescriptions]), regex, repeat);\r
-}, "~S,~S,~S,~B");\r
-Clazz.defineMethod (c$, "getScoresFromDescription", \r
-function (ScoreNames, ScoreDescriptions, regex, repeat) {\r
-return this.getScoresFromDescription (this.al.getSequencesArray (), ScoreNames, ScoreDescriptions, regex, repeat);\r
-}, "~A,~A,~S,~B");\r
-Clazz.defineMethod (c$, "getScoresFromDescription", \r
-function (seqs, ScoreNames, ScoreDescriptions, regex, repeat) {\r
-var count = 0;\r
-var pattern = jalview.jsdev.RegExp.newRegex ([regex]);\r
-if (pattern.numSubs () > ScoreNames.length) {\r
-var onamelen = ScoreNames.length;\r
-var tnames =  new Array (pattern.numSubs () + 1);\r
-System.arraycopy (ScoreNames, 0, tnames, 0, ScoreNames.length);\r
-var base = tnames[ScoreNames.length - 1];\r
-ScoreNames = tnames;\r
-var descrbase = ScoreDescriptions[onamelen - 1];\r
-if (descrbase == null) {\r
-descrbase = "Score parsed from (" + regex + ")";\r
-}tnames =  new Array (pattern.numSubs () + 1);\r
-System.arraycopy (ScoreDescriptions, 0, tnames, 0, ScoreDescriptions.length);\r
-ScoreDescriptions = tnames;\r
-for (var i = onamelen; i < ScoreNames.length; i++) {\r
-ScoreNames[i] = base + "_" + i;\r
-ScoreDescriptions[i] = descrbase + " (column " + i + ")";\r
-}\r
-}for (var i = 0; i < seqs.length; i++) {\r
-var descr = seqs[i].getDescription ();\r
-if (descr == null) {\r
-continue;\r
-}var pos = 0;\r
-var added = false;\r
-var reps = 0;\r
-while ((repeat || pos == 0) && pattern.searchFrom (descr, pos)) {\r
-pos = pattern.matchedTo ();\r
-for (var cols = 0; cols < pattern.numSubs (); cols++) {\r
-var sstring = pattern.stringMatchedI (cols + 1);\r
-var score = NaN;\r
-try {\r
-score =  new Double (sstring).doubleValue ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-continue;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-var an =  new jalview.datamodel.AlignmentAnnotation (ScoreNames[cols] + ((reps > 0) ? "_" + reps : ""), ScoreDescriptions[cols], null);\r
-an.setScore (score);\r
-System.out.println (seqs[i].getName () + " score: '" + ScoreNames[cols] + "' = " + score);\r
-an.setSequenceRef (seqs[i]);\r
-seqs[i].addAlignmentAnnotation (an);\r
-this.al.addAnnotation (an);\r
-added = true;\r
-}\r
-reps++;\r
-}\r
-if (added) {\r
-count++;\r
-}}\r
-return count;\r
-}, "~A,~A,~A,~S,~B");\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (null, "jalview.analysis.ParseProperties", ["jalview.datamodel.AlignmentAnnotation", "jalview.jsdev.RegExp", "java.lang.Double"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.al = null;
+Clazz.instantialize (this, arguments);
+}, jalview.analysis, "ParseProperties");
+Clazz.makeConstructor (c$, 
+function (al) {
+this.al = al;
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "getScoresFromDescription", 
+function (ScoreName, ScoreDescriptions, regex, repeat) {
+return this.getScoresFromDescription ( Clazz.newArray (-1, [ScoreName]),  Clazz.newArray (-1, [ScoreDescriptions]), regex, repeat);
+}, "~S,~S,~S,~B");
+Clazz.defineMethod (c$, "getScoresFromDescription", 
+function (ScoreNames, ScoreDescriptions, regex, repeat) {
+return this.getScoresFromDescription (this.al.getSequencesArray (), ScoreNames, ScoreDescriptions, regex, repeat);
+}, "~A,~A,~S,~B");
+Clazz.defineMethod (c$, "getScoresFromDescription", 
+function (seqs, ScoreNames, ScoreDescriptions, regex, repeat) {
+var count = 0;
+var pattern = jalview.jsdev.RegExp.newRegex ([regex]);
+if (pattern.numSubs () > ScoreNames.length) {
+var onamelen = ScoreNames.length;
+var tnames =  new Array (pattern.numSubs () + 1);
+System.arraycopy (ScoreNames, 0, tnames, 0, ScoreNames.length);
+var base = tnames[ScoreNames.length - 1];
+ScoreNames = tnames;
+var descrbase = ScoreDescriptions[onamelen - 1];
+if (descrbase == null) {
+descrbase = "Score parsed from (" + regex + ")";
+}tnames =  new Array (pattern.numSubs () + 1);
+System.arraycopy (ScoreDescriptions, 0, tnames, 0, ScoreDescriptions.length);
+ScoreDescriptions = tnames;
+for (var i = onamelen; i < ScoreNames.length; i++) {
+ScoreNames[i] = base + "_" + i;
+ScoreDescriptions[i] = descrbase + " (column " + i + ")";
+}
+}for (var i = 0; i < seqs.length; i++) {
+var descr = seqs[i].getDescription ();
+if (descr == null) {
+continue;
+}var pos = 0;
+var added = false;
+var reps = 0;
+while ((repeat || pos == 0) && pattern.searchFrom (descr, pos)) {
+pos = pattern.matchedTo ();
+for (var cols = 0; cols < pattern.numSubs (); cols++) {
+var sstring = pattern.stringMatchedI (cols + 1);
+var score = NaN;
+try {
+score =  new Double (sstring).doubleValue ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+continue;
+} else {
+throw e;
+}
+}
+var an =  new jalview.datamodel.AlignmentAnnotation (ScoreNames[cols] + ((reps > 0) ? "_" + reps : ""), ScoreDescriptions[cols], null);
+an.setScore (score);
+System.out.println (seqs[i].getName () + " score: '" + ScoreNames[cols] + "' = " + score);
+an.setSequenceRef (seqs[i]);
+seqs[i].addAlignmentAnnotation (an);
+this.al.addAnnotation (an);
+added = true;
+}
+reps++;
+}
+if (added) {
+count++;
+}}
+return count;
+}, "~A,~A,~A,~S,~B");
+});
index 0ed5a63..4b23f2d 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (["java.util.Arrays", "$.HashSet", "$.Hashtable"], "jalview.analysis.Rna", ["jalview.analysis.SecStrConsensus", "$.WUSSParseException", "jalview.datamodel.SequenceFeature", "jalview.util.MessageManager", "java.lang.StringBuffer", "java.util.ArrayList", "$.Stack", "$.Vector"], function () {\r
-c$ = Clazz.declareType (jalview.analysis, "Rna");\r
-c$.isOpeningParenthesis = Clazz.defineMethod (c$, "isOpeningParenthesis", \r
-($fz = function (c) {\r
-return jalview.analysis.Rna.openingParsSet.contains (new Character (c).charCodeAt (0));\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-c$.isClosingParenthesis = Clazz.defineMethod (c$, "isClosingParenthesis", \r
-($fz = function (c) {\r
-return jalview.analysis.Rna.closingParsSet.contains (new Character (c).charCodeAt (0));\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-c$.matchingOpeningParenthesis = Clazz.defineMethod (c$, "matchingOpeningParenthesis", \r
-($fz = function (closingParenthesis) {\r
-if (!jalview.analysis.Rna.isClosingParenthesis (closingParenthesis)) {\r
-throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.querying_matching_opening_parenthesis_for_non_closing_parenthesis",  Clazz.newArray (-1, [ new StringBuffer (closingParenthesis.charCodeAt (0)).toString ()])), -1);\r
-}return String.fromCharCode (jalview.analysis.Rna.closingToOpening.get (new Character (closingParenthesis).charCodeAt (0)));\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-c$.GetSimpleBPs = Clazz.defineMethod (c$, "GetSimpleBPs", \r
-function (line) {\r
-var stacks =  new java.util.Hashtable ();\r
-var pairs =  new java.util.Vector ();\r
-var i = 0;\r
-while (i < line.length) {\r
-var base = line.charAt (i);\r
-if (jalview.analysis.Rna.isOpeningParenthesis (base)) {\r
-if (!stacks.containsKey (new Character (base).charCodeAt (0))) {\r
-stacks.put (new Character (base).charCodeAt (0),  new java.util.Stack ());\r
-}stacks.get (new Character (base).charCodeAt (0)).push (new Integer (i));\r
-} else if (jalview.analysis.Rna.isClosingParenthesis (base)) {\r
-var opening = jalview.analysis.Rna.matchingOpeningParenthesis (base);\r
-if (!stacks.containsKey (new Character (opening).charCodeAt (0))) {\r
-throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.mismatched_unseen_closing_char",  Clazz.newArray (-1, [ new StringBuffer (base.charCodeAt (0)).toString ()])), i);\r
-}var stack = stacks.get (new Character (opening).charCodeAt (0));\r
-if (stack.isEmpty ()) {\r
-throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.mismatched_closing_char",  Clazz.newArray (-1, [ new StringBuffer (base.charCodeAt (0)).toString ()])), i);\r
-}var temp = (stack.pop ()).intValue ();\r
-pairs.add ( new jalview.analysis.SecStrConsensus.SimpleBP (temp, i));\r
-}i++;\r
-}\r
-for (var opening, $opening = stacks.keySet ().iterator (); $opening.hasNext () && ((opening = $opening.next ()) || true);) {\r
-var stack = stacks.get (new Character (opening).charCodeAt (0));\r
-if (!stack.empty ()) {\r
-throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.mismatched_opening_char",  Clazz.newArray (-1, [ new StringBuffer (opening.charCodeAt (0)).toString (), Integer.$valueOf ((stack.pop ()).intValue ()).toString ()])), i);\r
-}}\r
-return pairs;\r
-}, "CharSequence");\r
-c$.GetBasePairs = Clazz.defineMethod (c$, "GetBasePairs", \r
-function (line) {\r
-var bps = jalview.analysis.Rna.GetSimpleBPs (line);\r
-var outPairs =  new Array (bps.size ());\r
-for (var p = 0; p < bps.size (); p++) {\r
-var bp = bps.elementAt (p);\r
-outPairs[p] =  new jalview.datamodel.SequenceFeature ("RNA helix", "", "", bp.getBP5 (), bp.getBP3 (), "");\r
-}\r
-return outPairs;\r
-}, "CharSequence");\r
-c$.GetModeleBP = Clazz.defineMethod (c$, "GetModeleBP", \r
-function (line) {\r
-var bps = jalview.analysis.Rna.GetSimpleBPs (line);\r
-return  new java.util.ArrayList (bps);\r
-}, "CharSequence");\r
-c$.HelixMap = Clazz.defineMethod (c$, "HelixMap", \r
-function (pairs) {\r
-var helix = 0;\r
-var lastopen = 0;\r
-var lastclose = 9999999;\r
-var i = pairs.length;\r
-var open;\r
-var close;\r
-var j;\r
-var helices =  new java.util.Hashtable ();\r
-for (i = 0; i < pairs.length; i++) {\r
-open = pairs[i].getBegin ();\r
-close = pairs[i].getEnd ();\r
-if (open > lastclose) {\r
-helix++;\r
-}j = pairs.length - 1;\r
-while (j >= 0) {\r
-var popen = pairs[j].getBegin ();\r
-if ((popen < lastopen) && (popen > open)) {\r
-if (helices.containsValue (new Integer (popen)) && (((helices.get (new Integer (popen)))).intValue () === helix)) {\r
-continue;\r
-} else {\r
-helix++;\r
-break;\r
-}}j -= 1;\r
-}\r
-helices.put (new Integer (open), new Integer (helix));\r
-helices.put (new Integer (close), new Integer (helix));\r
-pairs[i].setFeatureGroup (Integer.toString (helix));\r
-lastopen = open;\r
-lastclose = close;\r
-}\r
-}, "~A");\r
-c$.pairHash = c$.prototype.pairHash =  new java.util.Hashtable ();\r
-Clazz.defineStatics (c$,\r
-"openingPars",  Clazz.newArray (-1, [new Character ('('), new Character ('['), new Character ('{'), new Character ('<'), new Character ('A'), new Character ('B'), new Character ('C'), new Character ('D'), new Character ('E'), new Character ('F'), new Character ('G'), new Character ('H'), new Character ('I'), new Character ('J'), new Character ('K'), new Character ('L'), new Character ('M'), new Character ('N'), new Character ('O'), new Character ('P'), new Character ('Q'), new Character ('R'), new Character ('S'), new Character ('T'), new Character ('U'), new Character ('V'), new Character ('W'), new Character ('X'), new Character ('Y'), new Character ('Z')]),\r
-"closingPars",  Clazz.newArray (-1, [new Character (')'), new Character (']'), new Character ('}'), new Character ('>'), new Character ('a'), new Character ('b'), new Character ('c'), new Character ('d'), new Character ('e'), new Character ('f'), new Character ('g'), new Character ('h'), new Character ('i'), new Character ('j'), new Character ('k'), new Character ('l'), new Character ('m'), new Character ('n'), new Character ('o'), new Character ('p'), new Character ('q'), new Character ('r'), new Character ('s'), new Character ('t'), new Character ('u'), new Character ('v'), new Character ('w'), new Character ('x'), new Character ('y'), new Character ('z')]));\r
-c$.openingParsSet = c$.prototype.openingParsSet =  new java.util.HashSet (java.util.Arrays.asList (jalview.analysis.Rna.openingPars));\r
-c$.closingParsSet = c$.prototype.closingParsSet =  new java.util.HashSet (java.util.Arrays.asList (jalview.analysis.Rna.closingPars));\r
-c$.closingToOpening = c$.prototype.closingToOpening =  new java.util.Hashtable ();\r
-{\r
-for (var i = 0; i < jalview.analysis.Rna.openingPars.length; i++) {\r
-jalview.analysis.Rna.closingToOpening.put (jalview.analysis.Rna.closingPars[i], jalview.analysis.Rna.openingPars[i]);\r
-}\r
-}});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (["java.util.Arrays", "$.HashSet", "$.Hashtable"], "jalview.analysis.Rna", ["jalview.analysis.SecStrConsensus", "$.WUSSParseException", "jalview.datamodel.SequenceFeature", "jalview.util.MessageManager", "java.lang.StringBuffer", "java.util.ArrayList", "$.Stack", "$.Vector"], function () {
+c$ = Clazz.declareType (jalview.analysis, "Rna");
+c$.isOpeningParenthesis = Clazz.defineMethod (c$, "isOpeningParenthesis", 
+($fz = function (c) {
+return jalview.analysis.Rna.openingParsSet.contains (new Character (c).charCodeAt (0));
+}, $fz.isPrivate = true, $fz), "~S");
+c$.isClosingParenthesis = Clazz.defineMethod (c$, "isClosingParenthesis", 
+($fz = function (c) {
+return jalview.analysis.Rna.closingParsSet.contains (new Character (c).charCodeAt (0));
+}, $fz.isPrivate = true, $fz), "~S");
+c$.matchingOpeningParenthesis = Clazz.defineMethod (c$, "matchingOpeningParenthesis", 
+($fz = function (closingParenthesis) {
+if (!jalview.analysis.Rna.isClosingParenthesis (closingParenthesis)) {
+throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.querying_matching_opening_parenthesis_for_non_closing_parenthesis",  Clazz.newArray (-1, [ new StringBuffer (closingParenthesis.charCodeAt (0)).toString ()])), -1);
+}return String.fromCharCode (jalview.analysis.Rna.closingToOpening.get (new Character (closingParenthesis).charCodeAt (0)));
+}, $fz.isPrivate = true, $fz), "~S");
+c$.GetSimpleBPs = Clazz.defineMethod (c$, "GetSimpleBPs", 
+function (line) {
+var stacks =  new java.util.Hashtable ();
+var pairs =  new java.util.Vector ();
+var i = 0;
+while (i < line.length) {
+var base = line.charAt (i);
+if (jalview.analysis.Rna.isOpeningParenthesis (base)) {
+if (!stacks.containsKey (new Character (base).charCodeAt (0))) {
+stacks.put (new Character (base).charCodeAt (0),  new java.util.Stack ());
+}stacks.get (new Character (base).charCodeAt (0)).push (new Integer (i));
+} else if (jalview.analysis.Rna.isClosingParenthesis (base)) {
+var opening = jalview.analysis.Rna.matchingOpeningParenthesis (base);
+if (!stacks.containsKey (new Character (opening).charCodeAt (0))) {
+throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.mismatched_unseen_closing_char",  Clazz.newArray (-1, [ new StringBuffer (base.charCodeAt (0)).toString ()])), i);
+}var stack = stacks.get (new Character (opening).charCodeAt (0));
+if (stack.isEmpty ()) {
+throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.mismatched_closing_char",  Clazz.newArray (-1, [ new StringBuffer (base.charCodeAt (0)).toString ()])), i);
+}var temp = (stack.pop ()).intValue ();
+pairs.add ( new jalview.analysis.SecStrConsensus.SimpleBP (temp, i));
+}i++;
+}
+for (var opening, $opening = stacks.keySet ().iterator (); $opening.hasNext () && ((opening = $opening.next ()) || true);) {
+var stack = stacks.get (new Character (opening).charCodeAt (0));
+if (!stack.empty ()) {
+throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.mismatched_opening_char",  Clazz.newArray (-1, [ new StringBuffer (opening.charCodeAt (0)).toString (), Integer.$valueOf ((stack.pop ()).intValue ()).toString ()])), i);
+}}
+return pairs;
+}, "CharSequence");
+c$.GetBasePairs = Clazz.defineMethod (c$, "GetBasePairs", 
+function (line) {
+var bps = jalview.analysis.Rna.GetSimpleBPs (line);
+var outPairs =  new Array (bps.size ());
+for (var p = 0; p < bps.size (); p++) {
+var bp = bps.elementAt (p);
+outPairs[p] =  new jalview.datamodel.SequenceFeature ("RNA helix", "", "", bp.getBP5 (), bp.getBP3 (), "");
+}
+return outPairs;
+}, "CharSequence");
+c$.GetModeleBP = Clazz.defineMethod (c$, "GetModeleBP", 
+function (line) {
+var bps = jalview.analysis.Rna.GetSimpleBPs (line);
+return  new java.util.ArrayList (bps);
+}, "CharSequence");
+c$.HelixMap = Clazz.defineMethod (c$, "HelixMap", 
+function (pairs) {
+var helix = 0;
+var lastopen = 0;
+var lastclose = 9999999;
+var i = pairs.length;
+var open;
+var close;
+var j;
+var helices =  new java.util.Hashtable ();
+for (i = 0; i < pairs.length; i++) {
+open = pairs[i].getBegin ();
+close = pairs[i].getEnd ();
+if (open > lastclose) {
+helix++;
+}j = pairs.length - 1;
+while (j >= 0) {
+var popen = pairs[j].getBegin ();
+if ((popen < lastopen) && (popen > open)) {
+if (helices.containsValue (new Integer (popen)) && (((helices.get (new Integer (popen)))).intValue () === helix)) {
+continue;
+} else {
+helix++;
+break;
+}}j -= 1;
+}
+helices.put (new Integer (open), new Integer (helix));
+helices.put (new Integer (close), new Integer (helix));
+pairs[i].setFeatureGroup (Integer.toString (helix));
+lastopen = open;
+lastclose = close;
+}
+}, "~A");
+c$.pairHash = c$.prototype.pairHash =  new java.util.Hashtable ();
+Clazz.defineStatics (c$,
+"openingPars",  Clazz.newArray (-1, [new Character ('('), new Character ('['), new Character ('{'), new Character ('<'), new Character ('A'), new Character ('B'), new Character ('C'), new Character ('D'), new Character ('E'), new Character ('F'), new Character ('G'), new Character ('H'), new Character ('I'), new Character ('J'), new Character ('K'), new Character ('L'), new Character ('M'), new Character ('N'), new Character ('O'), new Character ('P'), new Character ('Q'), new Character ('R'), new Character ('S'), new Character ('T'), new Character ('U'), new Character ('V'), new Character ('W'), new Character ('X'), new Character ('Y'), new Character ('Z')]),
+"closingPars",  Clazz.newArray (-1, [new Character (')'), new Character (']'), new Character ('}'), new Character ('>'), new Character ('a'), new Character ('b'), new Character ('c'), new Character ('d'), new Character ('e'), new Character ('f'), new Character ('g'), new Character ('h'), new Character ('i'), new Character ('j'), new Character ('k'), new Character ('l'), new Character ('m'), new Character ('n'), new Character ('o'), new Character ('p'), new Character ('q'), new Character ('r'), new Character ('s'), new Character ('t'), new Character ('u'), new Character ('v'), new Character ('w'), new Character ('x'), new Character ('y'), new Character ('z')]));
+c$.openingParsSet = c$.prototype.openingParsSet =  new java.util.HashSet (java.util.Arrays.asList (jalview.analysis.Rna.openingPars));
+c$.closingParsSet = c$.prototype.closingParsSet =  new java.util.HashSet (java.util.Arrays.asList (jalview.analysis.Rna.closingPars));
+c$.closingToOpening = c$.prototype.closingToOpening =  new java.util.Hashtable ();
+{
+for (var i = 0; i < jalview.analysis.Rna.openingPars.length; i++) {
+jalview.analysis.Rna.closingToOpening.put (jalview.analysis.Rna.closingPars[i], jalview.analysis.Rna.openingPars[i]);
+}
+}});
index d4b9f08..c7ac833 100644 (file)
Binary files a/bin/jalview/analysis/SecStrConsensus.class and b/bin/jalview/analysis/SecStrConsensus.class differ
index 44e1009..f96678e 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (null, "jalview.analysis.SecStrConsensus", ["java.util.ArrayList", "$.Hashtable"], function () {\r
-c$ = Clazz.declareType (jalview.analysis, "SecStrConsensus");\r
-c$.extractConsensus = Clazz.defineMethod (c$, "extractConsensus", \r
-function (bps) {\r
-var maxlength = 0;\r
-for (var strs, $strs = bps.iterator (); $strs.hasNext () && ((strs = $strs.next ()) || true);) {\r
-for (var bp, $bp = strs.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {\r
-maxlength = Math.max (1 + Math.max (bp.bp5, bp.bp3), maxlength);\r
-}\r
-}\r
-var seq =  new java.util.ArrayList ();\r
-for (var i = 0; i < maxlength; i++) {\r
-seq.add ( new java.util.Hashtable ());\r
-}\r
-for (var strs, $strs = bps.iterator (); $strs.hasNext () && ((strs = $strs.next ()) || true);) {\r
-for (var bp, $bp = strs.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {\r
-var i = bp.bp5;\r
-var j = bp.bp3;\r
-var h = seq.get (i);\r
-if (!h.containsKey (new Integer (j))) {\r
-h.put (new Integer (j), new Double (0.0));\r
-}h.put (new Integer (j), new Double ((h.get (new Integer (j))).doubleValue () + 1.));\r
-}\r
-}\r
-var mat = jalview.analysis.SecStrConsensus.fillMatrix (seq);\r
-var res = jalview.analysis.SecStrConsensus.backtrack (mat, seq);\r
-var finalres =  Clazz.newIntArray (seq.size (), 0);\r
-for (var i = 0; i < seq.size (); i++) {\r
-finalres[i] = -1;\r
-}\r
-for (var bp, $bp = res.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {\r
-finalres[bp.bp5] = bp.bp3;\r
-finalres[bp.bp3] = bp.bp5;\r
-}\r
-return finalres;\r
-}, "java.util.ArrayList");\r
-c$.canBasePair = Clazz.defineMethod (c$, "canBasePair", \r
-($fz = function (seq, i, k) {\r
-return seq.get (i).containsKey (new Integer (k));\r
-}, $fz.isPrivate = true, $fz), "java.util.ArrayList,~N,~N");\r
-c$.basePairScore = Clazz.defineMethod (c$, "basePairScore", \r
-($fz = function (seq, i, k) {\r
-return seq.get (i).get (new Integer (k));\r
-}, $fz.isPrivate = true, $fz), "java.util.ArrayList,~N,~N");\r
-c$.fillMatrix = Clazz.defineMethod (c$, "fillMatrix", \r
-($fz = function (seq) {\r
-var n = seq.size ();\r
-var tab =  Clazz.newDoubleArray (n, n, 0);\r
-for (var m = 1; m <= n; m++) {\r
-for (var i = 0; i < n - m + 1; i++) {\r
-var j = i + m - 1;\r
-tab[i][j] = 0;\r
-if (i < j) {\r
-tab[i][j] = Math.max (tab[i][j], tab[i + 1][j]);\r
-for (var k = i + 1; k <= j; k++) {\r
-if (jalview.analysis.SecStrConsensus.canBasePair (seq, i, k)) {\r
-var fact1 = 0;\r
-if (k > i + 1) {\r
-fact1 = tab[i + 1][k - 1];\r
-}var fact2 = 0;\r
-if (k < j) {\r
-fact2 = tab[k + 1][j];\r
-}tab[i][j] = Math.max (tab[i][j], jalview.analysis.SecStrConsensus.basePairScore (seq, i, k) + fact1 + fact2);\r
-}}\r
-}}\r
-}\r
-return tab;\r
-}, $fz.isPrivate = true, $fz), "java.util.ArrayList");\r
-c$.backtrack = Clazz.defineMethod (c$, "backtrack", \r
-($fz = function (tab, seq) {\r
-return jalview.analysis.SecStrConsensus.backtrack (tab, seq, 0, seq.size () - 1);\r
-}, $fz.isPrivate = true, $fz), "~A,java.util.ArrayList");\r
-c$.backtrack = Clazz.defineMethod (c$, "backtrack", \r
-($fz = function (tab, seq, i, j) {\r
-var result =  new java.util.ArrayList ();\r
-if (i < j) {\r
-var indices =  new java.util.ArrayList ();\r
-indices.add (new Integer (-1));\r
-for (var k = i + 1; k <= j; k++) {\r
-indices.add (new Integer (k));\r
-}\r
-for (var k, $k = indices.iterator (); $k.hasNext () && ((k = $k.next ()) || true);) {\r
-if (k == -1) {\r
-if (tab[i][j] == tab[i + 1][j]) {\r
-result = jalview.analysis.SecStrConsensus.backtrack (tab, seq, i + 1, j);\r
-}} else {\r
-if (jalview.analysis.SecStrConsensus.canBasePair (seq, i, k)) {\r
-var fact1 = 0;\r
-if (k > i + 1) {\r
-fact1 = tab[i + 1][k - 1];\r
-}var fact2 = 0;\r
-if (k < j) {\r
-fact2 = tab[k + 1][j];\r
-}if (tab[i][j] == jalview.analysis.SecStrConsensus.basePairScore (seq, i, k) + fact1 + fact2) {\r
-result = jalview.analysis.SecStrConsensus.backtrack (tab, seq, i + 1, k - 1);\r
-result.addAll (jalview.analysis.SecStrConsensus.backtrack (tab, seq, k + 1, j));\r
-result.add ( new jalview.analysis.SecStrConsensus.SimpleBP (i, k));\r
-}}}}\r
-} else if (i == j) {\r
-} else {\r
-}return result;\r
-}, $fz.isPrivate = true, $fz), "~A,java.util.ArrayList,~N,~N");\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.bp5 = 0;\r
-this.bp3 = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis.SecStrConsensus, "SimpleBP");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (a, b) {\r
-this.bp5 = a;\r
-this.bp3 = b;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "setBP5", \r
-function (a) {\r
-this.bp5 = a;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setBP3", \r
-function (a) {\r
-this.bp3 = a;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getBP5", \r
-function () {\r
-return this.bp5;\r
-});\r
-Clazz.defineMethod (c$, "getBP3", \r
-function () {\r
-return this.bp3;\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "(" + this.bp5 + "," + this.bp3 + ")";\r
-});\r
-c$ = Clazz.p0p ();\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (null, "jalview.analysis.SecStrConsensus", ["java.util.ArrayList", "$.Hashtable"], function () {
+c$ = Clazz.declareType (jalview.analysis, "SecStrConsensus");
+c$.extractConsensus = Clazz.defineMethod (c$, "extractConsensus", 
+function (bps) {
+var maxlength = 0;
+for (var strs, $strs = bps.iterator (); $strs.hasNext () && ((strs = $strs.next ()) || true);) {
+for (var bp, $bp = strs.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {
+maxlength = Math.max (1 + Math.max (bp.bp5, bp.bp3), maxlength);
+}
+}
+var seq =  new java.util.ArrayList ();
+for (var i = 0; i < maxlength; i++) {
+seq.add ( new java.util.Hashtable ());
+}
+for (var strs, $strs = bps.iterator (); $strs.hasNext () && ((strs = $strs.next ()) || true);) {
+for (var bp, $bp = strs.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {
+var i = bp.bp5;
+var j = bp.bp3;
+var h = seq.get (i);
+if (!h.containsKey (new Integer (j))) {
+h.put (new Integer (j), new Double (0.0));
+}h.put (new Integer (j), new Double ((h.get (new Integer (j))).doubleValue () + 1.));
+}
+}
+var mat = jalview.analysis.SecStrConsensus.fillMatrix (seq);
+var res = jalview.analysis.SecStrConsensus.backtrack (mat, seq);
+var finalres =  Clazz.newIntArray (seq.size (), 0);
+for (var i = 0; i < seq.size (); i++) {
+finalres[i] = -1;
+}
+for (var bp, $bp = res.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {
+finalres[bp.bp5] = bp.bp3;
+finalres[bp.bp3] = bp.bp5;
+}
+return finalres;
+}, "java.util.ArrayList");
+c$.canBasePair = Clazz.defineMethod (c$, "canBasePair", 
+($fz = function (seq, i, k) {
+return seq.get (i).containsKey (new Integer (k));
+}, $fz.isPrivate = true, $fz), "java.util.ArrayList,~N,~N");
+c$.basePairScore = Clazz.defineMethod (c$, "basePairScore", 
+($fz = function (seq, i, k) {
+return seq.get (i).get (new Integer (k));
+}, $fz.isPrivate = true, $fz), "java.util.ArrayList,~N,~N");
+c$.fillMatrix = Clazz.defineMethod (c$, "fillMatrix", 
+($fz = function (seq) {
+var n = seq.size ();
+var tab =  Clazz.newDoubleArray (n, n, 0);
+for (var m = 1; m <= n; m++) {
+for (var i = 0; i < n - m + 1; i++) {
+var j = i + m - 1;
+tab[i][j] = 0;
+if (i < j) {
+tab[i][j] = Math.max (tab[i][j], tab[i + 1][j]);
+for (var k = i + 1; k <= j; k++) {
+if (jalview.analysis.SecStrConsensus.canBasePair (seq, i, k)) {
+var fact1 = 0;
+if (k > i + 1) {
+fact1 = tab[i + 1][k - 1];
+}var fact2 = 0;
+if (k < j) {
+fact2 = tab[k + 1][j];
+}tab[i][j] = Math.max (tab[i][j], jalview.analysis.SecStrConsensus.basePairScore (seq, i, k) + fact1 + fact2);
+}}
+}}
+}
+return tab;
+}, $fz.isPrivate = true, $fz), "java.util.ArrayList");
+c$.backtrack = Clazz.defineMethod (c$, "backtrack", 
+($fz = function (tab, seq) {
+return jalview.analysis.SecStrConsensus.backtrack (tab, seq, 0, seq.size () - 1);
+}, $fz.isPrivate = true, $fz), "~A,java.util.ArrayList");
+c$.backtrack = Clazz.defineMethod (c$, "backtrack", 
+($fz = function (tab, seq, i, j) {
+var result =  new java.util.ArrayList ();
+if (i < j) {
+var indices =  new java.util.ArrayList ();
+indices.add (new Integer (-1));
+for (var k = i + 1; k <= j; k++) {
+indices.add (new Integer (k));
+}
+for (var k, $k = indices.iterator (); $k.hasNext () && ((k = $k.next ()) || true);) {
+if (k == -1) {
+if (tab[i][j] == tab[i + 1][j]) {
+result = jalview.analysis.SecStrConsensus.backtrack (tab, seq, i + 1, j);
+}} else {
+if (jalview.analysis.SecStrConsensus.canBasePair (seq, i, k)) {
+var fact1 = 0;
+if (k > i + 1) {
+fact1 = tab[i + 1][k - 1];
+}var fact2 = 0;
+if (k < j) {
+fact2 = tab[k + 1][j];
+}if (tab[i][j] == jalview.analysis.SecStrConsensus.basePairScore (seq, i, k) + fact1 + fact2) {
+result = jalview.analysis.SecStrConsensus.backtrack (tab, seq, i + 1, k - 1);
+result.addAll (jalview.analysis.SecStrConsensus.backtrack (tab, seq, k + 1, j));
+result.add ( new jalview.analysis.SecStrConsensus.SimpleBP (i, k));
+}}}}
+} else if (i == j) {
+} else {
+}return result;
+}, $fz.isPrivate = true, $fz), "~A,java.util.ArrayList,~N,~N");
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+this.bp5 = 0;
+this.bp3 = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.analysis.SecStrConsensus, "SimpleBP");
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.makeConstructor (c$, 
+function (a, b) {
+this.bp5 = a;
+this.bp3 = b;
+}, "~N,~N");
+Clazz.defineMethod (c$, "setBP5", 
+function (a) {
+this.bp5 = a;
+}, "~N");
+Clazz.defineMethod (c$, "setBP3", 
+function (a) {
+this.bp3 = a;
+}, "~N");
+Clazz.defineMethod (c$, "getBP5", 
+function () {
+return this.bp5;
+});
+Clazz.defineMethod (c$, "getBP3", 
+function () {
+return this.bp3;
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "(" + this.bp5 + "," + this.bp3 + ")";
+});
+c$ = Clazz.p0p ();
+});
index a93fedd..f8914e1 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (null, "jalview.analysis.SeqsetUtils", ["jalview.analysis.AlignSeq", "$.SequenceIdMatcher", "jalview.datamodel.Sequence", "jalview.util.Comparison", "java.util.Hashtable", "$.Vector"], function () {\r
-c$ = Clazz.declareType (jalview.analysis, "SeqsetUtils");\r
-c$.SeqCharacterHash = Clazz.defineMethod (c$, "SeqCharacterHash", \r
-function (seq) {\r
-var sqinfo =  new java.util.Hashtable ();\r
-sqinfo.put ("Name", seq.getName ());\r
-sqinfo.put ("Start",  new Integer (seq.getStart ()));\r
-sqinfo.put ("End",  new Integer (seq.getEnd ()));\r
-if (seq.getDescription () != null) {\r
-sqinfo.put ("Description", seq.getDescription ());\r
-}var sfeat =  new java.util.Vector ();\r
-var sfarray = seq.getSequenceFeatures ();\r
-if (sfarray != null && sfarray.length > 0) {\r
-for (var i = 0; i < sfarray.length; i++) {\r
-sfeat.addElement (sfarray[i]);\r
-}\r
-}sqinfo.put ("SeqFeatures", sfeat);\r
-sqinfo.put ("PdbId", (seq.getPDBId () != null) ? seq.getPDBId () :  new java.util.Vector ());\r
-sqinfo.put ("datasetSequence", (seq.getDatasetSequence () != null) ? seq.getDatasetSequence () :  new jalview.datamodel.Sequence ("THISISAPLACEHOLDER", ""));\r
-return sqinfo;\r
-}, "jalview.datamodel.SequenceI");\r
-c$.SeqCharacterUnhash = Clazz.defineMethod (c$, "SeqCharacterUnhash", \r
-function (sq, sqinfo) {\r
-var namePresent = true;\r
-if (sqinfo == null) {\r
-return false;\r
-}var oldname = sqinfo.get ("Name");\r
-var start = sqinfo.get ("Start");\r
-var end = sqinfo.get ("End");\r
-var sfeatures = sqinfo.get ("SeqFeatures");\r
-var pdbid = sqinfo.get ("PdbId");\r
-var description = sqinfo.get ("Description");\r
-var seqds = sqinfo.get ("datasetSequence");\r
-if (oldname == null) {\r
-namePresent = false;\r
-} else {\r
-sq.setName (oldname);\r
-}if (pdbid != null && pdbid.size () > 0) {\r
-sq.setPDBId (pdbid);\r
-}if ((start != null) && (end != null)) {\r
-sq.setStart (start.intValue ());\r
-sq.setEnd (end.intValue ());\r
-}if ((sfeatures != null) && (sfeatures.size () > 0)) {\r
-var sfarray =  new Array (sfeatures.size ());\r
-for (var is = 0, isize = sfeatures.size (); is < isize; is++) {\r
-sfarray[is] = sfeatures.elementAt (is);\r
-}\r
-sq.setSequenceFeatures (sfarray);\r
-}if (description != null) {\r
-sq.setDescription (description);\r
-}if ((seqds != null) && !(seqds.getName ().equals ("THISISAPLACEHOLDER") && seqds.getLength () == 0)) {\r
-sq.setDatasetSequence (seqds);\r
-}return namePresent;\r
-}, "jalview.datamodel.SequenceI,java.util.Hashtable");\r
-c$.unique_name = Clazz.defineMethod (c$, "unique_name", \r
-function (i) {\r
-return  String.instantialize ("Sequence" + i);\r
-}, "~N");\r
-c$.uniquify = Clazz.defineMethod (c$, "uniquify", \r
-function (sequences, write_names) {\r
-var map =  new java.util.Hashtable ();\r
-for (var i = 0; i < sequences.length; i++) {\r
-var safename = jalview.analysis.SeqsetUtils.unique_name (i);\r
-map.put (safename, jalview.analysis.SeqsetUtils.SeqCharacterHash (sequences[i]));\r
-if (write_names) {\r
-sequences[i].setName (safename);\r
-}}\r
-return map;\r
-}, "~A,~B");\r
-c$.deuniquify = Clazz.defineMethod (c$, "deuniquify", \r
-function (map, sequences) {\r
-return jalview.analysis.SeqsetUtils.deuniquify (map, sequences, true);\r
-}, "java.util.Hashtable,~A");\r
-c$.deuniquify = Clazz.defineMethod (c$, "deuniquify", \r
-function (map, sequences, quiet) {\r
-var matcher =  new jalview.analysis.SequenceIdMatcher (sequences);\r
-var msq = null;\r
-var keys = map.keys ();\r
-var unmatched =  new java.util.Vector ();\r
-for (var i = 0, j = sequences.length; i < j; i++) {\r
-unmatched.addElement (sequences[i]);\r
-}\r
-while (keys.hasMoreElements ()) {\r
-var key = keys.nextElement ();\r
-if (Clazz.instanceOf (key, String)) {\r
-if ((msq = matcher.findIdMatch (key)) != null) {\r
-var sqinfo = map.get (key);\r
-unmatched.removeElement (msq);\r
-jalview.analysis.SeqsetUtils.SeqCharacterUnhash (msq, sqinfo);\r
-} else {\r
-if (!quiet) {\r
-System.err.println ("Can't find '" + (key) + "' in uniquified alignment");\r
-}}}}\r
-if (unmatched.size () > 0 && !quiet) {\r
-System.err.println ("Did not find matches for :");\r
-for (var i = unmatched.elements (); i.hasMoreElements (); System.out.println ((i.nextElement ()).getName ())) {\r
-;}\r
-return false;\r
-}return true;\r
-}, "java.util.Hashtable,~A,~B");\r
-c$.getNonEmptySequenceSet = Clazz.defineMethod (c$, "getNonEmptySequenceSet", \r
-function (sequences) {\r
-var ungapped =  Clazz.newBooleanArray (sequences.length, false);\r
-var msflen = 0;\r
-for (var i = 0, j = sequences.length; i < j; i++) {\r
-var tempseq = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, sequences[i].getSequenceAsString ());\r
-if (tempseq.length == 0) {\r
-ungapped[i] = false;\r
-} else {\r
-ungapped[i] = true;\r
-msflen++;\r
-}}\r
-if (msflen == 0) {\r
-return null;\r
-}var mset =  new Array (msflen);\r
-for (var i = 0, j = sequences.length, k = 0; i < j; i++) {\r
-if (ungapped[i]) {\r
-mset[k++] = sequences[i];\r
-}}\r
-ungapped = null;\r
-return mset;\r
-}, "~A");\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (null, "jalview.analysis.SeqsetUtils", ["jalview.analysis.AlignSeq", "$.SequenceIdMatcher", "jalview.datamodel.Sequence", "jalview.util.Comparison", "java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz.declareType (jalview.analysis, "SeqsetUtils");
+c$.SeqCharacterHash = Clazz.defineMethod (c$, "SeqCharacterHash", 
+function (seq) {
+var sqinfo =  new java.util.Hashtable ();
+sqinfo.put ("Name", seq.getName ());
+sqinfo.put ("Start",  new Integer (seq.getStart ()));
+sqinfo.put ("End",  new Integer (seq.getEnd ()));
+if (seq.getDescription () != null) {
+sqinfo.put ("Description", seq.getDescription ());
+}var sfeat =  new java.util.Vector ();
+var sfarray = seq.getSequenceFeatures ();
+if (sfarray != null && sfarray.length > 0) {
+for (var i = 0; i < sfarray.length; i++) {
+sfeat.addElement (sfarray[i]);
+}
+}sqinfo.put ("SeqFeatures", sfeat);
+sqinfo.put ("PdbId", (seq.getPDBId () != null) ? seq.getPDBId () :  new java.util.Vector ());
+sqinfo.put ("datasetSequence", (seq.getDatasetSequence () != null) ? seq.getDatasetSequence () :  new jalview.datamodel.Sequence ("THISISAPLACEHOLDER", ""));
+return sqinfo;
+}, "jalview.datamodel.SequenceI");
+c$.SeqCharacterUnhash = Clazz.defineMethod (c$, "SeqCharacterUnhash", 
+function (sq, sqinfo) {
+var namePresent = true;
+if (sqinfo == null) {
+return false;
+}var oldname = sqinfo.get ("Name");
+var start = sqinfo.get ("Start");
+var end = sqinfo.get ("End");
+var sfeatures = sqinfo.get ("SeqFeatures");
+var pdbid = sqinfo.get ("PdbId");
+var description = sqinfo.get ("Description");
+var seqds = sqinfo.get ("datasetSequence");
+if (oldname == null) {
+namePresent = false;
+} else {
+sq.setName (oldname);
+}if (pdbid != null && pdbid.size () > 0) {
+sq.setPDBId (pdbid);
+}if ((start != null) && (end != null)) {
+sq.setStart (start.intValue ());
+sq.setEnd (end.intValue ());
+}if ((sfeatures != null) && (sfeatures.size () > 0)) {
+var sfarray =  new Array (sfeatures.size ());
+for (var is = 0, isize = sfeatures.size (); is < isize; is++) {
+sfarray[is] = sfeatures.elementAt (is);
+}
+sq.setSequenceFeatures (sfarray);
+}if (description != null) {
+sq.setDescription (description);
+}if ((seqds != null) && !(seqds.getName ().equals ("THISISAPLACEHOLDER") && seqds.getLength () == 0)) {
+sq.setDatasetSequence (seqds);
+}return namePresent;
+}, "jalview.datamodel.SequenceI,java.util.Hashtable");
+c$.unique_name = Clazz.defineMethod (c$, "unique_name", 
+function (i) {
+return  String.instantialize ("Sequence" + i);
+}, "~N");
+c$.uniquify = Clazz.defineMethod (c$, "uniquify", 
+function (sequences, write_names) {
+var map =  new java.util.Hashtable ();
+for (var i = 0; i < sequences.length; i++) {
+var safename = jalview.analysis.SeqsetUtils.unique_name (i);
+map.put (safename, jalview.analysis.SeqsetUtils.SeqCharacterHash (sequences[i]));
+if (write_names) {
+sequences[i].setName (safename);
+}}
+return map;
+}, "~A,~B");
+c$.deuniquify = Clazz.defineMethod (c$, "deuniquify", 
+function (map, sequences) {
+return jalview.analysis.SeqsetUtils.deuniquify (map, sequences, true);
+}, "java.util.Hashtable,~A");
+c$.deuniquify = Clazz.defineMethod (c$, "deuniquify", 
+function (map, sequences, quiet) {
+var matcher =  new jalview.analysis.SequenceIdMatcher (sequences);
+var msq = null;
+var keys = map.keys ();
+var unmatched =  new java.util.Vector ();
+for (var i = 0, j = sequences.length; i < j; i++) {
+unmatched.addElement (sequences[i]);
+}
+while (keys.hasMoreElements ()) {
+var key = keys.nextElement ();
+if (Clazz.instanceOf (key, String)) {
+if ((msq = matcher.findIdMatch (key)) != null) {
+var sqinfo = map.get (key);
+unmatched.removeElement (msq);
+jalview.analysis.SeqsetUtils.SeqCharacterUnhash (msq, sqinfo);
+} else {
+if (!quiet) {
+System.err.println ("Can't find '" + (key) + "' in uniquified alignment");
+}}}}
+if (unmatched.size () > 0 && !quiet) {
+System.err.println ("Did not find matches for :");
+for (var i = unmatched.elements (); i.hasMoreElements (); System.out.println ((i.nextElement ()).getName ())) {
+;}
+return false;
+}return true;
+}, "java.util.Hashtable,~A,~B");
+c$.getNonEmptySequenceSet = Clazz.defineMethod (c$, "getNonEmptySequenceSet", 
+function (sequences) {
+var ungapped =  Clazz.newBooleanArray (sequences.length, false);
+var msflen = 0;
+for (var i = 0, j = sequences.length; i < j; i++) {
+var tempseq = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, sequences[i].getSequenceAsString ());
+if (tempseq.length == 0) {
+ungapped[i] = false;
+} else {
+ungapped[i] = true;
+msflen++;
+}}
+if (msflen == 0) {
+return null;
+}var mset =  new Array (msflen);
+for (var i = 0, j = sequences.length, k = 0; i < j; i++) {
+if (ungapped[i]) {
+mset[k++] = sequences[i];
+}}
+ungapped = null;
+return mset;
+}, "~A");
+});
index 1735f8a..58766c1 100644 (file)
Binary files a/bin/jalview/analysis/SequenceIdMatcher$SeqIdName.class and b/bin/jalview/analysis/SequenceIdMatcher$SeqIdName.class differ
index 6e94b5f..adb0a5a 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (null, "jalview.analysis.SequenceIdMatcher", ["java.util.ArrayList", "$.Arrays", "$.HashMap", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.names = null;\r
-if (!Clazz.isClassDefined ("jalview.analysis.SequenceIdMatcher.SeqIdName")) {\r
-jalview.analysis.SequenceIdMatcher.$SequenceIdMatcher$SeqIdName$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis, "SequenceIdMatcher");\r
-Clazz.makeConstructor (c$, \r
-function (seqs) {\r
-this.names =  new java.util.HashMap ();\r
-this.addAll (seqs);\r
-}, "java.util.List");\r
-Clazz.defineMethod (c$, "addAll", \r
-function (seqs) {\r
-for (var seq, $seq = seqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-this.names.put (Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seq.getDisplayId (true)), seq);\r
-var dbseq = seq;\r
-while (dbseq.getDatasetSequence () != null) {\r
-dbseq = dbseq.getDatasetSequence ();\r
-}\r
-if (dbseq.getDBRef () != null) {\r
-var dbr = dbseq.getDBRef ();\r
-var sid = null;\r
-for (var r = 0; r < dbr.length; r++) {\r
-sid = Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, dbr[r].getAccessionId ());\r
-if (!this.names.containsKey (sid)) {\r
-this.names.put (sid, seq);\r
-}}\r
-}}\r
-}, "java.util.List");\r
-Clazz.makeConstructor (c$, \r
-function (sequences) {\r
-this.construct (java.util.Arrays.asList (sequences));\r
-}, "~A");\r
-Clazz.defineMethod (c$, "pickbestMatch", \r
-($fz = function (candName, matches) {\r
-var st = this.pickbestMatches (candName, matches);\r
-return st == null || st.size () == 0 ? null : st.get (0);\r
-}, $fz.isPrivate = true, $fz), "jalview.analysis.SequenceIdMatcher.SeqIdName,java.util.List");\r
-Clazz.defineMethod (c$, "pickbestMatches", \r
-($fz = function (candName, matches) {\r
-var best =  new java.util.ArrayList ();\r
-if (candName == null || matches == null || matches.size () == 0) {\r
-return null;\r
-}var match = matches.remove (0);\r
-best.add (match);\r
-this.names.put (Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, match.getName ()), match);\r
-var matchlen = match.getName ().length;\r
-var namlen = candName.id.length;\r
-while (matches.size () > 0) {\r
-var cand = matches.remove (0);\r
-this.names.put (Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, cand.getName ()), cand);\r
-var q;\r
-var w;\r
-var candlen = cand.getName ().length;\r
-if ((q = Math.abs (matchlen - namlen)) > (w = Math.abs (candlen - namlen)) && candlen > matchlen) {\r
-best.clear ();\r
-match = cand;\r
-matchlen = candlen;\r
-best.add (match);\r
-}if (q == w && candlen == matchlen) {\r
-best.add (cand);\r
-}}\r
-if (best.size () == 0) {\r
-return null;\r
-};return best;\r
-}, $fz.isPrivate = true, $fz), "jalview.analysis.SequenceIdMatcher.SeqIdName,java.util.List");\r
-Clazz.defineMethod (c$, "findIdMatch", \r
-function (seq) {\r
-var nam = Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seq.getName ());\r
-return this.findIdMatch (nam);\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "findIdMatch", \r
-function (seqnam) {\r
-var nam = Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seqnam);\r
-return this.findIdMatch (nam);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "findAllIdMatches", \r
-function (seqnam) {\r
-var nam = Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seqnam);\r
-var m = this.findAllIdMatches (nam);\r
-if (m != null) {\r
-return m.toArray ( new Array (m.size ()));\r
-}return null;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "findIdMatch", \r
-function (seqs) {\r
-var namedseqs = null;\r
-var i = 0;\r
-var nam;\r
-if (seqs.length > 0) {\r
-namedseqs =  new Array (seqs.length);\r
-do {\r
-nam = Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seqs[i].getName ());\r
-if (this.names.containsKey (nam)) {\r
-namedseqs[i] = this.findIdMatch (nam);\r
-} else {\r
-namedseqs[i] = null;\r
-}} while (++i < seqs.length);\r
-}return namedseqs;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "findIdMatch", \r
-($fz = function (nam) {\r
-var matches =  new java.util.Vector ();\r
-while (this.names.containsKey (nam)) {\r
-matches.addElement (this.names.remove (nam));\r
-}\r
-return this.pickbestMatch (nam, matches);\r
-}, $fz.isPrivate = true, $fz), "jalview.analysis.SequenceIdMatcher.SeqIdName");\r
-Clazz.defineMethod (c$, "findAllIdMatches", \r
-($fz = function (nam) {\r
-var matches =  new java.util.ArrayList ();\r
-while (this.names.containsKey (nam)) {\r
-matches.add (this.names.remove (nam));\r
-}\r
-var r = this.pickbestMatches (nam, matches);\r
-return r;\r
-}, $fz.isPrivate = true, $fz), "jalview.analysis.SequenceIdMatcher.SeqIdName");\r
-c$.$SequenceIdMatcher$SeqIdName$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.id = null;\r
-this.WORD_SEP = "~. |#\\/<>!\"\u00a4$%^*)}[@\',?_";\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis.SequenceIdMatcher, "SeqIdName");\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-if (a != null) {\r
-this.id =  String.instantialize (a);\r
-} else {\r
-this.id = "";\r
-}}, "~S");\r
-Clazz.overrideMethod (c$, "hashCode", \r
-function () {\r
-return ((this.id.length >= 4) ? this.id.substring (0, 4).hashCode () : this.id.hashCode ());\r
-});\r
-Clazz.defineMethod (c$, "equals", \r
-function (a) {\r
-if (a == null) {\r
-return false;\r
-}if (Clazz.instanceOf (a, jalview.analysis.SequenceIdMatcher.SeqIdName)) {\r
-return this.equals (a);\r
-} else {\r
-if (Clazz.instanceOf (a, String)) {\r
-return this.equals (a);\r
-}}return false;\r
-}, "~O");\r
-Clazz.defineMethod (c$, "equals", \r
-function (a) {\r
-if (this.id.length > a.id.length) {\r
-return this.id.startsWith (a.id) ? (this.WORD_SEP.indexOf (this.id.charAt (a.id.length)) > -1) : false;\r
-} else {\r
-return a.id.startsWith (this.id) ? (a.id.equals (this.id) ? true : (this.WORD_SEP.indexOf (a.id.charAt (this.id.length)) > -1)) : false;\r
-}}, "jalview.analysis.SequenceIdMatcher.SeqIdName");\r
-Clazz.defineMethod (c$, "equals", \r
-function (a) {\r
-if (this.id.length > a.length) {\r
-return this.id.startsWith (a) ? (this.WORD_SEP.indexOf (this.id.charAt (a.length)) > -1) : false;\r
-} else {\r
-return a.startsWith (this.id) ? (a.equals (this.id) ? true : (this.WORD_SEP.indexOf (a.charAt (this.id.length)) > -1)) : false;\r
-}}, "~S");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (null, "jalview.analysis.SequenceIdMatcher", ["java.util.ArrayList", "$.Arrays", "$.HashMap", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.names = null;
+if (!Clazz.isClassDefined ("jalview.analysis.SequenceIdMatcher.SeqIdName")) {
+jalview.analysis.SequenceIdMatcher.$SequenceIdMatcher$SeqIdName$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.analysis, "SequenceIdMatcher");
+Clazz.makeConstructor (c$, 
+function (seqs) {
+this.names =  new java.util.HashMap ();
+this.addAll (seqs);
+}, "java.util.List");
+Clazz.defineMethod (c$, "addAll", 
+function (seqs) {
+for (var seq, $seq = seqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+this.names.put (Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seq.getDisplayId (true)), seq);
+var dbseq = seq;
+while (dbseq.getDatasetSequence () != null) {
+dbseq = dbseq.getDatasetSequence ();
+}
+if (dbseq.getDBRef () != null) {
+var dbr = dbseq.getDBRef ();
+var sid = null;
+for (var r = 0; r < dbr.length; r++) {
+sid = Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, dbr[r].getAccessionId ());
+if (!this.names.containsKey (sid)) {
+this.names.put (sid, seq);
+}}
+}}
+}, "java.util.List");
+Clazz.makeConstructor (c$, 
+function (sequences) {
+this.construct (java.util.Arrays.asList (sequences));
+}, "~A");
+Clazz.defineMethod (c$, "pickbestMatch", 
+($fz = function (candName, matches) {
+var st = this.pickbestMatches (candName, matches);
+return st == null || st.size () == 0 ? null : st.get (0);
+}, $fz.isPrivate = true, $fz), "jalview.analysis.SequenceIdMatcher.SeqIdName,java.util.List");
+Clazz.defineMethod (c$, "pickbestMatches", 
+($fz = function (candName, matches) {
+var best =  new java.util.ArrayList ();
+if (candName == null || matches == null || matches.size () == 0) {
+return null;
+}var match = matches.remove (0);
+best.add (match);
+this.names.put (Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, match.getName ()), match);
+var matchlen = match.getName ().length;
+var namlen = candName.id.length;
+while (matches.size () > 0) {
+var cand = matches.remove (0);
+this.names.put (Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, cand.getName ()), cand);
+var q;
+var w;
+var candlen = cand.getName ().length;
+if ((q = Math.abs (matchlen - namlen)) > (w = Math.abs (candlen - namlen)) && candlen > matchlen) {
+best.clear ();
+match = cand;
+matchlen = candlen;
+best.add (match);
+}if (q == w && candlen == matchlen) {
+best.add (cand);
+}}
+if (best.size () == 0) {
+return null;
+};return best;
+}, $fz.isPrivate = true, $fz), "jalview.analysis.SequenceIdMatcher.SeqIdName,java.util.List");
+Clazz.defineMethod (c$, "findIdMatch", 
+function (seq) {
+var nam = Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seq.getName ());
+return this.findIdMatch (nam);
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "findIdMatch", 
+function (seqnam) {
+var nam = Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seqnam);
+return this.findIdMatch (nam);
+}, "~S");
+Clazz.defineMethod (c$, "findAllIdMatches", 
+function (seqnam) {
+var nam = Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seqnam);
+var m = this.findAllIdMatches (nam);
+if (m != null) {
+return m.toArray ( new Array (m.size ()));
+}return null;
+}, "~S");
+Clazz.defineMethod (c$, "findIdMatch", 
+function (seqs) {
+var namedseqs = null;
+var i = 0;
+var nam;
+if (seqs.length > 0) {
+namedseqs =  new Array (seqs.length);
+do {
+nam = Clazz.innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seqs[i].getName ());
+if (this.names.containsKey (nam)) {
+namedseqs[i] = this.findIdMatch (nam);
+} else {
+namedseqs[i] = null;
+}} while (++i < seqs.length);
+}return namedseqs;
+}, "~A");
+Clazz.defineMethod (c$, "findIdMatch", 
+($fz = function (nam) {
+var matches =  new java.util.Vector ();
+while (this.names.containsKey (nam)) {
+matches.addElement (this.names.remove (nam));
+}
+return this.pickbestMatch (nam, matches);
+}, $fz.isPrivate = true, $fz), "jalview.analysis.SequenceIdMatcher.SeqIdName");
+Clazz.defineMethod (c$, "findAllIdMatches", 
+($fz = function (nam) {
+var matches =  new java.util.ArrayList ();
+while (this.names.containsKey (nam)) {
+matches.add (this.names.remove (nam));
+}
+var r = this.pickbestMatches (nam, matches);
+return r;
+}, $fz.isPrivate = true, $fz), "jalview.analysis.SequenceIdMatcher.SeqIdName");
+c$.$SequenceIdMatcher$SeqIdName$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.id = null;
+this.WORD_SEP = "~. |#\\/<>!\"\u00a4$%^*)}[@\',?_";
+Clazz.instantialize (this, arguments);
+}, jalview.analysis.SequenceIdMatcher, "SeqIdName");
+Clazz.makeConstructor (c$, 
+function (a) {
+if (a != null) {
+this.id =  String.instantialize (a);
+} else {
+this.id = "";
+}}, "~S");
+Clazz.overrideMethod (c$, "hashCode", 
+function () {
+return ((this.id.length >= 4) ? this.id.substring (0, 4).hashCode () : this.id.hashCode ());
+});
+Clazz.defineMethod (c$, "equals", 
+function (a) {
+if (a == null) {
+return false;
+}if (Clazz.instanceOf (a, jalview.analysis.SequenceIdMatcher.SeqIdName)) {
+return this.equals (a);
+} else {
+if (Clazz.instanceOf (a, String)) {
+return this.equals (a);
+}}return false;
+}, "~O");
+Clazz.defineMethod (c$, "equals", 
+function (a) {
+if (this.id.length > a.id.length) {
+return this.id.startsWith (a.id) ? (this.WORD_SEP.indexOf (this.id.charAt (a.id.length)) > -1) : false;
+} else {
+return a.id.startsWith (this.id) ? (a.id.equals (this.id) ? true : (this.WORD_SEP.indexOf (a.id.charAt (this.id.length)) > -1)) : false;
+}}, "jalview.analysis.SequenceIdMatcher.SeqIdName");
+Clazz.defineMethod (c$, "equals", 
+function (a) {
+if (this.id.length > a.length) {
+return this.id.startsWith (a) ? (this.WORD_SEP.indexOf (this.id.charAt (a.length)) > -1) : false;
+} else {
+return a.startsWith (this.id) ? (a.equals (this.id) ? true : (this.WORD_SEP.indexOf (a.charAt (this.id.length)) > -1)) : false;
+}}, "~S");
+c$ = Clazz.p0p ();
+};
+});
index 8b6d9eb..f7f3fc4 100644 (file)
Binary files a/bin/jalview/analysis/StructureFrequency.class and b/bin/jalview/analysis/StructureFrequency.class differ
index 6c90b65..83c8f02 100644 (file)
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (null, "jalview.analysis.StructureFrequency", ["jalview.datamodel.Annotation", "jalview.util.Format", "$.QuickSort", "java.lang.Float", "java.util.Hashtable", "javajs.util.AU"], function () {\r
-c$ = Clazz.declareType (jalview.analysis, "StructureFrequency");\r
-c$.findPair = Clazz.defineMethod (c$, "findPair", \r
-function (pairs, indice) {\r
-for (var i = 0; i < pairs.length; i++) {\r
-if (pairs[i].getBegin () == indice) {\r
-return pairs[i].getEnd ();\r
-}}\r
-return -1;\r
-}, "~A,~N");\r
-c$.calculate = Clazz.defineMethod (c$, "calculate", \r
-function (sequences, start, end, result, profile, rnaStruc) {\r
-var residueHash;\r
-var maxResidue;\r
-var struc = rnaStruc.getRNAStruc ().toCharArray ();\r
-var rna = rnaStruc._rnasecstr;\r
-var c;\r
-var s;\r
-var cEnd;\r
-var count = 0;\r
-var nonGap = 0;\r
-var i;\r
-var bpEnd = -1;\r
-var j;\r
-var jSize = sequences.length;\r
-var values;\r
-var pairs;\r
-var percentage;\r
-var wooble = true;\r
-for (i = start; i < end; i++) {\r
-residueHash =  new java.util.Hashtable ();\r
-maxResidue = "-";\r
-values =  Clazz.newIntArray (255, 0);\r
-pairs =  Clazz.newIntArray (255, 255, 0);\r
-bpEnd = -1;\r
-if (i < struc.length) {\r
-s = struc[i];\r
-} else {\r
-s = '-';\r
-}if (s == '.' || s == ' ') {\r
-s = '-';\r
-}if (s != '(' && s != '[') {\r
-if (s == '-') {\r
-values['-'.charCodeAt (0)]++;\r
-}} else {\r
-bpEnd = jalview.analysis.StructureFrequency.findPair (rna, i);\r
-if (bpEnd > -1) {\r
-for (j = 0; j < jSize; j++) {\r
-if (sequences[j] == null) {\r
-System.err.println ("WARNING: Consensus skipping null sequence - possible race condition.");\r
-continue;\r
-}c = sequences[j].getCharAt (i);\r
-if (c == '.' || c == ' ') {\r
-c = '-';\r
-}if (c == '-') {\r
-values['-'.charCodeAt (0)]++;\r
-continue;\r
-}cEnd = sequences[j].getCharAt (bpEnd);\r
-if (jalview.analysis.StructureFrequency.checkBpType (c, cEnd) == true) {\r
-values['('.charCodeAt (0)]++;\r
-maxResidue = "(";\r
-wooble = true;\r
-}if (jalview.analysis.StructureFrequency.checkBpType (c, cEnd) == false) {\r
-wooble = false;\r
-values['['.charCodeAt (0)]++;\r
-maxResidue = "[";\r
-}pairs[c.charCodeAt (0)][cEnd.charCodeAt (0)]++;\r
-}\r
-}}if (profile) {\r
-residueHash.put ("P",  Clazz.newArray (-1, [values,  Clazz.newIntArray (-1, [jSize, (jSize - values['-'.charCodeAt (0)])])]));\r
-residueHash.put ("B", pairs);\r
-}if (wooble == true) {\r
-count = values['('.charCodeAt (0)];\r
-}if (wooble == false) {\r
-count = values['['.charCodeAt (0)];\r
-}residueHash.put ("C",  new Integer (count));\r
-residueHash.put ("R", maxResidue);\r
-percentage = (count * 100) / jSize;\r
-residueHash.put ("G",  new Float (percentage));\r
-if (result[i] == null) {\r
-result[i] = residueHash;\r
-}if (bpEnd > 0) {\r
-values[')'.charCodeAt (0)] = values['('.charCodeAt (0)];\r
-values[']'.charCodeAt (0)] = values['['.charCodeAt (0)];\r
-values['('.charCodeAt (0)] = 0;\r
-values['['.charCodeAt (0)] = 0;\r
-residueHash =  new java.util.Hashtable ();\r
-if (wooble == true) {\r
-maxResidue = ")";\r
-}if (wooble == false) {\r
-maxResidue = "]";\r
-}if (profile) {\r
-residueHash.put ("P",  Clazz.newArray (-1, [values,  Clazz.newIntArray (-1, [jSize, (jSize - values['-'.charCodeAt (0)])])]));\r
-residueHash.put ("B", pairs);\r
-}residueHash.put ("C",  new Integer (count));\r
-residueHash.put ("R", maxResidue);\r
-percentage = (count * 100) / jSize;\r
-residueHash.put ("G",  new Float (percentage));\r
-result[bpEnd] = residueHash;\r
-}}\r
-}, "~A,~N,~N,~A,~B,jalview.datamodel.AlignmentAnnotation");\r
-c$.checkBpType = Clazz.defineMethod (c$, "checkBpType", \r
-function (up, down) {\r
-if (up > 'Z') {\r
-up = String.fromCharCode (up.charCodeAt (0) - 32);\r
-}if (down > 'Z') {\r
-down = String.fromCharCode (down.charCodeAt (0) - 32);\r
-}switch (up) {\r
-case 'A':\r
-switch (down) {\r
-case 'T':\r
-return true;\r
-case 'U':\r
-return true;\r
-}\r
-break;\r
-case 'C':\r
-switch (down) {\r
-case 'G':\r
-return true;\r
-}\r
-break;\r
-case 'T':\r
-switch (down) {\r
-case 'A':\r
-return true;\r
-case 'G':\r
-return true;\r
-}\r
-break;\r
-case 'G':\r
-switch (down) {\r
-case 'C':\r
-return true;\r
-case 'T':\r
-return true;\r
-case 'U':\r
-return true;\r
-}\r
-break;\r
-case 'U':\r
-switch (down) {\r
-case 'A':\r
-return true;\r
-case 'G':\r
-return true;\r
-}\r
-break;\r
-}\r
-return false;\r
-}, "~S,~S");\r
-c$.completeConsensus = Clazz.defineMethod (c$, "completeConsensus", \r
-function (consensus, hconsensus, iStart, width, ignoreGapsInConsensusCalculation, includeAllConsSymbols, nseq) {\r
-var tval;\r
-var value;\r
-if (consensus == null || consensus.annotations == null || consensus.annotations.length < width) {\r
-return;\r
-}var fmtstr = "%3.1f";\r
-var precision = 2;\r
-while (nseq > 100) {\r
-precision++;\r
-nseq /= 10;\r
-}\r
-if (precision > 2) {\r
-fmtstr = "%" + (2 + precision) + "." + precision + "f";\r
-}var fmt =  new jalview.util.Format (fmtstr);\r
-for (var i = iStart; i < width; i++) {\r
-var hci;\r
-if (i >= hconsensus.length || ((hci = hconsensus[i]) == null)) {\r
-consensus.annotations[i] = null;\r
-continue;\r
-}value = 0;\r
-var fv;\r
-if (ignoreGapsInConsensusCalculation) {\r
-fv = hci.get ("N");\r
-} else {\r
-fv = hci.get ("G");\r
-}if (fv == null) {\r
-consensus.annotations[i] = null;\r
-continue;\r
-}value = fv.floatValue ();\r
-var maxRes = hci.get ("R").toString ();\r
-var mouseOver = hci.get ("R") + " ";\r
-if (maxRes.length > 1) {\r
-mouseOver = "[" + maxRes + "] ";\r
-maxRes = "+";\r
-}var profile = hci.get ("P");\r
-var pairs = hci.get ("B");\r
-if (pairs != null && includeAllConsSymbols) {\r
-mouseOver = "";\r
-var ca = javajs.util.AU.newInt2 (625);\r
-var vl =  Clazz.newFloatArray (625, 0);\r
-var x = 0;\r
-for (var c = 65; c < 90; c++) {\r
-for (var d = 65; d < 90; d++) {\r
-ca[x] =  Clazz.newIntArray (-1, [c, d]);\r
-vl[x] = pairs[c][d];\r
-x++;\r
-}\r
-}\r
-jalview.util.QuickSort.sortFloatObject (vl, ca);\r
-var p = 0;\r
-var divisor = profile[1][ignoreGapsInConsensusCalculation ? 1 : 0];\r
-for (var c = 624; c > 0; c--) {\r
-if (vl[c] > 0) {\r
-tval = (vl[c] * 100 / divisor);\r
-mouseOver += ((p == 0) ? "" : "; ") + String.fromCharCode (ca[c][0]) + String.fromCharCode (ca[c][1]) + " " + fmt.formDouble (tval) + "%";\r
-p++;\r
-}}\r
-} else {\r
-mouseOver += (fmt.formDouble (value) + "%");\r
-}consensus.annotations[i] =  new jalview.datamodel.Annotation (maxRes, mouseOver, ' ', value);\r
-}\r
-}, "jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~B,~B,~N");\r
-c$.extractProfile = Clazz.defineMethod (c$, "extractProfile", \r
-function (hconsensus, ignoreGapsInConsensusCalculation) {\r
-var rtnval =  Clazz.newIntArray (74, 0);\r
-var profile = hconsensus.get ("P");\r
-var pairs = hconsensus.get ("B");\r
-if (profile == null) {\r
-return null;\r
-}var ca = javajs.util.AU.newInt2 (625);\r
-var vl =  Clazz.newFloatArray (625, 0);\r
-var x = 0;\r
-for (var c = 65; c < 90; c++) {\r
-for (var d = 65; d < 90; d++) {\r
-ca[x] =  Clazz.newIntArray (-1, [c, d]);\r
-vl[x] = pairs[c][d];\r
-x++;\r
-}\r
-}\r
-jalview.util.QuickSort.sortFloatObject (vl, ca);\r
-var valuesCount = 0;\r
-rtnval[1] = 0;\r
-var offset = 2;\r
-var divisor = profile[1][ignoreGapsInConsensusCalculation ? 1 : 0];\r
-for (var c = 624; c > 0; c--) {\r
-if (vl[c] > 0) {\r
-rtnval[offset++] = ca[c][0];\r
-rtnval[offset++] = ca[c][1];\r
-rtnval[offset] = Clazz.floatToInt (vl[c] * 100 / divisor);\r
-rtnval[1] += rtnval[offset++];\r
-valuesCount++;\r
-}}\r
-rtnval[0] = valuesCount;\r
-var result =  Clazz.newIntArray (rtnval.length + 1, 0);\r
-result[0] = 1;\r
-System.arraycopy (rtnval, 0, result, 1, rtnval.length);\r
-return result;\r
-}, "java.util.Hashtable,~B");\r
-Clazz.defineStatics (c$,\r
-"STRUCTURE_PROFILE_LENGTH", 74,\r
-"MAXCOUNT", "C",\r
-"MAXRESIDUE", "R",\r
-"PID_GAPS", "G",\r
-"PID_NOGAPS", "N",\r
-"PROFILE", "P",\r
-"PAIRPROFILE", "B");\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (null, "jalview.analysis.StructureFrequency", ["jalview.datamodel.Annotation", "jalview.util.Format", "$.QuickSort", "java.lang.Float", "java.util.Hashtable", "javajs.util.AU"], function () {
+c$ = Clazz.declareType (jalview.analysis, "StructureFrequency");
+c$.findPair = Clazz.defineMethod (c$, "findPair", 
+function (pairs, indice) {
+for (var i = 0; i < pairs.length; i++) {
+if (pairs[i].getBegin () == indice) {
+return pairs[i].getEnd ();
+}}
+return -1;
+}, "~A,~N");
+c$.calculate = Clazz.defineMethod (c$, "calculate", 
+function (sequences, start, end, result, profile, rnaStruc) {
+var residueHash;
+var maxResidue;
+var struc = rnaStruc.getRNAStruc ().toCharArray ();
+var rna = rnaStruc._rnasecstr;
+var c;
+var s;
+var cEnd;
+var count = 0;
+var nonGap = 0;
+var i;
+var bpEnd = -1;
+var j;
+var jSize = sequences.length;
+var values;
+var pairs;
+var percentage;
+var wooble = true;
+for (i = start; i < end; i++) {
+residueHash =  new java.util.Hashtable ();
+maxResidue = "-";
+values =  Clazz.newIntArray (255, 0);
+pairs =  Clazz.newIntArray (255, 255, 0);
+bpEnd = -1;
+if (i < struc.length) {
+s = struc[i];
+} else {
+s = '-';
+}if (s == '.' || s == ' ') {
+s = '-';
+}if (s != '(' && s != '[') {
+if (s == '-') {
+values['-'.charCodeAt (0)]++;
+}} else {
+bpEnd = jalview.analysis.StructureFrequency.findPair (rna, i);
+if (bpEnd > -1) {
+for (j = 0; j < jSize; j++) {
+if (sequences[j] == null) {
+System.err.println ("WARNING: Consensus skipping null sequence - possible race condition.");
+continue;
+}c = sequences[j].getCharAt (i);
+if (c == '.' || c == ' ') {
+c = '-';
+}if (c == '-') {
+values['-'.charCodeAt (0)]++;
+continue;
+}cEnd = sequences[j].getCharAt (bpEnd);
+if (jalview.analysis.StructureFrequency.checkBpType (c, cEnd) == true) {
+values['('.charCodeAt (0)]++;
+maxResidue = "(";
+wooble = true;
+}if (jalview.analysis.StructureFrequency.checkBpType (c, cEnd) == false) {
+wooble = false;
+values['['.charCodeAt (0)]++;
+maxResidue = "[";
+}pairs[c.charCodeAt (0)][cEnd.charCodeAt (0)]++;
+}
+}}if (profile) {
+residueHash.put ("P",  Clazz.newArray (-1, [values,  Clazz.newIntArray (-1, [jSize, (jSize - values['-'.charCodeAt (0)])])]));
+residueHash.put ("B", pairs);
+}if (wooble == true) {
+count = values['('.charCodeAt (0)];
+}if (wooble == false) {
+count = values['['.charCodeAt (0)];
+}residueHash.put ("C",  new Integer (count));
+residueHash.put ("R", maxResidue);
+percentage = (count * 100) / jSize;
+residueHash.put ("G",  new Float (percentage));
+if (result[i] == null) {
+result[i] = residueHash;
+}if (bpEnd > 0) {
+values[')'.charCodeAt (0)] = values['('.charCodeAt (0)];
+values[']'.charCodeAt (0)] = values['['.charCodeAt (0)];
+values['('.charCodeAt (0)] = 0;
+values['['.charCodeAt (0)] = 0;
+residueHash =  new java.util.Hashtable ();
+if (wooble == true) {
+maxResidue = ")";
+}if (wooble == false) {
+maxResidue = "]";
+}if (profile) {
+residueHash.put ("P",  Clazz.newArray (-1, [values,  Clazz.newIntArray (-1, [jSize, (jSize - values['-'.charCodeAt (0)])])]));
+residueHash.put ("B", pairs);
+}residueHash.put ("C",  new Integer (count));
+residueHash.put ("R", maxResidue);
+percentage = (count * 100) / jSize;
+residueHash.put ("G",  new Float (percentage));
+result[bpEnd] = residueHash;
+}}
+}, "~A,~N,~N,~A,~B,jalview.datamodel.AlignmentAnnotation");
+c$.checkBpType = Clazz.defineMethod (c$, "checkBpType", 
+function (up, down) {
+if (up > 'Z') {
+up = String.fromCharCode (up.charCodeAt (0) - 32);
+}if (down > 'Z') {
+down = String.fromCharCode (down.charCodeAt (0) - 32);
+}switch (up) {
+case 'A':
+switch (down) {
+case 'T':
+return true;
+case 'U':
+return true;
+}
+break;
+case 'C':
+switch (down) {
+case 'G':
+return true;
+}
+break;
+case 'T':
+switch (down) {
+case 'A':
+return true;
+case 'G':
+return true;
+}
+break;
+case 'G':
+switch (down) {
+case 'C':
+return true;
+case 'T':
+return true;
+case 'U':
+return true;
+}
+break;
+case 'U':
+switch (down) {
+case 'A':
+return true;
+case 'G':
+return true;
+}
+break;
+}
+return false;
+}, "~S,~S");
+c$.completeConsensus = Clazz.defineMethod (c$, "completeConsensus", 
+function (consensus, hconsensus, iStart, width, ignoreGapsInConsensusCalculation, includeAllConsSymbols, nseq) {
+var tval;
+var value;
+if (consensus == null || consensus.annotations == null || consensus.annotations.length < width) {
+return;
+}var fmtstr = "%3.1f";
+var precision = 2;
+while (nseq > 100) {
+precision++;
+nseq /= 10;
+}
+if (precision > 2) {
+fmtstr = "%" + (2 + precision) + "." + precision + "f";
+}var fmt =  new jalview.util.Format (fmtstr);
+for (var i = iStart; i < width; i++) {
+var hci;
+if (i >= hconsensus.length || ((hci = hconsensus[i]) == null)) {
+consensus.annotations[i] = null;
+continue;
+}value = 0;
+var fv;
+if (ignoreGapsInConsensusCalculation) {
+fv = hci.get ("N");
+} else {
+fv = hci.get ("G");
+}if (fv == null) {
+consensus.annotations[i] = null;
+continue;
+}value = fv.floatValue ();
+var maxRes = hci.get ("R").toString ();
+var mouseOver = hci.get ("R") + " ";
+if (maxRes.length > 1) {
+mouseOver = "[" + maxRes + "] ";
+maxRes = "+";
+}var profile = hci.get ("P");
+var pairs = hci.get ("B");
+if (pairs != null && includeAllConsSymbols) {
+mouseOver = "";
+var ca = javajs.util.AU.newInt2 (625);
+var vl =  Clazz.newFloatArray (625, 0);
+var x = 0;
+for (var c = 65; c < 90; c++) {
+for (var d = 65; d < 90; d++) {
+ca[x] =  Clazz.newIntArray (-1, [c, d]);
+vl[x] = pairs[c][d];
+x++;
+}
+}
+jalview.util.QuickSort.sortFloatObject (vl, ca);
+var p = 0;
+var divisor = profile[1][ignoreGapsInConsensusCalculation ? 1 : 0];
+for (var c = 624; c > 0; c--) {
+if (vl[c] > 0) {
+tval = (vl[c] * 100 / divisor);
+mouseOver += ((p == 0) ? "" : "; ") + String.fromCharCode (ca[c][0]) + String.fromCharCode (ca[c][1]) + " " + fmt.formDouble (tval) + "%";
+p++;
+}}
+} else {
+mouseOver += (fmt.formDouble (value) + "%");
+}consensus.annotations[i] =  new jalview.datamodel.Annotation (maxRes, mouseOver, ' ', value);
+}
+}, "jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~B,~B,~N");
+c$.extractProfile = Clazz.defineMethod (c$, "extractProfile", 
+function (hconsensus, ignoreGapsInConsensusCalculation) {
+var rtnval =  Clazz.newIntArray (74, 0);
+var profile = hconsensus.get ("P");
+var pairs = hconsensus.get ("B");
+if (profile == null) {
+return null;
+}var ca = javajs.util.AU.newInt2 (625);
+var vl =  Clazz.newFloatArray (625, 0);
+var x = 0;
+for (var c = 65; c < 90; c++) {
+for (var d = 65; d < 90; d++) {
+ca[x] =  Clazz.newIntArray (-1, [c, d]);
+vl[x] = pairs[c][d];
+x++;
+}
+}
+jalview.util.QuickSort.sortFloatObject (vl, ca);
+var valuesCount = 0;
+rtnval[1] = 0;
+var offset = 2;
+var divisor = profile[1][ignoreGapsInConsensusCalculation ? 1 : 0];
+for (var c = 624; c > 0; c--) {
+if (vl[c] > 0) {
+rtnval[offset++] = ca[c][0];
+rtnval[offset++] = ca[c][1];
+rtnval[offset] = Clazz.floatToInt (vl[c] * 100 / divisor);
+rtnval[1] += rtnval[offset++];
+valuesCount++;
+}}
+rtnval[0] = valuesCount;
+var result =  Clazz.newIntArray (rtnval.length + 1, 0);
+result[0] = 1;
+System.arraycopy (rtnval, 0, result, 1, rtnval.length);
+return result;
+}, "java.util.Hashtable,~B");
+Clazz.defineStatics (c$,
+"STRUCTURE_PROFILE_LENGTH", 74,
+"MAXCOUNT", "C",
+"MAXRESIDUE", "R",
+"PID_GAPS", "G",
+"PID_NOGAPS", "N",
+"PROFILE", "P",
+"PAIRPROFILE", "B");
+});
index 535f6ac..32861ff 100644 (file)
@@ -1,20 +1,20 @@
-Clazz.declarePackage ("jalview.analysis");\r
-Clazz.load (["java.lang.Exception"], "jalview.analysis.WUSSParseException", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.problemPos = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis, "WUSSParseException", Exception);\r
-Clazz.makeConstructor (c$, \r
-function (problemPos) {\r
-this.construct ("Invalid WUSS Notation", problemPos);\r
-}, "~N");\r
-Clazz.makeConstructor (c$, \r
-function (message, problemPos) {\r
-Clazz.superConstructor (this, jalview.analysis.WUSSParseException, [message + " at or near position " + problemPos]);\r
-this.problemPos = problemPos;\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "getProblemPos", \r
-function () {\r
-return this.problemPos;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.analysis");
+Clazz.load (["java.lang.Exception"], "jalview.analysis.WUSSParseException", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.problemPos = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.analysis, "WUSSParseException", Exception);
+Clazz.makeConstructor (c$, 
+function (problemPos) {
+this.construct ("Invalid WUSS Notation", problemPos);
+}, "~N");
+Clazz.makeConstructor (c$, 
+function (message, problemPos) {
+Clazz.superConstructor (this, jalview.analysis.WUSSParseException, [message + " at or near position " + problemPos]);
+this.problemPos = problemPos;
+}, "~S,~N");
+Clazz.defineMethod (c$, "getProblemPos", 
+function () {
+return this.problemPos;
+});
+});
index 45e0428..a23ac21 100644 (file)
@@ -1,5 +1,5 @@
-var path = ClazzLoader.getClasspathFor ("jalview.analysis.package");\r
-path = path.substring (0, path.lastIndexOf ("package.js"));\r
-ClazzLoader.jarClasspath (path + "NJTree.js", [\r
-"jalview.analysis.Cluster",\r
-"$.NJTree"]);\r
+var path = ClazzLoader.getClasspathFor ("jalview.analysis.package");
+path = path.substring (0, path.lastIndexOf ("package.js"));
+ClazzLoader.jarClasspath (path + "NJTree.js", [
+"jalview.analysis.Cluster",
+"$.NJTree"]);
index 3e8e57d..7e483bd 100644 (file)
@@ -1,86 +1,86 @@
-Clazz.declarePackage ("jalview.analysis.scoremodels");\r
-Clazz.load (["jalview.api.analysis.ScoreModelI", "$.ViewBasedAnalysisI"], "jalview.analysis.scoremodels.FeatureScoreModel", ["jalview.util.Comparison", "java.util.ArrayList", "$.Arrays", "$.Hashtable"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.fr = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.analysis.scoremodels, "FeatureScoreModel", null, [jalview.api.analysis.ScoreModelI, jalview.api.analysis.ViewBasedAnalysisI]);\r
-Clazz.overrideMethod (c$, "configureFromAlignmentView", \r
-function (view) {\r
-this.fr = view.cloneFeatureRenderer ();\r
-return true;\r
-}, "jalview.api.AlignmentViewPanel");\r
-Clazz.overrideMethod (c$, "findDistances", \r
-function (seqData) {\r
-var nofeats = 0;\r
-var dft = java.util.Arrays.asList (this.fr.getDisplayedFeatureTypes ());\r
-if (dft != null) {\r
-nofeats = dft.size ();\r
-}var sequenceString = seqData.getVisibleAlignment (jalview.util.Comparison.GapChars.charAt (0)).getSequencesArray ();\r
-var noseqs = sequenceString.length;\r
-var cpwidth = seqData.getWidth ();\r
-var distance =  Clazz.newFloatArray (noseqs, noseqs, 0);\r
-if (nofeats == 0) {\r
-for (var d, $d = 0, $$d = distance; $d < $$d.length && ((d = $$d[$d]) || true); $d++) {\r
-for (var i = 0; i < d.length; d[i++] = 0) {\r
-;}\r
-}\r
-return distance;\r
-}var max = 0;\r
-for (var cpos = 0; cpos < cpwidth; cpos++) {\r
-var sfap =  new java.util.ArrayList ();\r
-for (var i = 0; i < noseqs; i++) {\r
-var types =  new java.util.Hashtable ();\r
-var sfs = this.fr.findFeaturesAtRes (sequenceString[i], sequenceString[i].findPosition (cpos));\r
-for (var sf, $sf = sfs.iterator (); $sf.hasNext () && ((sf = $sf.next ()) || true);) {\r
-types.put (sf.getType (), sf);\r
-}\r
-sfap.add (types);\r
-}\r
-for (var i = 0; i < (noseqs - 1); i++) {\r
-if (cpos == 0) {\r
-distance[i][i] = 0;\r
-}for (var j = i + 1; j < noseqs; j++) {\r
-var sfcommon = 0;\r
-var fi = sfap.get (i);\r
-var fk;\r
-var fj = sfap.get (j);\r
-if (fi.size () > fj.size ()) {\r
-fk = fj;\r
-} else {\r
-fk = fi;\r
-fi = fj;\r
-}for (var k, $k = fi.keySet ().iterator (); $k.hasNext () && ((k = $k.next ()) || true);) {\r
-var sfj = fk.get (k);\r
-if (sfj != null) {\r
-sfcommon++;\r
-}}\r
-distance[i][j] += (fi.size () + fk.size () - 2 * sfcommon);\r
-distance[j][i] += distance[i][j];\r
-}\r
-}\r
-}\r
-for (var i = 0; i < noseqs; i++) {\r
-for (var j = i + 1; j < noseqs; j++) {\r
-distance[i][j] /= cpwidth;\r
-distance[j][i] = distance[i][j];\r
-}\r
-}\r
-return distance;\r
-}, "jalview.datamodel.AlignmentView");\r
-Clazz.overrideMethod (c$, "getName", \r
-function () {\r
-return "Sequence Feature Similarity";\r
-});\r
-Clazz.overrideMethod (c$, "isDNA", \r
-function () {\r
-return true;\r
-});\r
-Clazz.overrideMethod (c$, "isProtein", \r
-function () {\r
-return true;\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "Score between sequences based on hamming distance between binary vectors marking features displayed at each column";\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.analysis.scoremodels");
+Clazz.load (["jalview.api.analysis.ScoreModelI", "$.ViewBasedAnalysisI"], "jalview.analysis.scoremodels.FeatureScoreModel", ["jalview.util.Comparison", "java.util.ArrayList", "$.Arrays", "$.Hashtable"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.fr = null;
+Clazz.instantialize (this, arguments);
+}, jalview.analysis.scoremodels, "FeatureScoreModel", null, [jalview.api.analysis.ScoreModelI, jalview.api.analysis.ViewBasedAnalysisI]);
+Clazz.overrideMethod (c$, "configureFromAlignmentView", 
+function (view) {
+this.fr = view.cloneFeatureRenderer ();
+return true;
+}, "jalview.api.AlignmentViewPanel");
+Clazz.overrideMethod (c$, "findDistances", 
+function (seqData) {
+var nofeats = 0;
+var dft = java.util.Arrays.asList (this.fr.getDisplayedFeatureTypes ());
+if (dft != null) {
+nofeats = dft.size ();
+}var sequenceString = seqData.getVisibleAlignment (jalview.util.Comparison.GapChars.charAt (0)).getSequencesArray ();
+var noseqs = sequenceString.length;
+var cpwidth = seqData.getWidth ();
+var distance =  Clazz.newFloatArray (noseqs, noseqs, 0);
+if (nofeats == 0) {
+for (var d, $d = 0, $$d = distance; $d < $$d.length && ((d = $$d[$d]) || true); $d++) {
+for (var i = 0; i < d.length; d[i++] = 0) {
+;}
+}
+return distance;
+}var max = 0;
+for (var cpos = 0; cpos < cpwidth; cpos++) {
+var sfap =  new java.util.ArrayList ();
+for (var i = 0; i < noseqs; i++) {
+var types =  new java.util.Hashtable ();
+var sfs = this.fr.findFeaturesAtRes (sequenceString[i], sequenceString[i].findPosition (cpos));
+for (var sf, $sf = sfs.iterator (); $sf.hasNext () && ((sf = $sf.next ()) || true);) {
+types.put (sf.getType (), sf);
+}
+sfap.add (types);
+}
+for (var i = 0; i < (noseqs - 1); i++) {
+if (cpos == 0) {
+distance[i][i] = 0;
+}for (var j = i + 1; j < noseqs; j++) {
+var sfcommon = 0;
+var fi = sfap.get (i);
+var fk;
+var fj = sfap.get (j);
+if (fi.size () > fj.size ()) {
+fk = fj;
+} else {
+fk = fi;
+fi = fj;
+}for (var k, $k = fi.keySet ().iterator (); $k.hasNext () && ((k = $k.next ()) || true);) {
+var sfj = fk.get (k);
+if (sfj != null) {
+sfcommon++;
+}}
+distance[i][j] += (fi.size () + fk.size () - 2 * sfcommon);
+distance[j][i] += distance[i][j];
+}
+}
+}
+for (var i = 0; i < noseqs; i++) {
+for (var j = i + 1; j < noseqs; j++) {
+distance[i][j] /= cpwidth;
+distance[j][i] = distance[i][j];
+}
+}
+return distance;
+}, "jalview.datamodel.AlignmentView");
+Clazz.overrideMethod (c$, "getName", 
+function () {
+return "Sequence Feature Similarity";
+});
+Clazz.overrideMethod (c$, "isDNA", 
+function () {
+return true;
+});
+Clazz.overrideMethod (c$, "isProtein", 
+function () {
+return true;
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "Score between sequences based on hamming distance between binary vectors marking features displayed at each column";
+});
+});
index 0266c33..09c86e5 100644 (file)
@@ -1,32 +1,32 @@
-Clazz.declarePackage ("jalview.analysis.scoremodels");\r
-Clazz.load (["jalview.api.analysis.ScoreModelI"], "jalview.analysis.scoremodels.PIDScoreModel", ["jalview.util.Comparison"], function () {\r
-c$ = Clazz.declareType (jalview.analysis.scoremodels, "PIDScoreModel", null, jalview.api.analysis.ScoreModelI);\r
-Clazz.overrideMethod (c$, "findDistances", \r
-function (seqData) {\r
-var sequenceString = seqData.getSequenceStrings (jalview.util.Comparison.GapChars.charAt (0));\r
-var noseqs = sequenceString.length;\r
-var distance =  Clazz.newFloatArray (noseqs, noseqs, 0);\r
-for (var i = 0; i < (noseqs - 1); i++) {\r
-for (var j = i; j < noseqs; j++) {\r
-if (j == i) {\r
-distance[i][i] = 0;\r
-} else {\r
-distance[i][j] = 100 - jalview.util.Comparison.PID (sequenceString[i], sequenceString[j]);\r
-distance[j][i] = distance[i][j];\r
-}}\r
-}\r
-return distance;\r
-}, "jalview.datamodel.AlignmentView");\r
-Clazz.overrideMethod (c$, "getName", \r
-function () {\r
-return "PID";\r
-});\r
-Clazz.overrideMethod (c$, "isDNA", \r
-function () {\r
-return true;\r
-});\r
-Clazz.overrideMethod (c$, "isProtein", \r
-function () {\r
-return true;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.analysis.scoremodels");
+Clazz.load (["jalview.api.analysis.ScoreModelI"], "jalview.analysis.scoremodels.PIDScoreModel", ["jalview.util.Comparison"], function () {
+c$ = Clazz.declareType (jalview.analysis.scoremodels, "PIDScoreModel", null, jalview.api.analysis.ScoreModelI);
+Clazz.overrideMethod (c$, "findDistances", 
+function (seqData) {
+var sequenceString = seqData.getSequenceStrings (jalview.util.Comparison.GapChars.charAt (0));
+var noseqs = sequenceString.length;
+var distance =  Clazz.newFloatArray (noseqs, noseqs, 0);
+for (var i = 0; i < (noseqs - 1); i++) {
+for (var j = i; j < noseqs; j++) {
+if (j == i) {
+distance[i][i] = 0;
+} else {
+distance[i][j] = 100 - jalview.util.Comparison.PID (sequenceString[i], sequenceString[j]);
+distance[j][i] = distance[i][j];
+}}
+}
+return distance;
+}, "jalview.datamodel.AlignmentView");
+Clazz.overrideMethod (c$, "getName", 
+function () {
+return "PID";
+});
+Clazz.overrideMethod (c$, "isDNA", 
+function () {
+return true;
+});
+Clazz.overrideMethod (c$, "isProtein", 
+function () {
+return true;
+});
+});
index 6cfe67a..4c1456f 100644 (file)
@@ -1,39 +1,39 @@
-Clazz.declarePackage ("jalview.analysis.scoremodels");\r
-Clazz.load (["jalview.api.analysis.ScoreModelI"], "jalview.analysis.scoremodels.PairwiseSeqScoreModel", ["jalview.util.Comparison"], function () {\r
-c$ = Clazz.declareType (jalview.analysis.scoremodels, "PairwiseSeqScoreModel", null, jalview.api.analysis.ScoreModelI);\r
-Clazz.overrideMethod (c$, "findDistances", \r
-function (seqData) {\r
-var sequenceString = seqData.getSequenceStrings (jalview.util.Comparison.GapChars.charAt (0));\r
-var noseqs = sequenceString.length;\r
-var distance =  Clazz.newFloatArray (noseqs, noseqs, 0);\r
-var maxscore = 0;\r
-var end = sequenceString[0].length;\r
-for (var i = 0; i < (noseqs - 1); i++) {\r
-for (var j = i; j < noseqs; j++) {\r
-var score = 0;\r
-for (var k = 0; k < end; k++) {\r
-try {\r
-score += this.getPairwiseScore (sequenceString[i].charAt (k), sequenceString[j].charAt (k));\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.err.println ("err creating " + this.getName () + " tree");\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}\r
-distance[i][j] = score;\r
-if (score > maxscore) {\r
-maxscore = score;\r
-}}\r
-}\r
-for (var i = 0; i < (noseqs - 1); i++) {\r
-for (var j = i; j < noseqs; j++) {\r
-distance[i][j] = maxscore - distance[i][j];\r
-distance[j][i] = distance[i][j];\r
-}\r
-}\r
-return distance;\r
-}, "jalview.datamodel.AlignmentView");\r
-});\r
+Clazz.declarePackage ("jalview.analysis.scoremodels");
+Clazz.load (["jalview.api.analysis.ScoreModelI"], "jalview.analysis.scoremodels.PairwiseSeqScoreModel", ["jalview.util.Comparison"], function () {
+c$ = Clazz.declareType (jalview.analysis.scoremodels, "PairwiseSeqScoreModel", null, jalview.api.analysis.ScoreModelI);
+Clazz.overrideMethod (c$, "findDistances", 
+function (seqData) {
+var sequenceString = seqData.getSequenceStrings (jalview.util.Comparison.GapChars.charAt (0));
+var noseqs = sequenceString.length;
+var distance =  Clazz.newFloatArray (noseqs, noseqs, 0);
+var maxscore = 0;
+var end = sequenceString[0].length;
+for (var i = 0; i < (noseqs - 1); i++) {
+for (var j = i; j < noseqs; j++) {
+var score = 0;
+for (var k = 0; k < end; k++) {
+try {
+score += this.getPairwiseScore (sequenceString[i].charAt (k), sequenceString[j].charAt (k));
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("err creating " + this.getName () + " tree");
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}
+distance[i][j] = score;
+if (score > maxscore) {
+maxscore = score;
+}}
+}
+for (var i = 0; i < (noseqs - 1); i++) {
+for (var j = i; j < noseqs; j++) {
+distance[i][j] = maxscore - distance[i][j];
+distance[j][i] = distance[i][j];
+}
+}
+return distance;
+}, "jalview.datamodel.AlignmentView");
+});
index 06ef966..e2e0eef 100644 (file)
@@ -1,45 +1,45 @@
-Clazz.declarePackage ("jalview.analysis.scoremodels");\r
-Clazz.load (["jalview.api.analysis.ScoreModelI"], "jalview.analysis.scoremodels.SWScoreModel", ["jalview.analysis.AlignSeq", "jalview.util.Comparison"], function () {\r
-c$ = Clazz.declareType (jalview.analysis.scoremodels, "SWScoreModel", null, jalview.api.analysis.ScoreModelI);\r
-Clazz.overrideMethod (c$, "findDistances", \r
-function (seqData) {\r
-var sequenceString = seqData.getVisibleAlignment (jalview.util.Comparison.GapChars.charAt (0)).getSequencesArray ();\r
-var noseqs = sequenceString.length;\r
-var distance =  Clazz.newFloatArray (noseqs, noseqs, 0);\r
-var max = -1;\r
-for (var i = 0; i < (noseqs - 1); i++) {\r
-for (var j = i; j < noseqs; j++) {\r
-var as =  new jalview.analysis.AlignSeq (sequenceString[i], sequenceString[j], seqData.isNa () ? "dna" : "pep");\r
-as.calcScoreMatrix ();\r
-as.traceAlignment ();\r
-as.printAlignment (System.out);\r
-distance[i][j] = as.maxscore;\r
-if (max < distance[i][j]) {\r
-max = distance[i][j];\r
-}}\r
-}\r
-for (var i = 0; i < (noseqs - 1); i++) {\r
-for (var j = i; j < noseqs; j++) {\r
-distance[i][j] = max - distance[i][j];\r
-distance[j][i] = distance[i][j];\r
-}\r
-}\r
-return distance;\r
-}, "jalview.datamodel.AlignmentView");\r
-Clazz.overrideMethod (c$, "getName", \r
-function () {\r
-return "Smith Waterman Score";\r
-});\r
-Clazz.overrideMethod (c$, "isDNA", \r
-function () {\r
-return true;\r
-});\r
-Clazz.overrideMethod (c$, "isProtein", \r
-function () {\r
-return true;\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "Score between two sequences aligned with Smith Waterman with default Peptide/Nucleotide matrix";\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.analysis.scoremodels");
+Clazz.load (["jalview.api.analysis.ScoreModelI"], "jalview.analysis.scoremodels.SWScoreModel", ["jalview.analysis.AlignSeq", "jalview.util.Comparison"], function () {
+c$ = Clazz.declareType (jalview.analysis.scoremodels, "SWScoreModel", null, jalview.api.analysis.ScoreModelI);
+Clazz.overrideMethod (c$, "findDistances", 
+function (seqData) {
+var sequenceString = seqData.getVisibleAlignment (jalview.util.Comparison.GapChars.charAt (0)).getSequencesArray ();
+var noseqs = sequenceString.length;
+var distance =  Clazz.newFloatArray (noseqs, noseqs, 0);
+var max = -1;
+for (var i = 0; i < (noseqs - 1); i++) {
+for (var j = i; j < noseqs; j++) {
+var as =  new jalview.analysis.AlignSeq (sequenceString[i], sequenceString[j], seqData.isNa () ? "dna" : "pep");
+as.calcScoreMatrix ();
+as.traceAlignment ();
+as.printAlignment (System.out);
+distance[i][j] = as.maxscore;
+if (max < distance[i][j]) {
+max = distance[i][j];
+}}
+}
+for (var i = 0; i < (noseqs - 1); i++) {
+for (var j = i; j < noseqs; j++) {
+distance[i][j] = max - distance[i][j];
+distance[j][i] = distance[i][j];
+}
+}
+return distance;
+}, "jalview.datamodel.AlignmentView");
+Clazz.overrideMethod (c$, "getName", 
+function () {
+return "Smith Waterman Score";
+});
+Clazz.overrideMethod (c$, "isDNA", 
+function () {
+return true;
+});
+Clazz.overrideMethod (c$, "isProtein", 
+function () {
+return true;
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "Score between two sequences aligned with Smith Waterman with default Peptide/Nucleotide matrix";
+});
+});
index 47dd8f5..231cd97 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "AlignCalcManagerI");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "AlignCalcManagerI");
index cf7fe41..77fffcc 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "AlignCalcWorkerI", Runnable);\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "AlignCalcWorkerI", Runnable);
index d26a509..512e454 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "AlignExportSettingI");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "AlignExportSettingI");
index b132c71..8dd9d75 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "AlignViewControllerGuiI");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "AlignViewControllerGuiI");
index 9851769..4dbfb00 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "AlignViewControllerI");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "AlignViewControllerI");
index b8de508..c65c3f7 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.load (["jalview.api.ViewStyleI"], "jalview.api.AlignViewportI", null, function () {\r
-Clazz.declareInterface (jalview.api, "AlignViewportI", jalview.api.ViewStyleI);\r
-});\r
+Clazz.declarePackage ("jalview.api");
+Clazz.load (["jalview.api.ViewStyleI"], "jalview.api.AlignViewportI", null, function () {
+Clazz.declareInterface (jalview.api, "AlignViewportI", jalview.api.ViewStyleI);
+});
index 1a1598e..5e0dc22 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.load (["jalview.api.OOMHandlerI"], "jalview.api.AlignmentViewPanel", null, function () {\r
-Clazz.declareInterface (jalview.api, "AlignmentViewPanel", jalview.api.OOMHandlerI);\r
-});\r
+Clazz.declarePackage ("jalview.api");
+Clazz.load (["jalview.api.OOMHandlerI"], "jalview.api.AlignmentViewPanel", null, function () {
+Clazz.declareInterface (jalview.api, "AlignmentViewPanel", jalview.api.OOMHandlerI);
+});
index 7e6e24d..c15e9ab 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "ComplexAlignFile");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "ComplexAlignFile");
index cce7fb2..e845bcd 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "FeatureRenderer");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "FeatureRenderer");
index d7e477c..6785f01 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "FeatureSettingsControllerI");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "FeatureSettingsControllerI");
index a01cd0e..0fded11 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "FeatureSettingsModelI");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "FeatureSettingsModelI");
index c796711..331bf21 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "FeaturesDisplayedI");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "FeaturesDisplayedI");
index 48ab467..1f61be8 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "OOMHandlerI");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "OOMHandlerI");
index ccaa5b8..e582e4c 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "RotatableCanvasI");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "RotatableCanvasI");
index ce4be46..247757d 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "SequenceRenderer");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "SequenceRenderer");
index f1a45f3..4eee259 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "SequenceStructureBinding");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "SequenceStructureBinding");
index 03965d8..eb0b347 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "SplitContainerI");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "SplitContainerI");
index a051fb2..e65f1a5 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "StructureSelectionManagerProvider");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "StructureSelectionManagerProvider");
index 9838149..ea7a773 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api");\r
-Clazz.declareInterface (jalview.api, "ViewStyleI");\r
+Clazz.declarePackage ("jalview.api");
+Clazz.declareInterface (jalview.api, "ViewStyleI");
index 56b0281..4b5c4fb 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api.analysis");\r
-Clazz.declareInterface (jalview.api.analysis, "ScoreModelI");\r
+Clazz.declarePackage ("jalview.api.analysis");
+Clazz.declareInterface (jalview.api.analysis, "ScoreModelI");
index bc5e92d..cbb8c8d 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api.analysis");\r
-Clazz.declareInterface (jalview.api.analysis, "ViewBasedAnalysisI");\r
+Clazz.declarePackage ("jalview.api.analysis");
+Clazz.declareInterface (jalview.api.analysis, "ViewBasedAnalysisI");
index 2512221..643feb8 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.api.structures");\r
-Clazz.declareInterface (jalview.api.structures, "JalviewStructureDisplayI");\r
+Clazz.declarePackage ("jalview.api.structures");
+Clazz.declareInterface (jalview.api.structures, "JalviewStructureDisplayI");
index a328b2c..0400004 100644 (file)
Binary files a/bin/jalview/appletgui/APopupMenu.class and b/bin/jalview/appletgui/APopupMenu.class differ
index eac223b..1e89852 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.PopupMenu", "java.awt.event.ActionListener", "$.ItemListener", "awt2swing.CheckboxMenuItem", "$.Menu", "$.MenuItem", "jalview.util.MessageManager"], "jalview.appletgui.APopupMenu", ["awt2swing.Frame", "jalview.analysis.AAFrequency", "$.AlignmentAnnotationUtils", "$.AlignmentUtils", "$.Conservation", "jalview.appletgui.AppletJmol", "$.CutAndPasteTransfer", "$.EditNameDialog", "$.SliderPanel", "$.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.commands.ChangeCaseCommand", "$.EditCommand", "jalview.datamodel.SequenceFeature", "jalview.io.AppletFormatAdapter", "$.SequenceAnnotationReport", "jalview.schemes.Blosum62ColourScheme", "$.BuriedColourScheme", "$.ClustalxColourScheme", "$.HelixColourScheme", "$.HydrophobicColourScheme", "$.NucleotideColourScheme", "$.PIDColourScheme", "$.ResidueProperties", "$.StrandColourScheme", "$.TaylorColourScheme", "$.TurnColourScheme", "$.ZappoColourScheme", "jalview.util.DBRefUtils", "$.UrlLink", "java.lang.StringBuffer", "$.StringBuilder", "java.util.Arrays", "$.Collections", "$.LinkedHashMap", "$.TreeMap"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.groupMenu = null;\r
-this.editGroupName = null;\r
-this.clustalColour = null;\r
-this.zappoColour = null;\r
-this.taylorColour = null;\r
-this.hydrophobicityColour = null;\r
-this.helixColour = null;\r
-this.strandColour = null;\r
-this.turnColour = null;\r
-this.buriedColour = null;\r
-this.abovePIDColour = null;\r
-this.userDefinedColour = null;\r
-this.PIDColour = null;\r
-this.BLOSUM62Colour = null;\r
-this.noColourmenuItem = null;\r
-this.conservationMenuItem = null;\r
-this.ap = null;\r
-this.unGroupMenuItem = null;\r
-this.createGroupMenuItem = null;\r
-this.nucleotideMenuItem = null;\r
-this.colourMenu = null;\r
-this.showBoxes = null;\r
-this.showText = null;\r
-this.showColourText = null;\r
-this.displayNonconserved = null;\r
-this.seqShowAnnotationsMenu = null;\r
-this.seqHideAnnotationsMenu = null;\r
-this.seqAddReferenceAnnotations = null;\r
-this.groupShowAnnotationsMenu = null;\r
-this.groupHideAnnotationsMenu = null;\r
-this.groupAddReferenceAnnotations = null;\r
-this.editMenu = null;\r
-this.copy = null;\r
-this.cut = null;\r
-this.toUpper = null;\r
-this.toLower = null;\r
-this.toggleCase = null;\r
-this.outputmenu = null;\r
-this.seqMenu = null;\r
-this.pdb = null;\r
-this.hideSeqs = null;\r
-this.repGroup = null;\r
-this.sequenceName = null;\r
-this.sequenceFeature = null;\r
-this.editSequence = null;\r
-this.sequenceDetails = null;\r
-this.selSeqDetails = null;\r
-this.makeReferenceSeq = null;\r
-this.seq = null;\r
-this.revealAll = null;\r
-this.revealSeq = null;\r
-this.revealSeq_index = -1;\r
-this.menu1 = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "APopupMenu", awt2swing.PopupMenu, [java.awt.event.ActionListener, java.awt.event.ItemListener]);\r
-Clazz.prepareFields (c$, function () {\r
-this.groupMenu =  new awt2swing.Menu ();\r
-this.editGroupName =  new awt2swing.MenuItem ();\r
-this.clustalColour =  new awt2swing.MenuItem ();\r
-this.zappoColour =  new awt2swing.MenuItem ();\r
-this.taylorColour =  new awt2swing.MenuItem ();\r
-this.hydrophobicityColour =  new awt2swing.MenuItem ();\r
-this.helixColour =  new awt2swing.MenuItem ();\r
-this.strandColour =  new awt2swing.MenuItem ();\r
-this.turnColour =  new awt2swing.MenuItem ();\r
-this.buriedColour =  new awt2swing.MenuItem ();\r
-this.abovePIDColour =  new awt2swing.CheckboxMenuItem ();\r
-this.userDefinedColour =  new awt2swing.MenuItem ();\r
-this.PIDColour =  new awt2swing.MenuItem ();\r
-this.BLOSUM62Colour =  new awt2swing.MenuItem ();\r
-this.noColourmenuItem =  new awt2swing.MenuItem ();\r
-this.conservationMenuItem =  new awt2swing.CheckboxMenuItem ();\r
-this.unGroupMenuItem =  new awt2swing.MenuItem ();\r
-this.createGroupMenuItem =  new awt2swing.MenuItem ();\r
-this.nucleotideMenuItem =  new awt2swing.MenuItem ();\r
-this.colourMenu =  new awt2swing.Menu ();\r
-this.showBoxes =  new awt2swing.CheckboxMenuItem ();\r
-this.showText =  new awt2swing.CheckboxMenuItem ();\r
-this.showColourText =  new awt2swing.CheckboxMenuItem ();\r
-this.displayNonconserved =  new awt2swing.CheckboxMenuItem ();\r
-this.seqShowAnnotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.show_annotations"));\r
-this.seqHideAnnotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.hide_annotations"));\r
-this.seqAddReferenceAnnotations =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.add_reference_annotations"));\r
-this.groupShowAnnotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.show_annotations"));\r
-this.groupHideAnnotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.hide_annotations"));\r
-this.groupAddReferenceAnnotations =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.add_reference_annotations"));\r
-this.editMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.edit"));\r
-this.copy =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.copy"));\r
-this.cut =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.cut"));\r
-this.toUpper =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.to_upper_case"));\r
-this.toLower =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.to_lower_case"));\r
-this.toggleCase =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.toggle_case"));\r
-this.outputmenu =  new awt2swing.Menu ();\r
-this.seqMenu =  new awt2swing.Menu ();\r
-this.pdb =  new awt2swing.MenuItem ();\r
-this.hideSeqs =  new awt2swing.MenuItem ();\r
-this.repGroup =  new awt2swing.MenuItem ();\r
-this.sequenceName =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.edit_name_description"));\r
-this.sequenceFeature =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.create_sequence_feature"));\r
-this.editSequence =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.edit_sequence"));\r
-this.sequenceDetails =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sequence_details") + "...");\r
-this.selSeqDetails =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sequence_details") + "...");\r
-this.makeReferenceSeq =  new awt2swing.MenuItem ();\r
-this.revealAll =  new awt2swing.MenuItem ();\r
-this.revealSeq =  new awt2swing.MenuItem ();\r
-this.menu1 =  new awt2swing.Menu ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (apanel, seq, links) {\r
-Clazz.superConstructor (this, jalview.appletgui.APopupMenu, []);\r
-this.ap = apanel;\r
-this.seq = seq;\r
-try {\r
-this.jbInit ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-for (var i = 0; i < jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS.length; i++) {\r
-var item =  new awt2swing.MenuItem (jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS[i]);\r
-item.addActionListener (this);\r
-this.outputmenu.add (item);\r
-}\r
-this.buildAnnotationSubmenus ();\r
-var sg = this.ap.av.getSelectionGroup ();\r
-if (sg != null && sg.getSize () > 0) {\r
-this.editGroupName.setLabel (jalview.util.MessageManager.formatMessage ("label.name_param",  Clazz.newArray (-1, [sg.getName ()])));\r
-this.showText.setState (sg.getDisplayText ());\r
-this.showColourText.setState (sg.getColourText ());\r
-this.showBoxes.setState (sg.getDisplayBoxes ());\r
-this.displayNonconserved.setState (sg.getShowNonconserved ());\r
-if (!this.ap.av.getAlignment ().getGroups ().contains (sg)) {\r
-this.menu1.setLabel (jalview.util.MessageManager.getString ("action.edit_new_group"));\r
-this.groupMenu.remove (this.unGroupMenuItem);\r
-} else {\r
-this.menu1.setLabel (jalview.util.MessageManager.getString ("action.edit_group"));\r
-this.groupMenu.remove (this.createGroupMenuItem);\r
-}} else {\r
-this.remove (this.hideSeqs);\r
-this.remove (this.groupMenu);\r
-}if (links != null && links.size () > 0) {\r
-var linkMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.link"));\r
-for (var i = 0; i < links.size (); i++) {\r
-var link = links.elementAt (i);\r
-var urlLink =  new jalview.util.UrlLink (link);\r
-if (!urlLink.isValid ()) {\r
-System.err.println (urlLink.getInvalidMessage ());\r
-continue;\r
-}var target = urlLink.getTarget ();\r
-var label = urlLink.getLabel ();\r
-if (seq != null && urlLink.isDynamic ()) {\r
-var dbr = jalview.util.DBRefUtils.selectRefs (seq.getDBRef (),  Clazz.newArray (-1, [target]));\r
-var id = seq.getName ();\r
-var descr = seq.getDescription ();\r
-if (descr != null && descr.length < 1) {\r
-descr = null;\r
-}if (dbr != null) {\r
-for (var r = 0; r < dbr.length; r++) {\r
-if (id != null && dbr[r].getAccessionId ().equals (id)) {\r
-id = null;\r
-}var urls = urlLink.makeUrls (dbr[r].getAccessionId (), true);\r
-if (urls != null) {\r
-for (var u = 0; u < urls.length; u += 2) {\r
-this.addshowLink (linkMenu, label + "|" + urls[u], urls[u + 1]);\r
-}\r
-}}\r
-}if (id != null) {\r
-var urls = urlLink.makeUrls (id, true);\r
-if (urls != null) {\r
-for (var u = 0; u < urls.length; u += 2) {\r
-this.addshowLink (linkMenu, label, urls[u + 1]);\r
-}\r
-}}if (descr != null && urlLink.getRegexReplace () != null) {\r
-var urls = urlLink.makeUrls (descr, true);\r
-if (urls != null) {\r
-for (var u = 0; u < urls.length; u += 2) {\r
-this.addshowLink (linkMenu, label, urls[u + 1]);\r
-}\r
-}}} else {\r
-this.addshowLink (linkMenu, target, urlLink.getUrl_prefix ());\r
-}}\r
-if (linkMenu.getItemCount () > 0) {\r
-if (seq != null) {\r
-this.seqMenu.add (linkMenu);\r
-} else {\r
-this.add (linkMenu);\r
-}}}if (seq != null) {\r
-this.seqMenu.setLabel (seq.getName ());\r
-if (seq === this.ap.av.getAlignment ().getSeqrep ()) {\r
-this.makeReferenceSeq.setLabel (jalview.util.MessageManager.getString ("action.unmark_as_reference"));\r
-} else {\r
-this.makeReferenceSeq.setLabel (jalview.util.MessageManager.getString ("action.set_as_reference"));\r
-}this.repGroup.setLabel (jalview.util.MessageManager.formatMessage ("label.represent_group_with",  Clazz.newArray (-1, [seq.getName ()])));\r
-} else {\r
-this.remove (this.seqMenu);\r
-}if (!this.ap.av.hasHiddenRows ()) {\r
-this.remove (this.revealAll);\r
-this.remove (this.revealSeq);\r
-} else {\r
-var index = this.ap.av.getAlignment ().findIndex (seq);\r
-if (this.ap.av.adjustForHiddenSeqs (index) - this.ap.av.adjustForHiddenSeqs (index - 1) > 1) {\r
-this.revealSeq_index = index;\r
-} else {\r
-this.remove (this.revealSeq);\r
-}}}, "jalview.appletgui.AlignmentPanel,jalview.datamodel.SequenceI,java.util.Vector");\r
-Clazz.defineMethod (c$, "buildAnnotationSubmenus", \r
-($fz = function () {\r
-var selectedSequence = (this.seq == null ? java.util.Collections.emptyList () : java.util.Arrays.asList ([this.seq]));\r
-this.buildAnnotationTypesMenus (this.seqShowAnnotationsMenu, this.seqHideAnnotationsMenu, selectedSequence);\r
-this.configureReferenceAnnotationsMenu (this.seqAddReferenceAnnotations, selectedSequence);\r
-var selectedGroup = (this.ap.av.getSelectionGroup () == null ? java.util.Collections.emptyList () : this.ap.av.getSelectionGroup ().getSequences ());\r
-this.buildAnnotationTypesMenus (this.groupShowAnnotationsMenu, this.groupHideAnnotationsMenu, selectedGroup);\r
-this.configureReferenceAnnotationsMenu (this.groupAddReferenceAnnotations, selectedGroup);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "configureReferenceAnnotationsMenu", \r
-($fz = function (menuItem, forSequences) {\r
-menuItem.setEnabled (false);\r
-var tipEntries =  new java.util.TreeMap ();\r
-var candidates =  new java.util.LinkedHashMap ();\r
-var al = this.ap.av.getAlignment ();\r
-jalview.analysis.AlignmentUtils.findAddableReferenceAnnotations (forSequences, tipEntries, candidates, al);\r
-if (!candidates.isEmpty ()) {\r
-var tooltip =  new StringBuilder (64);\r
-tooltip.append (jalview.util.MessageManager.getString ("label.add_annotations_for"));\r
-menuItem.setEnabled (true);\r
-menuItem.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.APopupMenu$1") ? 0 : jalview.appletgui.APopupMenu.$APopupMenu$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.APopupMenu$1, this, Clazz.cloneFinals ("candidates", candidates))));\r
-}}, $fz.isPrivate = true, $fz), "awt2swing.MenuItem,java.util.List");\r
-Clazz.defineMethod (c$, "addReferenceAnnotations_actionPerformed", \r
-function (candidates) {\r
-var selectionGroup = this.ap.av.getSelectionGroup ();\r
-var alignment = this.ap.getAlignment ();\r
-jalview.analysis.AlignmentUtils.addReferenceAnnotations (candidates, alignment, selectionGroup);\r
-this.refresh ();\r
-}, "java.util.Map");\r
-Clazz.defineMethod (c$, "addshowLink", \r
-($fz = function (linkMenu, target, url) {\r
-this.addshowLink (linkMenu, target, target, url);\r
-}, $fz.isPrivate = true, $fz), "awt2swing.Menu,~S,~S");\r
-Clazz.defineMethod (c$, "addshowLink", \r
-($fz = function (linkMenu, target, label, url) {\r
-var item =  new awt2swing.MenuItem (label);\r
-item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.APopupMenu$2") ? 0 : jalview.appletgui.APopupMenu.$APopupMenu$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.APopupMenu$2, this, Clazz.cloneFinals ("url", url, "target", target))));\r
-linkMenu.add (item);\r
-}, $fz.isPrivate = true, $fz), "awt2swing.Menu,~S,~S,~S");\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (evt) {\r
-if (evt.getSource () === this.abovePIDColour) {\r
-this.abovePIDColour_itemStateChanged ();\r
-} else if (evt.getSource () === this.showColourText) {\r
-this.showColourText_itemStateChanged ();\r
-} else if (evt.getSource () === this.showText) {\r
-this.showText_itemStateChanged ();\r
-} else if (evt.getSource () === this.showBoxes) {\r
-this.showBoxes_itemStateChanged ();\r
-} else if (evt.getSource () === this.displayNonconserved) {\r
-this.showNonconserved_itemStateChanged ();\r
-}}, "java.awt.event.ItemEvent");\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-var source = evt.getSource ();\r
-if (source === this.clustalColour) {\r
-this.clustalColour_actionPerformed ();\r
-} else if (source === this.zappoColour) {\r
-this.zappoColour_actionPerformed ();\r
-} else if (source === this.taylorColour) {\r
-this.taylorColour_actionPerformed ();\r
-} else if (source === this.hydrophobicityColour) {\r
-this.hydrophobicityColour_actionPerformed ();\r
-} else if (source === this.helixColour) {\r
-this.helixColour_actionPerformed ();\r
-} else if (source === this.strandColour) {\r
-this.strandColour_actionPerformed ();\r
-} else if (source === this.turnColour) {\r
-this.turnColour_actionPerformed ();\r
-} else if (source === this.buriedColour) {\r
-this.buriedColour_actionPerformed ();\r
-} else if (source === this.nucleotideMenuItem) {\r
-this.nucleotideMenuItem_actionPerformed ();\r
-} else if (source === this.userDefinedColour) {\r
-this.userDefinedColour_actionPerformed ();\r
-} else if (source === this.PIDColour) {\r
-this.PIDColour_actionPerformed ();\r
-} else if (source === this.BLOSUM62Colour) {\r
-this.BLOSUM62Colour_actionPerformed ();\r
-} else if (source === this.noColourmenuItem) {\r
-this.noColourmenuItem_actionPerformed ();\r
-} else if (source === this.conservationMenuItem) {\r
-this.conservationMenuItem_itemStateChanged ();\r
-} else if (source === this.unGroupMenuItem) {\r
-this.unGroupMenuItem_actionPerformed ();\r
-} else if (source === this.createGroupMenuItem) {\r
-this.createGroupMenuItem_actionPerformed ();\r
-} else if (source === this.sequenceName) {\r
-this.editName ();\r
-} else if (source === this.makeReferenceSeq) {\r
-this.makeReferenceSeq_actionPerformed ();\r
-} else if (source === this.sequenceDetails) {\r
-this.showSequenceDetails ();\r
-} else if (source === this.selSeqDetails) {\r
-this.showSequenceSelectionDetails ();\r
-} else if (source === this.pdb) {\r
-this.addPDB ();\r
-} else if (source === this.hideSeqs) {\r
-this.hideSequences (false);\r
-} else if (source === this.repGroup) {\r
-this.hideSequences (true);\r
-} else if (source === this.revealSeq) {\r
-this.ap.av.showSequence (this.revealSeq_index);\r
-} else if (source === this.revealAll) {\r
-this.ap.av.showAllHiddenSeqs ();\r
-} else if (source === this.editGroupName) {\r
-var dialog =  new jalview.appletgui.EditNameDialog (this.getGroup ().getName (), this.getGroup ().getDescription (), "       Group Name", "Group Description", this.ap.alignFrame, "Edit Group Name / Description", 500, 100, true);\r
-if (dialog.accept) {\r
-this.getGroup ().setName (dialog.getName ().$replace (' ', '_'));\r
-this.getGroup ().setDescription (dialog.getDescription ());\r
-}} else if (source === this.copy) {\r
-this.ap.alignFrame.copy_actionPerformed ();\r
-} else if (source === this.cut) {\r
-this.ap.alignFrame.cut_actionPerformed ();\r
-} else if (source === this.editSequence) {\r
-var sg = this.ap.av.getSelectionGroup ();\r
-if (sg != null) {\r
-if (this.seq == null) {\r
-this.seq = sg.getSequenceAt (0);\r
-}var dialog =  new jalview.appletgui.EditNameDialog (this.seq.getSequenceAsString (sg.getStartRes (), sg.getEndRes () + 1), null, "Edit Sequence ", null, this.ap.alignFrame, "Edit Sequence", 500, 100, true);\r
-if (dialog.accept) {\r
-var editCommand =  new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("label.edit_sequences"), jalview.commands.EditCommand.Action.REPLACE, dialog.getName ().$replace (' ', this.ap.av.getGapCharacter ()), sg.getSequencesAsArray (this.ap.av.getHiddenRepSequences ()), sg.getStartRes (), sg.getEndRes () + 1, this.ap.av.getAlignment ());\r
-this.ap.alignFrame.addHistoryItem (editCommand);\r
-this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());\r
-}}} else if (source === this.toUpper || source === this.toLower || source === this.toggleCase) {\r
-var sg = this.ap.av.getSelectionGroup ();\r
-if (sg != null) {\r
-var startEnd = this.ap.av.getVisibleRegionBoundaries (sg.getStartRes (), sg.getEndRes () + 1);\r
-var description;\r
-var caseChange;\r
-if (source === this.toggleCase) {\r
-description = "Toggle Case";\r
-caseChange = jalview.commands.ChangeCaseCommand.TOGGLE_CASE;\r
-} else if (source === this.toUpper) {\r
-description = "To Upper Case";\r
-caseChange = jalview.commands.ChangeCaseCommand.TO_UPPER;\r
-} else {\r
-description = "To Lower Case";\r
-caseChange = jalview.commands.ChangeCaseCommand.TO_LOWER;\r
-}var caseCommand =  new jalview.commands.ChangeCaseCommand (description, sg.getSequencesAsArray (this.ap.av.getHiddenRepSequences ()), startEnd, caseChange);\r
-this.ap.alignFrame.addHistoryItem (caseCommand);\r
-this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());\r
-}} else if (source === this.sequenceFeature) {\r
-var sg = this.ap.av.getSelectionGroup ();\r
-if (sg == null) {\r
-return;\r
-}var rsize = 0;\r
-var gSize = sg.getSize ();\r
-var rseqs;\r
-var seqs =  new Array (gSize);\r
-var tfeatures;\r
-var features =  new Array (gSize);\r
-for (var i = 0; i < gSize; i++) {\r
-var start = sg.getSequenceAt (i).findPosition (sg.getStartRes ());\r
-var end = sg.findEndRes (sg.getSequenceAt (i));\r
-if (start <= end) {\r
-seqs[rsize] = sg.getSequenceAt (i);\r
-features[rsize] =  new jalview.datamodel.SequenceFeature (null, null, null, start, end, "Jalview");\r
-rsize++;\r
-}}\r
-rseqs =  new Array (rsize);\r
-tfeatures =  new Array (rsize);\r
-System.arraycopy (seqs, 0, rseqs, 0, rsize);\r
-System.arraycopy (features, 0, tfeatures, 0, rsize);\r
-features = tfeatures;\r
-seqs = rseqs;\r
-if (this.ap.seqPanel.seqCanvas.getFeatureRenderer ().amendFeatures (seqs, features, true, this.ap)) {\r
-this.ap.alignFrame.sequenceFeatures.setState (true);\r
-this.ap.av.setShowSequenceFeatures (true);\r
-;this.ap.highlightSearchResults (null);\r
-}} else {\r
-this.outputText (evt);\r
-}}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "outputText", \r
-function (e) {\r
-var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this.ap.alignFrame);\r
-var frame =  new awt2swing.Frame ();\r
-frame.add (cap);\r
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.selection_output_command",  Clazz.newArray (-1, [e.getActionCommand ()])), 600, 500);\r
-cap.setText ( new jalview.io.AppletFormatAdapter ().formatSequences (e.getActionCommand (), this.ap.av.getShowJVSuffix (), this.ap, true));\r
-}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "showSequenceSelectionDetails", \r
-function () {\r
-this.createSequenceDetailsReport (this.ap.av.getSequenceSelection ());\r
-});\r
-Clazz.defineMethod (c$, "showSequenceDetails", \r
-function () {\r
-this.createSequenceDetailsReport ( Clazz.newArray (-1, [this.seq]));\r
-});\r
-Clazz.defineMethod (c$, "createSequenceDetailsReport", \r
-function (sequences) {\r
-var cap =  new jalview.appletgui.CutAndPasteTransfer (false, this.ap.alignFrame);\r
-var contents =  new StringBuffer ();\r
-for (var seq, $seq = 0, $$seq = sequences; $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {\r
-contents.append (jalview.util.MessageManager.formatMessage ("label.annotation_for_displayid",  Clazz.newArray (-1, [seq.getDisplayId (true)])));\r
- new jalview.io.SequenceAnnotationReport (null).createSequenceAnnotationReport (contents, seq, true, true, false, (this.ap.seqPanel.seqCanvas.fr != null) ? this.ap.seqPanel.seqCanvas.fr.getMinMax () : null);\r
-contents.append ("</p>");\r
-}\r
-var frame =  new awt2swing.Frame ();\r
-frame.add (cap);\r
-jalview.bin.JalviewLite.addFrame (frame, "Sequence Details for " + (sequences.length == 1 ? sequences[0].getDisplayId (true) : "Selection"), 600, 500);\r
-cap.setText (jalview.util.MessageManager.formatMessage ("label.html_content",  Clazz.newArray (-1, [contents.toString ()])));\r
-}, "~A");\r
-Clazz.defineMethod (c$, "editName", \r
-function () {\r
-var dialog =  new jalview.appletgui.EditNameDialog (this.seq.getName (), this.seq.getDescription (), "       Sequence Name", "Sequence Description", this.ap.alignFrame, "Edit Sequence Name / Description", 500, 100, true);\r
-if (dialog.accept) {\r
-this.seq.setName (dialog.getName ());\r
-this.seq.setDescription (dialog.getDescription ());\r
-this.ap.paintAlignment (false);\r
-}});\r
-Clazz.defineMethod (c$, "addPDB", \r
-function () {\r
-if (this.seq.getPDBId () != null) {\r
-var entry = this.seq.getPDBId ().firstElement ();\r
-if (this.ap.av.applet.jmolAvailable) {\r
- new jalview.appletgui.AppletJmol (entry,  Clazz.newArray (-1, [this.seq]), null, this.ap, jalview.io.AppletFormatAdapter.URL);\r
-}} else {\r
-var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this.ap.alignFrame);\r
-cap.setText (jalview.util.MessageManager.getString ("label.paste_pdb_file"));\r
-cap.setPDBImport (this.seq);\r
-var frame =  new awt2swing.Frame ();\r
-frame.add (cap);\r
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.paste_pdb_file_for_sequence",  Clazz.newArray (-1, [this.seq.getName ()])), 400, 300);\r
-}});\r
-Clazz.defineMethod (c$, "jbInit", \r
-($fz = function () {\r
-this.groupMenu.setLabel (jalview.util.MessageManager.getString ("label.selection"));\r
-this.sequenceFeature.addActionListener (this);\r
-this.editGroupName.addActionListener (this);\r
-this.unGroupMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_group"));\r
-this.unGroupMenuItem.addActionListener (this);\r
-this.createGroupMenuItem.setLabel (jalview.util.MessageManager.getString ("action.create_group"));\r
-this.createGroupMenuItem.addActionListener (this);\r
-this.nucleotideMenuItem.setLabel (jalview.util.MessageManager.getString ("label.nucleotide"));\r
-this.nucleotideMenuItem.addActionListener (this);\r
-this.conservationMenuItem.addItemListener (this);\r
-this.abovePIDColour.addItemListener (this);\r
-this.colourMenu.setLabel (jalview.util.MessageManager.getString ("label.group_colour"));\r
-this.showBoxes.setLabel (jalview.util.MessageManager.getString ("action.boxes"));\r
-this.showBoxes.setState (true);\r
-this.showBoxes.addItemListener (this);\r
-this.sequenceName.addActionListener (this);\r
-this.sequenceDetails.addActionListener (this);\r
-this.selSeqDetails.addActionListener (this);\r
-this.displayNonconserved.setLabel (jalview.util.MessageManager.getString ("label.show_non_conversed"));\r
-this.displayNonconserved.setState (false);\r
-this.displayNonconserved.addItemListener (this);\r
-this.showText.setLabel (jalview.util.MessageManager.getString ("action.text"));\r
-this.showText.addItemListener (this);\r
-this.showColourText.setLabel (jalview.util.MessageManager.getString ("label.colour_text"));\r
-this.showColourText.addItemListener (this);\r
-this.outputmenu.setLabel (jalview.util.MessageManager.getString ("label.out_to_textbox"));\r
-this.seqMenu.setLabel (jalview.util.MessageManager.getString ("label.sequence"));\r
-this.pdb.setLabel (jalview.util.MessageManager.getString ("label.view_pdb_structure"));\r
-this.hideSeqs.setLabel (jalview.util.MessageManager.getString ("action.hide_sequences"));\r
-this.repGroup.setLabel (jalview.util.MessageManager.formatMessage ("label.represent_group_with",  Clazz.newArray (-1, [""])));\r
-this.revealAll.setLabel (jalview.util.MessageManager.getString ("action.reveal_all"));\r
-this.revealSeq.setLabel (jalview.util.MessageManager.getString ("action.reveal_sequences"));\r
-this.menu1.setLabel (jalview.util.MessageManager.getString ("label.group") + ":");\r
-this.add (this.groupMenu);\r
-this.add (this.seqMenu);\r
-this.add (this.hideSeqs);\r
-this.add (this.revealSeq);\r
-this.add (this.revealAll);\r
-this.groupMenu.add (this.groupShowAnnotationsMenu);\r
-this.groupMenu.add (this.groupHideAnnotationsMenu);\r
-this.groupMenu.add (this.groupAddReferenceAnnotations);\r
-this.groupMenu.add (this.editMenu);\r
-this.groupMenu.add (this.outputmenu);\r
-this.groupMenu.add (this.sequenceFeature);\r
-this.groupMenu.add (this.createGroupMenuItem);\r
-this.groupMenu.add (this.unGroupMenuItem);\r
-this.groupMenu.add (this.menu1);\r
-this.colourMenu.add (this.noColourmenuItem);\r
-this.colourMenu.add (this.clustalColour);\r
-this.colourMenu.add (this.BLOSUM62Colour);\r
-this.colourMenu.add (this.PIDColour);\r
-this.colourMenu.add (this.zappoColour);\r
-this.colourMenu.add (this.taylorColour);\r
-this.colourMenu.add (this.hydrophobicityColour);\r
-this.colourMenu.add (this.helixColour);\r
-this.colourMenu.add (this.strandColour);\r
-this.colourMenu.add (this.turnColour);\r
-this.colourMenu.add (this.buriedColour);\r
-this.colourMenu.add (this.nucleotideMenuItem);\r
-this.colourMenu.add (this.userDefinedColour);\r
-this.colourMenu.addSeparator ();\r
-this.colourMenu.add (this.abovePIDColour);\r
-this.colourMenu.add (this.conservationMenuItem);\r
-this.noColourmenuItem.setLabel (jalview.util.MessageManager.getString ("label.none"));\r
-this.noColourmenuItem.addActionListener (this);\r
-this.clustalColour.setLabel (jalview.util.MessageManager.getString ("label.clustalx_colours"));\r
-this.clustalColour.addActionListener (this);\r
-this.zappoColour.setLabel (jalview.util.MessageManager.getString ("label.zappo"));\r
-this.zappoColour.addActionListener (this);\r
-this.taylorColour.setLabel (jalview.util.MessageManager.getString ("label.taylor"));\r
-this.taylorColour.addActionListener (this);\r
-this.hydrophobicityColour.setLabel (jalview.util.MessageManager.getString ("label.hydrophobicity"));\r
-this.hydrophobicityColour.addActionListener (this);\r
-this.helixColour.setLabel (jalview.util.MessageManager.getString ("label.helix_propensity"));\r
-this.helixColour.addActionListener (this);\r
-this.strandColour.setLabel (jalview.util.MessageManager.getString ("label.strand_propensity"));\r
-this.strandColour.addActionListener (this);\r
-this.turnColour.setLabel (jalview.util.MessageManager.getString ("label.turn_propensity"));\r
-this.turnColour.addActionListener (this);\r
-this.buriedColour.setLabel (jalview.util.MessageManager.getString ("label.buried_index"));\r
-this.buriedColour.addActionListener (this);\r
-this.abovePIDColour.setLabel (jalview.util.MessageManager.getString ("label.above_identity_percentage"));\r
-this.userDefinedColour.setLabel (jalview.util.MessageManager.getString ("action.user_defined"));\r
-this.userDefinedColour.addActionListener (this);\r
-this.PIDColour.setLabel (jalview.util.MessageManager.getString ("action.percentage_identity"));\r
-this.PIDColour.addActionListener (this);\r
-this.BLOSUM62Colour.setLabel ("BLOSUM62");\r
-this.BLOSUM62Colour.addActionListener (this);\r
-this.conservationMenuItem.setLabel (jalview.util.MessageManager.getString ("label.conservation"));\r
-this.editMenu.add (this.copy);\r
-this.copy.addActionListener (this);\r
-this.editMenu.add (this.cut);\r
-this.cut.addActionListener (this);\r
-this.editMenu.add (this.editSequence);\r
-this.editSequence.addActionListener (this);\r
-this.editMenu.add (this.toUpper);\r
-this.toUpper.addActionListener (this);\r
-this.editMenu.add (this.toLower);\r
-this.toLower.addActionListener (this);\r
-this.editMenu.add (this.toggleCase);\r
-this.seqMenu.add (this.seqShowAnnotationsMenu);\r
-this.seqMenu.add (this.seqHideAnnotationsMenu);\r
-this.seqMenu.add (this.seqAddReferenceAnnotations);\r
-this.seqMenu.add (this.sequenceName);\r
-this.seqMenu.add (this.makeReferenceSeq);\r
-if (!this.ap.av.applet.useXtrnalSviewer) {\r
-this.seqMenu.add (this.pdb);\r
-}this.seqMenu.add (this.repGroup);\r
-this.menu1.add (this.editGroupName);\r
-this.menu1.add (this.colourMenu);\r
-this.menu1.add (this.showBoxes);\r
-this.menu1.add (this.showText);\r
-this.menu1.add (this.showColourText);\r
-this.menu1.add (this.displayNonconserved);\r
-this.toggleCase.addActionListener (this);\r
-this.pdb.addActionListener (this);\r
-this.hideSeqs.addActionListener (this);\r
-this.repGroup.addActionListener (this);\r
-this.revealAll.addActionListener (this);\r
-this.revealSeq.addActionListener (this);\r
-this.makeReferenceSeq.addActionListener (this);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "refresh", \r
-function () {\r
-this.ap.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "clustalColour_actionPerformed", \r
-function () {\r
-var sg = this.getGroup ();\r
-sg.cs =  new jalview.schemes.ClustalxColourScheme (sg, this.ap.av.getHiddenRepSequences ());\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "zappoColour_actionPerformed", \r
-function () {\r
-this.getGroup ().cs =  new jalview.schemes.ZappoColourScheme ();\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "taylorColour_actionPerformed", \r
-function () {\r
-this.getGroup ().cs =  new jalview.schemes.TaylorColourScheme ();\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "hydrophobicityColour_actionPerformed", \r
-function () {\r
-this.getGroup ().cs =  new jalview.schemes.HydrophobicColourScheme ();\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "helixColour_actionPerformed", \r
-function () {\r
-this.getGroup ().cs =  new jalview.schemes.HelixColourScheme ();\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "strandColour_actionPerformed", \r
-function () {\r
-this.getGroup ().cs =  new jalview.schemes.StrandColourScheme ();\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "turnColour_actionPerformed", \r
-function () {\r
-this.getGroup ().cs =  new jalview.schemes.TurnColourScheme ();\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "buriedColour_actionPerformed", \r
-function () {\r
-this.getGroup ().cs =  new jalview.schemes.BuriedColourScheme ();\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "nucleotideMenuItem_actionPerformed", \r
-function () {\r
-this.getGroup ().cs =  new jalview.schemes.NucleotideColourScheme ();\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "abovePIDColour_itemStateChanged", \r
-function () {\r
-var sg = this.getGroup ();\r
-if (sg.cs == null) {\r
-return;\r
-}if (this.abovePIDColour.getState ()) {\r
-sg.cs.setConsensus (jalview.analysis.AAFrequency.calculate (sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth ()));\r
-var threshold = jalview.appletgui.SliderPanel.setPIDSliderSource (this.ap, sg.cs, this.getGroup ().getName ());\r
-sg.cs.setThreshold (threshold, this.ap.av.isIgnoreGapsConsensus ());\r
-jalview.appletgui.SliderPanel.showPIDSlider ();\r
-} else {\r
-sg.cs.setThreshold (0, this.ap.av.isIgnoreGapsConsensus ());\r
-}this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "userDefinedColour_actionPerformed", \r
-function () {\r
- new jalview.appletgui.UserDefinedColours (this.ap, this.getGroup ());\r
-});\r
-Clazz.defineMethod (c$, "PIDColour_actionPerformed", \r
-function () {\r
-var sg = this.getGroup ();\r
-sg.cs =  new jalview.schemes.PIDColourScheme ();\r
-sg.cs.setConsensus (jalview.analysis.AAFrequency.calculate (sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth ()));\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "BLOSUM62Colour_actionPerformed", \r
-function () {\r
-var sg = this.getGroup ();\r
-sg.cs =  new jalview.schemes.Blosum62ColourScheme ();\r
-sg.cs.setConsensus (jalview.analysis.AAFrequency.calculate (sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth ()));\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "noColourmenuItem_actionPerformed", \r
-function () {\r
-this.getGroup ().cs = null;\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "conservationMenuItem_itemStateChanged", \r
-function () {\r
-var sg = this.getGroup ();\r
-if (sg.cs == null) {\r
-return;\r
-}if (this.conservationMenuItem.getState ()) {\r
-sg.cs.setConservation (jalview.analysis.Conservation.calculateConservation ("Group", jalview.schemes.ResidueProperties.propHash, 3, sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth (), false, this.ap.av.getConsPercGaps (), false));\r
-jalview.appletgui.SliderPanel.setConservationSlider (this.ap, sg.cs, sg.getName ());\r
-jalview.appletgui.SliderPanel.showConservationSlider ();\r
-} else {\r
-sg.cs.setConservation (null);\r
-}this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "getGroup", \r
-function () {\r
-var sg = this.ap.av.getSelectionGroup ();\r
-if (sg != null) {\r
-this.ap.av.getAlignment ().addGroup (sg);\r
-}return sg;\r
-});\r
-Clazz.defineMethod (c$, "unGroupMenuItem_actionPerformed", \r
-function () {\r
-var sg = this.ap.av.getSelectionGroup ();\r
-this.ap.av.getAlignment ().deleteGroup (sg);\r
-this.ap.av.setSelectionGroup (null);\r
-this.ap.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "createGroupMenuItem_actionPerformed", \r
-function () {\r
-this.getGroup ();\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "showColourText_itemStateChanged", \r
-function () {\r
-this.getGroup ().setColourText (this.showColourText.getState ());\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "showText_itemStateChanged", \r
-function () {\r
-this.getGroup ().setDisplayText (this.showText.getState ());\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "makeReferenceSeq_actionPerformed", \r
-function () {\r
-if (!this.ap.av.getAlignment ().hasSeqrep ()) {\r
-this.ap.av.setDisplayReferenceSeq (true);\r
-this.ap.av.setColourByReferenceSeq (true);\r
-this.ap.av.getAlignment ().setSeqrep (this.seq);\r
-} else {\r
-if (this.ap.av.getAlignment ().getSeqrep () === this.seq) {\r
-this.ap.av.getAlignment ().setSeqrep (null);\r
-} else {\r
-this.ap.av.getAlignment ().setSeqrep (this.seq);\r
-}}this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "showNonconserved_itemStateChanged", \r
-function () {\r
-this.getGroup ().setShowNonconserved (this.displayNonconserved.getState ());\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "showBoxes_itemStateChanged", \r
-function () {\r
-this.getGroup ().setDisplayBoxes (this.showBoxes.getState ());\r
-this.refresh ();\r
-});\r
-Clazz.defineMethod (c$, "hideSequences", \r
-function (representGroup) {\r
-var sg = this.ap.av.getSelectionGroup ();\r
-if (sg == null || sg.getSize () < 1) {\r
-this.ap.av.hideSequence ( Clazz.newArray (-1, [this.seq]));\r
-return;\r
-}this.ap.av.setSelectionGroup (null);\r
-if (representGroup) {\r
-this.ap.av.hideRepSequences (this.seq, sg);\r
-return;\r
-}var gsize = sg.getSize ();\r
-var hseqs;\r
-hseqs =  new Array (gsize);\r
-var index = 0;\r
-for (var i = 0; i < gsize; i++) {\r
-hseqs[index++] = sg.getSequenceAt (i);\r
-}\r
-this.ap.av.hideSequence (hseqs);\r
-this.ap.av.sendSelection ();\r
-}, "~B");\r
-Clazz.defineMethod (c$, "buildAnnotationTypesMenus", \r
-function (showMenu, hideMenu, forSequences) {\r
-showMenu.removeAll ();\r
-hideMenu.removeAll ();\r
-var all = java.util.Arrays.asList (["All"]);\r
-this.addAnnotationTypeToShowHide (showMenu, forSequences, "", all, true, true);\r
-this.addAnnotationTypeToShowHide (hideMenu, forSequences, "", all, true, false);\r
-showMenu.addSeparator ();\r
-hideMenu.addSeparator ();\r
-var annotations = this.ap.getAlignment ().getAlignmentAnnotation ();\r
-var shownTypes =  new java.util.LinkedHashMap ();\r
-var hiddenTypes =  new java.util.LinkedHashMap ();\r
-jalview.analysis.AlignmentAnnotationUtils.getShownHiddenTypes (shownTypes, hiddenTypes, jalview.analysis.AlignmentAnnotationUtils.asList (annotations), forSequences);\r
-for (var calcId, $calcId = hiddenTypes.keySet ().iterator (); $calcId.hasNext () && ((calcId = $calcId.next ()) || true);) {\r
-for (var type, $type = hiddenTypes.get (calcId).iterator (); $type.hasNext () && ((type = $type.next ()) || true);) {\r
-this.addAnnotationTypeToShowHide (showMenu, forSequences, calcId, type, false, true);\r
-}\r
-}\r
-showMenu.setEnabled (!hiddenTypes.isEmpty ());\r
-for (var calcId, $calcId = shownTypes.keySet ().iterator (); $calcId.hasNext () && ((calcId = $calcId.next ()) || true);) {\r
-for (var type, $type = shownTypes.get (calcId).iterator (); $type.hasNext () && ((type = $type.next ()) || true);) {\r
-this.addAnnotationTypeToShowHide (hideMenu, forSequences, calcId, type, false, false);\r
-}\r
-}\r
-hideMenu.setEnabled (!shownTypes.isEmpty ());\r
-}, "awt2swing.Menu,awt2swing.Menu,java.util.List");\r
-Clazz.defineMethod (c$, "addAnnotationTypeToShowHide", \r
-function (showOrHideMenu, forSequences, calcId, types, allTypes, actionIsShow) {\r
-var label = types.toString ();\r
-label = label.substring (1, label.length - 1);\r
-var item =  new awt2swing.MenuItem (label);\r
-item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.APopupMenu$3") ? 0 : jalview.appletgui.APopupMenu.$APopupMenu$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.APopupMenu$3, this, Clazz.cloneFinals ("types", types, "forSequences", forSequences, "allTypes", allTypes, "actionIsShow", actionIsShow))));\r
-showOrHideMenu.add (item);\r
-}, "awt2swing.Menu,java.util.List,~S,java.util.List,~B,~B");\r
-c$.$APopupMenu$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "APopupMenu$1", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-this.b$["jalview.appletgui.APopupMenu"].addReferenceAnnotations_actionPerformed (this.f$.candidates);\r
-}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$APopupMenu$2$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "APopupMenu$2", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-this.b$["jalview.appletgui.APopupMenu"].ap.alignFrame.showURL (this.f$.url, this.f$.target);\r
-}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$APopupMenu$3$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "APopupMenu$3", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-jalview.analysis.AlignmentUtils.showOrHideSequenceAnnotations (this.b$["jalview.appletgui.APopupMenu"].ap.getAlignment (), this.f$.types, this.f$.forSequences, this.f$.allTypes, this.f$.actionIsShow);\r
-this.b$["jalview.appletgui.APopupMenu"].refresh ();\r
-}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"ALL_ANNOTATIONS", "All");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.PopupMenu", "java.awt.event.ActionListener", "$.ItemListener", "awt2swing.CheckboxMenuItem", "$.Menu", "$.MenuItem", "jalview.util.MessageManager"], "jalview.appletgui.APopupMenu", ["awt2swing.Frame", "jalview.analysis.AAFrequency", "$.AlignmentAnnotationUtils", "$.AlignmentUtils", "$.Conservation", "jalview.appletgui.AppletJmol", "$.CutAndPasteTransfer", "$.EditNameDialog", "$.SliderPanel", "$.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.commands.ChangeCaseCommand", "$.EditCommand", "jalview.datamodel.SequenceFeature", "jalview.io.AppletFormatAdapter", "$.SequenceAnnotationReport", "jalview.schemes.Blosum62ColourScheme", "$.BuriedColourScheme", "$.ClustalxColourScheme", "$.HelixColourScheme", "$.HydrophobicColourScheme", "$.NucleotideColourScheme", "$.PIDColourScheme", "$.ResidueProperties", "$.StrandColourScheme", "$.TaylorColourScheme", "$.TurnColourScheme", "$.ZappoColourScheme", "jalview.util.DBRefUtils", "$.UrlLink", "java.lang.StringBuffer", "$.StringBuilder", "java.util.Arrays", "$.Collections", "$.LinkedHashMap", "$.TreeMap"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.groupMenu = null;
+this.editGroupName = null;
+this.clustalColour = null;
+this.zappoColour = null;
+this.taylorColour = null;
+this.hydrophobicityColour = null;
+this.helixColour = null;
+this.strandColour = null;
+this.turnColour = null;
+this.buriedColour = null;
+this.abovePIDColour = null;
+this.userDefinedColour = null;
+this.PIDColour = null;
+this.BLOSUM62Colour = null;
+this.noColourmenuItem = null;
+this.conservationMenuItem = null;
+this.ap = null;
+this.unGroupMenuItem = null;
+this.createGroupMenuItem = null;
+this.nucleotideMenuItem = null;
+this.colourMenu = null;
+this.showBoxes = null;
+this.showText = null;
+this.showColourText = null;
+this.displayNonconserved = null;
+this.seqShowAnnotationsMenu = null;
+this.seqHideAnnotationsMenu = null;
+this.seqAddReferenceAnnotations = null;
+this.groupShowAnnotationsMenu = null;
+this.groupHideAnnotationsMenu = null;
+this.groupAddReferenceAnnotations = null;
+this.editMenu = null;
+this.copy = null;
+this.cut = null;
+this.toUpper = null;
+this.toLower = null;
+this.toggleCase = null;
+this.outputmenu = null;
+this.seqMenu = null;
+this.pdb = null;
+this.hideSeqs = null;
+this.repGroup = null;
+this.sequenceName = null;
+this.sequenceFeature = null;
+this.editSequence = null;
+this.sequenceDetails = null;
+this.selSeqDetails = null;
+this.makeReferenceSeq = null;
+this.seq = null;
+this.revealAll = null;
+this.revealSeq = null;
+this.revealSeq_index = -1;
+this.menu1 = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "APopupMenu", awt2swing.PopupMenu, [java.awt.event.ActionListener, java.awt.event.ItemListener]);
+Clazz.prepareFields (c$, function () {
+this.groupMenu =  new awt2swing.Menu ();
+this.editGroupName =  new awt2swing.MenuItem ();
+this.clustalColour =  new awt2swing.MenuItem ();
+this.zappoColour =  new awt2swing.MenuItem ();
+this.taylorColour =  new awt2swing.MenuItem ();
+this.hydrophobicityColour =  new awt2swing.MenuItem ();
+this.helixColour =  new awt2swing.MenuItem ();
+this.strandColour =  new awt2swing.MenuItem ();
+this.turnColour =  new awt2swing.MenuItem ();
+this.buriedColour =  new awt2swing.MenuItem ();
+this.abovePIDColour =  new awt2swing.CheckboxMenuItem ();
+this.userDefinedColour =  new awt2swing.MenuItem ();
+this.PIDColour =  new awt2swing.MenuItem ();
+this.BLOSUM62Colour =  new awt2swing.MenuItem ();
+this.noColourmenuItem =  new awt2swing.MenuItem ();
+this.conservationMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.unGroupMenuItem =  new awt2swing.MenuItem ();
+this.createGroupMenuItem =  new awt2swing.MenuItem ();
+this.nucleotideMenuItem =  new awt2swing.MenuItem ();
+this.colourMenu =  new awt2swing.Menu ();
+this.showBoxes =  new awt2swing.CheckboxMenuItem ();
+this.showText =  new awt2swing.CheckboxMenuItem ();
+this.showColourText =  new awt2swing.CheckboxMenuItem ();
+this.displayNonconserved =  new awt2swing.CheckboxMenuItem ();
+this.seqShowAnnotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.show_annotations"));
+this.seqHideAnnotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.hide_annotations"));
+this.seqAddReferenceAnnotations =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.add_reference_annotations"));
+this.groupShowAnnotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.show_annotations"));
+this.groupHideAnnotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.hide_annotations"));
+this.groupAddReferenceAnnotations =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.add_reference_annotations"));
+this.editMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.edit"));
+this.copy =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.copy"));
+this.cut =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.cut"));
+this.toUpper =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.to_upper_case"));
+this.toLower =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.to_lower_case"));
+this.toggleCase =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.toggle_case"));
+this.outputmenu =  new awt2swing.Menu ();
+this.seqMenu =  new awt2swing.Menu ();
+this.pdb =  new awt2swing.MenuItem ();
+this.hideSeqs =  new awt2swing.MenuItem ();
+this.repGroup =  new awt2swing.MenuItem ();
+this.sequenceName =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.edit_name_description"));
+this.sequenceFeature =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.create_sequence_feature"));
+this.editSequence =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.edit_sequence"));
+this.sequenceDetails =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sequence_details") + "...");
+this.selSeqDetails =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sequence_details") + "...");
+this.makeReferenceSeq =  new awt2swing.MenuItem ();
+this.revealAll =  new awt2swing.MenuItem ();
+this.revealSeq =  new awt2swing.MenuItem ();
+this.menu1 =  new awt2swing.Menu ();
+});
+Clazz.makeConstructor (c$, 
+function (apanel, seq, links) {
+Clazz.superConstructor (this, jalview.appletgui.APopupMenu, []);
+this.ap = apanel;
+this.seq = seq;
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+for (var i = 0; i < jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS.length; i++) {
+var item =  new awt2swing.MenuItem (jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS[i]);
+item.addActionListener (this);
+this.outputmenu.add (item);
+}
+this.buildAnnotationSubmenus ();
+var sg = this.ap.av.getSelectionGroup ();
+if (sg != null && sg.getSize () > 0) {
+this.editGroupName.setLabel (jalview.util.MessageManager.formatMessage ("label.name_param",  Clazz.newArray (-1, [sg.getName ()])));
+this.showText.setState (sg.getDisplayText ());
+this.showColourText.setState (sg.getColourText ());
+this.showBoxes.setState (sg.getDisplayBoxes ());
+this.displayNonconserved.setState (sg.getShowNonconserved ());
+if (!this.ap.av.getAlignment ().getGroups ().contains (sg)) {
+this.menu1.setLabel (jalview.util.MessageManager.getString ("action.edit_new_group"));
+this.groupMenu.remove (this.unGroupMenuItem);
+} else {
+this.menu1.setLabel (jalview.util.MessageManager.getString ("action.edit_group"));
+this.groupMenu.remove (this.createGroupMenuItem);
+}} else {
+this.remove (this.hideSeqs);
+this.remove (this.groupMenu);
+}if (links != null && links.size () > 0) {
+var linkMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.link"));
+for (var i = 0; i < links.size (); i++) {
+var link = links.elementAt (i);
+var urlLink =  new jalview.util.UrlLink (link);
+if (!urlLink.isValid ()) {
+System.err.println (urlLink.getInvalidMessage ());
+continue;
+}var target = urlLink.getTarget ();
+var label = urlLink.getLabel ();
+if (seq != null && urlLink.isDynamic ()) {
+var dbr = jalview.util.DBRefUtils.selectRefs (seq.getDBRef (),  Clazz.newArray (-1, [target]));
+var id = seq.getName ();
+var descr = seq.getDescription ();
+if (descr != null && descr.length < 1) {
+descr = null;
+}if (dbr != null) {
+for (var r = 0; r < dbr.length; r++) {
+if (id != null && dbr[r].getAccessionId ().equals (id)) {
+id = null;
+}var urls = urlLink.makeUrls (dbr[r].getAccessionId (), true);
+if (urls != null) {
+for (var u = 0; u < urls.length; u += 2) {
+this.addshowLink (linkMenu, label + "|" + urls[u], urls[u + 1]);
+}
+}}
+}if (id != null) {
+var urls = urlLink.makeUrls (id, true);
+if (urls != null) {
+for (var u = 0; u < urls.length; u += 2) {
+this.addshowLink (linkMenu, label, urls[u + 1]);
+}
+}}if (descr != null && urlLink.getRegexReplace () != null) {
+var urls = urlLink.makeUrls (descr, true);
+if (urls != null) {
+for (var u = 0; u < urls.length; u += 2) {
+this.addshowLink (linkMenu, label, urls[u + 1]);
+}
+}}} else {
+this.addshowLink (linkMenu, target, urlLink.getUrl_prefix ());
+}}
+if (linkMenu.getItemCount () > 0) {
+if (seq != null) {
+this.seqMenu.add (linkMenu);
+} else {
+this.add (linkMenu);
+}}}if (seq != null) {
+this.seqMenu.setLabel (seq.getName ());
+if (seq === this.ap.av.getAlignment ().getSeqrep ()) {
+this.makeReferenceSeq.setLabel (jalview.util.MessageManager.getString ("action.unmark_as_reference"));
+} else {
+this.makeReferenceSeq.setLabel (jalview.util.MessageManager.getString ("action.set_as_reference"));
+}this.repGroup.setLabel (jalview.util.MessageManager.formatMessage ("label.represent_group_with",  Clazz.newArray (-1, [seq.getName ()])));
+} else {
+this.remove (this.seqMenu);
+}if (!this.ap.av.hasHiddenRows ()) {
+this.remove (this.revealAll);
+this.remove (this.revealSeq);
+} else {
+var index = this.ap.av.getAlignment ().findIndex (seq);
+if (this.ap.av.adjustForHiddenSeqs (index) - this.ap.av.adjustForHiddenSeqs (index - 1) > 1) {
+this.revealSeq_index = index;
+} else {
+this.remove (this.revealSeq);
+}}}, "jalview.appletgui.AlignmentPanel,jalview.datamodel.SequenceI,java.util.Vector");
+Clazz.defineMethod (c$, "buildAnnotationSubmenus", 
+($fz = function () {
+var selectedSequence = (this.seq == null ? java.util.Collections.emptyList () : java.util.Arrays.asList ([this.seq]));
+this.buildAnnotationTypesMenus (this.seqShowAnnotationsMenu, this.seqHideAnnotationsMenu, selectedSequence);
+this.configureReferenceAnnotationsMenu (this.seqAddReferenceAnnotations, selectedSequence);
+var selectedGroup = (this.ap.av.getSelectionGroup () == null ? java.util.Collections.emptyList () : this.ap.av.getSelectionGroup ().getSequences ());
+this.buildAnnotationTypesMenus (this.groupShowAnnotationsMenu, this.groupHideAnnotationsMenu, selectedGroup);
+this.configureReferenceAnnotationsMenu (this.groupAddReferenceAnnotations, selectedGroup);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "configureReferenceAnnotationsMenu", 
+($fz = function (menuItem, forSequences) {
+menuItem.setEnabled (false);
+var tipEntries =  new java.util.TreeMap ();
+var candidates =  new java.util.LinkedHashMap ();
+var al = this.ap.av.getAlignment ();
+jalview.analysis.AlignmentUtils.findAddableReferenceAnnotations (forSequences, tipEntries, candidates, al);
+if (!candidates.isEmpty ()) {
+var tooltip =  new StringBuilder (64);
+tooltip.append (jalview.util.MessageManager.getString ("label.add_annotations_for"));
+menuItem.setEnabled (true);
+menuItem.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.APopupMenu$1") ? 0 : jalview.appletgui.APopupMenu.$APopupMenu$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.APopupMenu$1, this, Clazz.cloneFinals ("candidates", candidates))));
+}}, $fz.isPrivate = true, $fz), "awt2swing.MenuItem,java.util.List");
+Clazz.defineMethod (c$, "addReferenceAnnotations_actionPerformed", 
+function (candidates) {
+var selectionGroup = this.ap.av.getSelectionGroup ();
+var alignment = this.ap.getAlignment ();
+jalview.analysis.AlignmentUtils.addReferenceAnnotations (candidates, alignment, selectionGroup);
+this.refresh ();
+}, "java.util.Map");
+Clazz.defineMethod (c$, "addshowLink", 
+($fz = function (linkMenu, target, url) {
+this.addshowLink (linkMenu, target, target, url);
+}, $fz.isPrivate = true, $fz), "awt2swing.Menu,~S,~S");
+Clazz.defineMethod (c$, "addshowLink", 
+($fz = function (linkMenu, target, label, url) {
+var item =  new awt2swing.MenuItem (label);
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.APopupMenu$2") ? 0 : jalview.appletgui.APopupMenu.$APopupMenu$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.APopupMenu$2, this, Clazz.cloneFinals ("url", url, "target", target))));
+linkMenu.add (item);
+}, $fz.isPrivate = true, $fz), "awt2swing.Menu,~S,~S,~S");
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+if (evt.getSource () === this.abovePIDColour) {
+this.abovePIDColour_itemStateChanged ();
+} else if (evt.getSource () === this.showColourText) {
+this.showColourText_itemStateChanged ();
+} else if (evt.getSource () === this.showText) {
+this.showText_itemStateChanged ();
+} else if (evt.getSource () === this.showBoxes) {
+this.showBoxes_itemStateChanged ();
+} else if (evt.getSource () === this.displayNonconserved) {
+this.showNonconserved_itemStateChanged ();
+}}, "java.awt.event.ItemEvent");
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+var source = evt.getSource ();
+if (source === this.clustalColour) {
+this.clustalColour_actionPerformed ();
+} else if (source === this.zappoColour) {
+this.zappoColour_actionPerformed ();
+} else if (source === this.taylorColour) {
+this.taylorColour_actionPerformed ();
+} else if (source === this.hydrophobicityColour) {
+this.hydrophobicityColour_actionPerformed ();
+} else if (source === this.helixColour) {
+this.helixColour_actionPerformed ();
+} else if (source === this.strandColour) {
+this.strandColour_actionPerformed ();
+} else if (source === this.turnColour) {
+this.turnColour_actionPerformed ();
+} else if (source === this.buriedColour) {
+this.buriedColour_actionPerformed ();
+} else if (source === this.nucleotideMenuItem) {
+this.nucleotideMenuItem_actionPerformed ();
+} else if (source === this.userDefinedColour) {
+this.userDefinedColour_actionPerformed ();
+} else if (source === this.PIDColour) {
+this.PIDColour_actionPerformed ();
+} else if (source === this.BLOSUM62Colour) {
+this.BLOSUM62Colour_actionPerformed ();
+} else if (source === this.noColourmenuItem) {
+this.noColourmenuItem_actionPerformed ();
+} else if (source === this.conservationMenuItem) {
+this.conservationMenuItem_itemStateChanged ();
+} else if (source === this.unGroupMenuItem) {
+this.unGroupMenuItem_actionPerformed ();
+} else if (source === this.createGroupMenuItem) {
+this.createGroupMenuItem_actionPerformed ();
+} else if (source === this.sequenceName) {
+this.editName ();
+} else if (source === this.makeReferenceSeq) {
+this.makeReferenceSeq_actionPerformed ();
+} else if (source === this.sequenceDetails) {
+this.showSequenceDetails ();
+} else if (source === this.selSeqDetails) {
+this.showSequenceSelectionDetails ();
+} else if (source === this.pdb) {
+this.addPDB ();
+} else if (source === this.hideSeqs) {
+this.hideSequences (false);
+} else if (source === this.repGroup) {
+this.hideSequences (true);
+} else if (source === this.revealSeq) {
+this.ap.av.showSequence (this.revealSeq_index);
+} else if (source === this.revealAll) {
+this.ap.av.showAllHiddenSeqs ();
+} else if (source === this.editGroupName) {
+var dialog =  new jalview.appletgui.EditNameDialog (this.getGroup ().getName (), this.getGroup ().getDescription (), "       Group Name", "Group Description", this.ap.alignFrame, "Edit Group Name / Description", 500, 100, true);
+if (dialog.accept) {
+this.getGroup ().setName (dialog.getName ().$replace (' ', '_'));
+this.getGroup ().setDescription (dialog.getDescription ());
+}} else if (source === this.copy) {
+this.ap.alignFrame.copy_actionPerformed ();
+} else if (source === this.cut) {
+this.ap.alignFrame.cut_actionPerformed ();
+} else if (source === this.editSequence) {
+var sg = this.ap.av.getSelectionGroup ();
+if (sg != null) {
+if (this.seq == null) {
+this.seq = sg.getSequenceAt (0);
+}var dialog =  new jalview.appletgui.EditNameDialog (this.seq.getSequenceAsString (sg.getStartRes (), sg.getEndRes () + 1), null, "Edit Sequence ", null, this.ap.alignFrame, "Edit Sequence", 500, 100, true);
+if (dialog.accept) {
+var editCommand =  new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("label.edit_sequences"), jalview.commands.EditCommand.Action.REPLACE, dialog.getName ().$replace (' ', this.ap.av.getGapCharacter ()), sg.getSequencesAsArray (this.ap.av.getHiddenRepSequences ()), sg.getStartRes (), sg.getEndRes () + 1, this.ap.av.getAlignment ());
+this.ap.alignFrame.addHistoryItem (editCommand);
+this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
+}}} else if (source === this.toUpper || source === this.toLower || source === this.toggleCase) {
+var sg = this.ap.av.getSelectionGroup ();
+if (sg != null) {
+var startEnd = this.ap.av.getVisibleRegionBoundaries (sg.getStartRes (), sg.getEndRes () + 1);
+var description;
+var caseChange;
+if (source === this.toggleCase) {
+description = "Toggle Case";
+caseChange = jalview.commands.ChangeCaseCommand.TOGGLE_CASE;
+} else if (source === this.toUpper) {
+description = "To Upper Case";
+caseChange = jalview.commands.ChangeCaseCommand.TO_UPPER;
+} else {
+description = "To Lower Case";
+caseChange = jalview.commands.ChangeCaseCommand.TO_LOWER;
+}var caseCommand =  new jalview.commands.ChangeCaseCommand (description, sg.getSequencesAsArray (this.ap.av.getHiddenRepSequences ()), startEnd, caseChange);
+this.ap.alignFrame.addHistoryItem (caseCommand);
+this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
+}} else if (source === this.sequenceFeature) {
+var sg = this.ap.av.getSelectionGroup ();
+if (sg == null) {
+return;
+}var rsize = 0;
+var gSize = sg.getSize ();
+var rseqs;
+var seqs =  new Array (gSize);
+var tfeatures;
+var features =  new Array (gSize);
+for (var i = 0; i < gSize; i++) {
+var start = sg.getSequenceAt (i).findPosition (sg.getStartRes ());
+var end = sg.findEndRes (sg.getSequenceAt (i));
+if (start <= end) {
+seqs[rsize] = sg.getSequenceAt (i);
+features[rsize] =  new jalview.datamodel.SequenceFeature (null, null, null, start, end, "Jalview");
+rsize++;
+}}
+rseqs =  new Array (rsize);
+tfeatures =  new Array (rsize);
+System.arraycopy (seqs, 0, rseqs, 0, rsize);
+System.arraycopy (features, 0, tfeatures, 0, rsize);
+features = tfeatures;
+seqs = rseqs;
+if (this.ap.seqPanel.seqCanvas.getFeatureRenderer ().amendFeatures (seqs, features, true, this.ap)) {
+this.ap.alignFrame.sequenceFeatures.setState (true);
+this.ap.av.setShowSequenceFeatures (true);
+;this.ap.highlightSearchResults (null);
+}} else {
+this.outputText (evt);
+}}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "outputText", 
+function (e) {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this.ap.alignFrame);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.selection_output_command",  Clazz.newArray (-1, [e.getActionCommand ()])), 600, 500);
+cap.setText ( new jalview.io.AppletFormatAdapter ().formatSequences (e.getActionCommand (), this.ap.av.getShowJVSuffix (), this.ap, true));
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "showSequenceSelectionDetails", 
+function () {
+this.createSequenceDetailsReport (this.ap.av.getSequenceSelection ());
+});
+Clazz.defineMethod (c$, "showSequenceDetails", 
+function () {
+this.createSequenceDetailsReport ( Clazz.newArray (-1, [this.seq]));
+});
+Clazz.defineMethod (c$, "createSequenceDetailsReport", 
+function (sequences) {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (false, this.ap.alignFrame);
+var contents =  new StringBuffer ();
+for (var seq, $seq = 0, $$seq = sequences; $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
+contents.append (jalview.util.MessageManager.formatMessage ("label.annotation_for_displayid",  Clazz.newArray (-1, [seq.getDisplayId (true)])));
+ new jalview.io.SequenceAnnotationReport (null).createSequenceAnnotationReport (contents, seq, true, true, false, (this.ap.seqPanel.seqCanvas.fr != null) ? this.ap.seqPanel.seqCanvas.fr.getMinMax () : null);
+contents.append ("</p>");
+}
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, "Sequence Details for " + (sequences.length == 1 ? sequences[0].getDisplayId (true) : "Selection"), 600, 500);
+cap.setText (jalview.util.MessageManager.formatMessage ("label.html_content",  Clazz.newArray (-1, [contents.toString ()])));
+}, "~A");
+Clazz.defineMethod (c$, "editName", 
+function () {
+var dialog =  new jalview.appletgui.EditNameDialog (this.seq.getName (), this.seq.getDescription (), "       Sequence Name", "Sequence Description", this.ap.alignFrame, "Edit Sequence Name / Description", 500, 100, true);
+if (dialog.accept) {
+this.seq.setName (dialog.getName ());
+this.seq.setDescription (dialog.getDescription ());
+this.ap.paintAlignment (false);
+}});
+Clazz.defineMethod (c$, "addPDB", 
+function () {
+if (this.seq.getPDBId () != null) {
+var entry = this.seq.getPDBId ().firstElement ();
+if (this.ap.av.applet.jmolAvailable) {
+ new jalview.appletgui.AppletJmol (entry,  Clazz.newArray (-1, [this.seq]), null, this.ap, jalview.io.AppletFormatAdapter.URL);
+}} else {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this.ap.alignFrame);
+cap.setText (jalview.util.MessageManager.getString ("label.paste_pdb_file"));
+cap.setPDBImport (this.seq);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.paste_pdb_file_for_sequence",  Clazz.newArray (-1, [this.seq.getName ()])), 400, 300);
+}});
+Clazz.defineMethod (c$, "jbInit", 
+($fz = function () {
+this.groupMenu.setLabel (jalview.util.MessageManager.getString ("label.selection"));
+this.sequenceFeature.addActionListener (this);
+this.editGroupName.addActionListener (this);
+this.unGroupMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_group"));
+this.unGroupMenuItem.addActionListener (this);
+this.createGroupMenuItem.setLabel (jalview.util.MessageManager.getString ("action.create_group"));
+this.createGroupMenuItem.addActionListener (this);
+this.nucleotideMenuItem.setLabel (jalview.util.MessageManager.getString ("label.nucleotide"));
+this.nucleotideMenuItem.addActionListener (this);
+this.conservationMenuItem.addItemListener (this);
+this.abovePIDColour.addItemListener (this);
+this.colourMenu.setLabel (jalview.util.MessageManager.getString ("label.group_colour"));
+this.showBoxes.setLabel (jalview.util.MessageManager.getString ("action.boxes"));
+this.showBoxes.setState (true);
+this.showBoxes.addItemListener (this);
+this.sequenceName.addActionListener (this);
+this.sequenceDetails.addActionListener (this);
+this.selSeqDetails.addActionListener (this);
+this.displayNonconserved.setLabel (jalview.util.MessageManager.getString ("label.show_non_conversed"));
+this.displayNonconserved.setState (false);
+this.displayNonconserved.addItemListener (this);
+this.showText.setLabel (jalview.util.MessageManager.getString ("action.text"));
+this.showText.addItemListener (this);
+this.showColourText.setLabel (jalview.util.MessageManager.getString ("label.colour_text"));
+this.showColourText.addItemListener (this);
+this.outputmenu.setLabel (jalview.util.MessageManager.getString ("label.out_to_textbox"));
+this.seqMenu.setLabel (jalview.util.MessageManager.getString ("label.sequence"));
+this.pdb.setLabel (jalview.util.MessageManager.getString ("label.view_pdb_structure"));
+this.hideSeqs.setLabel (jalview.util.MessageManager.getString ("action.hide_sequences"));
+this.repGroup.setLabel (jalview.util.MessageManager.formatMessage ("label.represent_group_with",  Clazz.newArray (-1, [""])));
+this.revealAll.setLabel (jalview.util.MessageManager.getString ("action.reveal_all"));
+this.revealSeq.setLabel (jalview.util.MessageManager.getString ("action.reveal_sequences"));
+this.menu1.setLabel (jalview.util.MessageManager.getString ("label.group") + ":");
+this.add (this.groupMenu);
+this.add (this.seqMenu);
+this.add (this.hideSeqs);
+this.add (this.revealSeq);
+this.add (this.revealAll);
+this.groupMenu.add (this.groupShowAnnotationsMenu);
+this.groupMenu.add (this.groupHideAnnotationsMenu);
+this.groupMenu.add (this.groupAddReferenceAnnotations);
+this.groupMenu.add (this.editMenu);
+this.groupMenu.add (this.outputmenu);
+this.groupMenu.add (this.sequenceFeature);
+this.groupMenu.add (this.createGroupMenuItem);
+this.groupMenu.add (this.unGroupMenuItem);
+this.groupMenu.add (this.menu1);
+this.colourMenu.add (this.noColourmenuItem);
+this.colourMenu.add (this.clustalColour);
+this.colourMenu.add (this.BLOSUM62Colour);
+this.colourMenu.add (this.PIDColour);
+this.colourMenu.add (this.zappoColour);
+this.colourMenu.add (this.taylorColour);
+this.colourMenu.add (this.hydrophobicityColour);
+this.colourMenu.add (this.helixColour);
+this.colourMenu.add (this.strandColour);
+this.colourMenu.add (this.turnColour);
+this.colourMenu.add (this.buriedColour);
+this.colourMenu.add (this.nucleotideMenuItem);
+this.colourMenu.add (this.userDefinedColour);
+this.colourMenu.addSeparator ();
+this.colourMenu.add (this.abovePIDColour);
+this.colourMenu.add (this.conservationMenuItem);
+this.noColourmenuItem.setLabel (jalview.util.MessageManager.getString ("label.none"));
+this.noColourmenuItem.addActionListener (this);
+this.clustalColour.setLabel (jalview.util.MessageManager.getString ("label.clustalx_colours"));
+this.clustalColour.addActionListener (this);
+this.zappoColour.setLabel (jalview.util.MessageManager.getString ("label.zappo"));
+this.zappoColour.addActionListener (this);
+this.taylorColour.setLabel (jalview.util.MessageManager.getString ("label.taylor"));
+this.taylorColour.addActionListener (this);
+this.hydrophobicityColour.setLabel (jalview.util.MessageManager.getString ("label.hydrophobicity"));
+this.hydrophobicityColour.addActionListener (this);
+this.helixColour.setLabel (jalview.util.MessageManager.getString ("label.helix_propensity"));
+this.helixColour.addActionListener (this);
+this.strandColour.setLabel (jalview.util.MessageManager.getString ("label.strand_propensity"));
+this.strandColour.addActionListener (this);
+this.turnColour.setLabel (jalview.util.MessageManager.getString ("label.turn_propensity"));
+this.turnColour.addActionListener (this);
+this.buriedColour.setLabel (jalview.util.MessageManager.getString ("label.buried_index"));
+this.buriedColour.addActionListener (this);
+this.abovePIDColour.setLabel (jalview.util.MessageManager.getString ("label.above_identity_percentage"));
+this.userDefinedColour.setLabel (jalview.util.MessageManager.getString ("action.user_defined"));
+this.userDefinedColour.addActionListener (this);
+this.PIDColour.setLabel (jalview.util.MessageManager.getString ("action.percentage_identity"));
+this.PIDColour.addActionListener (this);
+this.BLOSUM62Colour.setLabel ("BLOSUM62");
+this.BLOSUM62Colour.addActionListener (this);
+this.conservationMenuItem.setLabel (jalview.util.MessageManager.getString ("label.conservation"));
+this.editMenu.add (this.copy);
+this.copy.addActionListener (this);
+this.editMenu.add (this.cut);
+this.cut.addActionListener (this);
+this.editMenu.add (this.editSequence);
+this.editSequence.addActionListener (this);
+this.editMenu.add (this.toUpper);
+this.toUpper.addActionListener (this);
+this.editMenu.add (this.toLower);
+this.toLower.addActionListener (this);
+this.editMenu.add (this.toggleCase);
+this.seqMenu.add (this.seqShowAnnotationsMenu);
+this.seqMenu.add (this.seqHideAnnotationsMenu);
+this.seqMenu.add (this.seqAddReferenceAnnotations);
+this.seqMenu.add (this.sequenceName);
+this.seqMenu.add (this.makeReferenceSeq);
+if (!this.ap.av.applet.useXtrnalSviewer) {
+this.seqMenu.add (this.pdb);
+}this.seqMenu.add (this.repGroup);
+this.menu1.add (this.editGroupName);
+this.menu1.add (this.colourMenu);
+this.menu1.add (this.showBoxes);
+this.menu1.add (this.showText);
+this.menu1.add (this.showColourText);
+this.menu1.add (this.displayNonconserved);
+this.toggleCase.addActionListener (this);
+this.pdb.addActionListener (this);
+this.hideSeqs.addActionListener (this);
+this.repGroup.addActionListener (this);
+this.revealAll.addActionListener (this);
+this.revealSeq.addActionListener (this);
+this.makeReferenceSeq.addActionListener (this);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "refresh", 
+function () {
+this.ap.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "clustalColour_actionPerformed", 
+function () {
+var sg = this.getGroup ();
+sg.cs =  new jalview.schemes.ClustalxColourScheme (sg, this.ap.av.getHiddenRepSequences ());
+this.refresh ();
+});
+Clazz.defineMethod (c$, "zappoColour_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.ZappoColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "taylorColour_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.TaylorColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "hydrophobicityColour_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.HydrophobicColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "helixColour_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.HelixColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "strandColour_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.StrandColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "turnColour_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.TurnColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "buriedColour_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.BuriedColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "nucleotideMenuItem_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.NucleotideColourScheme ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "abovePIDColour_itemStateChanged", 
+function () {
+var sg = this.getGroup ();
+if (sg.cs == null) {
+return;
+}if (this.abovePIDColour.getState ()) {
+sg.cs.setConsensus (jalview.analysis.AAFrequency.calculate (sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth ()));
+var threshold = jalview.appletgui.SliderPanel.setPIDSliderSource (this.ap, sg.cs, this.getGroup ().getName ());
+sg.cs.setThreshold (threshold, this.ap.av.isIgnoreGapsConsensus ());
+jalview.appletgui.SliderPanel.showPIDSlider ();
+} else {
+sg.cs.setThreshold (0, this.ap.av.isIgnoreGapsConsensus ());
+}this.refresh ();
+});
+Clazz.defineMethod (c$, "userDefinedColour_actionPerformed", 
+function () {
+ new jalview.appletgui.UserDefinedColours (this.ap, this.getGroup ());
+});
+Clazz.defineMethod (c$, "PIDColour_actionPerformed", 
+function () {
+var sg = this.getGroup ();
+sg.cs =  new jalview.schemes.PIDColourScheme ();
+sg.cs.setConsensus (jalview.analysis.AAFrequency.calculate (sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth ()));
+this.refresh ();
+});
+Clazz.defineMethod (c$, "BLOSUM62Colour_actionPerformed", 
+function () {
+var sg = this.getGroup ();
+sg.cs =  new jalview.schemes.Blosum62ColourScheme ();
+sg.cs.setConsensus (jalview.analysis.AAFrequency.calculate (sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth ()));
+this.refresh ();
+});
+Clazz.defineMethod (c$, "noColourmenuItem_actionPerformed", 
+function () {
+this.getGroup ().cs = null;
+this.refresh ();
+});
+Clazz.defineMethod (c$, "conservationMenuItem_itemStateChanged", 
+function () {
+var sg = this.getGroup ();
+if (sg.cs == null) {
+return;
+}if (this.conservationMenuItem.getState ()) {
+sg.cs.setConservation (jalview.analysis.Conservation.calculateConservation ("Group", jalview.schemes.ResidueProperties.propHash, 3, sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth (), false, this.ap.av.getConsPercGaps (), false));
+jalview.appletgui.SliderPanel.setConservationSlider (this.ap, sg.cs, sg.getName ());
+jalview.appletgui.SliderPanel.showConservationSlider ();
+} else {
+sg.cs.setConservation (null);
+}this.refresh ();
+});
+Clazz.defineMethod (c$, "getGroup", 
+function () {
+var sg = this.ap.av.getSelectionGroup ();
+if (sg != null) {
+this.ap.av.getAlignment ().addGroup (sg);
+}return sg;
+});
+Clazz.defineMethod (c$, "unGroupMenuItem_actionPerformed", 
+function () {
+var sg = this.ap.av.getSelectionGroup ();
+this.ap.av.getAlignment ().deleteGroup (sg);
+this.ap.av.setSelectionGroup (null);
+this.ap.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "createGroupMenuItem_actionPerformed", 
+function () {
+this.getGroup ();
+this.refresh ();
+});
+Clazz.defineMethod (c$, "showColourText_itemStateChanged", 
+function () {
+this.getGroup ().setColourText (this.showColourText.getState ());
+this.refresh ();
+});
+Clazz.defineMethod (c$, "showText_itemStateChanged", 
+function () {
+this.getGroup ().setDisplayText (this.showText.getState ());
+this.refresh ();
+});
+Clazz.defineMethod (c$, "makeReferenceSeq_actionPerformed", 
+function () {
+if (!this.ap.av.getAlignment ().hasSeqrep ()) {
+this.ap.av.setDisplayReferenceSeq (true);
+this.ap.av.setColourByReferenceSeq (true);
+this.ap.av.getAlignment ().setSeqrep (this.seq);
+} else {
+if (this.ap.av.getAlignment ().getSeqrep () === this.seq) {
+this.ap.av.getAlignment ().setSeqrep (null);
+} else {
+this.ap.av.getAlignment ().setSeqrep (this.seq);
+}}this.refresh ();
+});
+Clazz.defineMethod (c$, "showNonconserved_itemStateChanged", 
+function () {
+this.getGroup ().setShowNonconserved (this.displayNonconserved.getState ());
+this.refresh ();
+});
+Clazz.defineMethod (c$, "showBoxes_itemStateChanged", 
+function () {
+this.getGroup ().setDisplayBoxes (this.showBoxes.getState ());
+this.refresh ();
+});
+Clazz.defineMethod (c$, "hideSequences", 
+function (representGroup) {
+var sg = this.ap.av.getSelectionGroup ();
+if (sg == null || sg.getSize () < 1) {
+this.ap.av.hideSequence ( Clazz.newArray (-1, [this.seq]));
+return;
+}this.ap.av.setSelectionGroup (null);
+if (representGroup) {
+this.ap.av.hideRepSequences (this.seq, sg);
+return;
+}var gsize = sg.getSize ();
+var hseqs;
+hseqs =  new Array (gsize);
+var index = 0;
+for (var i = 0; i < gsize; i++) {
+hseqs[index++] = sg.getSequenceAt (i);
+}
+this.ap.av.hideSequence (hseqs);
+this.ap.av.sendSelection ();
+}, "~B");
+Clazz.defineMethod (c$, "buildAnnotationTypesMenus", 
+function (showMenu, hideMenu, forSequences) {
+showMenu.removeAll ();
+hideMenu.removeAll ();
+var all = java.util.Arrays.asList (["All"]);
+this.addAnnotationTypeToShowHide (showMenu, forSequences, "", all, true, true);
+this.addAnnotationTypeToShowHide (hideMenu, forSequences, "", all, true, false);
+showMenu.addSeparator ();
+hideMenu.addSeparator ();
+var annotations = this.ap.getAlignment ().getAlignmentAnnotation ();
+var shownTypes =  new java.util.LinkedHashMap ();
+var hiddenTypes =  new java.util.LinkedHashMap ();
+jalview.analysis.AlignmentAnnotationUtils.getShownHiddenTypes (shownTypes, hiddenTypes, jalview.analysis.AlignmentAnnotationUtils.asList (annotations), forSequences);
+for (var calcId, $calcId = hiddenTypes.keySet ().iterator (); $calcId.hasNext () && ((calcId = $calcId.next ()) || true);) {
+for (var type, $type = hiddenTypes.get (calcId).iterator (); $type.hasNext () && ((type = $type.next ()) || true);) {
+this.addAnnotationTypeToShowHide (showMenu, forSequences, calcId, type, false, true);
+}
+}
+showMenu.setEnabled (!hiddenTypes.isEmpty ());
+for (var calcId, $calcId = shownTypes.keySet ().iterator (); $calcId.hasNext () && ((calcId = $calcId.next ()) || true);) {
+for (var type, $type = shownTypes.get (calcId).iterator (); $type.hasNext () && ((type = $type.next ()) || true);) {
+this.addAnnotationTypeToShowHide (hideMenu, forSequences, calcId, type, false, false);
+}
+}
+hideMenu.setEnabled (!shownTypes.isEmpty ());
+}, "awt2swing.Menu,awt2swing.Menu,java.util.List");
+Clazz.defineMethod (c$, "addAnnotationTypeToShowHide", 
+function (showOrHideMenu, forSequences, calcId, types, allTypes, actionIsShow) {
+var label = types.toString ();
+label = label.substring (1, label.length - 1);
+var item =  new awt2swing.MenuItem (label);
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.APopupMenu$3") ? 0 : jalview.appletgui.APopupMenu.$APopupMenu$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.APopupMenu$3, this, Clazz.cloneFinals ("types", types, "forSequences", forSequences, "allTypes", allTypes, "actionIsShow", actionIsShow))));
+showOrHideMenu.add (item);
+}, "awt2swing.Menu,java.util.List,~S,java.util.List,~B,~B");
+c$.$APopupMenu$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "APopupMenu$1", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.APopupMenu"].addReferenceAnnotations_actionPerformed (this.f$.candidates);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$APopupMenu$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "APopupMenu$2", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.APopupMenu"].ap.alignFrame.showURL (this.f$.url, this.f$.target);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$APopupMenu$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "APopupMenu$3", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+jalview.analysis.AlignmentUtils.showOrHideSequenceAnnotations (this.b$["jalview.appletgui.APopupMenu"].ap.getAlignment (), this.f$.types, this.f$.forSequences, this.f$.allTypes, this.f$.actionIsShow);
+this.b$["jalview.appletgui.APopupMenu"].refresh ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"ALL_ANNOTATIONS", "All");
+});
index c5a8472..f1ac80b 100644 (file)
Binary files a/bin/jalview/appletgui/AlignFrame.class and b/bin/jalview/appletgui/AlignFrame.class differ
index 7221f66..f3c3d8e 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Canvas", "jalview.api.AlignViewControllerGuiI", "jalview.appletgui.EmbmenuFrame", "java.awt.event.ActionListener", "$.ItemListener", "$.KeyListener", "awt2swing.CheckboxMenuItem", "$.Label", "$.Menu", "$.MenuBar", "$.MenuItem", "jalview.util.MessageManager", "java.awt.BorderLayout"], "jalview.appletgui.AlignFrame", ["awt2swing.Frame", "jalview.analysis.AlignmentSorter", "$.AnnotationSorter", "jalview.appletgui.AlignViewport", "$.AlignmentPanel", "$.AnnotationColourChooser", "$.AnnotationColumnChooser", "$.AppletJmol", "$.CutAndPasteTransfer", "$.FeatureSettings", "$.Finder", "$.FontChooser", "$.OverviewPanel", "$.PCAPanel", "$.PaintRefresher", "$.PairwiseAlignPanel", "$.RedundancyPanel", "$.SliderPanel", "$.TreePanel", "$.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.commands.EditCommand", "$.OrderCommand", "$.RemoveGapColCommand", "$.RemoveGapsCommand", "$.SlideSequencesCommand", "$.TrimRegionCommand", "jalview.controller.AlignViewController", "jalview.datamodel.Alignment", "$.PDBEntry", "$.Sequence", "$.SequenceGroup", "jalview.io.AlignmentProperties", "$.AnnotationFile", "$.AppletFormatAdapter", "$.FeaturesFile", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.Blosum62ColourScheme", "$.BuriedColourScheme", "$.ClustalxColourScheme", "$.HelixColourScheme", "$.HydrophobicColourScheme", "$.NucleotideColourScheme", "$.PIDColourScheme", "$.PurinePyrimidineColourScheme", "$.RNAHelicesColourChooser", "$.RNAInteractionColourScheme", "$.StrandColourScheme", "$.TCoffeeColourScheme", "$.TaylorColourScheme", "$.TurnColourScheme", "$.ZappoColourScheme", "jalview.structure.StructureSelectionManager", "jalview.util.Comparison", "$.MappingUtils", "java.awt.Color", "$.Font", "java.awt.event.FocusListener", "$.WindowAdapter", "java.lang.Character", "$.StringBuffer", "java.net.URL", "$.URLEncoder", "java.util.Arrays", "$.HashMap", "$.Hashtable", "$.StringTokenizer", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.avc = null;\r
-this.alignPanel = null;\r
-this.viewport = null;\r
-this.frameWidth = 700;\r
-this.frameHeight = 500;\r
-this.jalviewServletURL = null;\r
-this.showAutoCalculatedAbove = false;\r
-this.annotationSortOrder = null;\r
-this.alignFrameMenuBar = null;\r
-this.fileMenu = null;\r
-this.loadApplication = null;\r
-this.$loadTree = null;\r
-this.$loadAnnotations = null;\r
-this.$outputFeatures = null;\r
-this.$outputAnnotations = null;\r
-this.closeMenuItem = null;\r
-this.selectAllSequenceMenuItem = null;\r
-this.deselectAllSequenceMenuItem = null;\r
-this.invertSequenceMenuItem = null;\r
-this.remove2LeftMenuItem = null;\r
-this.remove2RightMenuItem = null;\r
-this.removeGappedColumnMenuItem = null;\r
-this.removeAllGapsMenuItem = null;\r
-this.viewBoxesMenuItem = null;\r
-this.viewTextMenuItem = null;\r
-this.sortPairwiseMenuItem = null;\r
-this.sortIDMenuItem = null;\r
-this.sortLengthMenuItem = null;\r
-this.sortGroupMenuItem = null;\r
-this.removeRedundancyMenuItem = null;\r
-this.pairwiseAlignmentMenuItem = null;\r
-this.PCAMenuItem = null;\r
-this.averageDistanceTreeMenuItem = null;\r
-this.neighbourTreeMenuItem = null;\r
-this.borderLayout1 = null;\r
-this.statusBar = null;\r
-this.clustalColour = null;\r
-this.zappoColour = null;\r
-this.taylorColour = null;\r
-this.hydrophobicityColour = null;\r
-this.helixColour = null;\r
-this.strandColour = null;\r
-this.turnColour = null;\r
-this.buriedColour = null;\r
-this.purinePyrimidineColour = null;\r
-this.RNAInteractionColour = null;\r
-this.RNAHelixColour = null;\r
-this.userDefinedColour = null;\r
-this.PIDColour = null;\r
-this.BLOSUM62Colour = null;\r
-this.tcoffeeColour = null;\r
-this.njTreeBlosumMenuItem = null;\r
-this.avDistanceTreeBlosumMenuItem = null;\r
-this.annotationPanelMenuItem = null;\r
-this.colourTextMenuItem = null;\r
-this.displayNonconservedMenuItem = null;\r
-this.alProperties = null;\r
-this.overviewMenuItem = null;\r
-this.undoMenuItem = null;\r
-this.redoMenuItem = null;\r
-this.conservationMenuItem = null;\r
-this.noColourmenuItem = null;\r
-this.wrapMenuItem = null;\r
-this.renderGapsMenuItem = null;\r
-this.findMenuItem = null;\r
-this.abovePIDThreshold = null;\r
-this.nucleotideColour = null;\r
-this.deleteGroups = null;\r
-this.grpsFromSelection = null;\r
-this.createGroup = null;\r
-this.unGroup = null;\r
-this.$delete = null;\r
-this.copy = null;\r
-this.cut = null;\r
-this.pasteMenu = null;\r
-this.pasteNew = null;\r
-this.pasteThis = null;\r
-this.applyToAllGroups = null;\r
-this.$font = null;\r
-this.scaleAbove = null;\r
-this.scaleLeft = null;\r
-this.scaleRight = null;\r
-this.modifyPID = null;\r
-this.modifyConservation = null;\r
-this.autoCalculate = null;\r
-this.$sortByTree = null;\r
-this.sortByTreeMenu = null;\r
-this.inputText = null;\r
-this.documentation = null;\r
-this.about = null;\r
-this.seqLimits = null;\r
-this.centreColumnLabelFlag = null;\r
-this.followMouseOverFlag = null;\r
-this.showSequenceLogo = null;\r
-this.applyAutoAnnotationSettings = null;\r
-this.showConsensusHistogram = null;\r
-this.showGroupConsensus = null;\r
-this.showGroupConservation = null;\r
-this.normSequenceLogo = null;\r
-this.featureSettings = null;\r
-this.sequenceFeatures = null;\r
-this.annotationColour = null;\r
-this.annotationColumnSelection = null;\r
-this.invertColSel = null;\r
-this.showColumns = null;\r
-this.showSeqs = null;\r
-this.hideColumns = null;\r
-this.hideSequences = null;\r
-this.hideAllButSelection = null;\r
-this.hideAllSelection = null;\r
-this.showAllHidden = null;\r
-this.$newView = null;\r
-this.showAlignmentAnnotations = null;\r
-this.showSequenceAnnotations = null;\r
-this.sortAnnBySequence = null;\r
-this.sortAnnByLabel = null;\r
-this.showAutoFirst = null;\r
-this.showAutoLast = null;\r
-this.splitFrame = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "AlignFrame", jalview.appletgui.EmbmenuFrame, [java.awt.event.ActionListener, java.awt.event.ItemListener, java.awt.event.KeyListener, jalview.api.AlignViewControllerGuiI]);\r
-Clazz.prepareFields (c$, function () {\r
-this.alignFrameMenuBar =  new awt2swing.MenuBar ();\r
-this.fileMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.file"));\r
-this.loadApplication =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.view_full_application"));\r
-this.$loadTree =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.load_associated_tree"));\r
-this.$loadAnnotations =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.load_features_annotations"));\r
-this.$outputFeatures =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.export_features").concat ("..."));\r
-this.$outputAnnotations =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.export_annotations").concat ("..."));\r
-this.closeMenuItem =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.close"));\r
-this.selectAllSequenceMenuItem =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.select_all"));\r
-this.deselectAllSequenceMenuItem =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.deselect_all"));\r
-this.invertSequenceMenuItem =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.invert_selection"));\r
-this.remove2LeftMenuItem =  new awt2swing.MenuItem ();\r
-this.remove2RightMenuItem =  new awt2swing.MenuItem ();\r
-this.removeGappedColumnMenuItem =  new awt2swing.MenuItem ();\r
-this.removeAllGapsMenuItem =  new awt2swing.MenuItem ();\r
-this.viewBoxesMenuItem =  new awt2swing.CheckboxMenuItem ();\r
-this.viewTextMenuItem =  new awt2swing.CheckboxMenuItem ();\r
-this.sortPairwiseMenuItem =  new awt2swing.MenuItem ();\r
-this.sortIDMenuItem =  new awt2swing.MenuItem ();\r
-this.sortLengthMenuItem =  new awt2swing.MenuItem ();\r
-this.sortGroupMenuItem =  new awt2swing.MenuItem ();\r
-this.removeRedundancyMenuItem =  new awt2swing.MenuItem ();\r
-this.pairwiseAlignmentMenuItem =  new awt2swing.MenuItem ();\r
-this.PCAMenuItem =  new awt2swing.MenuItem ();\r
-this.averageDistanceTreeMenuItem =  new awt2swing.MenuItem ();\r
-this.neighbourTreeMenuItem =  new awt2swing.MenuItem ();\r
-this.borderLayout1 =  new java.awt.BorderLayout ();\r
-this.statusBar =  new awt2swing.Label ();\r
-this.clustalColour =  new awt2swing.MenuItem ();\r
-this.zappoColour =  new awt2swing.MenuItem ();\r
-this.taylorColour =  new awt2swing.MenuItem ();\r
-this.hydrophobicityColour =  new awt2swing.MenuItem ();\r
-this.helixColour =  new awt2swing.MenuItem ();\r
-this.strandColour =  new awt2swing.MenuItem ();\r
-this.turnColour =  new awt2swing.MenuItem ();\r
-this.buriedColour =  new awt2swing.MenuItem ();\r
-this.purinePyrimidineColour =  new awt2swing.MenuItem ();\r
-this.RNAInteractionColour =  new awt2swing.MenuItem ();\r
-this.RNAHelixColour =  new awt2swing.MenuItem ();\r
-this.userDefinedColour =  new awt2swing.MenuItem ();\r
-this.PIDColour =  new awt2swing.MenuItem ();\r
-this.BLOSUM62Colour =  new awt2swing.MenuItem ();\r
-this.tcoffeeColour =  new awt2swing.MenuItem ();\r
-this.njTreeBlosumMenuItem =  new awt2swing.MenuItem ();\r
-this.avDistanceTreeBlosumMenuItem =  new awt2swing.MenuItem ();\r
-this.annotationPanelMenuItem =  new awt2swing.CheckboxMenuItem ();\r
-this.colourTextMenuItem =  new awt2swing.CheckboxMenuItem ();\r
-this.displayNonconservedMenuItem =  new awt2swing.CheckboxMenuItem ();\r
-this.alProperties =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.alignment_props"));\r
-this.overviewMenuItem =  new awt2swing.MenuItem ();\r
-this.undoMenuItem =  new awt2swing.MenuItem ();\r
-this.redoMenuItem =  new awt2swing.MenuItem ();\r
-this.conservationMenuItem =  new awt2swing.CheckboxMenuItem ();\r
-this.noColourmenuItem =  new awt2swing.MenuItem ();\r
-this.wrapMenuItem =  new awt2swing.CheckboxMenuItem ();\r
-this.renderGapsMenuItem =  new awt2swing.CheckboxMenuItem ();\r
-this.findMenuItem =  new awt2swing.MenuItem ();\r
-this.abovePIDThreshold =  new awt2swing.CheckboxMenuItem ();\r
-this.nucleotideColour =  new awt2swing.MenuItem ();\r
-this.deleteGroups =  new awt2swing.MenuItem ();\r
-this.grpsFromSelection =  new awt2swing.MenuItem ();\r
-this.createGroup =  new awt2swing.MenuItem ();\r
-this.unGroup =  new awt2swing.MenuItem ();\r
-this.$delete =  new awt2swing.MenuItem ();\r
-this.copy =  new awt2swing.MenuItem ();\r
-this.cut =  new awt2swing.MenuItem ();\r
-this.pasteMenu =  new awt2swing.Menu ();\r
-this.pasteNew =  new awt2swing.MenuItem ();\r
-this.pasteThis =  new awt2swing.MenuItem ();\r
-this.applyToAllGroups =  new awt2swing.CheckboxMenuItem ();\r
-this.$font =  new awt2swing.MenuItem ();\r
-this.scaleAbove =  new awt2swing.CheckboxMenuItem ();\r
-this.scaleLeft =  new awt2swing.CheckboxMenuItem ();\r
-this.scaleRight =  new awt2swing.CheckboxMenuItem ();\r
-this.modifyPID =  new awt2swing.MenuItem ();\r
-this.modifyConservation =  new awt2swing.MenuItem ();\r
-this.$sortByTree =  new awt2swing.CheckboxMenuItem ("Sort Alignment With New Tree", true);\r
-this.sortByTreeMenu =  new awt2swing.Menu ();\r
-this.inputText =  new awt2swing.MenuItem ();\r
-this.documentation =  new awt2swing.MenuItem ();\r
-this.about =  new awt2swing.MenuItem ();\r
-this.seqLimits =  new awt2swing.CheckboxMenuItem ();\r
-this.centreColumnLabelFlag =  new awt2swing.CheckboxMenuItem ();\r
-this.followMouseOverFlag =  new awt2swing.CheckboxMenuItem ();\r
-this.showSequenceLogo =  new awt2swing.CheckboxMenuItem ();\r
-this.applyAutoAnnotationSettings =  new awt2swing.CheckboxMenuItem ();\r
-this.showConsensusHistogram =  new awt2swing.CheckboxMenuItem ();\r
-this.showGroupConsensus =  new awt2swing.CheckboxMenuItem ();\r
-this.showGroupConservation =  new awt2swing.CheckboxMenuItem ();\r
-this.normSequenceLogo =  new awt2swing.CheckboxMenuItem ();\r
-this.featureSettings =  new awt2swing.MenuItem ();\r
-this.sequenceFeatures =  new awt2swing.CheckboxMenuItem ();\r
-this.annotationColour =  new awt2swing.MenuItem ();\r
-this.annotationColumnSelection =  new awt2swing.MenuItem ();\r
-this.invertColSel =  new awt2swing.MenuItem ();\r
-this.showColumns =  new awt2swing.MenuItem ();\r
-this.showSeqs =  new awt2swing.MenuItem ();\r
-this.hideColumns =  new awt2swing.MenuItem ();\r
-this.hideSequences =  new awt2swing.MenuItem ();\r
-this.hideAllButSelection =  new awt2swing.MenuItem ();\r
-this.hideAllSelection =  new awt2swing.MenuItem ();\r
-this.showAllHidden =  new awt2swing.MenuItem ();\r
-this.$newView =  new awt2swing.MenuItem ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (al, applet, title, embedded) {\r
-this.construct (al, applet, title, embedded, true);\r
-}, "jalview.datamodel.AlignmentI,jalview.bin.JalviewLite,~S,~B");\r
-Clazz.makeConstructor (c$, \r
-function (al, applet, title, embedded, addToDisplay) {\r
-this.construct (al, null, null, applet, title, embedded, addToDisplay);\r
-}, "jalview.datamodel.AlignmentI,jalview.bin.JalviewLite,~S,~B,~B");\r
-Clazz.makeConstructor (c$, \r
-function (al, hiddenSeqs, columnSelection, applet, title, embedded) {\r
-this.construct (al, hiddenSeqs, columnSelection, applet, title, embedded, true);\r
-}, "jalview.datamodel.AlignmentI,~A,jalview.datamodel.ColumnSelection,jalview.bin.JalviewLite,~S,~B");\r
-Clazz.makeConstructor (c$, \r
-function (al, hiddenSeqs, columnSelection, applet, title, embedded, addToDisplay) {\r
-Clazz.superConstructor (this, jalview.appletgui.AlignFrame, []);\r
-if (applet != null) {\r
-this.jalviewServletURL = applet.jalviewServletURL;\r
-}try {\r
-this.jbInit ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-if (applet != null) {\r
-var param;\r
-try {\r
-param = applet.windowWidth;\r
-if (param != null) {\r
-var width = Integer.parseInt (param);\r
-this.frameWidth = width;\r
-}param = applet.windowHeight;\r
-if (param != null) {\r
-var height = Integer.parseInt (param);\r
-this.frameHeight = height;\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}this.viewport =  new jalview.appletgui.AlignViewport (al, applet);\r
-if (hiddenSeqs != null && hiddenSeqs.length > 0) {\r
-this.viewport.hideSequence (hiddenSeqs);\r
-}if (columnSelection != null) {\r
-this.viewport.setColumnSelection (columnSelection);\r
-}this.alignPanel =  new jalview.appletgui.AlignmentPanel (this, this.viewport);\r
-this.avc =  new jalview.controller.AlignViewController (this, this.viewport, this.alignPanel);\r
-this.viewport.updateConservation (this.alignPanel);\r
-this.viewport.updateConsensus (this.alignPanel);\r
-this.displayNonconservedMenuItem.setState (this.viewport.getShowUnconserved ());\r
-this.followMouseOverFlag.setState (this.viewport.isFollowHighlight ());\r
-this.showGroupConsensus.setState (this.viewport.isShowGroupConsensus ());\r
-this.showGroupConservation.setState (this.viewport.isShowGroupConservation ());\r
-this.showConsensusHistogram.setState (this.viewport.isShowConsensusHistogram ());\r
-this.showSequenceLogo.setState (this.viewport.isShowSequenceLogo ());\r
-this.normSequenceLogo.setState (this.viewport.isNormaliseSequenceLogo ());\r
-this.applyToAllGroups.setState (this.viewport.getColourAppliesToAllGroups ());\r
-this.annotationPanelMenuItem.setState (this.viewport.isShowAnnotation ());\r
-this.showAlignmentAnnotations.setState (this.viewport.isShowAnnotation ());\r
-this.showSequenceAnnotations.setState (this.viewport.isShowAnnotation ());\r
-this.seqLimits.setState (this.viewport.getShowJVSuffix ());\r
-if (applet != null) {\r
-var param = applet.sortBy;\r
-if (param != null) {\r
-if (param.equalsIgnoreCase ("Id")) {\r
-this.sortIDMenuItem_actionPerformed ();\r
-} else if (param.equalsIgnoreCase ("Pairwise Identity")) {\r
-this.sortPairwiseMenuItem_actionPerformed ();\r
-} else if (param.equalsIgnoreCase ("Length")) {\r
-this.sortLengthMenuItem_actionPerformed ();\r
-}}param = applet.wrap;\r
-if (param != null) {\r
-if (param.equalsIgnoreCase ("true")) {\r
-this.wrapMenuItem.setState (true);\r
-this.wrapMenuItem_actionPerformed ();\r
-}}param = applet.centrecolumnlabels;\r
-if (param != null) {\r
-this.centreColumnLabelFlag.setState (true);\r
-this.centreColumnLabelFlag_stateChanged ();\r
-}}if (this.viewport.getAlignment ().isNucleotide ()) {\r
-this.viewport.updateStrucConsensus (this.alignPanel);\r
-if (this.viewport.getAlignment ().hasRNAStructure ()) {\r
-this.RNAHelixColour.setEnabled (true);\r
-} else {\r
-this.RNAHelixColour.setEnabled (false);\r
-}} else {\r
-this.RNAHelixColour.setEnabled (false);\r
-this.purinePyrimidineColour.setEnabled (false);\r
-}this.addKeyListener (this);\r
-this.alignPanel.seqPanel.seqCanvas.addKeyListener (this);\r
-this.alignPanel.idPanel.idCanvas.addKeyListener (this);\r
-this.alignPanel.scalePanel.addKeyListener (this);\r
-this.alignPanel.annotationPanel.addKeyListener (this);\r
-this.alignPanel.annotationPanelHolder.addKeyListener (this);\r
-this.alignPanel.annotationSpaceFillerHolder.addKeyListener (this);\r
-this.alignPanel.alabels.addKeyListener (this);\r
-if (addToDisplay) {\r
-this.addToDisplay (embedded);\r
-}}, "jalview.datamodel.AlignmentI,~A,jalview.datamodel.ColumnSelection,jalview.bin.JalviewLite,~S,~B,~B");\r
-Clazz.defineMethod (c$, "addToDisplay", \r
-function (embedded) {\r
-this.createAlignFrameWindow (embedded);\r
-this.validate ();\r
-this.alignPanel.adjustAnnotationHeight ();\r
-this.alignPanel.paintAlignment (true);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getAlignViewport", \r
-function () {\r
-return this.viewport;\r
-});\r
-Clazz.defineMethod (c$, "getSeqcanvas", \r
-function () {\r
-return this.alignPanel.seqPanel.seqCanvas;\r
-});\r
-Clazz.defineMethod (c$, "parseFeaturesFile", \r
-function (file, type) {\r
-return this.parseFeaturesFile (file, type, true);\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "parseFeaturesFile", \r
-function (file, type, autoenabledisplay) {\r
-var featureLinks =  new java.util.Hashtable ();\r
-var featuresFile = false;\r
-try {\r
-featuresFile =  new jalview.io.FeaturesFile (file, type).parse (this.viewport.getAlignment (), this.alignPanel.seqPanel.seqCanvas.getFeatureRenderer ().getFeatureColours (), featureLinks, true, this.viewport.applet.getDefaultParameter ("relaxedidmatch", false));\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-if (featuresFile) {\r
-if (featureLinks.size () > 0) {\r
-this.alignPanel.seqPanel.seqCanvas.getFeatureRenderer ().featureLinks = featureLinks;\r
-}if (autoenabledisplay) {\r
-this.viewport.setShowSequenceFeatures (true);\r
-this.sequenceFeatures.setState (true);\r
-}if (this.alignPanel.seqPanel.seqCanvas.fr != null) {\r
-this.alignPanel.seqPanel.seqCanvas.fr.findAllFeatures (true);\r
-}if (this.viewport.featureSettings != null) {\r
-this.viewport.featureSettings.refreshTable ();\r
-}this.alignPanel.paintAlignment (true);\r
-this.setStatus (jalview.util.MessageManager.getString ("label.successfully_added_features_alignment"));\r
-}return featuresFile;\r
-}, "~S,~S,~B");\r
-Clazz.overrideMethod (c$, "keyPressed", \r
-function (evt) {\r
-if (this.viewport.cursorMode && ((evt.getKeyCode () >= 48 && evt.getKeyCode () <= 57) || (evt.getKeyCode () >= 96 && evt.getKeyCode () <= 105)) && Character.isDigit (evt.getKeyChar ())) {\r
-this.alignPanel.seqPanel.numberPressed (evt.getKeyChar ());\r
-}switch (evt.getKeyCode ()) {\r
-case 27:\r
-this.deselectAllSequenceMenuItem_actionPerformed ();\r
-this.alignPanel.alabels.cancelDrag ();\r
-break;\r
-case 88:\r
-if (evt.isControlDown () || evt.isMetaDown ()) {\r
-this.cut_actionPerformed ();\r
-}break;\r
-case 67:\r
-if (this.viewport.cursorMode && !evt.isControlDown ()) {\r
-this.alignPanel.seqPanel.setCursorColumn ();\r
-}if (evt.isControlDown () || evt.isMetaDown ()) {\r
-this.copy_actionPerformed ();\r
-}break;\r
-case 86:\r
-if (evt.isControlDown ()) {\r
-this.paste (evt.isShiftDown ());\r
-}break;\r
-case 65:\r
-if (evt.isControlDown () || evt.isMetaDown ()) {\r
-this.selectAllSequenceMenuItem_actionPerformed ();\r
-}break;\r
-case 40:\r
-if (this.viewport.cursorMode) {\r
-this.alignPanel.seqPanel.moveCursor (0, 1);\r
-} else {\r
-this.moveSelectedSequences (false);\r
-}break;\r
-case 38:\r
-if (this.viewport.cursorMode) {\r
-this.alignPanel.seqPanel.moveCursor (0, -1);\r
-} else {\r
-this.moveSelectedSequences (true);\r
-}break;\r
-case 37:\r
-if (evt.isAltDown () || !this.viewport.cursorMode) {\r
-this.slideSequences (false, this.alignPanel.seqPanel.getKeyboardNo1 ());\r
-} else {\r
-this.alignPanel.seqPanel.moveCursor (-1, 0);\r
-}break;\r
-case 39:\r
-if (evt.isAltDown () || !this.viewport.cursorMode) {\r
-this.slideSequences (true, this.alignPanel.seqPanel.getKeyboardNo1 ());\r
-} else {\r
-this.alignPanel.seqPanel.moveCursor (1, 0);\r
-}break;\r
-case 32:\r
-if (this.viewport.cursorMode) {\r
-this.alignPanel.seqPanel.insertGapAtCursor (evt.isControlDown () || evt.isShiftDown () || evt.isAltDown ());\r
-}break;\r
-case 127:\r
-case 8:\r
-if (this.viewport.cursorMode) {\r
-this.alignPanel.seqPanel.deleteGapAtCursor (evt.isControlDown () || evt.isShiftDown () || evt.isAltDown ());\r
-} else {\r
-this.cut_actionPerformed ();\r
-this.alignPanel.seqPanel.seqCanvas.repaint ();\r
-}break;\r
-case 83:\r
-if (this.viewport.cursorMode) {\r
-this.alignPanel.seqPanel.setCursorRow ();\r
-}break;\r
-case 80:\r
-if (this.viewport.cursorMode) {\r
-this.alignPanel.seqPanel.setCursorPosition ();\r
-}break;\r
-case 10:\r
-case 44:\r
-if (this.viewport.cursorMode) {\r
-this.alignPanel.seqPanel.setCursorRowAndColumn ();\r
-}break;\r
-case 81:\r
-if (this.viewport.cursorMode) {\r
-this.alignPanel.seqPanel.setSelectionAreaAtCursor (true);\r
-}break;\r
-case 77:\r
-if (this.viewport.cursorMode) {\r
-this.alignPanel.seqPanel.setSelectionAreaAtCursor (false);\r
-}break;\r
-case 113:\r
-this.viewport.cursorMode = !this.viewport.cursorMode;\r
-this.setStatus (jalview.util.MessageManager.formatMessage ("label.keyboard_editing_mode",  Clazz.newArray (-1, [(this.viewport.cursorMode ? "on" : "off")])));\r
-if (this.viewport.cursorMode) {\r
-this.alignPanel.seqPanel.seqCanvas.cursorX = this.viewport.startRes;\r
-this.alignPanel.seqPanel.seqCanvas.cursorY = this.viewport.startSeq;\r
-}break;\r
-case 70:\r
-if (evt.isControlDown ()) {\r
-this.findMenuItem_actionPerformed ();\r
-}break;\r
-case 72:\r
-{\r
-var toggleSeqs = !evt.isControlDown ();\r
-var toggleCols = !evt.isShiftDown ();\r
-this.toggleHiddenRegions (toggleSeqs, toggleCols);\r
-break;\r
-}case 33:\r
-if (this.viewport.getWrapAlignment ()) {\r
-this.alignPanel.scrollUp (true);\r
-} else {\r
-this.alignPanel.setScrollValues (this.viewport.startRes, this.viewport.startSeq - this.viewport.endSeq + this.viewport.startSeq);\r
-}break;\r
-case 34:\r
-if (this.viewport.getWrapAlignment ()) {\r
-this.alignPanel.scrollUp (false);\r
-} else {\r
-this.alignPanel.setScrollValues (this.viewport.startRes, this.viewport.startSeq + this.viewport.endSeq - this.viewport.startSeq);\r
-}break;\r
-case 90:\r
-if (evt.isControlDown ()) {\r
-this.undoMenuItem_actionPerformed ();\r
-}break;\r
-case 89:\r
-if (evt.isControlDown ()) {\r
-this.redoMenuItem_actionPerformed ();\r
-}break;\r
-case 76:\r
-if (evt.isControlDown ()) {\r
-this.trimAlignment (true);\r
-}break;\r
-case 82:\r
-if (evt.isControlDown ()) {\r
-this.trimAlignment (false);\r
-}break;\r
-case 69:\r
-if (evt.isControlDown ()) {\r
-if (evt.isShiftDown ()) {\r
-this.removeAllGapsMenuItem_actionPerformed ();\r
-} else {\r
-this.removeGappedColumnMenuItem_actionPerformed ();\r
-}}break;\r
-case 73:\r
-if (evt.isControlDown ()) {\r
-if (evt.isAltDown ()) {\r
-this.invertColSel_actionPerformed ();\r
-} else {\r
-this.invertSequenceMenuItem_actionPerformed ();\r
-}}break;\r
-case 71:\r
-if (evt.isControlDown ()) {\r
-if (evt.isShiftDown ()) {\r
-this.unGroup_actionPerformed ();\r
-} else {\r
-this.createGroup_actionPerformed ();\r
-}}break;\r
-case 85:\r
-if (evt.isControlDown ()) {\r
-this.deleteGroups_actionPerformed ();\r
-}break;\r
-case 84:\r
-if (evt.isControlDown ()) {\r
-this.newView (null);\r
-}break;\r
-}\r
-this.alignPanel.paintAlignment (true);\r
-}, "java.awt.event.KeyEvent");\r
-Clazz.defineMethod (c$, "toggleHiddenRegions", \r
-($fz = function (toggleSeqs, toggleCols) {\r
-var hide = false;\r
-var sg = this.viewport.getSelectionGroup ();\r
-if (!toggleSeqs && !toggleCols) {\r
-if ((this.viewport.getColumnSelection () != null && this.viewport.getColumnSelection ().getSelected () != null && this.viewport.getColumnSelection ().getSelected ().size () > 0) || (sg != null && sg.getSize () > 0 && sg.getStartRes () <= sg.getEndRes ())) {\r
-if (sg != null) {\r
-this.invertSequenceMenuItem_actionPerformed ();\r
-sg = this.viewport.getSelectionGroup ();\r
-toggleSeqs = true;\r
-}this.viewport.expandColSelection (sg, true);\r
-this.invertColSel_actionPerformed ();\r
-toggleCols = true;\r
-}}if (toggleSeqs) {\r
-if (sg != null && sg.getSize () != this.viewport.getAlignment ().getHeight ()) {\r
-hide = true;\r
-this.viewport.hideAllSelectedSeqs ();\r
-} else if (!(toggleCols && this.viewport.getColumnSelection ().getSelected ().size () > 0)) {\r
-this.viewport.showAllHiddenSeqs ();\r
-}}if (toggleCols) {\r
-if (this.viewport.getColumnSelection ().getSelected ().size () > 0) {\r
-this.viewport.hideSelectedColumns ();\r
-if (!toggleSeqs) {\r
-this.viewport.setSelectionGroup (sg);\r
-}} else if (!hide) {\r
-this.viewport.showAllHiddenColumns ();\r
-}}}, $fz.isPrivate = true, $fz), "~B,~B");\r
-Clazz.overrideMethod (c$, "keyReleased", \r
-function (evt) {\r
-}, "java.awt.event.KeyEvent");\r
-Clazz.overrideMethod (c$, "keyTyped", \r
-function (evt) {\r
-}, "java.awt.event.KeyEvent");\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (evt) {\r
-var source = evt.getSource ();\r
-if (source === this.displayNonconservedMenuItem) {\r
-this.displayNonconservedMenuItem_actionPerformed ();\r
-} else if (source === this.colourTextMenuItem) {\r
-this.colourTextMenuItem_actionPerformed ();\r
-} else if (source === this.wrapMenuItem) {\r
-this.wrapMenuItem_actionPerformed ();\r
-} else if (source === this.scaleAbove) {\r
-this.viewport.setScaleAboveWrapped (this.scaleAbove.getState ());\r
-} else if (source === this.scaleLeft) {\r
-this.viewport.setScaleLeftWrapped (this.scaleLeft.getState ());\r
-} else if (source === this.scaleRight) {\r
-this.viewport.setScaleRightWrapped (this.scaleRight.getState ());\r
-} else if (source === this.seqLimits) {\r
-this.seqLimits_itemStateChanged ();\r
-} else if (source === this.viewBoxesMenuItem) {\r
-this.viewport.setShowBoxes (this.viewBoxesMenuItem.getState ());\r
-} else if (source === this.viewTextMenuItem) {\r
-this.viewport.setShowText (this.viewTextMenuItem.getState ());\r
-} else if (source === this.renderGapsMenuItem) {\r
-this.viewport.setRenderGaps (this.renderGapsMenuItem.getState ());\r
-} else if (source === this.annotationPanelMenuItem) {\r
-this.viewport.setShowAnnotation (this.annotationPanelMenuItem.getState ());\r
-this.alignPanel.setAnnotationVisible (this.annotationPanelMenuItem.getState ());\r
-} else if (source === this.sequenceFeatures) {\r
-this.viewport.setShowSequenceFeatures (this.sequenceFeatures.getState ());\r
-this.alignPanel.seqPanel.seqCanvas.repaint ();\r
-} else if (source === this.showAlignmentAnnotations) {\r
-this.setAnnotationsVisibility ();\r
-} else if (source === this.showSequenceAnnotations) {\r
-this.setAnnotationsVisibility ();\r
-} else if (source === this.sortAnnBySequence) {\r
-var newState = this.sortAnnBySequence.getState ();\r
-this.sortAnnByLabel.setState (false);\r
-this.setAnnotationSortOrder (newState ? jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.SEQUENCE_AND_LABEL : jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE);\r
-this.setViewportAnnotationOrder ();\r
-} else if (source === this.sortAnnByLabel) {\r
-var newState = this.sortAnnByLabel.getState ();\r
-this.sortAnnBySequence.setState (false);\r
-this.setAnnotationSortOrder (newState ? jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.LABEL_AND_SEQUENCE : jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE);\r
-this.setViewportAnnotationOrder ();\r
-} else if (source === this.showAutoFirst) {\r
-this.showAutoLast.setState (!this.showAutoFirst.getState ());\r
-this.setShowAutoCalculatedAbove (this.showAutoFirst.getState ());\r
-this.setViewportAnnotationOrder ();\r
-} else if (source === this.showAutoLast) {\r
-this.showAutoFirst.setState (!this.showAutoLast.getState ());\r
-this.setShowAutoCalculatedAbove (this.showAutoFirst.getState ());\r
-this.setViewportAnnotationOrder ();\r
-} else if (source === this.conservationMenuItem) {\r
-this.conservationMenuItem_actionPerformed ();\r
-} else if (source === this.abovePIDThreshold) {\r
-this.abovePIDThreshold_actionPerformed ();\r
-} else if (source === this.applyToAllGroups) {\r
-this.viewport.setColourAppliesToAllGroups (this.applyToAllGroups.getState ());\r
-} else if (source === this.autoCalculate) {\r
-this.viewport.autoCalculateConsensus = this.autoCalculate.getState ();\r
-} else if (source === this.$sortByTree) {\r
-this.viewport.sortByTree = this.$sortByTree.getState ();\r
-} else if (source === this.centreColumnLabelFlag) {\r
-this.centreColumnLabelFlag_stateChanged ();\r
-} else if (source === this.followMouseOverFlag) {\r
-this.mouseOverFlag_stateChanged ();\r
-} else if (source === this.showGroupConsensus) {\r
-this.showGroupConsensus_actionPerformed ();\r
-} else if (source === this.showGroupConservation) {\r
-this.showGroupConservation_actionPerformed ();\r
-} else if (source === this.showSequenceLogo) {\r
-this.showSequenceLogo_actionPerformed ();\r
-} else if (source === this.normSequenceLogo) {\r
-this.normSequenceLogo_actionPerformed ();\r
-} else if (source === this.showConsensusHistogram) {\r
-this.showConsensusHistogram_actionPerformed ();\r
-} else if (source === this.applyAutoAnnotationSettings) {\r
-this.applyAutoAnnotationSettings_actionPerformed ();\r
-}this.alignPanel.paintAlignment (true);\r
-}, "java.awt.event.ItemEvent");\r
-Clazz.defineMethod (c$, "setAnnotationsVisibility", \r
-($fz = function () {\r
-var showForAlignment = this.showAlignmentAnnotations.getState ();\r
-var showForSequences = this.showSequenceAnnotations.getState ();\r
-for (var aa, $aa = 0, $$aa = this.alignPanel.getAlignment ().getAlignmentAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {\r
-var visible = (aa.sequenceRef == null ? showForAlignment : showForSequences);\r
-aa.visible = visible;\r
-}\r
-this.alignPanel.validateAnnotationDimensions (true);\r
-this.validate ();\r
-this.repaint ();\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "setAnnotationSortOrder", \r
-($fz = function (order) {\r
-this.annotationSortOrder = order;\r
-}, $fz.isPrivate = true, $fz), "jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");\r
-Clazz.defineMethod (c$, "setViewportAnnotationOrder", \r
-($fz = function () {\r
-this.alignPanel.av.setSortAnnotationsBy (this.annotationSortOrder);\r
-this.alignPanel.av.setShowAutocalculatedAbove (this.showAutoCalculatedAbove);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "setShowAutoCalculatedAbove", \r
-($fz = function (showAbove) {\r
-this.showAutoCalculatedAbove = showAbove;\r
-}, $fz.isPrivate = true, $fz), "~B");\r
-Clazz.defineMethod (c$, "mouseOverFlag_stateChanged", \r
-($fz = function () {\r
-this.viewport.setFollowHighlight (this.followMouseOverFlag.getState ());\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "centreColumnLabelFlag_stateChanged", \r
-($fz = function () {\r
-this.viewport.centreColumnLabels = this.centreColumnLabelFlag.getState ();\r
-this.alignPanel.annotationPanel.repaint ();\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-var source = evt.getSource ();\r
-if (source === this.inputText) {\r
-this.inputText_actionPerformed ();\r
-} else if (source === this.$loadTree) {\r
-this.loadTree_actionPerformed ();\r
-} else if (source === this.loadApplication) {\r
-this.launchFullApplication ();\r
-} else if (source === this.$loadAnnotations) {\r
-this.loadAnnotations ();\r
-} else if (source === this.$outputAnnotations) {\r
-this.outputAnnotations (true);\r
-} else if (source === this.$outputFeatures) {\r
-this.outputFeatures (true, "Jalview");\r
-} else if (source === this.closeMenuItem) {\r
-this.closeMenuItem_actionPerformed ();\r
-} else if (source === this.copy) {\r
-this.copy_actionPerformed ();\r
-} else if (source === this.undoMenuItem) {\r
-this.undoMenuItem_actionPerformed ();\r
-} else if (source === this.redoMenuItem) {\r
-this.redoMenuItem_actionPerformed ();\r
-} else if (source === this.inputText) {\r
-this.inputText_actionPerformed ();\r
-} else if (source === this.closeMenuItem) {\r
-this.closeMenuItem_actionPerformed ();\r
-} else if (source === this.undoMenuItem) {\r
-this.undoMenuItem_actionPerformed ();\r
-} else if (source === this.redoMenuItem) {\r
-this.redoMenuItem_actionPerformed ();\r
-} else if (source === this.copy) {\r
-this.copy_actionPerformed ();\r
-} else if (source === this.pasteNew) {\r
-this.pasteNew_actionPerformed ();\r
-} else if (source === this.pasteThis) {\r
-this.pasteThis_actionPerformed ();\r
-} else if (source === this.cut) {\r
-this.cut_actionPerformed ();\r
-} else if (source === this.$delete) {\r
-this.delete_actionPerformed ();\r
-} else if (source === this.grpsFromSelection) {\r
-this.makeGrpsFromSelection_actionPerformed ();\r
-} else if (source === this.deleteGroups) {\r
-this.deleteGroups_actionPerformed ();\r
-} else if (source === this.selectAllSequenceMenuItem) {\r
-this.selectAllSequenceMenuItem_actionPerformed ();\r
-} else if (source === this.deselectAllSequenceMenuItem) {\r
-this.deselectAllSequenceMenuItem_actionPerformed ();\r
-} else if (source === this.invertSequenceMenuItem) {\r
-this.invertSequenceMenuItem_actionPerformed ();\r
-} else if (source === this.invertColSel) {\r
-this.viewport.invertColumnSelection ();\r
-this.alignPanel.paintAlignment (true);\r
-} else if (source === this.remove2LeftMenuItem) {\r
-this.trimAlignment (true);\r
-} else if (source === this.remove2RightMenuItem) {\r
-this.trimAlignment (false);\r
-} else if (source === this.removeGappedColumnMenuItem) {\r
-this.removeGappedColumnMenuItem_actionPerformed ();\r
-} else if (source === this.removeAllGapsMenuItem) {\r
-this.removeAllGapsMenuItem_actionPerformed ();\r
-} else if (source === this.findMenuItem) {\r
-this.findMenuItem_actionPerformed ();\r
-} else if (source === this.$font) {\r
- new jalview.appletgui.FontChooser (this.alignPanel);\r
-} else if (source === this.$newView) {\r
-this.newView (null);\r
-} else if (source === this.showColumns) {\r
-this.viewport.showAllHiddenColumns ();\r
-this.alignPanel.paintAlignment (true);\r
-} else if (source === this.showSeqs) {\r
-this.viewport.showAllHiddenSeqs ();\r
-this.alignPanel.paintAlignment (true);\r
-} else if (source === this.hideColumns) {\r
-this.viewport.hideSelectedColumns ();\r
-this.alignPanel.paintAlignment (true);\r
-} else if (source === this.hideSequences && this.viewport.getSelectionGroup () != null) {\r
-this.viewport.hideAllSelectedSeqs ();\r
-this.alignPanel.paintAlignment (true);\r
-} else if (source === this.hideAllButSelection) {\r
-this.toggleHiddenRegions (false, false);\r
-this.alignPanel.paintAlignment (true);\r
-} else if (source === this.hideAllSelection) {\r
-var sg = this.viewport.getSelectionGroup ();\r
-this.viewport.expandColSelection (sg, false);\r
-this.viewport.hideAllSelectedSeqs ();\r
-this.viewport.hideSelectedColumns ();\r
-this.alignPanel.paintAlignment (true);\r
-} else if (source === this.showAllHidden) {\r
-this.viewport.showAllHiddenColumns ();\r
-this.viewport.showAllHiddenSeqs ();\r
-this.alignPanel.paintAlignment (true);\r
-} else if (source === this.showGroupConsensus) {\r
-this.showGroupConsensus_actionPerformed ();\r
-} else if (source === this.showGroupConservation) {\r
-this.showGroupConservation_actionPerformed ();\r
-} else if (source === this.showSequenceLogo) {\r
-this.showSequenceLogo_actionPerformed ();\r
-} else if (source === this.normSequenceLogo) {\r
-this.normSequenceLogo_actionPerformed ();\r
-} else if (source === this.showConsensusHistogram) {\r
-this.showConsensusHistogram_actionPerformed ();\r
-} else if (source === this.applyAutoAnnotationSettings) {\r
-this.applyAutoAnnotationSettings_actionPerformed ();\r
-} else if (source === this.featureSettings) {\r
- new jalview.appletgui.FeatureSettings (this.alignPanel);\r
-} else if (source === this.alProperties) {\r
-var contents =  new jalview.io.AlignmentProperties (this.viewport.getAlignment ()).formatAsString ();\r
-var cap =  new jalview.appletgui.CutAndPasteTransfer (false, this);\r
-cap.setText (contents.toString ());\r
-var frame =  new awt2swing.Frame ();\r
-frame.add (cap);\r
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.alignment_properties",  Clazz.newArray (-1, [this.getTitle ()])), 400, 250);\r
-} else if (source === this.overviewMenuItem) {\r
-this.overviewMenuItem_actionPerformed ();\r
-} else if (source === this.noColourmenuItem) {\r
-this.changeColour (null);\r
-} else if (source === this.clustalColour) {\r
-this.abovePIDThreshold.setState (false);\r
-this.changeColour ( new jalview.schemes.ClustalxColourScheme (this.viewport.getAlignment (), null));\r
-} else if (source === this.zappoColour) {\r
-this.changeColour ( new jalview.schemes.ZappoColourScheme ());\r
-} else if (source === this.taylorColour) {\r
-this.changeColour ( new jalview.schemes.TaylorColourScheme ());\r
-} else if (source === this.hydrophobicityColour) {\r
-this.changeColour ( new jalview.schemes.HydrophobicColourScheme ());\r
-} else if (source === this.helixColour) {\r
-this.changeColour ( new jalview.schemes.HelixColourScheme ());\r
-} else if (source === this.strandColour) {\r
-this.changeColour ( new jalview.schemes.StrandColourScheme ());\r
-} else if (source === this.turnColour) {\r
-this.changeColour ( new jalview.schemes.TurnColourScheme ());\r
-} else if (source === this.buriedColour) {\r
-this.changeColour ( new jalview.schemes.BuriedColourScheme ());\r
-} else if (source === this.nucleotideColour) {\r
-this.changeColour ( new jalview.schemes.NucleotideColourScheme ());\r
-} else if (source === this.purinePyrimidineColour) {\r
-this.changeColour ( new jalview.schemes.PurinePyrimidineColourScheme ());\r
-} else if (source === this.RNAInteractionColour) {\r
-this.changeColour ( new jalview.schemes.RNAInteractionColourScheme ());\r
-} else if (source === this.RNAHelixColour) {\r
- new jalview.schemes.RNAHelicesColourChooser (this.viewport, this.alignPanel);\r
-} else if (source === this.modifyPID) {\r
-this.modifyPID_actionPerformed ();\r
-} else if (source === this.modifyConservation) {\r
-this.modifyConservation_actionPerformed ();\r
-} else if (source === this.userDefinedColour) {\r
- new jalview.appletgui.UserDefinedColours (this.alignPanel, null);\r
-} else if (source === this.PIDColour) {\r
-this.changeColour ( new jalview.schemes.PIDColourScheme ());\r
-} else if (source === this.BLOSUM62Colour) {\r
-this.changeColour ( new jalview.schemes.Blosum62ColourScheme ());\r
-} else if (source === this.tcoffeeColour) {\r
-this.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignPanel.getAlignment ()));\r
-} else if (source === this.annotationColour) {\r
- new jalview.appletgui.AnnotationColourChooser (this.viewport, this.alignPanel);\r
-} else if (source === this.annotationColumnSelection) {\r
- new jalview.appletgui.AnnotationColumnChooser (this.viewport, this.alignPanel);\r
-} else if (source === this.sortPairwiseMenuItem) {\r
-this.sortPairwiseMenuItem_actionPerformed ();\r
-} else if (source === this.sortIDMenuItem) {\r
-this.sortIDMenuItem_actionPerformed ();\r
-} else if (source === this.sortLengthMenuItem) {\r
-this.sortLengthMenuItem_actionPerformed ();\r
-} else if (source === this.sortGroupMenuItem) {\r
-this.sortGroupMenuItem_actionPerformed ();\r
-} else if (source === this.removeRedundancyMenuItem) {\r
-this.removeRedundancyMenuItem_actionPerformed ();\r
-} else if (source === this.pairwiseAlignmentMenuItem) {\r
-this.pairwiseAlignmentMenuItem_actionPerformed ();\r
-} else if (source === this.PCAMenuItem) {\r
-this.PCAMenuItem_actionPerformed ();\r
-} else if (source === this.averageDistanceTreeMenuItem) {\r
-this.averageDistanceTreeMenuItem_actionPerformed ();\r
-} else if (source === this.neighbourTreeMenuItem) {\r
-this.neighbourTreeMenuItem_actionPerformed ();\r
-} else if (source === this.njTreeBlosumMenuItem) {\r
-this.njTreeBlosumMenuItem_actionPerformed ();\r
-} else if (source === this.avDistanceTreeBlosumMenuItem) {\r
-this.avTreeBlosumMenuItem_actionPerformed ();\r
-} else if (source === this.documentation) {\r
-this.documentation_actionPerformed ();\r
-} else if (source === this.about) {\r
-this.about_actionPerformed ();\r
-}}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "inputText_actionPerformed", \r
-function () {\r
-var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this);\r
-var frame =  new awt2swing.Frame ();\r
-frame.add (cap);\r
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.input_cut_paste"), 500, 500);\r
-});\r
-Clazz.defineMethod (c$, "outputText_actionPerformed", \r
-function (e) {\r
-var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this);\r
-var frame =  new awt2swing.Frame ();\r
-frame.add (cap);\r
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.alignment_output_command",  Clazz.newArray (-1, [e.getActionCommand ()])), 600, 500);\r
-var fr = this.alignPanel.cloneFeatureRenderer ();\r
-cap.setText ( new jalview.io.AppletFormatAdapter (this.alignPanel).formatSequences (e.getActionCommand (), this.viewport.getAlignment (), this.viewport.getShowJVSuffix ()));\r
-}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "loadAnnotations", \r
-function () {\r
-var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this);\r
-cap.setText (jalview.util.MessageManager.getString ("label.paste_features_annotations_Tcoffee_here"));\r
-cap.setAnnotationImport ();\r
-var frame =  new awt2swing.Frame ();\r
-frame.add (cap);\r
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("action.paste_annotations"), 400, 300);\r
-});\r
-Clazz.defineMethod (c$, "outputAnnotations", \r
-function (displayTextbox) {\r
-var annotation =  new jalview.io.AnnotationFile ().printAnnotationsForView (this.viewport);\r
-if (displayTextbox) {\r
-var cap =  new jalview.appletgui.CutAndPasteTransfer (false, this);\r
-var frame =  new awt2swing.Frame ();\r
-frame.add (cap);\r
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.annotations"), 600, 500);\r
-cap.setText (annotation);\r
-}return annotation;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getDisplayedFeatureCols", \r
-($fz = function () {\r
-if (this.alignPanel.getFeatureRenderer () != null && this.viewport.getFeaturesDisplayed () != null) {\r
-return this.alignPanel.getFeatureRenderer ().getDisplayedFeatureCols ();\r
-}return null;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "outputFeatures", \r
-function (displayTextbox, format) {\r
-var features;\r
-if (format.equalsIgnoreCase ("Jalview")) {\r
-features =  new jalview.io.FeaturesFile ().printJalviewFormat (this.viewport.getAlignment ().getSequencesArray (), this.getDisplayedFeatureCols ());\r
-} else {\r
-features =  new jalview.io.FeaturesFile ().printGFFFormat (this.viewport.getAlignment ().getSequencesArray (), this.getDisplayedFeatureCols ());\r
-}if (displayTextbox) {\r
-var frimport = false;\r
-if (features == null || features.equals ("No Features Visible")) {\r
-features = "# No features visible - paste some and import them here.";\r
-frimport = true;\r
-}var cap =  new jalview.appletgui.CutAndPasteTransfer (frimport, this);\r
-if (frimport) {\r
-cap.setAnnotationImport ();\r
-}var frame =  new awt2swing.Frame ();\r
-frame.add (cap);\r
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.features"), 600, 500);\r
-cap.setText (features);\r
-} else {\r
-if (features == null) {\r
-features = "";\r
-}}return features;\r
-}, "~B,~S");\r
-Clazz.defineMethod (c$, "launchFullApplication", \r
-function () {\r
-var url =  new StringBuffer (this.jalviewServletURL);\r
-var firstSep = url.lastIndexOf ("?") > url.lastIndexOf ("/") ? "&" : "?";\r
-url.append (firstSep);\r
-var applet = this.viewport.applet;\r
-var s = applet.startupFile;\r
-url.append ("open=" + this.appendProtocol (s));\r
-if (this.viewport.applet.features != null) {\r
-url.append ("&features=");\r
-url.append (this.appendProtocol (applet.features));\r
-}if (applet.annotations != null) {\r
-url.append ("&annotations=");\r
-url.append (this.appendProtocol (applet.annotations));\r
-}if (applet.jnetFile != null) {\r
-url.append ("&annotations=");\r
-url.append (this.appendProtocol (applet.jnetFile));\r
-}if (applet.defaultColour != null) {\r
-url.append ("&colour=" + this.removeWhiteSpace (applet.defaultColour));\r
-}if (applet.userDefinedColour != null) {\r
-url.append ("&colour=" + this.removeWhiteSpace (applet.userDefinedColour));\r
-}if (applet.treeFile != null) {\r
-url.append ("&tree=" + this.appendProtocol (applet.treeFile));\r
-}this.showURL (url.toString (), "FULL_APP");\r
-});\r
-Clazz.defineMethod (c$, "removeWhiteSpace", \r
-function (colour) {\r
-var sb =  new StringBuffer ();\r
-for (var i = 0; i < colour.length; i++) {\r
-if (Character.isWhitespace (colour.charAt (i))) {\r
-sb.append ("%20");\r
-} else {\r
-sb.append (colour.charAt (i));\r
-}}\r
-return sb.toString ();\r
-}, "~S");\r
-Clazz.defineMethod (c$, "appendProtocol", \r
-function (url) {\r
-try {\r
- new java.net.URL (url);\r
-url = java.net.URLEncoder.encode (url);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, java.net.MalformedURLException)) {\r
-url = this.viewport.applet.getCodeBase () + url;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-return url;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "closeMenuItem_actionPerformed", \r
-function () {\r
-jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel);\r
-if (this.alignPanel.seqPanel != null && this.alignPanel.seqPanel.seqCanvas != null) {\r
-jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel.seqPanel.seqCanvas);\r
-}if (this.alignPanel.idPanel != null && this.alignPanel.idPanel.idCanvas != null) {\r
-jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel.idPanel.idCanvas);\r
-}if (jalview.appletgui.PaintRefresher.components.size () == 0 && this.viewport.applet == null) {\r
-System.exit (0);\r
-} else {\r
-}this.viewport = null;\r
-this.alignPanel = null;\r
-this.dispose ();\r
-});\r
-Clazz.defineMethod (c$, "updateEditMenuBar", \r
-function () {\r
-if (this.viewport.getHistoryList ().size () > 0) {\r
-this.undoMenuItem.setEnabled (true);\r
-var command = this.viewport.getHistoryList ().peek ();\r
-this.undoMenuItem.setLabel (jalview.util.MessageManager.formatMessage ("label.undo_command",  Clazz.newArray (-1, [command.getDescription ()])));\r
-} else {\r
-this.undoMenuItem.setEnabled (false);\r
-this.undoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.undo"));\r
-}if (this.viewport.getRedoList ().size () > 0) {\r
-this.redoMenuItem.setEnabled (true);\r
-var command = this.viewport.getRedoList ().peek ();\r
-this.redoMenuItem.setLabel (jalview.util.MessageManager.formatMessage ("label.redo_command",  Clazz.newArray (-1, [command.getDescription ()])));\r
-} else {\r
-this.redoMenuItem.setEnabled (false);\r
-this.redoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.redo"));\r
-}});\r
-Clazz.overrideMethod (c$, "addHistoryItem", \r
-function (command) {\r
-if (command.getSize () > 0) {\r
-this.viewport.addToHistoryList (command);\r
-this.viewport.clearRedoList ();\r
-this.updateEditMenuBar ();\r
-this.viewport.updateHiddenColumns ();\r
-}}, "jalview.commands.CommandI");\r
-Clazz.defineMethod (c$, "undoMenuItem_actionPerformed", \r
-function () {\r
-if (this.viewport.getHistoryList ().isEmpty ()) {\r
-return;\r
-}var command = this.viewport.getHistoryList ().pop ();\r
-this.viewport.addToRedoList (command);\r
-command.undoCommand (null);\r
-var originalSource = this.getOriginatingSource (command);\r
-if (originalSource !== this.viewport) {\r
-System.err.println ("Warning: Viewport object mismatch whilst undoing");\r
-}originalSource.updateHiddenColumns ();\r
-this.updateEditMenuBar ();\r
-originalSource.firePropertyChange ("alignment", null, originalSource.getAlignment ().getSequences ());\r
-});\r
-Clazz.defineMethod (c$, "redoMenuItem_actionPerformed", \r
-function () {\r
-if (this.viewport.getRedoList ().isEmpty ()) {\r
-return;\r
-}var command = this.viewport.getRedoList ().pop ();\r
-this.viewport.addToHistoryList (command);\r
-command.doCommand (null);\r
-var originalSource = this.getOriginatingSource (command);\r
-if (originalSource !== this.viewport) {\r
-System.err.println ("Warning: Viewport object mismatch whilst re-doing");\r
-}originalSource.updateHiddenColumns ();\r
-this.updateEditMenuBar ();\r
-originalSource.firePropertyChange ("alignment", null, originalSource.getAlignment ().getSequences ());\r
-});\r
-Clazz.defineMethod (c$, "getOriginatingSource", \r
-function (command) {\r
-var originalSource = null;\r
-var al = null;\r
-if (Clazz.instanceOf (command, jalview.commands.EditCommand)) {\r
-var editCommand = command;\r
-al = editCommand.getAlignment ();\r
-var comps = jalview.appletgui.PaintRefresher.components.get (this.viewport.getSequenceSetId ());\r
-for (var i = 0; i < comps.size (); i++) {\r
-if (Clazz.instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {\r
-if (al === (comps.elementAt (i)).av.getAlignment ()) {\r
-originalSource = (comps.elementAt (i)).av;\r
-break;\r
-}}}\r
-}if (originalSource == null) {\r
-if (al != null) {\r
-jalview.appletgui.PaintRefresher.validateSequences (al, this.viewport.getAlignment ());\r
-}originalSource = this.viewport;\r
-}return originalSource;\r
-}, "jalview.commands.CommandI");\r
-Clazz.defineMethod (c$, "moveSelectedSequences", \r
-function (up) {\r
-var sg = this.viewport.getSelectionGroup ();\r
-if (sg == null) {\r
-return;\r
-}this.viewport.getAlignment ().moveSelectedSequencesByOne (sg, up ? null : this.viewport.getHiddenRepSequences (), up);\r
-this.alignPanel.paintAlignment (true);\r
-var complement = this.viewport.getCodingComplement ();\r
-if (complement != null) {\r
-var mappedSelection = jalview.util.MappingUtils.mapSequenceGroup (sg, this.viewport, complement);\r
-complement.getAlignment ().moveSelectedSequencesByOne (mappedSelection, up ? null : complement.getHiddenRepSequences (), up);\r
-}}, "~B");\r
-Clazz.defineMethod (c$, "slideSequences", \r
-function (right, size) {\r
-var sg =  new java.util.Vector ();\r
-if (this.viewport.cursorMode) {\r
-sg.add (this.viewport.getAlignment ().getSequenceAt (this.alignPanel.seqPanel.seqCanvas.cursorY));\r
-} else if (this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () != this.viewport.getAlignment ().getHeight ()) {\r
-sg = this.viewport.getSelectionGroup ().getSequences (this.viewport.getHiddenRepSequences ());\r
-}if (sg.size () < 1) {\r
-return;\r
-}var invertGroup =  new java.util.Vector ();\r
-for (var i = 0; i < this.viewport.getAlignment ().getHeight (); i++) {\r
-if (!sg.contains (this.viewport.getAlignment ().getSequenceAt (i))) {\r
-invertGroup.addElement (this.viewport.getAlignment ().getSequenceAt (i));\r
-}}\r
-var seqs1 = sg.toArray ( new Array (sg.size ()));\r
-var seqs2 = invertGroup.toArray ( new Array (invertGroup.size ()));\r
-for (var i = 0; i < invertGroup.size (); i++) {\r
-seqs2[i] = invertGroup.elementAt (i);\r
-}\r
-var ssc;\r
-if (right) {\r
-ssc =  new jalview.commands.SlideSequencesCommand ("Slide Sequences", seqs2, seqs1, size, this.viewport.getGapCharacter ());\r
-} else {\r
-ssc =  new jalview.commands.SlideSequencesCommand ("Slide Sequences", seqs1, seqs2, size, this.viewport.getGapCharacter ());\r
-}var groupAdjustment = 0;\r
-if (ssc.getGapsInsertedBegin () && right) {\r
-if (this.viewport.cursorMode) {\r
-this.alignPanel.seqPanel.moveCursor (size, 0);\r
-} else {\r
-groupAdjustment = size;\r
-}} else if (!ssc.getGapsInsertedBegin () && !right) {\r
-if (this.viewport.cursorMode) {\r
-this.alignPanel.seqPanel.moveCursor (-size, 0);\r
-} else {\r
-groupAdjustment = -size;\r
-}}if (groupAdjustment != 0) {\r
-this.viewport.getSelectionGroup ().setStartRes (this.viewport.getSelectionGroup ().getStartRes () + groupAdjustment);\r
-this.viewport.getSelectionGroup ().setEndRes (this.viewport.getSelectionGroup ().getEndRes () + groupAdjustment);\r
-}var appendHistoryItem = false;\r
-var historyList = this.viewport.getHistoryList ();\r
-if (historyList != null && historyList.size () > 0 && Clazz.instanceOf (historyList.peek (), jalview.commands.SlideSequencesCommand)) {\r
-appendHistoryItem = ssc.appendSlideCommand (historyList.peek ());\r
-}if (!appendHistoryItem) {\r
-this.addHistoryItem (ssc);\r
-}this.repaint ();\r
-}, "~B,~N");\r
-Clazz.defineMethod (c$, "copy_actionPerformed", \r
-function () {\r
-if (this.viewport.getSelectionGroup () == null) {\r
-return;\r
-}var sg = this.viewport.getSelectionGroup ();\r
-jalview.appletgui.AlignFrame.copiedSequences =  new StringBuffer ();\r
-var orderedSeqs =  new java.util.HashMap ();\r
-for (var i = 0; i < sg.getSize (); i++) {\r
-var seq = sg.getSequenceAt (i);\r
-var index = this.viewport.getAlignment ().findIndex (seq);\r
-orderedSeqs.put (new Integer (index), seq);\r
-}\r
-var index = 0;\r
-var startRes;\r
-var endRes;\r
-var ch;\r
-if (this.viewport.hasHiddenColumns () && this.viewport.getSelectionGroup () != null) {\r
-jalview.appletgui.AlignFrame.copiedHiddenColumns =  new java.util.Vector ();\r
-var hiddenOffset = this.viewport.getSelectionGroup ().getStartRes ();\r
-for (var region, $region = this.viewport.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {\r
-jalview.appletgui.AlignFrame.copiedHiddenColumns.addElement ( Clazz.newIntArray (-1, [region[0] - hiddenOffset, region[1] - hiddenOffset]));\r
-}\r
-} else {\r
-jalview.appletgui.AlignFrame.copiedHiddenColumns = null;\r
-}for (var i = 0; i < sg.getSize (); i++) {\r
-var seq = null;\r
-while (seq == null) {\r
-if (orderedSeqs.containsKey (new Integer (index))) {\r
-seq = orderedSeqs.get (new Integer (index));\r
-index++;\r
-break;\r
-} else {\r
-index++;\r
-}}\r
-startRes = seq.findPosition (sg.getStartRes ());\r
-endRes = 0;\r
-for (var j = 0; j < sg.getEndRes () + 1 && j < seq.getLength (); j++) {\r
-ch = seq.getCharAt (j);\r
-if (!jalview.util.Comparison.isGap ((ch))) {\r
-endRes++;\r
-}}\r
-if (endRes > 0) {\r
-endRes += seq.getStart () - 1;\r
-}jalview.appletgui.AlignFrame.copiedSequences.append (seq.getName () + "\t" + startRes + "\t" + endRes + "\t" + seq.getSequenceAsString (sg.getStartRes (), sg.getEndRes () + 1) + "\n");\r
-}\r
-});\r
-Clazz.defineMethod (c$, "pasteNew_actionPerformed", \r
-function () {\r
-this.paste (true);\r
-});\r
-Clazz.defineMethod (c$, "pasteThis_actionPerformed", \r
-function () {\r
-this.paste (false);\r
-});\r
-Clazz.defineMethod (c$, "paste", \r
-function (newAlignment) {\r
-try {\r
-if (jalview.appletgui.AlignFrame.copiedSequences == null) {\r
-return;\r
-}var st =  new java.util.StringTokenizer (jalview.appletgui.AlignFrame.copiedSequences.toString ());\r
-var seqs =  new java.util.Vector ();\r
-while (st.hasMoreElements ()) {\r
-var name = st.nextToken ();\r
-var start = Integer.parseInt (st.nextToken ());\r
-var end = Integer.parseInt (st.nextToken ());\r
-seqs.addElement ( new jalview.datamodel.Sequence (name, st.nextToken (), start, end));\r
-}\r
-var newSeqs =  new Array (seqs.size ());\r
-for (var i = 0; i < seqs.size (); i++) {\r
-newSeqs[i] = seqs.elementAt (i);\r
-}\r
-if (newAlignment) {\r
-var newtitle = jalview.util.MessageManager.getString ("label.copied_sequences");\r
-if (this.getTitle ().startsWith (jalview.util.MessageManager.getString ("label.copied_sequences"))) {\r
-newtitle = this.getTitle ();\r
-} else {\r
-newtitle = newtitle.concat (jalview.util.MessageManager.formatMessage ("label.from_msname",  Clazz.newArray (-1, [this.getTitle ()])));\r
-}var af =  new jalview.appletgui.AlignFrame ( new jalview.datamodel.Alignment (newSeqs), this.viewport.applet, newtitle, false);\r
-if (jalview.appletgui.AlignFrame.copiedHiddenColumns != null) {\r
-for (var i = 0; i < jalview.appletgui.AlignFrame.copiedHiddenColumns.size (); i++) {\r
-var region = jalview.appletgui.AlignFrame.copiedHiddenColumns.elementAt (i);\r
-af.viewport.hideColumns (region[0], region[1]);\r
-}\r
-}jalview.bin.JalviewLite.addFrame (af, newtitle, this.frameWidth, this.frameHeight);\r
-} else {\r
-this.addSequences (newSeqs);\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}, "~B");\r
-Clazz.defineMethod (c$, "addSequences", \r
-function (seqs) {\r
-for (var i = 0; i < seqs.length; i++) {\r
-this.viewport.getAlignment ().addSequence (seqs[i]);\r
-}\r
-this.addHistoryItem ( new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("label.add_sequences"), jalview.commands.EditCommand.Action.PASTE, seqs, 0, this.viewport.getAlignment ().getWidth (), this.viewport.getAlignment ()));\r
-this.viewport.setEndSeq (this.viewport.getAlignment ().getHeight ());\r
-this.viewport.getAlignment ().getWidth ();\r
-this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());\r
-}, "~A");\r
-Clazz.defineMethod (c$, "cut_actionPerformed", \r
-function () {\r
-this.copy_actionPerformed ();\r
-this.delete_actionPerformed ();\r
-});\r
-Clazz.defineMethod (c$, "delete_actionPerformed", \r
-function () {\r
-var sg = this.viewport.getSelectionGroup ();\r
-if (sg == null) {\r
-return;\r
-}var seqs =  new java.util.Vector ();\r
-var seq;\r
-for (var i = 0; i < sg.getSize (); i++) {\r
-seq = sg.getSequenceAt (i);\r
-seqs.addElement (seq);\r
-}\r
-if (sg.getSize () == this.viewport.getAlignment ().getHeight ()) {\r
-this.viewport.getColumnSelection ().removeElements (sg.getStartRes (), sg.getEndRes () + 1);\r
-}var cut =  new Array (seqs.size ());\r
-for (var i = 0; i < seqs.size (); i++) {\r
-cut[i] = seqs.elementAt (i);\r
-}\r
-this.addHistoryItem ( new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("label.cut_sequences"), jalview.commands.EditCommand.Action.CUT, cut, sg.getStartRes (), sg.getEndRes () - sg.getStartRes () + 1, this.viewport.getAlignment ()));\r
-this.viewport.setSelectionGroup (null);\r
-this.viewport.getAlignment ().deleteGroup (sg);\r
-this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());\r
-if (this.viewport.getAlignment ().getHeight () < 1) {\r
-this.setVisible (false);\r
-}this.viewport.sendSelection ();\r
-});\r
-Clazz.defineMethod (c$, "showGroupConsensus_actionPerformed", \r
-function () {\r
-this.viewport.setShowGroupConsensus (this.showGroupConsensus.getState ());\r
-this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());\r
-});\r
-Clazz.defineMethod (c$, "showGroupConservation_actionPerformed", \r
-function () {\r
-this.viewport.setShowGroupConservation (this.showGroupConservation.getState ());\r
-this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());\r
-});\r
-Clazz.defineMethod (c$, "showConsensusHistogram_actionPerformed", \r
-function () {\r
-this.viewport.setShowConsensusHistogram (this.showConsensusHistogram.getState ());\r
-this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());\r
-});\r
-Clazz.defineMethod (c$, "showSequenceLogo_actionPerformed", \r
-function () {\r
-this.viewport.setShowSequenceLogo (this.showSequenceLogo.getState ());\r
-this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());\r
-});\r
-Clazz.defineMethod (c$, "normSequenceLogo_actionPerformed", \r
-function () {\r
-this.showSequenceLogo.setState (true);\r
-this.viewport.setShowSequenceLogo (true);\r
-this.viewport.setNormaliseSequenceLogo (this.normSequenceLogo.getState ());\r
-this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());\r
-});\r
-Clazz.defineMethod (c$, "applyAutoAnnotationSettings_actionPerformed", \r
-function () {\r
-this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());\r
-});\r
-Clazz.defineMethod (c$, "makeGrpsFromSelection_actionPerformed", \r
-function () {\r
-if (this.avc.makeGroupsFromSelection ()) {\r
-jalview.appletgui.PaintRefresher.Refresh (this, this.viewport.getSequenceSetId ());\r
-this.alignPanel.updateAnnotation ();\r
-this.alignPanel.paintAlignment (true);\r
-}});\r
-Clazz.defineMethod (c$, "createGroup_actionPerformed", \r
-function () {\r
-this.avc.createGroup ();\r
-});\r
-Clazz.defineMethod (c$, "unGroup_actionPerformed", \r
-function () {\r
-if (this.avc.unGroup ()) {\r
-this.alignPanel.alignmentChanged ();\r
-}});\r
-Clazz.defineMethod (c$, "deleteGroups_actionPerformed", \r
-function () {\r
-if (this.avc.deleteGroups ()) {\r
-this.alignPanel.alignmentChanged ();\r
-}});\r
-Clazz.defineMethod (c$, "selectAllSequenceMenuItem_actionPerformed", \r
-function () {\r
-var sg =  new jalview.datamodel.SequenceGroup ();\r
-for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {\r
-sg.addSequence (this.viewport.getAlignment ().getSequenceAt (i), false);\r
-}\r
-sg.setEndRes (this.viewport.getAlignment ().getWidth () - 1);\r
-this.viewport.setSelectionGroup (sg);\r
-this.alignPanel.paintAlignment (true);\r
-jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());\r
-this.viewport.sendSelection ();\r
-});\r
-Clazz.defineMethod (c$, "deselectAllSequenceMenuItem_actionPerformed", \r
-function () {\r
-if (this.viewport.cursorMode) {\r
-this.alignPanel.seqPanel.keyboardNo1 = null;\r
-this.alignPanel.seqPanel.keyboardNo2 = null;\r
-}this.viewport.setSelectionGroup (null);\r
-this.viewport.getColumnSelection ().clear ();\r
-this.viewport.setSelectionGroup (null);\r
-this.alignPanel.idPanel.idCanvas.searchResults = null;\r
-this.alignPanel.seqPanel.seqCanvas.highlightSearchResults (null);\r
-this.alignPanel.paintAlignment (true);\r
-jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());\r
-this.viewport.sendSelection ();\r
-});\r
-Clazz.defineMethod (c$, "invertSequenceMenuItem_actionPerformed", \r
-function () {\r
-var sg = this.viewport.getSelectionGroup ();\r
-for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {\r
-sg.addOrRemove (this.viewport.getAlignment ().getSequenceAt (i), false);\r
-}\r
-jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());\r
-this.viewport.sendSelection ();\r
-});\r
-Clazz.defineMethod (c$, "invertColSel_actionPerformed", \r
-function () {\r
-this.viewport.invertColumnSelection ();\r
-this.alignPanel.paintAlignment (true);\r
-jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());\r
-this.viewport.sendSelection ();\r
-});\r
-Clazz.defineMethod (c$, "trimAlignment", \r
-function (trimLeft) {\r
-var colSel = this.viewport.getColumnSelection ();\r
-var column;\r
-if (colSel.size () > 0) {\r
-if (trimLeft) {\r
-column = colSel.getMin ();\r
-} else {\r
-column = colSel.getMax ();\r
-}var seqs;\r
-if (this.viewport.getSelectionGroup () != null) {\r
-seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());\r
-} else {\r
-seqs = this.viewport.getAlignment ().getSequencesArray ();\r
-}var trimRegion;\r
-if (trimLeft) {\r
-trimRegion =  new jalview.commands.TrimRegionCommand ("Remove Left", jalview.commands.TrimRegionCommand.TRIM_LEFT, seqs, column, this.viewport.getAlignment (), this.viewport.getColumnSelection (), this.viewport.getSelectionGroup ());\r
-this.viewport.setStartRes (0);\r
-} else {\r
-trimRegion =  new jalview.commands.TrimRegionCommand ("Remove Right", jalview.commands.TrimRegionCommand.TRIM_RIGHT, seqs, column, this.viewport.getAlignment (), this.viewport.getColumnSelection (), this.viewport.getSelectionGroup ());\r
-}this.setStatus (jalview.util.MessageManager.formatMessage ("label.removed_columns",  Clazz.newArray (-1, [Integer.$valueOf (trimRegion.getSize ()).toString ()])));\r
-this.addHistoryItem (trimRegion);\r
-for (var sg, $sg = this.viewport.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-if ((trimLeft && !sg.adjustForRemoveLeft (column)) || (!trimLeft && !sg.adjustForRemoveRight (column))) {\r
-this.viewport.getAlignment ().deleteGroup (sg);\r
-}}\r
-this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());\r
-}}, "~B");\r
-Clazz.defineMethod (c$, "removeGappedColumnMenuItem_actionPerformed", \r
-function () {\r
-var start = 0;\r
-var end = this.viewport.getAlignment ().getWidth () - 1;\r
-var seqs;\r
-if (this.viewport.getSelectionGroup () != null) {\r
-seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());\r
-start = this.viewport.getSelectionGroup ().getStartRes ();\r
-end = this.viewport.getSelectionGroup ().getEndRes ();\r
-} else {\r
-seqs = this.viewport.getAlignment ().getSequencesArray ();\r
-}var removeGapCols =  new jalview.commands.RemoveGapColCommand ("Remove Gapped Columns", seqs, start, end, this.viewport.getAlignment ());\r
-this.addHistoryItem (removeGapCols);\r
-this.setStatus (jalview.util.MessageManager.formatMessage ("label.removed_empty_columns",  Clazz.newArray (-1, [Integer.$valueOf (removeGapCols.getSize ()).toString ()])));\r
-var seq = this.viewport.getAlignment ().getSequenceAt (0);\r
-var startRes = seq.findPosition (this.viewport.startRes);\r
-this.viewport.setStartRes (seq.findIndex (startRes) - 1);\r
-this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());\r
-});\r
-Clazz.defineMethod (c$, "removeAllGapsMenuItem_actionPerformed", \r
-function () {\r
-var start = 0;\r
-var end = this.viewport.getAlignment ().getWidth () - 1;\r
-var seqs;\r
-if (this.viewport.getSelectionGroup () != null) {\r
-seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());\r
-start = this.viewport.getSelectionGroup ().getStartRes ();\r
-end = this.viewport.getSelectionGroup ().getEndRes ();\r
-} else {\r
-seqs = this.viewport.getAlignment ().getSequencesArray ();\r
-}var seq = this.viewport.getAlignment ().getSequenceAt (0);\r
-var startRes = seq.findPosition (this.viewport.startRes);\r
-this.addHistoryItem ( new jalview.commands.RemoveGapsCommand ("Remove Gaps", seqs, start, end, this.viewport.getAlignment ()));\r
-this.viewport.setStartRes (seq.findIndex (startRes) - 1);\r
-this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());\r
-});\r
-Clazz.defineMethod (c$, "findMenuItem_actionPerformed", \r
-function () {\r
- new jalview.appletgui.Finder (this.alignPanel);\r
-});\r
-Clazz.defineMethod (c$, "newView", \r
-function (viewtitle) {\r
-var newal;\r
-if (this.viewport.hasHiddenRows ()) {\r
-newal =  new jalview.datamodel.Alignment (this.viewport.getAlignment ().getHiddenSequences ().getFullAlignment ().getSequencesArray ());\r
-} else {\r
-newal =  new jalview.datamodel.Alignment (this.viewport.getAlignment ().getSequencesArray ());\r
-}if (this.viewport.getAlignment ().getAlignmentAnnotation () != null) {\r
-for (var i = 0; i < this.viewport.getAlignment ().getAlignmentAnnotation ().length; i++) {\r
-if (!this.viewport.getAlignment ().getAlignmentAnnotation ()[i].autoCalculated) {\r
-newal.addAnnotation (this.viewport.getAlignment ().getAlignmentAnnotation ()[i]);\r
-}}\r
-}var newaf =  new jalview.appletgui.AlignFrame (newal, this.viewport.applet, "", false);\r
-newaf.viewport.setSequenceSetId (this.alignPanel.av.getSequenceSetId ());\r
-jalview.appletgui.PaintRefresher.Register (this.alignPanel, this.alignPanel.av.getSequenceSetId ());\r
-jalview.appletgui.PaintRefresher.Register (newaf.alignPanel, newaf.alignPanel.av.getSequenceSetId ());\r
-jalview.appletgui.PaintRefresher.Register (newaf.alignPanel.idPanel.idCanvas, newaf.alignPanel.av.getSequenceSetId ());\r
-jalview.appletgui.PaintRefresher.Register (newaf.alignPanel.seqPanel.seqCanvas, newaf.alignPanel.av.getSequenceSetId ());\r
-var comps = jalview.appletgui.PaintRefresher.components.get (this.viewport.getSequenceSetId ());\r
-var viewSize = -1;\r
-for (var i = 0; i < comps.size (); i++) {\r
-if (Clazz.instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {\r
-viewSize++;\r
-}}\r
-var title =  String.instantialize (this.getTitle ());\r
-if (viewtitle != null) {\r
-title = viewtitle + " ( " + title + ")";\r
-} else {\r
-if (title.indexOf ("(View") > -1) {\r
-title = title.substring (0, title.indexOf ("(View"));\r
-}title += "(View " + viewSize + ")";\r
-}newaf.setTitle (title.toString ());\r
-newaf.viewport.setHistoryList (this.viewport.getHistoryList ());\r
-newaf.viewport.setRedoList (this.viewport.getRedoList ());\r
-return newaf;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getFeatureGroups", \r
-function () {\r
-var fr = null;\r
-if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {\r
-var gps = fr.getFeatureGroups ();\r
-var _gps = gps.toArray ( new Array (gps.size ()));\r
-return _gps;\r
-}return null;\r
-});\r
-Clazz.defineMethod (c$, "getFeatureGroupsOfState", \r
-function (visible) {\r
-var fr = null;\r
-if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {\r
-var gps = fr.getGroups (visible);\r
-var _gps = gps.toArray ( new Array (gps.size ()));\r
-return _gps;\r
-}return null;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setFeatureGroupState", \r
-function (groups, state) {\r
-var fr = null;\r
-this.sequenceFeatures.setState (true);\r
-this.viewport.setShowSequenceFeatures (true);\r
-if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {\r
-fr.setGroupVisibility (java.util.Arrays.asList (groups), state);\r
-this.alignPanel.seqPanel.seqCanvas.repaint ();\r
-if (this.alignPanel.overviewPanel != null) {\r
-this.alignPanel.overviewPanel.updateOverviewImage ();\r
-}}}, "~A,~B");\r
-Clazz.defineMethod (c$, "seqLimits_itemStateChanged", \r
-function () {\r
-this.viewport.setShowJVSuffix (this.seqLimits.getState ());\r
-this.alignPanel.fontChanged ();\r
-this.alignPanel.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "colourTextMenuItem_actionPerformed", \r
-function () {\r
-this.viewport.setColourText (this.colourTextMenuItem.getState ());\r
-this.alignPanel.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "displayNonconservedMenuItem_actionPerformed", \r
-function () {\r
-this.viewport.setShowUnconserved (this.displayNonconservedMenuItem.getState ());\r
-this.alignPanel.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "wrapMenuItem_actionPerformed", \r
-function () {\r
-this.viewport.setWrapAlignment (this.wrapMenuItem.getState ());\r
-this.alignPanel.setWrapAlignment (this.wrapMenuItem.getState ());\r
-this.scaleAbove.setEnabled (this.wrapMenuItem.getState ());\r
-this.scaleLeft.setEnabled (this.wrapMenuItem.getState ());\r
-this.scaleRight.setEnabled (this.wrapMenuItem.getState ());\r
-this.alignPanel.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "overviewMenuItem_actionPerformed", \r
-function () {\r
-if (this.alignPanel.overviewPanel != null) {\r
-return;\r
-}var frame =  new awt2swing.Frame ();\r
-var overview =  new jalview.appletgui.OverviewPanel (this.alignPanel);\r
-frame.add (overview);\r
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.overview_params",  Clazz.newArray (-1, [this.getTitle ()])), overview.getPreferredSize ().width, overview.getPreferredSize ().height + 50);\r
-frame.pack ();\r
-var ap = this.alignPanel;\r
-frame.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$1") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$1, this, Clazz.cloneFinals ("ap", ap))));\r
-this.alignPanel.setOverviewPanel (overview);\r
-});\r
-Clazz.overrideMethod (c$, "changeColour", \r
-function (cs) {\r
-var threshold = 0;\r
-if (cs != null) {\r
-if (this.viewport.getAbovePIDThreshold ()) {\r
-this.viewport.setThreshold (jalview.appletgui.SliderPanel.setPIDSliderSource (this.alignPanel, cs, "Background"));\r
-}if (this.viewport.getConservationSelected ()) {\r
-cs.setConservationApplied (true);\r
-this.viewport.setIncrement (jalview.appletgui.SliderPanel.setConservationSlider (this.alignPanel, cs, "Background"));\r
-} else {\r
-cs.setConservationApplied (false);\r
-}}this.viewport.setGlobalColourScheme (cs);\r
-if (this.alignPanel.getOverviewPanel () != null) {\r
-this.alignPanel.getOverviewPanel ().updateOverviewImage ();\r
-}jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.viewport.applet).sequenceColoursChanged (this.alignPanel);\r
-this.alignPanel.paintAlignment (true);\r
-}, "jalview.schemes.ColourSchemeI");\r
-Clazz.defineMethod (c$, "modifyPID_actionPerformed", \r
-function () {\r
-if (this.viewport.getAbovePIDThreshold () && this.viewport.getGlobalColourScheme () != null) {\r
-jalview.appletgui.SliderPanel.setPIDSliderSource (this.alignPanel, this.viewport.getGlobalColourScheme (), "Background");\r
-jalview.appletgui.SliderPanel.showPIDSlider ();\r
-}});\r
-Clazz.defineMethod (c$, "modifyConservation_actionPerformed", \r
-function () {\r
-if (this.viewport.getConservationSelected () && this.viewport.getGlobalColourScheme () != null) {\r
-jalview.appletgui.SliderPanel.setConservationSlider (this.alignPanel, this.viewport.getGlobalColourScheme (), "Background");\r
-jalview.appletgui.SliderPanel.showConservationSlider ();\r
-}});\r
-Clazz.defineMethod (c$, "conservationMenuItem_actionPerformed", \r
-function () {\r
-this.viewport.setConservationSelected (this.conservationMenuItem.getState ());\r
-this.viewport.setAbovePIDThreshold (false);\r
-this.abovePIDThreshold.setState (false);\r
-this.changeColour (this.viewport.getGlobalColourScheme ());\r
-this.modifyConservation_actionPerformed ();\r
-});\r
-Clazz.defineMethod (c$, "abovePIDThreshold_actionPerformed", \r
-function () {\r
-this.viewport.setAbovePIDThreshold (this.abovePIDThreshold.getState ());\r
-this.conservationMenuItem.setState (false);\r
-this.viewport.setConservationSelected (false);\r
-this.changeColour (this.viewport.getGlobalColourScheme ());\r
-this.modifyPID_actionPerformed ();\r
-});\r
-Clazz.defineMethod (c$, "sortPairwiseMenuItem_actionPerformed", \r
-function () {\r
-var oldOrder = this.viewport.getAlignment ().getSequencesArray ();\r
-jalview.analysis.AlignmentSorter.sortByPID (this.viewport.getAlignment (), this.viewport.getAlignment ().getSequenceAt (0), null);\r
-this.addHistoryItem ( new jalview.commands.OrderCommand ("Pairwise Sort", oldOrder, this.viewport.getAlignment ()));\r
-this.alignPanel.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "sortIDMenuItem_actionPerformed", \r
-function () {\r
-var oldOrder = this.viewport.getAlignment ().getSequencesArray ();\r
-jalview.analysis.AlignmentSorter.sortByID (this.viewport.getAlignment ());\r
-this.addHistoryItem ( new jalview.commands.OrderCommand ("ID Sort", oldOrder, this.viewport.getAlignment ()));\r
-this.alignPanel.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "sortLengthMenuItem_actionPerformed", \r
-function () {\r
-var oldOrder = this.viewport.getAlignment ().getSequencesArray ();\r
-jalview.analysis.AlignmentSorter.sortByLength (this.viewport.getAlignment ());\r
-this.addHistoryItem ( new jalview.commands.OrderCommand ("Length Sort", oldOrder, this.viewport.getAlignment ()));\r
-this.alignPanel.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "sortGroupMenuItem_actionPerformed", \r
-function () {\r
-var oldOrder = this.viewport.getAlignment ().getSequencesArray ();\r
-jalview.analysis.AlignmentSorter.sortByGroup (this.viewport.getAlignment ());\r
-this.addHistoryItem ( new jalview.commands.OrderCommand ("Group Sort", oldOrder, this.viewport.getAlignment ()));\r
-this.alignPanel.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "removeRedundancyMenuItem_actionPerformed", \r
-function () {\r
- new jalview.appletgui.RedundancyPanel (this.alignPanel);\r
-});\r
-Clazz.defineMethod (c$, "pairwiseAlignmentMenuItem_actionPerformed", \r
-function () {\r
-if (this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () > 1) {\r
-var frame =  new awt2swing.Frame ();\r
-frame.add ( new jalview.appletgui.PairwiseAlignPanel (this.alignPanel));\r
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("action.pairwise_alignment"), 600, 500);\r
-}});\r
-Clazz.defineMethod (c$, "PCAMenuItem_actionPerformed", \r
-function () {\r
-if (!this.viewport.getAlignment ().isAligned (false)) {\r
-var current;\r
-var Width = this.viewport.getAlignment ().getWidth ();\r
-for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {\r
-current = this.viewport.getAlignment ().getSequenceAt (i);\r
-if (current.getLength () < Width) {\r
-current.insertCharAt (Width - 1, this.viewport.getGapCharacter ());\r
-}}\r
-this.alignPanel.paintAlignment (true);\r
-}if ((this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () < 4 && this.viewport.getSelectionGroup ().getSize () > 0) || this.viewport.getAlignment ().getHeight () < 4) {\r
-return;\r
-}try {\r
- new jalview.appletgui.PCAPanel (this.viewport);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, OutOfMemoryError)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-});\r
-Clazz.defineMethod (c$, "averageDistanceTreeMenuItem_actionPerformed", \r
-function () {\r
-this.NewTreePanel ("AV", "PID", "Average distance tree using PID");\r
-});\r
-Clazz.defineMethod (c$, "neighbourTreeMenuItem_actionPerformed", \r
-function () {\r
-this.NewTreePanel ("NJ", "PID", "Neighbour joining tree using PID");\r
-});\r
-Clazz.defineMethod (c$, "njTreeBlosumMenuItem_actionPerformed", \r
-function () {\r
-this.NewTreePanel ("NJ", "BL", "Neighbour joining tree using BLOSUM62");\r
-});\r
-Clazz.defineMethod (c$, "avTreeBlosumMenuItem_actionPerformed", \r
-function () {\r
-this.NewTreePanel ("AV", "BL", "Average distance tree using BLOSUM62");\r
-});\r
-Clazz.defineMethod (c$, "NewTreePanel", \r
-function (type, pwType, title) {\r
-if (!this.viewport.getAlignment ().isAligned (false)) {\r
-var current;\r
-var Width = this.viewport.getAlignment ().getWidth ();\r
-for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {\r
-current = this.viewport.getAlignment ().getSequenceAt (i);\r
-if (current.getLength () < Width) {\r
-current.insertCharAt (Width - 1, this.viewport.getGapCharacter ());\r
-}}\r
-this.alignPanel.paintAlignment (true);\r
-}if ((this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () > 1) || (this.viewport.getAlignment ().getHeight () > 1)) {\r
-var tp =  new jalview.appletgui.TreePanel (this.alignPanel, type, pwType);\r
-this.addTreeMenuItem (tp, title);\r
-jalview.bin.JalviewLite.addFrame (tp, title, 600, 500);\r
-}}, "~S,~S,~S");\r
-Clazz.defineMethod (c$, "loadTree_actionPerformed", \r
-function () {\r
-var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this);\r
-cap.setText (jalview.util.MessageManager.getString ("label.paste_newick_tree_file"));\r
-cap.setTreeImport ();\r
-var frame =  new awt2swing.Frame ();\r
-frame.add (cap);\r
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.paste_newick_file"), 400, 300);\r
-});\r
-Clazz.defineMethod (c$, "loadTree", \r
-function (tree, treeFile) {\r
-var tp =  new jalview.appletgui.TreePanel (this.alignPanel, treeFile, jalview.util.MessageManager.getString ("label.load_tree_from_file"), tree);\r
-jalview.bin.JalviewLite.addFrame (tp, treeFile, 600, 500);\r
-this.addTreeMenuItem (tp, treeFile);\r
-}, "jalview.io.NewickFile,~S");\r
-Clazz.defineMethod (c$, "sortByTree", \r
-function (treePanel, title) {\r
-var oldOrder = this.viewport.getAlignment ().getSequencesArray ();\r
-jalview.analysis.AlignmentSorter.sortByTree (this.viewport.getAlignment (), treePanel.getTree ());\r
-this.addHistoryItem ( new jalview.commands.OrderCommand (jalview.util.MessageManager.formatMessage ("label.order_by_params",  Clazz.newArray (-1, [title])), oldOrder, this.viewport.getAlignment ()));\r
-this.alignPanel.paintAlignment (true);\r
-}, "jalview.appletgui.TreePanel,~S");\r
-Clazz.defineMethod (c$, "addTreeMenuItem", \r
-function (treePanel, title) {\r
-var item =  new awt2swing.MenuItem (title);\r
-this.sortByTreeMenu.add (item);\r
-item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$2") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$2, this, Clazz.cloneFinals ("treePanel", treePanel, "title", title))));\r
-treePanel.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$3") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$3, this, Clazz.cloneFinals ("treePanel", treePanel, "title", title, "item", item))));\r
-}, "jalview.appletgui.TreePanel,~S");\r
-Clazz.defineMethod (c$, "sortBy", \r
-function (alorder, undoname) {\r
-var oldOrder = this.viewport.getAlignment ().getSequencesArray ();\r
-if ((this.viewport.applet, jalview.bin.JalviewLite).debug) {\r
-System.err.println ("Sorting " + alorder.getOrder ().size () + " in alignment '" + this.getTitle () + "'");\r
-}jalview.analysis.AlignmentSorter.sortBy (this.viewport.getAlignment (), alorder);\r
-if (undoname != null) {\r
-this.addHistoryItem ( new jalview.commands.OrderCommand (undoname, oldOrder, this.viewport.getAlignment ()));\r
-}this.alignPanel.paintAlignment (true);\r
-return true;\r
-}, "jalview.datamodel.AlignmentOrder,~S");\r
-Clazz.defineMethod (c$, "documentation_actionPerformed", \r
-function () {\r
-this.alignPanel.av.applet.openJalviewHelpUrl ();\r
-});\r
-Clazz.defineMethod (c$, "about_actionPerformed", \r
-function () {\r
-if (!Clazz.isClassDefined ("jalview.appletgui.AlignFrame$1AboutPanel")) {\r
-jalview.appletgui.AlignFrame.$AlignFrame$1AboutPanel$ ();\r
-}\r
-var frame =  new awt2swing.Frame ();\r
-frame.add (Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$1AboutPanel, this, null, jalview.bin.JalviewLite.getVersion (), jalview.bin.JalviewLite.getBuildDate ()));\r
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.jalview"), 580, 220);\r
-});\r
-Clazz.defineMethod (c$, "showURL", \r
-function (url, target) {\r
-if (this.viewport.applet == null) {\r
-System.out.println ("Not running as applet - no browser available.");\r
-} else {\r
-this.viewport.applet.showURL (url, target);\r
-}}, "~S,~S");\r
-Clazz.defineMethod (c$, "jbInit", \r
-($fz = function () {\r
-this.setMenuBar (this.alignFrameMenuBar);\r
-this.inputText.setLabel (jalview.util.MessageManager.getString ("label.input_from_textbox"));\r
-this.inputText.addActionListener (this);\r
-var outputTextboxMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.out_to_textbox"));\r
-for (var i = 0; i < jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS.length; i++) {\r
-var item =  new awt2swing.MenuItem (jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS[i]);\r
-item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$4") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$4$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$4, this, null)));\r
-outputTextboxMenu.add (item);\r
-}\r
-this.closeMenuItem.addActionListener (this);\r
-this.loadApplication.addActionListener (this);\r
-this.$loadTree.addActionListener (this);\r
-this.$loadAnnotations.addActionListener (this);\r
-this.$outputFeatures.addActionListener (this);\r
-this.$outputAnnotations.addActionListener (this);\r
-this.undoMenuItem.setEnabled (false);\r
-this.undoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.undo"));\r
-this.undoMenuItem.addActionListener (this);\r
-this.redoMenuItem.setEnabled (false);\r
-this.redoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.redo"));\r
-this.redoMenuItem.addActionListener (this);\r
-this.copy.setLabel (jalview.util.MessageManager.getString ("action.copy"));\r
-this.copy.addActionListener (this);\r
-this.cut.setLabel (jalview.util.MessageManager.getString ("action.cut"));\r
-this.cut.addActionListener (this);\r
-this.$delete.setLabel (jalview.util.MessageManager.getString ("action.delete"));\r
-this.$delete.addActionListener (this);\r
-this.pasteMenu.setLabel (jalview.util.MessageManager.getString ("action.paste"));\r
-this.pasteNew.setLabel (jalview.util.MessageManager.getString ("label.to_new_alignment"));\r
-this.pasteNew.addActionListener (this);\r
-this.pasteThis.setLabel (jalview.util.MessageManager.getString ("label.to_this_alignment"));\r
-this.pasteThis.addActionListener (this);\r
-this.remove2LeftMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_left"));\r
-this.remove2LeftMenuItem.addActionListener (this);\r
-this.remove2RightMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_right"));\r
-this.remove2RightMenuItem.addActionListener (this);\r
-this.removeGappedColumnMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_empty_columns"));\r
-this.removeGappedColumnMenuItem.addActionListener (this);\r
-this.removeAllGapsMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_all_gaps"));\r
-this.removeAllGapsMenuItem.addActionListener (this);\r
-this.removeRedundancyMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_redundancy").concat ("..."));\r
-this.removeRedundancyMenuItem.addActionListener (this);\r
-this.findMenuItem.setLabel (jalview.util.MessageManager.getString ("action.find"));\r
-this.findMenuItem.addActionListener (this);\r
-this.selectAllSequenceMenuItem.addActionListener (this);\r
-this.deselectAllSequenceMenuItem.addActionListener (this);\r
-this.invertSequenceMenuItem.setLabel (jalview.util.MessageManager.getString ("action.invert_sequence_selection"));\r
-this.invertSequenceMenuItem.addActionListener (this);\r
-this.invertColSel.setLabel (jalview.util.MessageManager.getString ("action.invert_column_selection"));\r
-this.invertColSel.addActionListener (this);\r
-this.deleteGroups.setLabel (jalview.util.MessageManager.getString ("action.undefine_groups"));\r
-this.deleteGroups.addActionListener (this);\r
-this.grpsFromSelection.setLabel (jalview.util.MessageManager.getString ("action.make_groups_selection"));\r
-this.grpsFromSelection.addActionListener (this);\r
-this.createGroup.setLabel (jalview.util.MessageManager.getString ("action.create_group"));\r
-this.unGroup.setLabel (jalview.util.MessageManager.getString ("action.remove_group"));\r
-this.annotationColumnSelection.setLabel ("Select by Annotation");\r
-this.annotationColumnSelection.addActionListener (this);\r
-this.$newView.setLabel (jalview.util.MessageManager.getString ("action.new_view"));\r
-this.$newView.addActionListener (this);\r
-var showMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.show"));\r
-this.showColumns.setLabel (jalview.util.MessageManager.getString ("label.all_columns"));\r
-this.showSeqs.setLabel (jalview.util.MessageManager.getString ("label.all_sequences"));\r
-var hideMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.hide"));\r
-this.hideColumns.setLabel (jalview.util.MessageManager.getString ("label.selected_columns"));\r
-this.hideSequences.setLabel (jalview.util.MessageManager.getString ("label.selected_sequences"));\r
-this.hideAllButSelection.setLabel (jalview.util.MessageManager.getString ("label.all_but_selected_region"));\r
-this.hideAllSelection.setLabel (jalview.util.MessageManager.getString ("label.selected_region"));\r
-this.showAllHidden.setLabel (jalview.util.MessageManager.getString ("label.all_sequences_columns"));\r
-this.showColumns.addActionListener (this);\r
-this.showSeqs.addActionListener (this);\r
-this.hideColumns.addActionListener (this);\r
-this.hideSequences.addActionListener (this);\r
-this.hideAllButSelection.addActionListener (this);\r
-this.hideAllSelection.addActionListener (this);\r
-this.showAllHidden.addActionListener (this);\r
-this.featureSettings.setLabel (jalview.util.MessageManager.getString ("label.feature_settings"));\r
-this.featureSettings.addActionListener (this);\r
-this.sequenceFeatures.setLabel (jalview.util.MessageManager.getString ("label.show_sequence_features"));\r
-this.sequenceFeatures.addItemListener (this);\r
-this.sequenceFeatures.setState (false);\r
-this.followMouseOverFlag.setLabel (jalview.util.MessageManager.getString ("label.automatic_scrolling"));\r
-this.followMouseOverFlag.addItemListener (this);\r
-this.alProperties.addActionListener (this);\r
-this.overviewMenuItem.setLabel (jalview.util.MessageManager.getString ("label.overview_window"));\r
-this.overviewMenuItem.addActionListener (this);\r
-this.annotationPanelMenuItem.setLabel (jalview.util.MessageManager.getString ("label.show_annotations"));\r
-this.annotationPanelMenuItem.addItemListener (this);\r
-this.showGroupConsensus.setLabel (jalview.util.MessageManager.getString ("label.group_consensus"));\r
-this.showGroupConservation.setLabel (jalview.util.MessageManager.getString ("label.group_conservation"));\r
-this.showConsensusHistogram.setLabel (jalview.util.MessageManager.getString ("label.show_consensus_histogram"));\r
-this.showSequenceLogo.setLabel (jalview.util.MessageManager.getString ("label.show_consensus_logo"));\r
-this.normSequenceLogo.setLabel (jalview.util.MessageManager.getString ("label.norm_consensus_logo"));\r
-this.applyAutoAnnotationSettings.setLabel (jalview.util.MessageManager.getString ("label.apply_all_groups"));\r
-this.applyAutoAnnotationSettings.setState (true);\r
-var autoAnnMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.autocalculated_annotation"));\r
-this.showGroupConsensus.addItemListener (this);\r
-this.showGroupConservation.addItemListener (this);\r
-this.showConsensusHistogram.addItemListener (this);\r
-this.showSequenceLogo.addItemListener (this);\r
-this.normSequenceLogo.addItemListener (this);\r
-this.applyAutoAnnotationSettings.addItemListener (this);\r
-this.showAlignmentAnnotations =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_all_al_annotations"));\r
-this.showSequenceAnnotations =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_all_seq_annotations"));\r
-this.sortAnnBySequence =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.sort_annotations_by_sequence"));\r
-this.sortAnnByLabel =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.sort_annotations_by_label"));\r
-this.showAutoFirst =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_first"));\r
-this.showAutoLast =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_last"));\r
-this.showAlignmentAnnotations.addItemListener (this);\r
-this.showSequenceAnnotations.addItemListener (this);\r
-this.sortAnnBySequence.addItemListener (this);\r
-this.sortAnnByLabel.addItemListener (this);\r
-this.showAutoFirst.addItemListener (this);\r
-this.showAutoLast.addItemListener (this);\r
-this.$font.setLabel (jalview.util.MessageManager.getString ("action.font"));\r
-this.$font.addActionListener (this);\r
-this.scaleAbove.setLabel (jalview.util.MessageManager.getString ("action.scale_above"));\r
-this.scaleAbove.setState (true);\r
-this.scaleAbove.setEnabled (false);\r
-this.scaleAbove.addItemListener (this);\r
-this.scaleLeft.setEnabled (false);\r
-this.scaleLeft.setState (true);\r
-this.scaleLeft.setLabel (jalview.util.MessageManager.getString ("action.scale_left"));\r
-this.scaleLeft.addItemListener (this);\r
-this.scaleRight.setEnabled (false);\r
-this.scaleRight.setState (true);\r
-this.scaleRight.setLabel (jalview.util.MessageManager.getString ("action.scale_right"));\r
-this.scaleRight.addItemListener (this);\r
-this.viewBoxesMenuItem.setLabel (jalview.util.MessageManager.getString ("action.boxes"));\r
-this.viewBoxesMenuItem.setState (true);\r
-this.viewBoxesMenuItem.addItemListener (this);\r
-this.viewTextMenuItem.setLabel (jalview.util.MessageManager.getString ("action.text"));\r
-this.viewTextMenuItem.setState (true);\r
-this.viewTextMenuItem.addItemListener (this);\r
-this.colourTextMenuItem.setLabel (jalview.util.MessageManager.getString ("label.colour_text"));\r
-this.colourTextMenuItem.addItemListener (this);\r
-this.displayNonconservedMenuItem.setLabel (jalview.util.MessageManager.getString ("label.show_non_conversed"));\r
-this.displayNonconservedMenuItem.addItemListener (this);\r
-this.wrapMenuItem.setLabel (jalview.util.MessageManager.getString ("action.wrap"));\r
-this.wrapMenuItem.addItemListener (this);\r
-this.renderGapsMenuItem.setLabel (jalview.util.MessageManager.getString ("action.show_gaps"));\r
-this.renderGapsMenuItem.setState (true);\r
-this.renderGapsMenuItem.addItemListener (this);\r
-this.centreColumnLabelFlag.setLabel (jalview.util.MessageManager.getString ("label.centre_column_labels"));\r
-this.centreColumnLabelFlag.addItemListener (this);\r
-this.seqLimits.setState (true);\r
-this.seqLimits.setLabel (jalview.util.MessageManager.getString ("label.show_sequence_limits"));\r
-this.seqLimits.addItemListener (this);\r
-this.applyToAllGroups.setLabel (jalview.util.MessageManager.getString ("label.apply_colour_to_all_groups"));\r
-this.applyToAllGroups.setState (true);\r
-this.applyToAllGroups.addItemListener (this);\r
-this.clustalColour.setLabel (jalview.util.MessageManager.getString ("label.clustalx"));\r
-this.clustalColour.addActionListener (this);\r
-this.zappoColour.setLabel (jalview.util.MessageManager.getString ("label.zappo"));\r
-this.zappoColour.addActionListener (this);\r
-this.taylorColour.setLabel (jalview.util.MessageManager.getString ("label.taylor"));\r
-this.taylorColour.addActionListener (this);\r
-this.hydrophobicityColour.setLabel (jalview.util.MessageManager.getString ("label.hydrophobicity"));\r
-this.hydrophobicityColour.addActionListener (this);\r
-this.helixColour.setLabel (jalview.util.MessageManager.getString ("label.helix_propensity"));\r
-this.helixColour.addActionListener (this);\r
-this.strandColour.setLabel (jalview.util.MessageManager.getString ("label.strand_propensity"));\r
-this.strandColour.addActionListener (this);\r
-this.turnColour.setLabel (jalview.util.MessageManager.getString ("label.turn_propensity"));\r
-this.turnColour.addActionListener (this);\r
-this.buriedColour.setLabel (jalview.util.MessageManager.getString ("label.buried_index"));\r
-this.buriedColour.addActionListener (this);\r
-this.purinePyrimidineColour.setLabel (jalview.util.MessageManager.getString ("label.purine_pyrimidine"));\r
-this.purinePyrimidineColour.addActionListener (this);\r
-this.RNAInteractionColour.setLabel (jalview.util.MessageManager.getString ("label.rna_interaction"));\r
-this.RNAInteractionColour.addActionListener (this);\r
-this.RNAHelixColour.setLabel (jalview.util.MessageManager.getString ("action.by_rna_helixes"));\r
-this.RNAHelixColour.addActionListener (this);\r
-this.userDefinedColour.setLabel (jalview.util.MessageManager.getString ("action.user_defined"));\r
-this.userDefinedColour.addActionListener (this);\r
-this.PIDColour.setLabel (jalview.util.MessageManager.getString ("label.percentage_identity"));\r
-this.PIDColour.addActionListener (this);\r
-this.BLOSUM62Colour.setLabel (jalview.util.MessageManager.getString ("label.blosum62_score"));\r
-this.BLOSUM62Colour.addActionListener (this);\r
-this.tcoffeeColour.setLabel (jalview.util.MessageManager.getString ("label.tcoffee_scores"));\r
-this.tcoffeeColour.setEnabled (false);\r
-this.tcoffeeColour.addActionListener (this);\r
-this.conservationMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_conservation"));\r
-this.conservationMenuItem.addItemListener (this);\r
-this.noColourmenuItem.setLabel (jalview.util.MessageManager.getString ("label.none"));\r
-this.noColourmenuItem.addActionListener (this);\r
-this.abovePIDThreshold.setLabel (jalview.util.MessageManager.getString ("label.above_identity_threshold"));\r
-this.abovePIDThreshold.addItemListener (this);\r
-this.nucleotideColour.setLabel (jalview.util.MessageManager.getString ("label.nucleotide"));\r
-this.nucleotideColour.addActionListener (this);\r
-this.modifyPID.setLabel (jalview.util.MessageManager.getString ("label.modify_identity_thereshold"));\r
-this.modifyPID.addActionListener (this);\r
-this.modifyConservation.setLabel (jalview.util.MessageManager.getString ("label.modify_conservation_thereshold"));\r
-this.modifyConservation.addActionListener (this);\r
-this.annotationColour.setLabel (jalview.util.MessageManager.getString ("action.by_annotation"));\r
-this.annotationColour.addActionListener (this);\r
-this.sortPairwiseMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_pairwise_id"));\r
-this.sortPairwiseMenuItem.addActionListener (this);\r
-this.sortIDMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_id"));\r
-this.sortIDMenuItem.addActionListener (this);\r
-this.sortLengthMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_length"));\r
-this.sortLengthMenuItem.addActionListener (this);\r
-this.sortGroupMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_group"));\r
-this.sortGroupMenuItem.addActionListener (this);\r
-this.pairwiseAlignmentMenuItem.setLabel (jalview.util.MessageManager.getString ("action.pairwise_alignment"));\r
-this.pairwiseAlignmentMenuItem.addActionListener (this);\r
-this.PCAMenuItem.setLabel (jalview.util.MessageManager.getString ("label.principal_component_analysis"));\r
-this.PCAMenuItem.addActionListener (this);\r
-this.autoCalculate =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.autocalculate_consensus"), true);\r
-this.averageDistanceTreeMenuItem.setLabel (jalview.util.MessageManager.getString ("label.average_distance_identity"));\r
-this.averageDistanceTreeMenuItem.addActionListener (this);\r
-this.neighbourTreeMenuItem.setLabel (jalview.util.MessageManager.getString ("label.neighbour_joining_identity"));\r
-this.neighbourTreeMenuItem.addActionListener (this);\r
-this.avDistanceTreeBlosumMenuItem.setLabel (jalview.util.MessageManager.getString ("label.average_distance_bloslum62"));\r
-this.avDistanceTreeBlosumMenuItem.addActionListener (this);\r
-this.njTreeBlosumMenuItem.setLabel (jalview.util.MessageManager.getString ("label.neighbour_blosum62"));\r
-this.njTreeBlosumMenuItem.addActionListener (this);\r
-this.sortByTreeMenu.setLabel (jalview.util.MessageManager.getString ("action.by_tree_order"));\r
-var sortMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.sort"));\r
-var calculateTreeMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.calculate_tree"));\r
-this.autoCalculate.addItemListener (this);\r
-this.$sortByTree.addItemListener (this);\r
-var helpMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.help"));\r
-this.documentation.setLabel (jalview.util.MessageManager.getString ("label.documentation"));\r
-this.documentation.addActionListener (this);\r
-this.about.setLabel (jalview.util.MessageManager.getString ("label.about"));\r
-this.about.addActionListener (this);\r
-this.alignFrameMenuBar.add (this.fileMenu);\r
-var editMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.edit"));\r
-this.alignFrameMenuBar.add (editMenu);\r
-var selectMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.select"));\r
-this.alignFrameMenuBar.add (selectMenu);\r
-var viewMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.view"));\r
-this.alignFrameMenuBar.add (viewMenu);\r
-var annotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.annotations"));\r
-this.alignFrameMenuBar.add (annotationsMenu);\r
-var formatMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.format"));\r
-this.alignFrameMenuBar.add (formatMenu);\r
-var colourMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.colour"));\r
-this.alignFrameMenuBar.add (colourMenu);\r
-var calculateMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.calculate"));\r
-this.alignFrameMenuBar.add (calculateMenu);\r
-this.alignFrameMenuBar.add (helpMenu);\r
-this.fileMenu.add (this.inputText);\r
-this.fileMenu.add (this.$loadTree);\r
-this.fileMenu.add (this.$loadAnnotations);\r
-this.fileMenu.addSeparator ();\r
-this.fileMenu.add (outputTextboxMenu);\r
-this.fileMenu.add (this.$outputFeatures);\r
-this.fileMenu.add (this.$outputAnnotations);\r
-if (this.jalviewServletURL != null) {\r
-this.fileMenu.add (this.loadApplication);\r
-}this.fileMenu.addSeparator ();\r
-this.fileMenu.add (this.closeMenuItem);\r
-editMenu.add (this.undoMenuItem);\r
-editMenu.add (this.redoMenuItem);\r
-editMenu.add (this.cut);\r
-editMenu.add (this.copy);\r
-this.pasteMenu.add (this.pasteNew);\r
-this.pasteMenu.add (this.pasteThis);\r
-editMenu.add (this.pasteMenu);\r
-editMenu.add (this.$delete);\r
-editMenu.addSeparator ();\r
-editMenu.add (this.remove2LeftMenuItem);\r
-editMenu.add (this.remove2RightMenuItem);\r
-editMenu.add (this.removeGappedColumnMenuItem);\r
-editMenu.add (this.removeAllGapsMenuItem);\r
-editMenu.add (this.removeRedundancyMenuItem);\r
-selectMenu.add (this.findMenuItem);\r
-selectMenu.addSeparator ();\r
-selectMenu.add (this.selectAllSequenceMenuItem);\r
-selectMenu.add (this.deselectAllSequenceMenuItem);\r
-selectMenu.add (this.invertSequenceMenuItem);\r
-selectMenu.add (this.invertColSel);\r
-selectMenu.add (this.createGroup);\r
-selectMenu.add (this.unGroup);\r
-selectMenu.add (this.grpsFromSelection);\r
-selectMenu.add (this.deleteGroups);\r
-selectMenu.add (this.annotationColumnSelection);\r
-viewMenu.add (this.$newView);\r
-viewMenu.addSeparator ();\r
-showMenu.add (this.showColumns);\r
-showMenu.add (this.showSeqs);\r
-showMenu.add (this.showAllHidden);\r
-viewMenu.add (showMenu);\r
-hideMenu.add (this.hideColumns);\r
-hideMenu.add (this.hideSequences);\r
-hideMenu.add (this.hideAllSelection);\r
-hideMenu.add (this.hideAllButSelection);\r
-viewMenu.add (hideMenu);\r
-viewMenu.addSeparator ();\r
-viewMenu.add (this.followMouseOverFlag);\r
-viewMenu.addSeparator ();\r
-viewMenu.add (this.sequenceFeatures);\r
-viewMenu.add (this.featureSettings);\r
-viewMenu.addSeparator ();\r
-viewMenu.add (this.alProperties);\r
-viewMenu.addSeparator ();\r
-viewMenu.add (this.overviewMenuItem);\r
-annotationsMenu.add (this.annotationPanelMenuItem);\r
-annotationsMenu.addSeparator ();\r
-annotationsMenu.add (this.showAlignmentAnnotations);\r
-annotationsMenu.add (this.showSequenceAnnotations);\r
-annotationsMenu.add (this.sortAnnBySequence);\r
-annotationsMenu.add (this.sortAnnByLabel);\r
-annotationsMenu.addSeparator ();\r
-autoAnnMenu.add (this.showAutoFirst);\r
-autoAnnMenu.add (this.showAutoLast);\r
-autoAnnMenu.addSeparator ();\r
-autoAnnMenu.add (this.applyAutoAnnotationSettings);\r
-autoAnnMenu.add (this.showConsensusHistogram);\r
-autoAnnMenu.add (this.showSequenceLogo);\r
-autoAnnMenu.add (this.normSequenceLogo);\r
-autoAnnMenu.addSeparator ();\r
-autoAnnMenu.add (this.showGroupConservation);\r
-autoAnnMenu.add (this.showGroupConsensus);\r
-annotationsMenu.add (autoAnnMenu);\r
-formatMenu.add (this.$font);\r
-formatMenu.add (this.seqLimits);\r
-formatMenu.add (this.wrapMenuItem);\r
-formatMenu.add (this.scaleAbove);\r
-formatMenu.add (this.scaleLeft);\r
-formatMenu.add (this.scaleRight);\r
-formatMenu.add (this.viewBoxesMenuItem);\r
-formatMenu.add (this.viewTextMenuItem);\r
-formatMenu.add (this.colourTextMenuItem);\r
-formatMenu.add (this.displayNonconservedMenuItem);\r
-formatMenu.add (this.renderGapsMenuItem);\r
-formatMenu.add (this.centreColumnLabelFlag);\r
-colourMenu.add (this.applyToAllGroups);\r
-colourMenu.addSeparator ();\r
-colourMenu.add (this.noColourmenuItem);\r
-colourMenu.add (this.clustalColour);\r
-colourMenu.add (this.BLOSUM62Colour);\r
-colourMenu.add (this.PIDColour);\r
-colourMenu.add (this.zappoColour);\r
-colourMenu.add (this.taylorColour);\r
-colourMenu.add (this.hydrophobicityColour);\r
-colourMenu.add (this.helixColour);\r
-colourMenu.add (this.strandColour);\r
-colourMenu.add (this.turnColour);\r
-colourMenu.add (this.buriedColour);\r
-colourMenu.add (this.nucleotideColour);\r
-colourMenu.add (this.purinePyrimidineColour);\r
-colourMenu.add (this.tcoffeeColour);\r
-colourMenu.add (this.userDefinedColour);\r
-colourMenu.addSeparator ();\r
-colourMenu.add (this.conservationMenuItem);\r
-colourMenu.add (this.modifyConservation);\r
-colourMenu.add (this.abovePIDThreshold);\r
-colourMenu.add (this.modifyPID);\r
-colourMenu.add (this.annotationColour);\r
-colourMenu.add (this.RNAHelixColour);\r
-sortMenu.add (this.sortIDMenuItem);\r
-sortMenu.add (this.sortLengthMenuItem);\r
-sortMenu.add (this.sortByTreeMenu);\r
-sortMenu.add (this.sortGroupMenuItem);\r
-sortMenu.add (this.sortPairwiseMenuItem);\r
-calculateMenu.add (sortMenu);\r
-calculateTreeMenu.add (this.averageDistanceTreeMenuItem);\r
-calculateTreeMenu.add (this.neighbourTreeMenuItem);\r
-calculateTreeMenu.add (this.avDistanceTreeBlosumMenuItem);\r
-calculateTreeMenu.add (this.njTreeBlosumMenuItem);\r
-calculateMenu.add (calculateTreeMenu);\r
-calculateMenu.addSeparator ();\r
-calculateMenu.add (this.pairwiseAlignmentMenuItem);\r
-calculateMenu.add (this.PCAMenuItem);\r
-calculateMenu.add (this.autoCalculate);\r
-calculateMenu.add (this.$sortByTree);\r
-helpMenu.add (this.documentation);\r
-helpMenu.add (this.about);\r
-this.statusBar.setBackground (java.awt.Color.white);\r
-this.statusBar.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.setStatus (jalview.util.MessageManager.getString ("label.status_bar"));\r
-this.add (this.statusBar, "South");\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "setStatus", \r
-function (string) {\r
-this.statusBar.setText (string);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "createAlignFrameWindow", \r
-function (reallyEmbedded) {\r
-if (reallyEmbedded) {\r
-this.embedAlignFrameInApplet (this.viewport.applet);\r
-} else {\r
-if (this.embedMenuIfNeeded (this.alignPanel)) {\r
-this.alignPanel.setSize (this.getSize ().width, this.getSize ().height - this.statusBar.getHeight ());\r
-}this.add (this.statusBar, "South");\r
-this.add (this.alignPanel, "Center");\r
-jalview.bin.JalviewLite.addFrame (this, this.getTitle (), this.frameWidth, this.frameHeight);\r
-}}, "~B");\r
-Clazz.defineMethod (c$, "embedAlignFrameInApplet", \r
-function (theApplet) {\r
-this.fileMenu.remove (this.closeMenuItem);\r
-this.fileMenu.remove (3);\r
-this.embeddedMenu = this.makeEmbeddedPopupMenu (this.alignFrameMenuBar, false, false);\r
-theApplet.setLayout ( new java.awt.BorderLayout ());\r
-theApplet.add (this.embeddedMenu, "North");\r
-theApplet.add (this.statusBar, "South");\r
-this.alignPanel.setSize (theApplet.getSize ().width, theApplet.getSize ().height - this.embeddedMenu.getHeight () - this.statusBar.getHeight ());\r
-theApplet.add (this.alignPanel, "Center");\r
-var me = this;\r
-theApplet.addFocusListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$5") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$5$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$5, this, Clazz.cloneFinals ("theApplet", theApplet, "me", me))));\r
-theApplet.validate ();\r
-}, "jalview.bin.JalviewLite");\r
-Clazz.defineMethod (c$, "addStructureViewInstance", \r
-function (jmolviewer, sequenceIds) {\r
-return null;\r
-}, "~O,~A");\r
-Clazz.defineMethod (c$, "addPdbFile", \r
-function (sequenceId, pdbEntryString, pdbFile) {\r
-var toaddpdb = this.viewport.getAlignment ().findName (sequenceId);\r
-var needtoadd = false;\r
-if (toaddpdb != null) {\r
-var pdbe = toaddpdb.getPDBId ();\r
-var pdbentry = null;\r
-if (pdbe != null && pdbe.size () > 0) {\r
-for (var pe = 0, peSize = pdbe.size (); pe < peSize; pe++) {\r
-pdbentry = pdbe.elementAt (pe);\r
-if (!pdbentry.getId ().equals (pdbEntryString) && !pdbentry.getFile ().equals (pdbFile)) {\r
-pdbentry = null;\r
-} else {\r
-continue;\r
-}}\r
-}if (pdbentry == null) {\r
-pdbentry =  new jalview.datamodel.PDBEntry ();\r
-pdbentry.setId (pdbEntryString);\r
-pdbentry.setFile (pdbFile);\r
-needtoadd = true;\r
-}var protocol = jalview.io.AppletFormatAdapter.resolveProtocol (pdbFile, "PDB");\r
-if (protocol == null) {\r
-return false;\r
-}if (needtoadd) {\r
-if (pdbentry.getProperty () == null) {\r
-pdbentry.setProperty ( new java.util.Hashtable ());\r
-}pdbentry.getProperty ().put ("protocol", protocol);\r
-toaddpdb.addPDBId (pdbentry);\r
-this.alignPanel.getStructureSelectionManager ().registerPDBEntry (pdbentry);\r
-}}return true;\r
-}, "~S,~S,~S");\r
-Clazz.defineMethod (c$, "cleanSeqChainArrays", \r
-($fz = function (seqs, chains) {\r
-if (seqs != null) {\r
-var sequences =  new java.util.Vector ();\r
-for (var i = 0; i < seqs.length; i++) {\r
-if (seqs[i] != null) {\r
-sequences.addElement ( Clazz.newArray (-1, [seqs[i], (chains != null) ? chains[i] : null]));\r
-}}\r
-seqs =  new Array (sequences.size ());\r
-chains =  new Array (sequences.size ());\r
-for (var i = 0, isize = sequences.size (); i < isize; i++) {\r
-var oj = sequences.elementAt (i);\r
-seqs[i] = oj[0];\r
-chains[i] = oj[1];\r
-}\r
-}return  Clazz.newArray (-1, [seqs, chains]);\r
-}, $fz.isPrivate = true, $fz), "~A,~A");\r
-Clazz.defineMethod (c$, "newStructureView", \r
-function (applet, pdb, seqs, chains, protocol) {\r
-var sqch = this.cleanSeqChainArrays (seqs, chains);\r
-seqs = sqch[0];\r
-chains = sqch[1];\r
-if (seqs == null || seqs.length == 0) {\r
-System.err.println ("JalviewLite.AlignFrame:newStructureView: No sequence to bind structure to.");\r
-}if (protocol == null || protocol.trim ().length == 0 || protocol.equals ("null")) {\r
-protocol = pdb.getProperty ().get ("protocol");\r
-if (protocol == null) {\r
-System.err.println ("Couldn't work out protocol to open structure: " + pdb.getId ());\r
-return;\r
-}}if (applet.useXtrnalSviewer) {\r
-if (jalview.structure.StructureSelectionManager.getStructureSelectionManager (applet).setMapping (seqs, chains, pdb.getFile (), protocol) == null) {\r
-System.err.println ("Failed to map " + pdb.getFile () + " (" + protocol + ") to any sequences");\r
-}return;\r
-}if (applet.isAlignPdbStructures () && applet.jmolAvailable) {\r
-var ajm = null;\r
-var tajm;\r
-var jmols = applet.getAppletWindow (jalview.appletgui.AppletJmol);\r
-for (var i = 0, iSize = jmols.size (); i < iSize; i++) {\r
-tajm = jmols.elementAt (i);\r
-if (tajm.ap.alignFrame === this) {\r
-ajm = tajm;\r
-break;\r
-}}\r
-if (ajm != null) {\r
-System.err.println ("Incremental adding and aligning structure to existing Jmol view not yet implemented.");\r
-ajm = null;\r
-}} new jalview.appletgui.AppletJmol (pdb, seqs, chains, this.alignPanel, protocol);\r
-jalview.bin.JalviewLite.lastFrameX += 40;\r
-jalview.bin.JalviewLite.lastFrameY += 40;\r
-}, "jalview.bin.JalviewLite,jalview.datamodel.PDBEntry,~A,~A,~S");\r
-Clazz.defineMethod (c$, "alignedStructureView", \r
-function (applet, pdb, seqs, chains, protocols) {\r
-System.err.println ("Aligned Structure View: Not yet implemented.");\r
-}, "jalview.bin.JalviewLite,~A,~A,~A,~A");\r
-Clazz.defineMethod (c$, "select", \r
-function (sel, csel) {\r
-this.alignPanel.seqPanel.selection (sel, csel, null);\r
-}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection");\r
-Clazz.defineMethod (c$, "scrollTo", \r
-function (row, column) {\r
-this.alignPanel.seqPanel.scrollTo (row, column);\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "scrollToRow", \r
-function (row) {\r
-this.alignPanel.seqPanel.scrollToRow (row);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "scrollToColumn", \r
-function (column) {\r
-this.alignPanel.seqPanel.scrollToColumn (column);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getSequenceSetId", \r
-function () {\r
-return this.viewport.getSequenceSetId ();\r
-});\r
-Clazz.defineMethod (c$, "loadScoreFile", \r
-function (inFile) {\r
-var file = jalview.jsdev.GenericFileAdapter.getFile ("TCoffeeScoreFile", [inFile, jalview.io.AppletFormatAdapter.checkProtocol (inFile)]);\r
-if (!file.isValid ()) {\r
-System.err.println ("Problems parsing T-Coffee scores: " + file.getWarningMessage ());\r
-System.err.println ("Origin was:\n" + inFile);\r
-return false;\r
-}var aln;\r
-if ((aln = this.viewport.getAlignment ()) != null && (aln.getHeight () != file.getHeight () || aln.getWidth () != file.getWidth ())) {\r
-System.err.println ("The scores matrix does not match the alignment dimensions");\r
-}if (file.annotateAlignment (this.alignPanel.getAlignment (), false)) {\r
-this.alignPanel.fontChanged ();\r
-this.tcoffeeColour.setEnabled (true);\r
-this.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignPanel.getAlignment ()));\r
-return true;\r
-} else {\r
-System.err.println ("Problems resolving T-Coffee scores:");\r
-if (file.getWarningMessage () != null) {\r
-System.err.println (file.getWarningMessage ());\r
-}}return false;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getSplitFrame", \r
-function () {\r
-return this.splitFrame;\r
-});\r
-Clazz.defineMethod (c$, "setSplitFrame", \r
-function (sf) {\r
-this.splitFrame = sf;\r
-}, "jalview.appletgui.SplitFrame");\r
-Clazz.overrideMethod (c$, "setShowSeqFeatures", \r
-function (b) {\r
-this.viewport.setShowSequenceFeatures (b);\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setMenusForViewport", \r
-function () {\r
-});\r
-Clazz.overrideMethod (c$, "refreshFeatureUI", \r
-function (enableIfNecessary) {\r
-if (enableIfNecessary) {\r
-this.sequenceFeatures.setState (true);\r
-this.alignPanel.av.setShowSequenceFeatures (true);\r
-}}, "~B");\r
-Clazz.overrideMethod (c$, "getFeatureSettingsUI", \r
-function () {\r
-return this.alignPanel.av.featureSettings;\r
-});\r
-c$.$AlignFrame$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$1", java.awt.event.WindowAdapter);\r
-Clazz.overrideMethod (c$, "windowClosing", \r
-function (e) {\r
-if (this.f$.ap != null) {\r
-this.f$.ap.setOverviewPanel (null);\r
-}}, "java.awt.event.WindowEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AlignFrame$2$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$2", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-this.b$["jalview.appletgui.AlignFrame"].sortByTree (this.f$.treePanel, this.f$.title);\r
-}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AlignFrame$3$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$3", java.awt.event.WindowAdapter);\r
-Clazz.defineMethod (c$, "windowOpened", \r
-function (e) {\r
-if (this.b$["jalview.appletgui.AlignFrame"].viewport.sortByTree) {\r
-this.b$["jalview.appletgui.AlignFrame"].sortByTree (this.f$.treePanel, this.f$.title);\r
-}Clazz.superCall (this, jalview.appletgui.AlignFrame$3, "windowOpened", [e]);\r
-}, "java.awt.event.WindowEvent");\r
-Clazz.overrideMethod (c$, "windowClosing", \r
-function (e) {\r
-this.b$["jalview.appletgui.AlignFrame"].sortByTreeMenu.remove (this.f$.item);\r
-}, "java.awt.event.WindowEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AlignFrame$1AboutPanel$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.version = null;\r
-this.builddate = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "AlignFrame$1AboutPanel", awt2swing.Canvas);\r
-Clazz.makeConstructor (c$, \r
-function (a, b) {\r
-Clazz.superConstructor (this, jalview.appletgui.AlignFrame$1AboutPanel, []);\r
-this.version = a;\r
-this.builddate = b;\r
-}, "~S,~S");\r
-Clazz.overrideMethod (c$, "paintComponent", \r
-function (a) {\r
-a.setColor (java.awt.Color.white);\r
-a.fillRect (0, 0, this.getSize ().width, this.getSize ().height);\r
-a.setFont ( new java.awt.Font ("Helvetica", 0, 12));\r
-var b = a.getFontMetrics ();\r
-var c = b.getHeight ();\r
-var d = 5;\r
-var e = 7;\r
-a.setColor (java.awt.Color.black);\r
-a.setFont ( new java.awt.Font ("Helvetica", 1, 14));\r
-a.drawString (jalview.util.MessageManager.formatMessage ("label.jalviewLite_release",  Clazz.newArray (-1, [this.version])), e, d += c);\r
-a.setFont ( new java.awt.Font ("Helvetica", 1, 12));\r
-a.drawString (jalview.util.MessageManager.formatMessage ("label.jaview_build_date",  Clazz.newArray (-1, [this.builddate])), e, d += c);\r
-a.setFont ( new java.awt.Font ("Helvetica", 0, 12));\r
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_authors_1"), e, d += c * 1.5);\r
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_authors_2"), e + 50, d += c + 8);\r
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_dev_managers"), e, d += c);\r
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_distribution_lists"), e, d += c);\r
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_please_cite"), e, d += c + 8);\r
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_cite_1_authors"), e, d += c);\r
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_cite_1_title"), e, d += c);\r
-a.drawString (jalview.util.MessageManager.getString ("label.jalview_cite_1_ref"), e, d += c);\r
-}, "java.awt.Graphics");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AlignFrame$4$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$4", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-this.b$["jalview.appletgui.AlignFrame"].outputText_actionPerformed (e);\r
-}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AlignFrame$5$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$5", null, java.awt.event.FocusListener);\r
-Clazz.overrideMethod (c$, "focusLost", \r
-function (e) {\r
-if (this.f$.theApplet.currentAlignFrame === this.f$.me) {\r
-this.f$.theApplet.currentAlignFrame = null;\r
-}}, "java.awt.event.FocusEvent");\r
-Clazz.overrideMethod (c$, "focusGained", \r
-function (e) {\r
-this.f$.theApplet.currentAlignFrame = this.f$.me;\r
-}, "java.awt.event.FocusEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"copiedSequences", null,\r
-"copiedHiddenColumns", null);\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Canvas", "jalview.api.AlignViewControllerGuiI", "jalview.appletgui.EmbmenuFrame", "java.awt.event.ActionListener", "$.ItemListener", "$.KeyListener", "awt2swing.CheckboxMenuItem", "$.Label", "$.Menu", "$.MenuBar", "$.MenuItem", "jalview.util.MessageManager", "java.awt.BorderLayout"], "jalview.appletgui.AlignFrame", ["awt2swing.Frame", "jalview.analysis.AlignmentSorter", "$.AnnotationSorter", "jalview.appletgui.AlignViewport", "$.AlignmentPanel", "$.AnnotationColourChooser", "$.AnnotationColumnChooser", "$.AppletJmol", "$.CutAndPasteTransfer", "$.FeatureSettings", "$.Finder", "$.FontChooser", "$.OverviewPanel", "$.PCAPanel", "$.PaintRefresher", "$.PairwiseAlignPanel", "$.RedundancyPanel", "$.SliderPanel", "$.TreePanel", "$.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.commands.EditCommand", "$.OrderCommand", "$.RemoveGapColCommand", "$.RemoveGapsCommand", "$.SlideSequencesCommand", "$.TrimRegionCommand", "jalview.controller.AlignViewController", "jalview.datamodel.Alignment", "$.PDBEntry", "$.Sequence", "$.SequenceGroup", "jalview.io.AlignmentProperties", "$.AnnotationFile", "$.AppletFormatAdapter", "$.FeaturesFile", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.Blosum62ColourScheme", "$.BuriedColourScheme", "$.ClustalxColourScheme", "$.HelixColourScheme", "$.HydrophobicColourScheme", "$.NucleotideColourScheme", "$.PIDColourScheme", "$.PurinePyrimidineColourScheme", "$.RNAHelicesColourChooser", "$.RNAInteractionColourScheme", "$.StrandColourScheme", "$.TCoffeeColourScheme", "$.TaylorColourScheme", "$.TurnColourScheme", "$.ZappoColourScheme", "jalview.structure.StructureSelectionManager", "jalview.util.Comparison", "$.MappingUtils", "java.awt.Color", "$.Font", "java.awt.event.FocusListener", "$.WindowAdapter", "java.lang.Character", "$.StringBuffer", "java.net.URL", "$.URLEncoder", "java.util.Arrays", "$.HashMap", "$.Hashtable", "$.StringTokenizer", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.avc = null;
+this.alignPanel = null;
+this.viewport = null;
+this.frameWidth = 700;
+this.frameHeight = 500;
+this.jalviewServletURL = null;
+this.showAutoCalculatedAbove = false;
+this.annotationSortOrder = null;
+this.alignFrameMenuBar = null;
+this.fileMenu = null;
+this.loadApplication = null;
+this.$loadTree = null;
+this.$loadAnnotations = null;
+this.$outputFeatures = null;
+this.$outputAnnotations = null;
+this.closeMenuItem = null;
+this.selectAllSequenceMenuItem = null;
+this.deselectAllSequenceMenuItem = null;
+this.invertSequenceMenuItem = null;
+this.remove2LeftMenuItem = null;
+this.remove2RightMenuItem = null;
+this.removeGappedColumnMenuItem = null;
+this.removeAllGapsMenuItem = null;
+this.viewBoxesMenuItem = null;
+this.viewTextMenuItem = null;
+this.sortPairwiseMenuItem = null;
+this.sortIDMenuItem = null;
+this.sortLengthMenuItem = null;
+this.sortGroupMenuItem = null;
+this.removeRedundancyMenuItem = null;
+this.pairwiseAlignmentMenuItem = null;
+this.PCAMenuItem = null;
+this.averageDistanceTreeMenuItem = null;
+this.neighbourTreeMenuItem = null;
+this.borderLayout1 = null;
+this.statusBar = null;
+this.clustalColour = null;
+this.zappoColour = null;
+this.taylorColour = null;
+this.hydrophobicityColour = null;
+this.helixColour = null;
+this.strandColour = null;
+this.turnColour = null;
+this.buriedColour = null;
+this.purinePyrimidineColour = null;
+this.RNAInteractionColour = null;
+this.RNAHelixColour = null;
+this.userDefinedColour = null;
+this.PIDColour = null;
+this.BLOSUM62Colour = null;
+this.tcoffeeColour = null;
+this.njTreeBlosumMenuItem = null;
+this.avDistanceTreeBlosumMenuItem = null;
+this.annotationPanelMenuItem = null;
+this.colourTextMenuItem = null;
+this.displayNonconservedMenuItem = null;
+this.alProperties = null;
+this.overviewMenuItem = null;
+this.undoMenuItem = null;
+this.redoMenuItem = null;
+this.conservationMenuItem = null;
+this.noColourmenuItem = null;
+this.wrapMenuItem = null;
+this.renderGapsMenuItem = null;
+this.findMenuItem = null;
+this.abovePIDThreshold = null;
+this.nucleotideColour = null;
+this.deleteGroups = null;
+this.grpsFromSelection = null;
+this.createGroup = null;
+this.unGroup = null;
+this.$delete = null;
+this.copy = null;
+this.cut = null;
+this.pasteMenu = null;
+this.pasteNew = null;
+this.pasteThis = null;
+this.applyToAllGroups = null;
+this.$font = null;
+this.scaleAbove = null;
+this.scaleLeft = null;
+this.scaleRight = null;
+this.modifyPID = null;
+this.modifyConservation = null;
+this.autoCalculate = null;
+this.$sortByTree = null;
+this.sortByTreeMenu = null;
+this.inputText = null;
+this.documentation = null;
+this.about = null;
+this.seqLimits = null;
+this.centreColumnLabelFlag = null;
+this.followMouseOverFlag = null;
+this.showSequenceLogo = null;
+this.applyAutoAnnotationSettings = null;
+this.showConsensusHistogram = null;
+this.showGroupConsensus = null;
+this.showGroupConservation = null;
+this.normSequenceLogo = null;
+this.featureSettings = null;
+this.sequenceFeatures = null;
+this.annotationColour = null;
+this.annotationColumnSelection = null;
+this.invertColSel = null;
+this.showColumns = null;
+this.showSeqs = null;
+this.hideColumns = null;
+this.hideSequences = null;
+this.hideAllButSelection = null;
+this.hideAllSelection = null;
+this.showAllHidden = null;
+this.$newView = null;
+this.showAlignmentAnnotations = null;
+this.showSequenceAnnotations = null;
+this.sortAnnBySequence = null;
+this.sortAnnByLabel = null;
+this.showAutoFirst = null;
+this.showAutoLast = null;
+this.splitFrame = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AlignFrame", jalview.appletgui.EmbmenuFrame, [java.awt.event.ActionListener, java.awt.event.ItemListener, java.awt.event.KeyListener, jalview.api.AlignViewControllerGuiI]);
+Clazz.prepareFields (c$, function () {
+this.alignFrameMenuBar =  new awt2swing.MenuBar ();
+this.fileMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.file"));
+this.loadApplication =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.view_full_application"));
+this.$loadTree =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.load_associated_tree"));
+this.$loadAnnotations =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.load_features_annotations"));
+this.$outputFeatures =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.export_features").concat ("..."));
+this.$outputAnnotations =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.export_annotations").concat ("..."));
+this.closeMenuItem =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.close"));
+this.selectAllSequenceMenuItem =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.select_all"));
+this.deselectAllSequenceMenuItem =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.deselect_all"));
+this.invertSequenceMenuItem =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.invert_selection"));
+this.remove2LeftMenuItem =  new awt2swing.MenuItem ();
+this.remove2RightMenuItem =  new awt2swing.MenuItem ();
+this.removeGappedColumnMenuItem =  new awt2swing.MenuItem ();
+this.removeAllGapsMenuItem =  new awt2swing.MenuItem ();
+this.viewBoxesMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.viewTextMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.sortPairwiseMenuItem =  new awt2swing.MenuItem ();
+this.sortIDMenuItem =  new awt2swing.MenuItem ();
+this.sortLengthMenuItem =  new awt2swing.MenuItem ();
+this.sortGroupMenuItem =  new awt2swing.MenuItem ();
+this.removeRedundancyMenuItem =  new awt2swing.MenuItem ();
+this.pairwiseAlignmentMenuItem =  new awt2swing.MenuItem ();
+this.PCAMenuItem =  new awt2swing.MenuItem ();
+this.averageDistanceTreeMenuItem =  new awt2swing.MenuItem ();
+this.neighbourTreeMenuItem =  new awt2swing.MenuItem ();
+this.borderLayout1 =  new java.awt.BorderLayout ();
+this.statusBar =  new awt2swing.Label ();
+this.clustalColour =  new awt2swing.MenuItem ();
+this.zappoColour =  new awt2swing.MenuItem ();
+this.taylorColour =  new awt2swing.MenuItem ();
+this.hydrophobicityColour =  new awt2swing.MenuItem ();
+this.helixColour =  new awt2swing.MenuItem ();
+this.strandColour =  new awt2swing.MenuItem ();
+this.turnColour =  new awt2swing.MenuItem ();
+this.buriedColour =  new awt2swing.MenuItem ();
+this.purinePyrimidineColour =  new awt2swing.MenuItem ();
+this.RNAInteractionColour =  new awt2swing.MenuItem ();
+this.RNAHelixColour =  new awt2swing.MenuItem ();
+this.userDefinedColour =  new awt2swing.MenuItem ();
+this.PIDColour =  new awt2swing.MenuItem ();
+this.BLOSUM62Colour =  new awt2swing.MenuItem ();
+this.tcoffeeColour =  new awt2swing.MenuItem ();
+this.njTreeBlosumMenuItem =  new awt2swing.MenuItem ();
+this.avDistanceTreeBlosumMenuItem =  new awt2swing.MenuItem ();
+this.annotationPanelMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.colourTextMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.displayNonconservedMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.alProperties =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.alignment_props"));
+this.overviewMenuItem =  new awt2swing.MenuItem ();
+this.undoMenuItem =  new awt2swing.MenuItem ();
+this.redoMenuItem =  new awt2swing.MenuItem ();
+this.conservationMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.noColourmenuItem =  new awt2swing.MenuItem ();
+this.wrapMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.renderGapsMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.findMenuItem =  new awt2swing.MenuItem ();
+this.abovePIDThreshold =  new awt2swing.CheckboxMenuItem ();
+this.nucleotideColour =  new awt2swing.MenuItem ();
+this.deleteGroups =  new awt2swing.MenuItem ();
+this.grpsFromSelection =  new awt2swing.MenuItem ();
+this.createGroup =  new awt2swing.MenuItem ();
+this.unGroup =  new awt2swing.MenuItem ();
+this.$delete =  new awt2swing.MenuItem ();
+this.copy =  new awt2swing.MenuItem ();
+this.cut =  new awt2swing.MenuItem ();
+this.pasteMenu =  new awt2swing.Menu ();
+this.pasteNew =  new awt2swing.MenuItem ();
+this.pasteThis =  new awt2swing.MenuItem ();
+this.applyToAllGroups =  new awt2swing.CheckboxMenuItem ();
+this.$font =  new awt2swing.MenuItem ();
+this.scaleAbove =  new awt2swing.CheckboxMenuItem ();
+this.scaleLeft =  new awt2swing.CheckboxMenuItem ();
+this.scaleRight =  new awt2swing.CheckboxMenuItem ();
+this.modifyPID =  new awt2swing.MenuItem ();
+this.modifyConservation =  new awt2swing.MenuItem ();
+this.$sortByTree =  new awt2swing.CheckboxMenuItem ("Sort Alignment With New Tree", true);
+this.sortByTreeMenu =  new awt2swing.Menu ();
+this.inputText =  new awt2swing.MenuItem ();
+this.documentation =  new awt2swing.MenuItem ();
+this.about =  new awt2swing.MenuItem ();
+this.seqLimits =  new awt2swing.CheckboxMenuItem ();
+this.centreColumnLabelFlag =  new awt2swing.CheckboxMenuItem ();
+this.followMouseOverFlag =  new awt2swing.CheckboxMenuItem ();
+this.showSequenceLogo =  new awt2swing.CheckboxMenuItem ();
+this.applyAutoAnnotationSettings =  new awt2swing.CheckboxMenuItem ();
+this.showConsensusHistogram =  new awt2swing.CheckboxMenuItem ();
+this.showGroupConsensus =  new awt2swing.CheckboxMenuItem ();
+this.showGroupConservation =  new awt2swing.CheckboxMenuItem ();
+this.normSequenceLogo =  new awt2swing.CheckboxMenuItem ();
+this.featureSettings =  new awt2swing.MenuItem ();
+this.sequenceFeatures =  new awt2swing.CheckboxMenuItem ();
+this.annotationColour =  new awt2swing.MenuItem ();
+this.annotationColumnSelection =  new awt2swing.MenuItem ();
+this.invertColSel =  new awt2swing.MenuItem ();
+this.showColumns =  new awt2swing.MenuItem ();
+this.showSeqs =  new awt2swing.MenuItem ();
+this.hideColumns =  new awt2swing.MenuItem ();
+this.hideSequences =  new awt2swing.MenuItem ();
+this.hideAllButSelection =  new awt2swing.MenuItem ();
+this.hideAllSelection =  new awt2swing.MenuItem ();
+this.showAllHidden =  new awt2swing.MenuItem ();
+this.$newView =  new awt2swing.MenuItem ();
+});
+Clazz.makeConstructor (c$, 
+function (al, applet, title, embedded) {
+this.construct (al, applet, title, embedded, true);
+}, "jalview.datamodel.AlignmentI,jalview.bin.JalviewLite,~S,~B");
+Clazz.makeConstructor (c$, 
+function (al, applet, title, embedded, addToDisplay) {
+this.construct (al, null, null, applet, title, embedded, addToDisplay);
+}, "jalview.datamodel.AlignmentI,jalview.bin.JalviewLite,~S,~B,~B");
+Clazz.makeConstructor (c$, 
+function (al, hiddenSeqs, columnSelection, applet, title, embedded) {
+this.construct (al, hiddenSeqs, columnSelection, applet, title, embedded, true);
+}, "jalview.datamodel.AlignmentI,~A,jalview.datamodel.ColumnSelection,jalview.bin.JalviewLite,~S,~B");
+Clazz.makeConstructor (c$, 
+function (al, hiddenSeqs, columnSelection, applet, title, embedded, addToDisplay) {
+Clazz.superConstructor (this, jalview.appletgui.AlignFrame, []);
+if (applet != null) {
+this.jalviewServletURL = applet.jalviewServletURL;
+}try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+if (applet != null) {
+var param;
+try {
+param = applet.windowWidth;
+if (param != null) {
+var width = Integer.parseInt (param);
+this.frameWidth = width;
+}param = applet.windowHeight;
+if (param != null) {
+var height = Integer.parseInt (param);
+this.frameHeight = height;
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}this.viewport =  new jalview.appletgui.AlignViewport (al, applet);
+if (hiddenSeqs != null && hiddenSeqs.length > 0) {
+this.viewport.hideSequence (hiddenSeqs);
+}if (columnSelection != null) {
+this.viewport.setColumnSelection (columnSelection);
+}this.alignPanel =  new jalview.appletgui.AlignmentPanel (this, this.viewport);
+this.avc =  new jalview.controller.AlignViewController (this, this.viewport, this.alignPanel);
+this.viewport.updateConservation (this.alignPanel);
+this.viewport.updateConsensus (this.alignPanel);
+this.displayNonconservedMenuItem.setState (this.viewport.getShowUnconserved ());
+this.followMouseOverFlag.setState (this.viewport.isFollowHighlight ());
+this.showGroupConsensus.setState (this.viewport.isShowGroupConsensus ());
+this.showGroupConservation.setState (this.viewport.isShowGroupConservation ());
+this.showConsensusHistogram.setState (this.viewport.isShowConsensusHistogram ());
+this.showSequenceLogo.setState (this.viewport.isShowSequenceLogo ());
+this.normSequenceLogo.setState (this.viewport.isNormaliseSequenceLogo ());
+this.applyToAllGroups.setState (this.viewport.getColourAppliesToAllGroups ());
+this.annotationPanelMenuItem.setState (this.viewport.isShowAnnotation ());
+this.showAlignmentAnnotations.setState (this.viewport.isShowAnnotation ());
+this.showSequenceAnnotations.setState (this.viewport.isShowAnnotation ());
+this.seqLimits.setState (this.viewport.getShowJVSuffix ());
+if (applet != null) {
+var param = applet.sortBy;
+if (param != null) {
+if (param.equalsIgnoreCase ("Id")) {
+this.sortIDMenuItem_actionPerformed ();
+} else if (param.equalsIgnoreCase ("Pairwise Identity")) {
+this.sortPairwiseMenuItem_actionPerformed ();
+} else if (param.equalsIgnoreCase ("Length")) {
+this.sortLengthMenuItem_actionPerformed ();
+}}param = applet.wrap;
+if (param != null) {
+if (param.equalsIgnoreCase ("true")) {
+this.wrapMenuItem.setState (true);
+this.wrapMenuItem_actionPerformed ();
+}}param = applet.centrecolumnlabels;
+if (param != null) {
+this.centreColumnLabelFlag.setState (true);
+this.centreColumnLabelFlag_stateChanged ();
+}}if (this.viewport.getAlignment ().isNucleotide ()) {
+this.viewport.updateStrucConsensus (this.alignPanel);
+if (this.viewport.getAlignment ().hasRNAStructure ()) {
+this.RNAHelixColour.setEnabled (true);
+} else {
+this.RNAHelixColour.setEnabled (false);
+}} else {
+this.RNAHelixColour.setEnabled (false);
+this.purinePyrimidineColour.setEnabled (false);
+}this.addKeyListener (this);
+this.alignPanel.seqPanel.seqCanvas.addKeyListener (this);
+this.alignPanel.idPanel.idCanvas.addKeyListener (this);
+this.alignPanel.scalePanel.addKeyListener (this);
+this.alignPanel.annotationPanel.addKeyListener (this);
+this.alignPanel.annotationPanelHolder.addKeyListener (this);
+this.alignPanel.annotationSpaceFillerHolder.addKeyListener (this);
+this.alignPanel.alabels.addKeyListener (this);
+if (addToDisplay) {
+this.addToDisplay (embedded);
+}}, "jalview.datamodel.AlignmentI,~A,jalview.datamodel.ColumnSelection,jalview.bin.JalviewLite,~S,~B,~B");
+Clazz.defineMethod (c$, "addToDisplay", 
+function (embedded) {
+this.createAlignFrameWindow (embedded);
+this.validate ();
+this.alignPanel.adjustAnnotationHeight ();
+this.alignPanel.paintAlignment (true);
+}, "~B");
+Clazz.defineMethod (c$, "getAlignViewport", 
+function () {
+return this.viewport;
+});
+Clazz.defineMethod (c$, "getSeqcanvas", 
+function () {
+return this.alignPanel.seqPanel.seqCanvas;
+});
+Clazz.defineMethod (c$, "parseFeaturesFile", 
+function (file, type) {
+return this.parseFeaturesFile (file, type, true);
+}, "~S,~S");
+Clazz.defineMethod (c$, "parseFeaturesFile", 
+function (file, type, autoenabledisplay) {
+var featureLinks =  new java.util.Hashtable ();
+var featuresFile = false;
+try {
+featuresFile =  new jalview.io.FeaturesFile (file, type).parse (this.viewport.getAlignment (), this.alignPanel.seqPanel.seqCanvas.getFeatureRenderer ().getFeatureColours (), featureLinks, true, this.viewport.applet.getDefaultParameter ("relaxedidmatch", false));
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+if (featuresFile) {
+if (featureLinks.size () > 0) {
+this.alignPanel.seqPanel.seqCanvas.getFeatureRenderer ().featureLinks = featureLinks;
+}if (autoenabledisplay) {
+this.viewport.setShowSequenceFeatures (true);
+this.sequenceFeatures.setState (true);
+}if (this.alignPanel.seqPanel.seqCanvas.fr != null) {
+this.alignPanel.seqPanel.seqCanvas.fr.findAllFeatures (true);
+}if (this.viewport.featureSettings != null) {
+this.viewport.featureSettings.refreshTable ();
+}this.alignPanel.paintAlignment (true);
+this.setStatus (jalview.util.MessageManager.getString ("label.successfully_added_features_alignment"));
+}return featuresFile;
+}, "~S,~S,~B");
+Clazz.overrideMethod (c$, "keyPressed", 
+function (evt) {
+if (this.viewport.cursorMode && ((evt.getKeyCode () >= 48 && evt.getKeyCode () <= 57) || (evt.getKeyCode () >= 96 && evt.getKeyCode () <= 105)) && Character.isDigit (evt.getKeyChar ())) {
+this.alignPanel.seqPanel.numberPressed (evt.getKeyChar ());
+}switch (evt.getKeyCode ()) {
+case 27:
+this.deselectAllSequenceMenuItem_actionPerformed ();
+this.alignPanel.alabels.cancelDrag ();
+break;
+case 88:
+if (evt.isControlDown () || evt.isMetaDown ()) {
+this.cut_actionPerformed ();
+}break;
+case 67:
+if (this.viewport.cursorMode && !evt.isControlDown ()) {
+this.alignPanel.seqPanel.setCursorColumn ();
+}if (evt.isControlDown () || evt.isMetaDown ()) {
+this.copy_actionPerformed ();
+}break;
+case 86:
+if (evt.isControlDown ()) {
+this.paste (evt.isShiftDown ());
+}break;
+case 65:
+if (evt.isControlDown () || evt.isMetaDown ()) {
+this.selectAllSequenceMenuItem_actionPerformed ();
+}break;
+case 40:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.moveCursor (0, 1);
+} else {
+this.moveSelectedSequences (false);
+}break;
+case 38:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.moveCursor (0, -1);
+} else {
+this.moveSelectedSequences (true);
+}break;
+case 37:
+if (evt.isAltDown () || !this.viewport.cursorMode) {
+this.slideSequences (false, this.alignPanel.seqPanel.getKeyboardNo1 ());
+} else {
+this.alignPanel.seqPanel.moveCursor (-1, 0);
+}break;
+case 39:
+if (evt.isAltDown () || !this.viewport.cursorMode) {
+this.slideSequences (true, this.alignPanel.seqPanel.getKeyboardNo1 ());
+} else {
+this.alignPanel.seqPanel.moveCursor (1, 0);
+}break;
+case 32:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.insertGapAtCursor (evt.isControlDown () || evt.isShiftDown () || evt.isAltDown ());
+}break;
+case 127:
+case 8:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.deleteGapAtCursor (evt.isControlDown () || evt.isShiftDown () || evt.isAltDown ());
+} else {
+this.cut_actionPerformed ();
+this.alignPanel.seqPanel.seqCanvas.repaint ();
+}break;
+case 83:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setCursorRow ();
+}break;
+case 80:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setCursorPosition ();
+}break;
+case 10:
+case 44:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setCursorRowAndColumn ();
+}break;
+case 81:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setSelectionAreaAtCursor (true);
+}break;
+case 77:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setSelectionAreaAtCursor (false);
+}break;
+case 113:
+this.viewport.cursorMode = !this.viewport.cursorMode;
+this.setStatus (jalview.util.MessageManager.formatMessage ("label.keyboard_editing_mode",  Clazz.newArray (-1, [(this.viewport.cursorMode ? "on" : "off")])));
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.seqCanvas.cursorX = this.viewport.startRes;
+this.alignPanel.seqPanel.seqCanvas.cursorY = this.viewport.startSeq;
+}break;
+case 70:
+if (evt.isControlDown ()) {
+this.findMenuItem_actionPerformed ();
+}break;
+case 72:
+{
+var toggleSeqs = !evt.isControlDown ();
+var toggleCols = !evt.isShiftDown ();
+this.toggleHiddenRegions (toggleSeqs, toggleCols);
+break;
+}case 33:
+if (this.viewport.getWrapAlignment ()) {
+this.alignPanel.scrollUp (true);
+} else {
+this.alignPanel.setScrollValues (this.viewport.startRes, this.viewport.startSeq - this.viewport.endSeq + this.viewport.startSeq);
+}break;
+case 34:
+if (this.viewport.getWrapAlignment ()) {
+this.alignPanel.scrollUp (false);
+} else {
+this.alignPanel.setScrollValues (this.viewport.startRes, this.viewport.startSeq + this.viewport.endSeq - this.viewport.startSeq);
+}break;
+case 90:
+if (evt.isControlDown ()) {
+this.undoMenuItem_actionPerformed ();
+}break;
+case 89:
+if (evt.isControlDown ()) {
+this.redoMenuItem_actionPerformed ();
+}break;
+case 76:
+if (evt.isControlDown ()) {
+this.trimAlignment (true);
+}break;
+case 82:
+if (evt.isControlDown ()) {
+this.trimAlignment (false);
+}break;
+case 69:
+if (evt.isControlDown ()) {
+if (evt.isShiftDown ()) {
+this.removeAllGapsMenuItem_actionPerformed ();
+} else {
+this.removeGappedColumnMenuItem_actionPerformed ();
+}}break;
+case 73:
+if (evt.isControlDown ()) {
+if (evt.isAltDown ()) {
+this.invertColSel_actionPerformed ();
+} else {
+this.invertSequenceMenuItem_actionPerformed ();
+}}break;
+case 71:
+if (evt.isControlDown ()) {
+if (evt.isShiftDown ()) {
+this.unGroup_actionPerformed ();
+} else {
+this.createGroup_actionPerformed ();
+}}break;
+case 85:
+if (evt.isControlDown ()) {
+this.deleteGroups_actionPerformed ();
+}break;
+case 84:
+if (evt.isControlDown ()) {
+this.newView (null);
+}break;
+}
+this.alignPanel.paintAlignment (true);
+}, "java.awt.event.KeyEvent");
+Clazz.defineMethod (c$, "toggleHiddenRegions", 
+($fz = function (toggleSeqs, toggleCols) {
+var hide = false;
+var sg = this.viewport.getSelectionGroup ();
+if (!toggleSeqs && !toggleCols) {
+if ((this.viewport.getColumnSelection () != null && this.viewport.getColumnSelection ().getSelected () != null && this.viewport.getColumnSelection ().getSelected ().size () > 0) || (sg != null && sg.getSize () > 0 && sg.getStartRes () <= sg.getEndRes ())) {
+if (sg != null) {
+this.invertSequenceMenuItem_actionPerformed ();
+sg = this.viewport.getSelectionGroup ();
+toggleSeqs = true;
+}this.viewport.expandColSelection (sg, true);
+this.invertColSel_actionPerformed ();
+toggleCols = true;
+}}if (toggleSeqs) {
+if (sg != null && sg.getSize () != this.viewport.getAlignment ().getHeight ()) {
+hide = true;
+this.viewport.hideAllSelectedSeqs ();
+} else if (!(toggleCols && this.viewport.getColumnSelection ().getSelected ().size () > 0)) {
+this.viewport.showAllHiddenSeqs ();
+}}if (toggleCols) {
+if (this.viewport.getColumnSelection ().getSelected ().size () > 0) {
+this.viewport.hideSelectedColumns ();
+if (!toggleSeqs) {
+this.viewport.setSelectionGroup (sg);
+}} else if (!hide) {
+this.viewport.showAllHiddenColumns ();
+}}}, $fz.isPrivate = true, $fz), "~B,~B");
+Clazz.overrideMethod (c$, "keyReleased", 
+function (evt) {
+}, "java.awt.event.KeyEvent");
+Clazz.overrideMethod (c$, "keyTyped", 
+function (evt) {
+}, "java.awt.event.KeyEvent");
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+var source = evt.getSource ();
+if (source === this.displayNonconservedMenuItem) {
+this.displayNonconservedMenuItem_actionPerformed ();
+} else if (source === this.colourTextMenuItem) {
+this.colourTextMenuItem_actionPerformed ();
+} else if (source === this.wrapMenuItem) {
+this.wrapMenuItem_actionPerformed ();
+} else if (source === this.scaleAbove) {
+this.viewport.setScaleAboveWrapped (this.scaleAbove.getState ());
+} else if (source === this.scaleLeft) {
+this.viewport.setScaleLeftWrapped (this.scaleLeft.getState ());
+} else if (source === this.scaleRight) {
+this.viewport.setScaleRightWrapped (this.scaleRight.getState ());
+} else if (source === this.seqLimits) {
+this.seqLimits_itemStateChanged ();
+} else if (source === this.viewBoxesMenuItem) {
+this.viewport.setShowBoxes (this.viewBoxesMenuItem.getState ());
+} else if (source === this.viewTextMenuItem) {
+this.viewport.setShowText (this.viewTextMenuItem.getState ());
+} else if (source === this.renderGapsMenuItem) {
+this.viewport.setRenderGaps (this.renderGapsMenuItem.getState ());
+} else if (source === this.annotationPanelMenuItem) {
+this.viewport.setShowAnnotation (this.annotationPanelMenuItem.getState ());
+this.alignPanel.setAnnotationVisible (this.annotationPanelMenuItem.getState ());
+} else if (source === this.sequenceFeatures) {
+this.viewport.setShowSequenceFeatures (this.sequenceFeatures.getState ());
+this.alignPanel.seqPanel.seqCanvas.repaint ();
+} else if (source === this.showAlignmentAnnotations) {
+this.setAnnotationsVisibility ();
+} else if (source === this.showSequenceAnnotations) {
+this.setAnnotationsVisibility ();
+} else if (source === this.sortAnnBySequence) {
+var newState = this.sortAnnBySequence.getState ();
+this.sortAnnByLabel.setState (false);
+this.setAnnotationSortOrder (newState ? jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.SEQUENCE_AND_LABEL : jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE);
+this.setViewportAnnotationOrder ();
+} else if (source === this.sortAnnByLabel) {
+var newState = this.sortAnnByLabel.getState ();
+this.sortAnnBySequence.setState (false);
+this.setAnnotationSortOrder (newState ? jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.LABEL_AND_SEQUENCE : jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE);
+this.setViewportAnnotationOrder ();
+} else if (source === this.showAutoFirst) {
+this.showAutoLast.setState (!this.showAutoFirst.getState ());
+this.setShowAutoCalculatedAbove (this.showAutoFirst.getState ());
+this.setViewportAnnotationOrder ();
+} else if (source === this.showAutoLast) {
+this.showAutoFirst.setState (!this.showAutoLast.getState ());
+this.setShowAutoCalculatedAbove (this.showAutoFirst.getState ());
+this.setViewportAnnotationOrder ();
+} else if (source === this.conservationMenuItem) {
+this.conservationMenuItem_actionPerformed ();
+} else if (source === this.abovePIDThreshold) {
+this.abovePIDThreshold_actionPerformed ();
+} else if (source === this.applyToAllGroups) {
+this.viewport.setColourAppliesToAllGroups (this.applyToAllGroups.getState ());
+} else if (source === this.autoCalculate) {
+this.viewport.autoCalculateConsensus = this.autoCalculate.getState ();
+} else if (source === this.$sortByTree) {
+this.viewport.sortByTree = this.$sortByTree.getState ();
+} else if (source === this.centreColumnLabelFlag) {
+this.centreColumnLabelFlag_stateChanged ();
+} else if (source === this.followMouseOverFlag) {
+this.mouseOverFlag_stateChanged ();
+} else if (source === this.showGroupConsensus) {
+this.showGroupConsensus_actionPerformed ();
+} else if (source === this.showGroupConservation) {
+this.showGroupConservation_actionPerformed ();
+} else if (source === this.showSequenceLogo) {
+this.showSequenceLogo_actionPerformed ();
+} else if (source === this.normSequenceLogo) {
+this.normSequenceLogo_actionPerformed ();
+} else if (source === this.showConsensusHistogram) {
+this.showConsensusHistogram_actionPerformed ();
+} else if (source === this.applyAutoAnnotationSettings) {
+this.applyAutoAnnotationSettings_actionPerformed ();
+}this.alignPanel.paintAlignment (true);
+}, "java.awt.event.ItemEvent");
+Clazz.defineMethod (c$, "setAnnotationsVisibility", 
+($fz = function () {
+var showForAlignment = this.showAlignmentAnnotations.getState ();
+var showForSequences = this.showSequenceAnnotations.getState ();
+for (var aa, $aa = 0, $$aa = this.alignPanel.getAlignment ().getAlignmentAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
+var visible = (aa.sequenceRef == null ? showForAlignment : showForSequences);
+aa.visible = visible;
+}
+this.alignPanel.validateAnnotationDimensions (true);
+this.validate ();
+this.repaint ();
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "setAnnotationSortOrder", 
+($fz = function (order) {
+this.annotationSortOrder = order;
+}, $fz.isPrivate = true, $fz), "jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");
+Clazz.defineMethod (c$, "setViewportAnnotationOrder", 
+($fz = function () {
+this.alignPanel.av.setSortAnnotationsBy (this.annotationSortOrder);
+this.alignPanel.av.setShowAutocalculatedAbove (this.showAutoCalculatedAbove);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "setShowAutoCalculatedAbove", 
+($fz = function (showAbove) {
+this.showAutoCalculatedAbove = showAbove;
+}, $fz.isPrivate = true, $fz), "~B");
+Clazz.defineMethod (c$, "mouseOverFlag_stateChanged", 
+($fz = function () {
+this.viewport.setFollowHighlight (this.followMouseOverFlag.getState ());
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "centreColumnLabelFlag_stateChanged", 
+($fz = function () {
+this.viewport.centreColumnLabels = this.centreColumnLabelFlag.getState ();
+this.alignPanel.annotationPanel.repaint ();
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+var source = evt.getSource ();
+if (source === this.inputText) {
+this.inputText_actionPerformed ();
+} else if (source === this.$loadTree) {
+this.loadTree_actionPerformed ();
+} else if (source === this.loadApplication) {
+this.launchFullApplication ();
+} else if (source === this.$loadAnnotations) {
+this.loadAnnotations ();
+} else if (source === this.$outputAnnotations) {
+this.outputAnnotations (true);
+} else if (source === this.$outputFeatures) {
+this.outputFeatures (true, "Jalview");
+} else if (source === this.closeMenuItem) {
+this.closeMenuItem_actionPerformed ();
+} else if (source === this.copy) {
+this.copy_actionPerformed ();
+} else if (source === this.undoMenuItem) {
+this.undoMenuItem_actionPerformed ();
+} else if (source === this.redoMenuItem) {
+this.redoMenuItem_actionPerformed ();
+} else if (source === this.inputText) {
+this.inputText_actionPerformed ();
+} else if (source === this.closeMenuItem) {
+this.closeMenuItem_actionPerformed ();
+} else if (source === this.undoMenuItem) {
+this.undoMenuItem_actionPerformed ();
+} else if (source === this.redoMenuItem) {
+this.redoMenuItem_actionPerformed ();
+} else if (source === this.copy) {
+this.copy_actionPerformed ();
+} else if (source === this.pasteNew) {
+this.pasteNew_actionPerformed ();
+} else if (source === this.pasteThis) {
+this.pasteThis_actionPerformed ();
+} else if (source === this.cut) {
+this.cut_actionPerformed ();
+} else if (source === this.$delete) {
+this.delete_actionPerformed ();
+} else if (source === this.grpsFromSelection) {
+this.makeGrpsFromSelection_actionPerformed ();
+} else if (source === this.deleteGroups) {
+this.deleteGroups_actionPerformed ();
+} else if (source === this.selectAllSequenceMenuItem) {
+this.selectAllSequenceMenuItem_actionPerformed ();
+} else if (source === this.deselectAllSequenceMenuItem) {
+this.deselectAllSequenceMenuItem_actionPerformed ();
+} else if (source === this.invertSequenceMenuItem) {
+this.invertSequenceMenuItem_actionPerformed ();
+} else if (source === this.invertColSel) {
+this.viewport.invertColumnSelection ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.remove2LeftMenuItem) {
+this.trimAlignment (true);
+} else if (source === this.remove2RightMenuItem) {
+this.trimAlignment (false);
+} else if (source === this.removeGappedColumnMenuItem) {
+this.removeGappedColumnMenuItem_actionPerformed ();
+} else if (source === this.removeAllGapsMenuItem) {
+this.removeAllGapsMenuItem_actionPerformed ();
+} else if (source === this.findMenuItem) {
+this.findMenuItem_actionPerformed ();
+} else if (source === this.$font) {
+ new jalview.appletgui.FontChooser (this.alignPanel);
+} else if (source === this.$newView) {
+this.newView (null);
+} else if (source === this.showColumns) {
+this.viewport.showAllHiddenColumns ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.showSeqs) {
+this.viewport.showAllHiddenSeqs ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.hideColumns) {
+this.viewport.hideSelectedColumns ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.hideSequences && this.viewport.getSelectionGroup () != null) {
+this.viewport.hideAllSelectedSeqs ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.hideAllButSelection) {
+this.toggleHiddenRegions (false, false);
+this.alignPanel.paintAlignment (true);
+} else if (source === this.hideAllSelection) {
+var sg = this.viewport.getSelectionGroup ();
+this.viewport.expandColSelection (sg, false);
+this.viewport.hideAllSelectedSeqs ();
+this.viewport.hideSelectedColumns ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.showAllHidden) {
+this.viewport.showAllHiddenColumns ();
+this.viewport.showAllHiddenSeqs ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.showGroupConsensus) {
+this.showGroupConsensus_actionPerformed ();
+} else if (source === this.showGroupConservation) {
+this.showGroupConservation_actionPerformed ();
+} else if (source === this.showSequenceLogo) {
+this.showSequenceLogo_actionPerformed ();
+} else if (source === this.normSequenceLogo) {
+this.normSequenceLogo_actionPerformed ();
+} else if (source === this.showConsensusHistogram) {
+this.showConsensusHistogram_actionPerformed ();
+} else if (source === this.applyAutoAnnotationSettings) {
+this.applyAutoAnnotationSettings_actionPerformed ();
+} else if (source === this.featureSettings) {
+ new jalview.appletgui.FeatureSettings (this.alignPanel);
+} else if (source === this.alProperties) {
+var contents =  new jalview.io.AlignmentProperties (this.viewport.getAlignment ()).formatAsString ();
+var cap =  new jalview.appletgui.CutAndPasteTransfer (false, this);
+cap.setText (contents.toString ());
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.alignment_properties",  Clazz.newArray (-1, [this.getTitle ()])), 400, 250);
+} else if (source === this.overviewMenuItem) {
+this.overviewMenuItem_actionPerformed ();
+} else if (source === this.noColourmenuItem) {
+this.changeColour (null);
+} else if (source === this.clustalColour) {
+this.abovePIDThreshold.setState (false);
+this.changeColour ( new jalview.schemes.ClustalxColourScheme (this.viewport.getAlignment (), null));
+} else if (source === this.zappoColour) {
+this.changeColour ( new jalview.schemes.ZappoColourScheme ());
+} else if (source === this.taylorColour) {
+this.changeColour ( new jalview.schemes.TaylorColourScheme ());
+} else if (source === this.hydrophobicityColour) {
+this.changeColour ( new jalview.schemes.HydrophobicColourScheme ());
+} else if (source === this.helixColour) {
+this.changeColour ( new jalview.schemes.HelixColourScheme ());
+} else if (source === this.strandColour) {
+this.changeColour ( new jalview.schemes.StrandColourScheme ());
+} else if (source === this.turnColour) {
+this.changeColour ( new jalview.schemes.TurnColourScheme ());
+} else if (source === this.buriedColour) {
+this.changeColour ( new jalview.schemes.BuriedColourScheme ());
+} else if (source === this.nucleotideColour) {
+this.changeColour ( new jalview.schemes.NucleotideColourScheme ());
+} else if (source === this.purinePyrimidineColour) {
+this.changeColour ( new jalview.schemes.PurinePyrimidineColourScheme ());
+} else if (source === this.RNAInteractionColour) {
+this.changeColour ( new jalview.schemes.RNAInteractionColourScheme ());
+} else if (source === this.RNAHelixColour) {
+ new jalview.schemes.RNAHelicesColourChooser (this.viewport, this.alignPanel);
+} else if (source === this.modifyPID) {
+this.modifyPID_actionPerformed ();
+} else if (source === this.modifyConservation) {
+this.modifyConservation_actionPerformed ();
+} else if (source === this.userDefinedColour) {
+ new jalview.appletgui.UserDefinedColours (this.alignPanel, null);
+} else if (source === this.PIDColour) {
+this.changeColour ( new jalview.schemes.PIDColourScheme ());
+} else if (source === this.BLOSUM62Colour) {
+this.changeColour ( new jalview.schemes.Blosum62ColourScheme ());
+} else if (source === this.tcoffeeColour) {
+this.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignPanel.getAlignment ()));
+} else if (source === this.annotationColour) {
+ new jalview.appletgui.AnnotationColourChooser (this.viewport, this.alignPanel);
+} else if (source === this.annotationColumnSelection) {
+ new jalview.appletgui.AnnotationColumnChooser (this.viewport, this.alignPanel);
+} else if (source === this.sortPairwiseMenuItem) {
+this.sortPairwiseMenuItem_actionPerformed ();
+} else if (source === this.sortIDMenuItem) {
+this.sortIDMenuItem_actionPerformed ();
+} else if (source === this.sortLengthMenuItem) {
+this.sortLengthMenuItem_actionPerformed ();
+} else if (source === this.sortGroupMenuItem) {
+this.sortGroupMenuItem_actionPerformed ();
+} else if (source === this.removeRedundancyMenuItem) {
+this.removeRedundancyMenuItem_actionPerformed ();
+} else if (source === this.pairwiseAlignmentMenuItem) {
+this.pairwiseAlignmentMenuItem_actionPerformed ();
+} else if (source === this.PCAMenuItem) {
+this.PCAMenuItem_actionPerformed ();
+} else if (source === this.averageDistanceTreeMenuItem) {
+this.averageDistanceTreeMenuItem_actionPerformed ();
+} else if (source === this.neighbourTreeMenuItem) {
+this.neighbourTreeMenuItem_actionPerformed ();
+} else if (source === this.njTreeBlosumMenuItem) {
+this.njTreeBlosumMenuItem_actionPerformed ();
+} else if (source === this.avDistanceTreeBlosumMenuItem) {
+this.avTreeBlosumMenuItem_actionPerformed ();
+} else if (source === this.documentation) {
+this.documentation_actionPerformed ();
+} else if (source === this.about) {
+this.about_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "inputText_actionPerformed", 
+function () {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.input_cut_paste"), 500, 500);
+});
+Clazz.defineMethod (c$, "outputText_actionPerformed", 
+function (e) {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.alignment_output_command",  Clazz.newArray (-1, [e.getActionCommand ()])), 600, 500);
+var fr = this.alignPanel.cloneFeatureRenderer ();
+cap.setText ( new jalview.io.AppletFormatAdapter (this.alignPanel).formatSequences (e.getActionCommand (), this.viewport.getAlignment (), this.viewport.getShowJVSuffix ()));
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "loadAnnotations", 
+function () {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this);
+cap.setText (jalview.util.MessageManager.getString ("label.paste_features_annotations_Tcoffee_here"));
+cap.setAnnotationImport ();
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("action.paste_annotations"), 400, 300);
+});
+Clazz.defineMethod (c$, "outputAnnotations", 
+function (displayTextbox) {
+var annotation =  new jalview.io.AnnotationFile ().printAnnotationsForView (this.viewport);
+if (displayTextbox) {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (false, this);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.annotations"), 600, 500);
+cap.setText (annotation);
+}return annotation;
+}, "~B");
+Clazz.defineMethod (c$, "getDisplayedFeatureCols", 
+($fz = function () {
+if (this.alignPanel.getFeatureRenderer () != null && this.viewport.getFeaturesDisplayed () != null) {
+return this.alignPanel.getFeatureRenderer ().getDisplayedFeatureCols ();
+}return null;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "outputFeatures", 
+function (displayTextbox, format) {
+var features;
+if (format.equalsIgnoreCase ("Jalview")) {
+features =  new jalview.io.FeaturesFile ().printJalviewFormat (this.viewport.getAlignment ().getSequencesArray (), this.getDisplayedFeatureCols ());
+} else {
+features =  new jalview.io.FeaturesFile ().printGFFFormat (this.viewport.getAlignment ().getSequencesArray (), this.getDisplayedFeatureCols ());
+}if (displayTextbox) {
+var frimport = false;
+if (features == null || features.equals ("No Features Visible")) {
+features = "# No features visible - paste some and import them here.";
+frimport = true;
+}var cap =  new jalview.appletgui.CutAndPasteTransfer (frimport, this);
+if (frimport) {
+cap.setAnnotationImport ();
+}var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.features"), 600, 500);
+cap.setText (features);
+} else {
+if (features == null) {
+features = "";
+}}return features;
+}, "~B,~S");
+Clazz.defineMethod (c$, "launchFullApplication", 
+function () {
+var url =  new StringBuffer (this.jalviewServletURL);
+var firstSep = url.lastIndexOf ("?") > url.lastIndexOf ("/") ? "&" : "?";
+url.append (firstSep);
+var applet = this.viewport.applet;
+var s = applet.startupFile;
+url.append ("open=" + this.appendProtocol (s));
+if (this.viewport.applet.features != null) {
+url.append ("&features=");
+url.append (this.appendProtocol (applet.features));
+}if (applet.annotations != null) {
+url.append ("&annotations=");
+url.append (this.appendProtocol (applet.annotations));
+}if (applet.jnetFile != null) {
+url.append ("&annotations=");
+url.append (this.appendProtocol (applet.jnetFile));
+}if (applet.defaultColour != null) {
+url.append ("&colour=" + this.removeWhiteSpace (applet.defaultColour));
+}if (applet.userDefinedColour != null) {
+url.append ("&colour=" + this.removeWhiteSpace (applet.userDefinedColour));
+}if (applet.treeFile != null) {
+url.append ("&tree=" + this.appendProtocol (applet.treeFile));
+}this.showURL (url.toString (), "FULL_APP");
+});
+Clazz.defineMethod (c$, "removeWhiteSpace", 
+function (colour) {
+var sb =  new StringBuffer ();
+for (var i = 0; i < colour.length; i++) {
+if (Character.isWhitespace (colour.charAt (i))) {
+sb.append ("%20");
+} else {
+sb.append (colour.charAt (i));
+}}
+return sb.toString ();
+}, "~S");
+Clazz.defineMethod (c$, "appendProtocol", 
+function (url) {
+try {
+ new java.net.URL (url);
+url = java.net.URLEncoder.encode (url);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, java.net.MalformedURLException)) {
+url = this.viewport.applet.getCodeBase () + url;
+} else {
+throw ex;
+}
+}
+return url;
+}, "~S");
+Clazz.defineMethod (c$, "closeMenuItem_actionPerformed", 
+function () {
+jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel);
+if (this.alignPanel.seqPanel != null && this.alignPanel.seqPanel.seqCanvas != null) {
+jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel.seqPanel.seqCanvas);
+}if (this.alignPanel.idPanel != null && this.alignPanel.idPanel.idCanvas != null) {
+jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel.idPanel.idCanvas);
+}if (jalview.appletgui.PaintRefresher.components.size () == 0 && this.viewport.applet == null) {
+System.exit (0);
+} else {
+}this.viewport = null;
+this.alignPanel = null;
+this.dispose ();
+});
+Clazz.defineMethod (c$, "updateEditMenuBar", 
+function () {
+if (this.viewport.getHistoryList ().size () > 0) {
+this.undoMenuItem.setEnabled (true);
+var command = this.viewport.getHistoryList ().peek ();
+this.undoMenuItem.setLabel (jalview.util.MessageManager.formatMessage ("label.undo_command",  Clazz.newArray (-1, [command.getDescription ()])));
+} else {
+this.undoMenuItem.setEnabled (false);
+this.undoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.undo"));
+}if (this.viewport.getRedoList ().size () > 0) {
+this.redoMenuItem.setEnabled (true);
+var command = this.viewport.getRedoList ().peek ();
+this.redoMenuItem.setLabel (jalview.util.MessageManager.formatMessage ("label.redo_command",  Clazz.newArray (-1, [command.getDescription ()])));
+} else {
+this.redoMenuItem.setEnabled (false);
+this.redoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.redo"));
+}});
+Clazz.overrideMethod (c$, "addHistoryItem", 
+function (command) {
+if (command.getSize () > 0) {
+this.viewport.addToHistoryList (command);
+this.viewport.clearRedoList ();
+this.updateEditMenuBar ();
+this.viewport.updateHiddenColumns ();
+}}, "jalview.commands.CommandI");
+Clazz.defineMethod (c$, "undoMenuItem_actionPerformed", 
+function () {
+if (this.viewport.getHistoryList ().isEmpty ()) {
+return;
+}var command = this.viewport.getHistoryList ().pop ();
+this.viewport.addToRedoList (command);
+command.undoCommand (null);
+var originalSource = this.getOriginatingSource (command);
+if (originalSource !== this.viewport) {
+System.err.println ("Warning: Viewport object mismatch whilst undoing");
+}originalSource.updateHiddenColumns ();
+this.updateEditMenuBar ();
+originalSource.firePropertyChange ("alignment", null, originalSource.getAlignment ().getSequences ());
+});
+Clazz.defineMethod (c$, "redoMenuItem_actionPerformed", 
+function () {
+if (this.viewport.getRedoList ().isEmpty ()) {
+return;
+}var command = this.viewport.getRedoList ().pop ();
+this.viewport.addToHistoryList (command);
+command.doCommand (null);
+var originalSource = this.getOriginatingSource (command);
+if (originalSource !== this.viewport) {
+System.err.println ("Warning: Viewport object mismatch whilst re-doing");
+}originalSource.updateHiddenColumns ();
+this.updateEditMenuBar ();
+originalSource.firePropertyChange ("alignment", null, originalSource.getAlignment ().getSequences ());
+});
+Clazz.defineMethod (c$, "getOriginatingSource", 
+function (command) {
+var originalSource = null;
+var al = null;
+if (Clazz.instanceOf (command, jalview.commands.EditCommand)) {
+var editCommand = command;
+al = editCommand.getAlignment ();
+var comps = jalview.appletgui.PaintRefresher.components.get (this.viewport.getSequenceSetId ());
+for (var i = 0; i < comps.size (); i++) {
+if (Clazz.instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {
+if (al === (comps.elementAt (i)).av.getAlignment ()) {
+originalSource = (comps.elementAt (i)).av;
+break;
+}}}
+}if (originalSource == null) {
+if (al != null) {
+jalview.appletgui.PaintRefresher.validateSequences (al, this.viewport.getAlignment ());
+}originalSource = this.viewport;
+}return originalSource;
+}, "jalview.commands.CommandI");
+Clazz.defineMethod (c$, "moveSelectedSequences", 
+function (up) {
+var sg = this.viewport.getSelectionGroup ();
+if (sg == null) {
+return;
+}this.viewport.getAlignment ().moveSelectedSequencesByOne (sg, up ? null : this.viewport.getHiddenRepSequences (), up);
+this.alignPanel.paintAlignment (true);
+var complement = this.viewport.getCodingComplement ();
+if (complement != null) {
+var mappedSelection = jalview.util.MappingUtils.mapSequenceGroup (sg, this.viewport, complement);
+complement.getAlignment ().moveSelectedSequencesByOne (mappedSelection, up ? null : complement.getHiddenRepSequences (), up);
+}}, "~B");
+Clazz.defineMethod (c$, "slideSequences", 
+function (right, size) {
+var sg =  new java.util.Vector ();
+if (this.viewport.cursorMode) {
+sg.add (this.viewport.getAlignment ().getSequenceAt (this.alignPanel.seqPanel.seqCanvas.cursorY));
+} else if (this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () != this.viewport.getAlignment ().getHeight ()) {
+sg = this.viewport.getSelectionGroup ().getSequences (this.viewport.getHiddenRepSequences ());
+}if (sg.size () < 1) {
+return;
+}var invertGroup =  new java.util.Vector ();
+for (var i = 0; i < this.viewport.getAlignment ().getHeight (); i++) {
+if (!sg.contains (this.viewport.getAlignment ().getSequenceAt (i))) {
+invertGroup.addElement (this.viewport.getAlignment ().getSequenceAt (i));
+}}
+var seqs1 = sg.toArray ( new Array (sg.size ()));
+var seqs2 = invertGroup.toArray ( new Array (invertGroup.size ()));
+for (var i = 0; i < invertGroup.size (); i++) {
+seqs2[i] = invertGroup.elementAt (i);
+}
+var ssc;
+if (right) {
+ssc =  new jalview.commands.SlideSequencesCommand ("Slide Sequences", seqs2, seqs1, size, this.viewport.getGapCharacter ());
+} else {
+ssc =  new jalview.commands.SlideSequencesCommand ("Slide Sequences", seqs1, seqs2, size, this.viewport.getGapCharacter ());
+}var groupAdjustment = 0;
+if (ssc.getGapsInsertedBegin () && right) {
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.moveCursor (size, 0);
+} else {
+groupAdjustment = size;
+}} else if (!ssc.getGapsInsertedBegin () && !right) {
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.moveCursor (-size, 0);
+} else {
+groupAdjustment = -size;
+}}if (groupAdjustment != 0) {
+this.viewport.getSelectionGroup ().setStartRes (this.viewport.getSelectionGroup ().getStartRes () + groupAdjustment);
+this.viewport.getSelectionGroup ().setEndRes (this.viewport.getSelectionGroup ().getEndRes () + groupAdjustment);
+}var appendHistoryItem = false;
+var historyList = this.viewport.getHistoryList ();
+if (historyList != null && historyList.size () > 0 && Clazz.instanceOf (historyList.peek (), jalview.commands.SlideSequencesCommand)) {
+appendHistoryItem = ssc.appendSlideCommand (historyList.peek ());
+}if (!appendHistoryItem) {
+this.addHistoryItem (ssc);
+}this.repaint ();
+}, "~B,~N");
+Clazz.defineMethod (c$, "copy_actionPerformed", 
+function () {
+if (this.viewport.getSelectionGroup () == null) {
+return;
+}var sg = this.viewport.getSelectionGroup ();
+jalview.appletgui.AlignFrame.copiedSequences =  new StringBuffer ();
+var orderedSeqs =  new java.util.HashMap ();
+for (var i = 0; i < sg.getSize (); i++) {
+var seq = sg.getSequenceAt (i);
+var index = this.viewport.getAlignment ().findIndex (seq);
+orderedSeqs.put (new Integer (index), seq);
+}
+var index = 0;
+var startRes;
+var endRes;
+var ch;
+if (this.viewport.hasHiddenColumns () && this.viewport.getSelectionGroup () != null) {
+jalview.appletgui.AlignFrame.copiedHiddenColumns =  new java.util.Vector ();
+var hiddenOffset = this.viewport.getSelectionGroup ().getStartRes ();
+for (var region, $region = this.viewport.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
+jalview.appletgui.AlignFrame.copiedHiddenColumns.addElement ( Clazz.newIntArray (-1, [region[0] - hiddenOffset, region[1] - hiddenOffset]));
+}
+} else {
+jalview.appletgui.AlignFrame.copiedHiddenColumns = null;
+}for (var i = 0; i < sg.getSize (); i++) {
+var seq = null;
+while (seq == null) {
+if (orderedSeqs.containsKey (new Integer (index))) {
+seq = orderedSeqs.get (new Integer (index));
+index++;
+break;
+} else {
+index++;
+}}
+startRes = seq.findPosition (sg.getStartRes ());
+endRes = 0;
+for (var j = 0; j < sg.getEndRes () + 1 && j < seq.getLength (); j++) {
+ch = seq.getCharAt (j);
+if (!jalview.util.Comparison.isGap ((ch))) {
+endRes++;
+}}
+if (endRes > 0) {
+endRes += seq.getStart () - 1;
+}jalview.appletgui.AlignFrame.copiedSequences.append (seq.getName () + "\t" + startRes + "\t" + endRes + "\t" + seq.getSequenceAsString (sg.getStartRes (), sg.getEndRes () + 1) + "\n");
+}
+});
+Clazz.defineMethod (c$, "pasteNew_actionPerformed", 
+function () {
+this.paste (true);
+});
+Clazz.defineMethod (c$, "pasteThis_actionPerformed", 
+function () {
+this.paste (false);
+});
+Clazz.defineMethod (c$, "paste", 
+function (newAlignment) {
+try {
+if (jalview.appletgui.AlignFrame.copiedSequences == null) {
+return;
+}var st =  new java.util.StringTokenizer (jalview.appletgui.AlignFrame.copiedSequences.toString ());
+var seqs =  new java.util.Vector ();
+while (st.hasMoreElements ()) {
+var name = st.nextToken ();
+var start = Integer.parseInt (st.nextToken ());
+var end = Integer.parseInt (st.nextToken ());
+seqs.addElement ( new jalview.datamodel.Sequence (name, st.nextToken (), start, end));
+}
+var newSeqs =  new Array (seqs.size ());
+for (var i = 0; i < seqs.size (); i++) {
+newSeqs[i] = seqs.elementAt (i);
+}
+if (newAlignment) {
+var newtitle = jalview.util.MessageManager.getString ("label.copied_sequences");
+if (this.getTitle ().startsWith (jalview.util.MessageManager.getString ("label.copied_sequences"))) {
+newtitle = this.getTitle ();
+} else {
+newtitle = newtitle.concat (jalview.util.MessageManager.formatMessage ("label.from_msname",  Clazz.newArray (-1, [this.getTitle ()])));
+}var af =  new jalview.appletgui.AlignFrame ( new jalview.datamodel.Alignment (newSeqs), this.viewport.applet, newtitle, false);
+if (jalview.appletgui.AlignFrame.copiedHiddenColumns != null) {
+for (var i = 0; i < jalview.appletgui.AlignFrame.copiedHiddenColumns.size (); i++) {
+var region = jalview.appletgui.AlignFrame.copiedHiddenColumns.elementAt (i);
+af.viewport.hideColumns (region[0], region[1]);
+}
+}jalview.bin.JalviewLite.addFrame (af, newtitle, this.frameWidth, this.frameHeight);
+} else {
+this.addSequences (newSeqs);
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}, "~B");
+Clazz.defineMethod (c$, "addSequences", 
+function (seqs) {
+for (var i = 0; i < seqs.length; i++) {
+this.viewport.getAlignment ().addSequence (seqs[i]);
+}
+this.addHistoryItem ( new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("label.add_sequences"), jalview.commands.EditCommand.Action.PASTE, seqs, 0, this.viewport.getAlignment ().getWidth (), this.viewport.getAlignment ()));
+this.viewport.setEndSeq (this.viewport.getAlignment ().getHeight ());
+this.viewport.getAlignment ().getWidth ();
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+}, "~A");
+Clazz.defineMethod (c$, "cut_actionPerformed", 
+function () {
+this.copy_actionPerformed ();
+this.delete_actionPerformed ();
+});
+Clazz.defineMethod (c$, "delete_actionPerformed", 
+function () {
+var sg = this.viewport.getSelectionGroup ();
+if (sg == null) {
+return;
+}var seqs =  new java.util.Vector ();
+var seq;
+for (var i = 0; i < sg.getSize (); i++) {
+seq = sg.getSequenceAt (i);
+seqs.addElement (seq);
+}
+if (sg.getSize () == this.viewport.getAlignment ().getHeight ()) {
+this.viewport.getColumnSelection ().removeElements (sg.getStartRes (), sg.getEndRes () + 1);
+}var cut =  new Array (seqs.size ());
+for (var i = 0; i < seqs.size (); i++) {
+cut[i] = seqs.elementAt (i);
+}
+this.addHistoryItem ( new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("label.cut_sequences"), jalview.commands.EditCommand.Action.CUT, cut, sg.getStartRes (), sg.getEndRes () - sg.getStartRes () + 1, this.viewport.getAlignment ()));
+this.viewport.setSelectionGroup (null);
+this.viewport.getAlignment ().deleteGroup (sg);
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+if (this.viewport.getAlignment ().getHeight () < 1) {
+this.setVisible (false);
+}this.viewport.sendSelection ();
+});
+Clazz.defineMethod (c$, "showGroupConsensus_actionPerformed", 
+function () {
+this.viewport.setShowGroupConsensus (this.showGroupConsensus.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz.defineMethod (c$, "showGroupConservation_actionPerformed", 
+function () {
+this.viewport.setShowGroupConservation (this.showGroupConservation.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz.defineMethod (c$, "showConsensusHistogram_actionPerformed", 
+function () {
+this.viewport.setShowConsensusHistogram (this.showConsensusHistogram.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz.defineMethod (c$, "showSequenceLogo_actionPerformed", 
+function () {
+this.viewport.setShowSequenceLogo (this.showSequenceLogo.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz.defineMethod (c$, "normSequenceLogo_actionPerformed", 
+function () {
+this.showSequenceLogo.setState (true);
+this.viewport.setShowSequenceLogo (true);
+this.viewport.setNormaliseSequenceLogo (this.normSequenceLogo.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz.defineMethod (c$, "applyAutoAnnotationSettings_actionPerformed", 
+function () {
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz.defineMethod (c$, "makeGrpsFromSelection_actionPerformed", 
+function () {
+if (this.avc.makeGroupsFromSelection ()) {
+jalview.appletgui.PaintRefresher.Refresh (this, this.viewport.getSequenceSetId ());
+this.alignPanel.updateAnnotation ();
+this.alignPanel.paintAlignment (true);
+}});
+Clazz.defineMethod (c$, "createGroup_actionPerformed", 
+function () {
+this.avc.createGroup ();
+});
+Clazz.defineMethod (c$, "unGroup_actionPerformed", 
+function () {
+if (this.avc.unGroup ()) {
+this.alignPanel.alignmentChanged ();
+}});
+Clazz.defineMethod (c$, "deleteGroups_actionPerformed", 
+function () {
+if (this.avc.deleteGroups ()) {
+this.alignPanel.alignmentChanged ();
+}});
+Clazz.defineMethod (c$, "selectAllSequenceMenuItem_actionPerformed", 
+function () {
+var sg =  new jalview.datamodel.SequenceGroup ();
+for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
+sg.addSequence (this.viewport.getAlignment ().getSequenceAt (i), false);
+}
+sg.setEndRes (this.viewport.getAlignment ().getWidth () - 1);
+this.viewport.setSelectionGroup (sg);
+this.alignPanel.paintAlignment (true);
+jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
+this.viewport.sendSelection ();
+});
+Clazz.defineMethod (c$, "deselectAllSequenceMenuItem_actionPerformed", 
+function () {
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.keyboardNo1 = null;
+this.alignPanel.seqPanel.keyboardNo2 = null;
+}this.viewport.setSelectionGroup (null);
+this.viewport.getColumnSelection ().clear ();
+this.viewport.setSelectionGroup (null);
+this.alignPanel.idPanel.idCanvas.searchResults = null;
+this.alignPanel.seqPanel.seqCanvas.highlightSearchResults (null);
+this.alignPanel.paintAlignment (true);
+jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
+this.viewport.sendSelection ();
+});
+Clazz.defineMethod (c$, "invertSequenceMenuItem_actionPerformed", 
+function () {
+var sg = this.viewport.getSelectionGroup ();
+for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
+sg.addOrRemove (this.viewport.getAlignment ().getSequenceAt (i), false);
+}
+jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
+this.viewport.sendSelection ();
+});
+Clazz.defineMethod (c$, "invertColSel_actionPerformed", 
+function () {
+this.viewport.invertColumnSelection ();
+this.alignPanel.paintAlignment (true);
+jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
+this.viewport.sendSelection ();
+});
+Clazz.defineMethod (c$, "trimAlignment", 
+function (trimLeft) {
+var colSel = this.viewport.getColumnSelection ();
+var column;
+if (colSel.size () > 0) {
+if (trimLeft) {
+column = colSel.getMin ();
+} else {
+column = colSel.getMax ();
+}var seqs;
+if (this.viewport.getSelectionGroup () != null) {
+seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());
+} else {
+seqs = this.viewport.getAlignment ().getSequencesArray ();
+}var trimRegion;
+if (trimLeft) {
+trimRegion =  new jalview.commands.TrimRegionCommand ("Remove Left", jalview.commands.TrimRegionCommand.TRIM_LEFT, seqs, column, this.viewport.getAlignment (), this.viewport.getColumnSelection (), this.viewport.getSelectionGroup ());
+this.viewport.setStartRes (0);
+} else {
+trimRegion =  new jalview.commands.TrimRegionCommand ("Remove Right", jalview.commands.TrimRegionCommand.TRIM_RIGHT, seqs, column, this.viewport.getAlignment (), this.viewport.getColumnSelection (), this.viewport.getSelectionGroup ());
+}this.setStatus (jalview.util.MessageManager.formatMessage ("label.removed_columns",  Clazz.newArray (-1, [Integer.$valueOf (trimRegion.getSize ()).toString ()])));
+this.addHistoryItem (trimRegion);
+for (var sg, $sg = this.viewport.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if ((trimLeft && !sg.adjustForRemoveLeft (column)) || (!trimLeft && !sg.adjustForRemoveRight (column))) {
+this.viewport.getAlignment ().deleteGroup (sg);
+}}
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+}}, "~B");
+Clazz.defineMethod (c$, "removeGappedColumnMenuItem_actionPerformed", 
+function () {
+var start = 0;
+var end = this.viewport.getAlignment ().getWidth () - 1;
+var seqs;
+if (this.viewport.getSelectionGroup () != null) {
+seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());
+start = this.viewport.getSelectionGroup ().getStartRes ();
+end = this.viewport.getSelectionGroup ().getEndRes ();
+} else {
+seqs = this.viewport.getAlignment ().getSequencesArray ();
+}var removeGapCols =  new jalview.commands.RemoveGapColCommand ("Remove Gapped Columns", seqs, start, end, this.viewport.getAlignment ());
+this.addHistoryItem (removeGapCols);
+this.setStatus (jalview.util.MessageManager.formatMessage ("label.removed_empty_columns",  Clazz.newArray (-1, [Integer.$valueOf (removeGapCols.getSize ()).toString ()])));
+var seq = this.viewport.getAlignment ().getSequenceAt (0);
+var startRes = seq.findPosition (this.viewport.startRes);
+this.viewport.setStartRes (seq.findIndex (startRes) - 1);
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+});
+Clazz.defineMethod (c$, "removeAllGapsMenuItem_actionPerformed", 
+function () {
+var start = 0;
+var end = this.viewport.getAlignment ().getWidth () - 1;
+var seqs;
+if (this.viewport.getSelectionGroup () != null) {
+seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());
+start = this.viewport.getSelectionGroup ().getStartRes ();
+end = this.viewport.getSelectionGroup ().getEndRes ();
+} else {
+seqs = this.viewport.getAlignment ().getSequencesArray ();
+}var seq = this.viewport.getAlignment ().getSequenceAt (0);
+var startRes = seq.findPosition (this.viewport.startRes);
+this.addHistoryItem ( new jalview.commands.RemoveGapsCommand ("Remove Gaps", seqs, start, end, this.viewport.getAlignment ()));
+this.viewport.setStartRes (seq.findIndex (startRes) - 1);
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+});
+Clazz.defineMethod (c$, "findMenuItem_actionPerformed", 
+function () {
+ new jalview.appletgui.Finder (this.alignPanel);
+});
+Clazz.defineMethod (c$, "newView", 
+function (viewtitle) {
+var newal;
+if (this.viewport.hasHiddenRows ()) {
+newal =  new jalview.datamodel.Alignment (this.viewport.getAlignment ().getHiddenSequences ().getFullAlignment ().getSequencesArray ());
+} else {
+newal =  new jalview.datamodel.Alignment (this.viewport.getAlignment ().getSequencesArray ());
+}if (this.viewport.getAlignment ().getAlignmentAnnotation () != null) {
+for (var i = 0; i < this.viewport.getAlignment ().getAlignmentAnnotation ().length; i++) {
+if (!this.viewport.getAlignment ().getAlignmentAnnotation ()[i].autoCalculated) {
+newal.addAnnotation (this.viewport.getAlignment ().getAlignmentAnnotation ()[i]);
+}}
+}var newaf =  new jalview.appletgui.AlignFrame (newal, this.viewport.applet, "", false);
+newaf.viewport.setSequenceSetId (this.alignPanel.av.getSequenceSetId ());
+jalview.appletgui.PaintRefresher.Register (this.alignPanel, this.alignPanel.av.getSequenceSetId ());
+jalview.appletgui.PaintRefresher.Register (newaf.alignPanel, newaf.alignPanel.av.getSequenceSetId ());
+jalview.appletgui.PaintRefresher.Register (newaf.alignPanel.idPanel.idCanvas, newaf.alignPanel.av.getSequenceSetId ());
+jalview.appletgui.PaintRefresher.Register (newaf.alignPanel.seqPanel.seqCanvas, newaf.alignPanel.av.getSequenceSetId ());
+var comps = jalview.appletgui.PaintRefresher.components.get (this.viewport.getSequenceSetId ());
+var viewSize = -1;
+for (var i = 0; i < comps.size (); i++) {
+if (Clazz.instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {
+viewSize++;
+}}
+var title =  String.instantialize (this.getTitle ());
+if (viewtitle != null) {
+title = viewtitle + " ( " + title + ")";
+} else {
+if (title.indexOf ("(View") > -1) {
+title = title.substring (0, title.indexOf ("(View"));
+}title += "(View " + viewSize + ")";
+}newaf.setTitle (title.toString ());
+newaf.viewport.setHistoryList (this.viewport.getHistoryList ());
+newaf.viewport.setRedoList (this.viewport.getRedoList ());
+return newaf;
+}, "~S");
+Clazz.defineMethod (c$, "getFeatureGroups", 
+function () {
+var fr = null;
+if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {
+var gps = fr.getFeatureGroups ();
+var _gps = gps.toArray ( new Array (gps.size ()));
+return _gps;
+}return null;
+});
+Clazz.defineMethod (c$, "getFeatureGroupsOfState", 
+function (visible) {
+var fr = null;
+if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {
+var gps = fr.getGroups (visible);
+var _gps = gps.toArray ( new Array (gps.size ()));
+return _gps;
+}return null;
+}, "~B");
+Clazz.defineMethod (c$, "setFeatureGroupState", 
+function (groups, state) {
+var fr = null;
+this.sequenceFeatures.setState (true);
+this.viewport.setShowSequenceFeatures (true);
+if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {
+fr.setGroupVisibility (java.util.Arrays.asList (groups), state);
+this.alignPanel.seqPanel.seqCanvas.repaint ();
+if (this.alignPanel.overviewPanel != null) {
+this.alignPanel.overviewPanel.updateOverviewImage ();
+}}}, "~A,~B");
+Clazz.defineMethod (c$, "seqLimits_itemStateChanged", 
+function () {
+this.viewport.setShowJVSuffix (this.seqLimits.getState ());
+this.alignPanel.fontChanged ();
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "colourTextMenuItem_actionPerformed", 
+function () {
+this.viewport.setColourText (this.colourTextMenuItem.getState ());
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "displayNonconservedMenuItem_actionPerformed", 
+function () {
+this.viewport.setShowUnconserved (this.displayNonconservedMenuItem.getState ());
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "wrapMenuItem_actionPerformed", 
+function () {
+this.viewport.setWrapAlignment (this.wrapMenuItem.getState ());
+this.alignPanel.setWrapAlignment (this.wrapMenuItem.getState ());
+this.scaleAbove.setEnabled (this.wrapMenuItem.getState ());
+this.scaleLeft.setEnabled (this.wrapMenuItem.getState ());
+this.scaleRight.setEnabled (this.wrapMenuItem.getState ());
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "overviewMenuItem_actionPerformed", 
+function () {
+if (this.alignPanel.overviewPanel != null) {
+return;
+}var frame =  new awt2swing.Frame ();
+var overview =  new jalview.appletgui.OverviewPanel (this.alignPanel);
+frame.add (overview);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.overview_params",  Clazz.newArray (-1, [this.getTitle ()])), overview.getPreferredSize ().width, overview.getPreferredSize ().height + 50);
+frame.pack ();
+var ap = this.alignPanel;
+frame.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$1") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$1, this, Clazz.cloneFinals ("ap", ap))));
+this.alignPanel.setOverviewPanel (overview);
+});
+Clazz.overrideMethod (c$, "changeColour", 
+function (cs) {
+var threshold = 0;
+if (cs != null) {
+if (this.viewport.getAbovePIDThreshold ()) {
+this.viewport.setThreshold (jalview.appletgui.SliderPanel.setPIDSliderSource (this.alignPanel, cs, "Background"));
+}if (this.viewport.getConservationSelected ()) {
+cs.setConservationApplied (true);
+this.viewport.setIncrement (jalview.appletgui.SliderPanel.setConservationSlider (this.alignPanel, cs, "Background"));
+} else {
+cs.setConservationApplied (false);
+}}this.viewport.setGlobalColourScheme (cs);
+if (this.alignPanel.getOverviewPanel () != null) {
+this.alignPanel.getOverviewPanel ().updateOverviewImage ();
+}jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.viewport.applet).sequenceColoursChanged (this.alignPanel);
+this.alignPanel.paintAlignment (true);
+}, "jalview.schemes.ColourSchemeI");
+Clazz.defineMethod (c$, "modifyPID_actionPerformed", 
+function () {
+if (this.viewport.getAbovePIDThreshold () && this.viewport.getGlobalColourScheme () != null) {
+jalview.appletgui.SliderPanel.setPIDSliderSource (this.alignPanel, this.viewport.getGlobalColourScheme (), "Background");
+jalview.appletgui.SliderPanel.showPIDSlider ();
+}});
+Clazz.defineMethod (c$, "modifyConservation_actionPerformed", 
+function () {
+if (this.viewport.getConservationSelected () && this.viewport.getGlobalColourScheme () != null) {
+jalview.appletgui.SliderPanel.setConservationSlider (this.alignPanel, this.viewport.getGlobalColourScheme (), "Background");
+jalview.appletgui.SliderPanel.showConservationSlider ();
+}});
+Clazz.defineMethod (c$, "conservationMenuItem_actionPerformed", 
+function () {
+this.viewport.setConservationSelected (this.conservationMenuItem.getState ());
+this.viewport.setAbovePIDThreshold (false);
+this.abovePIDThreshold.setState (false);
+this.changeColour (this.viewport.getGlobalColourScheme ());
+this.modifyConservation_actionPerformed ();
+});
+Clazz.defineMethod (c$, "abovePIDThreshold_actionPerformed", 
+function () {
+this.viewport.setAbovePIDThreshold (this.abovePIDThreshold.getState ());
+this.conservationMenuItem.setState (false);
+this.viewport.setConservationSelected (false);
+this.changeColour (this.viewport.getGlobalColourScheme ());
+this.modifyPID_actionPerformed ();
+});
+Clazz.defineMethod (c$, "sortPairwiseMenuItem_actionPerformed", 
+function () {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByPID (this.viewport.getAlignment (), this.viewport.getAlignment ().getSequenceAt (0), null);
+this.addHistoryItem ( new jalview.commands.OrderCommand ("Pairwise Sort", oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "sortIDMenuItem_actionPerformed", 
+function () {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByID (this.viewport.getAlignment ());
+this.addHistoryItem ( new jalview.commands.OrderCommand ("ID Sort", oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "sortLengthMenuItem_actionPerformed", 
+function () {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByLength (this.viewport.getAlignment ());
+this.addHistoryItem ( new jalview.commands.OrderCommand ("Length Sort", oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "sortGroupMenuItem_actionPerformed", 
+function () {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByGroup (this.viewport.getAlignment ());
+this.addHistoryItem ( new jalview.commands.OrderCommand ("Group Sort", oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "removeRedundancyMenuItem_actionPerformed", 
+function () {
+ new jalview.appletgui.RedundancyPanel (this.alignPanel);
+});
+Clazz.defineMethod (c$, "pairwiseAlignmentMenuItem_actionPerformed", 
+function () {
+if (this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () > 1) {
+var frame =  new awt2swing.Frame ();
+frame.add ( new jalview.appletgui.PairwiseAlignPanel (this.alignPanel));
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("action.pairwise_alignment"), 600, 500);
+}});
+Clazz.defineMethod (c$, "PCAMenuItem_actionPerformed", 
+function () {
+if (!this.viewport.getAlignment ().isAligned (false)) {
+var current;
+var Width = this.viewport.getAlignment ().getWidth ();
+for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
+current = this.viewport.getAlignment ().getSequenceAt (i);
+if (current.getLength () < Width) {
+current.insertCharAt (Width - 1, this.viewport.getGapCharacter ());
+}}
+this.alignPanel.paintAlignment (true);
+}if ((this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () < 4 && this.viewport.getSelectionGroup ().getSize () > 0) || this.viewport.getAlignment ().getHeight () < 4) {
+return;
+}try {
+ new jalview.appletgui.PCAPanel (this.viewport);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, OutOfMemoryError)) {
+} else {
+throw ex;
+}
+}
+});
+Clazz.defineMethod (c$, "averageDistanceTreeMenuItem_actionPerformed", 
+function () {
+this.NewTreePanel ("AV", "PID", "Average distance tree using PID");
+});
+Clazz.defineMethod (c$, "neighbourTreeMenuItem_actionPerformed", 
+function () {
+this.NewTreePanel ("NJ", "PID", "Neighbour joining tree using PID");
+});
+Clazz.defineMethod (c$, "njTreeBlosumMenuItem_actionPerformed", 
+function () {
+this.NewTreePanel ("NJ", "BL", "Neighbour joining tree using BLOSUM62");
+});
+Clazz.defineMethod (c$, "avTreeBlosumMenuItem_actionPerformed", 
+function () {
+this.NewTreePanel ("AV", "BL", "Average distance tree using BLOSUM62");
+});
+Clazz.defineMethod (c$, "NewTreePanel", 
+function (type, pwType, title) {
+if (!this.viewport.getAlignment ().isAligned (false)) {
+var current;
+var Width = this.viewport.getAlignment ().getWidth ();
+for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
+current = this.viewport.getAlignment ().getSequenceAt (i);
+if (current.getLength () < Width) {
+current.insertCharAt (Width - 1, this.viewport.getGapCharacter ());
+}}
+this.alignPanel.paintAlignment (true);
+}if ((this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () > 1) || (this.viewport.getAlignment ().getHeight () > 1)) {
+var tp =  new jalview.appletgui.TreePanel (this.alignPanel, type, pwType);
+this.addTreeMenuItem (tp, title);
+jalview.bin.JalviewLite.addFrame (tp, title, 600, 500);
+}}, "~S,~S,~S");
+Clazz.defineMethod (c$, "loadTree_actionPerformed", 
+function () {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this);
+cap.setText (jalview.util.MessageManager.getString ("label.paste_newick_tree_file"));
+cap.setTreeImport ();
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.paste_newick_file"), 400, 300);
+});
+Clazz.defineMethod (c$, "loadTree", 
+function (tree, treeFile) {
+var tp =  new jalview.appletgui.TreePanel (this.alignPanel, treeFile, jalview.util.MessageManager.getString ("label.load_tree_from_file"), tree);
+jalview.bin.JalviewLite.addFrame (tp, treeFile, 600, 500);
+this.addTreeMenuItem (tp, treeFile);
+}, "jalview.io.NewickFile,~S");
+Clazz.defineMethod (c$, "sortByTree", 
+function (treePanel, title) {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByTree (this.viewport.getAlignment (), treePanel.getTree ());
+this.addHistoryItem ( new jalview.commands.OrderCommand (jalview.util.MessageManager.formatMessage ("label.order_by_params",  Clazz.newArray (-1, [title])), oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+}, "jalview.appletgui.TreePanel,~S");
+Clazz.defineMethod (c$, "addTreeMenuItem", 
+function (treePanel, title) {
+var item =  new awt2swing.MenuItem (title);
+this.sortByTreeMenu.add (item);
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$2") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$2, this, Clazz.cloneFinals ("treePanel", treePanel, "title", title))));
+treePanel.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$3") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$3, this, Clazz.cloneFinals ("treePanel", treePanel, "title", title, "item", item))));
+}, "jalview.appletgui.TreePanel,~S");
+Clazz.defineMethod (c$, "sortBy", 
+function (alorder, undoname) {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+if ((this.viewport.applet, jalview.bin.JalviewLite).debug) {
+System.err.println ("Sorting " + alorder.getOrder ().size () + " in alignment '" + this.getTitle () + "'");
+}jalview.analysis.AlignmentSorter.sortBy (this.viewport.getAlignment (), alorder);
+if (undoname != null) {
+this.addHistoryItem ( new jalview.commands.OrderCommand (undoname, oldOrder, this.viewport.getAlignment ()));
+}this.alignPanel.paintAlignment (true);
+return true;
+}, "jalview.datamodel.AlignmentOrder,~S");
+Clazz.defineMethod (c$, "documentation_actionPerformed", 
+function () {
+this.alignPanel.av.applet.openJalviewHelpUrl ();
+});
+Clazz.defineMethod (c$, "about_actionPerformed", 
+function () {
+if (!Clazz.isClassDefined ("jalview.appletgui.AlignFrame$1AboutPanel")) {
+jalview.appletgui.AlignFrame.$AlignFrame$1AboutPanel$ ();
+}
+var frame =  new awt2swing.Frame ();
+frame.add (Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$1AboutPanel, this, null, jalview.bin.JalviewLite.getVersion (), jalview.bin.JalviewLite.getBuildDate ()));
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.jalview"), 580, 220);
+});
+Clazz.defineMethod (c$, "showURL", 
+function (url, target) {
+if (this.viewport.applet == null) {
+System.out.println ("Not running as applet - no browser available.");
+} else {
+this.viewport.applet.showURL (url, target);
+}}, "~S,~S");
+Clazz.defineMethod (c$, "jbInit", 
+($fz = function () {
+this.setMenuBar (this.alignFrameMenuBar);
+this.inputText.setLabel (jalview.util.MessageManager.getString ("label.input_from_textbox"));
+this.inputText.addActionListener (this);
+var outputTextboxMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.out_to_textbox"));
+for (var i = 0; i < jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS.length; i++) {
+var item =  new awt2swing.MenuItem (jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS[i]);
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$4") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$4$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$4, this, null)));
+outputTextboxMenu.add (item);
+}
+this.closeMenuItem.addActionListener (this);
+this.loadApplication.addActionListener (this);
+this.$loadTree.addActionListener (this);
+this.$loadAnnotations.addActionListener (this);
+this.$outputFeatures.addActionListener (this);
+this.$outputAnnotations.addActionListener (this);
+this.undoMenuItem.setEnabled (false);
+this.undoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.undo"));
+this.undoMenuItem.addActionListener (this);
+this.redoMenuItem.setEnabled (false);
+this.redoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.redo"));
+this.redoMenuItem.addActionListener (this);
+this.copy.setLabel (jalview.util.MessageManager.getString ("action.copy"));
+this.copy.addActionListener (this);
+this.cut.setLabel (jalview.util.MessageManager.getString ("action.cut"));
+this.cut.addActionListener (this);
+this.$delete.setLabel (jalview.util.MessageManager.getString ("action.delete"));
+this.$delete.addActionListener (this);
+this.pasteMenu.setLabel (jalview.util.MessageManager.getString ("action.paste"));
+this.pasteNew.setLabel (jalview.util.MessageManager.getString ("label.to_new_alignment"));
+this.pasteNew.addActionListener (this);
+this.pasteThis.setLabel (jalview.util.MessageManager.getString ("label.to_this_alignment"));
+this.pasteThis.addActionListener (this);
+this.remove2LeftMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_left"));
+this.remove2LeftMenuItem.addActionListener (this);
+this.remove2RightMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_right"));
+this.remove2RightMenuItem.addActionListener (this);
+this.removeGappedColumnMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_empty_columns"));
+this.removeGappedColumnMenuItem.addActionListener (this);
+this.removeAllGapsMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_all_gaps"));
+this.removeAllGapsMenuItem.addActionListener (this);
+this.removeRedundancyMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_redundancy").concat ("..."));
+this.removeRedundancyMenuItem.addActionListener (this);
+this.findMenuItem.setLabel (jalview.util.MessageManager.getString ("action.find"));
+this.findMenuItem.addActionListener (this);
+this.selectAllSequenceMenuItem.addActionListener (this);
+this.deselectAllSequenceMenuItem.addActionListener (this);
+this.invertSequenceMenuItem.setLabel (jalview.util.MessageManager.getString ("action.invert_sequence_selection"));
+this.invertSequenceMenuItem.addActionListener (this);
+this.invertColSel.setLabel (jalview.util.MessageManager.getString ("action.invert_column_selection"));
+this.invertColSel.addActionListener (this);
+this.deleteGroups.setLabel (jalview.util.MessageManager.getString ("action.undefine_groups"));
+this.deleteGroups.addActionListener (this);
+this.grpsFromSelection.setLabel (jalview.util.MessageManager.getString ("action.make_groups_selection"));
+this.grpsFromSelection.addActionListener (this);
+this.createGroup.setLabel (jalview.util.MessageManager.getString ("action.create_group"));
+this.unGroup.setLabel (jalview.util.MessageManager.getString ("action.remove_group"));
+this.annotationColumnSelection.setLabel ("Select by Annotation");
+this.annotationColumnSelection.addActionListener (this);
+this.$newView.setLabel (jalview.util.MessageManager.getString ("action.new_view"));
+this.$newView.addActionListener (this);
+var showMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.show"));
+this.showColumns.setLabel (jalview.util.MessageManager.getString ("label.all_columns"));
+this.showSeqs.setLabel (jalview.util.MessageManager.getString ("label.all_sequences"));
+var hideMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.hide"));
+this.hideColumns.setLabel (jalview.util.MessageManager.getString ("label.selected_columns"));
+this.hideSequences.setLabel (jalview.util.MessageManager.getString ("label.selected_sequences"));
+this.hideAllButSelection.setLabel (jalview.util.MessageManager.getString ("label.all_but_selected_region"));
+this.hideAllSelection.setLabel (jalview.util.MessageManager.getString ("label.selected_region"));
+this.showAllHidden.setLabel (jalview.util.MessageManager.getString ("label.all_sequences_columns"));
+this.showColumns.addActionListener (this);
+this.showSeqs.addActionListener (this);
+this.hideColumns.addActionListener (this);
+this.hideSequences.addActionListener (this);
+this.hideAllButSelection.addActionListener (this);
+this.hideAllSelection.addActionListener (this);
+this.showAllHidden.addActionListener (this);
+this.featureSettings.setLabel (jalview.util.MessageManager.getString ("label.feature_settings"));
+this.featureSettings.addActionListener (this);
+this.sequenceFeatures.setLabel (jalview.util.MessageManager.getString ("label.show_sequence_features"));
+this.sequenceFeatures.addItemListener (this);
+this.sequenceFeatures.setState (false);
+this.followMouseOverFlag.setLabel (jalview.util.MessageManager.getString ("label.automatic_scrolling"));
+this.followMouseOverFlag.addItemListener (this);
+this.alProperties.addActionListener (this);
+this.overviewMenuItem.setLabel (jalview.util.MessageManager.getString ("label.overview_window"));
+this.overviewMenuItem.addActionListener (this);
+this.annotationPanelMenuItem.setLabel (jalview.util.MessageManager.getString ("label.show_annotations"));
+this.annotationPanelMenuItem.addItemListener (this);
+this.showGroupConsensus.setLabel (jalview.util.MessageManager.getString ("label.group_consensus"));
+this.showGroupConservation.setLabel (jalview.util.MessageManager.getString ("label.group_conservation"));
+this.showConsensusHistogram.setLabel (jalview.util.MessageManager.getString ("label.show_consensus_histogram"));
+this.showSequenceLogo.setLabel (jalview.util.MessageManager.getString ("label.show_consensus_logo"));
+this.normSequenceLogo.setLabel (jalview.util.MessageManager.getString ("label.norm_consensus_logo"));
+this.applyAutoAnnotationSettings.setLabel (jalview.util.MessageManager.getString ("label.apply_all_groups"));
+this.applyAutoAnnotationSettings.setState (true);
+var autoAnnMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.autocalculated_annotation"));
+this.showGroupConsensus.addItemListener (this);
+this.showGroupConservation.addItemListener (this);
+this.showConsensusHistogram.addItemListener (this);
+this.showSequenceLogo.addItemListener (this);
+this.normSequenceLogo.addItemListener (this);
+this.applyAutoAnnotationSettings.addItemListener (this);
+this.showAlignmentAnnotations =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_all_al_annotations"));
+this.showSequenceAnnotations =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_all_seq_annotations"));
+this.sortAnnBySequence =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.sort_annotations_by_sequence"));
+this.sortAnnByLabel =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.sort_annotations_by_label"));
+this.showAutoFirst =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_first"));
+this.showAutoLast =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_last"));
+this.showAlignmentAnnotations.addItemListener (this);
+this.showSequenceAnnotations.addItemListener (this);
+this.sortAnnBySequence.addItemListener (this);
+this.sortAnnByLabel.addItemListener (this);
+this.showAutoFirst.addItemListener (this);
+this.showAutoLast.addItemListener (this);
+this.$font.setLabel (jalview.util.MessageManager.getString ("action.font"));
+this.$font.addActionListener (this);
+this.scaleAbove.setLabel (jalview.util.MessageManager.getString ("action.scale_above"));
+this.scaleAbove.setState (true);
+this.scaleAbove.setEnabled (false);
+this.scaleAbove.addItemListener (this);
+this.scaleLeft.setEnabled (false);
+this.scaleLeft.setState (true);
+this.scaleLeft.setLabel (jalview.util.MessageManager.getString ("action.scale_left"));
+this.scaleLeft.addItemListener (this);
+this.scaleRight.setEnabled (false);
+this.scaleRight.setState (true);
+this.scaleRight.setLabel (jalview.util.MessageManager.getString ("action.scale_right"));
+this.scaleRight.addItemListener (this);
+this.viewBoxesMenuItem.setLabel (jalview.util.MessageManager.getString ("action.boxes"));
+this.viewBoxesMenuItem.setState (true);
+this.viewBoxesMenuItem.addItemListener (this);
+this.viewTextMenuItem.setLabel (jalview.util.MessageManager.getString ("action.text"));
+this.viewTextMenuItem.setState (true);
+this.viewTextMenuItem.addItemListener (this);
+this.colourTextMenuItem.setLabel (jalview.util.MessageManager.getString ("label.colour_text"));
+this.colourTextMenuItem.addItemListener (this);
+this.displayNonconservedMenuItem.setLabel (jalview.util.MessageManager.getString ("label.show_non_conversed"));
+this.displayNonconservedMenuItem.addItemListener (this);
+this.wrapMenuItem.setLabel (jalview.util.MessageManager.getString ("action.wrap"));
+this.wrapMenuItem.addItemListener (this);
+this.renderGapsMenuItem.setLabel (jalview.util.MessageManager.getString ("action.show_gaps"));
+this.renderGapsMenuItem.setState (true);
+this.renderGapsMenuItem.addItemListener (this);
+this.centreColumnLabelFlag.setLabel (jalview.util.MessageManager.getString ("label.centre_column_labels"));
+this.centreColumnLabelFlag.addItemListener (this);
+this.seqLimits.setState (true);
+this.seqLimits.setLabel (jalview.util.MessageManager.getString ("label.show_sequence_limits"));
+this.seqLimits.addItemListener (this);
+this.applyToAllGroups.setLabel (jalview.util.MessageManager.getString ("label.apply_colour_to_all_groups"));
+this.applyToAllGroups.setState (true);
+this.applyToAllGroups.addItemListener (this);
+this.clustalColour.setLabel (jalview.util.MessageManager.getString ("label.clustalx"));
+this.clustalColour.addActionListener (this);
+this.zappoColour.setLabel (jalview.util.MessageManager.getString ("label.zappo"));
+this.zappoColour.addActionListener (this);
+this.taylorColour.setLabel (jalview.util.MessageManager.getString ("label.taylor"));
+this.taylorColour.addActionListener (this);
+this.hydrophobicityColour.setLabel (jalview.util.MessageManager.getString ("label.hydrophobicity"));
+this.hydrophobicityColour.addActionListener (this);
+this.helixColour.setLabel (jalview.util.MessageManager.getString ("label.helix_propensity"));
+this.helixColour.addActionListener (this);
+this.strandColour.setLabel (jalview.util.MessageManager.getString ("label.strand_propensity"));
+this.strandColour.addActionListener (this);
+this.turnColour.setLabel (jalview.util.MessageManager.getString ("label.turn_propensity"));
+this.turnColour.addActionListener (this);
+this.buriedColour.setLabel (jalview.util.MessageManager.getString ("label.buried_index"));
+this.buriedColour.addActionListener (this);
+this.purinePyrimidineColour.setLabel (jalview.util.MessageManager.getString ("label.purine_pyrimidine"));
+this.purinePyrimidineColour.addActionListener (this);
+this.RNAInteractionColour.setLabel (jalview.util.MessageManager.getString ("label.rna_interaction"));
+this.RNAInteractionColour.addActionListener (this);
+this.RNAHelixColour.setLabel (jalview.util.MessageManager.getString ("action.by_rna_helixes"));
+this.RNAHelixColour.addActionListener (this);
+this.userDefinedColour.setLabel (jalview.util.MessageManager.getString ("action.user_defined"));
+this.userDefinedColour.addActionListener (this);
+this.PIDColour.setLabel (jalview.util.MessageManager.getString ("label.percentage_identity"));
+this.PIDColour.addActionListener (this);
+this.BLOSUM62Colour.setLabel (jalview.util.MessageManager.getString ("label.blosum62_score"));
+this.BLOSUM62Colour.addActionListener (this);
+this.tcoffeeColour.setLabel (jalview.util.MessageManager.getString ("label.tcoffee_scores"));
+this.tcoffeeColour.setEnabled (false);
+this.tcoffeeColour.addActionListener (this);
+this.conservationMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_conservation"));
+this.conservationMenuItem.addItemListener (this);
+this.noColourmenuItem.setLabel (jalview.util.MessageManager.getString ("label.none"));
+this.noColourmenuItem.addActionListener (this);
+this.abovePIDThreshold.setLabel (jalview.util.MessageManager.getString ("label.above_identity_threshold"));
+this.abovePIDThreshold.addItemListener (this);
+this.nucleotideColour.setLabel (jalview.util.MessageManager.getString ("label.nucleotide"));
+this.nucleotideColour.addActionListener (this);
+this.modifyPID.setLabel (jalview.util.MessageManager.getString ("label.modify_identity_thereshold"));
+this.modifyPID.addActionListener (this);
+this.modifyConservation.setLabel (jalview.util.MessageManager.getString ("label.modify_conservation_thereshold"));
+this.modifyConservation.addActionListener (this);
+this.annotationColour.setLabel (jalview.util.MessageManager.getString ("action.by_annotation"));
+this.annotationColour.addActionListener (this);
+this.sortPairwiseMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_pairwise_id"));
+this.sortPairwiseMenuItem.addActionListener (this);
+this.sortIDMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_id"));
+this.sortIDMenuItem.addActionListener (this);
+this.sortLengthMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_length"));
+this.sortLengthMenuItem.addActionListener (this);
+this.sortGroupMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_group"));
+this.sortGroupMenuItem.addActionListener (this);
+this.pairwiseAlignmentMenuItem.setLabel (jalview.util.MessageManager.getString ("action.pairwise_alignment"));
+this.pairwiseAlignmentMenuItem.addActionListener (this);
+this.PCAMenuItem.setLabel (jalview.util.MessageManager.getString ("label.principal_component_analysis"));
+this.PCAMenuItem.addActionListener (this);
+this.autoCalculate =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.autocalculate_consensus"), true);
+this.averageDistanceTreeMenuItem.setLabel (jalview.util.MessageManager.getString ("label.average_distance_identity"));
+this.averageDistanceTreeMenuItem.addActionListener (this);
+this.neighbourTreeMenuItem.setLabel (jalview.util.MessageManager.getString ("label.neighbour_joining_identity"));
+this.neighbourTreeMenuItem.addActionListener (this);
+this.avDistanceTreeBlosumMenuItem.setLabel (jalview.util.MessageManager.getString ("label.average_distance_bloslum62"));
+this.avDistanceTreeBlosumMenuItem.addActionListener (this);
+this.njTreeBlosumMenuItem.setLabel (jalview.util.MessageManager.getString ("label.neighbour_blosum62"));
+this.njTreeBlosumMenuItem.addActionListener (this);
+this.sortByTreeMenu.setLabel (jalview.util.MessageManager.getString ("action.by_tree_order"));
+var sortMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.sort"));
+var calculateTreeMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.calculate_tree"));
+this.autoCalculate.addItemListener (this);
+this.$sortByTree.addItemListener (this);
+var helpMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.help"));
+this.documentation.setLabel (jalview.util.MessageManager.getString ("label.documentation"));
+this.documentation.addActionListener (this);
+this.about.setLabel (jalview.util.MessageManager.getString ("label.about"));
+this.about.addActionListener (this);
+this.alignFrameMenuBar.add (this.fileMenu);
+var editMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.edit"));
+this.alignFrameMenuBar.add (editMenu);
+var selectMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.select"));
+this.alignFrameMenuBar.add (selectMenu);
+var viewMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.view"));
+this.alignFrameMenuBar.add (viewMenu);
+var annotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.annotations"));
+this.alignFrameMenuBar.add (annotationsMenu);
+var formatMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.format"));
+this.alignFrameMenuBar.add (formatMenu);
+var colourMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.colour"));
+this.alignFrameMenuBar.add (colourMenu);
+var calculateMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.calculate"));
+this.alignFrameMenuBar.add (calculateMenu);
+this.alignFrameMenuBar.add (helpMenu);
+this.fileMenu.add (this.inputText);
+this.fileMenu.add (this.$loadTree);
+this.fileMenu.add (this.$loadAnnotations);
+this.fileMenu.addSeparator ();
+this.fileMenu.add (outputTextboxMenu);
+this.fileMenu.add (this.$outputFeatures);
+this.fileMenu.add (this.$outputAnnotations);
+if (this.jalviewServletURL != null) {
+this.fileMenu.add (this.loadApplication);
+}this.fileMenu.addSeparator ();
+this.fileMenu.add (this.closeMenuItem);
+editMenu.add (this.undoMenuItem);
+editMenu.add (this.redoMenuItem);
+editMenu.add (this.cut);
+editMenu.add (this.copy);
+this.pasteMenu.add (this.pasteNew);
+this.pasteMenu.add (this.pasteThis);
+editMenu.add (this.pasteMenu);
+editMenu.add (this.$delete);
+editMenu.addSeparator ();
+editMenu.add (this.remove2LeftMenuItem);
+editMenu.add (this.remove2RightMenuItem);
+editMenu.add (this.removeGappedColumnMenuItem);
+editMenu.add (this.removeAllGapsMenuItem);
+editMenu.add (this.removeRedundancyMenuItem);
+selectMenu.add (this.findMenuItem);
+selectMenu.addSeparator ();
+selectMenu.add (this.selectAllSequenceMenuItem);
+selectMenu.add (this.deselectAllSequenceMenuItem);
+selectMenu.add (this.invertSequenceMenuItem);
+selectMenu.add (this.invertColSel);
+selectMenu.add (this.createGroup);
+selectMenu.add (this.unGroup);
+selectMenu.add (this.grpsFromSelection);
+selectMenu.add (this.deleteGroups);
+selectMenu.add (this.annotationColumnSelection);
+viewMenu.add (this.$newView);
+viewMenu.addSeparator ();
+showMenu.add (this.showColumns);
+showMenu.add (this.showSeqs);
+showMenu.add (this.showAllHidden);
+viewMenu.add (showMenu);
+hideMenu.add (this.hideColumns);
+hideMenu.add (this.hideSequences);
+hideMenu.add (this.hideAllSelection);
+hideMenu.add (this.hideAllButSelection);
+viewMenu.add (hideMenu);
+viewMenu.addSeparator ();
+viewMenu.add (this.followMouseOverFlag);
+viewMenu.addSeparator ();
+viewMenu.add (this.sequenceFeatures);
+viewMenu.add (this.featureSettings);
+viewMenu.addSeparator ();
+viewMenu.add (this.alProperties);
+viewMenu.addSeparator ();
+viewMenu.add (this.overviewMenuItem);
+annotationsMenu.add (this.annotationPanelMenuItem);
+annotationsMenu.addSeparator ();
+annotationsMenu.add (this.showAlignmentAnnotations);
+annotationsMenu.add (this.showSequenceAnnotations);
+annotationsMenu.add (this.sortAnnBySequence);
+annotationsMenu.add (this.sortAnnByLabel);
+annotationsMenu.addSeparator ();
+autoAnnMenu.add (this.showAutoFirst);
+autoAnnMenu.add (this.showAutoLast);
+autoAnnMenu.addSeparator ();
+autoAnnMenu.add (this.applyAutoAnnotationSettings);
+autoAnnMenu.add (this.showConsensusHistogram);
+autoAnnMenu.add (this.showSequenceLogo);
+autoAnnMenu.add (this.normSequenceLogo);
+autoAnnMenu.addSeparator ();
+autoAnnMenu.add (this.showGroupConservation);
+autoAnnMenu.add (this.showGroupConsensus);
+annotationsMenu.add (autoAnnMenu);
+formatMenu.add (this.$font);
+formatMenu.add (this.seqLimits);
+formatMenu.add (this.wrapMenuItem);
+formatMenu.add (this.scaleAbove);
+formatMenu.add (this.scaleLeft);
+formatMenu.add (this.scaleRight);
+formatMenu.add (this.viewBoxesMenuItem);
+formatMenu.add (this.viewTextMenuItem);
+formatMenu.add (this.colourTextMenuItem);
+formatMenu.add (this.displayNonconservedMenuItem);
+formatMenu.add (this.renderGapsMenuItem);
+formatMenu.add (this.centreColumnLabelFlag);
+colourMenu.add (this.applyToAllGroups);
+colourMenu.addSeparator ();
+colourMenu.add (this.noColourmenuItem);
+colourMenu.add (this.clustalColour);
+colourMenu.add (this.BLOSUM62Colour);
+colourMenu.add (this.PIDColour);
+colourMenu.add (this.zappoColour);
+colourMenu.add (this.taylorColour);
+colourMenu.add (this.hydrophobicityColour);
+colourMenu.add (this.helixColour);
+colourMenu.add (this.strandColour);
+colourMenu.add (this.turnColour);
+colourMenu.add (this.buriedColour);
+colourMenu.add (this.nucleotideColour);
+colourMenu.add (this.purinePyrimidineColour);
+colourMenu.add (this.tcoffeeColour);
+colourMenu.add (this.userDefinedColour);
+colourMenu.addSeparator ();
+colourMenu.add (this.conservationMenuItem);
+colourMenu.add (this.modifyConservation);
+colourMenu.add (this.abovePIDThreshold);
+colourMenu.add (this.modifyPID);
+colourMenu.add (this.annotationColour);
+colourMenu.add (this.RNAHelixColour);
+sortMenu.add (this.sortIDMenuItem);
+sortMenu.add (this.sortLengthMenuItem);
+sortMenu.add (this.sortByTreeMenu);
+sortMenu.add (this.sortGroupMenuItem);
+sortMenu.add (this.sortPairwiseMenuItem);
+calculateMenu.add (sortMenu);
+calculateTreeMenu.add (this.averageDistanceTreeMenuItem);
+calculateTreeMenu.add (this.neighbourTreeMenuItem);
+calculateTreeMenu.add (this.avDistanceTreeBlosumMenuItem);
+calculateTreeMenu.add (this.njTreeBlosumMenuItem);
+calculateMenu.add (calculateTreeMenu);
+calculateMenu.addSeparator ();
+calculateMenu.add (this.pairwiseAlignmentMenuItem);
+calculateMenu.add (this.PCAMenuItem);
+calculateMenu.add (this.autoCalculate);
+calculateMenu.add (this.$sortByTree);
+helpMenu.add (this.documentation);
+helpMenu.add (this.about);
+this.statusBar.setBackground (java.awt.Color.white);
+this.statusBar.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.setStatus (jalview.util.MessageManager.getString ("label.status_bar"));
+this.add (this.statusBar, "South");
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "setStatus", 
+function (string) {
+this.statusBar.setText (string);
+}, "~S");
+Clazz.defineMethod (c$, "createAlignFrameWindow", 
+function (reallyEmbedded) {
+if (reallyEmbedded) {
+this.embedAlignFrameInApplet (this.viewport.applet);
+} else {
+if (this.embedMenuIfNeeded (this.alignPanel)) {
+this.alignPanel.setSize (this.getSize ().width, this.getSize ().height - this.statusBar.getHeight ());
+}this.add (this.statusBar, "South");
+this.add (this.alignPanel, "Center");
+jalview.bin.JalviewLite.addFrame (this, this.getTitle (), this.frameWidth, this.frameHeight);
+}}, "~B");
+Clazz.defineMethod (c$, "embedAlignFrameInApplet", 
+function (theApplet) {
+this.fileMenu.remove (this.closeMenuItem);
+this.fileMenu.remove (3);
+this.embeddedMenu = this.makeEmbeddedPopupMenu (this.alignFrameMenuBar, false, false);
+theApplet.setLayout ( new java.awt.BorderLayout ());
+theApplet.add (this.embeddedMenu, "North");
+theApplet.add (this.statusBar, "South");
+this.alignPanel.setSize (theApplet.getSize ().width, theApplet.getSize ().height - this.embeddedMenu.getHeight () - this.statusBar.getHeight ());
+theApplet.add (this.alignPanel, "Center");
+var me = this;
+theApplet.addFocusListener (((Clazz.isClassDefined ("jalview.appletgui.AlignFrame$5") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$5$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignFrame$5, this, Clazz.cloneFinals ("theApplet", theApplet, "me", me))));
+theApplet.validate ();
+}, "jalview.bin.JalviewLite");
+Clazz.defineMethod (c$, "addStructureViewInstance", 
+function (jmolviewer, sequenceIds) {
+return null;
+}, "~O,~A");
+Clazz.defineMethod (c$, "addPdbFile", 
+function (sequenceId, pdbEntryString, pdbFile) {
+var toaddpdb = this.viewport.getAlignment ().findName (sequenceId);
+var needtoadd = false;
+if (toaddpdb != null) {
+var pdbe = toaddpdb.getPDBId ();
+var pdbentry = null;
+if (pdbe != null && pdbe.size () > 0) {
+for (var pe = 0, peSize = pdbe.size (); pe < peSize; pe++) {
+pdbentry = pdbe.elementAt (pe);
+if (!pdbentry.getId ().equals (pdbEntryString) && !pdbentry.getFile ().equals (pdbFile)) {
+pdbentry = null;
+} else {
+continue;
+}}
+}if (pdbentry == null) {
+pdbentry =  new jalview.datamodel.PDBEntry ();
+pdbentry.setId (pdbEntryString);
+pdbentry.setFile (pdbFile);
+needtoadd = true;
+}var protocol = jalview.io.AppletFormatAdapter.resolveProtocol (pdbFile, "PDB");
+if (protocol == null) {
+return false;
+}if (needtoadd) {
+if (pdbentry.getProperty () == null) {
+pdbentry.setProperty ( new java.util.Hashtable ());
+}pdbentry.getProperty ().put ("protocol", protocol);
+toaddpdb.addPDBId (pdbentry);
+this.alignPanel.getStructureSelectionManager ().registerPDBEntry (pdbentry);
+}}return true;
+}, "~S,~S,~S");
+Clazz.defineMethod (c$, "cleanSeqChainArrays", 
+($fz = function (seqs, chains) {
+if (seqs != null) {
+var sequences =  new java.util.Vector ();
+for (var i = 0; i < seqs.length; i++) {
+if (seqs[i] != null) {
+sequences.addElement ( Clazz.newArray (-1, [seqs[i], (chains != null) ? chains[i] : null]));
+}}
+seqs =  new Array (sequences.size ());
+chains =  new Array (sequences.size ());
+for (var i = 0, isize = sequences.size (); i < isize; i++) {
+var oj = sequences.elementAt (i);
+seqs[i] = oj[0];
+chains[i] = oj[1];
+}
+}return  Clazz.newArray (-1, [seqs, chains]);
+}, $fz.isPrivate = true, $fz), "~A,~A");
+Clazz.defineMethod (c$, "newStructureView", 
+function (applet, pdb, seqs, chains, protocol) {
+var sqch = this.cleanSeqChainArrays (seqs, chains);
+seqs = sqch[0];
+chains = sqch[1];
+if (seqs == null || seqs.length == 0) {
+System.err.println ("JalviewLite.AlignFrame:newStructureView: No sequence to bind structure to.");
+}if (protocol == null || protocol.trim ().length == 0 || protocol.equals ("null")) {
+protocol = pdb.getProperty ().get ("protocol");
+if (protocol == null) {
+System.err.println ("Couldn't work out protocol to open structure: " + pdb.getId ());
+return;
+}}if (applet.useXtrnalSviewer) {
+if (jalview.structure.StructureSelectionManager.getStructureSelectionManager (applet).setMapping (seqs, chains, pdb.getFile (), protocol) == null) {
+System.err.println ("Failed to map " + pdb.getFile () + " (" + protocol + ") to any sequences");
+}return;
+}if (applet.isAlignPdbStructures () && applet.jmolAvailable) {
+var ajm = null;
+var tajm;
+var jmols = applet.getAppletWindow (jalview.appletgui.AppletJmol);
+for (var i = 0, iSize = jmols.size (); i < iSize; i++) {
+tajm = jmols.elementAt (i);
+if (tajm.ap.alignFrame === this) {
+ajm = tajm;
+break;
+}}
+if (ajm != null) {
+System.err.println ("Incremental adding and aligning structure to existing Jmol view not yet implemented.");
+ajm = null;
+}} new jalview.appletgui.AppletJmol (pdb, seqs, chains, this.alignPanel, protocol);
+jalview.bin.JalviewLite.lastFrameX += 40;
+jalview.bin.JalviewLite.lastFrameY += 40;
+}, "jalview.bin.JalviewLite,jalview.datamodel.PDBEntry,~A,~A,~S");
+Clazz.defineMethod (c$, "alignedStructureView", 
+function (applet, pdb, seqs, chains, protocols) {
+System.err.println ("Aligned Structure View: Not yet implemented.");
+}, "jalview.bin.JalviewLite,~A,~A,~A,~A");
+Clazz.defineMethod (c$, "select", 
+function (sel, csel) {
+this.alignPanel.seqPanel.selection (sel, csel, null);
+}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection");
+Clazz.defineMethod (c$, "scrollTo", 
+function (row, column) {
+this.alignPanel.seqPanel.scrollTo (row, column);
+}, "~N,~N");
+Clazz.defineMethod (c$, "scrollToRow", 
+function (row) {
+this.alignPanel.seqPanel.scrollToRow (row);
+}, "~N");
+Clazz.defineMethod (c$, "scrollToColumn", 
+function (column) {
+this.alignPanel.seqPanel.scrollToColumn (column);
+}, "~N");
+Clazz.defineMethod (c$, "getSequenceSetId", 
+function () {
+return this.viewport.getSequenceSetId ();
+});
+Clazz.defineMethod (c$, "loadScoreFile", 
+function (inFile) {
+var file = jalview.jsdev.GenericFileAdapter.getFile ("TCoffeeScoreFile", [inFile, jalview.io.AppletFormatAdapter.checkProtocol (inFile)]);
+if (!file.isValid ()) {
+System.err.println ("Problems parsing T-Coffee scores: " + file.getWarningMessage ());
+System.err.println ("Origin was:\n" + inFile);
+return false;
+}var aln;
+if ((aln = this.viewport.getAlignment ()) != null && (aln.getHeight () != file.getHeight () || aln.getWidth () != file.getWidth ())) {
+System.err.println ("The scores matrix does not match the alignment dimensions");
+}if (file.annotateAlignment (this.alignPanel.getAlignment (), false)) {
+this.alignPanel.fontChanged ();
+this.tcoffeeColour.setEnabled (true);
+this.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignPanel.getAlignment ()));
+return true;
+} else {
+System.err.println ("Problems resolving T-Coffee scores:");
+if (file.getWarningMessage () != null) {
+System.err.println (file.getWarningMessage ());
+}}return false;
+}, "~S");
+Clazz.defineMethod (c$, "getSplitFrame", 
+function () {
+return this.splitFrame;
+});
+Clazz.defineMethod (c$, "setSplitFrame", 
+function (sf) {
+this.splitFrame = sf;
+}, "jalview.appletgui.SplitFrame");
+Clazz.overrideMethod (c$, "setShowSeqFeatures", 
+function (b) {
+this.viewport.setShowSequenceFeatures (b);
+}, "~B");
+Clazz.overrideMethod (c$, "setMenusForViewport", 
+function () {
+});
+Clazz.overrideMethod (c$, "refreshFeatureUI", 
+function (enableIfNecessary) {
+if (enableIfNecessary) {
+this.sequenceFeatures.setState (true);
+this.alignPanel.av.setShowSequenceFeatures (true);
+}}, "~B");
+Clazz.overrideMethod (c$, "getFeatureSettingsUI", 
+function () {
+return this.alignPanel.av.featureSettings;
+});
+c$.$AlignFrame$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$1", java.awt.event.WindowAdapter);
+Clazz.overrideMethod (c$, "windowClosing", 
+function (e) {
+if (this.f$.ap != null) {
+this.f$.ap.setOverviewPanel (null);
+}}, "java.awt.event.WindowEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AlignFrame$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$2", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+this.b$["jalview.appletgui.AlignFrame"].sortByTree (this.f$.treePanel, this.f$.title);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AlignFrame$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$3", java.awt.event.WindowAdapter);
+Clazz.defineMethod (c$, "windowOpened", 
+function (e) {
+if (this.b$["jalview.appletgui.AlignFrame"].viewport.sortByTree) {
+this.b$["jalview.appletgui.AlignFrame"].sortByTree (this.f$.treePanel, this.f$.title);
+}Clazz.superCall (this, jalview.appletgui.AlignFrame$3, "windowOpened", [e]);
+}, "java.awt.event.WindowEvent");
+Clazz.overrideMethod (c$, "windowClosing", 
+function (e) {
+this.b$["jalview.appletgui.AlignFrame"].sortByTreeMenu.remove (this.f$.item);
+}, "java.awt.event.WindowEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AlignFrame$1AboutPanel$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.version = null;
+this.builddate = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AlignFrame$1AboutPanel", awt2swing.Canvas);
+Clazz.makeConstructor (c$, 
+function (a, b) {
+Clazz.superConstructor (this, jalview.appletgui.AlignFrame$1AboutPanel, []);
+this.version = a;
+this.builddate = b;
+}, "~S,~S");
+Clazz.overrideMethod (c$, "paintComponent", 
+function (a) {
+a.setColor (java.awt.Color.white);
+a.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+a.setFont ( new java.awt.Font ("Helvetica", 0, 12));
+var b = a.getFontMetrics ();
+var c = b.getHeight ();
+var d = 5;
+var e = 7;
+a.setColor (java.awt.Color.black);
+a.setFont ( new java.awt.Font ("Helvetica", 1, 14));
+a.drawString (jalview.util.MessageManager.formatMessage ("label.jalviewLite_release",  Clazz.newArray (-1, [this.version])), e, d += c);
+a.setFont ( new java.awt.Font ("Helvetica", 1, 12));
+a.drawString (jalview.util.MessageManager.formatMessage ("label.jaview_build_date",  Clazz.newArray (-1, [this.builddate])), e, d += c);
+a.setFont ( new java.awt.Font ("Helvetica", 0, 12));
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_authors_1"), e, d += c * 1.5);
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_authors_2"), e + 50, d += c + 8);
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_dev_managers"), e, d += c);
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_distribution_lists"), e, d += c);
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_please_cite"), e, d += c + 8);
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_cite_1_authors"), e, d += c);
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_cite_1_title"), e, d += c);
+a.drawString (jalview.util.MessageManager.getString ("label.jalview_cite_1_ref"), e, d += c);
+}, "java.awt.Graphics");
+c$ = Clazz.p0p ();
+};
+c$.$AlignFrame$4$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$4", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.AlignFrame"].outputText_actionPerformed (e);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AlignFrame$5$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignFrame$5", null, java.awt.event.FocusListener);
+Clazz.overrideMethod (c$, "focusLost", 
+function (e) {
+if (this.f$.theApplet.currentAlignFrame === this.f$.me) {
+this.f$.theApplet.currentAlignFrame = null;
+}}, "java.awt.event.FocusEvent");
+Clazz.overrideMethod (c$, "focusGained", 
+function (e) {
+this.f$.theApplet.currentAlignFrame = this.f$.me;
+}, "java.awt.event.FocusEvent");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"copiedSequences", null,
+"copiedHiddenColumns", null);
+});
index 8ea8971..1d890fc 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["jalview.structure.CommandListener", "$.SelectionSource", "$.VamsasSource", "jalview.viewmodel.AlignmentViewport", "java.awt.Font"], "jalview.appletgui.AlignViewport", ["awt2swing.Frame", "jalview.api.AlignViewportI", "jalview.bin.JalviewLite", "jalview.datamodel.ColumnSelection", "$.SearchResults", "$.Sequence", "$.SequenceGroup", "jalview.schemes.ColourSchemeProperty", "jalview.structure.StructureSelectionManager", "jalview.util.Platform", "jalview.workers.AlignCalcManager", "java.lang.Float", "$.StringBuilder"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.cursorMode = false;\r
-this.font = null;\r
-this.validCharWidth = true;\r
-this.currentTree = null;\r
-this.applet = null;\r
-this.MAC = false;\r
-this.annotationColumnSelectionState = null;\r
-this.nullFrame = null;\r
-this.featureSettings = null;\r
-this.heightScale = 1;\r
-this.widthScale = 1;\r
-this.centreColumnLabels = false;\r
-this.followSelection = true;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "AlignViewport", jalview.viewmodel.AlignmentViewport, [jalview.structure.SelectionSource, jalview.structure.VamsasSource, jalview.structure.CommandListener]);\r
-Clazz.prepareFields (c$, function () {\r
-this.font =  new java.awt.Font ("SansSerif", 0, 10);\r
-});\r
-Clazz.overrideMethod (c$, "finalize", \r
-function () {\r
-this.applet = null;\r
-this.quality = null;\r
-this.alignment = null;\r
-this.colSel = null;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (al, applet) {\r
-Clazz.superConstructor (this, jalview.appletgui.AlignViewport);\r
-this.calculator =  new jalview.workers.AlignCalcManager ();\r
-this.applet = applet;\r
-this.alignment = al;\r
-this.setPadGaps (true);\r
-this.startRes = 0;\r
-this.endRes = al.getWidth () - 1;\r
-this.startSeq = 0;\r
-this.endSeq = al.getHeight () - 1;\r
-if (applet != null) {\r
-var param = applet.widthScale;\r
-if (param != null) {\r
-try {\r
-this.widthScale =  new Float (param).floatValue ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (this.widthScale <= 1.0) {\r
-System.err.println ("Invalid alignment character width scaling factor (" + this.widthScale + "). Ignoring.");\r
-this.widthScale = 1;\r
-}if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Alignment character width scaling factor is now " + this.widthScale);\r
-}}param = applet.heightScale;\r
-if (param != null) {\r
-try {\r
-this.heightScale =  new Float (param).floatValue ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (this.heightScale <= 1.0) {\r
-System.err.println ("Invalid alignment character height scaling factor (" + this.heightScale + "). Ignoring.");\r
-this.heightScale = 1;\r
-}if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Alignment character height scaling factor is now " + this.heightScale);\r
-}}}this.setFont (this.font);\r
-this.MAC = jalview.util.Platform.isAMac ();\r
-if (applet != null) {\r
-this.setShowJVSuffix (applet.getDefaultParameter ("showFullId", this.getShowJVSuffix ()));\r
-this.setShowAnnotation (applet.getDefaultParameter ("showAnnotation", this.isShowAnnotation ()));\r
-this.showConservation = applet.getDefaultParameter ("showConservation", this.showConservation);\r
-this.showQuality = applet.getDefaultParameter ("showQuality", this.showQuality);\r
-this.showConsensus = applet.getDefaultParameter ("showConsensus", this.showConsensus);\r
-this.setShowUnconserved (applet.getDefaultParameter ("showUnconserved", this.getShowUnconserved ()));\r
-this.setScaleProteinAsCdna (applet.getDefaultParameter ("scaleProteinAsCdna", this.isScaleProteinAsCdna ()));\r
-var param = applet.upperCase;\r
-if (param != null) {\r
-if (param.equalsIgnoreCase ("bold")) {\r
-this.setUpperCasebold (true);\r
-}}this.sortByTree = applet.getDefaultParameter ("sortByTree", this.sortByTree);\r
-this.setFollowHighlight (applet.getDefaultParameter ("automaticScrolling", this.isFollowHighlight ()));\r
-this.followSelection = this.isFollowHighlight ();\r
-this.showSequenceLogo = applet.getDefaultParameter ("showSequenceLogo", this.showSequenceLogo);\r
-this.normaliseSequenceLogo = applet.getDefaultParameter ("normaliseSequenceLogo", applet.getDefaultParameter ("normaliseLogo", this.normaliseSequenceLogo));\r
-this.showGroupConsensus = applet.getDefaultParameter ("showGroupConsensus", this.showGroupConsensus);\r
-this.showGroupConservation = applet.getDefaultParameter ("showGroupConservation", this.showGroupConservation);\r
-this.showConsensusHistogram = applet.getDefaultParameter ("showConsensusHistogram", this.showConsensusHistogram);\r
-}if (applet != null) {\r
-var colour = applet.defaultColour;\r
-if (colour == null) {\r
-colour = applet.userDefinedColour;\r
-if (colour != null) {\r
-colour = "User Defined";\r
-}}if (colour != null) {\r
-this.globalColourScheme = jalview.schemes.ColourSchemeProperty.getColour (this.alignment, colour);\r
-if (this.globalColourScheme != null) {\r
-this.globalColourScheme.setConsensus (this.hconsensus);\r
-}}if (applet.userDefinedColour != null) {\r
-(this.globalColourScheme).parseAppletParameter (applet.userDefinedColour);\r
-}}this.initAutoAnnotation ();\r
-}, "jalview.datamodel.AlignmentI,jalview.bin.JalviewLite");\r
-Clazz.defineMethod (c$, "getConsensusSeq", \r
-function () {\r
-if (this.consensus == null) {\r
-this.updateConsensus (null);\r
-}if (this.consensus == null) {\r
-return null;\r
-}var seqs =  new StringBuilder (this.consensus.annotations.length);\r
-for (var i = 0; i < this.consensus.annotations.length; i++) {\r
-if (this.consensus.annotations[i] != null) {\r
-if (this.consensus.annotations[i].description.charAt (0) == '[') {\r
-seqs.append (this.consensus.annotations[i].description.charAt (1));\r
-} else {\r
-seqs.append (this.consensus.annotations[i].displayCharacter);\r
-}}}\r
-var sq =  new jalview.datamodel.Sequence ("Consensus", seqs.toString ());\r
-sq.setDescription ("Percentage Identity Consensus " + ((this.ignoreGapsInConsensusCalculation) ? " without gaps" : ""));\r
-return sq;\r
-});\r
-Clazz.defineMethod (c$, "setFont", \r
-function (f) {\r
-this.font = f;\r
-if (this.nullFrame == null) {\r
-this.nullFrame =  new awt2swing.Frame ();\r
-this.nullFrame.addNotify ();\r
-this.nullFrame.setFont (this.font);\r
-}var fm = this.nullFrame.getGraphics ().getFontMetrics (this.font);\r
-this.setCharHeight (Clazz.floatToInt (this.heightScale * fm.getHeight ()));\r
-this.setCharWidth (Clazz.floatToInt (this.widthScale * fm.charWidth ('M')));\r
-if (this.isUpperCasebold ()) {\r
-var f2 =  new java.awt.Font (f.getName (), 1, f.getSize ());\r
-fm = this.nullFrame.getGraphics ().getFontMetrics (f2);\r
-this.setCharWidth (Clazz.floatToInt (this.widthScale * (Clazz.doubleToInt (fm.stringWidth ("MMMMMMMMMMM") / 10))));\r
-}}, "java.awt.Font");\r
-Clazz.defineMethod (c$, "getFont", \r
-function () {\r
-return this.font;\r
-});\r
-Clazz.defineMethod (c$, "resetSeqLimits", \r
-function (height) {\r
-this.setEndSeq (Clazz.doubleToInt (height / this.getCharHeight ()));\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setCurrentTree", \r
-function (tree) {\r
-this.currentTree = tree;\r
-}, "jalview.analysis.NJTree");\r
-Clazz.defineMethod (c$, "getCurrentTree", \r
-function () {\r
-return this.currentTree;\r
-});\r
-Clazz.defineMethod (c$, "getCentreColumnLabels", \r
-function () {\r
-return this.centreColumnLabels;\r
-});\r
-Clazz.defineMethod (c$, "getFollowSelection", \r
-function () {\r
-return this.followSelection;\r
-});\r
-Clazz.overrideMethod (c$, "sendSelection", \r
-function () {\r
-this.getStructureSelectionManager ().sendSelection ( new jalview.datamodel.SequenceGroup (this.getSelectionGroup ()),  new jalview.datamodel.ColumnSelection (this.getColumnSelection ()), this);\r
-});\r
-Clazz.overrideMethod (c$, "getStructureSelectionManager", \r
-function () {\r
-return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.applet);\r
-});\r
-Clazz.defineMethod (c$, "expandColSelection", \r
-function (sg, wholewidth) {\r
-var sgs;\r
-var sge;\r
-if (sg != null && (sgs = sg.getStartRes ()) >= 0 && sg.getStartRes () <= (sge = sg.getEndRes ()) && (this.colSel == null || this.colSel.getSelected () == null || this.colSel.getSelected ().size () == 0)) {\r
-if (!wholewidth && this.alignment.getWidth () == (1 + sge - sgs)) {\r
-return;\r
-}if (this.colSel == null) {\r
-this.colSel =  new jalview.datamodel.ColumnSelection ();\r
-}for (var cspos = sg.getStartRes (); cspos <= sg.getEndRes (); cspos++) {\r
-this.colSel.addElement (cspos);\r
-}\r
-}}, "jalview.datamodel.SequenceGroup,~B");\r
-Clazz.overrideMethod (c$, "isNormaliseSequenceLogo", \r
-function () {\r
-return this.normaliseSequenceLogo;\r
-});\r
-Clazz.defineMethod (c$, "setNormaliseSequenceLogo", \r
-function (state) {\r
-this.normaliseSequenceLogo = state;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "isValidCharWidth", \r
-function () {\r
-return this.validCharWidth;\r
-});\r
-Clazz.defineMethod (c$, "getAnnotationColumnSelectionState", \r
-function () {\r
-return this.annotationColumnSelectionState;\r
-});\r
-Clazz.defineMethod (c$, "setAnnotationColumnSelectionState", \r
-function (annotationColumnSelectionState) {\r
-this.annotationColumnSelectionState = annotationColumnSelectionState;\r
-}, "jalview.appletgui.AnnotationColumnChooser");\r
-Clazz.overrideMethod (c$, "mirrorCommand", \r
-function (command, undo, ssm, source) {\r
-if (Clazz.instanceOf (source, jalview.api.AlignViewportI) && (source).getCodingComplement () === this) {\r
-} else {\r
-return;\r
-}var mappedCommand = ssm.mapCommand (command, undo, this.getAlignment (), this.getGapCharacter ());\r
-if (mappedCommand != null) {\r
-mappedCommand.doCommand (null);\r
-this.firePropertyChange ("alignment", null, this.getAlignment ().getSequences ());\r
-}}, "jalview.commands.CommandI,~B,jalview.structure.StructureSelectionManager,jalview.structure.VamsasSource");\r
-Clazz.overrideMethod (c$, "getVamsasSource", \r
-function () {\r
-return this;\r
-});\r
-Clazz.defineMethod (c$, "scrollComplementaryAlignment", \r
-function (complementPanel) {\r
-if (complementPanel == null) {\r
-return;\r
-}var sr =  new jalview.datamodel.SearchResults ();\r
-var seqOffset = this.findComplementScrollTarget (sr);\r
-if (!sr.isEmpty ()) {\r
-complementPanel.setFollowingComplementScroll (true);\r
-complementPanel.scrollToCentre (sr, seqOffset);\r
-}}, "jalview.appletgui.AlignmentPanel");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.structure.CommandListener", "$.SelectionSource", "$.VamsasSource", "jalview.viewmodel.AlignmentViewport", "java.awt.Font"], "jalview.appletgui.AlignViewport", ["awt2swing.Frame", "jalview.api.AlignViewportI", "jalview.bin.JalviewLite", "jalview.datamodel.ColumnSelection", "$.SearchResults", "$.Sequence", "$.SequenceGroup", "jalview.schemes.ColourSchemeProperty", "jalview.structure.StructureSelectionManager", "jalview.util.Platform", "jalview.workers.AlignCalcManager", "java.lang.Float", "$.StringBuilder"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.cursorMode = false;
+this.font = null;
+this.validCharWidth = true;
+this.currentTree = null;
+this.applet = null;
+this.MAC = false;
+this.annotationColumnSelectionState = null;
+this.nullFrame = null;
+this.featureSettings = null;
+this.heightScale = 1;
+this.widthScale = 1;
+this.centreColumnLabels = false;
+this.followSelection = true;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AlignViewport", jalview.viewmodel.AlignmentViewport, [jalview.structure.SelectionSource, jalview.structure.VamsasSource, jalview.structure.CommandListener]);
+Clazz.prepareFields (c$, function () {
+this.font =  new java.awt.Font ("SansSerif", 0, 10);
+});
+Clazz.overrideMethod (c$, "finalize", 
+function () {
+this.applet = null;
+this.quality = null;
+this.alignment = null;
+this.colSel = null;
+});
+Clazz.makeConstructor (c$, 
+function (al, applet) {
+Clazz.superConstructor (this, jalview.appletgui.AlignViewport);
+this.calculator =  new jalview.workers.AlignCalcManager ();
+this.applet = applet;
+this.alignment = al;
+this.setPadGaps (true);
+this.startRes = 0;
+this.endRes = al.getWidth () - 1;
+this.startSeq = 0;
+this.endSeq = al.getHeight () - 1;
+if (applet != null) {
+var param = applet.widthScale;
+if (param != null) {
+try {
+this.widthScale =  new Float (param).floatValue ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+if (this.widthScale <= 1.0) {
+System.err.println ("Invalid alignment character width scaling factor (" + this.widthScale + "). Ignoring.");
+this.widthScale = 1;
+}if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Alignment character width scaling factor is now " + this.widthScale);
+}}param = applet.heightScale;
+if (param != null) {
+try {
+this.heightScale =  new Float (param).floatValue ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+if (this.heightScale <= 1.0) {
+System.err.println ("Invalid alignment character height scaling factor (" + this.heightScale + "). Ignoring.");
+this.heightScale = 1;
+}if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Alignment character height scaling factor is now " + this.heightScale);
+}}}this.setFont (this.font);
+this.MAC = jalview.util.Platform.isAMac ();
+if (applet != null) {
+this.setShowJVSuffix (applet.getDefaultParameter ("showFullId", this.getShowJVSuffix ()));
+this.setShowAnnotation (applet.getDefaultParameter ("showAnnotation", this.isShowAnnotation ()));
+this.showConservation = applet.getDefaultParameter ("showConservation", this.showConservation);
+this.showQuality = applet.getDefaultParameter ("showQuality", this.showQuality);
+this.showConsensus = applet.getDefaultParameter ("showConsensus", this.showConsensus);
+this.setShowUnconserved (applet.getDefaultParameter ("showUnconserved", this.getShowUnconserved ()));
+this.setScaleProteinAsCdna (applet.getDefaultParameter ("scaleProteinAsCdna", this.isScaleProteinAsCdna ()));
+var param = applet.upperCase;
+if (param != null) {
+if (param.equalsIgnoreCase ("bold")) {
+this.setUpperCasebold (true);
+}}this.sortByTree = applet.getDefaultParameter ("sortByTree", this.sortByTree);
+this.setFollowHighlight (applet.getDefaultParameter ("automaticScrolling", this.isFollowHighlight ()));
+this.followSelection = this.isFollowHighlight ();
+this.showSequenceLogo = applet.getDefaultParameter ("showSequenceLogo", this.showSequenceLogo);
+this.normaliseSequenceLogo = applet.getDefaultParameter ("normaliseSequenceLogo", applet.getDefaultParameter ("normaliseLogo", this.normaliseSequenceLogo));
+this.showGroupConsensus = applet.getDefaultParameter ("showGroupConsensus", this.showGroupConsensus);
+this.showGroupConservation = applet.getDefaultParameter ("showGroupConservation", this.showGroupConservation);
+this.showConsensusHistogram = applet.getDefaultParameter ("showConsensusHistogram", this.showConsensusHistogram);
+}if (applet != null) {
+var colour = applet.defaultColour;
+if (colour == null) {
+colour = applet.userDefinedColour;
+if (colour != null) {
+colour = "User Defined";
+}}if (colour != null) {
+this.globalColourScheme = jalview.schemes.ColourSchemeProperty.getColour (this.alignment, colour);
+if (this.globalColourScheme != null) {
+this.globalColourScheme.setConsensus (this.hconsensus);
+}}if (applet.userDefinedColour != null) {
+(this.globalColourScheme).parseAppletParameter (applet.userDefinedColour);
+}}this.initAutoAnnotation ();
+}, "jalview.datamodel.AlignmentI,jalview.bin.JalviewLite");
+Clazz.defineMethod (c$, "getConsensusSeq", 
+function () {
+if (this.consensus == null) {
+this.updateConsensus (null);
+}if (this.consensus == null) {
+return null;
+}var seqs =  new StringBuilder (this.consensus.annotations.length);
+for (var i = 0; i < this.consensus.annotations.length; i++) {
+if (this.consensus.annotations[i] != null) {
+if (this.consensus.annotations[i].description.charAt (0) == '[') {
+seqs.append (this.consensus.annotations[i].description.charAt (1));
+} else {
+seqs.append (this.consensus.annotations[i].displayCharacter);
+}}}
+var sq =  new jalview.datamodel.Sequence ("Consensus", seqs.toString ());
+sq.setDescription ("Percentage Identity Consensus " + ((this.ignoreGapsInConsensusCalculation) ? " without gaps" : ""));
+return sq;
+});
+Clazz.defineMethod (c$, "setFont", 
+function (f) {
+this.font = f;
+if (this.nullFrame == null) {
+this.nullFrame =  new awt2swing.Frame ();
+this.nullFrame.addNotify ();
+this.nullFrame.setFont (this.font);
+}var fm = this.nullFrame.getGraphics ().getFontMetrics (this.font);
+this.setCharHeight (Clazz.floatToInt (this.heightScale * fm.getHeight ()));
+this.setCharWidth (Clazz.floatToInt (this.widthScale * fm.charWidth ('M')));
+if (this.isUpperCasebold ()) {
+var f2 =  new java.awt.Font (f.getName (), 1, f.getSize ());
+fm = this.nullFrame.getGraphics ().getFontMetrics (f2);
+this.setCharWidth (Clazz.floatToInt (this.widthScale * (Clazz.doubleToInt (fm.stringWidth ("MMMMMMMMMMM") / 10))));
+}}, "java.awt.Font");
+Clazz.defineMethod (c$, "getFont", 
+function () {
+return this.font;
+});
+Clazz.defineMethod (c$, "resetSeqLimits", 
+function (height) {
+this.setEndSeq (Clazz.doubleToInt (height / this.getCharHeight ()));
+}, "~N");
+Clazz.defineMethod (c$, "setCurrentTree", 
+function (tree) {
+this.currentTree = tree;
+}, "jalview.analysis.NJTree");
+Clazz.defineMethod (c$, "getCurrentTree", 
+function () {
+return this.currentTree;
+});
+Clazz.defineMethod (c$, "getCentreColumnLabels", 
+function () {
+return this.centreColumnLabels;
+});
+Clazz.defineMethod (c$, "getFollowSelection", 
+function () {
+return this.followSelection;
+});
+Clazz.overrideMethod (c$, "sendSelection", 
+function () {
+this.getStructureSelectionManager ().sendSelection ( new jalview.datamodel.SequenceGroup (this.getSelectionGroup ()),  new jalview.datamodel.ColumnSelection (this.getColumnSelection ()), this);
+});
+Clazz.overrideMethod (c$, "getStructureSelectionManager", 
+function () {
+return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.applet);
+});
+Clazz.defineMethod (c$, "expandColSelection", 
+function (sg, wholewidth) {
+var sgs;
+var sge;
+if (sg != null && (sgs = sg.getStartRes ()) >= 0 && sg.getStartRes () <= (sge = sg.getEndRes ()) && (this.colSel == null || this.colSel.getSelected () == null || this.colSel.getSelected ().size () == 0)) {
+if (!wholewidth && this.alignment.getWidth () == (1 + sge - sgs)) {
+return;
+}if (this.colSel == null) {
+this.colSel =  new jalview.datamodel.ColumnSelection ();
+}for (var cspos = sg.getStartRes (); cspos <= sg.getEndRes (); cspos++) {
+this.colSel.addElement (cspos);
+}
+}}, "jalview.datamodel.SequenceGroup,~B");
+Clazz.overrideMethod (c$, "isNormaliseSequenceLogo", 
+function () {
+return this.normaliseSequenceLogo;
+});
+Clazz.defineMethod (c$, "setNormaliseSequenceLogo", 
+function (state) {
+this.normaliseSequenceLogo = state;
+}, "~B");
+Clazz.overrideMethod (c$, "isValidCharWidth", 
+function () {
+return this.validCharWidth;
+});
+Clazz.defineMethod (c$, "getAnnotationColumnSelectionState", 
+function () {
+return this.annotationColumnSelectionState;
+});
+Clazz.defineMethod (c$, "setAnnotationColumnSelectionState", 
+function (annotationColumnSelectionState) {
+this.annotationColumnSelectionState = annotationColumnSelectionState;
+}, "jalview.appletgui.AnnotationColumnChooser");
+Clazz.overrideMethod (c$, "mirrorCommand", 
+function (command, undo, ssm, source) {
+if (Clazz.instanceOf (source, jalview.api.AlignViewportI) && (source).getCodingComplement () === this) {
+} else {
+return;
+}var mappedCommand = ssm.mapCommand (command, undo, this.getAlignment (), this.getGapCharacter ());
+if (mappedCommand != null) {
+mappedCommand.doCommand (null);
+this.firePropertyChange ("alignment", null, this.getAlignment ().getSequences ());
+}}, "jalview.commands.CommandI,~B,jalview.structure.StructureSelectionManager,jalview.structure.VamsasSource");
+Clazz.overrideMethod (c$, "getVamsasSource", 
+function () {
+return this;
+});
+Clazz.defineMethod (c$, "scrollComplementaryAlignment", 
+function (complementPanel) {
+if (complementPanel == null) {
+return;
+}var sr =  new jalview.datamodel.SearchResults ();
+var seqOffset = this.findComplementScrollTarget (sr);
+if (!sr.isEmpty ()) {
+complementPanel.setFollowingComplementScroll (true);
+complementPanel.scrollToCentre (sr, seqOffset);
+}}, "jalview.appletgui.AlignmentPanel");
+});
index 49b001d..873616b 100644 (file)
Binary files a/bin/jalview/appletgui/AlignmentPanel.class and b/bin/jalview/appletgui/AlignmentPanel.class differ
index 8989731..1d6069d 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "jalview.api.AlignmentViewPanel", "java.awt.event.AdjustmentListener", "awt2swing.Scrollbar"], "jalview.appletgui.AlignmentPanel", ["awt2swing.Frame", "jalview.analysis.AnnotationSorter", "jalview.appletgui.AnnotationLabels", "$.AnnotationPanel", "$.FeatureRenderer", "$.IdPanel", "$.IdwidthAdjuster", "$.PaintRefresher", "$.ScalePanel", "$.SeqPanel", "jalview.bin.JalviewLite", "jalview.structure.StructureSelectionManager", "java.awt.BorderLayout", "$.Color", "$.Dimension", "java.awt.event.ComponentAdapter", "java.beans.PropertyChangeListener"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.av = null;\r
-this.overviewPanel = null;\r
-this.seqPanel = null;\r
-this.idPanel = null;\r
-this.idwidthAdjuster = null;\r
-this.alignFrame = null;\r
-this.scalePanel = null;\r
-this.annotationPanel = null;\r
-this.alabels = null;\r
-this.fastPaint = true;\r
-this.hextent = 0;\r
-this.vextent = 0;\r
-this.sequenceHolderPanel = null;\r
-this.vscroll = null;\r
-this.hscroll = null;\r
-this.seqPanelHolder = null;\r
-this.scalePanelHolder = null;\r
-this.idPanelHolder = null;\r
-this.idSpaceFillerPanel1 = null;\r
-this.annotationSpaceFillerHolder = null;\r
-this.hscrollFillerPanel = null;\r
-this.annotationPanelHolder = null;\r
-this.apvscroll = null;\r
-this.followingComplementScroll = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "AlignmentPanel", awt2swing.Panel, [java.awt.event.AdjustmentListener, jalview.api.AlignmentViewPanel]);\r
-Clazz.prepareFields (c$, function () {\r
-this.sequenceHolderPanel =  new awt2swing.Panel ();\r
-this.vscroll =  new awt2swing.Scrollbar ();\r
-this.hscroll =  new awt2swing.Scrollbar ();\r
-this.seqPanelHolder =  new awt2swing.Panel ();\r
-this.scalePanelHolder =  new awt2swing.Panel ();\r
-this.idPanelHolder =  new awt2swing.Panel ();\r
-this.idSpaceFillerPanel1 =  new awt2swing.Panel ();\r
-this.annotationSpaceFillerHolder =  new awt2swing.Panel ();\r
-this.hscrollFillerPanel =  new awt2swing.Panel ();\r
-this.annotationPanelHolder =  new awt2swing.Panel ();\r
-this.apvscroll =  new awt2swing.Scrollbar ();\r
-});\r
-Clazz.overrideMethod (c$, "finalize", \r
-function () {\r
-this.alignFrame = null;\r
-this.av = null;\r
-this.seqPanel = null;\r
-this.seqPanelHolder = null;\r
-this.sequenceHolderPanel = null;\r
-this.scalePanel = null;\r
-this.scalePanelHolder = null;\r
-this.annotationPanel = null;\r
-this.annotationPanelHolder = null;\r
-this.annotationSpaceFillerHolder = null;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (af, av) {\r
-Clazz.superConstructor (this, jalview.appletgui.AlignmentPanel, []);\r
-this.setName ("alignmentPanel");\r
-try {\r
-this.jbInit ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.alignFrame = af;\r
-this.av = av;\r
-this.seqPanel =  new jalview.appletgui.SeqPanel (av, this);\r
-this.idPanel =  new jalview.appletgui.IdPanel (av, this);\r
-this.scalePanel =  new jalview.appletgui.ScalePanel (av, this);\r
-this.idwidthAdjuster =  new jalview.appletgui.IdwidthAdjuster (this);\r
-this.annotationPanel =  new jalview.appletgui.AnnotationPanel (this);\r
-this.annotationPanelHolder.add (this.annotationPanel, "Center");\r
-this.sequenceHolderPanel.add (this.annotationPanelHolder, "South");\r
-this.alabels =  new jalview.appletgui.AnnotationLabels (this);\r
-this.setAnnotationVisible (av.isShowAnnotation ());\r
-this.idPanelHolder.add (this.idPanel, "Center");\r
-this.idSpaceFillerPanel1.add (this.idwidthAdjuster, "Center");\r
-this.annotationSpaceFillerHolder.add (this.alabels, "Center");\r
-this.scalePanelHolder.add (this.scalePanel, "Center");\r
-this.seqPanelHolder.add (this.seqPanel, "Center");\r
-this.fontChanged ();\r
-this.setScrollValues (0, 0);\r
-this.apvscroll.addAdjustmentListener (this);\r
-this.hscroll.addAdjustmentListener (this);\r
-this.vscroll.addAdjustmentListener (this);\r
-this.addComponentListener (((Clazz.isClassDefined ("jalview.appletgui.AlignmentPanel$1") ? 0 : jalview.appletgui.AlignmentPanel.$AlignmentPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignmentPanel$1, this, Clazz.cloneFinals ("av", av))));\r
-var d = this.calculateIdWidth ();\r
-this.idPanel.idCanvas.setSize (d);\r
-this.hscrollFillerPanel.setSize (d.width, this.annotationPanel.getSize ().height);\r
-this.idPanel.idCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height);\r
-this.annotationSpaceFillerHolder.setSize (d.width, this.annotationPanel.getSize ().height);\r
-this.alabels.setSize (d.width, this.annotationPanel.getSize ().height);\r
-var ap = this;\r
-av.addPropertyChangeListener (((Clazz.isClassDefined ("jalview.appletgui.AlignmentPanel$2") ? 0 : jalview.appletgui.AlignmentPanel.$AlignmentPanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignmentPanel$2, this, Clazz.cloneFinals ("ap", ap, "av", av))));\r
-}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignViewport");\r
-Clazz.overrideMethod (c$, "getAlignViewport", \r
-function () {\r
-return this.av;\r
-});\r
-Clazz.defineMethod (c$, "getSequenceRenderer", \r
-function () {\r
-return this.seqPanel.seqCanvas.sr;\r
-});\r
-Clazz.overrideMethod (c$, "getFeatureRenderer", \r
-function () {\r
-return this.seqPanel.seqCanvas.fr;\r
-});\r
-Clazz.overrideMethod (c$, "cloneFeatureRenderer", \r
-function () {\r
-var nfr =  new jalview.appletgui.FeatureRenderer (this.av);\r
-nfr.transferSettings (this.seqPanel.seqCanvas.fr);\r
-return nfr;\r
-});\r
-Clazz.defineMethod (c$, "alignmentChanged", \r
-function () {\r
-this.av.alignmentChanged (this);\r
-if (this.overviewPanel != null) {\r
-this.overviewPanel.updateOverviewImage ();\r
-}this.alignFrame.updateEditMenuBar ();\r
-this.repaint ();\r
-});\r
-Clazz.defineMethod (c$, "fontChanged", \r
-function () {\r
-this.idPanel.idCanvas.image = null;\r
-var fm = this.getFontMetrics (this.av.getFont ());\r
-this.scalePanel.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ()));\r
-this.idwidthAdjuster.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ()));\r
-this.av.updateSequenceIdColours ();\r
-this.annotationPanel.image = null;\r
-var ap = this.annotationPanel.adjustPanelHeight (false);\r
-var d = this.calculateIdWidth ();\r
-d.setSize (d.width + 4, this.seqPanel.seqCanvas.getSize ().height);\r
-this.alabels.setSize (d.width + 4, ap);\r
-this.idPanel.idCanvas.setSize (d);\r
-this.hscrollFillerPanel.setSize (d);\r
-this.validateAnnotationDimensions (false);\r
-this.annotationPanel.repaint ();\r
-this.validate ();\r
-this.repaint ();\r
-if (this.overviewPanel != null) {\r
-this.overviewPanel.updateOverviewImage ();\r
-}});\r
-Clazz.defineMethod (c$, "setIdWidth", \r
-function (w, h) {\r
-this.idPanel.idCanvas.setSize (w, h);\r
-this.idPanelHolder.setSize (w, this.idPanelHolder.getSize ().height);\r
-this.annotationSpaceFillerHolder.setSize (w, this.annotationSpaceFillerHolder.getSize ().height);\r
-this.alabels.setSize (w, this.alabels.getSize ().height);\r
-this.validate ();\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "calculateIdWidth", \r
-function () {\r
-if (this.av.nullFrame == null) {\r
-this.av.nullFrame =  new awt2swing.Frame ();\r
-this.av.nullFrame.addNotify ();\r
-this.av.nullFrame.setFont (this.av.font);\r
-}var g = this.av.nullFrame.getGraphics ();\r
-var fm = g.getFontMetrics (this.av.font);\r
-var al = this.av.getAlignment ();\r
-var i = 0;\r
-var idWidth = 0;\r
-var id;\r
-while (i < al.getHeight () && al.getSequenceAt (i) != null) {\r
-var s = al.getSequenceAt (i);\r
-id = s.getDisplayId (this.av.getShowJVSuffix ());\r
-if (fm.stringWidth (id) > idWidth) {\r
-idWidth = fm.stringWidth (id);\r
-}i++;\r
-}\r
-i = 0;\r
-if (al.getAlignmentAnnotation () != null) {\r
-fm = g.getFontMetrics (this.av.nullFrame.getFont ());\r
-while (i < al.getAlignmentAnnotation ().length) {\r
-var label = al.getAlignmentAnnotation ()[i].label;\r
-if (fm.stringWidth (label) > idWidth) {\r
-idWidth = fm.stringWidth (label);\r
-}i++;\r
-}\r
-}return  new java.awt.Dimension (idWidth, this.idPanel.idCanvas.getSize ().height);\r
-});\r
-Clazz.defineMethod (c$, "highlightSearchResults", \r
-function (results) {\r
-this.scrollToPosition (results);\r
-this.seqPanel.seqCanvas.highlightSearchResults (results);\r
-}, "jalview.datamodel.SearchResults");\r
-Clazz.defineMethod (c$, "scrollToPosition", \r
-function (results) {\r
-return this.scrollToPosition (results, true);\r
-}, "jalview.datamodel.SearchResults");\r
-Clazz.defineMethod (c$, "scrollToPosition", \r
-function (results, redrawOverview) {\r
-return this.scrollToPosition (results, redrawOverview, false);\r
-}, "jalview.datamodel.SearchResults,~B");\r
-Clazz.defineMethod (c$, "scrollToPosition", \r
-function (results, redrawOverview, centre) {\r
-if (results != null && results.getSize () > 0) {\r
-var alignment = this.av.getAlignment ();\r
-var seqIndex = alignment.findIndex (results);\r
-if (seqIndex == -1) {\r
-return false;\r
-}var seq = alignment.getSequenceAt (seqIndex);\r
-var r = results.getResults (seq, 0, alignment.getWidth ());\r
-if (r == null) {\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.out.println ("DEBUG: scroll didn't happen - results not within alignment : " + seq.getStart () + "," + seq.getEnd ());\r
-}return false;\r
-}if (jalview.bin.JalviewLite.debug) {\r
-}var start = r[0];\r
-var end = r[1];\r
-if (centre) {\r
-var offset = Clazz.doubleToInt ((this.av.getEndRes () - this.av.getStartRes () + 1) / 2) - 1;\r
-start = Math.max (start - offset, 0);\r
-end = Math.min (end + offset, seq.getEnd () - 1);\r
-}if (start < 0) {\r
-return false;\r
-}if (end == seq.getEnd ()) {\r
-return false;\r
-}return this.scrollTo (start, end, seqIndex, false, redrawOverview);\r
-}return true;\r
-}, "jalview.datamodel.SearchResults,~B,~B");\r
-Clazz.defineMethod (c$, "scrollTo", \r
-function (ostart, end, seqIndex, scrollToNearest, redrawOverview) {\r
-var startv;\r
-var endv;\r
-var starts;\r
-var ends;\r
-var width;\r
-var start = -1;\r
-if (this.av.hasHiddenColumns ()) {\r
-start = this.av.getColumnSelection ().findColumnPosition (ostart);\r
-end = this.av.getColumnSelection ().findColumnPosition (end);\r
-if (start == end) {\r
-if (!scrollToNearest && !this.av.getColumnSelection ().isVisible (ostart)) {\r
-return false;\r
-}}} else {\r
-start = ostart;\r
-}if (!this.av.getWrapAlignment ()) {\r
-if ((startv = this.av.getStartRes ()) >= start) {\r
-this.setScrollValues (start - 1, seqIndex);\r
-} else if ((endv = this.av.getEndRes ()) <= end) {\r
-this.setScrollValues (startv + 1 + end - endv, seqIndex);\r
-} else if ((starts = this.av.getStartSeq ()) > seqIndex) {\r
-this.setScrollValues (this.av.getStartRes (), seqIndex);\r
-} else if ((ends = this.av.getEndSeq ()) <= seqIndex) {\r
-this.setScrollValues (this.av.getStartRes (), starts + seqIndex - ends + 1);\r
-}} else {\r
-this.scrollToWrappedVisible (start);\r
-}if (redrawOverview && this.overviewPanel != null) {\r
-this.overviewPanel.setBoxPosition ();\r
-}this.paintAlignment (redrawOverview);\r
-return true;\r
-}, "~N,~N,~N,~B,~B");\r
-Clazz.defineMethod (c$, "scrollToWrappedVisible", \r
-function (res) {\r
-var cwidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);\r
-if (res <= this.av.getStartRes () || res >= (this.av.getStartRes () + cwidth)) {\r
-this.vscroll.setValue (Clazz.doubleToInt (res / cwidth));\r
-this.av.startRes = this.vscroll.getValue () * cwidth;\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "getOverviewPanel", \r
-function () {\r
-return this.overviewPanel;\r
-});\r
-Clazz.defineMethod (c$, "setOverviewPanel", \r
-function (op) {\r
-this.overviewPanel = op;\r
-}, "jalview.appletgui.OverviewPanel");\r
-Clazz.defineMethod (c$, "setAnnotationVisible", \r
-function (b) {\r
-if (!this.av.getWrapAlignment ()) {\r
-this.annotationSpaceFillerHolder.setVisible (b);\r
-this.annotationPanelHolder.setVisible (b);\r
-} else {\r
-this.annotationSpaceFillerHolder.setVisible (false);\r
-this.annotationPanelHolder.setVisible (false);\r
-}this.validate ();\r
-this.repaint ();\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "adjustAnnotationHeight", \r
-function () {\r
-if (this.alignFrame.getSize ().height == 0) {\r
-System.out.println ("adjustAnnotationHeight frame size zero NEEDS FIXING");\r
-}this.fontChanged ();\r
-this.validateAnnotationDimensions (true);\r
-this.apvscroll.addNotify ();\r
-this.hscroll.addNotify ();\r
-this.validate ();\r
-this.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "validateAnnotationDimensions", \r
-function (adjustPanelHeight) {\r
-var rowHeight = this.av.getCharHeight ();\r
-var alignmentHeight = rowHeight * this.av.getAlignment ().getHeight ();\r
-var annotationHeight = this.av.calcPanelHeight ();\r
-var mheight = annotationHeight;\r
-var d = this.sequenceHolderPanel.getSize ();\r
-var availableHeight = d.height - this.scalePanelHolder.getHeight ();\r
-if (adjustPanelHeight) {\r
-if (annotationHeight + alignmentHeight > availableHeight) {\r
-annotationHeight = Math.min (annotationHeight, availableHeight - 2 * rowHeight);\r
-}} else {\r
-annotationHeight = this.annotationPanelHolder.getSize ().height;\r
-}if (availableHeight - annotationHeight < 5) {\r
-annotationHeight = availableHeight;\r
-}this.annotationPanel.setSize ( new java.awt.Dimension (d.width, annotationHeight));\r
-this.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, annotationHeight));\r
-this.seqPanel.seqCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height);\r
-var e = this.idPanel.getSize ();\r
-this.alabels.setSize ( new java.awt.Dimension (e.width, annotationHeight));\r
-this.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, annotationHeight));\r
-var s = this.apvscroll.getValue ();\r
-if (s > mheight - annotationHeight) {\r
-s = 0;\r
-}this.apvscroll.setValues (s, annotationHeight, 0, mheight);\r
-this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false);\r
-this.alabels.setScrollOffset (this.apvscroll.getValue (), false);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setWrapAlignment", \r
-function (wrap) {\r
-this.av.startSeq = 0;\r
-this.av.startRes = 0;\r
-this.scalePanelHolder.setVisible (!wrap);\r
-this.hscroll.setVisible (!wrap);\r
-this.idwidthAdjuster.setVisible (!wrap);\r
-if (wrap) {\r
-this.annotationPanelHolder.setVisible (false);\r
-this.annotationSpaceFillerHolder.setVisible (false);\r
-} else if (this.av.isShowAnnotation ()) {\r
-this.annotationPanelHolder.setVisible (true);\r
-this.annotationSpaceFillerHolder.setVisible (true);\r
-}this.idSpaceFillerPanel1.setVisible (!wrap);\r
-this.fontChanged ();\r
-this.validate ();\r
-this.sequenceHolderPanel.validate ();\r
-this.repaint ();\r
-}, "~B");\r
-Clazz.defineMethod (c$, "scrollUp", \r
-function (up) {\r
-if (up) {\r
-if (this.vscroll.getValue () < 1) {\r
-return false;\r
-}this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () - 1);\r
-} else {\r
-if (this.vextent + this.vscroll.getValue () >= this.av.getAlignment ().getHeight ()) {\r
-return false;\r
-}this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () + 1);\r
-}this.repaint ();\r
-return true;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "scrollRight", \r
-function (right) {\r
-if (!right) {\r
-if (this.hscroll.getValue () < 1) {\r
-return false;\r
-}this.setScrollValues (this.hscroll.getValue () - 1, this.vscroll.getValue ());\r
-} else {\r
-if (this.hextent + this.hscroll.getValue () >= this.av.getAlignment ().getWidth ()) {\r
-return false;\r
-}this.setScrollValues (this.hscroll.getValue () + 1, this.vscroll.getValue ());\r
-}this.repaint ();\r
-return true;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setScrollValues", \r
-function (x, y) {\r
-var width = this.av.getAlignment ().getWidth ();\r
-var height = this.av.getAlignment ().getHeight ();\r
-if (this.av.hasHiddenColumns ()) {\r
-width = this.av.getColumnSelection ().findColumnPosition (width);\r
-}if (x < 0) {\r
-x = 0;\r
-};this.hextent = Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ());\r
-this.vextent = Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ());\r
-if (this.hextent > width) {\r
-this.hextent = width;\r
-}if (this.vextent > height) {\r
-this.vextent = height;\r
-}if ((this.hextent + x) > width) {\r
-System.err.println ("hextent was " + this.hextent + " and x was " + x);\r
-x = width - this.hextent;\r
-}if ((this.vextent + y) > height) {\r
-y = height - this.vextent;\r
-}if (y < 0) {\r
-y = 0;\r
-}if (x < 0) {\r
-System.err.println ("x was " + x);\r
-x = 0;\r
-}this.av.setStartSeq (y);\r
-var endSeq = y + this.vextent;\r
-if (endSeq > this.av.getAlignment ().getHeight ()) {\r
-endSeq = this.av.getAlignment ().getHeight ();\r
-}this.av.setEndSeq (endSeq);\r
-this.av.setStartRes (x);\r
-this.av.setEndRes ((x + (Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()))) - 1);\r
-this.hscroll.setValues (x, this.hextent, 0, width);\r
-this.vscroll.setValues (y, this.vextent, 0, height);\r
-if (this.overviewPanel != null) {\r
-this.overviewPanel.setBoxPosition ();\r
-}this.sendViewPosition ();\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "adjustmentValueChanged", \r
-function (evt) {\r
-if (this.annotationPanel == null) return;\r
-var oldX = this.av.getStartRes ();\r
-var oldY = this.av.getStartSeq ();\r
-if (evt == null || evt.getSource () === this.apvscroll) {\r
-this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false);\r
-this.alabels.setScrollOffset (this.apvscroll.getValue (), false);\r
-}if (evt == null || evt.getSource () === this.hscroll) {\r
-var x = this.hscroll.getValue ();\r
-this.av.setStartRes (x);\r
-this.av.setEndRes (x + Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()) - 1);\r
-}if (evt == null || evt.getSource () === this.vscroll) {\r
-var offy = this.vscroll.getValue ();\r
-if (this.av.getWrapAlignment ()) {\r
-var rowSize = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);\r
-this.av.setStartRes (this.vscroll.getValue () * rowSize);\r
-this.av.setEndRes ((this.vscroll.getValue () + 1) * rowSize);\r
-} else {\r
-this.av.setStartSeq (offy);\r
-this.av.setEndSeq (offy + Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ()));\r
-}}if (this.overviewPanel != null) {\r
-this.overviewPanel.setBoxPosition ();\r
-}var scrollX = this.av.startRes - oldX;\r
-var scrollY = this.av.startSeq - oldY;\r
-if (this.av.getWrapAlignment () || !this.fastPaint || this.av.MAC) {\r
-this.repaint ();\r
-} else {\r
-if (scrollX > this.av.endRes - this.av.startRes) {\r
-scrollX = this.av.endRes - this.av.startRes;\r
-} else if (scrollX < this.av.startRes - this.av.endRes) {\r
-scrollX = this.av.startRes - this.av.endRes;\r
-}this.idPanel.idCanvas.fastPaint (scrollY);\r
-this.seqPanel.seqCanvas.fastPaint (scrollX, scrollY);\r
-this.scalePanel.repaint ();\r
-if (this.av.isShowAnnotation ()) {\r
-this.annotationPanel.fastPaint (this.av.getStartRes () - oldX);\r
-}}this.sendViewPosition ();\r
-if (this.isFollowingComplementScroll ()) {\r
-this.setFollowingComplementScroll (false);\r
-} else {\r
-var ap = this.getComplementPanel ();\r
-this.av.scrollComplementaryAlignment (ap);\r
-}}, "java.awt.event.AdjustmentEvent");\r
-Clazz.defineMethod (c$, "getComplementPanel", \r
-($fz = function () {\r
-var ap = null;\r
-if (this.alignFrame != null) {\r
-var sf = this.alignFrame.getSplitFrame ();\r
-if (sf != null) {\r
-var other = sf.getComplement (this.alignFrame);\r
-if (other != null) {\r
-ap = other.alignPanel;\r
-}}}return ap;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "scrollToCentre", \r
-function (sr, seqOffset) {\r
-var mappedTo = sr.getResultSequence (0);\r
-var seqs = this.av.getAlignment ().getSequences ();\r
-var sequenceIndex = 0;\r
-var matched = false;\r
-for (var seq, $seq = seqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-if (mappedTo === seq.getDatasetSequence ()) {\r
-matched = true;\r
-break;\r
-}sequenceIndex++;\r
-}\r
-if (!matched) {\r
-return;\r
-}sequenceIndex = Math.max (0, sequenceIndex - seqOffset);\r
-sr.getResults ().get (0).setSequence (this.av.getAlignment ().getSequenceAt (sequenceIndex));\r
-this.setFollowingComplementScroll (true);\r
-this.scrollToPosition (sr, true, true);\r
-}, "jalview.datamodel.SearchResults,~N");\r
-Clazz.defineMethod (c$, "sendViewPosition", \r
-($fz = function () {\r
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sendViewPosition (this, this.av.startRes, this.av.endRes, this.av.startSeq, this.av.endSeq);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "paintAlignment", \r
-function (updateOverview) {\r
-var sorter =  new jalview.analysis.AnnotationSorter (this.getAlignment (), this.av.isShowAutocalculatedAbove ());\r
-sorter.sort (this.getAlignment ().getAlignmentAnnotation (), this.av.getSortAnnotationsBy ());\r
-this.repaint ();\r
-if (updateOverview) {\r
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sequenceColoursChanged (this);\r
-if (this.overviewPanel != null) {\r
-this.overviewPanel.updateOverviewImage ();\r
-}}}, "~B");\r
-Clazz.overrideMethod (c$, "paintComponent", \r
-function (g) {\r
-System.out.println ("alignframe paintcomp");\r
-this.invalidate ();\r
-var d = this.idPanel.idCanvas.getSize ();\r
-var canvasHeight = this.seqPanel.seqCanvas.getSize ().height;\r
-if (canvasHeight != d.height) {\r
-this.idPanel.idCanvas.setSize (d.width, canvasHeight);\r
-}if (this.av.getWrapAlignment ()) {\r
-var maxwidth = this.av.getAlignment ().getWidth ();\r
-if (this.av.hasHiddenColumns ()) {\r
-maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;\r
-}var canvasWidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);\r
-if (canvasWidth > 0) {\r
-var max = Clazz.doubleToInt (maxwidth / canvasWidth);\r
-this.vscroll.setMaximum (1 + max);\r
-this.vscroll.setUnitIncrement (1);\r
-this.vscroll.setVisibleAmount (1);\r
-}} else {\r
-this.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ());\r
-}}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "jbInit", \r
-($fz = function () {\r
-this.setLayout ( new java.awt.BorderLayout ());\r
-this.sequenceHolderPanel.setLayout ( new java.awt.BorderLayout ());\r
-this.seqPanelHolder.setLayout ( new java.awt.BorderLayout ());\r
-this.scalePanelHolder.setBackground (java.awt.Color.white);\r
-this.scalePanelHolder.setLayout ( new java.awt.BorderLayout ());\r
-this.idPanelHolder.setLayout ( new java.awt.BorderLayout ());\r
-this.idSpaceFillerPanel1.setBackground (java.awt.Color.white);\r
-this.idSpaceFillerPanel1.setLayout ( new java.awt.BorderLayout ());\r
-this.annotationSpaceFillerHolder.setBackground (java.awt.Color.white);\r
-this.annotationSpaceFillerHolder.setLayout ( new java.awt.BorderLayout ());\r
-this.hscroll.setOrientation (0);\r
-var hscrollHolder =  new awt2swing.Panel ();\r
-hscrollHolder.setLayout ( new java.awt.BorderLayout ());\r
-this.hscrollFillerPanel.setBackground (java.awt.Color.white);\r
-this.apvscroll.setOrientation (1);\r
-this.apvscroll.setVisible (true);\r
-this.apvscroll.addAdjustmentListener (this);\r
-this.annotationPanelHolder.setBackground (java.awt.Color.white);\r
-this.annotationPanelHolder.setLayout ( new java.awt.BorderLayout ());\r
-this.annotationPanelHolder.add (this.apvscroll, "East");\r
-hscrollHolder.setBackground (java.awt.Color.white);\r
-this.seqPanelHolder.setBackground (java.awt.Color.white);\r
-this.idPanelHolder.setBackground (java.awt.Color.white);\r
-this.sequenceHolderPanel.add (this.scalePanelHolder, "North");\r
-this.sequenceHolderPanel.add (this.seqPanelHolder, "Center");\r
-this.seqPanelHolder.add (this.vscroll, "East");\r
-this.add (this.idPanelHolder, "West");\r
-this.idPanelHolder.add (this.idSpaceFillerPanel1, "North");\r
-this.idPanelHolder.add (this.annotationSpaceFillerHolder, "South");\r
-this.add (hscrollHolder, "South");\r
-hscrollHolder.add (this.hscroll, "Center");\r
-hscrollHolder.add (this.hscrollFillerPanel, "West");\r
-this.add (this.sequenceHolderPanel, "Center");\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "updateAnnotation", \r
-function () {\r
-this.updateAnnotation (false);\r
-});\r
-Clazz.defineMethod (c$, "updateAnnotation", \r
-function (applyGlobalSettings) {\r
-this.updateAnnotation (applyGlobalSettings, false);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "updateAnnotation", \r
-function (applyGlobalSettings, preserveNewGroupSettings) {\r
-this.av.updateGroupAnnotationSettings (applyGlobalSettings, preserveNewGroupSettings);\r
-this.adjustAnnotationHeight ();\r
-}, "~B,~B");\r
-Clazz.overrideMethod (c$, "getAlignment", \r
-function () {\r
-return this.av.getAlignment ();\r
-});\r
-Clazz.overrideMethod (c$, "getViewName", \r
-function () {\r
-return this.getName ();\r
-});\r
-Clazz.overrideMethod (c$, "getStructureSelectionManager", \r
-function () {\r
-return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet);\r
-});\r
-Clazz.overrideMethod (c$, "raiseOOMWarning", \r
-function (string, error) {\r
-System.err.println ("Out of memory whilst '" + string + "'");\r
-error.printStackTrace ();\r
-}, "~S,OutOfMemoryError");\r
-Clazz.defineMethod (c$, "setFollowingComplementScroll", \r
-function (b) {\r
-this.followingComplementScroll = b;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isFollowingComplementScroll", \r
-function () {\r
-return this.followingComplementScroll;\r
-});\r
-c$.$AlignmentPanel$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignmentPanel$1", java.awt.event.ComponentAdapter);\r
-Clazz.overrideMethod (c$, "componentResized", \r
-function (evt) {\r
-this.b$["jalview.appletgui.AlignmentPanel"].setScrollValues (this.f$.av.getStartRes (), this.f$.av.getStartSeq ());\r
-if (this.b$["jalview.appletgui.AlignmentPanel"].getSize ().height > 0 && this.b$["jalview.appletgui.AlignmentPanel"].annotationPanelHolder.getSize ().height > 0) {\r
-this.b$["jalview.appletgui.AlignmentPanel"].validateAnnotationDimensions (false);\r
-}this.b$["jalview.appletgui.AlignmentPanel"].repaint ();\r
-}, "java.awt.event.ComponentEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AlignmentPanel$2$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignmentPanel$2", null, java.beans.PropertyChangeListener);\r
-Clazz.overrideMethod (c$, "propertyChange", \r
-function (evt) {\r
-if (evt.getPropertyName ().equals ("alignment")) {\r
-jalview.appletgui.PaintRefresher.Refresh (this.f$.ap, this.f$.av.getSequenceSetId (), true, true);\r
-this.b$["jalview.appletgui.AlignmentPanel"].alignmentChanged ();\r
-}}, "java.beans.PropertyChangeEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "jalview.api.AlignmentViewPanel", "java.awt.event.AdjustmentListener", "awt2swing.Scrollbar"], "jalview.appletgui.AlignmentPanel", ["awt2swing.Frame", "jalview.analysis.AnnotationSorter", "jalview.appletgui.AnnotationLabels", "$.AnnotationPanel", "$.FeatureRenderer", "$.IdPanel", "$.IdwidthAdjuster", "$.PaintRefresher", "$.ScalePanel", "$.SeqPanel", "jalview.bin.JalviewLite", "jalview.structure.StructureSelectionManager", "java.awt.BorderLayout", "$.Color", "$.Dimension", "java.awt.event.ComponentAdapter", "java.beans.PropertyChangeListener"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.av = null;
+this.overviewPanel = null;
+this.seqPanel = null;
+this.idPanel = null;
+this.idwidthAdjuster = null;
+this.alignFrame = null;
+this.scalePanel = null;
+this.annotationPanel = null;
+this.alabels = null;
+this.fastPaint = true;
+this.hextent = 0;
+this.vextent = 0;
+this.sequenceHolderPanel = null;
+this.vscroll = null;
+this.hscroll = null;
+this.seqPanelHolder = null;
+this.scalePanelHolder = null;
+this.idPanelHolder = null;
+this.idSpaceFillerPanel1 = null;
+this.annotationSpaceFillerHolder = null;
+this.hscrollFillerPanel = null;
+this.annotationPanelHolder = null;
+this.apvscroll = null;
+this.followingComplementScroll = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AlignmentPanel", awt2swing.Panel, [java.awt.event.AdjustmentListener, jalview.api.AlignmentViewPanel]);
+Clazz.prepareFields (c$, function () {
+this.sequenceHolderPanel =  new awt2swing.Panel ();
+this.vscroll =  new awt2swing.Scrollbar ();
+this.hscroll =  new awt2swing.Scrollbar ();
+this.seqPanelHolder =  new awt2swing.Panel ();
+this.scalePanelHolder =  new awt2swing.Panel ();
+this.idPanelHolder =  new awt2swing.Panel ();
+this.idSpaceFillerPanel1 =  new awt2swing.Panel ();
+this.annotationSpaceFillerHolder =  new awt2swing.Panel ();
+this.hscrollFillerPanel =  new awt2swing.Panel ();
+this.annotationPanelHolder =  new awt2swing.Panel ();
+this.apvscroll =  new awt2swing.Scrollbar ();
+});
+Clazz.overrideMethod (c$, "finalize", 
+function () {
+this.alignFrame = null;
+this.av = null;
+this.seqPanel = null;
+this.seqPanelHolder = null;
+this.sequenceHolderPanel = null;
+this.scalePanel = null;
+this.scalePanelHolder = null;
+this.annotationPanel = null;
+this.annotationPanelHolder = null;
+this.annotationSpaceFillerHolder = null;
+});
+Clazz.makeConstructor (c$, 
+function (af, av) {
+Clazz.superConstructor (this, jalview.appletgui.AlignmentPanel, []);
+this.setName ("alignmentPanel");
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.alignFrame = af;
+this.av = av;
+this.seqPanel =  new jalview.appletgui.SeqPanel (av, this);
+this.idPanel =  new jalview.appletgui.IdPanel (av, this);
+this.scalePanel =  new jalview.appletgui.ScalePanel (av, this);
+this.idwidthAdjuster =  new jalview.appletgui.IdwidthAdjuster (this);
+this.annotationPanel =  new jalview.appletgui.AnnotationPanel (this);
+this.annotationPanelHolder.add (this.annotationPanel, "Center");
+this.sequenceHolderPanel.add (this.annotationPanelHolder, "South");
+this.alabels =  new jalview.appletgui.AnnotationLabels (this);
+this.setAnnotationVisible (av.isShowAnnotation ());
+this.idPanelHolder.add (this.idPanel, "Center");
+this.idSpaceFillerPanel1.add (this.idwidthAdjuster, "Center");
+this.annotationSpaceFillerHolder.add (this.alabels, "Center");
+this.scalePanelHolder.add (this.scalePanel, "Center");
+this.seqPanelHolder.add (this.seqPanel, "Center");
+this.fontChanged ();
+this.setScrollValues (0, 0);
+this.apvscroll.addAdjustmentListener (this);
+this.hscroll.addAdjustmentListener (this);
+this.vscroll.addAdjustmentListener (this);
+this.addComponentListener (((Clazz.isClassDefined ("jalview.appletgui.AlignmentPanel$1") ? 0 : jalview.appletgui.AlignmentPanel.$AlignmentPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignmentPanel$1, this, Clazz.cloneFinals ("av", av))));
+var d = this.calculateIdWidth ();
+this.idPanel.idCanvas.setSize (d);
+this.hscrollFillerPanel.setSize (d.width, this.annotationPanel.getSize ().height);
+this.idPanel.idCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height);
+this.annotationSpaceFillerHolder.setSize (d.width, this.annotationPanel.getSize ().height);
+this.alabels.setSize (d.width, this.annotationPanel.getSize ().height);
+var ap = this;
+av.addPropertyChangeListener (((Clazz.isClassDefined ("jalview.appletgui.AlignmentPanel$2") ? 0 : jalview.appletgui.AlignmentPanel.$AlignmentPanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AlignmentPanel$2, this, Clazz.cloneFinals ("ap", ap, "av", av))));
+}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignViewport");
+Clazz.overrideMethod (c$, "getAlignViewport", 
+function () {
+return this.av;
+});
+Clazz.defineMethod (c$, "getSequenceRenderer", 
+function () {
+return this.seqPanel.seqCanvas.sr;
+});
+Clazz.overrideMethod (c$, "getFeatureRenderer", 
+function () {
+return this.seqPanel.seqCanvas.fr;
+});
+Clazz.overrideMethod (c$, "cloneFeatureRenderer", 
+function () {
+var nfr =  new jalview.appletgui.FeatureRenderer (this.av);
+nfr.transferSettings (this.seqPanel.seqCanvas.fr);
+return nfr;
+});
+Clazz.defineMethod (c$, "alignmentChanged", 
+function () {
+this.av.alignmentChanged (this);
+if (this.overviewPanel != null) {
+this.overviewPanel.updateOverviewImage ();
+}this.alignFrame.updateEditMenuBar ();
+this.repaint ();
+});
+Clazz.defineMethod (c$, "fontChanged", 
+function () {
+this.idPanel.idCanvas.image = null;
+var fm = this.getFontMetrics (this.av.getFont ());
+this.scalePanel.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ()));
+this.idwidthAdjuster.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ()));
+this.av.updateSequenceIdColours ();
+this.annotationPanel.image = null;
+var ap = this.annotationPanel.adjustPanelHeight (false);
+var d = this.calculateIdWidth ();
+d.setSize (d.width + 4, this.seqPanel.seqCanvas.getSize ().height);
+this.alabels.setSize (d.width + 4, ap);
+this.idPanel.idCanvas.setSize (d);
+this.hscrollFillerPanel.setSize (d);
+this.validateAnnotationDimensions (false);
+this.annotationPanel.repaint ();
+this.validate ();
+this.repaint ();
+if (this.overviewPanel != null) {
+this.overviewPanel.updateOverviewImage ();
+}});
+Clazz.defineMethod (c$, "setIdWidth", 
+function (w, h) {
+this.idPanel.idCanvas.setSize (w, h);
+this.idPanelHolder.setSize (w, this.idPanelHolder.getSize ().height);
+this.annotationSpaceFillerHolder.setSize (w, this.annotationSpaceFillerHolder.getSize ().height);
+this.alabels.setSize (w, this.alabels.getSize ().height);
+this.validate ();
+}, "~N,~N");
+Clazz.defineMethod (c$, "calculateIdWidth", 
+function () {
+if (this.av.nullFrame == null) {
+this.av.nullFrame =  new awt2swing.Frame ();
+this.av.nullFrame.addNotify ();
+this.av.nullFrame.setFont (this.av.font);
+}var g = this.av.nullFrame.getGraphics ();
+var fm = g.getFontMetrics (this.av.font);
+var al = this.av.getAlignment ();
+var i = 0;
+var idWidth = 0;
+var id;
+while (i < al.getHeight () && al.getSequenceAt (i) != null) {
+var s = al.getSequenceAt (i);
+id = s.getDisplayId (this.av.getShowJVSuffix ());
+if (fm.stringWidth (id) > idWidth) {
+idWidth = fm.stringWidth (id);
+}i++;
+}
+i = 0;
+if (al.getAlignmentAnnotation () != null) {
+fm = g.getFontMetrics (this.av.nullFrame.getFont ());
+while (i < al.getAlignmentAnnotation ().length) {
+var label = al.getAlignmentAnnotation ()[i].label;
+if (fm.stringWidth (label) > idWidth) {
+idWidth = fm.stringWidth (label);
+}i++;
+}
+}return  new java.awt.Dimension (idWidth, this.idPanel.idCanvas.getSize ().height);
+});
+Clazz.defineMethod (c$, "highlightSearchResults", 
+function (results) {
+this.scrollToPosition (results);
+this.seqPanel.seqCanvas.highlightSearchResults (results);
+}, "jalview.datamodel.SearchResults");
+Clazz.defineMethod (c$, "scrollToPosition", 
+function (results) {
+return this.scrollToPosition (results, true);
+}, "jalview.datamodel.SearchResults");
+Clazz.defineMethod (c$, "scrollToPosition", 
+function (results, redrawOverview) {
+return this.scrollToPosition (results, redrawOverview, false);
+}, "jalview.datamodel.SearchResults,~B");
+Clazz.defineMethod (c$, "scrollToPosition", 
+function (results, redrawOverview, centre) {
+if (results != null && results.getSize () > 0) {
+var alignment = this.av.getAlignment ();
+var seqIndex = alignment.findIndex (results);
+if (seqIndex == -1) {
+return false;
+}var seq = alignment.getSequenceAt (seqIndex);
+var r = results.getResults (seq, 0, alignment.getWidth ());
+if (r == null) {
+if (jalview.bin.JalviewLite.debug) {
+System.out.println ("DEBUG: scroll didn't happen - results not within alignment : " + seq.getStart () + "," + seq.getEnd ());
+}return false;
+}if (jalview.bin.JalviewLite.debug) {
+}var start = r[0];
+var end = r[1];
+if (centre) {
+var offset = Clazz.doubleToInt ((this.av.getEndRes () - this.av.getStartRes () + 1) / 2) - 1;
+start = Math.max (start - offset, 0);
+end = Math.min (end + offset, seq.getEnd () - 1);
+}if (start < 0) {
+return false;
+}if (end == seq.getEnd ()) {
+return false;
+}return this.scrollTo (start, end, seqIndex, false, redrawOverview);
+}return true;
+}, "jalview.datamodel.SearchResults,~B,~B");
+Clazz.defineMethod (c$, "scrollTo", 
+function (ostart, end, seqIndex, scrollToNearest, redrawOverview) {
+var startv;
+var endv;
+var starts;
+var ends;
+var width;
+var start = -1;
+if (this.av.hasHiddenColumns ()) {
+start = this.av.getColumnSelection ().findColumnPosition (ostart);
+end = this.av.getColumnSelection ().findColumnPosition (end);
+if (start == end) {
+if (!scrollToNearest && !this.av.getColumnSelection ().isVisible (ostart)) {
+return false;
+}}} else {
+start = ostart;
+}if (!this.av.getWrapAlignment ()) {
+if ((startv = this.av.getStartRes ()) >= start) {
+this.setScrollValues (start - 1, seqIndex);
+} else if ((endv = this.av.getEndRes ()) <= end) {
+this.setScrollValues (startv + 1 + end - endv, seqIndex);
+} else if ((starts = this.av.getStartSeq ()) > seqIndex) {
+this.setScrollValues (this.av.getStartRes (), seqIndex);
+} else if ((ends = this.av.getEndSeq ()) <= seqIndex) {
+this.setScrollValues (this.av.getStartRes (), starts + seqIndex - ends + 1);
+}} else {
+this.scrollToWrappedVisible (start);
+}if (redrawOverview && this.overviewPanel != null) {
+this.overviewPanel.setBoxPosition ();
+}this.paintAlignment (redrawOverview);
+return true;
+}, "~N,~N,~N,~B,~B");
+Clazz.defineMethod (c$, "scrollToWrappedVisible", 
+function (res) {
+var cwidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);
+if (res <= this.av.getStartRes () || res >= (this.av.getStartRes () + cwidth)) {
+this.vscroll.setValue (Clazz.doubleToInt (res / cwidth));
+this.av.startRes = this.vscroll.getValue () * cwidth;
+}}, "~N");
+Clazz.defineMethod (c$, "getOverviewPanel", 
+function () {
+return this.overviewPanel;
+});
+Clazz.defineMethod (c$, "setOverviewPanel", 
+function (op) {
+this.overviewPanel = op;
+}, "jalview.appletgui.OverviewPanel");
+Clazz.defineMethod (c$, "setAnnotationVisible", 
+function (b) {
+if (!this.av.getWrapAlignment ()) {
+this.annotationSpaceFillerHolder.setVisible (b);
+this.annotationPanelHolder.setVisible (b);
+} else {
+this.annotationSpaceFillerHolder.setVisible (false);
+this.annotationPanelHolder.setVisible (false);
+}this.validate ();
+this.repaint ();
+}, "~B");
+Clazz.overrideMethod (c$, "adjustAnnotationHeight", 
+function () {
+if (this.alignFrame.getSize ().height == 0) {
+System.out.println ("adjustAnnotationHeight frame size zero NEEDS FIXING");
+}this.fontChanged ();
+this.validateAnnotationDimensions (true);
+this.apvscroll.addNotify ();
+this.hscroll.addNotify ();
+this.validate ();
+this.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "validateAnnotationDimensions", 
+function (adjustPanelHeight) {
+var rowHeight = this.av.getCharHeight ();
+var alignmentHeight = rowHeight * this.av.getAlignment ().getHeight ();
+var annotationHeight = this.av.calcPanelHeight ();
+var mheight = annotationHeight;
+var d = this.sequenceHolderPanel.getSize ();
+var availableHeight = d.height - this.scalePanelHolder.getHeight ();
+if (adjustPanelHeight) {
+if (annotationHeight + alignmentHeight > availableHeight) {
+annotationHeight = Math.min (annotationHeight, availableHeight - 2 * rowHeight);
+}} else {
+annotationHeight = this.annotationPanelHolder.getSize ().height;
+}if (availableHeight - annotationHeight < 5) {
+annotationHeight = availableHeight;
+}this.annotationPanel.setSize ( new java.awt.Dimension (d.width, annotationHeight));
+this.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, annotationHeight));
+this.seqPanel.seqCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height);
+var e = this.idPanel.getSize ();
+this.alabels.setSize ( new java.awt.Dimension (e.width, annotationHeight));
+this.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, annotationHeight));
+var s = this.apvscroll.getValue ();
+if (s > mheight - annotationHeight) {
+s = 0;
+}this.apvscroll.setValues (s, annotationHeight, 0, mheight);
+this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false);
+this.alabels.setScrollOffset (this.apvscroll.getValue (), false);
+}, "~B");
+Clazz.defineMethod (c$, "setWrapAlignment", 
+function (wrap) {
+this.av.startSeq = 0;
+this.av.startRes = 0;
+this.scalePanelHolder.setVisible (!wrap);
+this.hscroll.setVisible (!wrap);
+this.idwidthAdjuster.setVisible (!wrap);
+if (wrap) {
+this.annotationPanelHolder.setVisible (false);
+this.annotationSpaceFillerHolder.setVisible (false);
+} else if (this.av.isShowAnnotation ()) {
+this.annotationPanelHolder.setVisible (true);
+this.annotationSpaceFillerHolder.setVisible (true);
+}this.idSpaceFillerPanel1.setVisible (!wrap);
+this.fontChanged ();
+this.validate ();
+this.sequenceHolderPanel.validate ();
+this.repaint ();
+}, "~B");
+Clazz.defineMethod (c$, "scrollUp", 
+function (up) {
+if (up) {
+if (this.vscroll.getValue () < 1) {
+return false;
+}this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () - 1);
+} else {
+if (this.vextent + this.vscroll.getValue () >= this.av.getAlignment ().getHeight ()) {
+return false;
+}this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () + 1);
+}this.repaint ();
+return true;
+}, "~B");
+Clazz.defineMethod (c$, "scrollRight", 
+function (right) {
+if (!right) {
+if (this.hscroll.getValue () < 1) {
+return false;
+}this.setScrollValues (this.hscroll.getValue () - 1, this.vscroll.getValue ());
+} else {
+if (this.hextent + this.hscroll.getValue () >= this.av.getAlignment ().getWidth ()) {
+return false;
+}this.setScrollValues (this.hscroll.getValue () + 1, this.vscroll.getValue ());
+}this.repaint ();
+return true;
+}, "~B");
+Clazz.defineMethod (c$, "setScrollValues", 
+function (x, y) {
+var width = this.av.getAlignment ().getWidth ();
+var height = this.av.getAlignment ().getHeight ();
+if (this.av.hasHiddenColumns ()) {
+width = this.av.getColumnSelection ().findColumnPosition (width);
+}if (x < 0) {
+x = 0;
+};this.hextent = Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ());
+this.vextent = Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ());
+if (this.hextent > width) {
+this.hextent = width;
+}if (this.vextent > height) {
+this.vextent = height;
+}if ((this.hextent + x) > width) {
+System.err.println ("hextent was " + this.hextent + " and x was " + x);
+x = width - this.hextent;
+}if ((this.vextent + y) > height) {
+y = height - this.vextent;
+}if (y < 0) {
+y = 0;
+}if (x < 0) {
+System.err.println ("x was " + x);
+x = 0;
+}this.av.setStartSeq (y);
+var endSeq = y + this.vextent;
+if (endSeq > this.av.getAlignment ().getHeight ()) {
+endSeq = this.av.getAlignment ().getHeight ();
+}this.av.setEndSeq (endSeq);
+this.av.setStartRes (x);
+this.av.setEndRes ((x + (Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()))) - 1);
+this.hscroll.setValues (x, this.hextent, 0, width);
+this.vscroll.setValues (y, this.vextent, 0, height);
+if (this.overviewPanel != null) {
+this.overviewPanel.setBoxPosition ();
+}this.sendViewPosition ();
+}, "~N,~N");
+Clazz.overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+if (this.annotationPanel == null) return;
+var oldX = this.av.getStartRes ();
+var oldY = this.av.getStartSeq ();
+if (evt == null || evt.getSource () === this.apvscroll) {
+this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false);
+this.alabels.setScrollOffset (this.apvscroll.getValue (), false);
+}if (evt == null || evt.getSource () === this.hscroll) {
+var x = this.hscroll.getValue ();
+this.av.setStartRes (x);
+this.av.setEndRes (x + Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()) - 1);
+}if (evt == null || evt.getSource () === this.vscroll) {
+var offy = this.vscroll.getValue ();
+if (this.av.getWrapAlignment ()) {
+var rowSize = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);
+this.av.setStartRes (this.vscroll.getValue () * rowSize);
+this.av.setEndRes ((this.vscroll.getValue () + 1) * rowSize);
+} else {
+this.av.setStartSeq (offy);
+this.av.setEndSeq (offy + Clazz.doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ()));
+}}if (this.overviewPanel != null) {
+this.overviewPanel.setBoxPosition ();
+}var scrollX = this.av.startRes - oldX;
+var scrollY = this.av.startSeq - oldY;
+if (this.av.getWrapAlignment () || !this.fastPaint || this.av.MAC) {
+this.repaint ();
+} else {
+if (scrollX > this.av.endRes - this.av.startRes) {
+scrollX = this.av.endRes - this.av.startRes;
+} else if (scrollX < this.av.startRes - this.av.endRes) {
+scrollX = this.av.startRes - this.av.endRes;
+}this.idPanel.idCanvas.fastPaint (scrollY);
+this.seqPanel.seqCanvas.fastPaint (scrollX, scrollY);
+this.scalePanel.repaint ();
+if (this.av.isShowAnnotation ()) {
+this.annotationPanel.fastPaint (this.av.getStartRes () - oldX);
+}}this.sendViewPosition ();
+if (this.isFollowingComplementScroll ()) {
+this.setFollowingComplementScroll (false);
+} else {
+var ap = this.getComplementPanel ();
+this.av.scrollComplementaryAlignment (ap);
+}}, "java.awt.event.AdjustmentEvent");
+Clazz.defineMethod (c$, "getComplementPanel", 
+($fz = function () {
+var ap = null;
+if (this.alignFrame != null) {
+var sf = this.alignFrame.getSplitFrame ();
+if (sf != null) {
+var other = sf.getComplement (this.alignFrame);
+if (other != null) {
+ap = other.alignPanel;
+}}}return ap;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "scrollToCentre", 
+function (sr, seqOffset) {
+var mappedTo = sr.getResultSequence (0);
+var seqs = this.av.getAlignment ().getSequences ();
+var sequenceIndex = 0;
+var matched = false;
+for (var seq, $seq = seqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+if (mappedTo === seq.getDatasetSequence ()) {
+matched = true;
+break;
+}sequenceIndex++;
+}
+if (!matched) {
+return;
+}sequenceIndex = Math.max (0, sequenceIndex - seqOffset);
+sr.getResults ().get (0).setSequence (this.av.getAlignment ().getSequenceAt (sequenceIndex));
+this.setFollowingComplementScroll (true);
+this.scrollToPosition (sr, true, true);
+}, "jalview.datamodel.SearchResults,~N");
+Clazz.defineMethod (c$, "sendViewPosition", 
+($fz = function () {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sendViewPosition (this, this.av.startRes, this.av.endRes, this.av.startSeq, this.av.endSeq);
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "paintAlignment", 
+function (updateOverview) {
+var sorter =  new jalview.analysis.AnnotationSorter (this.getAlignment (), this.av.isShowAutocalculatedAbove ());
+sorter.sort (this.getAlignment ().getAlignmentAnnotation (), this.av.getSortAnnotationsBy ());
+this.repaint ();
+if (updateOverview) {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sequenceColoursChanged (this);
+if (this.overviewPanel != null) {
+this.overviewPanel.updateOverviewImage ();
+}}}, "~B");
+Clazz.overrideMethod (c$, "paintComponent", 
+function (g) {
+System.out.println ("alignframe paintcomp");
+this.invalidate ();
+var d = this.idPanel.idCanvas.getSize ();
+var canvasHeight = this.seqPanel.seqCanvas.getSize ().height;
+if (canvasHeight != d.height) {
+this.idPanel.idCanvas.setSize (d.width, canvasHeight);
+}if (this.av.getWrapAlignment ()) {
+var maxwidth = this.av.getAlignment ().getWidth ();
+if (this.av.hasHiddenColumns ()) {
+maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
+}var canvasWidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);
+if (canvasWidth > 0) {
+var max = Clazz.doubleToInt (maxwidth / canvasWidth);
+this.vscroll.setMaximum (1 + max);
+this.vscroll.setUnitIncrement (1);
+this.vscroll.setVisibleAmount (1);
+}} else {
+this.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ());
+}}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "jbInit", 
+($fz = function () {
+this.setLayout ( new java.awt.BorderLayout ());
+this.sequenceHolderPanel.setLayout ( new java.awt.BorderLayout ());
+this.seqPanelHolder.setLayout ( new java.awt.BorderLayout ());
+this.scalePanelHolder.setBackground (java.awt.Color.white);
+this.scalePanelHolder.setLayout ( new java.awt.BorderLayout ());
+this.idPanelHolder.setLayout ( new java.awt.BorderLayout ());
+this.idSpaceFillerPanel1.setBackground (java.awt.Color.white);
+this.idSpaceFillerPanel1.setLayout ( new java.awt.BorderLayout ());
+this.annotationSpaceFillerHolder.setBackground (java.awt.Color.white);
+this.annotationSpaceFillerHolder.setLayout ( new java.awt.BorderLayout ());
+this.hscroll.setOrientation (0);
+var hscrollHolder =  new awt2swing.Panel ();
+hscrollHolder.setLayout ( new java.awt.BorderLayout ());
+this.hscrollFillerPanel.setBackground (java.awt.Color.white);
+this.apvscroll.setOrientation (1);
+this.apvscroll.setVisible (true);
+this.apvscroll.addAdjustmentListener (this);
+this.annotationPanelHolder.setBackground (java.awt.Color.white);
+this.annotationPanelHolder.setLayout ( new java.awt.BorderLayout ());
+this.annotationPanelHolder.add (this.apvscroll, "East");
+hscrollHolder.setBackground (java.awt.Color.white);
+this.seqPanelHolder.setBackground (java.awt.Color.white);
+this.idPanelHolder.setBackground (java.awt.Color.white);
+this.sequenceHolderPanel.add (this.scalePanelHolder, "North");
+this.sequenceHolderPanel.add (this.seqPanelHolder, "Center");
+this.seqPanelHolder.add (this.vscroll, "East");
+this.add (this.idPanelHolder, "West");
+this.idPanelHolder.add (this.idSpaceFillerPanel1, "North");
+this.idPanelHolder.add (this.annotationSpaceFillerHolder, "South");
+this.add (hscrollHolder, "South");
+hscrollHolder.add (this.hscroll, "Center");
+hscrollHolder.add (this.hscrollFillerPanel, "West");
+this.add (this.sequenceHolderPanel, "Center");
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "updateAnnotation", 
+function () {
+this.updateAnnotation (false);
+});
+Clazz.defineMethod (c$, "updateAnnotation", 
+function (applyGlobalSettings) {
+this.updateAnnotation (applyGlobalSettings, false);
+}, "~B");
+Clazz.defineMethod (c$, "updateAnnotation", 
+function (applyGlobalSettings, preserveNewGroupSettings) {
+this.av.updateGroupAnnotationSettings (applyGlobalSettings, preserveNewGroupSettings);
+this.adjustAnnotationHeight ();
+}, "~B,~B");
+Clazz.overrideMethod (c$, "getAlignment", 
+function () {
+return this.av.getAlignment ();
+});
+Clazz.overrideMethod (c$, "getViewName", 
+function () {
+return this.getName ();
+});
+Clazz.overrideMethod (c$, "getStructureSelectionManager", 
+function () {
+return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet);
+});
+Clazz.overrideMethod (c$, "raiseOOMWarning", 
+function (string, error) {
+System.err.println ("Out of memory whilst '" + string + "'");
+error.printStackTrace ();
+}, "~S,OutOfMemoryError");
+Clazz.defineMethod (c$, "setFollowingComplementScroll", 
+function (b) {
+this.followingComplementScroll = b;
+}, "~B");
+Clazz.defineMethod (c$, "isFollowingComplementScroll", 
+function () {
+return this.followingComplementScroll;
+});
+c$.$AlignmentPanel$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignmentPanel$1", java.awt.event.ComponentAdapter);
+Clazz.overrideMethod (c$, "componentResized", 
+function (evt) {
+this.b$["jalview.appletgui.AlignmentPanel"].setScrollValues (this.f$.av.getStartRes (), this.f$.av.getStartSeq ());
+if (this.b$["jalview.appletgui.AlignmentPanel"].getSize ().height > 0 && this.b$["jalview.appletgui.AlignmentPanel"].annotationPanelHolder.getSize ().height > 0) {
+this.b$["jalview.appletgui.AlignmentPanel"].validateAnnotationDimensions (false);
+}this.b$["jalview.appletgui.AlignmentPanel"].repaint ();
+}, "java.awt.event.ComponentEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AlignmentPanel$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AlignmentPanel$2", null, java.beans.PropertyChangeListener);
+Clazz.overrideMethod (c$, "propertyChange", 
+function (evt) {
+if (evt.getPropertyName ().equals ("alignment")) {
+jalview.appletgui.PaintRefresher.Refresh (this.f$.ap, this.f$.av.getSequenceSetId (), true, true);
+this.b$["jalview.appletgui.AlignmentPanel"].alignmentChanged ();
+}}, "java.beans.PropertyChangeEvent");
+c$ = Clazz.p0p ();
+};
+});
index 15ef662..e2ee296 100644 (file)
Binary files a/bin/jalview/appletgui/AnnotationColourChooser.class and b/bin/jalview/appletgui/AnnotationColourChooser.class differ
index fce2267..668d9cd 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "awt2swing.Button", "$.Checkbox", "$.Choice", "$.Scrollbar", "$.TextField", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.AnnotationColourChooser", ["awt2swing.Frame", "jalview.appletgui.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.datamodel.GraphLine", "jalview.schemes.AnnotationColourGradient", "$.ColourSchemeI", "jalview.util.MessageManager", "java.awt.Color", "$.Dimension", "$.Font", "java.lang.Error", "$.Float", "java.util.Hashtable", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.frame = null;\r
-this.av = null;\r
-this.ap = null;\r
-this.oldcs = null;\r
-this.oldgroupColours = null;\r
-this.currentAnnotation = null;\r
-this.adjusting = false;\r
-this.annotations = null;\r
-this.minColour = null;\r
-this.maxColour = null;\r
-this.ok = null;\r
-this.cancel = null;\r
-this.defColours = null;\r
-this.jPanel1 = null;\r
-this.jPanel2 = null;\r
-this.threshold = null;\r
-this.flowLayout1 = null;\r
-this.jPanel3 = null;\r
-this.slider = null;\r
-this.thresholdValue = null;\r
-this.currentColours = null;\r
-this.borderLayout1 = null;\r
-this.thresholdIsMin = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "AnnotationColourChooser", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.ItemListener, java.awt.event.MouseListener]);\r
-Clazz.prepareFields (c$, function () {\r
-this.annotations =  new awt2swing.Choice ();\r
-this.minColour =  new awt2swing.Button ();\r
-this.maxColour =  new awt2swing.Button ();\r
-this.ok =  new awt2swing.Button ();\r
-this.cancel =  new awt2swing.Button ();\r
-this.defColours =  new awt2swing.Button ();\r
-this.jPanel1 =  new awt2swing.Panel ();\r
-this.jPanel2 =  new awt2swing.Panel ();\r
-this.threshold =  new awt2swing.Choice ();\r
-this.flowLayout1 =  new java.awt.FlowLayout ();\r
-this.jPanel3 =  new awt2swing.Panel ();\r
-this.slider =  new awt2swing.Scrollbar (0);\r
-this.thresholdValue =  new awt2swing.TextField (20);\r
-this.currentColours =  new awt2swing.Checkbox ();\r
-this.borderLayout1 =  new java.awt.BorderLayout ();\r
-this.thresholdIsMin =  new awt2swing.Checkbox ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (av, ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationColourChooser, []);\r
-try {\r
-this.jbInit ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-this.oldcs = av.getGlobalColourScheme ();\r
-if (av.getAlignment ().getGroups () != null) {\r
-this.oldgroupColours =  new java.util.Hashtable ();\r
-for (var sg, $sg = ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-if (sg.cs != null) {\r
-this.oldgroupColours.put (sg, sg.cs);\r
-} else {\r
-this.oldgroupColours.put (sg, "null");\r
-}}\r
-}this.av = av;\r
-this.ap = ap;\r
-this.slider.addAdjustmentListener (this);\r
-this.slider.addMouseListener (this);\r
-if (av.getAlignment ().getAlignmentAnnotation () == null) {\r
-return;\r
-}this.setDefaultMinMax ();\r
-this.adjusting = true;\r
-if (Clazz.instanceOf (this.oldcs, jalview.schemes.AnnotationColourGradient)) {\r
-var acg = this.oldcs;\r
-this.currentColours.setState (acg.isPredefinedColours () || acg.getBaseColour () != null);\r
-if (!acg.isPredefinedColours () && acg.getBaseColour () == null) {\r
-this.minColour.setBackground (acg.getMinColour ());\r
-this.maxColour.setBackground (acg.getMaxColour ());\r
-}}var list =  new java.util.Vector ();\r
-var index = 1;\r
-for (var i = 0; i < av.getAlignment ().getAlignmentAnnotation ().length; i++) {\r
-var label = av.getAlignment ().getAlignmentAnnotation ()[i].label;\r
-if (!list.contains (label)) {\r
-list.addElement (label);\r
-} else {\r
-list.addElement (label + "_" + (index++));\r
-}}\r
-for (var i = 0; i < list.size (); i++) {\r
-this.annotations.addItem (list.elementAt (i).toString ());\r
-}\r
-this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));\r
-this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));\r
-this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));\r
-if (Clazz.instanceOf (this.oldcs, jalview.schemes.AnnotationColourGradient)) {\r
-var acg = this.oldcs;\r
-this.annotations.select (acg.getAnnotation ());\r
-switch (acg.getAboveThreshold ()) {\r
-case -1:\r
-this.threshold.select (new Integer (0));\r
-break;\r
-case 1:\r
-this.threshold.select (new Integer (1));\r
-break;\r
-case 0:\r
-this.threshold.select (new Integer (1));\r
-break;\r
-default:\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_dont_know_thereshold_annotationcolourgradient"));\r
-}\r
-this.thresholdIsMin.setState (acg.thresholdIsMinMax);\r
-this.thresholdValue.setText ("" + acg.getAnnotationThreshold ());\r
-}this.adjusting = false;\r
-this.changeColour ();\r
-this.frame =  new awt2swing.Frame ();\r
-this.frame.add (this);\r
-jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.colour_by_annotation"), 560, 175);\r
-this.validate ();\r
-}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");\r
-Clazz.defineMethod (c$, "setDefaultMinMax", \r
-($fz = function () {\r
-this.minColour.setBackground (this.av.applet.getDefaultColourParameter ("ANNOTATIONCOLOUR_MIN", java.awt.Color.orange));\r
-this.maxColour.setBackground (this.av.applet.getDefaultColourParameter ("ANNOTATIONCOLOUR_MAX", java.awt.Color.red));\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationColourChooser, []);\r
-try {\r
-this.jbInit ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-});\r
-Clazz.defineMethod (c$, "jbInit", \r
-($fz = function () {\r
-this.minColour.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.minColour.setLabel (jalview.util.MessageManager.getString ("label.min_colour"));\r
-this.minColour.addActionListener (this);\r
-this.maxColour.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.maxColour.setLabel (jalview.util.MessageManager.getString ("label.max_colour"));\r
-this.maxColour.addActionListener (this);\r
-this.thresholdIsMin.addItemListener (this);\r
-this.ok.setLabel (jalview.util.MessageManager.getString ("action.ok"));\r
-this.ok.addActionListener (this);\r
-this.cancel.setLabel (jalview.util.MessageManager.getString ("action.cancel"));\r
-this.cancel.addActionListener (this);\r
-this.defColours.setLabel (jalview.util.MessageManager.getString ("action.set_defaults"));\r
-this.defColours.addActionListener (this);\r
-this.annotations.addItemListener (this);\r
-this.thresholdValue.addActionListener (this);\r
-this.slider.setBackground (java.awt.Color.white);\r
-this.slider.setPreferredSize ( new java.awt.Dimension (193, 21));\r
-this.slider.setEnabled (false);\r
-this.thresholdValue.setPreferredSize ( new java.awt.Dimension (79, 22));\r
-this.thresholdValue.setEnabled (false);\r
-this.thresholdValue.setColumns (5);\r
-this.currentColours.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.currentColours.setLabel (jalview.util.MessageManager.getString ("label.use_original_colours"));\r
-this.currentColours.addItemListener (this);\r
-this.thresholdIsMin.setBackground (java.awt.Color.white);\r
-this.thresholdIsMin.setLabel (jalview.util.MessageManager.getString ("label.threshold_minmax"));\r
-this.setLayout (this.borderLayout1);\r
-this.jPanel1.setBackground (java.awt.Color.white);\r
-this.jPanel2.setLayout ( new java.awt.FlowLayout ());\r
-this.jPanel2.setBackground (java.awt.Color.white);\r
-this.threshold.addItemListener (this);\r
-this.jPanel3.setLayout ( new java.awt.FlowLayout ());\r
-this.jPanel3.setBackground (java.awt.Color.white);\r
-var jPanel4 =  new awt2swing.Panel ();\r
-jPanel4.setLayout ( new java.awt.BorderLayout ());\r
-jPanel4.setBackground (java.awt.Color.white);\r
-this.jPanel1.add (this.ok);\r
-this.jPanel1.add (this.cancel);\r
-this.jPanel2.add (this.annotations);\r
-this.jPanel2.add (this.currentColours);\r
-this.jPanel2.add (this.minColour);\r
-this.jPanel2.add (this.maxColour);\r
-jPanel4.add (this.thresholdIsMin, "West");\r
-jPanel4.add (this.slider, "Center");\r
-jPanel4.add (this.thresholdValue, "East");\r
-var jPanel34 =  new awt2swing.Panel ();\r
-jPanel34.setLayout ( new java.awt.BorderLayout ());\r
-jPanel34.setBackground (java.awt.Color.white);\r
-jPanel34.add (this.jPanel2, "North");\r
-jPanel34.add (this.threshold, "West");\r
-this.jPanel3.add (this.defColours);\r
-jPanel34.add (this.jPanel3, "East");\r
-jPanel34.add (jPanel4, "South");\r
-this.add (jPanel34, "Center");\r
-this.add (this.jPanel1, "South");\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-if (evt.getSource () === this.thresholdValue) {\r
-try {\r
-var f =  new Float (this.thresholdValue.getText ()).floatValue ();\r
-this.slider.setValue (Clazz.floatToInt (f * 1000));\r
-this.adjustmentValueChanged (null);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-} else if (evt.getSource () === this.minColour) {\r
-this.minColour_actionPerformed (null);\r
-} else if (evt.getSource () === this.maxColour) {\r
-this.maxColour_actionPerformed (null);\r
-} else if (evt.getSource () === this.defColours) {\r
-this.defColour_actionPerformed ();\r
-} else if (evt.getSource () === this.ok) {\r
-this.changeColour ();\r
-this.frame.setVisible (false);\r
-} else if (evt.getSource () === this.cancel) {\r
-this.reset ();\r
-this.ap.paintAlignment (true);\r
-this.frame.setVisible (false);\r
-} else {\r
-this.changeColour ();\r
-}}, "java.awt.event.ActionEvent");\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (evt) {\r
-if (evt.getSource () === this.currentColours) {\r
-if (this.currentColours.getState ()) {\r
-this.reset ();\r
-}this.maxColour.setEnabled (!this.currentColours.getState ());\r
-this.minColour.setEnabled (!this.currentColours.getState ());\r
-}this.changeColour ();\r
-}, "java.awt.event.ItemEvent");\r
-Clazz.overrideMethod (c$, "adjustmentValueChanged", \r
-function (evt) {\r
-if (!this.adjusting) {\r
-this.thresholdValue.setText ((this.slider.getValue () / 1000) + "");\r
-if (this.currentColours.getState () && !(Clazz.instanceOf (this.av.getGlobalColourScheme (), jalview.schemes.AnnotationColourGradient))) {\r
-this.changeColour ();\r
-}this.currentAnnotation.threshold.value = this.slider.getValue () / 1000;\r
-this.ap.paintAlignment (false);\r
-}}, "java.awt.event.AdjustmentEvent");\r
-Clazz.defineMethod (c$, "minColour_actionPerformed", \r
-function (newCol) {\r
-if (newCol != null) {\r
-this.minColour.setBackground (newCol);\r
-this.minColour.repaint ();\r
-this.changeColour ();\r
-} else {\r
- new jalview.appletgui.UserDefinedColours (this, "Min Colour", this.minColour.getBackground ());\r
-}}, "java.awt.Color");\r
-Clazz.defineMethod (c$, "maxColour_actionPerformed", \r
-function (newCol) {\r
-if (newCol != null) {\r
-this.maxColour.setBackground (newCol);\r
-this.maxColour.repaint ();\r
-this.changeColour ();\r
-} else {\r
- new jalview.appletgui.UserDefinedColours (this, "Max Colour", this.maxColour.getBackground ());\r
-}}, "java.awt.Color");\r
-Clazz.defineMethod (c$, "defColour_actionPerformed", \r
-function () {\r
-this.setDefaultMinMax ();\r
-this.minColour.repaint ();\r
-this.maxColour.repaint ();\r
-this.changeColour ();\r
-});\r
-Clazz.defineMethod (c$, "changeColour", \r
-function () {\r
-if (this.adjusting) {\r
-return;\r
-}this.currentAnnotation = this.av.getAlignment ().getAlignmentAnnotation ()[this.annotations.getSelectedIndex ()];\r
-var aboveThreshold = -1;\r
-if (this.threshold.getSelectedIndex () == 1) {\r
-aboveThreshold = 1;\r
-} else if (this.threshold.getSelectedIndex () == 2) {\r
-aboveThreshold = 0;\r
-}this.slider.setEnabled (true);\r
-this.thresholdValue.setEnabled (true);\r
-this.thresholdIsMin.setEnabled (true);\r
-if (aboveThreshold == -1) {\r
-this.slider.setEnabled (false);\r
-this.thresholdValue.setEnabled (false);\r
-this.thresholdIsMin.setEnabled (false);\r
-this.thresholdValue.setText ("");\r
-} else if (aboveThreshold != -1 && this.currentAnnotation.threshold == null) {\r
-this.currentAnnotation.setThreshold ( new jalview.datamodel.GraphLine ((this.currentAnnotation.graphMax - this.currentAnnotation.graphMin) / 2, "Threshold", java.awt.Color.black));\r
-}if (aboveThreshold != -1) {\r
-this.adjusting = true;\r
-this.slider.setMinimum (Clazz.floatToInt (this.currentAnnotation.graphMin * 1000));\r
-this.slider.setMaximum (Clazz.floatToInt (this.currentAnnotation.graphMax * 1000));\r
-this.slider.setValue (Clazz.floatToInt (this.currentAnnotation.threshold.value * 1000));\r
-this.thresholdValue.setText (this.currentAnnotation.threshold.value + "");\r
-this.slider.setEnabled (true);\r
-this.thresholdValue.setEnabled (true);\r
-this.adjusting = false;\r
-}var acg = null;\r
-if (this.currentColours.getState ()) {\r
-acg =  new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.av.getGlobalColourScheme (), aboveThreshold);\r
-} else {\r
-acg =  new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.minColour.getBackground (), this.maxColour.getBackground (), aboveThreshold);\r
-}if (this.currentAnnotation.graphMin == 0 && this.currentAnnotation.graphMax == 0) {\r
-acg.setPredefinedColours (true);\r
-}acg.thresholdIsMinMax = this.thresholdIsMin.getState ();\r
-this.av.setGlobalColourScheme (acg);\r
-if (this.av.getAlignment ().getGroups () != null) {\r
-for (var sg, $sg = this.ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-if (sg.cs == null) {\r
-continue;\r
-}if (this.currentColours.getState ()) {\r
-sg.cs =  new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, sg.cs, aboveThreshold);\r
-} else {\r
-sg.cs =  new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.minColour.getBackground (), this.maxColour.getBackground (), aboveThreshold);\r
-}}\r
-}this.ap.alignmentChanged ();\r
-this.ap.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "reset", \r
-function () {\r
-this.av.setGlobalColourScheme (this.oldcs);\r
-if (this.av.getAlignment ().getGroups () != null) {\r
-for (var sg, $sg = this.ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-var cs = this.oldgroupColours.get (sg);\r
-if (Clazz.instanceOf (cs, jalview.schemes.ColourSchemeI)) {\r
-sg.cs = cs;\r
-} else {\r
-sg.cs = null;\r
-}}\r
-}this.ap.paintAlignment (true);\r
-});\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-this.ap.paintAlignment (true);\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "awt2swing.Button", "$.Checkbox", "$.Choice", "$.Scrollbar", "$.TextField", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.AnnotationColourChooser", ["awt2swing.Frame", "jalview.appletgui.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.datamodel.GraphLine", "jalview.schemes.AnnotationColourGradient", "$.ColourSchemeI", "jalview.util.MessageManager", "java.awt.Color", "$.Dimension", "$.Font", "java.lang.Error", "$.Float", "java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.frame = null;
+this.av = null;
+this.ap = null;
+this.oldcs = null;
+this.oldgroupColours = null;
+this.currentAnnotation = null;
+this.adjusting = false;
+this.annotations = null;
+this.minColour = null;
+this.maxColour = null;
+this.ok = null;
+this.cancel = null;
+this.defColours = null;
+this.jPanel1 = null;
+this.jPanel2 = null;
+this.threshold = null;
+this.flowLayout1 = null;
+this.jPanel3 = null;
+this.slider = null;
+this.thresholdValue = null;
+this.currentColours = null;
+this.borderLayout1 = null;
+this.thresholdIsMin = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationColourChooser", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.ItemListener, java.awt.event.MouseListener]);
+Clazz.prepareFields (c$, function () {
+this.annotations =  new awt2swing.Choice ();
+this.minColour =  new awt2swing.Button ();
+this.maxColour =  new awt2swing.Button ();
+this.ok =  new awt2swing.Button ();
+this.cancel =  new awt2swing.Button ();
+this.defColours =  new awt2swing.Button ();
+this.jPanel1 =  new awt2swing.Panel ();
+this.jPanel2 =  new awt2swing.Panel ();
+this.threshold =  new awt2swing.Choice ();
+this.flowLayout1 =  new java.awt.FlowLayout ();
+this.jPanel3 =  new awt2swing.Panel ();
+this.slider =  new awt2swing.Scrollbar (0);
+this.thresholdValue =  new awt2swing.TextField (20);
+this.currentColours =  new awt2swing.Checkbox ();
+this.borderLayout1 =  new java.awt.BorderLayout ();
+this.thresholdIsMin =  new awt2swing.Checkbox ();
+});
+Clazz.makeConstructor (c$, 
+function (av, ap) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationColourChooser, []);
+try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+this.oldcs = av.getGlobalColourScheme ();
+if (av.getAlignment ().getGroups () != null) {
+this.oldgroupColours =  new java.util.Hashtable ();
+for (var sg, $sg = ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.cs != null) {
+this.oldgroupColours.put (sg, sg.cs);
+} else {
+this.oldgroupColours.put (sg, "null");
+}}
+}this.av = av;
+this.ap = ap;
+this.slider.addAdjustmentListener (this);
+this.slider.addMouseListener (this);
+if (av.getAlignment ().getAlignmentAnnotation () == null) {
+return;
+}this.setDefaultMinMax ();
+this.adjusting = true;
+if (Clazz.instanceOf (this.oldcs, jalview.schemes.AnnotationColourGradient)) {
+var acg = this.oldcs;
+this.currentColours.setState (acg.isPredefinedColours () || acg.getBaseColour () != null);
+if (!acg.isPredefinedColours () && acg.getBaseColour () == null) {
+this.minColour.setBackground (acg.getMinColour ());
+this.maxColour.setBackground (acg.getMaxColour ());
+}}var list =  new java.util.Vector ();
+var index = 1;
+for (var i = 0; i < av.getAlignment ().getAlignmentAnnotation ().length; i++) {
+var label = av.getAlignment ().getAlignmentAnnotation ()[i].label;
+if (!list.contains (label)) {
+list.addElement (label);
+} else {
+list.addElement (label + "_" + (index++));
+}}
+for (var i = 0; i < list.size (); i++) {
+this.annotations.addItem (list.elementAt (i).toString ());
+}
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));
+if (Clazz.instanceOf (this.oldcs, jalview.schemes.AnnotationColourGradient)) {
+var acg = this.oldcs;
+this.annotations.select (acg.getAnnotation ());
+switch (acg.getAboveThreshold ()) {
+case -1:
+this.threshold.select (new Integer (0));
+break;
+case 1:
+this.threshold.select (new Integer (1));
+break;
+case 0:
+this.threshold.select (new Integer (1));
+break;
+default:
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_dont_know_thereshold_annotationcolourgradient"));
+}
+this.thresholdIsMin.setState (acg.thresholdIsMinMax);
+this.thresholdValue.setText ("" + acg.getAnnotationThreshold ());
+}this.adjusting = false;
+this.changeColour ();
+this.frame =  new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.colour_by_annotation"), 560, 175);
+this.validate ();
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz.defineMethod (c$, "setDefaultMinMax", 
+($fz = function () {
+this.minColour.setBackground (this.av.applet.getDefaultColourParameter ("ANNOTATIONCOLOUR_MIN", java.awt.Color.orange));
+this.maxColour.setBackground (this.av.applet.getDefaultColourParameter ("ANNOTATIONCOLOUR_MAX", java.awt.Color.red));
+}, $fz.isPrivate = true, $fz));
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationColourChooser, []);
+try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+Clazz.defineMethod (c$, "jbInit", 
+($fz = function () {
+this.minColour.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.minColour.setLabel (jalview.util.MessageManager.getString ("label.min_colour"));
+this.minColour.addActionListener (this);
+this.maxColour.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.maxColour.setLabel (jalview.util.MessageManager.getString ("label.max_colour"));
+this.maxColour.addActionListener (this);
+this.thresholdIsMin.addItemListener (this);
+this.ok.setLabel (jalview.util.MessageManager.getString ("action.ok"));
+this.ok.addActionListener (this);
+this.cancel.setLabel (jalview.util.MessageManager.getString ("action.cancel"));
+this.cancel.addActionListener (this);
+this.defColours.setLabel (jalview.util.MessageManager.getString ("action.set_defaults"));
+this.defColours.addActionListener (this);
+this.annotations.addItemListener (this);
+this.thresholdValue.addActionListener (this);
+this.slider.setBackground (java.awt.Color.white);
+this.slider.setPreferredSize ( new java.awt.Dimension (193, 21));
+this.slider.setEnabled (false);
+this.thresholdValue.setPreferredSize ( new java.awt.Dimension (79, 22));
+this.thresholdValue.setEnabled (false);
+this.thresholdValue.setColumns (5);
+this.currentColours.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.currentColours.setLabel (jalview.util.MessageManager.getString ("label.use_original_colours"));
+this.currentColours.addItemListener (this);
+this.thresholdIsMin.setBackground (java.awt.Color.white);
+this.thresholdIsMin.setLabel (jalview.util.MessageManager.getString ("label.threshold_minmax"));
+this.setLayout (this.borderLayout1);
+this.jPanel1.setBackground (java.awt.Color.white);
+this.jPanel2.setLayout ( new java.awt.FlowLayout ());
+this.jPanel2.setBackground (java.awt.Color.white);
+this.threshold.addItemListener (this);
+this.jPanel3.setLayout ( new java.awt.FlowLayout ());
+this.jPanel3.setBackground (java.awt.Color.white);
+var jPanel4 =  new awt2swing.Panel ();
+jPanel4.setLayout ( new java.awt.BorderLayout ());
+jPanel4.setBackground (java.awt.Color.white);
+this.jPanel1.add (this.ok);
+this.jPanel1.add (this.cancel);
+this.jPanel2.add (this.annotations);
+this.jPanel2.add (this.currentColours);
+this.jPanel2.add (this.minColour);
+this.jPanel2.add (this.maxColour);
+jPanel4.add (this.thresholdIsMin, "West");
+jPanel4.add (this.slider, "Center");
+jPanel4.add (this.thresholdValue, "East");
+var jPanel34 =  new awt2swing.Panel ();
+jPanel34.setLayout ( new java.awt.BorderLayout ());
+jPanel34.setBackground (java.awt.Color.white);
+jPanel34.add (this.jPanel2, "North");
+jPanel34.add (this.threshold, "West");
+this.jPanel3.add (this.defColours);
+jPanel34.add (this.jPanel3, "East");
+jPanel34.add (jPanel4, "South");
+this.add (jPanel34, "Center");
+this.add (this.jPanel1, "South");
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.thresholdValue) {
+try {
+var f =  new Float (this.thresholdValue.getText ()).floatValue ();
+this.slider.setValue (Clazz.floatToInt (f * 1000));
+this.adjustmentValueChanged (null);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+} else if (evt.getSource () === this.minColour) {
+this.minColour_actionPerformed (null);
+} else if (evt.getSource () === this.maxColour) {
+this.maxColour_actionPerformed (null);
+} else if (evt.getSource () === this.defColours) {
+this.defColour_actionPerformed ();
+} else if (evt.getSource () === this.ok) {
+this.changeColour ();
+this.frame.setVisible (false);
+} else if (evt.getSource () === this.cancel) {
+this.reset ();
+this.ap.paintAlignment (true);
+this.frame.setVisible (false);
+} else {
+this.changeColour ();
+}}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+if (evt.getSource () === this.currentColours) {
+if (this.currentColours.getState ()) {
+this.reset ();
+}this.maxColour.setEnabled (!this.currentColours.getState ());
+this.minColour.setEnabled (!this.currentColours.getState ());
+}this.changeColour ();
+}, "java.awt.event.ItemEvent");
+Clazz.overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+if (!this.adjusting) {
+this.thresholdValue.setText ((this.slider.getValue () / 1000) + "");
+if (this.currentColours.getState () && !(Clazz.instanceOf (this.av.getGlobalColourScheme (), jalview.schemes.AnnotationColourGradient))) {
+this.changeColour ();
+}this.currentAnnotation.threshold.value = this.slider.getValue () / 1000;
+this.ap.paintAlignment (false);
+}}, "java.awt.event.AdjustmentEvent");
+Clazz.defineMethod (c$, "minColour_actionPerformed", 
+function (newCol) {
+if (newCol != null) {
+this.minColour.setBackground (newCol);
+this.minColour.repaint ();
+this.changeColour ();
+} else {
+ new jalview.appletgui.UserDefinedColours (this, "Min Colour", this.minColour.getBackground ());
+}}, "java.awt.Color");
+Clazz.defineMethod (c$, "maxColour_actionPerformed", 
+function (newCol) {
+if (newCol != null) {
+this.maxColour.setBackground (newCol);
+this.maxColour.repaint ();
+this.changeColour ();
+} else {
+ new jalview.appletgui.UserDefinedColours (this, "Max Colour", this.maxColour.getBackground ());
+}}, "java.awt.Color");
+Clazz.defineMethod (c$, "defColour_actionPerformed", 
+function () {
+this.setDefaultMinMax ();
+this.minColour.repaint ();
+this.maxColour.repaint ();
+this.changeColour ();
+});
+Clazz.defineMethod (c$, "changeColour", 
+function () {
+if (this.adjusting) {
+return;
+}this.currentAnnotation = this.av.getAlignment ().getAlignmentAnnotation ()[this.annotations.getSelectedIndex ()];
+var aboveThreshold = -1;
+if (this.threshold.getSelectedIndex () == 1) {
+aboveThreshold = 1;
+} else if (this.threshold.getSelectedIndex () == 2) {
+aboveThreshold = 0;
+}this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+this.thresholdIsMin.setEnabled (true);
+if (aboveThreshold == -1) {
+this.slider.setEnabled (false);
+this.thresholdValue.setEnabled (false);
+this.thresholdIsMin.setEnabled (false);
+this.thresholdValue.setText ("");
+} else if (aboveThreshold != -1 && this.currentAnnotation.threshold == null) {
+this.currentAnnotation.setThreshold ( new jalview.datamodel.GraphLine ((this.currentAnnotation.graphMax - this.currentAnnotation.graphMin) / 2, "Threshold", java.awt.Color.black));
+}if (aboveThreshold != -1) {
+this.adjusting = true;
+this.slider.setMinimum (Clazz.floatToInt (this.currentAnnotation.graphMin * 1000));
+this.slider.setMaximum (Clazz.floatToInt (this.currentAnnotation.graphMax * 1000));
+this.slider.setValue (Clazz.floatToInt (this.currentAnnotation.threshold.value * 1000));
+this.thresholdValue.setText (this.currentAnnotation.threshold.value + "");
+this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+this.adjusting = false;
+}var acg = null;
+if (this.currentColours.getState ()) {
+acg =  new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.av.getGlobalColourScheme (), aboveThreshold);
+} else {
+acg =  new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.minColour.getBackground (), this.maxColour.getBackground (), aboveThreshold);
+}if (this.currentAnnotation.graphMin == 0 && this.currentAnnotation.graphMax == 0) {
+acg.setPredefinedColours (true);
+}acg.thresholdIsMinMax = this.thresholdIsMin.getState ();
+this.av.setGlobalColourScheme (acg);
+if (this.av.getAlignment ().getGroups () != null) {
+for (var sg, $sg = this.ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.cs == null) {
+continue;
+}if (this.currentColours.getState ()) {
+sg.cs =  new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, sg.cs, aboveThreshold);
+} else {
+sg.cs =  new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.minColour.getBackground (), this.maxColour.getBackground (), aboveThreshold);
+}}
+}this.ap.alignmentChanged ();
+this.ap.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "reset", 
+function () {
+this.av.setGlobalColourScheme (this.oldcs);
+if (this.av.getAlignment ().getGroups () != null) {
+for (var sg, $sg = this.ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+var cs = this.oldgroupColours.get (sg);
+if (Clazz.instanceOf (cs, jalview.schemes.ColourSchemeI)) {
+sg.cs = cs;
+} else {
+sg.cs = null;
+}}
+}this.ap.paintAlignment (true);
+});
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.ap.paintAlignment (true);
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+});
index 4cce256..27e6c60 100644 (file)
Binary files a/bin/jalview/appletgui/AnnotationColumnChooser.class and b/bin/jalview/appletgui/AnnotationColumnChooser.class differ
index f50bb0c..340a161 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "jalview.appletgui.AnnotationRowFilter", "$.TitledPanel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "awt2swing.Checkbox", "$.Choice", "$.TextField", "java.awt.BorderLayout", "$.CardLayout"], "jalview.appletgui.AnnotationColumnChooser", ["awt2swing.Frame", "jalview.bin.JalviewLite", "jalview.datamodel.ColumnSelection", "$.GraphLine", "jalview.util.MessageManager", "jalview.viewmodel.annotationfilter.AnnotationFilterParameter", "java.awt.Color", "$.Dimension", "java.awt.event.MouseAdapter", "$.TextListener", "java.lang.Float", "java.util.Vector", "javax.swing.JPanel"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.annotations = null;\r
-this.actionPanel = null;\r
-this.thresholdPanel = null;\r
-this.switchableViewsPanel = null;\r
-this.switchableViewsLayout = null;\r
-this.noGraphFilterView = null;\r
-this.graphFilterView = null;\r
-this.annotationComboBoxPanel = null;\r
-this.borderLayout1 = null;\r
-this.gBorderLayout = null;\r
-this.ngBorderLayout = null;\r
-this.threshold = null;\r
-this.gStructureFilterPanel = null;\r
-this.ngStructureFilterPanel = null;\r
-this.currentStructureFilterPanel = null;\r
-this.currentSearchPanel = null;\r
-this.gSearchPanel = null;\r
-this.ngSearchPanel = null;\r
-this.currentFurtherActionPanel = null;\r
-this.gFurtherActionPanel = null;\r
-this.ngFurtherActionPanel = null;\r
-this.actionOption = 1;\r
-this.oldColumnSelection = null;\r
-if (!Clazz.isClassDefined ("jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel")) {\r
-jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$FurtherActionPanel$ ();\r
-}\r
-if (!Clazz.isClassDefined ("jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel")) {\r
-jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$StructureFilterPanel$ ();\r
-}\r
-if (!Clazz.isClassDefined ("jalview.appletgui.AnnotationColumnChooser.SearchPanel")) {\r
-jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$SearchPanel$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "AnnotationColumnChooser", jalview.appletgui.AnnotationRowFilter, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.ItemListener, java.awt.event.MouseListener]);\r
-Clazz.prepareFields (c$, function () {\r
-this.annotations =  new awt2swing.Choice ();\r
-this.actionPanel =  new awt2swing.Panel ();\r
-this.thresholdPanel =  new jalview.appletgui.TitledPanel ();\r
-this.switchableViewsPanel =  new awt2swing.Panel ( new java.awt.CardLayout ());\r
-this.switchableViewsLayout = (this.switchableViewsPanel.getLayout ());\r
-this.noGraphFilterView =  new awt2swing.Panel ();\r
-this.graphFilterView =  new awt2swing.Panel ();\r
-this.annotationComboBoxPanel =  new awt2swing.Panel ();\r
-this.borderLayout1 =  new java.awt.BorderLayout ();\r
-this.gBorderLayout =  new java.awt.BorderLayout ();\r
-this.ngBorderLayout =  new java.awt.BorderLayout ();\r
-this.threshold =  new awt2swing.Choice ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationColumnChooser, []);\r
-try {\r
-this.jbInit ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (av, ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationColumnChooser, [av, ap]);\r
-this.frame =  new awt2swing.Frame ();\r
-this.frame.add (this);\r
-jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.select_by_annotation"), 520, 215);\r
-this.slider.addAdjustmentListener (this);\r
-this.slider.addMouseListener (this);\r
-if (av.getAlignment ().getAlignmentAnnotation () == null) {\r
-return;\r
-}this.setOldColumnSelection (av.getColumnSelection ());\r
-this.adjusting = true;\r
-var list =  new java.util.Vector ();\r
-var index = 1;\r
-for (var i = 0; i < av.getAlignment ().getAlignmentAnnotation ().length; i++) {\r
-var label = av.getAlignment ().getAlignmentAnnotation ()[i].label;\r
-if (!list.contains (label)) {\r
-list.addElement (label);\r
-} else {\r
-list.addElement (label + "_" + (index++));\r
-}}\r
-for (var i = 0; i < list.size (); i++) {\r
-this.annotations.addItem (list.elementAt (i).toString ());\r
-}\r
-this.populateThresholdComboBox (this.threshold);\r
-if (av.getAnnotationColumnSelectionState () != null) {\r
-this.currentSearchPanel = av.getAnnotationColumnSelectionState ().getCurrentSearchPanel ();\r
-this.currentStructureFilterPanel = av.getAnnotationColumnSelectionState ().getCurrentStructureFilterPanel ();\r
-this.annotations.select (new Integer (av.getAnnotationColumnSelectionState ().getAnnotations ().getSelectedIndex ()));\r
-this.threshold.select (new Integer (av.getAnnotationColumnSelectionState ().getThreshold ().getSelectedIndex ()));\r
-this.actionOption = av.getAnnotationColumnSelectionState ().getActionOption ();\r
-}try {\r
-this.jbInit ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-this.adjusting = false;\r
-this.updateView ();\r
-this.frame.invalidate ();\r
-this.frame.pack ();\r
-}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");\r
-Clazz.defineMethod (c$, "jbInit", \r
-($fz = function () {\r
-this.ok.setLabel (jalview.util.MessageManager.getString ("action.ok"));\r
-this.cancel.setLabel (jalview.util.MessageManager.getString ("action.cancel"));\r
-this.thresholdValue.setEnabled (false);\r
-this.thresholdValue.setColumns (7);\r
-this.ok.addActionListener (this);\r
-this.cancel.addActionListener (this);\r
-this.annotations.addItemListener (this);\r
-this.thresholdValue.addActionListener (this);\r
-this.threshold.addItemListener (this);\r
-this.slider.setBackground (java.awt.Color.white);\r
-this.slider.setEnabled (false);\r
-this.slider.setPreferredSize ( new java.awt.Dimension (100, 32));\r
-this.thresholdPanel.setBackground (java.awt.Color.white);\r
-this.actionPanel.setBackground (java.awt.Color.white);\r
-this.graphFilterView.setLayout (this.gBorderLayout);\r
-this.graphFilterView.setBackground (java.awt.Color.white);\r
-this.noGraphFilterView.setLayout (this.ngBorderLayout);\r
-this.noGraphFilterView.setBackground (java.awt.Color.white);\r
-this.annotationComboBoxPanel.setBackground (java.awt.Color.white);\r
-this.gSearchPanel = Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.SearchPanel, this, null, this);\r
-this.ngSearchPanel = Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.SearchPanel, this, null, this);\r
-this.gFurtherActionPanel = Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel, this, null, this);\r
-this.ngFurtherActionPanel = Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel, this, null, this);\r
-this.gStructureFilterPanel = Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel, this, null, this);\r
-this.ngStructureFilterPanel = Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel, this, null, this);\r
-this.thresholdPanel.setTitle ("Threshold Filter");\r
-this.thresholdPanel.add (this.getThreshold ());\r
-this.thresholdPanel.add (this.slider);\r
-this.thresholdPanel.add (this.thresholdValue);\r
-this.actionPanel.add (this.ok);\r
-this.actionPanel.add (this.cancel);\r
-var staticPanel =  new javax.swing.JPanel ();\r
-staticPanel.setLayout ( new java.awt.BorderLayout ());\r
-staticPanel.setBackground (java.awt.Color.white);\r
-staticPanel.add (this.gSearchPanel, "North");\r
-staticPanel.add (this.gStructureFilterPanel, "South");\r
-this.graphFilterView.add (staticPanel, "North");\r
-this.graphFilterView.add (this.thresholdPanel, "Center");\r
-this.graphFilterView.add (this.gFurtherActionPanel, "South");\r
-this.noGraphFilterView.add (this.ngSearchPanel, "First");\r
-this.noGraphFilterView.add (this.ngStructureFilterPanel, "Center");\r
-this.noGraphFilterView.add (this.ngFurtherActionPanel, "Center");\r
-this.annotationComboBoxPanel.add (this.getAnnotations ());\r
-this.switchableViewsPanel.add (this.noGraphFilterView, jalview.appletgui.AnnotationColumnChooser.NO_GRAPH_VIEW);\r
-this.switchableViewsPanel.add (this.graphFilterView, jalview.appletgui.AnnotationColumnChooser.GRAPH_VIEW);\r
-this.setLayout (this.borderLayout1);\r
-this.add (this.annotationComboBoxPanel, "First");\r
-this.add (this.switchableViewsPanel, "Center");\r
-this.add (this.actionPanel, "South");\r
-this.selectedAnnotationChanged ();\r
-this.validate ();\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "reset", \r
-function () {\r
-if (this.getOldColumnSelection () != null) {\r
-this.av.getColumnSelection ().clear ();\r
-if (this.av.getAnnotationColumnSelectionState () != null) {\r
-var oldSelection = this.av.getAnnotationColumnSelectionState ().getOldColumnSelection ();\r
-if (oldSelection != null && oldSelection.getHiddenColumns () != null && !oldSelection.getHiddenColumns ().isEmpty ()) {\r
-for (var itr = oldSelection.getHiddenColumns ().iterator (); itr.hasNext (); ) {\r
-var positions = itr.next ();\r
-this.av.hideColumns (positions[0], positions[1]);\r
-}\r
-}this.av.setColumnSelection (oldSelection);\r
-}this.ap.paintAlignment (true);\r
-}});\r
-Clazz.overrideMethod (c$, "adjustmentValueChanged", \r
-function (evt) {\r
-if (!this.adjusting) {\r
-this.thresholdValue.setText ((this.slider.getValue () / 1000) + "");\r
-this.valueChanged (!this.sliderDragging);\r
-}}, "java.awt.event.AdjustmentEvent");\r
-Clazz.defineMethod (c$, "addSliderMouseListeners", \r
-function () {\r
-this.slider.addMouseListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationColumnChooser$1") ? 0 : jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser$1, this, null)));\r
-});\r
-Clazz.overrideMethod (c$, "valueChanged", \r
-function (updateAllAnnotation) {\r
-if (this.slider.isEnabled ()) {\r
-this.getCurrentAnnotation ().threshold.value = this.slider.getValue () / 1000;\r
-this.updateView ();\r
-this.ap.paintAlignment (false);\r
-}}, "~B");\r
-Clazz.defineMethod (c$, "getThreshold", \r
-function () {\r
-return this.threshold;\r
-});\r
-Clazz.defineMethod (c$, "setThreshold", \r
-function (threshold) {\r
-this.threshold = threshold;\r
-}, "awt2swing.Choice");\r
-Clazz.defineMethod (c$, "getAnnotations", \r
-function () {\r
-return this.annotations;\r
-});\r
-Clazz.defineMethod (c$, "setAnnotations", \r
-function (annotations) {\r
-this.annotations = annotations;\r
-}, "awt2swing.Choice");\r
-Clazz.overrideMethod (c$, "updateView", \r
-function () {\r
-if (this.adjusting) {\r
-return;\r
-}var filterParams =  new jalview.viewmodel.annotationfilter.AnnotationFilterParameter ();\r
-this.setCurrentAnnotation (this.av.getAlignment ().getAlignmentAnnotation ()[this.getAnnotations ().getSelectedIndex ()]);\r
-var selectedThresholdItem = this.getSelectedThresholdItem (this.getThreshold ().getSelectedIndex ());\r
-this.slider.setEnabled (true);\r
-this.thresholdValue.setEnabled (true);\r
-if (selectedThresholdItem == -1) {\r
-this.slider.setEnabled (false);\r
-this.thresholdValue.setEnabled (false);\r
-this.thresholdValue.setText ("");\r
-} else if (selectedThresholdItem != -1) {\r
-if (this.getCurrentAnnotation ().threshold == null) {\r
-this.getCurrentAnnotation ().setThreshold ( new jalview.datamodel.GraphLine ((this.getCurrentAnnotation ().graphMax - this.getCurrentAnnotation ().graphMin) / 2, "Threshold", java.awt.Color.black));\r
-}this.adjusting = true;\r
-var range = this.getCurrentAnnotation ().graphMax * 1000 - this.getCurrentAnnotation ().graphMin * 1000;\r
-this.slider.setMinimum (Clazz.floatToInt (this.getCurrentAnnotation ().graphMin * 1000));\r
-this.slider.setMaximum (Clazz.floatToInt (this.getCurrentAnnotation ().graphMax * 1000));\r
-this.slider.setValue (Clazz.floatToInt (this.getCurrentAnnotation ().threshold.value * 1000));\r
-this.thresholdValue.setText (this.getCurrentAnnotation ().threshold.value + "");\r
-this.slider.setEnabled (true);\r
-this.thresholdValue.setEnabled (true);\r
-this.adjusting = false;\r
-filterParams.setThresholdType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.NO_THRESHOLD);\r
-if (this.getCurrentAnnotation ().graph != 0) {\r
-filterParams.setThresholdValue (this.getCurrentAnnotation ().threshold.value);\r
-if (selectedThresholdItem == 1) {\r
-filterParams.setThresholdType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.ABOVE_THRESHOLD);\r
-} else if (selectedThresholdItem == 0) {\r
-filterParams.setThresholdType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.BELOW_THRESHOLD);\r
-}}}if (this.currentStructureFilterPanel != null) {\r
-if (this.currentStructureFilterPanel.alphaHelix.getState ()) {\r
-filterParams.setFilterAlphaHelix (true);\r
-}if (this.currentStructureFilterPanel.betaStrand.getState ()) {\r
-filterParams.setFilterBetaSheet (true);\r
-}if (this.currentStructureFilterPanel.turn.getState ()) {\r
-filterParams.setFilterTurn (true);\r
-}}if (this.currentSearchPanel != null) {\r
-if (!this.currentSearchPanel.searchBox.getText ().isEmpty ()) {\r
-this.currentSearchPanel.description.setEnabled (true);\r
-this.currentSearchPanel.displayName.setEnabled (true);\r
-filterParams.setRegexString (this.currentSearchPanel.searchBox.getText ());\r
-if (this.currentSearchPanel.displayName.getState ()) {\r
-filterParams.addRegexSearchField (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DISPLAY_STRING);\r
-}if (this.currentSearchPanel.description.getState ()) {\r
-filterParams.addRegexSearchField (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DESCRIPTION);\r
-}} else {\r
-this.currentSearchPanel.description.setEnabled (false);\r
-this.currentSearchPanel.displayName.setEnabled (false);\r
-}}this.av.getColumnSelection ().filterAnnotations (this.getCurrentAnnotation ().annotations, filterParams);\r
-this.av.showAllHiddenColumns ();\r
-if (this.getActionOption () == jalview.appletgui.AnnotationColumnChooser.ACTION_OPTION_HIDE) {\r
-this.av.hideSelectedColumns ();\r
-}filterParams = null;\r
-this.av.setAnnotationColumnSelectionState (this);\r
-this.ap.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "getOldColumnSelection", \r
-function () {\r
-return this.oldColumnSelection;\r
-});\r
-Clazz.defineMethod (c$, "setOldColumnSelection", \r
-function (currentColumnSelection) {\r
-if (currentColumnSelection != null) {\r
-this.oldColumnSelection =  new jalview.datamodel.ColumnSelection (currentColumnSelection);\r
-}}, "jalview.datamodel.ColumnSelection");\r
-Clazz.defineMethod (c$, "getCurrentFutherActionPanel", \r
-function () {\r
-return this.currentFurtherActionPanel;\r
-});\r
-Clazz.defineMethod (c$, "setCurrentFutherActionPanel", \r
-function (currentFutherActionPanel) {\r
-this.currentFurtherActionPanel = currentFutherActionPanel;\r
-}, "jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel");\r
-Clazz.defineMethod (c$, "getCurrentSearchPanel", \r
-function () {\r
-return this.currentSearchPanel;\r
-});\r
-Clazz.defineMethod (c$, "setCurrentSearchPanel", \r
-function (currentSearchPanel) {\r
-this.currentSearchPanel = currentSearchPanel;\r
-}, "jalview.appletgui.AnnotationColumnChooser.SearchPanel");\r
-Clazz.defineMethod (c$, "getActionOption", \r
-function () {\r
-return this.actionOption;\r
-});\r
-Clazz.defineMethod (c$, "setActionOption", \r
-function (actionOption) {\r
-this.actionOption = actionOption;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getCurrentStructureFilterPanel", \r
-function () {\r
-return this.currentStructureFilterPanel;\r
-});\r
-Clazz.defineMethod (c$, "setCurrentStructureFilterPanel", \r
-function (currentStructureFilterPanel) {\r
-this.currentStructureFilterPanel = currentStructureFilterPanel;\r
-}, "jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel");\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-if (e.getSource () === this.annotations) {\r
-this.selectedAnnotationChanged ();\r
-} else if (e.getSource () === this.threshold) {\r
-this.threshold_actionPerformed (null);\r
-}}, "java.awt.event.ItemEvent");\r
-Clazz.defineMethod (c$, "selectedAnnotationChanged", \r
-function () {\r
-var currentView = jalview.appletgui.AnnotationColumnChooser.NO_GRAPH_VIEW;\r
-if (this.av.getAlignment ().getAlignmentAnnotation ()[this.getAnnotations ().getSelectedIndex ()].graph != 0) {\r
-currentView = jalview.appletgui.AnnotationColumnChooser.GRAPH_VIEW;\r
-}this.gSearchPanel.syncState ();\r
-this.gFurtherActionPanel.syncState ();\r
-this.gStructureFilterPanel.syncState ();\r
-this.ngSearchPanel.syncState ();\r
-this.ngFurtherActionPanel.syncState ();\r
-this.ngStructureFilterPanel.syncState ();\r
-this.switchableViewsLayout.show (this.switchableViewsPanel, currentView);\r
-this.updateView ();\r
-});\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-if (evt.getSource () === this.thresholdValue) {\r
-try {\r
-var f =  new Float (this.thresholdValue.getText ()).floatValue ();\r
-this.slider.setValue (Clazz.floatToInt (f * 1000));\r
-this.adjustmentValueChanged (null);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-} else if (evt.getSource () === this.ok) {\r
-this.ok_actionPerformed (null);\r
-} else if (evt.getSource () === this.cancel) {\r
-this.cancel_actionPerformed (null);\r
-} else if (evt.getSource () === this.thresholdValue) {\r
-this.thresholdValue_actionPerformed (null);\r
-} else {\r
-this.updateView ();\r
-}}, "java.awt.event.ActionEvent");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (e) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (e) {\r
-if (e.getSource () === this.slider) {\r
-this.updateView ();\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (e) {\r
-if (e.getSource () === this.slider) {\r
-this.updateView ();\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (e) {\r
-if (e.getSource () === this.slider) {\r
-this.updateView ();\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (e) {\r
-if (e.getSource () === this.slider) {\r
-this.updateView ();\r
-}}, "java.awt.event.MouseEvent");\r
-c$.$AnnotationColumnChooser$FurtherActionPanel$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.aColChooser = null;\r
-this.furtherAction = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui.AnnotationColumnChooser, "FurtherActionPanel", awt2swing.Panel, java.awt.event.ItemListener);\r
-Clazz.prepareFields (c$, function () {\r
-this.furtherAction =  new awt2swing.Choice ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel, []);\r
-this.aColChooser = a;\r
-this.furtherAction.addItem ("Select");\r
-this.furtherAction.addItem ("Hide");\r
-this.furtherAction.addItemListener (this);\r
-this.syncState ();\r
-this.add (this.furtherAction);\r
-}, "jalview.appletgui.AnnotationColumnChooser");\r
-Clazz.defineMethod (c$, "syncState", \r
-function () {\r
-if (this.aColChooser.getActionOption () == jalview.appletgui.AnnotationColumnChooser.ACTION_OPTION_HIDE) {\r
-this.furtherAction.select ("Hide");\r
-} else {\r
-this.furtherAction.select ("Select");\r
-}});\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (a) {\r
-this.aColChooser.setCurrentFutherActionPanel (this);\r
-if (this.furtherAction.getSelectedItem ().toString ().equalsIgnoreCase ("Select")) {\r
-this.b$["jalview.appletgui.AnnotationColumnChooser"].setActionOption (1);\r
-this.b$["jalview.appletgui.AnnotationColumnChooser"].updateView ();\r
-} else {\r
-this.b$["jalview.appletgui.AnnotationColumnChooser"].setActionOption (jalview.appletgui.AnnotationColumnChooser.ACTION_OPTION_HIDE);\r
-this.b$["jalview.appletgui.AnnotationColumnChooser"].updateView ();\r
-}}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationColumnChooser$StructureFilterPanel$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.aColChooser = null;\r
-this.alphaHelix = null;\r
-this.betaStrand = null;\r
-this.turn = null;\r
-this.all = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui.AnnotationColumnChooser, "StructureFilterPanel", jalview.appletgui.TitledPanel, java.awt.event.ItemListener);\r
-Clazz.prepareFields (c$, function () {\r
-this.alphaHelix =  new awt2swing.Checkbox ();\r
-this.betaStrand =  new awt2swing.Checkbox ();\r
-this.turn =  new awt2swing.Checkbox ();\r
-this.all =  new awt2swing.Checkbox ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel, []);\r
-this.aColChooser = a;\r
-this.alphaHelix.setLabel (jalview.util.MessageManager.getString ("label.alpha_helix"));\r
-this.alphaHelix.setBackground (java.awt.Color.white);\r
-this.alphaHelix.addItemListener (this);\r
-this.betaStrand.setLabel (jalview.util.MessageManager.getString ("label.beta_strand"));\r
-this.betaStrand.setBackground (java.awt.Color.white);\r
-this.betaStrand.addItemListener (this);\r
-this.turn.setLabel (jalview.util.MessageManager.getString ("label.turn"));\r
-this.turn.setBackground (java.awt.Color.white);\r
-this.turn.addItemListener (this);\r
-this.all.setLabel (jalview.util.MessageManager.getString ("label.select_all"));\r
-this.all.setBackground (java.awt.Color.white);\r
-this.all.addItemListener (this);\r
-this.setBackground (java.awt.Color.white);\r
-this.setTitle ("Structure Filter");\r
-this.add (this.all);\r
-this.add (this.alphaHelix);\r
-this.add (this.betaStrand);\r
-this.add (this.turn);\r
-}, "jalview.appletgui.AnnotationColumnChooser");\r
-Clazz.defineMethod (c$, "alphaHelix_actionPerformed", \r
-function () {\r
-this.updateSelectAllState ();\r
-this.aColChooser.setCurrentStructureFilterPanel (this);\r
-this.aColChooser.updateView ();\r
-});\r
-Clazz.defineMethod (c$, "betaStrand_actionPerformed", \r
-function () {\r
-this.updateSelectAllState ();\r
-this.aColChooser.setCurrentStructureFilterPanel (this);\r
-this.aColChooser.updateView ();\r
-});\r
-Clazz.defineMethod (c$, "turn_actionPerformed", \r
-function () {\r
-this.updateSelectAllState ();\r
-this.aColChooser.setCurrentStructureFilterPanel (this);\r
-this.aColChooser.updateView ();\r
-});\r
-Clazz.defineMethod (c$, "all_actionPerformed", \r
-function () {\r
-if (this.all.getState ()) {\r
-this.alphaHelix.setState (true);\r
-this.betaStrand.setState (true);\r
-this.turn.setState (true);\r
-} else {\r
-this.alphaHelix.setState (false);\r
-this.betaStrand.setState (false);\r
-this.turn.setState (false);\r
-}this.aColChooser.setCurrentStructureFilterPanel (this);\r
-this.aColChooser.updateView ();\r
-});\r
-Clazz.defineMethod (c$, "updateSelectAllState", \r
-function () {\r
-if (this.alphaHelix.getState () && this.betaStrand.getState () && this.turn.getState ()) {\r
-this.all.setState (true);\r
-} else {\r
-this.all.setState (false);\r
-}});\r
-Clazz.defineMethod (c$, "syncState", \r
-function () {\r
-var a = this.aColChooser.getCurrentStructureFilterPanel ();\r
-if (a != null) {\r
-this.alphaHelix.setState (a.alphaHelix.getState ());\r
-this.betaStrand.setState (a.betaStrand.getState ());\r
-this.turn.setState (a.turn.getState ());\r
-if (a.all.getState ()) {\r
-this.all.setState (true);\r
-this.alphaHelix.setState (true);\r
-this.betaStrand.setState (true);\r
-this.turn.setState (true);\r
-}}});\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (a) {\r
-if (a.getSource () === this.alphaHelix) {\r
-this.alphaHelix_actionPerformed ();\r
-} else if (a.getSource () === this.betaStrand) {\r
-this.betaStrand_actionPerformed ();\r
-} else if (a.getSource () === this.turn) {\r
-this.turn_actionPerformed ();\r
-} else if (a.getSource () === this.all) {\r
-this.all_actionPerformed ();\r
-}}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationColumnChooser$SearchPanel$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.aColChooser = null;\r
-this.displayName = null;\r
-this.description = null;\r
-this.searchBox = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui.AnnotationColumnChooser, "SearchPanel", jalview.appletgui.TitledPanel, java.awt.event.ItemListener);\r
-Clazz.prepareFields (c$, function () {\r
-this.displayName =  new awt2swing.Checkbox ();\r
-this.description =  new awt2swing.Checkbox ();\r
-this.searchBox =  new awt2swing.TextField (10);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationColumnChooser.SearchPanel, []);\r
-this.aColChooser = a;\r
-this.searchBox.addTextListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationColumnChooser$SearchPanel$1") ? 0 : jalview.appletgui.AnnotationColumnChooser.SearchPanel.$AnnotationColumnChooser$SearchPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser$SearchPanel$1, this, null)));\r
-this.displayName.setLabel (jalview.util.MessageManager.getString ("label.display_name"));\r
-this.displayName.setEnabled (false);\r
-this.displayName.addItemListener (this);\r
-this.description.setLabel (jalview.util.MessageManager.getString ("label.description"));\r
-this.description.setEnabled (false);\r
-this.description.addItemListener (this);\r
-this.setTitle ("Search Filter");\r
-this.syncState ();\r
-this.add (this.searchBox);\r
-this.add (this.displayName);\r
-this.add (this.description);\r
-}, "jalview.appletgui.AnnotationColumnChooser");\r
-Clazz.defineMethod (c$, "displayNameCheckboxAction", \r
-function () {\r
-this.aColChooser.setCurrentSearchPanel (this);\r
-this.aColChooser.updateView ();\r
-});\r
-Clazz.defineMethod (c$, "discriptionCheckboxAction", \r
-function () {\r
-this.aColChooser.setCurrentSearchPanel (this);\r
-this.aColChooser.updateView ();\r
-});\r
-Clazz.defineMethod (c$, "searchStringAction", \r
-function () {\r
-this.aColChooser.setCurrentSearchPanel (this);\r
-this.aColChooser.updateView ();\r
-});\r
-Clazz.defineMethod (c$, "syncState", \r
-function () {\r
-var a = this.aColChooser.getCurrentSearchPanel ();\r
-if (a != null) {\r
-this.description.setEnabled (a.description.isEnabled ());\r
-this.description.setState (a.description.getState ());\r
-this.displayName.setEnabled (a.displayName.isEnabled ());\r
-this.displayName.setState (a.displayName.getState ());\r
-this.searchBox.setText (a.searchBox.getText ());\r
-}});\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (a) {\r
-if (a.getSource () === this.displayName) {\r
-this.displayNameCheckboxAction ();\r
-} else if (a.getSource () === this.description) {\r
-this.discriptionCheckboxAction ();\r
-}}, "java.awt.event.ItemEvent");\r
-c$.$AnnotationColumnChooser$SearchPanel$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationColumnChooser$SearchPanel$1", null, java.awt.event.TextListener);\r
-Clazz.overrideMethod (c$, "textValueChanged", \r
-function (a) {\r
-this.b$["jalview.appletgui.AnnotationColumnChooser.SearchPanel"].searchStringAction ();\r
-}, "java.awt.event.TextEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationColumnChooser$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationColumnChooser$1", java.awt.event.MouseAdapter);\r
-Clazz.defineMethod (c$, "mousePressed", \r
-function (e) {\r
-this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging = true;\r
-Clazz.superCall (this, jalview.appletgui.AnnotationColumnChooser$1, "mousePressed", [e]);\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "mouseDragged", \r
-function (e) {\r
-this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging = true;\r
-Clazz.superCall (this, jalview.appletgui.AnnotationColumnChooser$1, "mouseDragged", [e]);\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-if (this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging) {\r
-this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging = false;\r
-this.b$["jalview.appletgui.AnnotationColumnChooser"].valueChanged (true);\r
-}this.b$["jalview.appletgui.AnnotationColumnChooser"].ap.paintAlignment (true);\r
-}, "java.awt.event.MouseEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"ACTION_OPTION_SELECT", 1,\r
-"ACTION_OPTION_HIDE", 2,\r
-"NO_GRAPH_VIEW", "0",\r
-"GRAPH_VIEW", "1");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "jalview.appletgui.AnnotationRowFilter", "$.TitledPanel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "awt2swing.Checkbox", "$.Choice", "$.TextField", "java.awt.BorderLayout", "$.CardLayout"], "jalview.appletgui.AnnotationColumnChooser", ["awt2swing.Frame", "jalview.bin.JalviewLite", "jalview.datamodel.ColumnSelection", "$.GraphLine", "jalview.util.MessageManager", "jalview.viewmodel.annotationfilter.AnnotationFilterParameter", "java.awt.Color", "$.Dimension", "java.awt.event.MouseAdapter", "$.TextListener", "java.lang.Float", "java.util.Vector", "javax.swing.JPanel"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.annotations = null;
+this.actionPanel = null;
+this.thresholdPanel = null;
+this.switchableViewsPanel = null;
+this.switchableViewsLayout = null;
+this.noGraphFilterView = null;
+this.graphFilterView = null;
+this.annotationComboBoxPanel = null;
+this.borderLayout1 = null;
+this.gBorderLayout = null;
+this.ngBorderLayout = null;
+this.threshold = null;
+this.gStructureFilterPanel = null;
+this.ngStructureFilterPanel = null;
+this.currentStructureFilterPanel = null;
+this.currentSearchPanel = null;
+this.gSearchPanel = null;
+this.ngSearchPanel = null;
+this.currentFurtherActionPanel = null;
+this.gFurtherActionPanel = null;
+this.ngFurtherActionPanel = null;
+this.actionOption = 1;
+this.oldColumnSelection = null;
+if (!Clazz.isClassDefined ("jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel")) {
+jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$FurtherActionPanel$ ();
+}
+if (!Clazz.isClassDefined ("jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel")) {
+jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$StructureFilterPanel$ ();
+}
+if (!Clazz.isClassDefined ("jalview.appletgui.AnnotationColumnChooser.SearchPanel")) {
+jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$SearchPanel$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationColumnChooser", jalview.appletgui.AnnotationRowFilter, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.ItemListener, java.awt.event.MouseListener]);
+Clazz.prepareFields (c$, function () {
+this.annotations =  new awt2swing.Choice ();
+this.actionPanel =  new awt2swing.Panel ();
+this.thresholdPanel =  new jalview.appletgui.TitledPanel ();
+this.switchableViewsPanel =  new awt2swing.Panel ( new java.awt.CardLayout ());
+this.switchableViewsLayout = (this.switchableViewsPanel.getLayout ());
+this.noGraphFilterView =  new awt2swing.Panel ();
+this.graphFilterView =  new awt2swing.Panel ();
+this.annotationComboBoxPanel =  new awt2swing.Panel ();
+this.borderLayout1 =  new java.awt.BorderLayout ();
+this.gBorderLayout =  new java.awt.BorderLayout ();
+this.ngBorderLayout =  new java.awt.BorderLayout ();
+this.threshold =  new awt2swing.Choice ();
+});
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationColumnChooser, []);
+try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+Clazz.makeConstructor (c$, 
+function (av, ap) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationColumnChooser, [av, ap]);
+this.frame =  new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.select_by_annotation"), 520, 215);
+this.slider.addAdjustmentListener (this);
+this.slider.addMouseListener (this);
+if (av.getAlignment ().getAlignmentAnnotation () == null) {
+return;
+}this.setOldColumnSelection (av.getColumnSelection ());
+this.adjusting = true;
+var list =  new java.util.Vector ();
+var index = 1;
+for (var i = 0; i < av.getAlignment ().getAlignmentAnnotation ().length; i++) {
+var label = av.getAlignment ().getAlignmentAnnotation ()[i].label;
+if (!list.contains (label)) {
+list.addElement (label);
+} else {
+list.addElement (label + "_" + (index++));
+}}
+for (var i = 0; i < list.size (); i++) {
+this.annotations.addItem (list.elementAt (i).toString ());
+}
+this.populateThresholdComboBox (this.threshold);
+if (av.getAnnotationColumnSelectionState () != null) {
+this.currentSearchPanel = av.getAnnotationColumnSelectionState ().getCurrentSearchPanel ();
+this.currentStructureFilterPanel = av.getAnnotationColumnSelectionState ().getCurrentStructureFilterPanel ();
+this.annotations.select (new Integer (av.getAnnotationColumnSelectionState ().getAnnotations ().getSelectedIndex ()));
+this.threshold.select (new Integer (av.getAnnotationColumnSelectionState ().getThreshold ().getSelectedIndex ()));
+this.actionOption = av.getAnnotationColumnSelectionState ().getActionOption ();
+}try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+this.adjusting = false;
+this.updateView ();
+this.frame.invalidate ();
+this.frame.pack ();
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz.defineMethod (c$, "jbInit", 
+($fz = function () {
+this.ok.setLabel (jalview.util.MessageManager.getString ("action.ok"));
+this.cancel.setLabel (jalview.util.MessageManager.getString ("action.cancel"));
+this.thresholdValue.setEnabled (false);
+this.thresholdValue.setColumns (7);
+this.ok.addActionListener (this);
+this.cancel.addActionListener (this);
+this.annotations.addItemListener (this);
+this.thresholdValue.addActionListener (this);
+this.threshold.addItemListener (this);
+this.slider.setBackground (java.awt.Color.white);
+this.slider.setEnabled (false);
+this.slider.setPreferredSize ( new java.awt.Dimension (100, 32));
+this.thresholdPanel.setBackground (java.awt.Color.white);
+this.actionPanel.setBackground (java.awt.Color.white);
+this.graphFilterView.setLayout (this.gBorderLayout);
+this.graphFilterView.setBackground (java.awt.Color.white);
+this.noGraphFilterView.setLayout (this.ngBorderLayout);
+this.noGraphFilterView.setBackground (java.awt.Color.white);
+this.annotationComboBoxPanel.setBackground (java.awt.Color.white);
+this.gSearchPanel = Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.SearchPanel, this, null, this);
+this.ngSearchPanel = Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.SearchPanel, this, null, this);
+this.gFurtherActionPanel = Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel, this, null, this);
+this.ngFurtherActionPanel = Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel, this, null, this);
+this.gStructureFilterPanel = Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel, this, null, this);
+this.ngStructureFilterPanel = Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel, this, null, this);
+this.thresholdPanel.setTitle ("Threshold Filter");
+this.thresholdPanel.add (this.getThreshold ());
+this.thresholdPanel.add (this.slider);
+this.thresholdPanel.add (this.thresholdValue);
+this.actionPanel.add (this.ok);
+this.actionPanel.add (this.cancel);
+var staticPanel =  new javax.swing.JPanel ();
+staticPanel.setLayout ( new java.awt.BorderLayout ());
+staticPanel.setBackground (java.awt.Color.white);
+staticPanel.add (this.gSearchPanel, "North");
+staticPanel.add (this.gStructureFilterPanel, "South");
+this.graphFilterView.add (staticPanel, "North");
+this.graphFilterView.add (this.thresholdPanel, "Center");
+this.graphFilterView.add (this.gFurtherActionPanel, "South");
+this.noGraphFilterView.add (this.ngSearchPanel, "First");
+this.noGraphFilterView.add (this.ngStructureFilterPanel, "Center");
+this.noGraphFilterView.add (this.ngFurtherActionPanel, "Center");
+this.annotationComboBoxPanel.add (this.getAnnotations ());
+this.switchableViewsPanel.add (this.noGraphFilterView, jalview.appletgui.AnnotationColumnChooser.NO_GRAPH_VIEW);
+this.switchableViewsPanel.add (this.graphFilterView, jalview.appletgui.AnnotationColumnChooser.GRAPH_VIEW);
+this.setLayout (this.borderLayout1);
+this.add (this.annotationComboBoxPanel, "First");
+this.add (this.switchableViewsPanel, "Center");
+this.add (this.actionPanel, "South");
+this.selectedAnnotationChanged ();
+this.validate ();
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "reset", 
+function () {
+if (this.getOldColumnSelection () != null) {
+this.av.getColumnSelection ().clear ();
+if (this.av.getAnnotationColumnSelectionState () != null) {
+var oldSelection = this.av.getAnnotationColumnSelectionState ().getOldColumnSelection ();
+if (oldSelection != null && oldSelection.getHiddenColumns () != null && !oldSelection.getHiddenColumns ().isEmpty ()) {
+for (var itr = oldSelection.getHiddenColumns ().iterator (); itr.hasNext (); ) {
+var positions = itr.next ();
+this.av.hideColumns (positions[0], positions[1]);
+}
+}this.av.setColumnSelection (oldSelection);
+}this.ap.paintAlignment (true);
+}});
+Clazz.overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+if (!this.adjusting) {
+this.thresholdValue.setText ((this.slider.getValue () / 1000) + "");
+this.valueChanged (!this.sliderDragging);
+}}, "java.awt.event.AdjustmentEvent");
+Clazz.defineMethod (c$, "addSliderMouseListeners", 
+function () {
+this.slider.addMouseListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationColumnChooser$1") ? 0 : jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser$1, this, null)));
+});
+Clazz.overrideMethod (c$, "valueChanged", 
+function (updateAllAnnotation) {
+if (this.slider.isEnabled ()) {
+this.getCurrentAnnotation ().threshold.value = this.slider.getValue () / 1000;
+this.updateView ();
+this.ap.paintAlignment (false);
+}}, "~B");
+Clazz.defineMethod (c$, "getThreshold", 
+function () {
+return this.threshold;
+});
+Clazz.defineMethod (c$, "setThreshold", 
+function (threshold) {
+this.threshold = threshold;
+}, "awt2swing.Choice");
+Clazz.defineMethod (c$, "getAnnotations", 
+function () {
+return this.annotations;
+});
+Clazz.defineMethod (c$, "setAnnotations", 
+function (annotations) {
+this.annotations = annotations;
+}, "awt2swing.Choice");
+Clazz.overrideMethod (c$, "updateView", 
+function () {
+if (this.adjusting) {
+return;
+}var filterParams =  new jalview.viewmodel.annotationfilter.AnnotationFilterParameter ();
+this.setCurrentAnnotation (this.av.getAlignment ().getAlignmentAnnotation ()[this.getAnnotations ().getSelectedIndex ()]);
+var selectedThresholdItem = this.getSelectedThresholdItem (this.getThreshold ().getSelectedIndex ());
+this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+if (selectedThresholdItem == -1) {
+this.slider.setEnabled (false);
+this.thresholdValue.setEnabled (false);
+this.thresholdValue.setText ("");
+} else if (selectedThresholdItem != -1) {
+if (this.getCurrentAnnotation ().threshold == null) {
+this.getCurrentAnnotation ().setThreshold ( new jalview.datamodel.GraphLine ((this.getCurrentAnnotation ().graphMax - this.getCurrentAnnotation ().graphMin) / 2, "Threshold", java.awt.Color.black));
+}this.adjusting = true;
+var range = this.getCurrentAnnotation ().graphMax * 1000 - this.getCurrentAnnotation ().graphMin * 1000;
+this.slider.setMinimum (Clazz.floatToInt (this.getCurrentAnnotation ().graphMin * 1000));
+this.slider.setMaximum (Clazz.floatToInt (this.getCurrentAnnotation ().graphMax * 1000));
+this.slider.setValue (Clazz.floatToInt (this.getCurrentAnnotation ().threshold.value * 1000));
+this.thresholdValue.setText (this.getCurrentAnnotation ().threshold.value + "");
+this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+this.adjusting = false;
+filterParams.setThresholdType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.NO_THRESHOLD);
+if (this.getCurrentAnnotation ().graph != 0) {
+filterParams.setThresholdValue (this.getCurrentAnnotation ().threshold.value);
+if (selectedThresholdItem == 1) {
+filterParams.setThresholdType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.ABOVE_THRESHOLD);
+} else if (selectedThresholdItem == 0) {
+filterParams.setThresholdType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.BELOW_THRESHOLD);
+}}}if (this.currentStructureFilterPanel != null) {
+if (this.currentStructureFilterPanel.alphaHelix.getState ()) {
+filterParams.setFilterAlphaHelix (true);
+}if (this.currentStructureFilterPanel.betaStrand.getState ()) {
+filterParams.setFilterBetaSheet (true);
+}if (this.currentStructureFilterPanel.turn.getState ()) {
+filterParams.setFilterTurn (true);
+}}if (this.currentSearchPanel != null) {
+if (!this.currentSearchPanel.searchBox.getText ().isEmpty ()) {
+this.currentSearchPanel.description.setEnabled (true);
+this.currentSearchPanel.displayName.setEnabled (true);
+filterParams.setRegexString (this.currentSearchPanel.searchBox.getText ());
+if (this.currentSearchPanel.displayName.getState ()) {
+filterParams.addRegexSearchField (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DISPLAY_STRING);
+}if (this.currentSearchPanel.description.getState ()) {
+filterParams.addRegexSearchField (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DESCRIPTION);
+}} else {
+this.currentSearchPanel.description.setEnabled (false);
+this.currentSearchPanel.displayName.setEnabled (false);
+}}this.av.getColumnSelection ().filterAnnotations (this.getCurrentAnnotation ().annotations, filterParams);
+this.av.showAllHiddenColumns ();
+if (this.getActionOption () == jalview.appletgui.AnnotationColumnChooser.ACTION_OPTION_HIDE) {
+this.av.hideSelectedColumns ();
+}filterParams = null;
+this.av.setAnnotationColumnSelectionState (this);
+this.ap.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "getOldColumnSelection", 
+function () {
+return this.oldColumnSelection;
+});
+Clazz.defineMethod (c$, "setOldColumnSelection", 
+function (currentColumnSelection) {
+if (currentColumnSelection != null) {
+this.oldColumnSelection =  new jalview.datamodel.ColumnSelection (currentColumnSelection);
+}}, "jalview.datamodel.ColumnSelection");
+Clazz.defineMethod (c$, "getCurrentFutherActionPanel", 
+function () {
+return this.currentFurtherActionPanel;
+});
+Clazz.defineMethod (c$, "setCurrentFutherActionPanel", 
+function (currentFutherActionPanel) {
+this.currentFurtherActionPanel = currentFutherActionPanel;
+}, "jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel");
+Clazz.defineMethod (c$, "getCurrentSearchPanel", 
+function () {
+return this.currentSearchPanel;
+});
+Clazz.defineMethod (c$, "setCurrentSearchPanel", 
+function (currentSearchPanel) {
+this.currentSearchPanel = currentSearchPanel;
+}, "jalview.appletgui.AnnotationColumnChooser.SearchPanel");
+Clazz.defineMethod (c$, "getActionOption", 
+function () {
+return this.actionOption;
+});
+Clazz.defineMethod (c$, "setActionOption", 
+function (actionOption) {
+this.actionOption = actionOption;
+}, "~N");
+Clazz.defineMethod (c$, "getCurrentStructureFilterPanel", 
+function () {
+return this.currentStructureFilterPanel;
+});
+Clazz.defineMethod (c$, "setCurrentStructureFilterPanel", 
+function (currentStructureFilterPanel) {
+this.currentStructureFilterPanel = currentStructureFilterPanel;
+}, "jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel");
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+if (e.getSource () === this.annotations) {
+this.selectedAnnotationChanged ();
+} else if (e.getSource () === this.threshold) {
+this.threshold_actionPerformed (null);
+}}, "java.awt.event.ItemEvent");
+Clazz.defineMethod (c$, "selectedAnnotationChanged", 
+function () {
+var currentView = jalview.appletgui.AnnotationColumnChooser.NO_GRAPH_VIEW;
+if (this.av.getAlignment ().getAlignmentAnnotation ()[this.getAnnotations ().getSelectedIndex ()].graph != 0) {
+currentView = jalview.appletgui.AnnotationColumnChooser.GRAPH_VIEW;
+}this.gSearchPanel.syncState ();
+this.gFurtherActionPanel.syncState ();
+this.gStructureFilterPanel.syncState ();
+this.ngSearchPanel.syncState ();
+this.ngFurtherActionPanel.syncState ();
+this.ngStructureFilterPanel.syncState ();
+this.switchableViewsLayout.show (this.switchableViewsPanel, currentView);
+this.updateView ();
+});
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.thresholdValue) {
+try {
+var f =  new Float (this.thresholdValue.getText ()).floatValue ();
+this.slider.setValue (Clazz.floatToInt (f * 1000));
+this.adjustmentValueChanged (null);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+} else if (evt.getSource () === this.ok) {
+this.ok_actionPerformed (null);
+} else if (evt.getSource () === this.cancel) {
+this.cancel_actionPerformed (null);
+} else if (evt.getSource () === this.thresholdValue) {
+this.thresholdValue_actionPerformed (null);
+} else {
+this.updateView ();
+}}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (e) {
+if (e.getSource () === this.slider) {
+this.updateView ();
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (e) {
+if (e.getSource () === this.slider) {
+this.updateView ();
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (e) {
+if (e.getSource () === this.slider) {
+this.updateView ();
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (e) {
+if (e.getSource () === this.slider) {
+this.updateView ();
+}}, "java.awt.event.MouseEvent");
+c$.$AnnotationColumnChooser$FurtherActionPanel$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.aColChooser = null;
+this.furtherAction = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.AnnotationColumnChooser, "FurtherActionPanel", awt2swing.Panel, java.awt.event.ItemListener);
+Clazz.prepareFields (c$, function () {
+this.furtherAction =  new awt2swing.Choice ();
+});
+Clazz.makeConstructor (c$, 
+function (a) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel, []);
+this.aColChooser = a;
+this.furtherAction.addItem ("Select");
+this.furtherAction.addItem ("Hide");
+this.furtherAction.addItemListener (this);
+this.syncState ();
+this.add (this.furtherAction);
+}, "jalview.appletgui.AnnotationColumnChooser");
+Clazz.defineMethod (c$, "syncState", 
+function () {
+if (this.aColChooser.getActionOption () == jalview.appletgui.AnnotationColumnChooser.ACTION_OPTION_HIDE) {
+this.furtherAction.select ("Hide");
+} else {
+this.furtherAction.select ("Select");
+}});
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (a) {
+this.aColChooser.setCurrentFutherActionPanel (this);
+if (this.furtherAction.getSelectedItem ().toString ().equalsIgnoreCase ("Select")) {
+this.b$["jalview.appletgui.AnnotationColumnChooser"].setActionOption (1);
+this.b$["jalview.appletgui.AnnotationColumnChooser"].updateView ();
+} else {
+this.b$["jalview.appletgui.AnnotationColumnChooser"].setActionOption (jalview.appletgui.AnnotationColumnChooser.ACTION_OPTION_HIDE);
+this.b$["jalview.appletgui.AnnotationColumnChooser"].updateView ();
+}}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationColumnChooser$StructureFilterPanel$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.aColChooser = null;
+this.alphaHelix = null;
+this.betaStrand = null;
+this.turn = null;
+this.all = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.AnnotationColumnChooser, "StructureFilterPanel", jalview.appletgui.TitledPanel, java.awt.event.ItemListener);
+Clazz.prepareFields (c$, function () {
+this.alphaHelix =  new awt2swing.Checkbox ();
+this.betaStrand =  new awt2swing.Checkbox ();
+this.turn =  new awt2swing.Checkbox ();
+this.all =  new awt2swing.Checkbox ();
+});
+Clazz.makeConstructor (c$, 
+function (a) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel, []);
+this.aColChooser = a;
+this.alphaHelix.setLabel (jalview.util.MessageManager.getString ("label.alpha_helix"));
+this.alphaHelix.setBackground (java.awt.Color.white);
+this.alphaHelix.addItemListener (this);
+this.betaStrand.setLabel (jalview.util.MessageManager.getString ("label.beta_strand"));
+this.betaStrand.setBackground (java.awt.Color.white);
+this.betaStrand.addItemListener (this);
+this.turn.setLabel (jalview.util.MessageManager.getString ("label.turn"));
+this.turn.setBackground (java.awt.Color.white);
+this.turn.addItemListener (this);
+this.all.setLabel (jalview.util.MessageManager.getString ("label.select_all"));
+this.all.setBackground (java.awt.Color.white);
+this.all.addItemListener (this);
+this.setBackground (java.awt.Color.white);
+this.setTitle ("Structure Filter");
+this.add (this.all);
+this.add (this.alphaHelix);
+this.add (this.betaStrand);
+this.add (this.turn);
+}, "jalview.appletgui.AnnotationColumnChooser");
+Clazz.defineMethod (c$, "alphaHelix_actionPerformed", 
+function () {
+this.updateSelectAllState ();
+this.aColChooser.setCurrentStructureFilterPanel (this);
+this.aColChooser.updateView ();
+});
+Clazz.defineMethod (c$, "betaStrand_actionPerformed", 
+function () {
+this.updateSelectAllState ();
+this.aColChooser.setCurrentStructureFilterPanel (this);
+this.aColChooser.updateView ();
+});
+Clazz.defineMethod (c$, "turn_actionPerformed", 
+function () {
+this.updateSelectAllState ();
+this.aColChooser.setCurrentStructureFilterPanel (this);
+this.aColChooser.updateView ();
+});
+Clazz.defineMethod (c$, "all_actionPerformed", 
+function () {
+if (this.all.getState ()) {
+this.alphaHelix.setState (true);
+this.betaStrand.setState (true);
+this.turn.setState (true);
+} else {
+this.alphaHelix.setState (false);
+this.betaStrand.setState (false);
+this.turn.setState (false);
+}this.aColChooser.setCurrentStructureFilterPanel (this);
+this.aColChooser.updateView ();
+});
+Clazz.defineMethod (c$, "updateSelectAllState", 
+function () {
+if (this.alphaHelix.getState () && this.betaStrand.getState () && this.turn.getState ()) {
+this.all.setState (true);
+} else {
+this.all.setState (false);
+}});
+Clazz.defineMethod (c$, "syncState", 
+function () {
+var a = this.aColChooser.getCurrentStructureFilterPanel ();
+if (a != null) {
+this.alphaHelix.setState (a.alphaHelix.getState ());
+this.betaStrand.setState (a.betaStrand.getState ());
+this.turn.setState (a.turn.getState ());
+if (a.all.getState ()) {
+this.all.setState (true);
+this.alphaHelix.setState (true);
+this.betaStrand.setState (true);
+this.turn.setState (true);
+}}});
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (a) {
+if (a.getSource () === this.alphaHelix) {
+this.alphaHelix_actionPerformed ();
+} else if (a.getSource () === this.betaStrand) {
+this.betaStrand_actionPerformed ();
+} else if (a.getSource () === this.turn) {
+this.turn_actionPerformed ();
+} else if (a.getSource () === this.all) {
+this.all_actionPerformed ();
+}}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationColumnChooser$SearchPanel$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.aColChooser = null;
+this.displayName = null;
+this.description = null;
+this.searchBox = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.AnnotationColumnChooser, "SearchPanel", jalview.appletgui.TitledPanel, java.awt.event.ItemListener);
+Clazz.prepareFields (c$, function () {
+this.displayName =  new awt2swing.Checkbox ();
+this.description =  new awt2swing.Checkbox ();
+this.searchBox =  new awt2swing.TextField (10);
+});
+Clazz.makeConstructor (c$, 
+function (a) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationColumnChooser.SearchPanel, []);
+this.aColChooser = a;
+this.searchBox.addTextListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationColumnChooser$SearchPanel$1") ? 0 : jalview.appletgui.AnnotationColumnChooser.SearchPanel.$AnnotationColumnChooser$SearchPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationColumnChooser$SearchPanel$1, this, null)));
+this.displayName.setLabel (jalview.util.MessageManager.getString ("label.display_name"));
+this.displayName.setEnabled (false);
+this.displayName.addItemListener (this);
+this.description.setLabel (jalview.util.MessageManager.getString ("label.description"));
+this.description.setEnabled (false);
+this.description.addItemListener (this);
+this.setTitle ("Search Filter");
+this.syncState ();
+this.add (this.searchBox);
+this.add (this.displayName);
+this.add (this.description);
+}, "jalview.appletgui.AnnotationColumnChooser");
+Clazz.defineMethod (c$, "displayNameCheckboxAction", 
+function () {
+this.aColChooser.setCurrentSearchPanel (this);
+this.aColChooser.updateView ();
+});
+Clazz.defineMethod (c$, "discriptionCheckboxAction", 
+function () {
+this.aColChooser.setCurrentSearchPanel (this);
+this.aColChooser.updateView ();
+});
+Clazz.defineMethod (c$, "searchStringAction", 
+function () {
+this.aColChooser.setCurrentSearchPanel (this);
+this.aColChooser.updateView ();
+});
+Clazz.defineMethod (c$, "syncState", 
+function () {
+var a = this.aColChooser.getCurrentSearchPanel ();
+if (a != null) {
+this.description.setEnabled (a.description.isEnabled ());
+this.description.setState (a.description.getState ());
+this.displayName.setEnabled (a.displayName.isEnabled ());
+this.displayName.setState (a.displayName.getState ());
+this.searchBox.setText (a.searchBox.getText ());
+}});
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (a) {
+if (a.getSource () === this.displayName) {
+this.displayNameCheckboxAction ();
+} else if (a.getSource () === this.description) {
+this.discriptionCheckboxAction ();
+}}, "java.awt.event.ItemEvent");
+c$.$AnnotationColumnChooser$SearchPanel$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationColumnChooser$SearchPanel$1", null, java.awt.event.TextListener);
+Clazz.overrideMethod (c$, "textValueChanged", 
+function (a) {
+this.b$["jalview.appletgui.AnnotationColumnChooser.SearchPanel"].searchStringAction ();
+}, "java.awt.event.TextEvent");
+c$ = Clazz.p0p ();
+};
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationColumnChooser$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationColumnChooser$1", java.awt.event.MouseAdapter);
+Clazz.defineMethod (c$, "mousePressed", 
+function (e) {
+this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging = true;
+Clazz.superCall (this, jalview.appletgui.AnnotationColumnChooser$1, "mousePressed", [e]);
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "mouseDragged", 
+function (e) {
+this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging = true;
+Clazz.superCall (this, jalview.appletgui.AnnotationColumnChooser$1, "mouseDragged", [e]);
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+if (this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging) {
+this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging = false;
+this.b$["jalview.appletgui.AnnotationColumnChooser"].valueChanged (true);
+}this.b$["jalview.appletgui.AnnotationColumnChooser"].ap.paintAlignment (true);
+}, "java.awt.event.MouseEvent");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"ACTION_OPTION_SELECT", 1,
+"ACTION_OPTION_HIDE", 2,
+"NO_GRAPH_VIEW", "0",
+"GRAPH_VIEW", "1");
+});
index 89f6aaa..e82534c 100644 (file)
Binary files a/bin/jalview/appletgui/AnnotationLabels.class and b/bin/jalview/appletgui/AnnotationLabels.class differ
index 195bfa5..27cabd2 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.AnnotationLabels", ["awt2swing.Checkbox", "$.CheckboxMenuItem", "$.Frame", "$.MenuItem", "$.PopupMenu", "jalview.analysis.AlignmentUtils", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.EditNameDialog", "$.PaintRefresher", "$.Tooltip", "jalview.bin.JalviewLite", "jalview.datamodel.AlignmentAnnotation", "$.SequenceGroup", "jalview.util.MessageManager", "$.ParseHtmlBodyAndLinks", "java.awt.Color", "$.Dimension", "$.FlowLayout", "java.awt.event.ItemListener", "java.lang.StringBuffer", "java.util.Arrays", "$.Collections", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.image = null;\r
-this.active = false;\r
-this.ap = null;\r
-this.av = null;\r
-this.resizing = false;\r
-this.oldY = 0;\r
-this.mouseX = 0;\r
-this.scrollOffset = 0;\r
-this.selectedRow = -1;\r
-this.tooltip = null;\r
-this.hasHiddenRows = false;\r
-this.resizePanel = false;\r
-this.dragEvent = null;\r
-this.dragCancelled = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "AnnotationLabels", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);\r
-Clazz.makeConstructor (c$, \r
-function (ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationLabels, []);\r
-this.ap = ap;\r
-this.av = ap.av;\r
-this.setLayout (null);\r
-this.addMouseListener (this);\r
-this.addMouseMotionListener (this);\r
-}, "jalview.appletgui.AlignmentPanel");\r
-Clazz.makeConstructor (c$, \r
-function (av) {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationLabels, []);\r
-this.av = av;\r
-}, "jalview.appletgui.AlignViewport");\r
-Clazz.defineMethod (c$, "setScrollOffset", \r
-function (y, repaint) {\r
-this.scrollOffset = y;\r
-if (repaint) {\r
-this.repaint ();\r
-}}, "~N,~B");\r
-Clazz.defineMethod (c$, "getSelectedRow", \r
-function (y) {\r
-var row = -2;\r
-var aa = this.ap.av.getAlignment ().getAlignmentAnnotation ();\r
-if (aa == null) {\r
-return row;\r
-}var height = 0;\r
-for (var i = 0; i < aa.length; i++) {\r
-row = -1;\r
-if (!aa[i].visible) {\r
-continue;\r
-}height += aa[i].height;\r
-if (y < height) {\r
-row = i;\r
-break;\r
-}}\r
-return row;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-var aa = this.av.getAlignment ().getAlignmentAnnotation ();\r
-if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.ADDNEW)) {\r
-var newAnnotation =  new jalview.datamodel.AlignmentAnnotation ("", null,  new Array (this.ap.av.getAlignment ().getWidth ()));\r
-if (!this.editLabelDescription (newAnnotation)) {\r
-return;\r
-}this.ap.av.getAlignment ().addAnnotation (newAnnotation);\r
-this.ap.av.getAlignment ().setAnnotationIndex (newAnnotation, 0);\r
-} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.EDITNAME)) {\r
-this.editLabelDescription (aa[this.selectedRow]);\r
-} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.HIDE)) {\r
-aa[this.selectedRow].visible = false;\r
-} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.SHOWALL)) {\r
-for (var i = 0; i < aa.length; i++) {\r
-aa[i].visible = (aa[i].annotations == null) ? false : true;\r
-}\r
-} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.OUTPUT_TEXT)) {\r
-var cap =  new jalview.appletgui.CutAndPasteTransfer (false, this.ap.alignFrame);\r
-var frame =  new awt2swing.Frame ();\r
-frame.add (cap);\r
-jalview.bin.JalviewLite.addFrame (frame, this.ap.alignFrame.getTitle () + " - " + aa[this.selectedRow].label, 500, 100);\r
-cap.setText (aa[this.selectedRow].toString ());\r
-} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.COPYCONS_SEQ)) {\r
-var cons = this.av.getConsensusSeq ();\r
-if (cons != null) {\r
-this.copy_annotseqtoclipboard (cons);\r
-}}this.refresh ();\r
-}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "refresh", \r
-function () {\r
-this.ap.annotationPanel.adjustPanelHeight ();\r
-this.setSize (this.getSize ().width, this.ap.annotationPanel.getSize ().height);\r
-this.ap.validate ();\r
-this.ap.paintAlignment (true);\r
-});\r
-Clazz.defineMethod (c$, "editLabelDescription", \r
-function (annotation) {\r
-var padGaps =  new awt2swing.Checkbox ("Fill Empty Gaps With \"" + this.ap.av.getGapCharacter () + "\"", annotation.padGaps);\r
-var dialog =  new jalview.appletgui.EditNameDialog (annotation.label, annotation.description, "      Annotation Label", "Annotation Description", this.ap.alignFrame, "Edit Annotation Name / Description", 500, 180, false);\r
-var empty =  new awt2swing.Panel ( new java.awt.FlowLayout ());\r
-empty.add (padGaps);\r
-dialog.add (empty);\r
-dialog.pack ();\r
-dialog.setVisible (true);\r
-if (dialog.accept) {\r
-annotation.label = dialog.getName ();\r
-annotation.description = dialog.getDescription ();\r
-annotation.setPadGaps (padGaps.getState (), this.av.getGapCharacter ());\r
-this.repaint ();\r
-return true;\r
-} else {\r
-return false;\r
-}}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.overrideMethod (c$, "mouseMoved", \r
-function (evt) {\r
-this.resizePanel = evt.getY () < 10 && evt.getX () < 14;\r
-var row = this.getSelectedRow (evt.getY () + this.scrollOffset);\r
-if (row > -1) {\r
-var phb =  new jalview.util.ParseHtmlBodyAndLinks (this.av.getAlignment ().getAlignmentAnnotation ()[row].getDescription (true), true, "\n");\r
-if (this.tooltip == null) {\r
-this.tooltip =  new jalview.appletgui.Tooltip (phb.getNonHtmlContent (), this);\r
-} else {\r
-this.tooltip.setTip (phb.getNonHtmlContent ());\r
-}} else if (this.tooltip != null) {\r
-this.tooltip.setTip ("");\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "cancelDrag", \r
-function () {\r
-this.dragEvent = null;\r
-this.dragCancelled = true;\r
-});\r
-Clazz.overrideMethod (c$, "mouseDragged", \r
-function (evt) {\r
-if (this.dragCancelled) {\r
-return;\r
-};this.dragEvent = evt;\r
-if (this.resizePanel) {\r
-var d = this.ap.annotationPanelHolder.getSize ();\r
-var e = this.ap.annotationSpaceFillerHolder.getSize ();\r
-var f = this.ap.seqPanelHolder.getSize ();\r
-var dif = evt.getY () - this.oldY;\r
-dif /= this.ap.av.getCharHeight ();\r
-dif *= this.ap.av.getCharHeight ();\r
-if ((d.height - dif) > 20 && (f.height + dif) > 20) {\r
-this.ap.annotationPanel.setSize (d.width, d.height - dif);\r
-this.setSize ( new java.awt.Dimension (e.width, d.height - dif));\r
-this.ap.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, d.height - dif));\r
-this.ap.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, d.height - dif));\r
-this.ap.apvscroll.setValues (this.ap.apvscroll.getValue (), d.height - dif, 0, this.av.calcPanelHeight ());\r
-f.height += dif;\r
-this.ap.seqPanelHolder.setPreferredSize (f);\r
-this.ap.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ());\r
-this.ap.validate ();\r
-this.ap.addNotify ();\r
-}} else {\r
-var diff;\r
-if ((diff = 6 - evt.getY ()) > 0) {\r
-this.ap.apvscroll.setValue (this.ap.apvscroll.getValue () - diff);\r
-this.ap.adjustmentValueChanged (null);\r
-} else if ((0 < (diff = 6 - this.ap.annotationSpaceFillerHolder.getSize ().height + evt.getY ()))) {\r
-this.ap.apvscroll.setValue (this.ap.apvscroll.getValue () + diff);\r
-this.ap.adjustmentValueChanged (null);\r
-}this.repaint ();\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-if (!this.resizePanel && !this.dragCancelled) {\r
-var start = this.selectedRow;\r
-var end = this.getSelectedRow (evt.getY () + this.scrollOffset);\r
-if (start > -1 && start != end) {\r
-var startAA = this.ap.av.getAlignment ().getAlignmentAnnotation ()[start];\r
-if (end == -1) {\r
-end = this.ap.av.getAlignment ().getAlignmentAnnotation ().length - 1;\r
-}var endAA = this.ap.av.getAlignment ().getAlignmentAnnotation ()[end];\r
-this.ap.av.getAlignment ().getAlignmentAnnotation ()[end] = startAA;\r
-this.ap.av.getAlignment ().getAlignmentAnnotation ()[start] = endAA;\r
-}}this.resizePanel = false;\r
-this.dragEvent = null;\r
-this.dragCancelled = false;\r
-this.repaint ();\r
-this.ap.annotationPanel.repaint ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (evt) {\r
-if (evt.getY () < 10 && evt.getX () < 14) {\r
-this.resizePanel = true;\r
-this.repaint ();\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (evt) {\r
-this.dragCancelled = false;\r
-if (this.dragEvent == null) {\r
-this.resizePanel = false;\r
-} else {\r
-if (!this.resizePanel) {\r
-this.dragEvent = null;\r
-}}this.repaint ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-this.oldY = evt.getY ();\r
-if (this.resizePanel) {\r
-return;\r
-}this.dragCancelled = false;\r
-this.selectedRow = this.getSelectedRow (evt.getY () + this.scrollOffset);\r
-var aa = this.ap.av.getAlignment ().getAlignmentAnnotation ();\r
-if ((evt.getModifiers () & 4) == 4) {\r
-var popup =  new awt2swing.PopupMenu (jalview.util.MessageManager.getString ("label.annotations"));\r
-var item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.ADDNEW);\r
-item.addActionListener (this);\r
-popup.add (item);\r
-if (this.selectedRow < 0) {\r
-if (this.hasHiddenRows) {\r
-item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.SHOWALL);\r
-item.addActionListener (this);\r
-popup.add (item);\r
-}this.add (popup);\r
-popup.show (this, evt.getX (), evt.getY ());\r
-return;\r
-}item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.EDITNAME);\r
-item.addActionListener (this);\r
-popup.add (item);\r
-item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.HIDE);\r
-item.addActionListener (this);\r
-popup.add (item);\r
-if (this.selectedRow < aa.length) {\r
-if (aa[this.selectedRow].sequenceRef != null) {\r
-var label = aa[this.selectedRow].label;\r
-var hideType =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.hide_all") + " " + label);\r
-hideType.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$1") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$1, this, Clazz.cloneFinals ("label", label))));\r
-popup.add (hideType);\r
-}}if (this.hasHiddenRows) {\r
-item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.SHOWALL);\r
-item.addActionListener (this);\r
-popup.add (item);\r
-}this.add (popup);\r
-item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.OUTPUT_TEXT);\r
-item.addActionListener (this);\r
-popup.add (item);\r
-if (this.selectedRow < aa.length) {\r
-if (aa[this.selectedRow].autoCalculated) {\r
-if (aa[this.selectedRow].label.indexOf ("Consensus") > -1) {\r
-popup.addSeparator ();\r
-var cbmi =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.ignore_gaps_consensus"), (aa[this.selectedRow].groupRef != null) ? aa[this.selectedRow].groupRef.getIgnoreGapsConsensus () : this.ap.av.isIgnoreGapsConsensus ());\r
-var aaa = aa[this.selectedRow];\r
-cbmi.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$2") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$2, this, Clazz.cloneFinals ("aaa", aaa, "cbmi", cbmi))));\r
-popup.add (cbmi);\r
-if (aaa.groupRef != null) {\r
-var chist =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_group_histogram"), aa[this.selectedRow].groupRef.isShowConsensusHistogram ());\r
-chist.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$3") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$3, this, Clazz.cloneFinals ("aaa", aaa, "chist", chist))));\r
-popup.add (chist);\r
-var cprofl =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_group_logo"), aa[this.selectedRow].groupRef.isShowSequenceLogo ());\r
-cprofl.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$4") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$4$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$4, this, Clazz.cloneFinals ("aaa", aaa, "cprofl", cprofl))));\r
-popup.add (cprofl);\r
-var cprofn =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.normalise_group_logo"), aa[this.selectedRow].groupRef.isNormaliseSequenceLogo ());\r
-cprofn.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$5") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$5$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$5, this, Clazz.cloneFinals ("aaa", aaa, "cprofn", cprofn))));\r
-popup.add (cprofn);\r
-} else {\r
-var chist =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_histogram"), this.av.isShowConsensusHistogram ());\r
-chist.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$6") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$6$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$6, this, Clazz.cloneFinals ("chist", chist))));\r
-popup.add (chist);\r
-var cprof =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_logo"), this.av.isShowSequenceLogo ());\r
-cprof.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$7") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$7$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$7, this, Clazz.cloneFinals ("cprof", cprof))));\r
-popup.add (cprof);\r
-var cprofn =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.normalise_logo"), this.av.isNormaliseSequenceLogo ());\r
-cprofn.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$8") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$8$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$8, this, Clazz.cloneFinals ("cprofn", cprofn))));\r
-popup.add (cprofn);\r
-}item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.COPYCONS_SEQ);\r
-item.addActionListener (this);\r
-popup.add (item);\r
-}}}popup.show (this, evt.getX (), evt.getY ());\r
-} else {\r
-if (this.selectedRow > -1 && this.selectedRow < aa.length) {\r
-if (aa[this.selectedRow].groupRef != null) {\r
-if (evt.getClickCount () >= 2) {\r
-this.ap.seqPanel.ap.idPanel.highlightSearchResults (null);\r
-this.ap.av.setSelectionGroup (aa[this.selectedRow].groupRef);\r
-this.ap.av.sendSelection ();\r
-this.ap.paintAlignment (false);\r
-jalview.appletgui.PaintRefresher.Refresh (this.ap, this.ap.av.getSequenceSetId ());\r
-} else {\r
-this.ap.seqPanel.ap.idPanel.highlightSearchResults (aa[this.selectedRow].groupRef.getSequences (null));\r
-}return;\r
-} else if (aa[this.selectedRow].sequenceRef != null) {\r
-if (evt.getClickCount () == 1) {\r
-this.ap.seqPanel.ap.idPanel.highlightSearchResults (java.util.Arrays.asList ( Clazz.newArray (-1, [aa[this.selectedRow].sequenceRef])));\r
-} else if (evt.getClickCount () >= 2) {\r
-this.ap.seqPanel.ap.idPanel.highlightSearchResults (null);\r
-var sg = this.ap.av.getSelectionGroup ();\r
-if (sg != null) {\r
-if (!(evt.isControlDown () || evt.isShiftDown ())) {\r
-sg =  new jalview.datamodel.SequenceGroup (sg);\r
-sg.clear ();\r
-sg.addSequence (aa[this.selectedRow].sequenceRef, false);\r
-} else {\r
-if (evt.isControlDown ()) {\r
-sg.addOrRemove (aa[this.selectedRow].sequenceRef, true);\r
-} else {\r
-sg.addSequence (aa[this.selectedRow].sequenceRef, true);\r
-}}} else {\r
-sg =  new jalview.datamodel.SequenceGroup ();\r
-sg.setStartRes (0);\r
-sg.setEndRes (this.ap.av.getAlignment ().getWidth () - 1);\r
-sg.addSequence (aa[this.selectedRow].sequenceRef, false);\r
-}this.ap.av.setSelectionGroup (sg);\r
-this.ap.paintAlignment (false);\r
-jalview.appletgui.PaintRefresher.Refresh (this.ap, this.ap.av.getSequenceSetId ());\r
-this.ap.av.sendSelection ();\r
-}}}}}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "copy_annotseqtoclipboard", \r
-function (sq) {\r
-if (sq == null || sq.getLength () < 1) {\r
-return;\r
-}jalview.appletgui.AlignFrame.copiedSequences =  new StringBuffer ();\r
-jalview.appletgui.AlignFrame.copiedSequences.append (sq.getName () + "\t" + sq.getStart () + "\t" + sq.getEnd () + "\t" + sq.getSequenceAsString () + "\n");\r
-if (this.av.hasHiddenColumns ()) {\r
-jalview.appletgui.AlignFrame.copiedHiddenColumns =  new java.util.Vector ();\r
-for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {\r
-jalview.appletgui.AlignFrame.copiedHiddenColumns.addElement ( Clazz.newIntArray (-1, [region[0], region[1]]));\r
-}\r
-}}, "jalview.datamodel.SequenceI");\r
-Clazz.overrideMethod (c$, "paintComponent", \r
-function (g) {\r
-if (this.av.getWrapAlignment () || !this.av.isShowAnnotation ()) return;\r
-var w = this.getSize ().width;\r
-var h = this.getSize ().height;\r
-if (this.image == null || w != this.image.getWidth (this) || h != this.image.getHeight (this)) {\r
-this.image = this.createImage (w, this.ap.annotationPanel.getSize ().height);\r
-}this.drawComponent (this.image.getGraphics (), w);\r
-g.drawImage (this.image, 0, 0, this);\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "drawComponent", \r
-function (g, width) {\r
-g.setFont (this.av.getFont ());\r
-var fm = g.getFontMetrics (this.av.getFont ());\r
-g.setColor (java.awt.Color.white);\r
-g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);\r
-g.translate (0, -this.scrollOffset);\r
-g.setColor (java.awt.Color.black);\r
-var aa = this.av.getAlignment ().getAlignmentAnnotation ();\r
-var y = 0;\r
-var fy = g.getFont ().getSize ();\r
-var x = 0;\r
-var offset;\r
-if (aa != null) {\r
-this.hasHiddenRows = false;\r
-for (var i = 0; i < aa.length; i++) {\r
-if (!aa[i].visible) {\r
-this.hasHiddenRows = true;\r
-continue;\r
-}x = width - fm.stringWidth (aa[i].label) - 3;\r
-y += aa[i].height;\r
-offset = Clazz.doubleToInt (-(aa[i].height - fy) / 2);\r
-g.drawString (aa[i].label, x, y + offset);\r
-}\r
-}g.translate (0, +this.scrollOffset);\r
-if (this.resizePanel) {\r
-g.setColor (java.awt.Color.red);\r
-g.setPaintMode ();\r
-g.drawLine (2, 8, 5, 2);\r
-g.drawLine (5, 2, 8, 8);\r
-} else if (!this.dragCancelled && this.dragEvent != null && aa != null) {\r
-g.setColor (java.awt.Color.lightGray);\r
-g.drawString (aa[this.selectedRow].label, this.dragEvent.getX (), this.dragEvent.getY ());\r
-}if (!this.av.getWrapAlignment () && ((aa == null) || (aa.length < 1))) {\r
-g.setColor (java.awt.Color.black);\r
-g.drawString (jalview.util.MessageManager.getString ("label.right_click"), 2, 8);\r
-g.drawString (jalview.util.MessageManager.getString ("label.to_add_annotation"), 2, 18);\r
-}}, "java.awt.Graphics,~N");\r
-c$.$AnnotationLabels$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$1", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-jalview.analysis.AlignmentUtils.showOrHideSequenceAnnotations (this.b$["jalview.appletgui.AnnotationLabels"].ap.av.getAlignment (), java.util.Collections.singleton (this.f$.label), null, false, false);\r
-this.b$["jalview.appletgui.AnnotationLabels"].refresh ();\r
-}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationLabels$2$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$2", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-if (this.f$.aaa.groupRef != null) {\r
-this.f$.aaa.groupRef.setIgnoreGapsConsensus (this.f$.cbmi.getState ());\r
-} else {\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.av.setIgnoreGapsConsensus (this.f$.cbmi.getState (), this.b$["jalview.appletgui.AnnotationLabels"].ap);\r
-}this.b$["jalview.appletgui.AnnotationLabels"].ap.paintAlignment (true);\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationLabels$3$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$3", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-this.f$.aaa.groupRef.setShowConsensusHistogram (this.f$.chist.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationLabels$4$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$4", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-this.f$.aaa.groupRef.setshowSequenceLogo (this.f$.cprofl.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationLabels$5$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$5", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-this.f$.aaa.groupRef.setshowSequenceLogo (true);\r
-this.f$.aaa.groupRef.setNormaliseSequenceLogo (this.f$.cprofn.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationLabels$6$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$6", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-this.b$["jalview.appletgui.AnnotationLabels"].av.setShowConsensusHistogram (this.f$.chist.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showConsensusHistogram.setState (this.f$.chist.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationLabels$7$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$7", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo (this.f$.cprof.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showSequenceLogo.setState (this.f$.cprof.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$AnnotationLabels$8$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$8", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo (true);\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.normSequenceLogo.setState (this.f$.cprofn.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].av.setNormaliseSequenceLogo (this.f$.cprofn.getState ());\r
-this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"ADDNEW", "Add New Row",\r
-"EDITNAME", "Edit Label/Description",\r
-"HIDE", "Hide This Row",\r
-"SHOWALL", "Show All Hidden Rows",\r
-"OUTPUT_TEXT", "Show Values In Textbox",\r
-"COPYCONS_SEQ", "Copy Consensus Sequence");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.AnnotationLabels", ["awt2swing.Checkbox", "$.CheckboxMenuItem", "$.Frame", "$.MenuItem", "$.PopupMenu", "jalview.analysis.AlignmentUtils", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.EditNameDialog", "$.PaintRefresher", "$.Tooltip", "jalview.bin.JalviewLite", "jalview.datamodel.AlignmentAnnotation", "$.SequenceGroup", "jalview.util.MessageManager", "$.ParseHtmlBodyAndLinks", "java.awt.Color", "$.Dimension", "$.FlowLayout", "java.awt.event.ItemListener", "java.lang.StringBuffer", "java.util.Arrays", "$.Collections", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.image = null;
+this.active = false;
+this.ap = null;
+this.av = null;
+this.resizing = false;
+this.oldY = 0;
+this.mouseX = 0;
+this.scrollOffset = 0;
+this.selectedRow = -1;
+this.tooltip = null;
+this.hasHiddenRows = false;
+this.resizePanel = false;
+this.dragEvent = null;
+this.dragCancelled = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationLabels", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz.makeConstructor (c$, 
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationLabels, []);
+this.ap = ap;
+this.av = ap.av;
+this.setLayout (null);
+this.addMouseListener (this);
+this.addMouseMotionListener (this);
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.makeConstructor (c$, 
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationLabels, []);
+this.av = av;
+}, "jalview.appletgui.AlignViewport");
+Clazz.defineMethod (c$, "setScrollOffset", 
+function (y, repaint) {
+this.scrollOffset = y;
+if (repaint) {
+this.repaint ();
+}}, "~N,~B");
+Clazz.defineMethod (c$, "getSelectedRow", 
+function (y) {
+var row = -2;
+var aa = this.ap.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return row;
+}var height = 0;
+for (var i = 0; i < aa.length; i++) {
+row = -1;
+if (!aa[i].visible) {
+continue;
+}height += aa[i].height;
+if (y < height) {
+row = i;
+break;
+}}
+return row;
+}, "~N");
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.ADDNEW)) {
+var newAnnotation =  new jalview.datamodel.AlignmentAnnotation ("", null,  new Array (this.ap.av.getAlignment ().getWidth ()));
+if (!this.editLabelDescription (newAnnotation)) {
+return;
+}this.ap.av.getAlignment ().addAnnotation (newAnnotation);
+this.ap.av.getAlignment ().setAnnotationIndex (newAnnotation, 0);
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.EDITNAME)) {
+this.editLabelDescription (aa[this.selectedRow]);
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.HIDE)) {
+aa[this.selectedRow].visible = false;
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.SHOWALL)) {
+for (var i = 0; i < aa.length; i++) {
+aa[i].visible = (aa[i].annotations == null) ? false : true;
+}
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.OUTPUT_TEXT)) {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (false, this.ap.alignFrame);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, this.ap.alignFrame.getTitle () + " - " + aa[this.selectedRow].label, 500, 100);
+cap.setText (aa[this.selectedRow].toString ());
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.COPYCONS_SEQ)) {
+var cons = this.av.getConsensusSeq ();
+if (cons != null) {
+this.copy_annotseqtoclipboard (cons);
+}}this.refresh ();
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "refresh", 
+function () {
+this.ap.annotationPanel.adjustPanelHeight ();
+this.setSize (this.getSize ().width, this.ap.annotationPanel.getSize ().height);
+this.ap.validate ();
+this.ap.paintAlignment (true);
+});
+Clazz.defineMethod (c$, "editLabelDescription", 
+function (annotation) {
+var padGaps =  new awt2swing.Checkbox ("Fill Empty Gaps With \"" + this.ap.av.getGapCharacter () + "\"", annotation.padGaps);
+var dialog =  new jalview.appletgui.EditNameDialog (annotation.label, annotation.description, "      Annotation Label", "Annotation Description", this.ap.alignFrame, "Edit Annotation Name / Description", 500, 180, false);
+var empty =  new awt2swing.Panel ( new java.awt.FlowLayout ());
+empty.add (padGaps);
+dialog.add (empty);
+dialog.pack ();
+dialog.setVisible (true);
+if (dialog.accept) {
+annotation.label = dialog.getName ();
+annotation.description = dialog.getDescription ();
+annotation.setPadGaps (padGaps.getState (), this.av.getGapCharacter ());
+this.repaint ();
+return true;
+} else {
+return false;
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.overrideMethod (c$, "mouseMoved", 
+function (evt) {
+this.resizePanel = evt.getY () < 10 && evt.getX () < 14;
+var row = this.getSelectedRow (evt.getY () + this.scrollOffset);
+if (row > -1) {
+var phb =  new jalview.util.ParseHtmlBodyAndLinks (this.av.getAlignment ().getAlignmentAnnotation ()[row].getDescription (true), true, "\n");
+if (this.tooltip == null) {
+this.tooltip =  new jalview.appletgui.Tooltip (phb.getNonHtmlContent (), this);
+} else {
+this.tooltip.setTip (phb.getNonHtmlContent ());
+}} else if (this.tooltip != null) {
+this.tooltip.setTip ("");
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "cancelDrag", 
+function () {
+this.dragEvent = null;
+this.dragCancelled = true;
+});
+Clazz.overrideMethod (c$, "mouseDragged", 
+function (evt) {
+if (this.dragCancelled) {
+return;
+};this.dragEvent = evt;
+if (this.resizePanel) {
+var d = this.ap.annotationPanelHolder.getSize ();
+var e = this.ap.annotationSpaceFillerHolder.getSize ();
+var f = this.ap.seqPanelHolder.getSize ();
+var dif = evt.getY () - this.oldY;
+dif /= this.ap.av.getCharHeight ();
+dif *= this.ap.av.getCharHeight ();
+if ((d.height - dif) > 20 && (f.height + dif) > 20) {
+this.ap.annotationPanel.setSize (d.width, d.height - dif);
+this.setSize ( new java.awt.Dimension (e.width, d.height - dif));
+this.ap.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, d.height - dif));
+this.ap.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, d.height - dif));
+this.ap.apvscroll.setValues (this.ap.apvscroll.getValue (), d.height - dif, 0, this.av.calcPanelHeight ());
+f.height += dif;
+this.ap.seqPanelHolder.setPreferredSize (f);
+this.ap.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ());
+this.ap.validate ();
+this.ap.addNotify ();
+}} else {
+var diff;
+if ((diff = 6 - evt.getY ()) > 0) {
+this.ap.apvscroll.setValue (this.ap.apvscroll.getValue () - diff);
+this.ap.adjustmentValueChanged (null);
+} else if ((0 < (diff = 6 - this.ap.annotationSpaceFillerHolder.getSize ().height + evt.getY ()))) {
+this.ap.apvscroll.setValue (this.ap.apvscroll.getValue () + diff);
+this.ap.adjustmentValueChanged (null);
+}this.repaint ();
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+if (!this.resizePanel && !this.dragCancelled) {
+var start = this.selectedRow;
+var end = this.getSelectedRow (evt.getY () + this.scrollOffset);
+if (start > -1 && start != end) {
+var startAA = this.ap.av.getAlignment ().getAlignmentAnnotation ()[start];
+if (end == -1) {
+end = this.ap.av.getAlignment ().getAlignmentAnnotation ().length - 1;
+}var endAA = this.ap.av.getAlignment ().getAlignmentAnnotation ()[end];
+this.ap.av.getAlignment ().getAlignmentAnnotation ()[end] = startAA;
+this.ap.av.getAlignment ().getAlignmentAnnotation ()[start] = endAA;
+}}this.resizePanel = false;
+this.dragEvent = null;
+this.dragCancelled = false;
+this.repaint ();
+this.ap.annotationPanel.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (evt) {
+if (evt.getY () < 10 && evt.getX () < 14) {
+this.resizePanel = true;
+this.repaint ();
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (evt) {
+this.dragCancelled = false;
+if (this.dragEvent == null) {
+this.resizePanel = false;
+} else {
+if (!this.resizePanel) {
+this.dragEvent = null;
+}}this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+this.oldY = evt.getY ();
+if (this.resizePanel) {
+return;
+}this.dragCancelled = false;
+this.selectedRow = this.getSelectedRow (evt.getY () + this.scrollOffset);
+var aa = this.ap.av.getAlignment ().getAlignmentAnnotation ();
+if ((evt.getModifiers () & 4) == 4) {
+var popup =  new awt2swing.PopupMenu (jalview.util.MessageManager.getString ("label.annotations"));
+var item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.ADDNEW);
+item.addActionListener (this);
+popup.add (item);
+if (this.selectedRow < 0) {
+if (this.hasHiddenRows) {
+item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.SHOWALL);
+item.addActionListener (this);
+popup.add (item);
+}this.add (popup);
+popup.show (this, evt.getX (), evt.getY ());
+return;
+}item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.EDITNAME);
+item.addActionListener (this);
+popup.add (item);
+item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.HIDE);
+item.addActionListener (this);
+popup.add (item);
+if (this.selectedRow < aa.length) {
+if (aa[this.selectedRow].sequenceRef != null) {
+var label = aa[this.selectedRow].label;
+var hideType =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.hide_all") + " " + label);
+hideType.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$1") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$1, this, Clazz.cloneFinals ("label", label))));
+popup.add (hideType);
+}}if (this.hasHiddenRows) {
+item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.SHOWALL);
+item.addActionListener (this);
+popup.add (item);
+}this.add (popup);
+item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.OUTPUT_TEXT);
+item.addActionListener (this);
+popup.add (item);
+if (this.selectedRow < aa.length) {
+if (aa[this.selectedRow].autoCalculated) {
+if (aa[this.selectedRow].label.indexOf ("Consensus") > -1) {
+popup.addSeparator ();
+var cbmi =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.ignore_gaps_consensus"), (aa[this.selectedRow].groupRef != null) ? aa[this.selectedRow].groupRef.getIgnoreGapsConsensus () : this.ap.av.isIgnoreGapsConsensus ());
+var aaa = aa[this.selectedRow];
+cbmi.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$2") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$2, this, Clazz.cloneFinals ("aaa", aaa, "cbmi", cbmi))));
+popup.add (cbmi);
+if (aaa.groupRef != null) {
+var chist =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_group_histogram"), aa[this.selectedRow].groupRef.isShowConsensusHistogram ());
+chist.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$3") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$3, this, Clazz.cloneFinals ("aaa", aaa, "chist", chist))));
+popup.add (chist);
+var cprofl =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_group_logo"), aa[this.selectedRow].groupRef.isShowSequenceLogo ());
+cprofl.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$4") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$4$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$4, this, Clazz.cloneFinals ("aaa", aaa, "cprofl", cprofl))));
+popup.add (cprofl);
+var cprofn =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.normalise_group_logo"), aa[this.selectedRow].groupRef.isNormaliseSequenceLogo ());
+cprofn.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$5") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$5$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$5, this, Clazz.cloneFinals ("aaa", aaa, "cprofn", cprofn))));
+popup.add (cprofn);
+} else {
+var chist =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_histogram"), this.av.isShowConsensusHistogram ());
+chist.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$6") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$6$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$6, this, Clazz.cloneFinals ("chist", chist))));
+popup.add (chist);
+var cprof =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_logo"), this.av.isShowSequenceLogo ());
+cprof.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$7") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$7$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$7, this, Clazz.cloneFinals ("cprof", cprof))));
+popup.add (cprof);
+var cprofn =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.normalise_logo"), this.av.isNormaliseSequenceLogo ());
+cprofn.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.AnnotationLabels$8") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$8$ ()), Clazz.innerTypeInstance (jalview.appletgui.AnnotationLabels$8, this, Clazz.cloneFinals ("cprofn", cprofn))));
+popup.add (cprofn);
+}item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.COPYCONS_SEQ);
+item.addActionListener (this);
+popup.add (item);
+}}}popup.show (this, evt.getX (), evt.getY ());
+} else {
+if (this.selectedRow > -1 && this.selectedRow < aa.length) {
+if (aa[this.selectedRow].groupRef != null) {
+if (evt.getClickCount () >= 2) {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (null);
+this.ap.av.setSelectionGroup (aa[this.selectedRow].groupRef);
+this.ap.av.sendSelection ();
+this.ap.paintAlignment (false);
+jalview.appletgui.PaintRefresher.Refresh (this.ap, this.ap.av.getSequenceSetId ());
+} else {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (aa[this.selectedRow].groupRef.getSequences (null));
+}return;
+} else if (aa[this.selectedRow].sequenceRef != null) {
+if (evt.getClickCount () == 1) {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (java.util.Arrays.asList ( Clazz.newArray (-1, [aa[this.selectedRow].sequenceRef])));
+} else if (evt.getClickCount () >= 2) {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (null);
+var sg = this.ap.av.getSelectionGroup ();
+if (sg != null) {
+if (!(evt.isControlDown () || evt.isShiftDown ())) {
+sg =  new jalview.datamodel.SequenceGroup (sg);
+sg.clear ();
+sg.addSequence (aa[this.selectedRow].sequenceRef, false);
+} else {
+if (evt.isControlDown ()) {
+sg.addOrRemove (aa[this.selectedRow].sequenceRef, true);
+} else {
+sg.addSequence (aa[this.selectedRow].sequenceRef, true);
+}}} else {
+sg =  new jalview.datamodel.SequenceGroup ();
+sg.setStartRes (0);
+sg.setEndRes (this.ap.av.getAlignment ().getWidth () - 1);
+sg.addSequence (aa[this.selectedRow].sequenceRef, false);
+}this.ap.av.setSelectionGroup (sg);
+this.ap.paintAlignment (false);
+jalview.appletgui.PaintRefresher.Refresh (this.ap, this.ap.av.getSequenceSetId ());
+this.ap.av.sendSelection ();
+}}}}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "copy_annotseqtoclipboard", 
+function (sq) {
+if (sq == null || sq.getLength () < 1) {
+return;
+}jalview.appletgui.AlignFrame.copiedSequences =  new StringBuffer ();
+jalview.appletgui.AlignFrame.copiedSequences.append (sq.getName () + "\t" + sq.getStart () + "\t" + sq.getEnd () + "\t" + sq.getSequenceAsString () + "\n");
+if (this.av.hasHiddenColumns ()) {
+jalview.appletgui.AlignFrame.copiedHiddenColumns =  new java.util.Vector ();
+for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
+jalview.appletgui.AlignFrame.copiedHiddenColumns.addElement ( Clazz.newIntArray (-1, [region[0], region[1]]));
+}
+}}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "paintComponent", 
+function (g) {
+if (this.av.getWrapAlignment () || !this.av.isShowAnnotation ()) return;
+var w = this.getSize ().width;
+var h = this.getSize ().height;
+if (this.image == null || w != this.image.getWidth (this) || h != this.image.getHeight (this)) {
+this.image = this.createImage (w, this.ap.annotationPanel.getSize ().height);
+}this.drawComponent (this.image.getGraphics (), w);
+g.drawImage (this.image, 0, 0, this);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "drawComponent", 
+function (g, width) {
+g.setFont (this.av.getFont ());
+var fm = g.getFontMetrics (this.av.getFont ());
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+g.translate (0, -this.scrollOffset);
+g.setColor (java.awt.Color.black);
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+var y = 0;
+var fy = g.getFont ().getSize ();
+var x = 0;
+var offset;
+if (aa != null) {
+this.hasHiddenRows = false;
+for (var i = 0; i < aa.length; i++) {
+if (!aa[i].visible) {
+this.hasHiddenRows = true;
+continue;
+}x = width - fm.stringWidth (aa[i].label) - 3;
+y += aa[i].height;
+offset = Clazz.doubleToInt (-(aa[i].height - fy) / 2);
+g.drawString (aa[i].label, x, y + offset);
+}
+}g.translate (0, +this.scrollOffset);
+if (this.resizePanel) {
+g.setColor (java.awt.Color.red);
+g.setPaintMode ();
+g.drawLine (2, 8, 5, 2);
+g.drawLine (5, 2, 8, 8);
+} else if (!this.dragCancelled && this.dragEvent != null && aa != null) {
+g.setColor (java.awt.Color.lightGray);
+g.drawString (aa[this.selectedRow].label, this.dragEvent.getX (), this.dragEvent.getY ());
+}if (!this.av.getWrapAlignment () && ((aa == null) || (aa.length < 1))) {
+g.setColor (java.awt.Color.black);
+g.drawString (jalview.util.MessageManager.getString ("label.right_click"), 2, 8);
+g.drawString (jalview.util.MessageManager.getString ("label.to_add_annotation"), 2, 18);
+}}, "java.awt.Graphics,~N");
+c$.$AnnotationLabels$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$1", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+jalview.analysis.AlignmentUtils.showOrHideSequenceAnnotations (this.b$["jalview.appletgui.AnnotationLabels"].ap.av.getAlignment (), java.util.Collections.singleton (this.f$.label), null, false, false);
+this.b$["jalview.appletgui.AnnotationLabels"].refresh ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$2", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+if (this.f$.aaa.groupRef != null) {
+this.f$.aaa.groupRef.setIgnoreGapsConsensus (this.f$.cbmi.getState ());
+} else {
+this.b$["jalview.appletgui.AnnotationLabels"].ap.av.setIgnoreGapsConsensus (this.f$.cbmi.getState (), this.b$["jalview.appletgui.AnnotationLabels"].ap);
+}this.b$["jalview.appletgui.AnnotationLabels"].ap.paintAlignment (true);
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$3", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.f$.aaa.groupRef.setShowConsensusHistogram (this.f$.chist.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$4$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$4", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.f$.aaa.groupRef.setshowSequenceLogo (this.f$.cprofl.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$5$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$5", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.f$.aaa.groupRef.setshowSequenceLogo (true);
+this.f$.aaa.groupRef.setNormaliseSequenceLogo (this.f$.cprofn.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$6$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$6", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.b$["jalview.appletgui.AnnotationLabels"].av.setShowConsensusHistogram (this.f$.chist.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showConsensusHistogram.setState (this.f$.chist.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$7$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$7", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo (this.f$.cprof.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showSequenceLogo.setState (this.f$.cprof.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$AnnotationLabels$8$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "AnnotationLabels$8", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo (true);
+this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.normSequenceLogo.setState (this.f$.cprofn.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].av.setNormaliseSequenceLogo (this.f$.cprofn.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"ADDNEW", "Add New Row",
+"EDITNAME", "Edit Label/Description",
+"HIDE", "Hide This Row",
+"SHOWALL", "Show All Hidden Rows",
+"OUTPUT_TEXT", "Show Values In Textbox",
+"COPYCONS_SEQ", "Copy Consensus Sequence");
+});
index ec1d4ce..8d48e90 100644 (file)
Binary files a/bin/jalview/appletgui/AnnotationPanel.class and b/bin/jalview/appletgui/AnnotationPanel.class differ
index 33f7259..6234bd3 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "jalview.renderer.AwtRenderPanelI", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.MouseListener", "$.MouseMotionListener", "java.awt.Color"], "jalview.appletgui.AnnotationPanel", ["awt2swing.MenuItem", "$.PopupMenu", "jalview.appletgui.EditNameDialog", "$.UserDefinedColours", "jalview.datamodel.Annotation", "jalview.renderer.AnnotationRenderer", "jalview.util.MessageManager", "$.Platform", "java.awt.Dimension", "java.lang.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.av = null;\r
-this.ap = null;\r
-this.activeRow = -1;\r
-this.HELIX = "Helix";\r
-this.SHEET = "Sheet";\r
-this.STEM = "RNA Helix";\r
-this.LABEL = "Label";\r
-this.REMOVE = "Remove Annotation";\r
-this.COLOUR = "Colour";\r
-this.HELIX_COLOUR = null;\r
-this.SHEET_COLOUR = null;\r
-this.image = null;\r
-this.gg = null;\r
-this.fm = null;\r
-this.imgWidth = 0;\r
-this.$fastPaint = false;\r
-this.graphStretch = -1;\r
-this.graphStretchY = -1;\r
-this.mouseDragging = false;\r
-this.MAC = false;\r
-this.renderer = null;\r
-this.needValidating = false;\r
-this.scrollOffset = 0;\r
-this.$bounds = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "AnnotationPanel", awt2swing.Panel, [jalview.renderer.AwtRenderPanelI, java.awt.event.AdjustmentListener, java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);\r
-Clazz.prepareFields (c$, function () {\r
-this.HELIX_COLOUR = java.awt.Color.red.darker ();\r
-this.SHEET_COLOUR = java.awt.Color.green.darker ().darker ();\r
-this.$bounds =  Clazz.newIntArray (2, 0);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationPanel, []);\r
-this.MAC = jalview.util.Platform.isAMac ();\r
-this.ap = ap;\r
-this.av = ap.av;\r
-this.setLayout (null);\r
-var height = this.adjustPanelHeight ();\r
-ap.apvscroll.setValues (0, this.getSize ().height, 0, height);\r
-this.addMouseMotionListener (this);\r
-this.addMouseListener (this);\r
-this.renderer =  new jalview.renderer.AnnotationRenderer ();\r
-}, "jalview.appletgui.AlignmentPanel");\r
-Clazz.makeConstructor (c$, \r
-function (av) {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationPanel, []);\r
-this.av = av;\r
-this.renderer =  new jalview.renderer.AnnotationRenderer ();\r
-}, "jalview.appletgui.AlignViewport");\r
-Clazz.overrideMethod (c$, "adjustmentValueChanged", \r
-function (evt) {\r
-}, "java.awt.event.AdjustmentEvent");\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-var aa = this.av.getAlignment ().getAlignmentAnnotation ();\r
-if (aa == null) {\r
-return;\r
-}var anot = aa[this.activeRow].annotations;\r
-if (anot.length < this.av.getColumnSelection ().getMax ()) {\r
-var temp =  new Array (this.av.getColumnSelection ().getMax () + 2);\r
-System.arraycopy (anot, 0, temp, 0, anot.length);\r
-anot = temp;\r
-aa[this.activeRow].annotations = anot;\r
-}var label = "";\r
-if (this.av.getColumnSelection () != null && this.av.getColumnSelection ().size () > 0 && anot[this.av.getColumnSelection ().getMin ()] != null) {\r
-label = anot[this.av.getColumnSelection ().getMin ()].displayCharacter;\r
-}if (evt.getActionCommand ().equals ("Remove Annotation")) {\r
-for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {\r
-anot[this.av.getColumnSelection ().columnAt (i)] = null;\r
-}\r
-} else if (evt.getActionCommand ().equals ("Label")) {\r
-label = this.enterLabel (label, "Enter Label");\r
-if (label == null) {\r
-return;\r
-}if ((label.length > 0) && !aa[this.activeRow].hasText) {\r
-aa[this.activeRow].hasText = true;\r
-}for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {\r
-var index = this.av.getColumnSelection ().columnAt (i);\r
-if (!this.av.getColumnSelection ().isVisible (index)) {\r
-continue;\r
-}if (anot[index] == null) {\r
-anot[index] =  new jalview.datamodel.Annotation (label, "", ' ', 0);\r
-}anot[index].displayCharacter = label;\r
-}\r
-} else if (evt.getActionCommand ().equals ("Colour")) {\r
-var udc =  new jalview.appletgui.UserDefinedColours (this, java.awt.Color.black, this.ap.alignFrame);\r
-var col = udc.getColor ();\r
-for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {\r
-var index = this.av.getColumnSelection ().columnAt (i);\r
-if (!this.av.getColumnSelection ().isVisible (index)) {\r
-continue;\r
-}if (anot[index] == null) {\r
-anot[index] =  new jalview.datamodel.Annotation ("", "", ' ', 0);\r
-}anot[index].colour = col;\r
-}\r
-} else {\r
-var type = String.fromCharCode (0);\r
-var symbol = "\u03B1";\r
-if (evt.getActionCommand ().equals ("Helix")) {\r
-type = 'H';\r
-} else if (evt.getActionCommand ().equals ("Sheet")) {\r
-type = 'E';\r
-symbol = "\u03B2";\r
-} else if (evt.getActionCommand ().equals ("RNA Helix")) {\r
-type = 'S';\r
-symbol = "\u03C3";\r
-}if (!aa[this.activeRow].hasIcons) {\r
-aa[this.activeRow].hasIcons = true;\r
-}label = this.enterLabel (symbol, "Enter Label");\r
-if (label == null) {\r
-return;\r
-}if ((label.length > 0) && !aa[this.activeRow].hasText) {\r
-aa[this.activeRow].hasText = true;\r
-if (evt.getActionCommand ().equals ("RNA Helix")) {\r
-aa[this.activeRow].showAllColLabels = true;\r
-}}for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {\r
-var index = this.av.getColumnSelection ().columnAt (i);\r
-if (!this.av.getColumnSelection ().isVisible (index)) {\r
-continue;\r
-}if (anot[index] == null) {\r
-anot[index] =  new jalview.datamodel.Annotation (label, "", type, 0);\r
-}anot[index].secondaryStructure = type != 'S' ? type : label.length == 0 ? ' ' : label.charAt (0);\r
-anot[index].displayCharacter = label;\r
-}\r
-}this.av.getAlignment ().validateAnnotation (aa[this.activeRow]);\r
-this.ap.alignmentChanged ();\r
-this.adjustPanelHeight ();\r
-this.repaint ();\r
-return;\r
-}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "enterLabel", \r
-function (text, label) {\r
-var dialog =  new jalview.appletgui.EditNameDialog (text, null, label, null, this.ap.alignFrame, "Enter Label", 400, 200, true);\r
-if (dialog.accept) {\r
-return dialog.getName ();\r
-} else {\r
-return null;\r
-}}, "~S,~S");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-var aa = this.av.getAlignment ().getAlignmentAnnotation ();\r
-if (aa == null) {\r
-return;\r
-}var height = -this.scrollOffset;\r
-this.activeRow = -1;\r
-for (var i = 0; i < aa.length; i++) {\r
-if (aa[i].visible) {\r
-height += aa[i].height;\r
-}if (evt.getY () < height) {\r
-if (aa[i].editable) {\r
-this.activeRow = i;\r
-} else if (aa[i].graph > 0) {\r
-this.graphStretch = i;\r
-this.graphStretchY = evt.getY ();\r
-}break;\r
-}}\r
-if ((evt.getModifiers () & 4) == 4 && this.activeRow != -1) {\r
-if (this.av.getColumnSelection () == null) {\r
-return;\r
-}var pop =  new awt2swing.PopupMenu (jalview.util.MessageManager.getString ("label.structure_type"));\r
-var item;\r
-if (this.av.getAlignment ().isNucleotide () == true) {\r
-item =  new awt2swing.MenuItem ("RNA Helix");\r
-item.addActionListener (this);\r
-pop.add (item);\r
-} else {\r
-item =  new awt2swing.MenuItem ("Helix");\r
-item.addActionListener (this);\r
-pop.add (item);\r
-item =  new awt2swing.MenuItem ("Sheet");\r
-item.addActionListener (this);\r
-pop.add (item);\r
-}item =  new awt2swing.MenuItem ("Label");\r
-item.addActionListener (this);\r
-pop.add (item);\r
-item =  new awt2swing.MenuItem ("Colour");\r
-item.addActionListener (this);\r
-pop.add (item);\r
-item =  new awt2swing.MenuItem ("Remove Annotation");\r
-item.addActionListener (this);\r
-pop.add (item);\r
-this.ap.alignFrame.add (pop);\r
-pop.show (this, evt.getX (), evt.getY ());\r
-return;\r
-}this.ap.scalePanel.mousePressed (evt);\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-this.graphStretch = -1;\r
-this.graphStretchY = -1;\r
-this.mouseDragging = false;\r
-if (this.needValidating) {\r
-this.ap.validate ();\r
-this.needValidating = false;\r
-}this.ap.scalePanel.mouseReleased (evt);\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseDragged", \r
-function (evt) {\r
-if (this.graphStretch > -1) {\r
-this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight += this.graphStretchY - evt.getY ();\r
-if (this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight < 0) {\r
-this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight = 0;\r
-}this.graphStretchY = evt.getY ();\r
-this.av.calcPanelHeight ();\r
-this.needValidating = true;\r
-this.ap.paintAlignment (true);\r
-} else {\r
-this.ap.scalePanel.mouseDragged (evt);\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseMoved", \r
-function (evt) {\r
-var aa = this.av.getAlignment ().getAlignmentAnnotation ();\r
-if (aa == null) {\r
-return;\r
-}var row = -1;\r
-var height = -this.scrollOffset;\r
-for (var i = 0; i < aa.length; i++) {\r
-if (aa[i].visible) {\r
-height += aa[i].height;\r
-}if (evt.getY () < height) {\r
-row = i;\r
-break;\r
-}}\r
-var res = Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ()) + this.av.getStartRes ();\r
-if (this.av.hasHiddenColumns ()) {\r
-res = this.av.getColumnSelection ().adjustForHiddenColumns (res);\r
-}if (row > -1 && res < aa[row].annotations.length && aa[row].annotations[res] != null) {\r
-var text =  new StringBuffer ("Sequence position " + (res + 1));\r
-if (aa[row].annotations[res].description != null) {\r
-text.append ("  " + aa[row].annotations[res].description);\r
-}this.ap.alignFrame.setStatus (text.toString ());\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (evt) {\r
-this.ap.scalePanel.mouseEntered (evt);\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (evt) {\r
-this.ap.scalePanel.mouseExited (evt);\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "adjustPanelHeight", \r
-function () {\r
-return this.adjustPanelHeight (true);\r
-});\r
-Clazz.defineMethod (c$, "adjustPanelHeight", \r
-function (repaint) {\r
-var height = this.av.calcPanelHeight ();\r
-this.setSize ( new java.awt.Dimension (this.getSize ().width, height));\r
-if (repaint) {\r
-this.repaint ();\r
-}return height;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "addEditableColumn", \r
-function (i) {\r
-if (this.activeRow == -1) {\r
-var aa = this.av.getAlignment ().getAlignmentAnnotation ();\r
-if (aa == null) {\r
-return;\r
-}for (var j = 0; j < aa.length; j++) {\r
-if (aa[j].editable) {\r
-this.activeRow = j;\r
-break;\r
-}}\r
-}}, "~N");\r
-Clazz.overrideMethod (c$, "paintComponent", \r
-function (g) {\r
-if (this.av.getWrapAlignment () || !this.av.isShowAnnotation ()) return;\r
-var d = this.getSize ();\r
-this.imgWidth = d.width;\r
-if (this.imgWidth < 1 || d.height < 1) {\r
-return;\r
-}if (this.image == null || this.imgWidth != this.image.getWidth (this) || d.height != this.image.getHeight (this)) {\r
-this.image = this.createImage (this.imgWidth, d.height);\r
-this.gg = this.image.getGraphics ();\r
-this.gg.setFont (this.av.getFont ());\r
-this.fm = this.gg.getFontMetrics ();\r
-this.$fastPaint = false;\r
-}if (this.$fastPaint) {\r
-g.drawImage (this.image, 0, 0, this);\r
-this.$fastPaint = false;\r
-return;\r
-}this.gg.setColor (java.awt.Color.white);\r
-this.gg.fillRect (0, 0, this.getSize ().width, this.getSize ().height);\r
-this.drawComponent (this.gg, this.av.startRes, this.av.endRes + 1);\r
-g.drawImage (this.image, 0, 0, this);\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "fastPaint", \r
-function (horizontal) {\r
-if (horizontal == 0 || this.av.getAlignment ().getAlignmentAnnotation () == null || this.av.getAlignment ().getAlignmentAnnotation ().length < 1) {\r
-this.repaint ();\r
-return;\r
-}this.gg.copyArea (0, 0, this.imgWidth, this.getSize ().height, -horizontal * this.av.getCharWidth (), 0);\r
-var sr = this.av.startRes;\r
-var er = this.av.endRes + 1;\r
-var transX = 0;\r
-if (horizontal > 0) {\r
-transX = (er - sr - horizontal) * this.av.getCharWidth ();\r
-sr = er - horizontal;\r
-} else if (horizontal < 0) {\r
-er = sr - horizontal;\r
-}this.gg.translate (transX, 0);\r
-this.drawComponent (this.gg, sr, er);\r
-this.gg.translate (-transX, 0);\r
-this.$fastPaint = true;\r
-this.repaint ();\r
-}, "~N");\r
-Clazz.defineMethod (c$, "drawComponent", \r
-function (g, startRes, endRes) {\r
-var ofont = this.av.getFont ();\r
-g.setFont (ofont);\r
-g.setColor (java.awt.Color.white);\r
-g.fillRect (0, 0, (endRes - startRes) * this.av.getCharWidth (), this.getSize ().height);\r
-if (this.fm == null) {\r
-this.fm = g.getFontMetrics ();\r
-}if ((this.av.getAlignment ().getAlignmentAnnotation () == null) || (this.av.getAlignment ().getAlignmentAnnotation ().length < 1)) {\r
-g.setColor (java.awt.Color.white);\r
-g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);\r
-g.setColor (java.awt.Color.black);\r
-if (this.av.validCharWidth) {\r
-g.drawString (jalview.util.MessageManager.getString ("label.alignment_has_no_annotations"), 20, 15);\r
-}return;\r
-}g.translate (0, -this.scrollOffset);\r
-this.renderer.drawComponent (this, this.av, g, this.activeRow, startRes, endRes);\r
-g.translate (0, +this.scrollOffset);\r
-}, "java.awt.Graphics,~N,~N");\r
-Clazz.defineMethod (c$, "setScrollOffset", \r
-function (value, repaint) {\r
-this.scrollOffset = value;\r
-if (repaint) {\r
-this.repaint ();\r
-}}, "~N,~B");\r
-Clazz.defineMethod (c$, "getFontMetrics", \r
-function () {\r
-return this.fm;\r
-});\r
-Clazz.overrideMethod (c$, "getFadedImage", \r
-function () {\r
-return this.image;\r
-});\r
-Clazz.overrideMethod (c$, "getFadedImageWidth", \r
-function () {\r
-return this.imgWidth;\r
-});\r
-Clazz.overrideMethod (c$, "getVisibleVRange", \r
-function () {\r
-if (this.ap != null && this.ap.alabels != null) {\r
-var sOffset = -this.ap.alabels.scrollOffset;\r
-var visHeight = sOffset + this.ap.annotationPanelHolder.getHeight ();\r
-this.$bounds[0] = sOffset;\r
-this.$bounds[1] = visHeight;\r
-return this.$bounds;\r
-} else {\r
-return null;\r
-}});\r
-Clazz.defineStatics (c$,\r
-"GRAPH_HEIGHT", 40);\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "jalview.renderer.AwtRenderPanelI", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.MouseListener", "$.MouseMotionListener", "java.awt.Color"], "jalview.appletgui.AnnotationPanel", ["awt2swing.MenuItem", "$.PopupMenu", "jalview.appletgui.EditNameDialog", "$.UserDefinedColours", "jalview.datamodel.Annotation", "jalview.renderer.AnnotationRenderer", "jalview.util.MessageManager", "$.Platform", "java.awt.Dimension", "java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.av = null;
+this.ap = null;
+this.activeRow = -1;
+this.HELIX = "Helix";
+this.SHEET = "Sheet";
+this.STEM = "RNA Helix";
+this.LABEL = "Label";
+this.REMOVE = "Remove Annotation";
+this.COLOUR = "Colour";
+this.HELIX_COLOUR = null;
+this.SHEET_COLOUR = null;
+this.image = null;
+this.gg = null;
+this.fm = null;
+this.imgWidth = 0;
+this.$fastPaint = false;
+this.graphStretch = -1;
+this.graphStretchY = -1;
+this.mouseDragging = false;
+this.MAC = false;
+this.renderer = null;
+this.needValidating = false;
+this.scrollOffset = 0;
+this.$bounds = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationPanel", awt2swing.Panel, [jalview.renderer.AwtRenderPanelI, java.awt.event.AdjustmentListener, java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz.prepareFields (c$, function () {
+this.HELIX_COLOUR = java.awt.Color.red.darker ();
+this.SHEET_COLOUR = java.awt.Color.green.darker ().darker ();
+this.$bounds =  Clazz.newIntArray (2, 0);
+});
+Clazz.makeConstructor (c$, 
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationPanel, []);
+this.MAC = jalview.util.Platform.isAMac ();
+this.ap = ap;
+this.av = ap.av;
+this.setLayout (null);
+var height = this.adjustPanelHeight ();
+ap.apvscroll.setValues (0, this.getSize ().height, 0, height);
+this.addMouseMotionListener (this);
+this.addMouseListener (this);
+this.renderer =  new jalview.renderer.AnnotationRenderer ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.makeConstructor (c$, 
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationPanel, []);
+this.av = av;
+this.renderer =  new jalview.renderer.AnnotationRenderer ();
+}, "jalview.appletgui.AlignViewport");
+Clazz.overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+}, "java.awt.event.AdjustmentEvent");
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return;
+}var anot = aa[this.activeRow].annotations;
+if (anot.length < this.av.getColumnSelection ().getMax ()) {
+var temp =  new Array (this.av.getColumnSelection ().getMax () + 2);
+System.arraycopy (anot, 0, temp, 0, anot.length);
+anot = temp;
+aa[this.activeRow].annotations = anot;
+}var label = "";
+if (this.av.getColumnSelection () != null && this.av.getColumnSelection ().size () > 0 && anot[this.av.getColumnSelection ().getMin ()] != null) {
+label = anot[this.av.getColumnSelection ().getMin ()].displayCharacter;
+}if (evt.getActionCommand ().equals ("Remove Annotation")) {
+for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
+anot[this.av.getColumnSelection ().columnAt (i)] = null;
+}
+} else if (evt.getActionCommand ().equals ("Label")) {
+label = this.enterLabel (label, "Enter Label");
+if (label == null) {
+return;
+}if ((label.length > 0) && !aa[this.activeRow].hasText) {
+aa[this.activeRow].hasText = true;
+}for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
+var index = this.av.getColumnSelection ().columnAt (i);
+if (!this.av.getColumnSelection ().isVisible (index)) {
+continue;
+}if (anot[index] == null) {
+anot[index] =  new jalview.datamodel.Annotation (label, "", ' ', 0);
+}anot[index].displayCharacter = label;
+}
+} else if (evt.getActionCommand ().equals ("Colour")) {
+var udc =  new jalview.appletgui.UserDefinedColours (this, java.awt.Color.black, this.ap.alignFrame);
+var col = udc.getColor ();
+for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
+var index = this.av.getColumnSelection ().columnAt (i);
+if (!this.av.getColumnSelection ().isVisible (index)) {
+continue;
+}if (anot[index] == null) {
+anot[index] =  new jalview.datamodel.Annotation ("", "", ' ', 0);
+}anot[index].colour = col;
+}
+} else {
+var type = String.fromCharCode (0);
+var symbol = "\u03B1";
+if (evt.getActionCommand ().equals ("Helix")) {
+type = 'H';
+} else if (evt.getActionCommand ().equals ("Sheet")) {
+type = 'E';
+symbol = "\u03B2";
+} else if (evt.getActionCommand ().equals ("RNA Helix")) {
+type = 'S';
+symbol = "\u03C3";
+}if (!aa[this.activeRow].hasIcons) {
+aa[this.activeRow].hasIcons = true;
+}label = this.enterLabel (symbol, "Enter Label");
+if (label == null) {
+return;
+}if ((label.length > 0) && !aa[this.activeRow].hasText) {
+aa[this.activeRow].hasText = true;
+if (evt.getActionCommand ().equals ("RNA Helix")) {
+aa[this.activeRow].showAllColLabels = true;
+}}for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
+var index = this.av.getColumnSelection ().columnAt (i);
+if (!this.av.getColumnSelection ().isVisible (index)) {
+continue;
+}if (anot[index] == null) {
+anot[index] =  new jalview.datamodel.Annotation (label, "", type, 0);
+}anot[index].secondaryStructure = type != 'S' ? type : label.length == 0 ? ' ' : label.charAt (0);
+anot[index].displayCharacter = label;
+}
+}this.av.getAlignment ().validateAnnotation (aa[this.activeRow]);
+this.ap.alignmentChanged ();
+this.adjustPanelHeight ();
+this.repaint ();
+return;
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "enterLabel", 
+function (text, label) {
+var dialog =  new jalview.appletgui.EditNameDialog (text, null, label, null, this.ap.alignFrame, "Enter Label", 400, 200, true);
+if (dialog.accept) {
+return dialog.getName ();
+} else {
+return null;
+}}, "~S,~S");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return;
+}var height = -this.scrollOffset;
+this.activeRow = -1;
+for (var i = 0; i < aa.length; i++) {
+if (aa[i].visible) {
+height += aa[i].height;
+}if (evt.getY () < height) {
+if (aa[i].editable) {
+this.activeRow = i;
+} else if (aa[i].graph > 0) {
+this.graphStretch = i;
+this.graphStretchY = evt.getY ();
+}break;
+}}
+if ((evt.getModifiers () & 4) == 4 && this.activeRow != -1) {
+if (this.av.getColumnSelection () == null) {
+return;
+}var pop =  new awt2swing.PopupMenu (jalview.util.MessageManager.getString ("label.structure_type"));
+var item;
+if (this.av.getAlignment ().isNucleotide () == true) {
+item =  new awt2swing.MenuItem ("RNA Helix");
+item.addActionListener (this);
+pop.add (item);
+} else {
+item =  new awt2swing.MenuItem ("Helix");
+item.addActionListener (this);
+pop.add (item);
+item =  new awt2swing.MenuItem ("Sheet");
+item.addActionListener (this);
+pop.add (item);
+}item =  new awt2swing.MenuItem ("Label");
+item.addActionListener (this);
+pop.add (item);
+item =  new awt2swing.MenuItem ("Colour");
+item.addActionListener (this);
+pop.add (item);
+item =  new awt2swing.MenuItem ("Remove Annotation");
+item.addActionListener (this);
+pop.add (item);
+this.ap.alignFrame.add (pop);
+pop.show (this, evt.getX (), evt.getY ());
+return;
+}this.ap.scalePanel.mousePressed (evt);
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.graphStretch = -1;
+this.graphStretchY = -1;
+this.mouseDragging = false;
+if (this.needValidating) {
+this.ap.validate ();
+this.needValidating = false;
+}this.ap.scalePanel.mouseReleased (evt);
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged", 
+function (evt) {
+if (this.graphStretch > -1) {
+this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight += this.graphStretchY - evt.getY ();
+if (this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight < 0) {
+this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight = 0;
+}this.graphStretchY = evt.getY ();
+this.av.calcPanelHeight ();
+this.needValidating = true;
+this.ap.paintAlignment (true);
+} else {
+this.ap.scalePanel.mouseDragged (evt);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved", 
+function (evt) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return;
+}var row = -1;
+var height = -this.scrollOffset;
+for (var i = 0; i < aa.length; i++) {
+if (aa[i].visible) {
+height += aa[i].height;
+}if (evt.getY () < height) {
+row = i;
+break;
+}}
+var res = Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ()) + this.av.getStartRes ();
+if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+}if (row > -1 && res < aa[row].annotations.length && aa[row].annotations[res] != null) {
+var text =  new StringBuffer ("Sequence position " + (res + 1));
+if (aa[row].annotations[res].description != null) {
+text.append ("  " + aa[row].annotations[res].description);
+}this.ap.alignFrame.setStatus (text.toString ());
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (evt) {
+this.ap.scalePanel.mouseEntered (evt);
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (evt) {
+this.ap.scalePanel.mouseExited (evt);
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "adjustPanelHeight", 
+function () {
+return this.adjustPanelHeight (true);
+});
+Clazz.defineMethod (c$, "adjustPanelHeight", 
+function (repaint) {
+var height = this.av.calcPanelHeight ();
+this.setSize ( new java.awt.Dimension (this.getSize ().width, height));
+if (repaint) {
+this.repaint ();
+}return height;
+}, "~B");
+Clazz.defineMethod (c$, "addEditableColumn", 
+function (i) {
+if (this.activeRow == -1) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return;
+}for (var j = 0; j < aa.length; j++) {
+if (aa[j].editable) {
+this.activeRow = j;
+break;
+}}
+}}, "~N");
+Clazz.overrideMethod (c$, "paintComponent", 
+function (g) {
+if (this.av.getWrapAlignment () || !this.av.isShowAnnotation ()) return;
+var d = this.getSize ();
+this.imgWidth = d.width;
+if (this.imgWidth < 1 || d.height < 1) {
+return;
+}if (this.image == null || this.imgWidth != this.image.getWidth (this) || d.height != this.image.getHeight (this)) {
+this.image = this.createImage (this.imgWidth, d.height);
+this.gg = this.image.getGraphics ();
+this.gg.setFont (this.av.getFont ());
+this.fm = this.gg.getFontMetrics ();
+this.$fastPaint = false;
+}if (this.$fastPaint) {
+g.drawImage (this.image, 0, 0, this);
+this.$fastPaint = false;
+return;
+}this.gg.setColor (java.awt.Color.white);
+this.gg.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+this.drawComponent (this.gg, this.av.startRes, this.av.endRes + 1);
+g.drawImage (this.image, 0, 0, this);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "fastPaint", 
+function (horizontal) {
+if (horizontal == 0 || this.av.getAlignment ().getAlignmentAnnotation () == null || this.av.getAlignment ().getAlignmentAnnotation ().length < 1) {
+this.repaint ();
+return;
+}this.gg.copyArea (0, 0, this.imgWidth, this.getSize ().height, -horizontal * this.av.getCharWidth (), 0);
+var sr = this.av.startRes;
+var er = this.av.endRes + 1;
+var transX = 0;
+if (horizontal > 0) {
+transX = (er - sr - horizontal) * this.av.getCharWidth ();
+sr = er - horizontal;
+} else if (horizontal < 0) {
+er = sr - horizontal;
+}this.gg.translate (transX, 0);
+this.drawComponent (this.gg, sr, er);
+this.gg.translate (-transX, 0);
+this.$fastPaint = true;
+this.repaint ();
+}, "~N");
+Clazz.defineMethod (c$, "drawComponent", 
+function (g, startRes, endRes) {
+var ofont = this.av.getFont ();
+g.setFont (ofont);
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, (endRes - startRes) * this.av.getCharWidth (), this.getSize ().height);
+if (this.fm == null) {
+this.fm = g.getFontMetrics ();
+}if ((this.av.getAlignment ().getAlignmentAnnotation () == null) || (this.av.getAlignment ().getAlignmentAnnotation ().length < 1)) {
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+g.setColor (java.awt.Color.black);
+if (this.av.validCharWidth) {
+g.drawString (jalview.util.MessageManager.getString ("label.alignment_has_no_annotations"), 20, 15);
+}return;
+}g.translate (0, -this.scrollOffset);
+this.renderer.drawComponent (this, this.av, g, this.activeRow, startRes, endRes);
+g.translate (0, +this.scrollOffset);
+}, "java.awt.Graphics,~N,~N");
+Clazz.defineMethod (c$, "setScrollOffset", 
+function (value, repaint) {
+this.scrollOffset = value;
+if (repaint) {
+this.repaint ();
+}}, "~N,~B");
+Clazz.defineMethod (c$, "getFontMetrics", 
+function () {
+return this.fm;
+});
+Clazz.overrideMethod (c$, "getFadedImage", 
+function () {
+return this.image;
+});
+Clazz.overrideMethod (c$, "getFadedImageWidth", 
+function () {
+return this.imgWidth;
+});
+Clazz.overrideMethod (c$, "getVisibleVRange", 
+function () {
+if (this.ap != null && this.ap.alabels != null) {
+var sOffset = -this.ap.alabels.scrollOffset;
+var visHeight = sOffset + this.ap.annotationPanelHolder.getHeight ();
+this.$bounds[0] = sOffset;
+this.$bounds[1] = visHeight;
+return this.$bounds;
+} else {
+return null;
+}});
+Clazz.defineStatics (c$,
+"GRAPH_HEIGHT", 40);
+});
index 8b9fe70..aafbcad 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "$.Button", "$.Checkbox", "$.Scrollbar", "$.TextField"], "jalview.appletgui.AnnotationRowFilter", ["jalview.util.MessageManager", "java.lang.Float", "java.util.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.av = null;\r
-this.ap = null;\r
-this.annmap = null;\r
-this.enableSeqAss = false;\r
-this.currentAnnotation = null;\r
-this.adjusting = false;\r
-this.currentColours = null;\r
-this.minColour = null;\r
-this.maxColour = null;\r
-this.seqAssociated = null;\r
-this.thresholdIsMin = null;\r
-this.slider = null;\r
-this.thresholdValue = null;\r
-this.frame = null;\r
-this.ok = null;\r
-this.cancel = null;\r
-this.sliderDragging = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "AnnotationRowFilter", awt2swing.Panel);\r
-Clazz.prepareFields (c$, function () {\r
-this.currentColours =  new awt2swing.Checkbox ();\r
-this.minColour =  new awt2swing.Panel ();\r
-this.maxColour =  new awt2swing.Panel ();\r
-this.seqAssociated =  new awt2swing.Checkbox ();\r
-this.thresholdIsMin =  new awt2swing.Checkbox ();\r
-this.slider =  new awt2swing.Scrollbar (0);\r
-this.thresholdValue =  new awt2swing.TextField (20);\r
-this.ok =  new awt2swing.Button ();\r
-this.cancel =  new awt2swing.Button ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (av, ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationRowFilter, []);\r
-this.av = av;\r
-this.ap = ap;\r
-}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.appletgui.AnnotationRowFilter, []);\r
-});\r
-Clazz.defineMethod (c$, "getAnnotationItems", \r
-function (isSeqAssociated) {\r
-var list =  new java.util.Vector ();\r
-var index = 1;\r
-var anmap =  Clazz.newIntArray (this.av.getAlignment ().getAlignmentAnnotation ().length, 0);\r
-for (var i = 0; i < this.av.getAlignment ().getAlignmentAnnotation ().length; i++) {\r
-if (this.av.getAlignment ().getAlignmentAnnotation ()[i].sequenceRef == null) {\r
-if (isSeqAssociated) {\r
-continue;\r
-}} else {\r
-this.enableSeqAss = true;\r
-}var label = this.av.getAlignment ().getAlignmentAnnotation ()[i].label;\r
-if (!list.contains (label)) {\r
-anmap[list.size ()] = i;\r
-list.add (label);\r
-} else {\r
-if (!isSeqAssociated) {\r
-anmap[list.size ()] = i;\r
-list.add (label + "_" + (index++));\r
-}}}\r
-this.annmap =  Clazz.newIntArray (list.size (), 0);\r
-System.arraycopy (anmap, 0, this.annmap, 0, this.annmap.length);\r
-return list;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getSelectedThresholdItem", \r
-function (indexValue) {\r
-var selectedThresholdItem = -1;\r
-if (indexValue == 1) {\r
-selectedThresholdItem = 1;\r
-} else if (indexValue == 2) {\r
-selectedThresholdItem = 0;\r
-}return selectedThresholdItem;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "modelChanged", \r
-function () {\r
-this.seqAssociated.setEnabled (this.enableSeqAss);\r
-});\r
-Clazz.defineMethod (c$, "ok_actionPerformed", \r
-function (e) {\r
-this.updateView ();\r
-this.frame.setVisible (false);\r
-}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "cancel_actionPerformed", \r
-function (e) {\r
-this.reset ();\r
-this.ap.paintAlignment (true);\r
-this.frame.setVisible (false);\r
-}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "thresholdCheck_actionPerformed", \r
-function (e) {\r
-this.updateView ();\r
-}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "annotations_actionPerformed", \r
-function (e) {\r
-this.updateView ();\r
-}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "threshold_actionPerformed", \r
-function (e) {\r
-this.updateView ();\r
-}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "thresholdValue_actionPerformed", \r
-function (e) {\r
-try {\r
-var f = Float.parseFloat (this.thresholdValue.getText ());\r
-this.slider.setValue (Clazz.floatToInt (f * 1000));\r
-this.updateView ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "populateThresholdComboBox", \r
-function (threshold) {\r
-threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));\r
-threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));\r
-threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));\r
-}, "awt2swing.Choice");\r
-Clazz.defineMethod (c$, "getCurrentAnnotation", \r
-function () {\r
-return this.currentAnnotation;\r
-});\r
-Clazz.defineMethod (c$, "setCurrentAnnotation", \r
-function (currentAnnotation) {\r
-this.currentAnnotation = currentAnnotation;\r
-}, "jalview.datamodel.AlignmentAnnotation");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "$.Button", "$.Checkbox", "$.Scrollbar", "$.TextField"], "jalview.appletgui.AnnotationRowFilter", ["jalview.util.MessageManager", "java.lang.Float", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.av = null;
+this.ap = null;
+this.annmap = null;
+this.enableSeqAss = false;
+this.currentAnnotation = null;
+this.adjusting = false;
+this.currentColours = null;
+this.minColour = null;
+this.maxColour = null;
+this.seqAssociated = null;
+this.thresholdIsMin = null;
+this.slider = null;
+this.thresholdValue = null;
+this.frame = null;
+this.ok = null;
+this.cancel = null;
+this.sliderDragging = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationRowFilter", awt2swing.Panel);
+Clazz.prepareFields (c$, function () {
+this.currentColours =  new awt2swing.Checkbox ();
+this.minColour =  new awt2swing.Panel ();
+this.maxColour =  new awt2swing.Panel ();
+this.seqAssociated =  new awt2swing.Checkbox ();
+this.thresholdIsMin =  new awt2swing.Checkbox ();
+this.slider =  new awt2swing.Scrollbar (0);
+this.thresholdValue =  new awt2swing.TextField (20);
+this.ok =  new awt2swing.Button ();
+this.cancel =  new awt2swing.Button ();
+});
+Clazz.makeConstructor (c$, 
+function (av, ap) {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationRowFilter, []);
+this.av = av;
+this.ap = ap;
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.appletgui.AnnotationRowFilter, []);
+});
+Clazz.defineMethod (c$, "getAnnotationItems", 
+function (isSeqAssociated) {
+var list =  new java.util.Vector ();
+var index = 1;
+var anmap =  Clazz.newIntArray (this.av.getAlignment ().getAlignmentAnnotation ().length, 0);
+for (var i = 0; i < this.av.getAlignment ().getAlignmentAnnotation ().length; i++) {
+if (this.av.getAlignment ().getAlignmentAnnotation ()[i].sequenceRef == null) {
+if (isSeqAssociated) {
+continue;
+}} else {
+this.enableSeqAss = true;
+}var label = this.av.getAlignment ().getAlignmentAnnotation ()[i].label;
+if (!list.contains (label)) {
+anmap[list.size ()] = i;
+list.add (label);
+} else {
+if (!isSeqAssociated) {
+anmap[list.size ()] = i;
+list.add (label + "_" + (index++));
+}}}
+this.annmap =  Clazz.newIntArray (list.size (), 0);
+System.arraycopy (anmap, 0, this.annmap, 0, this.annmap.length);
+return list;
+}, "~B");
+Clazz.defineMethod (c$, "getSelectedThresholdItem", 
+function (indexValue) {
+var selectedThresholdItem = -1;
+if (indexValue == 1) {
+selectedThresholdItem = 1;
+} else if (indexValue == 2) {
+selectedThresholdItem = 0;
+}return selectedThresholdItem;
+}, "~N");
+Clazz.defineMethod (c$, "modelChanged", 
+function () {
+this.seqAssociated.setEnabled (this.enableSeqAss);
+});
+Clazz.defineMethod (c$, "ok_actionPerformed", 
+function (e) {
+this.updateView ();
+this.frame.setVisible (false);
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "cancel_actionPerformed", 
+function (e) {
+this.reset ();
+this.ap.paintAlignment (true);
+this.frame.setVisible (false);
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "thresholdCheck_actionPerformed", 
+function (e) {
+this.updateView ();
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "annotations_actionPerformed", 
+function (e) {
+this.updateView ();
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "threshold_actionPerformed", 
+function (e) {
+this.updateView ();
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "thresholdValue_actionPerformed", 
+function (e) {
+try {
+var f = Float.parseFloat (this.thresholdValue.getText ());
+this.slider.setValue (Clazz.floatToInt (f * 1000));
+this.updateView ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "populateThresholdComboBox", 
+function (threshold) {
+threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));
+threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));
+threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));
+}, "awt2swing.Choice");
+Clazz.defineMethod (c$, "getCurrentAnnotation", 
+function () {
+return this.currentAnnotation;
+});
+Clazz.defineMethod (c$, "setCurrentAnnotation", 
+function (currentAnnotation) {
+this.currentAnnotation = currentAnnotation;
+}, "jalview.datamodel.AlignmentAnnotation");
+});
index d2a97b8..b8f808a 100644 (file)
@@ -1,48 +1,48 @@
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.Dimension", "java.util.ArrayList"], "jalview.appletgui.AppletJmol", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.scriptWindow = null;\r
-this.inputLine = null;\r
-this.history = null;\r
-this.renderPanel = null;\r
-this.ap = null;\r
-this._aps = null;\r
-this.fileLoadingError = null;\r
-this.loadedInline = false;\r
-this.fr = null;\r
-this.jmb = null;\r
-if (!Clazz.isClassDefined ("jalview.appletgui.AppletJmol.RenderPanel")) {\r
-jalview.appletgui.AppletJmol.$AppletJmol$RenderPanel$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "AppletJmol");\r
-Clazz.prepareFields (c$, function () {\r
-this._aps =  new java.util.ArrayList ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (entry, sequenceIs, object, ap2, uRL) {\r
-}, "jalview.datamodel.PDBEntry,~A,~O,jalview.appletgui.AlignmentPanel,~S");\r
-Clazz.defineMethod (c$, "setJalviewColourScheme", \r
-function (ucs) {\r
-}, "jalview.schemes.UserColourScheme");\r
-c$.$AppletJmol$RenderPanel$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.currentSize = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui.AppletJmol, "RenderPanel", awt2swing.Panel);\r
-Clazz.prepareFields (c$, function () {\r
-this.currentSize =  new java.awt.Dimension ();\r
-});\r
-Clazz.overrideMethod (c$, "update", \r
-function (a) {\r
-this.paint (a);\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "PaintComponent", \r
-function (a) {\r
-this.currentSize = this.getSize ();\r
-}, "java.awt.Graphics");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.Dimension", "java.util.ArrayList"], "jalview.appletgui.AppletJmol", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.scriptWindow = null;
+this.inputLine = null;
+this.history = null;
+this.renderPanel = null;
+this.ap = null;
+this._aps = null;
+this.fileLoadingError = null;
+this.loadedInline = false;
+this.fr = null;
+this.jmb = null;
+if (!Clazz.isClassDefined ("jalview.appletgui.AppletJmol.RenderPanel")) {
+jalview.appletgui.AppletJmol.$AppletJmol$RenderPanel$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "AppletJmol");
+Clazz.prepareFields (c$, function () {
+this._aps =  new java.util.ArrayList ();
+});
+Clazz.makeConstructor (c$, 
+function (entry, sequenceIs, object, ap2, uRL) {
+}, "jalview.datamodel.PDBEntry,~A,~O,jalview.appletgui.AlignmentPanel,~S");
+Clazz.defineMethod (c$, "setJalviewColourScheme", 
+function (ucs) {
+}, "jalview.schemes.UserColourScheme");
+c$.$AppletJmol$RenderPanel$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.currentSize = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.AppletJmol, "RenderPanel", awt2swing.Panel);
+Clazz.prepareFields (c$, function () {
+this.currentSize =  new java.awt.Dimension ();
+});
+Clazz.overrideMethod (c$, "update", 
+function (a) {
+this.paint (a);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "PaintComponent", 
+function (a) {
+this.currentSize = this.getSize ();
+}, "java.awt.Graphics");
+c$ = Clazz.p0p ();
+};
+});
index cdb8890..7f93e13 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.appletgui");\r
-c$ = Clazz.declareType (jalview.appletgui, "AppletJmolBinding");\r
+Clazz.declarePackage ("jalview.appletgui");
+c$ = Clazz.declareType (jalview.appletgui, "AppletJmolBinding");
index 31c248d..9292d36 100644 (file)
Binary files a/bin/jalview/appletgui/CutAndPasteTransfer.class and b/bin/jalview/appletgui/CutAndPasteTransfer.class differ
index c1e339a..4030094 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.MouseListener", "awt2swing.Button", "$.TextArea", "java.awt.BorderLayout"], "jalview.appletgui.CutAndPasteTransfer", ["awt2swing.Frame", "$.Label", "jalview.analysis.AlignmentUtils", "jalview.api.ComplexAlignFile", "jalview.appletgui.AlignFrame", "$.AppletJmol", "$.JVDialog", "$.SplitFrame", "jalview.datamodel.PDBEntry", "jalview.io.AnnotationFile", "$.AppletFormatAdapter", "$.IdentifyFile", "$.NewickFile", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.TCoffeeColourScheme", "jalview.util.MessageManager", "java.awt.Font"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.pdbImport = false;\r
-this.treeImport = false;\r
-this.annotationImport = false;\r
-this.seq = null;\r
-this.alignFrame = null;\r
-this.source = null;\r
-this.textarea = null;\r
-this.accept = null;\r
-this.addSequences = null;\r
-this.$cancel = null;\r
-this.buttonPanel = null;\r
-this.borderLayout1 = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "CutAndPasteTransfer", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.MouseListener]);\r
-Clazz.prepareFields (c$, function () {\r
-this.textarea =  new awt2swing.TextArea ();\r
-this.accept =  new awt2swing.Button ("New Window");\r
-this.addSequences =  new awt2swing.Button ("Add to Current Alignment");\r
-this.$cancel =  new awt2swing.Button ("Close");\r
-this.buttonPanel =  new awt2swing.Panel ();\r
-this.borderLayout1 =  new java.awt.BorderLayout ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (forImport, alignFrame) {\r
-Clazz.superConstructor (this, jalview.appletgui.CutAndPasteTransfer, []);\r
-try {\r
-this.jbInit ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.alignFrame = alignFrame;\r
-if (!forImport) {\r
-this.buttonPanel.setVisible (false);\r
-}}, "~B,jalview.appletgui.AlignFrame");\r
-Clazz.defineMethod (c$, "getText", \r
-function () {\r
-return this.textarea.getText ();\r
-});\r
-Clazz.defineMethod (c$, "setText", \r
-function (text) {\r
-this.textarea.setText (text);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setPDBImport", \r
-function (seq) {\r
-this.seq = seq;\r
-this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));\r
-this.addSequences.setVisible (false);\r
-this.pdbImport = true;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "setTreeImport", \r
-function () {\r
-this.treeImport = true;\r
-this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));\r
-this.addSequences.setVisible (false);\r
-});\r
-Clazz.defineMethod (c$, "setAnnotationImport", \r
-function () {\r
-this.annotationImport = true;\r
-this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));\r
-this.addSequences.setVisible (false);\r
-});\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-if (evt.getSource () === this.accept) {\r
-this.ok (true);\r
-} else if (evt.getSource () === this.addSequences) {\r
-this.ok (false);\r
-} else if (evt.getSource () === this.$cancel) {\r
-this.cancel ();\r
-}}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "ok", \r
-function (newWindow) {\r
-var text = this.getText ();\r
-var length = text.length;\r
-this.textarea.append ("\n");\r
-if (this.textarea.getText ().length == length) {\r
-var warning = "\n\n#################################################\nWARNING!! THIS IS THE MAXIMUM SIZE OF TEXTAREA!!\n\nCAN\'T INPUT FULL ALIGNMENT\n\nYOU MUST DELETE THIS WARNING TO CONTINUE\n\nMAKE SURE LAST SEQUENCE PASTED IS COMPLETE\n#################################################\n";\r
-this.textarea.setText (text.substring (0, text.length - warning.length) + warning);\r
-this.textarea.setCaretPosition (text.length);\r
-}if (this.pdbImport) {\r
-this.openPdbViewer (text);\r
-} else if (this.treeImport) {\r
-if (!this.loadTree ()) {\r
-return;\r
-}} else if (this.annotationImport) {\r
-this.loadAnnotations ();\r
-} else if (this.alignFrame != null) {\r
-this.loadAlignment (text, newWindow, this.alignFrame.getAlignViewport ());\r
-}if (Clazz.instanceOf (this.getParent (), awt2swing.Frame)) {\r
-(this.getParent ()).setVisible (false);\r
-} else {\r
-(this.getParent ()).setVisible (false);\r
-}}, "~B");\r
-Clazz.defineMethod (c$, "loadTree", \r
-function () {\r
-try {\r
-var fin =  new jalview.io.NewickFile (this.textarea.getText (), "Paste");\r
-fin.parse ();\r
-if (fin.getTree () != null) {\r
-this.alignFrame.loadTree (fin, "Pasted tree file");\r
-return true;\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-this.textarea.setText (jalview.util.MessageManager.formatMessage ("label.could_not_parse_newick_file",  Clazz.newArray (-1, [ex.getMessage ()])));\r
-return false;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-return false;\r
-});\r
-Clazz.defineMethod (c$, "loadAlignment", \r
-function (text, newWindow, viewport) {\r
-var al = null;\r
-var format =  new jalview.io.IdentifyFile ().Identify (text, jalview.io.AppletFormatAdapter.PASTE);\r
-var afa =  new jalview.io.AppletFormatAdapter (this.alignFrame.alignPanel);\r
-try {\r
-al = afa.readFile (text, jalview.io.AppletFormatAdapter.PASTE, format);\r
-this.source = afa.getAlignFile ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, java.io.IOException)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-if (al != null) {\r
-al.setDataset (null);\r
-var allowSplitFrame = this.alignFrame.viewport.applet.getDefaultParameter ("enableSplitFrame", false);\r
-if (allowSplitFrame && this.openSplitFrame (al, format)) {\r
-return;\r
-}if (newWindow) {\r
-var af;\r
-if (Clazz.instanceOf (this.source, jalview.api.ComplexAlignFile)) {\r
-var colSel = (this.source).getColumnSelection ();\r
-var hiddenSeqs = (this.source).getHiddenSequences ();\r
-var showSeqFeatures = (this.source).isShowSeqFeatures ();\r
-var cs = (this.source).getColourScheme ();\r
-af =  new jalview.appletgui.AlignFrame (al, hiddenSeqs, colSel, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false);\r
-af.getAlignViewport ().setShowSequenceFeatures (showSeqFeatures);\r
-af.changeColour (cs);\r
-} else {\r
-af =  new jalview.appletgui.AlignFrame (al, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false);\r
-}af.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_annotation_to_alignment"));\r
-} else {\r
-this.alignFrame.addSequences (al.getSequencesArray ());\r
-this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_alignment_file"));\r
-}}}, "~S,~B,jalview.appletgui.AlignViewport");\r
-Clazz.defineMethod (c$, "openSplitFrame", \r
-function (al, format) {\r
-var thisAlignment = this.alignFrame.getAlignViewport ().getAlignment ();\r
-if (thisAlignment.isNucleotide () == al.isNucleotide ()) {\r
-return false;\r
-}var protein = thisAlignment.isNucleotide () ? al : thisAlignment;\r
-var dna = thisAlignment.isNucleotide () ? thisAlignment : al;\r
-var mapped = jalview.analysis.AlignmentUtils.mapProteinToCdna (protein, dna);\r
-if (!mapped) {\r
-return false;\r
-}var title = jalview.util.MessageManager.getString ("label.open_split_window");\r
-var dialog =  new jalview.appletgui.JVDialog (this.getParent (), title, true, 100, 400);\r
-dialog.ok.setLabel (jalview.util.MessageManager.getString ("action.yes"));\r
-dialog.cancel.setLabel (jalview.util.MessageManager.getString ("action.no"));\r
-var question =  new awt2swing.Panel ( new java.awt.BorderLayout ());\r
-var text = jalview.util.MessageManager.getString ("label.open_split_window?");\r
-question.add ( new awt2swing.Label (text, 0), "Center");\r
-dialog.setMainPanel (question);\r
-dialog.setVisible (true);\r
-dialog.toFront ();\r
-if (!dialog.accept) {\r
-return false;\r
-}var applet = this.alignFrame.viewport.applet;\r
-var copyFrame =  new jalview.appletgui.AlignFrame (this.alignFrame.viewport.getAlignment (), applet, this.alignFrame.getTitle (), false, false);\r
-var newFrame =  new jalview.appletgui.AlignFrame (al, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false, false);\r
-var dnaFrame = al.isNucleotide () ? newFrame : copyFrame;\r
-var proteinFrame = al.isNucleotide () ? copyFrame : newFrame;\r
-var sf =  new jalview.appletgui.SplitFrame (dnaFrame, proteinFrame);\r
-sf.addToDisplay (false, applet);\r
-return true;\r
-}, "jalview.datamodel.AlignmentI,~S");\r
-Clazz.defineMethod (c$, "loadAnnotations", \r
-function () {\r
-var tcf = null;\r
-try {\r
-tcf = jalview.jsdev.GenericFileAdapter.getFile ("TCoffeeScoreFile", [this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE]);\r
-if (tcf.isValid ()) {\r
-if (tcf.annotateAlignment (this.alignFrame.viewport.getAlignment (), true)) {\r
-this.alignFrame.tcoffeeColour.setEnabled (true);\r
-this.alignFrame.alignPanel.fontChanged ();\r
-this.alignFrame.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignFrame.viewport.getAlignment ()));\r
-this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_tcoffee_scores_to_alignment"));\r
-} else {\r
-this.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.failed_add_tcoffee_scores",  Clazz.newArray (-1, [(tcf.getWarningMessage () != null ? tcf.getWarningMessage () : "")])));\r
-}} else {\r
-tcf = null;\r
-}} catch (x) {\r
-if (Clazz.exceptionOf (x, Exception)) {\r
-tcf = null;\r
-} else {\r
-throw x;\r
-}\r
-}\r
-if (tcf == null) {\r
-if ( new jalview.io.AnnotationFile ().annotateAlignmentView (this.alignFrame.viewport, this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE)) {\r
-this.alignFrame.alignPanel.fontChanged ();\r
-this.alignFrame.alignPanel.setScrollValues (0, 0);\r
-this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_annotation_to_alignment"));\r
-} else {\r
-if (!this.alignFrame.parseFeaturesFile (this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE)) {\r
-this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file"));\r
-}}}});\r
-Clazz.defineMethod (c$, "openPdbViewer", \r
-function (text) {\r
-var pdb =  new jalview.datamodel.PDBEntry ();\r
-pdb.setFile (text);\r
- new jalview.appletgui.AppletJmol (pdb,  Clazz.newArray (-1, [this.seq]), null, this.alignFrame.alignPanel, jalview.io.AppletFormatAdapter.PASTE);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "cancel", \r
-function () {\r
-this.textarea.setText ("");\r
-if (Clazz.instanceOf (this.getParent (), awt2swing.Frame)) {\r
-(this.getParent ()).setVisible (false);\r
-} else {\r
-(this.getParent ()).setVisible (false);\r
-}});\r
-Clazz.defineMethod (c$, "jbInit", \r
-($fz = function () {\r
-this.textarea.setFont ( new java.awt.Font ("Monospaced", 0, 10));\r
-this.textarea.setText (jalview.util.MessageManager.getString ("label.paste_your_alignment_file"));\r
-this.textarea.addMouseListener (this);\r
-this.setLayout (this.borderLayout1);\r
-this.accept.addActionListener (this);\r
-this.addSequences.addActionListener (this);\r
-this.$cancel.addActionListener (this);\r
-this.add (this.buttonPanel, "South");\r
-this.buttonPanel.add (this.accept, null);\r
-this.buttonPanel.add (this.addSequences);\r
-this.buttonPanel.add (this.$cancel, null);\r
-this.add (this.textarea, "Center");\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-if (this.textarea.getText ().startsWith (jalview.util.MessageManager.getString ("label.paste_your"))) {\r
-this.textarea.setText ("");\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.MouseListener", "awt2swing.Button", "$.TextArea", "java.awt.BorderLayout"], "jalview.appletgui.CutAndPasteTransfer", ["awt2swing.Frame", "$.Label", "jalview.analysis.AlignmentUtils", "jalview.api.ComplexAlignFile", "jalview.appletgui.AlignFrame", "$.AppletJmol", "$.JVDialog", "$.SplitFrame", "jalview.datamodel.PDBEntry", "jalview.io.AnnotationFile", "$.AppletFormatAdapter", "$.IdentifyFile", "$.NewickFile", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.TCoffeeColourScheme", "jalview.util.MessageManager", "java.awt.Font"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.pdbImport = false;
+this.treeImport = false;
+this.annotationImport = false;
+this.seq = null;
+this.alignFrame = null;
+this.source = null;
+this.textarea = null;
+this.accept = null;
+this.addSequences = null;
+this.$cancel = null;
+this.buttonPanel = null;
+this.borderLayout1 = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "CutAndPasteTransfer", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.MouseListener]);
+Clazz.prepareFields (c$, function () {
+this.textarea =  new awt2swing.TextArea ();
+this.accept =  new awt2swing.Button ("New Window");
+this.addSequences =  new awt2swing.Button ("Add to Current Alignment");
+this.$cancel =  new awt2swing.Button ("Close");
+this.buttonPanel =  new awt2swing.Panel ();
+this.borderLayout1 =  new java.awt.BorderLayout ();
+});
+Clazz.makeConstructor (c$, 
+function (forImport, alignFrame) {
+Clazz.superConstructor (this, jalview.appletgui.CutAndPasteTransfer, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.alignFrame = alignFrame;
+if (!forImport) {
+this.buttonPanel.setVisible (false);
+}}, "~B,jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "getText", 
+function () {
+return this.textarea.getText ();
+});
+Clazz.defineMethod (c$, "setText", 
+function (text) {
+this.textarea.setText (text);
+}, "~S");
+Clazz.defineMethod (c$, "setPDBImport", 
+function (seq) {
+this.seq = seq;
+this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));
+this.addSequences.setVisible (false);
+this.pdbImport = true;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "setTreeImport", 
+function () {
+this.treeImport = true;
+this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));
+this.addSequences.setVisible (false);
+});
+Clazz.defineMethod (c$, "setAnnotationImport", 
+function () {
+this.annotationImport = true;
+this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));
+this.addSequences.setVisible (false);
+});
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.accept) {
+this.ok (true);
+} else if (evt.getSource () === this.addSequences) {
+this.ok (false);
+} else if (evt.getSource () === this.$cancel) {
+this.cancel ();
+}}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "ok", 
+function (newWindow) {
+var text = this.getText ();
+var length = text.length;
+this.textarea.append ("\n");
+if (this.textarea.getText ().length == length) {
+var warning = "\n\n#################################################\nWARNING!! THIS IS THE MAXIMUM SIZE OF TEXTAREA!!\n\nCAN\'T INPUT FULL ALIGNMENT\n\nYOU MUST DELETE THIS WARNING TO CONTINUE\n\nMAKE SURE LAST SEQUENCE PASTED IS COMPLETE\n#################################################\n";
+this.textarea.setText (text.substring (0, text.length - warning.length) + warning);
+this.textarea.setCaretPosition (text.length);
+}if (this.pdbImport) {
+this.openPdbViewer (text);
+} else if (this.treeImport) {
+if (!this.loadTree ()) {
+return;
+}} else if (this.annotationImport) {
+this.loadAnnotations ();
+} else if (this.alignFrame != null) {
+this.loadAlignment (text, newWindow, this.alignFrame.getAlignViewport ());
+}if (Clazz.instanceOf (this.getParent (), awt2swing.Frame)) {
+(this.getParent ()).setVisible (false);
+} else {
+(this.getParent ()).setVisible (false);
+}}, "~B");
+Clazz.defineMethod (c$, "loadTree", 
+function () {
+try {
+var fin =  new jalview.io.NewickFile (this.textarea.getText (), "Paste");
+fin.parse ();
+if (fin.getTree () != null) {
+this.alignFrame.loadTree (fin, "Pasted tree file");
+return true;
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+this.textarea.setText (jalview.util.MessageManager.formatMessage ("label.could_not_parse_newick_file",  Clazz.newArray (-1, [ex.getMessage ()])));
+return false;
+} else {
+throw ex;
+}
+}
+return false;
+});
+Clazz.defineMethod (c$, "loadAlignment", 
+function (text, newWindow, viewport) {
+var al = null;
+var format =  new jalview.io.IdentifyFile ().Identify (text, jalview.io.AppletFormatAdapter.PASTE);
+var afa =  new jalview.io.AppletFormatAdapter (this.alignFrame.alignPanel);
+try {
+al = afa.readFile (text, jalview.io.AppletFormatAdapter.PASTE, format);
+this.source = afa.getAlignFile ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, java.io.IOException)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+if (al != null) {
+al.setDataset (null);
+var allowSplitFrame = this.alignFrame.viewport.applet.getDefaultParameter ("enableSplitFrame", false);
+if (allowSplitFrame && this.openSplitFrame (al, format)) {
+return;
+}if (newWindow) {
+var af;
+if (Clazz.instanceOf (this.source, jalview.api.ComplexAlignFile)) {
+var colSel = (this.source).getColumnSelection ();
+var hiddenSeqs = (this.source).getHiddenSequences ();
+var showSeqFeatures = (this.source).isShowSeqFeatures ();
+var cs = (this.source).getColourScheme ();
+af =  new jalview.appletgui.AlignFrame (al, hiddenSeqs, colSel, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false);
+af.getAlignViewport ().setShowSequenceFeatures (showSeqFeatures);
+af.changeColour (cs);
+} else {
+af =  new jalview.appletgui.AlignFrame (al, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false);
+}af.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_annotation_to_alignment"));
+} else {
+this.alignFrame.addSequences (al.getSequencesArray ());
+this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_alignment_file"));
+}}}, "~S,~B,jalview.appletgui.AlignViewport");
+Clazz.defineMethod (c$, "openSplitFrame", 
+function (al, format) {
+var thisAlignment = this.alignFrame.getAlignViewport ().getAlignment ();
+if (thisAlignment.isNucleotide () == al.isNucleotide ()) {
+return false;
+}var protein = thisAlignment.isNucleotide () ? al : thisAlignment;
+var dna = thisAlignment.isNucleotide () ? thisAlignment : al;
+var mapped = jalview.analysis.AlignmentUtils.mapProteinToCdna (protein, dna);
+if (!mapped) {
+return false;
+}var title = jalview.util.MessageManager.getString ("label.open_split_window");
+var dialog =  new jalview.appletgui.JVDialog (this.getParent (), title, true, 100, 400);
+dialog.ok.setLabel (jalview.util.MessageManager.getString ("action.yes"));
+dialog.cancel.setLabel (jalview.util.MessageManager.getString ("action.no"));
+var question =  new awt2swing.Panel ( new java.awt.BorderLayout ());
+var text = jalview.util.MessageManager.getString ("label.open_split_window?");
+question.add ( new awt2swing.Label (text, 0), "Center");
+dialog.setMainPanel (question);
+dialog.setVisible (true);
+dialog.toFront ();
+if (!dialog.accept) {
+return false;
+}var applet = this.alignFrame.viewport.applet;
+var copyFrame =  new jalview.appletgui.AlignFrame (this.alignFrame.viewport.getAlignment (), applet, this.alignFrame.getTitle (), false, false);
+var newFrame =  new jalview.appletgui.AlignFrame (al, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false, false);
+var dnaFrame = al.isNucleotide () ? newFrame : copyFrame;
+var proteinFrame = al.isNucleotide () ? copyFrame : newFrame;
+var sf =  new jalview.appletgui.SplitFrame (dnaFrame, proteinFrame);
+sf.addToDisplay (false, applet);
+return true;
+}, "jalview.datamodel.AlignmentI,~S");
+Clazz.defineMethod (c$, "loadAnnotations", 
+function () {
+var tcf = null;
+try {
+tcf = jalview.jsdev.GenericFileAdapter.getFile ("TCoffeeScoreFile", [this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE]);
+if (tcf.isValid ()) {
+if (tcf.annotateAlignment (this.alignFrame.viewport.getAlignment (), true)) {
+this.alignFrame.tcoffeeColour.setEnabled (true);
+this.alignFrame.alignPanel.fontChanged ();
+this.alignFrame.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignFrame.viewport.getAlignment ()));
+this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_tcoffee_scores_to_alignment"));
+} else {
+this.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.failed_add_tcoffee_scores",  Clazz.newArray (-1, [(tcf.getWarningMessage () != null ? tcf.getWarningMessage () : "")])));
+}} else {
+tcf = null;
+}} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+tcf = null;
+} else {
+throw x;
+}
+}
+if (tcf == null) {
+if ( new jalview.io.AnnotationFile ().annotateAlignmentView (this.alignFrame.viewport, this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE)) {
+this.alignFrame.alignPanel.fontChanged ();
+this.alignFrame.alignPanel.setScrollValues (0, 0);
+this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_annotation_to_alignment"));
+} else {
+if (!this.alignFrame.parseFeaturesFile (this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE)) {
+this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file"));
+}}}});
+Clazz.defineMethod (c$, "openPdbViewer", 
+function (text) {
+var pdb =  new jalview.datamodel.PDBEntry ();
+pdb.setFile (text);
+ new jalview.appletgui.AppletJmol (pdb,  Clazz.newArray (-1, [this.seq]), null, this.alignFrame.alignPanel, jalview.io.AppletFormatAdapter.PASTE);
+}, "~S");
+Clazz.defineMethod (c$, "cancel", 
+function () {
+this.textarea.setText ("");
+if (Clazz.instanceOf (this.getParent (), awt2swing.Frame)) {
+(this.getParent ()).setVisible (false);
+} else {
+(this.getParent ()).setVisible (false);
+}});
+Clazz.defineMethod (c$, "jbInit", 
+($fz = function () {
+this.textarea.setFont ( new java.awt.Font ("Monospaced", 0, 10));
+this.textarea.setText (jalview.util.MessageManager.getString ("label.paste_your_alignment_file"));
+this.textarea.addMouseListener (this);
+this.setLayout (this.borderLayout1);
+this.accept.addActionListener (this);
+this.addSequences.addActionListener (this);
+this.$cancel.addActionListener (this);
+this.add (this.buttonPanel, "South");
+this.buttonPanel.add (this.accept, null);
+this.buttonPanel.add (this.addSequences);
+this.buttonPanel.add (this.$cancel, null);
+this.add (this.textarea, "Center");
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+if (this.textarea.getText ().startsWith (jalview.util.MessageManager.getString ("label.paste_your"))) {
+this.textarea.setText ("");
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+});
index efedf02..68044ad 100644 (file)
@@ -1,44 +1,44 @@
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["jalview.appletgui.JVDialog"], "jalview.appletgui.EditNameDialog", ["awt2swing.Label", "$.Panel", "$.TextField", "java.awt.BorderLayout", "$.Font"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.id = null;\r
-this.description = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "EditNameDialog", jalview.appletgui.JVDialog);\r
-Clazz.overrideMethod (c$, "getName", \r
-function () {\r
-return this.id.getText ();\r
-});\r
-Clazz.defineMethod (c$, "getDescription", \r
-function () {\r
-if (this.description.getText ().length < 1) {\r
-return null;\r
-} else {\r
-return this.description.getText ();\r
-}});\r
-Clazz.makeConstructor (c$, \r
-function (name, desc, label1, label2, owner, title, width, height, display) {\r
-Clazz.superConstructor (this, jalview.appletgui.EditNameDialog, [owner, title, true, width, height]);\r
-var mono =  new java.awt.Font ("Monospaced", 0, 12);\r
-var panel =  new awt2swing.Panel ( new java.awt.BorderLayout ());\r
-var panel2 =  new awt2swing.Panel ( new java.awt.BorderLayout ());\r
-this.id =  new awt2swing.TextField (name, 40);\r
-this.id.setFont (mono);\r
-var label =  new awt2swing.Label (label1);\r
-label.setFont (mono);\r
-panel2.add (label, "West");\r
-panel2.add (this.id, "Center");\r
-panel.add (panel2, "North");\r
-if (label2 != null) {\r
-panel2 =  new awt2swing.Panel ( new java.awt.BorderLayout ());\r
-this.description =  new awt2swing.TextField (desc, 40);\r
-this.description.setFont (mono);\r
-label =  new awt2swing.Label (label2);\r
-label.setFont (mono);\r
-panel2.add (label, "West");\r
-panel2.add (this.description, "Center");\r
-panel.add (panel2, "Center");\r
-}this.setMainPanel (panel);\r
-this.setVisible (display);\r
-}, "~S,~S,~S,~S,awt2swing.Frame,~S,~N,~N,~B");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.appletgui.JVDialog"], "jalview.appletgui.EditNameDialog", ["awt2swing.Label", "$.Panel", "$.TextField", "java.awt.BorderLayout", "$.Font"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.id = null;
+this.description = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "EditNameDialog", jalview.appletgui.JVDialog);
+Clazz.overrideMethod (c$, "getName", 
+function () {
+return this.id.getText ();
+});
+Clazz.defineMethod (c$, "getDescription", 
+function () {
+if (this.description.getText ().length < 1) {
+return null;
+} else {
+return this.description.getText ();
+}});
+Clazz.makeConstructor (c$, 
+function (name, desc, label1, label2, owner, title, width, height, display) {
+Clazz.superConstructor (this, jalview.appletgui.EditNameDialog, [owner, title, true, width, height]);
+var mono =  new java.awt.Font ("Monospaced", 0, 12);
+var panel =  new awt2swing.Panel ( new java.awt.BorderLayout ());
+var panel2 =  new awt2swing.Panel ( new java.awt.BorderLayout ());
+this.id =  new awt2swing.TextField (name, 40);
+this.id.setFont (mono);
+var label =  new awt2swing.Label (label1);
+label.setFont (mono);
+panel2.add (label, "West");
+panel2.add (this.id, "Center");
+panel.add (panel2, "North");
+if (label2 != null) {
+panel2 =  new awt2swing.Panel ( new java.awt.BorderLayout ());
+this.description =  new awt2swing.TextField (desc, 40);
+this.description.setFont (mono);
+label =  new awt2swing.Label (label2);
+label.setFont (mono);
+panel2.add (label, "West");
+panel2.add (this.description, "Center");
+panel.add (panel2, "Center");
+}this.setMainPanel (panel);
+this.setVisible (display);
+}, "~S,~S,~S,~S,awt2swing.Frame,~S,~N,~N,~B");
+});
index 13a7183..7a5362c 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Frame", "java.awt.event.MouseListener", "java.awt.Font", "java.util.HashMap"], "jalview.appletgui.EmbmenuFrame", ["awt2swing.Label", "$.Panel", "$.PopupMenu", "jalview.util.Platform", "java.awt.Color", "$.FlowLayout"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.embeddedPopup = null;\r
-this.embeddedMenu = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "EmbmenuFrame", awt2swing.Frame, java.awt.event.MouseListener);\r
-Clazz.prepareFields (c$, function () {\r
-this.embeddedPopup =  new java.util.HashMap ();\r
-});\r
-Clazz.defineMethod (c$, "embedMenuIfNeeded", \r
-function (tobeAdjusted) {\r
-var topMenuBar = this.getJMenuBar ();\r
-if (topMenuBar == null) {\r
-return false;\r
-}if (jalview.util.Platform.isAMac ()) {\r
-this.embeddedMenu = this.makeEmbeddedPopupMenu (topMenuBar, true, false);\r
-this.unsetMenuBar ();\r
-this.add (this.embeddedMenu, "North");\r
-tobeAdjusted.setSize (this.getSize ().width, this.getSize ().height - this.embeddedMenu.getHeight ());\r
-return true;\r
-}return false;\r
-}, "awt2swing.Panel");\r
-Clazz.defineMethod (c$, "makeEmbeddedPopupMenu", \r
-function (menuBar, overrideFonts, append) {\r
-if (!append) {\r
-this.embeddedPopup.clear ();\r
-if (this.embeddedMenu != null) {\r
-this.embeddedMenu.removeAll ();\r
-}}this.embeddedMenu = this.makeEmbeddedPopupMenu (menuBar, jalview.appletgui.EmbmenuFrame.DEFAULT_MENU_FONT, overrideFonts,  new awt2swing.Panel (), this);\r
-return this.embeddedMenu;\r
-}, "awt2swing.MenuBar,~B,~B");\r
-Clazz.defineMethod (c$, "makeEmbeddedPopupMenu", \r
-function (menuBar, font, overrideFonts, embeddedMenu, clickHandler) {\r
-if (overrideFonts) {\r
-var mbf = menuBar.getFont ();\r
-if (mbf != null) {\r
-font = mbf;\r
-}}if (embeddedMenu == null) {\r
-embeddedMenu =  new awt2swing.Panel ();\r
-}var flowLayout1 =  new java.awt.FlowLayout ();\r
-embeddedMenu.setBackground (java.awt.Color.lightGray);\r
-embeddedMenu.setLayout (flowLayout1);\r
-for (var mbi = 0, nMbi = menuBar.getMenuCount (); mbi < nMbi; mbi++) {\r
-var mi = menuBar.getMenu (mbi);\r
-var elab =  new awt2swing.Label (mi.getLabel ());\r
-elab.setFont (font);\r
-var popup =  new awt2swing.PopupMenu ();\r
-var m;\r
-var mSize = mi.getItemCount ();\r
-for (m = 0; m < mSize; m++) {\r
-if (mi.getItem (m) == null) popup.addSeparator ();\r
- else popup.add (mi.getItem (m));\r
-mSize--;\r
-m--;\r
-}\r
-this.embeddedPopup.put (elab, popup);\r
-embeddedMenu.add (elab);\r
-elab.addMouseListener (clickHandler);\r
-}\r
-flowLayout1.setAlignment (0);\r
-flowLayout1.setHgap (2);\r
-flowLayout1.setVgap (0);\r
-return embeddedMenu;\r
-}, "awt2swing.MenuBar,java.awt.Font,~B,awt2swing.Panel,java.awt.event.MouseListener");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-var popup = null;\r
-var source = evt.getSource ();\r
-popup = this.getPopupMenu (source);\r
-if (popup != null) {\r
-this.embeddedMenu.add (popup);\r
-popup.show (this.embeddedMenu, source.getBounds ().x, source.getBounds ().y + source.getBounds ().getSize ().height);\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "getPopupMenu", \r
-function (source) {\r
-return this.embeddedPopup.get (source);\r
-}, "awt2swing.Label");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "destroyMenus", \r
-function () {\r
-if (this.embeddedPopup != null) {\r
-for (var lb, $lb = this.embeddedPopup.keySet ().iterator (); $lb.hasNext () && ((lb = $lb.next ()) || true);) {\r
-lb.removeMouseListener (this);\r
-}\r
-this.embeddedPopup.clear ();\r
-}if (this.embeddedMenu != null) {\r
-this.embeddedMenu.removeAll ();\r
-}});\r
-Clazz.defineMethod (c$, "finalize", \r
-function () {\r
-this.destroyMenus ();\r
-this.embeddedPopup = null;\r
-this.embeddedMenu = null;\r
-Clazz.superCall (this, jalview.appletgui.EmbmenuFrame, "finalize", []);\r
-});\r
-c$.FONT_ARIAL_PLAIN_11 = c$.prototype.FONT_ARIAL_PLAIN_11 =  new java.awt.Font ("Arial", 0, 11);\r
-c$.DEFAULT_MENU_FONT = c$.prototype.DEFAULT_MENU_FONT = jalview.appletgui.EmbmenuFrame.FONT_ARIAL_PLAIN_11;\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Frame", "java.awt.event.MouseListener", "java.awt.Font", "java.util.HashMap"], "jalview.appletgui.EmbmenuFrame", ["awt2swing.Label", "$.Panel", "$.PopupMenu", "jalview.util.Platform", "java.awt.Color", "$.FlowLayout"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.embeddedPopup = null;
+this.embeddedMenu = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "EmbmenuFrame", awt2swing.Frame, java.awt.event.MouseListener);
+Clazz.prepareFields (c$, function () {
+this.embeddedPopup =  new java.util.HashMap ();
+});
+Clazz.defineMethod (c$, "embedMenuIfNeeded", 
+function (tobeAdjusted) {
+var topMenuBar = this.getJMenuBar ();
+if (topMenuBar == null) {
+return false;
+}if (jalview.util.Platform.isAMac ()) {
+this.embeddedMenu = this.makeEmbeddedPopupMenu (topMenuBar, true, false);
+this.unsetMenuBar ();
+this.add (this.embeddedMenu, "North");
+tobeAdjusted.setSize (this.getSize ().width, this.getSize ().height - this.embeddedMenu.getHeight ());
+return true;
+}return false;
+}, "awt2swing.Panel");
+Clazz.defineMethod (c$, "makeEmbeddedPopupMenu", 
+function (menuBar, overrideFonts, append) {
+if (!append) {
+this.embeddedPopup.clear ();
+if (this.embeddedMenu != null) {
+this.embeddedMenu.removeAll ();
+}}this.embeddedMenu = this.makeEmbeddedPopupMenu (menuBar, jalview.appletgui.EmbmenuFrame.DEFAULT_MENU_FONT, overrideFonts,  new awt2swing.Panel (), this);
+return this.embeddedMenu;
+}, "awt2swing.MenuBar,~B,~B");
+Clazz.defineMethod (c$, "makeEmbeddedPopupMenu", 
+function (menuBar, font, overrideFonts, embeddedMenu, clickHandler) {
+if (overrideFonts) {
+var mbf = menuBar.getFont ();
+if (mbf != null) {
+font = mbf;
+}}if (embeddedMenu == null) {
+embeddedMenu =  new awt2swing.Panel ();
+}var flowLayout1 =  new java.awt.FlowLayout ();
+embeddedMenu.setBackground (java.awt.Color.lightGray);
+embeddedMenu.setLayout (flowLayout1);
+for (var mbi = 0, nMbi = menuBar.getMenuCount (); mbi < nMbi; mbi++) {
+var mi = menuBar.getMenu (mbi);
+var elab =  new awt2swing.Label (mi.getLabel ());
+elab.setFont (font);
+var popup =  new awt2swing.PopupMenu ();
+var m;
+var mSize = mi.getItemCount ();
+for (m = 0; m < mSize; m++) {
+if (mi.getItem (m) == null) popup.addSeparator ();
+ else popup.add (mi.getItem (m));
+mSize--;
+m--;
+}
+this.embeddedPopup.put (elab, popup);
+embeddedMenu.add (elab);
+elab.addMouseListener (clickHandler);
+}
+flowLayout1.setAlignment (0);
+flowLayout1.setHgap (2);
+flowLayout1.setVgap (0);
+return embeddedMenu;
+}, "awt2swing.MenuBar,java.awt.Font,~B,awt2swing.Panel,java.awt.event.MouseListener");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+var popup = null;
+var source = evt.getSource ();
+popup = this.getPopupMenu (source);
+if (popup != null) {
+this.embeddedMenu.add (popup);
+popup.show (this.embeddedMenu, source.getBounds ().x, source.getBounds ().y + source.getBounds ().getSize ().height);
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "getPopupMenu", 
+function (source) {
+return this.embeddedPopup.get (source);
+}, "awt2swing.Label");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "destroyMenus", 
+function () {
+if (this.embeddedPopup != null) {
+for (var lb, $lb = this.embeddedPopup.keySet ().iterator (); $lb.hasNext () && ((lb = $lb.next ()) || true);) {
+lb.removeMouseListener (this);
+}
+this.embeddedPopup.clear ();
+}if (this.embeddedMenu != null) {
+this.embeddedMenu.removeAll ();
+}});
+Clazz.defineMethod (c$, "finalize", 
+function () {
+this.destroyMenus ();
+this.embeddedPopup = null;
+this.embeddedMenu = null;
+Clazz.superCall (this, jalview.appletgui.EmbmenuFrame, "finalize", []);
+});
+c$.FONT_ARIAL_PLAIN_11 = c$.prototype.FONT_ARIAL_PLAIN_11 =  new java.awt.Font ("Arial", 0, 11);
+c$.DEFAULT_MENU_FONT = c$.prototype.DEFAULT_MENU_FONT = jalview.appletgui.EmbmenuFrame.FONT_ARIAL_PLAIN_11;
+});
index 170d005..150efd5 100644 (file)
@@ -1,17 +1,17 @@
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["jalview.structures.models.AAStructureBindingModel"], "jalview.appletgui.ExtJmol", null, function () {\r
-c$ = Clazz.declareType (jalview.appletgui, "ExtJmol", jalview.structures.models.AAStructureBindingModel);\r
-Clazz.overrideMethod (c$, "getPdbFile", \r
-function () {\r
-return null;\r
-});\r
-Clazz.overrideMethod (c$, "updateColours", \r
-function (source) {\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "releaseReferences", \r
-function (svl) {\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "highlightAtoms", \r
-function (atoms) {\r
-}, "java.util.List");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.structures.models.AAStructureBindingModel"], "jalview.appletgui.ExtJmol", null, function () {
+c$ = Clazz.declareType (jalview.appletgui, "ExtJmol", jalview.structures.models.AAStructureBindingModel);
+Clazz.overrideMethod (c$, "getPdbFile", 
+function () {
+return null;
+});
+Clazz.overrideMethod (c$, "updateColours", 
+function (source) {
+}, "~O");
+Clazz.overrideMethod (c$, "releaseReferences", 
+function (svl) {
+}, "~O");
+Clazz.overrideMethod (c$, "highlightAtoms", 
+function (atoms) {
+}, "java.util.List");
+});
index 0c8e554..8aee64e 100644 (file)
Binary files a/bin/jalview/appletgui/FeatureColourChooser.class and b/bin/jalview/appletgui/FeatureColourChooser.class differ
index cfa5380..929c04b 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "awt2swing.Checkbox", "$.Choice", "$.Scrollbar", "$.TextField"], "jalview.appletgui.FeatureColourChooser", ["awt2swing.Label", "jalview.appletgui.JVDialog", "$.PaintRefresher", "$.UserDefinedColours", "jalview.datamodel.GraphLine", "jalview.schemes.GraduatedColor", "jalview.util.MessageManager", "java.awt.Color", "$.Dimension", "$.FlowLayout", "$.Font", "$.GridLayout", "java.awt.event.ActionEvent", "java.lang.Float"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.frame = null;\r
-this.owner = null;\r
-this.fr = null;\r
-this.fs = null;\r
-this.cs = null;\r
-this.oldcs = null;\r
-this.oldgroupColours = null;\r
-this.adjusting = false;\r
-this.min = 0;\r
-this.max = 0;\r
-this.type = null;\r
-this.af = null;\r
-this.minColour = null;\r
-this.maxColour = null;\r
-this.jPanel1 = null;\r
-this.jPanel2 = null;\r
-this.threshold = null;\r
-this.jPanel3 = null;\r
-this.jPanel4 = null;\r
-this.slider = null;\r
-this.thresholdValue = null;\r
-this.thresholdIsMin = null;\r
-this.colourFromLabel = null;\r
-this.threshline = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "FeatureColourChooser", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.ItemListener, java.awt.event.MouseListener]);\r
-Clazz.prepareFields (c$, function () {\r
-this.minColour =  new awt2swing.Panel ();\r
-this.maxColour =  new awt2swing.Panel ();\r
-this.jPanel1 =  new awt2swing.Panel ();\r
-this.jPanel2 =  new awt2swing.Panel ();\r
-this.threshold =  new awt2swing.Choice ();\r
-this.jPanel3 =  new awt2swing.Panel ();\r
-this.jPanel4 =  new awt2swing.Panel ();\r
-this.slider =  new awt2swing.Scrollbar (0);\r
-this.thresholdValue =  new awt2swing.TextField (20);\r
-this.thresholdIsMin =  new awt2swing.Checkbox ();\r
-this.colourFromLabel =  new awt2swing.Checkbox ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (af, type) {\r
-Clazz.superConstructor (this, jalview.appletgui.FeatureColourChooser, []);\r
-this.af = af;\r
-this.init (af.getSeqcanvas ().getFeatureRenderer (), type);\r
-}, "jalview.appletgui.AlignFrame,~S");\r
-Clazz.makeConstructor (c$, \r
-function (fsettings, type) {\r
-Clazz.superConstructor (this, jalview.appletgui.FeatureColourChooser, []);\r
-this.fs = fsettings;\r
-this.init (fsettings.fr, type);\r
-}, "jalview.appletgui.FeatureSettings,~S");\r
-Clazz.defineMethod (c$, "init", \r
-($fz = function (frenderer, type) {\r
-this.type = type;\r
-this.fr = frenderer;\r
-var mm = (this.fr.getMinMax ().get (type))[0];\r
-this.min = mm[0];\r
-this.max = mm[1];\r
-this.oldcs = this.fr.getFeatureColours ().get (type);\r
-if (Clazz.instanceOf (this.oldcs, jalview.schemes.GraduatedColor)) {\r
-this.cs =  new jalview.schemes.GraduatedColor (this.oldcs, this.min, this.max);\r
-} else {\r
-var bl = java.awt.Color.black;\r
-if (Clazz.instanceOf (this.oldcs, java.awt.Color)) {\r
-bl = this.oldcs;\r
-}this.cs =  new jalview.schemes.GraduatedColor (java.awt.Color.white, bl, mm[0], mm[1]);\r
-}this.minColour.setBackground (this.cs.getMinColor ());\r
-this.maxColour.setBackground (this.cs.getMaxColor ());\r
-this.minColour.setForeground (this.cs.getMinColor ());\r
-this.maxColour.setForeground (this.cs.getMaxColor ());\r
-this.colourFromLabel.setState (this.cs.isColourByLabel ());\r
-this.adjusting = true;\r
-try {\r
-this.jbInit ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-this.threshold.select (new Integer (this.cs.getThreshType () == -1 ? 0 : this.cs.getThreshType () == 1 ? 1 : 2));\r
-this.adjusting = false;\r
-this.changeColour ();\r
-this.colourFromLabel.addItemListener (this);\r
-this.slider.addAdjustmentListener (this);\r
-this.slider.addMouseListener (this);\r
-this.owner = (this.af != null) ? this.af : this.fs.frame;\r
-this.frame =  new jalview.appletgui.JVDialog (this.owner, jalview.util.MessageManager.formatMessage ("label.graduated_color_for_params",  Clazz.newArray (-1, [type])), true, 480, 248);\r
-this.frame.setMainPanel (this);\r
-this.validate ();\r
-this.frame.setVisible (true);\r
-if (this.frame.accept) {\r
-this.changeColour ();\r
-} else {\r
-this.reset ();\r
-jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());\r
-this.frame.setVisible (false);\r
-}}, $fz.isPrivate = true, $fz), "jalview.appletgui.FeatureRenderer,~S");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.appletgui.FeatureColourChooser, []);\r
-try {\r
-this.jbInit ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-});\r
-Clazz.defineMethod (c$, "jbInit", \r
-($fz = function () {\r
-var minLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.min"));\r
-var maxLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.max"));\r
-minLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-maxLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.minColour.setBounds (0, 0, 40, 27);\r
-this.maxColour.setBounds (0, 0, 40, 27);\r
-this.minColour.addMouseListener (this);\r
-this.maxColour.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.maxColour.addMouseListener (this);\r
-this.thresholdIsMin.addItemListener (this);\r
-this.setLayout ( new java.awt.GridLayout (4, 1));\r
-this.jPanel1.setLayout ( new java.awt.FlowLayout ());\r
-this.jPanel2.setLayout ( new java.awt.FlowLayout ());\r
-this.jPanel3.setLayout ( new java.awt.GridLayout (1, 1));\r
-this.jPanel4.setLayout ( new java.awt.FlowLayout ());\r
-this.jPanel1.setBackground (java.awt.Color.white);\r
-this.jPanel2.setBackground (java.awt.Color.white);\r
-this.jPanel4.setBackground (java.awt.Color.white);\r
-this.threshold.addItemListener (this);\r
-this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));\r
-this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));\r
-this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));\r
-this.thresholdValue.addActionListener (this);\r
-this.slider.setBackground (java.awt.Color.white);\r
-this.slider.setEnabled (false);\r
-this.slider.setSize ( new java.awt.Dimension (93, 21));\r
-this.thresholdValue.setEnabled (false);\r
-this.thresholdValue.setSize ( new java.awt.Dimension (79, 22));\r
-this.thresholdValue.setColumns (5);\r
-this.jPanel3.setBackground (java.awt.Color.white);\r
-this.colourFromLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.colourFromLabel.setLabel (jalview.util.MessageManager.getString ("label.colour_by_label"));\r
-this.colourFromLabel.setSize ( new java.awt.Dimension (139, 22));\r
-this.thresholdIsMin.setBackground (java.awt.Color.white);\r
-this.thresholdIsMin.setLabel (jalview.util.MessageManager.getString ("label.threshold_minmax"));\r
-this.thresholdIsMin.setSize ( new java.awt.Dimension (135, 23));\r
-this.jPanel1.add (minLabel);\r
-this.jPanel1.add (this.minColour);\r
-this.jPanel1.add (maxLabel);\r
-this.jPanel1.add (this.maxColour);\r
-this.jPanel1.add (this.colourFromLabel);\r
-this.jPanel2.add (this.threshold);\r
-this.jPanel3.add (this.slider);\r
-this.jPanel4.add (this.thresholdValue);\r
-this.jPanel4.add (this.thresholdIsMin);\r
-this.add (this.jPanel1);\r
-this.add (this.jPanel2);\r
-this.add (this.jPanel3);\r
-this.add (this.jPanel4);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-if (evt.getSource () === this.thresholdValue) {\r
-try {\r
-var f =  new Float (this.thresholdValue.getText ()).floatValue ();\r
-this.slider.setValue (Clazz.floatToInt (f * 1000));\r
-this.adjustmentValueChanged (null);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-} else if (evt.getSource () === this.minColour) {\r
-this.minColour_actionPerformed (null);\r
-} else if (evt.getSource () === this.maxColour) {\r
-this.maxColour_actionPerformed (null);\r
-} else {\r
-this.changeColour ();\r
-}}, "java.awt.event.ActionEvent");\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (evt) {\r
-this.maxColour.setEnabled (!this.colourFromLabel.getState ());\r
-this.minColour.setEnabled (!this.colourFromLabel.getState ());\r
-this.changeColour ();\r
-}, "java.awt.event.ItemEvent");\r
-Clazz.overrideMethod (c$, "adjustmentValueChanged", \r
-function (evt) {\r
-if (!this.adjusting) {\r
-this.thresholdValue.setText ((this.slider.getValue () / 1000) + "");\r
-this.valueChanged ();\r
-}}, "java.awt.event.AdjustmentEvent");\r
-Clazz.defineMethod (c$, "valueChanged", \r
-function () {\r
-this.threshline.value = this.slider.getValue () / 1000;\r
-this.cs.setThresh (this.threshline.value);\r
-this.changeColour ();\r
-jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());\r
-});\r
-Clazz.defineMethod (c$, "minColour_actionPerformed", \r
-function (newCol) {\r
-if (newCol == null) {\r
-var udc =  new jalview.appletgui.UserDefinedColours (this, this.minColour.getBackground (), this.owner, jalview.util.MessageManager.getString ("label.select_colour_minimum_value"));\r
-} else {\r
-this.minColour.setBackground (newCol);\r
-this.minColour.setForeground (newCol);\r
-this.minColour.repaint ();\r
-this.changeColour ();\r
-}}, "java.awt.Color");\r
-Clazz.defineMethod (c$, "maxColour_actionPerformed", \r
-function (newCol) {\r
-if (newCol == null) {\r
-var udc =  new jalview.appletgui.UserDefinedColours (this, this.maxColour.getBackground (), this.owner, jalview.util.MessageManager.getString ("label.select_colour_maximum_value"));\r
-} else {\r
-this.maxColour.setBackground (newCol);\r
-this.maxColour.setForeground (newCol);\r
-this.maxColour.repaint ();\r
-this.changeColour ();\r
-}}, "java.awt.Color");\r
-Clazz.defineMethod (c$, "changeColour", \r
-function () {\r
-if (this.adjusting) {\r
-return;\r
-}var aboveThreshold = -1;\r
-if (this.threshold.getSelectedIndex () == 1) {\r
-aboveThreshold = 1;\r
-} else if (this.threshold.getSelectedIndex () == 2) {\r
-aboveThreshold = 0;\r
-}this.slider.setEnabled (true);\r
-this.thresholdValue.setEnabled (true);\r
-var acg =  new jalview.schemes.GraduatedColor (this.minColour.getBackground (), this.maxColour.getBackground (), this.min, this.max);\r
-acg.setColourByLabel (this.colourFromLabel.getState ());\r
-this.maxColour.setEnabled (!this.colourFromLabel.getState ());\r
-this.minColour.setEnabled (!this.colourFromLabel.getState ());\r
-if (aboveThreshold == -1) {\r
-this.slider.setEnabled (false);\r
-this.thresholdValue.setEnabled (false);\r
-this.thresholdValue.setText ("");\r
-} else if (aboveThreshold != -1 && this.threshline == null) {\r
-this.threshline =  new jalview.datamodel.GraphLine ((this.max - this.min) / 2, "Threshold", java.awt.Color.black);\r
-}if (aboveThreshold != -1) {\r
-this.adjusting = true;\r
-acg.setThresh (this.threshline.value);\r
-var range = this.max * 1000 - this.min * 1000;\r
-this.slider.setMinimum (Clazz.floatToInt (this.min * 1000));\r
-this.slider.setMaximum (Clazz.floatToInt (this.max * 1000));\r
-this.slider.setValue (Clazz.floatToInt (this.threshline.value * 1000));\r
-this.thresholdValue.setText (this.threshline.value + "");\r
-this.slider.setEnabled (true);\r
-this.thresholdValue.setEnabled (true);\r
-this.adjusting = false;\r
-}acg.setThreshType (aboveThreshold);\r
-if (this.thresholdIsMin.getState () && aboveThreshold != -1) {\r
-if (aboveThreshold == 1) {\r
-acg =  new jalview.schemes.GraduatedColor (acg, this.threshline.value, this.max);\r
-} else {\r
-acg =  new jalview.schemes.GraduatedColor (acg, this.min, this.threshline.value);\r
-}}this.fr.setColour (this.type, acg);\r
-this.cs = acg;\r
-jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());\r
-});\r
-Clazz.defineMethod (c$, "reset", \r
-function () {\r
-this.fr.setColour (this.type, this.oldcs);\r
-jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());\r
-});\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-if (evt.getSource () === this.minColour || evt.getSource () === this.maxColour) {\r
-this.actionPerformed ( new java.awt.event.ActionEvent (evt.getSource (), 1, "Clicked"));\r
-} else {\r
-jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "awt2swing.Checkbox", "$.Choice", "$.Scrollbar", "$.TextField"], "jalview.appletgui.FeatureColourChooser", ["awt2swing.Label", "jalview.appletgui.JVDialog", "$.PaintRefresher", "$.UserDefinedColours", "jalview.datamodel.GraphLine", "jalview.schemes.GraduatedColor", "jalview.util.MessageManager", "java.awt.Color", "$.Dimension", "$.FlowLayout", "$.Font", "$.GridLayout", "java.awt.event.ActionEvent", "java.lang.Float"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.frame = null;
+this.owner = null;
+this.fr = null;
+this.fs = null;
+this.cs = null;
+this.oldcs = null;
+this.oldgroupColours = null;
+this.adjusting = false;
+this.min = 0;
+this.max = 0;
+this.type = null;
+this.af = null;
+this.minColour = null;
+this.maxColour = null;
+this.jPanel1 = null;
+this.jPanel2 = null;
+this.threshold = null;
+this.jPanel3 = null;
+this.jPanel4 = null;
+this.slider = null;
+this.thresholdValue = null;
+this.thresholdIsMin = null;
+this.colourFromLabel = null;
+this.threshline = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "FeatureColourChooser", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.ItemListener, java.awt.event.MouseListener]);
+Clazz.prepareFields (c$, function () {
+this.minColour =  new awt2swing.Panel ();
+this.maxColour =  new awt2swing.Panel ();
+this.jPanel1 =  new awt2swing.Panel ();
+this.jPanel2 =  new awt2swing.Panel ();
+this.threshold =  new awt2swing.Choice ();
+this.jPanel3 =  new awt2swing.Panel ();
+this.jPanel4 =  new awt2swing.Panel ();
+this.slider =  new awt2swing.Scrollbar (0);
+this.thresholdValue =  new awt2swing.TextField (20);
+this.thresholdIsMin =  new awt2swing.Checkbox ();
+this.colourFromLabel =  new awt2swing.Checkbox ();
+});
+Clazz.makeConstructor (c$, 
+function (af, type) {
+Clazz.superConstructor (this, jalview.appletgui.FeatureColourChooser, []);
+this.af = af;
+this.init (af.getSeqcanvas ().getFeatureRenderer (), type);
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz.makeConstructor (c$, 
+function (fsettings, type) {
+Clazz.superConstructor (this, jalview.appletgui.FeatureColourChooser, []);
+this.fs = fsettings;
+this.init (fsettings.fr, type);
+}, "jalview.appletgui.FeatureSettings,~S");
+Clazz.defineMethod (c$, "init", 
+($fz = function (frenderer, type) {
+this.type = type;
+this.fr = frenderer;
+var mm = (this.fr.getMinMax ().get (type))[0];
+this.min = mm[0];
+this.max = mm[1];
+this.oldcs = this.fr.getFeatureColours ().get (type);
+if (Clazz.instanceOf (this.oldcs, jalview.schemes.GraduatedColor)) {
+this.cs =  new jalview.schemes.GraduatedColor (this.oldcs, this.min, this.max);
+} else {
+var bl = java.awt.Color.black;
+if (Clazz.instanceOf (this.oldcs, java.awt.Color)) {
+bl = this.oldcs;
+}this.cs =  new jalview.schemes.GraduatedColor (java.awt.Color.white, bl, mm[0], mm[1]);
+}this.minColour.setBackground (this.cs.getMinColor ());
+this.maxColour.setBackground (this.cs.getMaxColor ());
+this.minColour.setForeground (this.cs.getMinColor ());
+this.maxColour.setForeground (this.cs.getMaxColor ());
+this.colourFromLabel.setState (this.cs.isColourByLabel ());
+this.adjusting = true;
+try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+this.threshold.select (new Integer (this.cs.getThreshType () == -1 ? 0 : this.cs.getThreshType () == 1 ? 1 : 2));
+this.adjusting = false;
+this.changeColour ();
+this.colourFromLabel.addItemListener (this);
+this.slider.addAdjustmentListener (this);
+this.slider.addMouseListener (this);
+this.owner = (this.af != null) ? this.af : this.fs.frame;
+this.frame =  new jalview.appletgui.JVDialog (this.owner, jalview.util.MessageManager.formatMessage ("label.graduated_color_for_params",  Clazz.newArray (-1, [type])), true, 480, 248);
+this.frame.setMainPanel (this);
+this.validate ();
+this.frame.setVisible (true);
+if (this.frame.accept) {
+this.changeColour ();
+} else {
+this.reset ();
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+this.frame.setVisible (false);
+}}, $fz.isPrivate = true, $fz), "jalview.appletgui.FeatureRenderer,~S");
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.appletgui.FeatureColourChooser, []);
+try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+Clazz.defineMethod (c$, "jbInit", 
+($fz = function () {
+var minLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.min"));
+var maxLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.max"));
+minLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));
+maxLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.minColour.setBounds (0, 0, 40, 27);
+this.maxColour.setBounds (0, 0, 40, 27);
+this.minColour.addMouseListener (this);
+this.maxColour.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.maxColour.addMouseListener (this);
+this.thresholdIsMin.addItemListener (this);
+this.setLayout ( new java.awt.GridLayout (4, 1));
+this.jPanel1.setLayout ( new java.awt.FlowLayout ());
+this.jPanel2.setLayout ( new java.awt.FlowLayout ());
+this.jPanel3.setLayout ( new java.awt.GridLayout (1, 1));
+this.jPanel4.setLayout ( new java.awt.FlowLayout ());
+this.jPanel1.setBackground (java.awt.Color.white);
+this.jPanel2.setBackground (java.awt.Color.white);
+this.jPanel4.setBackground (java.awt.Color.white);
+this.threshold.addItemListener (this);
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));
+this.thresholdValue.addActionListener (this);
+this.slider.setBackground (java.awt.Color.white);
+this.slider.setEnabled (false);
+this.slider.setSize ( new java.awt.Dimension (93, 21));
+this.thresholdValue.setEnabled (false);
+this.thresholdValue.setSize ( new java.awt.Dimension (79, 22));
+this.thresholdValue.setColumns (5);
+this.jPanel3.setBackground (java.awt.Color.white);
+this.colourFromLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.colourFromLabel.setLabel (jalview.util.MessageManager.getString ("label.colour_by_label"));
+this.colourFromLabel.setSize ( new java.awt.Dimension (139, 22));
+this.thresholdIsMin.setBackground (java.awt.Color.white);
+this.thresholdIsMin.setLabel (jalview.util.MessageManager.getString ("label.threshold_minmax"));
+this.thresholdIsMin.setSize ( new java.awt.Dimension (135, 23));
+this.jPanel1.add (minLabel);
+this.jPanel1.add (this.minColour);
+this.jPanel1.add (maxLabel);
+this.jPanel1.add (this.maxColour);
+this.jPanel1.add (this.colourFromLabel);
+this.jPanel2.add (this.threshold);
+this.jPanel3.add (this.slider);
+this.jPanel4.add (this.thresholdValue);
+this.jPanel4.add (this.thresholdIsMin);
+this.add (this.jPanel1);
+this.add (this.jPanel2);
+this.add (this.jPanel3);
+this.add (this.jPanel4);
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.thresholdValue) {
+try {
+var f =  new Float (this.thresholdValue.getText ()).floatValue ();
+this.slider.setValue (Clazz.floatToInt (f * 1000));
+this.adjustmentValueChanged (null);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+} else if (evt.getSource () === this.minColour) {
+this.minColour_actionPerformed (null);
+} else if (evt.getSource () === this.maxColour) {
+this.maxColour_actionPerformed (null);
+} else {
+this.changeColour ();
+}}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+this.maxColour.setEnabled (!this.colourFromLabel.getState ());
+this.minColour.setEnabled (!this.colourFromLabel.getState ());
+this.changeColour ();
+}, "java.awt.event.ItemEvent");
+Clazz.overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+if (!this.adjusting) {
+this.thresholdValue.setText ((this.slider.getValue () / 1000) + "");
+this.valueChanged ();
+}}, "java.awt.event.AdjustmentEvent");
+Clazz.defineMethod (c$, "valueChanged", 
+function () {
+this.threshline.value = this.slider.getValue () / 1000;
+this.cs.setThresh (this.threshline.value);
+this.changeColour ();
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+});
+Clazz.defineMethod (c$, "minColour_actionPerformed", 
+function (newCol) {
+if (newCol == null) {
+var udc =  new jalview.appletgui.UserDefinedColours (this, this.minColour.getBackground (), this.owner, jalview.util.MessageManager.getString ("label.select_colour_minimum_value"));
+} else {
+this.minColour.setBackground (newCol);
+this.minColour.setForeground (newCol);
+this.minColour.repaint ();
+this.changeColour ();
+}}, "java.awt.Color");
+Clazz.defineMethod (c$, "maxColour_actionPerformed", 
+function (newCol) {
+if (newCol == null) {
+var udc =  new jalview.appletgui.UserDefinedColours (this, this.maxColour.getBackground (), this.owner, jalview.util.MessageManager.getString ("label.select_colour_maximum_value"));
+} else {
+this.maxColour.setBackground (newCol);
+this.maxColour.setForeground (newCol);
+this.maxColour.repaint ();
+this.changeColour ();
+}}, "java.awt.Color");
+Clazz.defineMethod (c$, "changeColour", 
+function () {
+if (this.adjusting) {
+return;
+}var aboveThreshold = -1;
+if (this.threshold.getSelectedIndex () == 1) {
+aboveThreshold = 1;
+} else if (this.threshold.getSelectedIndex () == 2) {
+aboveThreshold = 0;
+}this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+var acg =  new jalview.schemes.GraduatedColor (this.minColour.getBackground (), this.maxColour.getBackground (), this.min, this.max);
+acg.setColourByLabel (this.colourFromLabel.getState ());
+this.maxColour.setEnabled (!this.colourFromLabel.getState ());
+this.minColour.setEnabled (!this.colourFromLabel.getState ());
+if (aboveThreshold == -1) {
+this.slider.setEnabled (false);
+this.thresholdValue.setEnabled (false);
+this.thresholdValue.setText ("");
+} else if (aboveThreshold != -1 && this.threshline == null) {
+this.threshline =  new jalview.datamodel.GraphLine ((this.max - this.min) / 2, "Threshold", java.awt.Color.black);
+}if (aboveThreshold != -1) {
+this.adjusting = true;
+acg.setThresh (this.threshline.value);
+var range = this.max * 1000 - this.min * 1000;
+this.slider.setMinimum (Clazz.floatToInt (this.min * 1000));
+this.slider.setMaximum (Clazz.floatToInt (this.max * 1000));
+this.slider.setValue (Clazz.floatToInt (this.threshline.value * 1000));
+this.thresholdValue.setText (this.threshline.value + "");
+this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+this.adjusting = false;
+}acg.setThreshType (aboveThreshold);
+if (this.thresholdIsMin.getState () && aboveThreshold != -1) {
+if (aboveThreshold == 1) {
+acg =  new jalview.schemes.GraduatedColor (acg, this.threshline.value, this.max);
+} else {
+acg =  new jalview.schemes.GraduatedColor (acg, this.min, this.threshline.value);
+}}this.fr.setColour (this.type, acg);
+this.cs = acg;
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+});
+Clazz.defineMethod (c$, "reset", 
+function () {
+this.fr.setColour (this.type, this.oldcs);
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+});
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+if (evt.getSource () === this.minColour || evt.getSource () === this.maxColour) {
+this.actionPerformed ( new java.awt.event.ActionEvent (evt.getSource (), 1, "Clicked"));
+} else {
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+});
index 94cc9b3..6582fe7 100644 (file)
Binary files a/bin/jalview/appletgui/FeatureRenderer.class and b/bin/jalview/appletgui/FeatureRenderer.class differ
index 05b643c..3d688fd 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "jalview.renderer.seqfeatures.FeatureRenderer"], "jalview.appletgui.FeatureRenderer", ["awt2swing.Button", "$.Choice", "$.Label", "$.ScrollPane", "$.TextArea", "$.TextField", "jalview.appletgui.FeatureColourChooser", "$.JVDialog", "$.UserDefinedColours", "jalview.datamodel.SearchResults", "jalview.io.FeaturesFile", "jalview.schemes.GraduatedColor", "$.UserColourScheme", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.Font", "$.GridLayout", "java.awt.event.ActionListener", "$.ItemListener", "$.MouseAdapter", "java.lang.Error"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.featureLinks = null;\r
-this.featureIndex = 0;\r
-this.deleteFeature = false;\r
-this.colourPanel = null;\r
-if (!Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer.FeatureColourPanel")) {\r
-jalview.appletgui.FeatureRenderer.$FeatureRenderer$FeatureColourPanel$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "FeatureRenderer", jalview.renderer.seqfeatures.FeatureRenderer);\r
-Clazz.makeConstructor (c$, \r
-function (av) {\r
-Clazz.superConstructor (this, jalview.appletgui.FeatureRenderer);\r
-this.av = av;\r
-this.setTransparencyAvailable (!System.getProperty ("java.version").startsWith ("1.1"));\r
-}, "jalview.viewmodel.AlignmentViewport");\r
-Clazz.defineMethod (c$, "amendFeatures", \r
-function (sequences, features, newFeatures, ap) {\r
-var bigPanel =  new awt2swing.Panel ( new java.awt.BorderLayout ());\r
-var name =  new awt2swing.TextField (16);\r
-var source =  new awt2swing.TextField (16);\r
-var description =  new awt2swing.TextArea (3, 35);\r
-var start =  new awt2swing.TextField (8);\r
-var end =  new awt2swing.TextField (8);\r
-var overlaps;\r
-var deleteButton =  new awt2swing.Button ("Delete");\r
-this.deleteFeature = false;\r
-this.colourPanel = Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer.FeatureColourPanel, this, null);\r
-this.colourPanel.setSize (110, 15);\r
-var fr = this;\r
-var panel =  new awt2swing.Panel ( new java.awt.GridLayout (3, 1));\r
-this.featureIndex = 0;\r
-var tmp;\r
-if (!newFeatures && features.length > 1) {\r
-panel =  new awt2swing.Panel ( new java.awt.GridLayout (4, 1));\r
-tmp =  new awt2swing.Panel ();\r
-tmp.add ( new awt2swing.Label ("Select Feature: "));\r
-overlaps =  new awt2swing.Choice ();\r
-for (var i = 0; i < features.length; i++) {\r
-var item = features[i].getType () + "/" + features[i].getBegin () + "-" + features[i].getEnd ();\r
-if (features[i].getFeatureGroup () != null) {\r
-item += " (" + features[i].getFeatureGroup () + ")";\r
-}overlaps.addItem (item);\r
-}\r
-tmp.add (overlaps);\r
-overlaps.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$1") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$1, this, Clazz.cloneFinals ("overlaps", overlaps, "name", name, "features", features, "description", description, "source", source, "start", start, "end", end, "sequences", sequences, "ap", ap))));\r
-panel.add (tmp);\r
-}tmp =  new awt2swing.Panel ();\r
-panel.add (tmp);\r
-tmp.add ( new awt2swing.Label ("Name: ", 4));\r
-tmp.add (name);\r
-tmp =  new awt2swing.Panel ();\r
-panel.add (tmp);\r
-tmp.add ( new awt2swing.Label ("Group: ", 4));\r
-tmp.add (source);\r
-tmp =  new awt2swing.Panel ();\r
-panel.add (tmp);\r
-tmp.add ( new awt2swing.Label ("Colour: ", 4));\r
-tmp.add (this.colourPanel);\r
-bigPanel.add (panel, "North");\r
-panel =  new awt2swing.Panel ();\r
-panel.add ( new awt2swing.Label ("Description: ", 4));\r
-panel.add ( new awt2swing.ScrollPane ().add (description));\r
-if (!newFeatures) {\r
-bigPanel.add (panel, "South");\r
-panel =  new awt2swing.Panel ();\r
-panel.add ( new awt2swing.Label (" Start:", 4));\r
-panel.add (start);\r
-panel.add ( new awt2swing.Label ("  End:", 4));\r
-panel.add (end);\r
-bigPanel.add (panel, "Center");\r
-} else {\r
-bigPanel.add (panel, "Center");\r
-}if (jalview.appletgui.FeatureRenderer.lastFeatureAdded == null) {\r
-if (features[0].type != null) {\r
-jalview.appletgui.FeatureRenderer.lastFeatureAdded = features[0].type;\r
-} else {\r
-jalview.appletgui.FeatureRenderer.lastFeatureAdded = "feature_1";\r
-}}if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded == null) {\r
-if (features[0].featureGroup != null) {\r
-jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = features[0].featureGroup;\r
-} else {\r
-jalview.appletgui.FeatureRenderer.lastFeatureAdded = "Jalview";\r
-}}var title = newFeatures ? jalview.util.MessageManager.getString ("label.create_new_sequence_features") : jalview.util.MessageManager.formatMessage ("label.amend_delete_features",  Clazz.newArray (-1, [sequences[0].getName ()]));\r
-var dialog =  new jalview.appletgui.JVDialog (ap.alignFrame, title, true, 385, 240);\r
-dialog.setMainPanel (bigPanel);\r
-if (newFeatures) {\r
-name.setText (jalview.appletgui.FeatureRenderer.lastFeatureAdded);\r
-source.setText (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded);\r
-} else {\r
-dialog.ok.setLabel (jalview.util.MessageManager.getString ("label.amend"));\r
-dialog.buttonPanel.add (deleteButton, 1);\r
-deleteButton.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$2") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$2, this, Clazz.cloneFinals ("dialog", dialog))));\r
-name.setText (features[0].getType ());\r
-source.setText (features[0].getFeatureGroup ());\r
-}start.setText (features[0].getBegin () + "");\r
-end.setText (features[0].getEnd () + "");\r
-description.setText (features[0].getDescription ());\r
-var col = this.getColour (name.getText ());\r
-if (col == null) {\r
-col =  new jalview.schemes.UserColourScheme ().createColourFromName (name.getText ());\r
-}var fcol = this.getFeatureStyle (name.getText ());\r
-this.colourPanel.updateColor (fcol);\r
-dialog.setResizable (true);\r
-this.colourPanel.addMouseListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$3") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$3, this, Clazz.cloneFinals ("fr", fr, "ap", ap, "name", name, "dialog", dialog))));\r
-dialog.setVisible (true);\r
-var ffile =  new jalview.io.FeaturesFile ();\r
-if (dialog.accept) {\r
-this.lastSeq = null;\r
-jalview.appletgui.FeatureRenderer.lastFeatureAdded = name.getText ().trim ();\r
-jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = source.getText ().trim ();\r
-jalview.appletgui.FeatureRenderer.lastDescriptionAdded = description.getText ().$replace ('\n', ' ');\r
-}if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded != null && jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded.length < 1) {\r
-jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = null;\r
-}if (!newFeatures) {\r
-var sf = features[this.featureIndex];\r
-if (dialog.accept) {\r
-sf.type = jalview.appletgui.FeatureRenderer.lastFeatureAdded;\r
-sf.featureGroup = jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded;\r
-sf.description = jalview.appletgui.FeatureRenderer.lastDescriptionAdded;\r
-if (!this.colourPanel.isGcol) {\r
-this.setColour (sf.type, this.colourPanel.getBackground ());\r
-}try {\r
-sf.begin = Integer.parseInt (start.getText ());\r
-sf.end = Integer.parseInt (end.getText ());\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-ffile.parseDescriptionHTML (sf, false);\r
-this.setVisible (jalview.appletgui.FeatureRenderer.lastFeatureAdded);\r
-}if (this.deleteFeature) {\r
-sequences[0].deleteFeature (sf);\r
-}} else {\r
-if (dialog.accept && name.getText ().length > 0) {\r
-for (var i = 0; i < sequences.length; i++) {\r
-features[i].type = jalview.appletgui.FeatureRenderer.lastFeatureAdded;\r
-features[i].featureGroup = jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded;\r
-features[i].description = jalview.appletgui.FeatureRenderer.lastDescriptionAdded;\r
-sequences[i].addSequenceFeature (features[i]);\r
-ffile.parseDescriptionHTML (features[i], false);\r
-}\r
-var newColour = this.colourPanel.getBackground ();\r
-if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded != null) {\r
-this.setGroupVisibility (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded, true);\r
-}this.setColour (jalview.appletgui.FeatureRenderer.lastFeatureAdded, newColour);\r
-this.setVisible (jalview.appletgui.FeatureRenderer.lastFeatureAdded);\r
-this.findAllFeatures (false);\r
-} else {\r
-return false;\r
-}}if ((this.av).featureSettings != null) {\r
-(this.av).featureSettings.refreshTable ();\r
-}ap.paintAlignment (true);\r
-return true;\r
-}, "~A,~A,~B,jalview.appletgui.AlignmentPanel");\r
-c$.$FeatureRenderer$FeatureColourPanel$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.label = "";\r
-this.maxCol = null;\r
-this.isColourByLabel = false;\r
-this.isGcol = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui.FeatureRenderer, "FeatureColourPanel", awt2swing.Panel);\r
-Clazz.defineMethod (c$, "updateColor", \r
-function (a) {\r
-var b;\r
-var c = null;\r
-var d = null;\r
-var e = "";\r
-if (Clazz.instanceOf (a, java.awt.Color)) {\r
-this.isGcol = false;\r
-c = a;\r
-d = null;\r
-} else if (Clazz.instanceOf (a, jalview.schemes.GraduatedColor)) {\r
-this.isGcol = true;\r
-d = a;\r
-c = null;\r
-} else {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.invalid_colour_for_mycheckbox"));\r
-}if (c != null) {\r
-this.setBackground (b = c);\r
-} else {\r
-if (d.getThreshType () != -1) {\r
-e += " " + ((d.getThreshType () == 1) ? "(>)" : "(<)");\r
-}if (this.isColourByLabel = d.isColourByLabel ()) {\r
-this.setBackground (b = java.awt.Color.white);\r
-e += " (by Label)";\r
-} else {\r
-this.setBackground (b = d.getMinColor ());\r
-this.maxCol = d.getMaxColor ();\r
-}}this.label = e;\r
-this.setBackground (b);\r
-this.repaint ();\r
-}, "~O");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.appletgui.FeatureRenderer.FeatureColourPanel, [null]);\r
-});\r
-Clazz.defineMethod (c$, "PaintComponent", \r
-function (a) {\r
-var b = this.getSize ();\r
-if (this.isGcol) {\r
-if (this.isColourByLabel) {\r
-a.setColor (java.awt.Color.white);\r
-a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);\r
-a.setColor (java.awt.Color.black);\r
-var c =  new java.awt.Font ("Verdana", 0, 10);\r
-a.setFont (c);\r
-a.drawString (jalview.util.MessageManager.getString ("label.label"), 0, 0);\r
-} else {\r
-a.setColor (this.maxCol);\r
-a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);\r
-}}}, "java.awt.Graphics");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$FeatureRenderer$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$1", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (e) {\r
-var index = this.f$.overlaps.getSelectedIndex ();\r
-if (index != -1) {\r
-this.b$["jalview.appletgui.FeatureRenderer"].featureIndex = index;\r
-this.f$.name.setText (this.f$.features[index].getType ());\r
-this.f$.description.setText (this.f$.features[index].getDescription ());\r
-this.f$.source.setText (this.f$.features[index].getFeatureGroup ());\r
-this.f$.start.setText (this.f$.features[index].getBegin () + "");\r
-this.f$.end.setText (this.f$.features[index].getEnd () + "");\r
-var highlight =  new jalview.datamodel.SearchResults ();\r
-highlight.addResult (this.f$.sequences[0], this.f$.features[index].getBegin (), this.f$.features[index].getEnd ());\r
-this.f$.ap.seqPanel.seqCanvas.highlightSearchResults (highlight);\r
-}var col = this.b$["jalview.appletgui.FeatureRenderer"].getFeatureStyle (this.f$.name.getText ());\r
-if (col == null) {\r
-col =  new jalview.schemes.UserColourScheme ().createColourFromName (this.f$.name.getText ());\r
-}this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.updateColor (col);\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$FeatureRenderer$2$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$2", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-this.b$["jalview.appletgui.FeatureRenderer"].deleteFeature = true;\r
-this.f$.dialog.setVisible (false);\r
-}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$FeatureRenderer$3$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$3", java.awt.event.MouseAdapter);\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-if (!this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.isGcol) {\r
- new jalview.appletgui.UserDefinedColours (this.f$.fr, this.f$.ap.alignFrame);\r
-} else {\r
-var fcc =  new jalview.appletgui.FeatureColourChooser (this.f$.ap.alignFrame, this.f$.name.getText ());\r
-this.f$.dialog.transferFocus ();\r
-}}, "java.awt.event.MouseEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"lastFeatureAdded", null,\r
-"lastFeatureGroupAdded", null,\r
-"lastDescriptionAdded", null);\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "jalview.renderer.seqfeatures.FeatureRenderer"], "jalview.appletgui.FeatureRenderer", ["awt2swing.Button", "$.Choice", "$.Label", "$.ScrollPane", "$.TextArea", "$.TextField", "jalview.appletgui.FeatureColourChooser", "$.JVDialog", "$.UserDefinedColours", "jalview.datamodel.SearchResults", "jalview.io.FeaturesFile", "jalview.schemes.GraduatedColor", "$.UserColourScheme", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.Font", "$.GridLayout", "java.awt.event.ActionListener", "$.ItemListener", "$.MouseAdapter", "java.lang.Error"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.featureLinks = null;
+this.featureIndex = 0;
+this.deleteFeature = false;
+this.colourPanel = null;
+if (!Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer.FeatureColourPanel")) {
+jalview.appletgui.FeatureRenderer.$FeatureRenderer$FeatureColourPanel$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "FeatureRenderer", jalview.renderer.seqfeatures.FeatureRenderer);
+Clazz.makeConstructor (c$, 
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.FeatureRenderer);
+this.av = av;
+this.setTransparencyAvailable (!System.getProperty ("java.version").startsWith ("1.1"));
+}, "jalview.viewmodel.AlignmentViewport");
+Clazz.defineMethod (c$, "amendFeatures", 
+function (sequences, features, newFeatures, ap) {
+var bigPanel =  new awt2swing.Panel ( new java.awt.BorderLayout ());
+var name =  new awt2swing.TextField (16);
+var source =  new awt2swing.TextField (16);
+var description =  new awt2swing.TextArea (3, 35);
+var start =  new awt2swing.TextField (8);
+var end =  new awt2swing.TextField (8);
+var overlaps;
+var deleteButton =  new awt2swing.Button ("Delete");
+this.deleteFeature = false;
+this.colourPanel = Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer.FeatureColourPanel, this, null);
+this.colourPanel.setSize (110, 15);
+var fr = this;
+var panel =  new awt2swing.Panel ( new java.awt.GridLayout (3, 1));
+this.featureIndex = 0;
+var tmp;
+if (!newFeatures && features.length > 1) {
+panel =  new awt2swing.Panel ( new java.awt.GridLayout (4, 1));
+tmp =  new awt2swing.Panel ();
+tmp.add ( new awt2swing.Label ("Select Feature: "));
+overlaps =  new awt2swing.Choice ();
+for (var i = 0; i < features.length; i++) {
+var item = features[i].getType () + "/" + features[i].getBegin () + "-" + features[i].getEnd ();
+if (features[i].getFeatureGroup () != null) {
+item += " (" + features[i].getFeatureGroup () + ")";
+}overlaps.addItem (item);
+}
+tmp.add (overlaps);
+overlaps.addItemListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$1") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$1, this, Clazz.cloneFinals ("overlaps", overlaps, "name", name, "features", features, "description", description, "source", source, "start", start, "end", end, "sequences", sequences, "ap", ap))));
+panel.add (tmp);
+}tmp =  new awt2swing.Panel ();
+panel.add (tmp);
+tmp.add ( new awt2swing.Label ("Name: ", 4));
+tmp.add (name);
+tmp =  new awt2swing.Panel ();
+panel.add (tmp);
+tmp.add ( new awt2swing.Label ("Group: ", 4));
+tmp.add (source);
+tmp =  new awt2swing.Panel ();
+panel.add (tmp);
+tmp.add ( new awt2swing.Label ("Colour: ", 4));
+tmp.add (this.colourPanel);
+bigPanel.add (panel, "North");
+panel =  new awt2swing.Panel ();
+panel.add ( new awt2swing.Label ("Description: ", 4));
+panel.add ( new awt2swing.ScrollPane ().add (description));
+if (!newFeatures) {
+bigPanel.add (panel, "South");
+panel =  new awt2swing.Panel ();
+panel.add ( new awt2swing.Label (" Start:", 4));
+panel.add (start);
+panel.add ( new awt2swing.Label ("  End:", 4));
+panel.add (end);
+bigPanel.add (panel, "Center");
+} else {
+bigPanel.add (panel, "Center");
+}if (jalview.appletgui.FeatureRenderer.lastFeatureAdded == null) {
+if (features[0].type != null) {
+jalview.appletgui.FeatureRenderer.lastFeatureAdded = features[0].type;
+} else {
+jalview.appletgui.FeatureRenderer.lastFeatureAdded = "feature_1";
+}}if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded == null) {
+if (features[0].featureGroup != null) {
+jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = features[0].featureGroup;
+} else {
+jalview.appletgui.FeatureRenderer.lastFeatureAdded = "Jalview";
+}}var title = newFeatures ? jalview.util.MessageManager.getString ("label.create_new_sequence_features") : jalview.util.MessageManager.formatMessage ("label.amend_delete_features",  Clazz.newArray (-1, [sequences[0].getName ()]));
+var dialog =  new jalview.appletgui.JVDialog (ap.alignFrame, title, true, 385, 240);
+dialog.setMainPanel (bigPanel);
+if (newFeatures) {
+name.setText (jalview.appletgui.FeatureRenderer.lastFeatureAdded);
+source.setText (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded);
+} else {
+dialog.ok.setLabel (jalview.util.MessageManager.getString ("label.amend"));
+dialog.buttonPanel.add (deleteButton, 1);
+deleteButton.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$2") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$2, this, Clazz.cloneFinals ("dialog", dialog))));
+name.setText (features[0].getType ());
+source.setText (features[0].getFeatureGroup ());
+}start.setText (features[0].getBegin () + "");
+end.setText (features[0].getEnd () + "");
+description.setText (features[0].getDescription ());
+var col = this.getColour (name.getText ());
+if (col == null) {
+col =  new jalview.schemes.UserColourScheme ().createColourFromName (name.getText ());
+}var fcol = this.getFeatureStyle (name.getText ());
+this.colourPanel.updateColor (fcol);
+dialog.setResizable (true);
+this.colourPanel.addMouseListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureRenderer$3") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureRenderer$3, this, Clazz.cloneFinals ("fr", fr, "ap", ap, "name", name, "dialog", dialog))));
+dialog.setVisible (true);
+var ffile =  new jalview.io.FeaturesFile ();
+if (dialog.accept) {
+this.lastSeq = null;
+jalview.appletgui.FeatureRenderer.lastFeatureAdded = name.getText ().trim ();
+jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = source.getText ().trim ();
+jalview.appletgui.FeatureRenderer.lastDescriptionAdded = description.getText ().$replace ('\n', ' ');
+}if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded != null && jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded.length < 1) {
+jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = null;
+}if (!newFeatures) {
+var sf = features[this.featureIndex];
+if (dialog.accept) {
+sf.type = jalview.appletgui.FeatureRenderer.lastFeatureAdded;
+sf.featureGroup = jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded;
+sf.description = jalview.appletgui.FeatureRenderer.lastDescriptionAdded;
+if (!this.colourPanel.isGcol) {
+this.setColour (sf.type, this.colourPanel.getBackground ());
+}try {
+sf.begin = Integer.parseInt (start.getText ());
+sf.end = Integer.parseInt (end.getText ());
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+ffile.parseDescriptionHTML (sf, false);
+this.setVisible (jalview.appletgui.FeatureRenderer.lastFeatureAdded);
+}if (this.deleteFeature) {
+sequences[0].deleteFeature (sf);
+}} else {
+if (dialog.accept && name.getText ().length > 0) {
+for (var i = 0; i < sequences.length; i++) {
+features[i].type = jalview.appletgui.FeatureRenderer.lastFeatureAdded;
+features[i].featureGroup = jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded;
+features[i].description = jalview.appletgui.FeatureRenderer.lastDescriptionAdded;
+sequences[i].addSequenceFeature (features[i]);
+ffile.parseDescriptionHTML (features[i], false);
+}
+var newColour = this.colourPanel.getBackground ();
+if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded != null) {
+this.setGroupVisibility (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded, true);
+}this.setColour (jalview.appletgui.FeatureRenderer.lastFeatureAdded, newColour);
+this.setVisible (jalview.appletgui.FeatureRenderer.lastFeatureAdded);
+this.findAllFeatures (false);
+} else {
+return false;
+}}if ((this.av).featureSettings != null) {
+(this.av).featureSettings.refreshTable ();
+}ap.paintAlignment (true);
+return true;
+}, "~A,~A,~B,jalview.appletgui.AlignmentPanel");
+c$.$FeatureRenderer$FeatureColourPanel$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.label = "";
+this.maxCol = null;
+this.isColourByLabel = false;
+this.isGcol = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.FeatureRenderer, "FeatureColourPanel", awt2swing.Panel);
+Clazz.defineMethod (c$, "updateColor", 
+function (a) {
+var b;
+var c = null;
+var d = null;
+var e = "";
+if (Clazz.instanceOf (a, java.awt.Color)) {
+this.isGcol = false;
+c = a;
+d = null;
+} else if (Clazz.instanceOf (a, jalview.schemes.GraduatedColor)) {
+this.isGcol = true;
+d = a;
+c = null;
+} else {
+throw  new Error (jalview.util.MessageManager.getString ("error.invalid_colour_for_mycheckbox"));
+}if (c != null) {
+this.setBackground (b = c);
+} else {
+if (d.getThreshType () != -1) {
+e += " " + ((d.getThreshType () == 1) ? "(>)" : "(<)");
+}if (this.isColourByLabel = d.isColourByLabel ()) {
+this.setBackground (b = java.awt.Color.white);
+e += " (by Label)";
+} else {
+this.setBackground (b = d.getMinColor ());
+this.maxCol = d.getMaxColor ();
+}}this.label = e;
+this.setBackground (b);
+this.repaint ();
+}, "~O");
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.appletgui.FeatureRenderer.FeatureColourPanel, [null]);
+});
+Clazz.defineMethod (c$, "PaintComponent", 
+function (a) {
+var b = this.getSize ();
+if (this.isGcol) {
+if (this.isColourByLabel) {
+a.setColor (java.awt.Color.white);
+a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);
+a.setColor (java.awt.Color.black);
+var c =  new java.awt.Font ("Verdana", 0, 10);
+a.setFont (c);
+a.drawString (jalview.util.MessageManager.getString ("label.label"), 0, 0);
+} else {
+a.setColor (this.maxCol);
+a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);
+}}}, "java.awt.Graphics");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureRenderer$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$1", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (e) {
+var index = this.f$.overlaps.getSelectedIndex ();
+if (index != -1) {
+this.b$["jalview.appletgui.FeatureRenderer"].featureIndex = index;
+this.f$.name.setText (this.f$.features[index].getType ());
+this.f$.description.setText (this.f$.features[index].getDescription ());
+this.f$.source.setText (this.f$.features[index].getFeatureGroup ());
+this.f$.start.setText (this.f$.features[index].getBegin () + "");
+this.f$.end.setText (this.f$.features[index].getEnd () + "");
+var highlight =  new jalview.datamodel.SearchResults ();
+highlight.addResult (this.f$.sequences[0], this.f$.features[index].getBegin (), this.f$.features[index].getEnd ());
+this.f$.ap.seqPanel.seqCanvas.highlightSearchResults (highlight);
+}var col = this.b$["jalview.appletgui.FeatureRenderer"].getFeatureStyle (this.f$.name.getText ());
+if (col == null) {
+col =  new jalview.schemes.UserColourScheme ().createColourFromName (this.f$.name.getText ());
+}this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.updateColor (col);
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureRenderer$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$2", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+this.b$["jalview.appletgui.FeatureRenderer"].deleteFeature = true;
+this.f$.dialog.setVisible (false);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureRenderer$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureRenderer$3", java.awt.event.MouseAdapter);
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+if (!this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.isGcol) {
+ new jalview.appletgui.UserDefinedColours (this.f$.fr, this.f$.ap.alignFrame);
+} else {
+var fcc =  new jalview.appletgui.FeatureColourChooser (this.f$.ap.alignFrame, this.f$.name.getText ());
+this.f$.dialog.transferFocus ();
+}}, "java.awt.event.MouseEvent");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"lastFeatureAdded", null,
+"lastFeatureGroupAdded", null,
+"lastDescriptionAdded", null);
+});
index c10ac3f..cc92844 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Checkbox", "$.Panel", "jalview.api.FeatureSettingsControllerI", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.FeatureSettings", ["awt2swing.Button", "$.Frame", "$.Label", "$.MenuItem", "$.PopupMenu", "$.ScrollPane", "$.Scrollbar", "jalview.appletgui.FeatureColourChooser", "$.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.schemes.GraduatedColor", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.Font", "$.GridLayout", "$.Toolkit", "java.awt.event.WindowAdapter", "java.lang.Boolean", "$.Error", "java.util.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.fr = null;\r
-this.ap = null;\r
-this.av = null;\r
-this.frame = null;\r
-this.groupPanel = null;\r
-this.featurePanel = null;\r
-this.scrollPane = null;\r
-this.linkImage = null;\r
-this.transparency = null;\r
-this.groupItemListener = null;\r
-this.selectedCheck = null;\r
-this.dragging = false;\r
-if (!Clazz.isClassDefined ("jalview.appletgui.FeatureSettings.MyCheckbox")) {\r
-jalview.appletgui.FeatureSettings.$FeatureSettings$MyCheckbox$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "FeatureSettings", awt2swing.Panel, [java.awt.event.ItemListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.ActionListener, java.awt.event.AdjustmentListener, jalview.api.FeatureSettingsControllerI]);\r
-Clazz.prepareFields (c$, function () {\r
-this.featurePanel =  new awt2swing.Panel ();\r
-this.groupItemListener = ((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$1") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$1, this, null));\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.FeatureSettings, []);\r
-this.ap = ap;\r
-this.av = ap.av;\r
-ap.av.featureSettings = this;\r
-this.fr = ap.seqPanel.seqCanvas.getFeatureRenderer ();\r
-this.transparency =  new awt2swing.Scrollbar (0, 100 - Clazz.floatToInt (this.fr.getTransparency () * 100), 1, 1, 100);\r
-if (this.fr.isTransparencyAvailable ()) {\r
-this.transparency.addAdjustmentListener (this);\r
-} else {\r
-this.transparency.setEnabled (false);\r
-}var url = this.getClass ().getResource ("/images/link.gif");\r
-if (url != null) {\r
-this.linkImage = java.awt.Toolkit.getDefaultToolkit ().getImage (url);\r
-}if (this.av.isShowSequenceFeatures () || !this.fr.hasRenderOrder ()) {\r
-this.fr.findAllFeatures (true);\r
-}this.discoverAllFeatureData ();\r
-this.setLayout ( new java.awt.BorderLayout ());\r
-this.scrollPane =  new awt2swing.ScrollPane ();\r
-this.scrollPane.add (this.featurePanel);\r
-if (this.fr.getAllFeatureColours () != null && this.fr.getAllFeatureColours ().size () > 0) {\r
-this.add (this.scrollPane, "Center");\r
-}var invert =  new awt2swing.Button ("Invert Selection");\r
-invert.addActionListener (this);\r
-var lowerPanel =  new awt2swing.Panel ( new java.awt.GridLayout (2, 1, 5, 10));\r
-lowerPanel.add (invert);\r
-var tPanel =  new awt2swing.Panel ( new java.awt.BorderLayout ());\r
-if (this.fr.isTransparencyAvailable ()) {\r
-tPanel.add (this.transparency, "Center");\r
-tPanel.add ( new awt2swing.Label ("Transparency"), "East");\r
-} else {\r
-tPanel.add ( new awt2swing.Label ("Transparency not available in this web browser"), "Center");\r
-}lowerPanel.add (tPanel, "South");\r
-this.add (lowerPanel, "South");\r
-if (this.groupPanel != null) {\r
-this.groupPanel.setLayout ( new java.awt.GridLayout (Clazz.doubleToInt ((this.fr.getFeatureGroupsSize ()) / 4) + 1, 4));\r
-this.groupPanel.validate ();\r
-this.add (this.groupPanel, "North");\r
-}this.frame =  new awt2swing.Frame ();\r
-this.frame.add (this);\r
-var me = this;\r
-this.frame.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$2") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$2, this, Clazz.cloneFinals ("me", me))));\r
-var height = this.featurePanel.getComponentCount () * 50 + 60;\r
-height = Math.max (200, height);\r
-height = Math.min (400, height);\r
-var width = 300;\r
-jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.feature_settings"), width, height);\r
-}, "jalview.appletgui.AlignmentPanel");\r
-Clazz.defineMethod (c$, "PaintComponent", \r
-function (g) {\r
-g.setColor (java.awt.Color.black);\r
-g.drawString (jalview.util.MessageManager.getString ("label.no_features_added_to_this_alignment"), 10, 20);\r
-g.drawString (jalview.util.MessageManager.getString ("label.features_can_be_added_from_searches_1"), 10, 40);\r
-g.drawString (jalview.util.MessageManager.getString ("label.features_can_be_added_from_searches_2"), 10, 60);\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "popupSort", \r
-function (check, minmax, x, y) {\r
-var type = check.type;\r
-var typeCol = this.fr.getFeatureStyle (type);\r
-var men =  new awt2swing.PopupMenu (jalview.util.MessageManager.formatMessage ("label.settings_for_type",  Clazz.newArray (-1, [type])));\r
-var scr =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sort_by_score"));\r
-men.add (scr);\r
-var me = this;\r
-scr.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$3") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$3, this, Clazz.cloneFinals ("me", me, "type", type))));\r
-var dens =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sort_by_density"));\r
-dens.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$4") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$4$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$4, this, Clazz.cloneFinals ("me", me, "type", type))));\r
-men.add (dens);\r
-if (minmax != null) {\r
-var typeMinMax = minmax.get (type);\r
-if (typeMinMax != null && (typeMinMax)[0] != null) {\r
-var mxcol =  new awt2swing.MenuItem ((Clazz.instanceOf (typeCol, java.awt.Color)) ? "Graduated Colour" : "Single Colour");\r
-men.add (mxcol);\r
-mxcol.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$5") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$5$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$5, this, Clazz.cloneFinals ("typeCol", typeCol, "me", me, "type", type, "check", check))));\r
-}}this.featurePanel.add (men);\r
-men.show (this.featurePanel, x, y);\r
-}, "jalview.appletgui.FeatureSettings.MyCheckbox,java.util.Hashtable,~N,~N");\r
-Clazz.overrideMethod (c$, "discoverAllFeatureData", \r
-function () {\r
-if (this.fr.getAllFeatureColours () != null && this.fr.getAllFeatureColours ().size () > 0) {\r
-this.rebuildGroups ();\r
-}this.resetTable (false);\r
-});\r
-Clazz.defineMethod (c$, "rebuildGroups", \r
-function () {\r
-var rdrw = false;\r
-if (this.groupPanel == null) {\r
-this.groupPanel =  new awt2swing.Panel ();\r
-} else {\r
-rdrw = true;\r
-this.groupPanel.removeAll ();\r
-}for (var group, $group = this.fr.getFeatureGroups ().iterator (); $group.hasNext () && ((group = $group.next ()) || true);) {\r
-var vis = this.fr.checkGroupVisibility (group, false);\r
-var check = Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings.MyCheckbox, this, null, group, vis, (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (group)));\r
-check.addMouseListener (this);\r
-check.setFont ( new java.awt.Font ("Serif", 1, 12));\r
-check.addItemListener (this.groupItemListener);\r
-check.setVisible (vis);\r
-this.groupPanel.add (check);\r
-}\r
-if (rdrw) {\r
-this.groupPanel.validate ();\r
-}});\r
-Clazz.defineMethod (c$, "resetTable", \r
-function (groupsChanged) {\r
-var tmpfeatures;\r
-var group = null;\r
-var type;\r
-var visibleChecks =  new java.util.Vector ();\r
-var alignment = this.av.getAlignment ();\r
-for (var i = 0; i < alignment.getHeight (); i++) {\r
-if (alignment.getSequenceAt (i).getSequenceFeatures () == null) {\r
-continue;\r
-}tmpfeatures = alignment.getSequenceAt (i).getSequenceFeatures ();\r
-var index = 0;\r
-while (index < tmpfeatures.length) {\r
-group = tmpfeatures[index].featureGroup;\r
-if (group == null || this.fr.checkGroupVisibility (group, true)) {\r
-type = tmpfeatures[index].getType ();\r
-if (!visibleChecks.contains (type)) {\r
-visibleChecks.addElement (type);\r
-}}index++;\r
-}\r
-}\r
-var comps;\r
-var cSize = this.featurePanel.getComponentCount ();\r
-var check;\r
-for (var i = 0; i < cSize; i++) {\r
-comps = this.featurePanel.getComponents ();\r
-check = comps[i];\r
-if (!visibleChecks.contains (check.type)) {\r
-this.featurePanel.remove (i);\r
-cSize--;\r
-i--;\r
-}}\r
-if (this.fr.getRenderOrder () != null) {\r
-var rol = this.fr.getRenderOrder ();\r
-for (var ro = rol.size () - 1; ro > -1; ro--) {\r
-var item = rol.get (ro);\r
-if (!visibleChecks.contains (item)) {\r
-continue;\r
-}visibleChecks.removeElement (item);\r
-this.addCheck (false, item);\r
-}\r
-}var en = visibleChecks.elements ();\r
-while (en.hasMoreElements ()) {\r
-this.addCheck (groupsChanged, en.nextElement ().toString ());\r
-}\r
-this.featurePanel.setLayout ( new java.awt.GridLayout (this.featurePanel.getComponentCount (), 1, 10, 5));\r
-this.featurePanel.validate ();\r
-if (this.scrollPane != null) {\r
-this.scrollPane.validate ();\r
-}this.itemStateChanged (null);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "addCheck", \r
-function (groupsChanged, type) {\r
-var addCheck;\r
-var comps = this.featurePanel.getComponents ();\r
-var check;\r
-addCheck = true;\r
-for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {\r
-check = comps[i];\r
-if (check.type.equals (type)) {\r
-addCheck = false;\r
-break;\r
-}}\r
-if (addCheck) {\r
-var selected = false;\r
-if (groupsChanged || this.av.getFeaturesDisplayed ().isVisible (type)) {\r
-selected = true;\r
-}check = Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings.MyCheckbox, this, null, type, selected, (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (type)), this.fr.getFeatureStyle (type));\r
-check.addMouseListener (this);\r
-check.addMouseMotionListener (this);\r
-check.addItemListener (this);\r
-if (groupsChanged) {\r
-this.featurePanel.add (check, 0);\r
-} else {\r
-this.featurePanel.add (check);\r
-}}}, "~B,~S");\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {\r
-var check = this.featurePanel.getComponent (i);\r
-check.setState (!check.getState ());\r
-}\r
-this.selectionChanged ();\r
-}, "java.awt.event.ActionEvent");\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (evt) {\r
-this.selectionChanged ();\r
-}, "java.awt.event.ItemEvent");\r
-Clazz.defineMethod (c$, "selectionChanged", \r
-function () {\r
-var comps = this.featurePanel.getComponents ();\r
-var cSize = comps.length;\r
-var tmp =  Clazz.newArray (cSize, 3, null);\r
-var tmpSize = 0;\r
-for (var i = 0; i < cSize; i++) {\r
-var check = comps[i];\r
-tmp[tmpSize][0] = check.type;\r
-tmp[tmpSize][1] = this.fr.getFeatureStyle (check.type);\r
-tmp[tmpSize][2] =  new Boolean (check.getState ());\r
-tmpSize++;\r
-}\r
-var data =  Clazz.newArray (tmpSize, 3, null);\r
-System.arraycopy (tmp, 0, data, 0, tmpSize);\r
-this.fr.setFeaturePriority (data);\r
-this.ap.paintAlignment (true);\r
-});\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-this.selectedCheck = evt.getSource ();\r
-if (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (this.selectedCheck.type)) {\r
-if (evt.getX () > this.selectedCheck.stringWidth + 20) {\r
-evt.consume ();\r
-}}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseDragged", \r
-function (evt) {\r
-if ((evt.getSource ()).getParent () !== this.featurePanel) {\r
-return;\r
-}this.dragging = true;\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-if ((evt.getSource ()).getParent () !== this.featurePanel) {\r
-return;\r
-}var comp = null;\r
-var target = null;\r
-var height = evt.getY () + evt.getComponent ().getLocation ().y;\r
-if (height > this.featurePanel.getSize ().height) {\r
-comp = this.featurePanel.getComponent (this.featurePanel.getComponentCount () - 1);\r
-} else if (height < 0) {\r
-comp = this.featurePanel.getComponent (0);\r
-} else {\r
-comp = this.featurePanel.getComponentAt (evt.getX (), evt.getY () + evt.getComponent ().getLocation ().y);\r
-}if (comp != null && Clazz.instanceOf (comp, awt2swing.Checkbox)) {\r
-target = comp;\r
-}if (this.selectedCheck != null && target != null && this.selectedCheck !== target) {\r
-var targetIndex = -1;\r
-for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {\r
-if (target === this.featurePanel.getComponent (i)) {\r
-targetIndex = i;\r
-break;\r
-}}\r
-this.featurePanel.remove (this.selectedCheck);\r
-this.featurePanel.add (this.selectedCheck, targetIndex);\r
-this.featurePanel.validate ();\r
-this.itemStateChanged (null);\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "setUserColour", \r
-function (feature, originalColour) {\r
-if (Clazz.instanceOf (originalColour, java.awt.Color) || Clazz.instanceOf (originalColour, jalview.schemes.GraduatedColor)) {\r
-this.fr.setColour (feature, originalColour);\r
-} else {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_unsupported_feature_colour_object"));\r
-}this.refreshTable ();\r
-}, "~S,~O");\r
-Clazz.defineMethod (c$, "refreshTable", \r
-function () {\r
-this.featurePanel.removeAll ();\r
-this.resetTable (false);\r
-this.ap.paintAlignment (true);\r
-});\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-var check = evt.getSource ();\r
-if ((evt.getModifiers () & 4) != 0) {\r
-this.popupSort (check, this.fr.getMinMax (), evt.getX (), evt.getY ());\r
-}if (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (check.type)) {\r
-if (evt.getX () > check.stringWidth + 20) {\r
-evt.consume ();\r
-var link = this.fr.featureLinks.get (check.type).toString ();\r
-this.ap.alignFrame.showURL (link.substring (link.indexOf ("|") + 1), link.substring (0, link.indexOf ("|")));\r
-}}if (check.getParent () !== this.featurePanel) {\r
-return;\r
-}if (evt.getClickCount () > 1) {\r
-var fcol = this.fr.getFeatureStyle (check.type);\r
-if (Clazz.instanceOf (fcol, java.awt.Color)) {\r
- new jalview.appletgui.UserDefinedColours (this, check.type, fcol);\r
-} else {\r
- new jalview.appletgui.FeatureColourChooser (this, check.type);\r
-check.updateColor (this.fr.getFeatureStyle (check.type));\r
-}}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseMoved", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "adjustmentValueChanged", \r
-function (evt) {\r
-this.fr.setTransparency ((100 - this.transparency.getValue ()) / 100);\r
-this.ap.seqPanel.seqCanvas.repaint ();\r
-}, "java.awt.event.AdjustmentEvent");\r
-c$.$FeatureSettings$MyCheckbox$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.type = null;\r
-this.stringWidth = 0;\r
-this.hasLink = false;\r
-this.gcol = null;\r
-this.col = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui.FeatureSettings, "MyCheckbox", awt2swing.Checkbox);\r
-Clazz.defineMethod (c$, "updateColor", \r
-function (a) {\r
-if (Clazz.instanceOf (a, java.awt.Color)) {\r
-this.col = a;\r
-this.gcol = null;\r
-} else if (Clazz.instanceOf (a, jalview.schemes.GraduatedColor)) {\r
-this.gcol = a;\r
-this.col = null;\r
-} else {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.invalid_colour_for_mycheckbox"));\r
-}if (this.col != null) {\r
-this.setBackground (this.col);\r
-} else {\r
-var b = this.type;\r
-if (this.gcol.getThreshType () != -1) {\r
-b += " " + ((this.gcol.getThreshType () == 1) ? "(>)" : "(<)");\r
-}if (this.gcol.isColourByLabel ()) {\r
-this.setBackground (java.awt.Color.white);\r
-b += " (by Label)";\r
-} else {\r
-this.setBackground (this.gcol.getMinColor ());\r
-}this.setLabel (b);\r
-}this.repaint ();\r
-}, "~O");\r
-Clazz.makeConstructor (c$, \r
-function (a, b, c) {\r
-Clazz.superConstructor (this, jalview.appletgui.FeatureSettings.MyCheckbox, [a, b]);\r
-this.type = a;\r
-var d = this.b$["jalview.appletgui.FeatureSettings"].av.nullFrame.getFontMetrics (this.b$["jalview.appletgui.FeatureSettings"].av.nullFrame.getFont ());\r
-this.stringWidth = d.stringWidth (a);\r
-this.hasLink = c;\r
-}, "~S,~B,~B");\r
-Clazz.makeConstructor (c$, \r
-function (a, b, c, d) {\r
-this.construct (a, b, c);\r
-this.updateColor (d);\r
-}, "~S,~B,~B,~O");\r
-Clazz.defineMethod (c$, "PaintComponent", \r
-function (a) {\r
-var b = this.getSize ();\r
-if (this.gcol != null) {\r
-if (this.gcol.isColourByLabel ()) {\r
-a.setColor (java.awt.Color.white);\r
-a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);\r
-} else {\r
-var c = this.gcol.getMaxColor ();\r
-a.setColor (c);\r
-a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);\r
-}}if (this.hasLink) {\r
-a.drawImage (this.b$["jalview.appletgui.FeatureSettings"].linkImage, this.stringWidth + 25, Clazz.doubleToInt ((this.getSize ().height - this.b$["jalview.appletgui.FeatureSettings"].linkImage.getHeight (this)) / 2), this);\r
-}}, "java.awt.Graphics");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$FeatureSettings$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$1", null, java.awt.event.ItemListener);\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (evt) {\r
-var source = evt.getSource ();\r
-this.b$["jalview.appletgui.FeatureSettings"].fr.setGroupVisibility (source.getLabel (), source.getState ());\r
-this.b$["jalview.appletgui.FeatureSettings"].ap.seqPanel.seqCanvas.repaint ();\r
-if (this.b$["jalview.appletgui.FeatureSettings"].ap.overviewPanel != null) {\r
-this.b$["jalview.appletgui.FeatureSettings"].ap.overviewPanel.updateOverviewImage ();\r
-}this.b$["jalview.appletgui.FeatureSettings"].resetTable (true);\r
-return;\r
-}, "java.awt.event.ItemEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$FeatureSettings$2$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$2", java.awt.event.WindowAdapter);\r
-Clazz.overrideMethod (c$, "windowClosing", \r
-function (e) {\r
-if (this.f$.me.av.featureSettings === this.f$.me) {\r
-this.f$.me.av.featureSettings = null;\r
-this.f$.me.ap = null;\r
-this.f$.me.av = null;\r
-}}, "java.awt.event.WindowEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$FeatureSettings$3$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$3", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-this.f$.me.ap.alignFrame.avc.sortAlignmentByFeatureScore ( Clazz.newArray (-1, [this.f$.type]));\r
-}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$FeatureSettings$4$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$4", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-this.f$.me.ap.alignFrame.avc.sortAlignmentByFeatureDensity ( Clazz.newArray (-1, [this.f$.type]));\r
-}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$FeatureSettings$5$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$5", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-if (Clazz.instanceOf (this.f$.typeCol, java.awt.Color)) {\r
- new jalview.appletgui.FeatureColourChooser (this.f$.me, this.f$.type);\r
-this.f$.check.updateColor (this.b$["jalview.appletgui.FeatureSettings"].fr.getFeatureStyle (this.f$.type));\r
-} else {\r
- new jalview.appletgui.UserDefinedColours (this.f$.me, this.f$.check.type, (this.f$.typeCol));\r
-}}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Checkbox", "$.Panel", "jalview.api.FeatureSettingsControllerI", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.FeatureSettings", ["awt2swing.Button", "$.Frame", "$.Label", "$.MenuItem", "$.PopupMenu", "$.ScrollPane", "$.Scrollbar", "jalview.appletgui.FeatureColourChooser", "$.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.schemes.GraduatedColor", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.Font", "$.GridLayout", "$.Toolkit", "java.awt.event.WindowAdapter", "java.lang.Boolean", "$.Error", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.fr = null;
+this.ap = null;
+this.av = null;
+this.frame = null;
+this.groupPanel = null;
+this.featurePanel = null;
+this.scrollPane = null;
+this.linkImage = null;
+this.transparency = null;
+this.groupItemListener = null;
+this.selectedCheck = null;
+this.dragging = false;
+if (!Clazz.isClassDefined ("jalview.appletgui.FeatureSettings.MyCheckbox")) {
+jalview.appletgui.FeatureSettings.$FeatureSettings$MyCheckbox$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "FeatureSettings", awt2swing.Panel, [java.awt.event.ItemListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.ActionListener, java.awt.event.AdjustmentListener, jalview.api.FeatureSettingsControllerI]);
+Clazz.prepareFields (c$, function () {
+this.featurePanel =  new awt2swing.Panel ();
+this.groupItemListener = ((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$1") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$1, this, null));
+});
+Clazz.makeConstructor (c$, 
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.FeatureSettings, []);
+this.ap = ap;
+this.av = ap.av;
+ap.av.featureSettings = this;
+this.fr = ap.seqPanel.seqCanvas.getFeatureRenderer ();
+this.transparency =  new awt2swing.Scrollbar (0, 100 - Clazz.floatToInt (this.fr.getTransparency () * 100), 1, 1, 100);
+if (this.fr.isTransparencyAvailable ()) {
+this.transparency.addAdjustmentListener (this);
+} else {
+this.transparency.setEnabled (false);
+}var url = this.getClass ().getResource ("/images/link.gif");
+if (url != null) {
+this.linkImage = java.awt.Toolkit.getDefaultToolkit ().getImage (url);
+}if (this.av.isShowSequenceFeatures () || !this.fr.hasRenderOrder ()) {
+this.fr.findAllFeatures (true);
+}this.discoverAllFeatureData ();
+this.setLayout ( new java.awt.BorderLayout ());
+this.scrollPane =  new awt2swing.ScrollPane ();
+this.scrollPane.add (this.featurePanel);
+if (this.fr.getAllFeatureColours () != null && this.fr.getAllFeatureColours ().size () > 0) {
+this.add (this.scrollPane, "Center");
+}var invert =  new awt2swing.Button ("Invert Selection");
+invert.addActionListener (this);
+var lowerPanel =  new awt2swing.Panel ( new java.awt.GridLayout (2, 1, 5, 10));
+lowerPanel.add (invert);
+var tPanel =  new awt2swing.Panel ( new java.awt.BorderLayout ());
+if (this.fr.isTransparencyAvailable ()) {
+tPanel.add (this.transparency, "Center");
+tPanel.add ( new awt2swing.Label ("Transparency"), "East");
+} else {
+tPanel.add ( new awt2swing.Label ("Transparency not available in this web browser"), "Center");
+}lowerPanel.add (tPanel, "South");
+this.add (lowerPanel, "South");
+if (this.groupPanel != null) {
+this.groupPanel.setLayout ( new java.awt.GridLayout (Clazz.doubleToInt ((this.fr.getFeatureGroupsSize ()) / 4) + 1, 4));
+this.groupPanel.validate ();
+this.add (this.groupPanel, "North");
+}this.frame =  new awt2swing.Frame ();
+this.frame.add (this);
+var me = this;
+this.frame.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$2") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$2, this, Clazz.cloneFinals ("me", me))));
+var height = this.featurePanel.getComponentCount () * 50 + 60;
+height = Math.max (200, height);
+height = Math.min (400, height);
+var width = 300;
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.feature_settings"), width, height);
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.defineMethod (c$, "PaintComponent", 
+function (g) {
+g.setColor (java.awt.Color.black);
+g.drawString (jalview.util.MessageManager.getString ("label.no_features_added_to_this_alignment"), 10, 20);
+g.drawString (jalview.util.MessageManager.getString ("label.features_can_be_added_from_searches_1"), 10, 40);
+g.drawString (jalview.util.MessageManager.getString ("label.features_can_be_added_from_searches_2"), 10, 60);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "popupSort", 
+function (check, minmax, x, y) {
+var type = check.type;
+var typeCol = this.fr.getFeatureStyle (type);
+var men =  new awt2swing.PopupMenu (jalview.util.MessageManager.formatMessage ("label.settings_for_type",  Clazz.newArray (-1, [type])));
+var scr =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sort_by_score"));
+men.add (scr);
+var me = this;
+scr.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$3") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$3, this, Clazz.cloneFinals ("me", me, "type", type))));
+var dens =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sort_by_density"));
+dens.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$4") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$4$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$4, this, Clazz.cloneFinals ("me", me, "type", type))));
+men.add (dens);
+if (minmax != null) {
+var typeMinMax = minmax.get (type);
+if (typeMinMax != null && (typeMinMax)[0] != null) {
+var mxcol =  new awt2swing.MenuItem ((Clazz.instanceOf (typeCol, java.awt.Color)) ? "Graduated Colour" : "Single Colour");
+men.add (mxcol);
+mxcol.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FeatureSettings$5") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$5$ ()), Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings$5, this, Clazz.cloneFinals ("typeCol", typeCol, "me", me, "type", type, "check", check))));
+}}this.featurePanel.add (men);
+men.show (this.featurePanel, x, y);
+}, "jalview.appletgui.FeatureSettings.MyCheckbox,java.util.Hashtable,~N,~N");
+Clazz.overrideMethod (c$, "discoverAllFeatureData", 
+function () {
+if (this.fr.getAllFeatureColours () != null && this.fr.getAllFeatureColours ().size () > 0) {
+this.rebuildGroups ();
+}this.resetTable (false);
+});
+Clazz.defineMethod (c$, "rebuildGroups", 
+function () {
+var rdrw = false;
+if (this.groupPanel == null) {
+this.groupPanel =  new awt2swing.Panel ();
+} else {
+rdrw = true;
+this.groupPanel.removeAll ();
+}for (var group, $group = this.fr.getFeatureGroups ().iterator (); $group.hasNext () && ((group = $group.next ()) || true);) {
+var vis = this.fr.checkGroupVisibility (group, false);
+var check = Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings.MyCheckbox, this, null, group, vis, (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (group)));
+check.addMouseListener (this);
+check.setFont ( new java.awt.Font ("Serif", 1, 12));
+check.addItemListener (this.groupItemListener);
+check.setVisible (vis);
+this.groupPanel.add (check);
+}
+if (rdrw) {
+this.groupPanel.validate ();
+}});
+Clazz.defineMethod (c$, "resetTable", 
+function (groupsChanged) {
+var tmpfeatures;
+var group = null;
+var type;
+var visibleChecks =  new java.util.Vector ();
+var alignment = this.av.getAlignment ();
+for (var i = 0; i < alignment.getHeight (); i++) {
+if (alignment.getSequenceAt (i).getSequenceFeatures () == null) {
+continue;
+}tmpfeatures = alignment.getSequenceAt (i).getSequenceFeatures ();
+var index = 0;
+while (index < tmpfeatures.length) {
+group = tmpfeatures[index].featureGroup;
+if (group == null || this.fr.checkGroupVisibility (group, true)) {
+type = tmpfeatures[index].getType ();
+if (!visibleChecks.contains (type)) {
+visibleChecks.addElement (type);
+}}index++;
+}
+}
+var comps;
+var cSize = this.featurePanel.getComponentCount ();
+var check;
+for (var i = 0; i < cSize; i++) {
+comps = this.featurePanel.getComponents ();
+check = comps[i];
+if (!visibleChecks.contains (check.type)) {
+this.featurePanel.remove (i);
+cSize--;
+i--;
+}}
+if (this.fr.getRenderOrder () != null) {
+var rol = this.fr.getRenderOrder ();
+for (var ro = rol.size () - 1; ro > -1; ro--) {
+var item = rol.get (ro);
+if (!visibleChecks.contains (item)) {
+continue;
+}visibleChecks.removeElement (item);
+this.addCheck (false, item);
+}
+}var en = visibleChecks.elements ();
+while (en.hasMoreElements ()) {
+this.addCheck (groupsChanged, en.nextElement ().toString ());
+}
+this.featurePanel.setLayout ( new java.awt.GridLayout (this.featurePanel.getComponentCount (), 1, 10, 5));
+this.featurePanel.validate ();
+if (this.scrollPane != null) {
+this.scrollPane.validate ();
+}this.itemStateChanged (null);
+}, "~B");
+Clazz.defineMethod (c$, "addCheck", 
+function (groupsChanged, type) {
+var addCheck;
+var comps = this.featurePanel.getComponents ();
+var check;
+addCheck = true;
+for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {
+check = comps[i];
+if (check.type.equals (type)) {
+addCheck = false;
+break;
+}}
+if (addCheck) {
+var selected = false;
+if (groupsChanged || this.av.getFeaturesDisplayed ().isVisible (type)) {
+selected = true;
+}check = Clazz.innerTypeInstance (jalview.appletgui.FeatureSettings.MyCheckbox, this, null, type, selected, (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (type)), this.fr.getFeatureStyle (type));
+check.addMouseListener (this);
+check.addMouseMotionListener (this);
+check.addItemListener (this);
+if (groupsChanged) {
+this.featurePanel.add (check, 0);
+} else {
+this.featurePanel.add (check);
+}}}, "~B,~S");
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {
+var check = this.featurePanel.getComponent (i);
+check.setState (!check.getState ());
+}
+this.selectionChanged ();
+}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+this.selectionChanged ();
+}, "java.awt.event.ItemEvent");
+Clazz.defineMethod (c$, "selectionChanged", 
+function () {
+var comps = this.featurePanel.getComponents ();
+var cSize = comps.length;
+var tmp =  Clazz.newArray (cSize, 3, null);
+var tmpSize = 0;
+for (var i = 0; i < cSize; i++) {
+var check = comps[i];
+tmp[tmpSize][0] = check.type;
+tmp[tmpSize][1] = this.fr.getFeatureStyle (check.type);
+tmp[tmpSize][2] =  new Boolean (check.getState ());
+tmpSize++;
+}
+var data =  Clazz.newArray (tmpSize, 3, null);
+System.arraycopy (tmp, 0, data, 0, tmpSize);
+this.fr.setFeaturePriority (data);
+this.ap.paintAlignment (true);
+});
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+this.selectedCheck = evt.getSource ();
+if (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (this.selectedCheck.type)) {
+if (evt.getX () > this.selectedCheck.stringWidth + 20) {
+evt.consume ();
+}}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged", 
+function (evt) {
+if ((evt.getSource ()).getParent () !== this.featurePanel) {
+return;
+}this.dragging = true;
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+if ((evt.getSource ()).getParent () !== this.featurePanel) {
+return;
+}var comp = null;
+var target = null;
+var height = evt.getY () + evt.getComponent ().getLocation ().y;
+if (height > this.featurePanel.getSize ().height) {
+comp = this.featurePanel.getComponent (this.featurePanel.getComponentCount () - 1);
+} else if (height < 0) {
+comp = this.featurePanel.getComponent (0);
+} else {
+comp = this.featurePanel.getComponentAt (evt.getX (), evt.getY () + evt.getComponent ().getLocation ().y);
+}if (comp != null && Clazz.instanceOf (comp, awt2swing.Checkbox)) {
+target = comp;
+}if (this.selectedCheck != null && target != null && this.selectedCheck !== target) {
+var targetIndex = -1;
+for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {
+if (target === this.featurePanel.getComponent (i)) {
+targetIndex = i;
+break;
+}}
+this.featurePanel.remove (this.selectedCheck);
+this.featurePanel.add (this.selectedCheck, targetIndex);
+this.featurePanel.validate ();
+this.itemStateChanged (null);
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "setUserColour", 
+function (feature, originalColour) {
+if (Clazz.instanceOf (originalColour, java.awt.Color) || Clazz.instanceOf (originalColour, jalview.schemes.GraduatedColor)) {
+this.fr.setColour (feature, originalColour);
+} else {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_unsupported_feature_colour_object"));
+}this.refreshTable ();
+}, "~S,~O");
+Clazz.defineMethod (c$, "refreshTable", 
+function () {
+this.featurePanel.removeAll ();
+this.resetTable (false);
+this.ap.paintAlignment (true);
+});
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+var check = evt.getSource ();
+if ((evt.getModifiers () & 4) != 0) {
+this.popupSort (check, this.fr.getMinMax (), evt.getX (), evt.getY ());
+}if (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (check.type)) {
+if (evt.getX () > check.stringWidth + 20) {
+evt.consume ();
+var link = this.fr.featureLinks.get (check.type).toString ();
+this.ap.alignFrame.showURL (link.substring (link.indexOf ("|") + 1), link.substring (0, link.indexOf ("|")));
+}}if (check.getParent () !== this.featurePanel) {
+return;
+}if (evt.getClickCount () > 1) {
+var fcol = this.fr.getFeatureStyle (check.type);
+if (Clazz.instanceOf (fcol, java.awt.Color)) {
+ new jalview.appletgui.UserDefinedColours (this, check.type, fcol);
+} else {
+ new jalview.appletgui.FeatureColourChooser (this, check.type);
+check.updateColor (this.fr.getFeatureStyle (check.type));
+}}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+this.fr.setTransparency ((100 - this.transparency.getValue ()) / 100);
+this.ap.seqPanel.seqCanvas.repaint ();
+}, "java.awt.event.AdjustmentEvent");
+c$.$FeatureSettings$MyCheckbox$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.type = null;
+this.stringWidth = 0;
+this.hasLink = false;
+this.gcol = null;
+this.col = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.FeatureSettings, "MyCheckbox", awt2swing.Checkbox);
+Clazz.defineMethod (c$, "updateColor", 
+function (a) {
+if (Clazz.instanceOf (a, java.awt.Color)) {
+this.col = a;
+this.gcol = null;
+} else if (Clazz.instanceOf (a, jalview.schemes.GraduatedColor)) {
+this.gcol = a;
+this.col = null;
+} else {
+throw  new Error (jalview.util.MessageManager.getString ("error.invalid_colour_for_mycheckbox"));
+}if (this.col != null) {
+this.setBackground (this.col);
+} else {
+var b = this.type;
+if (this.gcol.getThreshType () != -1) {
+b += " " + ((this.gcol.getThreshType () == 1) ? "(>)" : "(<)");
+}if (this.gcol.isColourByLabel ()) {
+this.setBackground (java.awt.Color.white);
+b += " (by Label)";
+} else {
+this.setBackground (this.gcol.getMinColor ());
+}this.setLabel (b);
+}this.repaint ();
+}, "~O");
+Clazz.makeConstructor (c$, 
+function (a, b, c) {
+Clazz.superConstructor (this, jalview.appletgui.FeatureSettings.MyCheckbox, [a, b]);
+this.type = a;
+var d = this.b$["jalview.appletgui.FeatureSettings"].av.nullFrame.getFontMetrics (this.b$["jalview.appletgui.FeatureSettings"].av.nullFrame.getFont ());
+this.stringWidth = d.stringWidth (a);
+this.hasLink = c;
+}, "~S,~B,~B");
+Clazz.makeConstructor (c$, 
+function (a, b, c, d) {
+this.construct (a, b, c);
+this.updateColor (d);
+}, "~S,~B,~B,~O");
+Clazz.defineMethod (c$, "PaintComponent", 
+function (a) {
+var b = this.getSize ();
+if (this.gcol != null) {
+if (this.gcol.isColourByLabel ()) {
+a.setColor (java.awt.Color.white);
+a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);
+} else {
+var c = this.gcol.getMaxColor ();
+a.setColor (c);
+a.fillRect (Clazz.doubleToInt (b.width / 2), 0, Clazz.doubleToInt (b.width / 2), b.height);
+}}if (this.hasLink) {
+a.drawImage (this.b$["jalview.appletgui.FeatureSettings"].linkImage, this.stringWidth + 25, Clazz.doubleToInt ((this.getSize ().height - this.b$["jalview.appletgui.FeatureSettings"].linkImage.getHeight (this)) / 2), this);
+}}, "java.awt.Graphics");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureSettings$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$1", null, java.awt.event.ItemListener);
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+var source = evt.getSource ();
+this.b$["jalview.appletgui.FeatureSettings"].fr.setGroupVisibility (source.getLabel (), source.getState ());
+this.b$["jalview.appletgui.FeatureSettings"].ap.seqPanel.seqCanvas.repaint ();
+if (this.b$["jalview.appletgui.FeatureSettings"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.FeatureSettings"].ap.overviewPanel.updateOverviewImage ();
+}this.b$["jalview.appletgui.FeatureSettings"].resetTable (true);
+return;
+}, "java.awt.event.ItemEvent");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureSettings$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$2", java.awt.event.WindowAdapter);
+Clazz.overrideMethod (c$, "windowClosing", 
+function (e) {
+if (this.f$.me.av.featureSettings === this.f$.me) {
+this.f$.me.av.featureSettings = null;
+this.f$.me.ap = null;
+this.f$.me.av = null;
+}}, "java.awt.event.WindowEvent");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureSettings$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$3", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.f$.me.ap.alignFrame.avc.sortAlignmentByFeatureScore ( Clazz.newArray (-1, [this.f$.type]));
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureSettings$4$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$4", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.f$.me.ap.alignFrame.avc.sortAlignmentByFeatureDensity ( Clazz.newArray (-1, [this.f$.type]));
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$FeatureSettings$5$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FeatureSettings$5", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+if (Clazz.instanceOf (this.f$.typeCol, java.awt.Color)) {
+ new jalview.appletgui.FeatureColourChooser (this.f$.me, this.f$.type);
+this.f$.check.updateColor (this.b$["jalview.appletgui.FeatureSettings"].fr.getFeatureStyle (this.f$.type));
+} else {
+ new jalview.appletgui.UserDefinedColours (this.f$.me, this.f$.check.type, (this.f$.typeCol));
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+});
index d64e048..22e3c84 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "awt2swing.Button", "$.Checkbox", "$.Label", "$.TextField", "java.awt.GridLayout"], "jalview.appletgui.Finder", ["awt2swing.Frame", "jalview.analysis.Finder", "jalview.bin.JalviewLite", "jalview.datamodel.SequenceFeature", "jalview.util.MessageManager", "java.awt.Font", "$.Rectangle", "java.awt.event.KeyAdapter", "$.WindowAdapter"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.av = null;\r
-this.ap = null;\r
-this.frame = null;\r
-this.searchResults = null;\r
-this.seqIndex = 0;\r
-this.resIndex = -1;\r
-this.jLabel1 = null;\r
-this.textfield = null;\r
-this.findAll = null;\r
-this.findNext = null;\r
-this.actionsPanel = null;\r
-this.gridLayout1 = null;\r
-this.createNewGroup = null;\r
-this.caseSensitive = null;\r
-this.searchDescription = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "Finder", awt2swing.Panel, java.awt.event.ActionListener);\r
-Clazz.prepareFields (c$, function () {\r
-this.jLabel1 =  new awt2swing.Label ();\r
-this.textfield =  new awt2swing.TextField ();\r
-this.findAll =  new awt2swing.Button ();\r
-this.findNext =  new awt2swing.Button ();\r
-this.actionsPanel =  new awt2swing.Panel ();\r
-this.gridLayout1 =  new java.awt.GridLayout ();\r
-this.createNewGroup =  new awt2swing.Button ();\r
-this.caseSensitive =  new awt2swing.Checkbox ();\r
-this.searchDescription =  new awt2swing.Checkbox ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.Finder, []);\r
-try {\r
-this.jbInit ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.av = ap.av;\r
-this.ap = ap;\r
-this.frame =  new awt2swing.Frame ();\r
-this.frame.add (this);\r
-jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("action.find"), 340, 120);\r
-this.frame.repaint ();\r
-this.frame.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.Finder$1") ? 0 : jalview.appletgui.Finder.$Finder$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.Finder$1, this, Clazz.cloneFinals ("ap", ap))));\r
-this.textfield.requestFocus ();\r
-}, "jalview.appletgui.AlignmentPanel");\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-if (evt.getSource () === this.textfield) {\r
-this.doSearch (false);\r
-} else if (evt.getSource () === this.findNext) {\r
-this.doSearch (false);\r
-} else if (evt.getSource () === this.findAll) {\r
-this.resIndex = -1;\r
-this.seqIndex = 0;\r
-this.doSearch (true);\r
-} else if (evt.getSource () === this.createNewGroup) {\r
-this.createNewGroup_actionPerformed ();\r
-}}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "createNewGroup_actionPerformed", \r
-function () {\r
-var seqs =  new Array (this.searchResults.getSize ());\r
-var features =  new Array (this.searchResults.getSize ());\r
-for (var i = 0; i < this.searchResults.getSize (); i++) {\r
-seqs[i] = this.searchResults.getResultSequence (i);\r
-features[i] =  new jalview.datamodel.SequenceFeature (this.textfield.getText ().trim (), "Search Results", null, this.searchResults.getResultStart (i), this.searchResults.getResultEnd (i), "Search Results");\r
-}\r
-if (this.ap.seqPanel.seqCanvas.getFeatureRenderer ().amendFeatures (seqs, features, true, this.ap)) {\r
-this.ap.alignFrame.sequenceFeatures.setState (true);\r
-this.av.setShowSequenceFeatures (true);\r
-this.ap.highlightSearchResults (null);\r
-}});\r
-Clazz.defineMethod (c$, "doSearch", \r
-function (findAll) {\r
-if (this.ap.av.applet.currentAlignFrame != null) {\r
-this.ap = this.ap.av.applet.currentAlignFrame.alignPanel;\r
-this.av = this.ap.av;\r
-}this.createNewGroup.setEnabled (false);\r
-var finder =  new jalview.analysis.Finder (this.av.getAlignment (), this.av.getSelectionGroup (), this.seqIndex, this.resIndex);\r
-finder.setCaseSensitive (this.caseSensitive.getState ());\r
-finder.setIncludeDescription (this.searchDescription.getState ());\r
-finder.setFindAll (findAll);\r
-var searchString = this.textfield.getText ();\r
-finder.find (searchString);\r
-this.seqIndex = finder.getSeqIndex ();\r
-this.resIndex = finder.getResIndex ();\r
-this.searchResults = finder.getSearchResults ();\r
-var idMatch = finder.getIdMatch ();\r
-var haveResults = false;\r
-if ((idMatch.size () > 0)) {\r
-haveResults = true;\r
-this.ap.idPanel.highlightSearchResults (idMatch);\r
-} else {\r
-this.ap.idPanel.highlightSearchResults (null);\r
-}if (this.searchResults.getSize () > 0) {\r
-haveResults = true;\r
-this.createNewGroup.setEnabled (true);\r
-} else {\r
-this.searchResults = null;\r
-}this.ap.highlightSearchResults (this.searchResults);\r
-if (!haveResults) {\r
-this.ap.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.finished_searching"));\r
-this.resIndex = -1;\r
-this.seqIndex = 0;\r
-} else {\r
-if (findAll) {\r
-var message = (idMatch.size () > 0) ? "" + idMatch.size () + " IDs" : "";\r
-if (idMatch.size () > 0 && this.searchResults != null && this.searchResults.getSize () > 0) {\r
-message += " and ";\r
-}if (this.searchResults != null) {\r
-message += this.searchResults.getSize () + " subsequence matches.";\r
-}this.ap.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.search_results",  Clazz.newArray (-1, [searchString, message])));\r
-} else {\r
-this.ap.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.found_match_for",  Clazz.newArray (-1, [searchString])));\r
-}}}, "~B");\r
-Clazz.defineMethod (c$, "jbInit", \r
-($fz = function () {\r
-this.jLabel1.setFont ( new java.awt.Font ("Verdana", 0, 12));\r
-this.jLabel1.setText (jalview.util.MessageManager.getString ("action.find"));\r
-this.jLabel1.setBounds ( new java.awt.Rectangle (3, 30, 34, 15));\r
-this.setLayout (null);\r
-this.textfield.setFont ( new java.awt.Font ("Verdana", 0, 10));\r
-this.textfield.setText ("");\r
-this.textfield.setBounds ( new java.awt.Rectangle (40, 17, 133, 21));\r
-this.textfield.addKeyListener (((Clazz.isClassDefined ("jalview.appletgui.Finder$2") ? 0 : jalview.appletgui.Finder.$Finder$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.Finder$2, this, null)));\r
-this.textfield.addActionListener (this);\r
-this.findAll.setFont ( new java.awt.Font ("Verdana", 0, 10));\r
-this.findAll.setLabel (jalview.util.MessageManager.getString ("action.find_all"));\r
-this.findAll.addActionListener (this);\r
-this.findNext.setEnabled (false);\r
-this.findNext.setFont ( new java.awt.Font ("Verdana", 0, 10));\r
-this.findNext.setLabel (jalview.util.MessageManager.getString ("action.find_next"));\r
-this.findNext.addActionListener (this);\r
-this.actionsPanel.setBounds ( new java.awt.Rectangle (195, 5, 141, 64));\r
-this.actionsPanel.setLayout (this.gridLayout1);\r
-this.gridLayout1.setHgap (0);\r
-this.gridLayout1.setRows (3);\r
-this.gridLayout1.setVgap (2);\r
-this.createNewGroup.setEnabled (false);\r
-this.createNewGroup.setFont ( new java.awt.Font ("Verdana", 0, 10));\r
-this.createNewGroup.setLabel (jalview.util.MessageManager.getString ("label.new_feature"));\r
-this.createNewGroup.addActionListener (this);\r
-this.caseSensitive.setLabel (jalview.util.MessageManager.getString ("label.match_case"));\r
-this.caseSensitive.setBounds ( new java.awt.Rectangle (30, 39, 126, 23));\r
-this.searchDescription.setLabel (jalview.util.MessageManager.getString ("label.include_description"));\r
-this.searchDescription.setBounds ( new java.awt.Rectangle (30, 59, 170, 23));\r
-this.actionsPanel.add (this.findNext, null);\r
-this.actionsPanel.add (this.findAll, null);\r
-this.actionsPanel.add (this.createNewGroup, null);\r
-this.add (this.caseSensitive);\r
-this.add (this.textfield, null);\r
-this.add (this.jLabel1, null);\r
-this.add (this.actionsPanel, null);\r
-this.add (this.searchDescription);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "textfield_keyTyped", \r
-function (e) {\r
-this.findNext.setEnabled (true);\r
-}, "java.awt.event.KeyEvent");\r
-c$.$Finder$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "Finder$1", java.awt.event.WindowAdapter);\r
-Clazz.overrideMethod (c$, "windowClosing", \r
-function (evt) {\r
-this.f$.ap.highlightSearchResults (null);\r
-}, "java.awt.event.WindowEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$Finder$2$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "Finder$2", java.awt.event.KeyAdapter);\r
-Clazz.overrideMethod (c$, "keyTyped", \r
-function (e) {\r
-this.b$["jalview.appletgui.Finder"].textfield_keyTyped (e);\r
-}, "java.awt.event.KeyEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "awt2swing.Button", "$.Checkbox", "$.Label", "$.TextField", "java.awt.GridLayout"], "jalview.appletgui.Finder", ["awt2swing.Frame", "jalview.analysis.Finder", "jalview.bin.JalviewLite", "jalview.datamodel.SequenceFeature", "jalview.util.MessageManager", "java.awt.Font", "$.Rectangle", "java.awt.event.KeyAdapter", "$.WindowAdapter"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.av = null;
+this.ap = null;
+this.frame = null;
+this.searchResults = null;
+this.seqIndex = 0;
+this.resIndex = -1;
+this.jLabel1 = null;
+this.textfield = null;
+this.findAll = null;
+this.findNext = null;
+this.actionsPanel = null;
+this.gridLayout1 = null;
+this.createNewGroup = null;
+this.caseSensitive = null;
+this.searchDescription = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "Finder", awt2swing.Panel, java.awt.event.ActionListener);
+Clazz.prepareFields (c$, function () {
+this.jLabel1 =  new awt2swing.Label ();
+this.textfield =  new awt2swing.TextField ();
+this.findAll =  new awt2swing.Button ();
+this.findNext =  new awt2swing.Button ();
+this.actionsPanel =  new awt2swing.Panel ();
+this.gridLayout1 =  new java.awt.GridLayout ();
+this.createNewGroup =  new awt2swing.Button ();
+this.caseSensitive =  new awt2swing.Checkbox ();
+this.searchDescription =  new awt2swing.Checkbox ();
+});
+Clazz.makeConstructor (c$, 
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.Finder, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.av = ap.av;
+this.ap = ap;
+this.frame =  new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("action.find"), 340, 120);
+this.frame.repaint ();
+this.frame.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.Finder$1") ? 0 : jalview.appletgui.Finder.$Finder$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.Finder$1, this, Clazz.cloneFinals ("ap", ap))));
+this.textfield.requestFocus ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.textfield) {
+this.doSearch (false);
+} else if (evt.getSource () === this.findNext) {
+this.doSearch (false);
+} else if (evt.getSource () === this.findAll) {
+this.resIndex = -1;
+this.seqIndex = 0;
+this.doSearch (true);
+} else if (evt.getSource () === this.createNewGroup) {
+this.createNewGroup_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "createNewGroup_actionPerformed", 
+function () {
+var seqs =  new Array (this.searchResults.getSize ());
+var features =  new Array (this.searchResults.getSize ());
+for (var i = 0; i < this.searchResults.getSize (); i++) {
+seqs[i] = this.searchResults.getResultSequence (i);
+features[i] =  new jalview.datamodel.SequenceFeature (this.textfield.getText ().trim (), "Search Results", null, this.searchResults.getResultStart (i), this.searchResults.getResultEnd (i), "Search Results");
+}
+if (this.ap.seqPanel.seqCanvas.getFeatureRenderer ().amendFeatures (seqs, features, true, this.ap)) {
+this.ap.alignFrame.sequenceFeatures.setState (true);
+this.av.setShowSequenceFeatures (true);
+this.ap.highlightSearchResults (null);
+}});
+Clazz.defineMethod (c$, "doSearch", 
+function (findAll) {
+if (this.ap.av.applet.currentAlignFrame != null) {
+this.ap = this.ap.av.applet.currentAlignFrame.alignPanel;
+this.av = this.ap.av;
+}this.createNewGroup.setEnabled (false);
+var finder =  new jalview.analysis.Finder (this.av.getAlignment (), this.av.getSelectionGroup (), this.seqIndex, this.resIndex);
+finder.setCaseSensitive (this.caseSensitive.getState ());
+finder.setIncludeDescription (this.searchDescription.getState ());
+finder.setFindAll (findAll);
+var searchString = this.textfield.getText ();
+finder.find (searchString);
+this.seqIndex = finder.getSeqIndex ();
+this.resIndex = finder.getResIndex ();
+this.searchResults = finder.getSearchResults ();
+var idMatch = finder.getIdMatch ();
+var haveResults = false;
+if ((idMatch.size () > 0)) {
+haveResults = true;
+this.ap.idPanel.highlightSearchResults (idMatch);
+} else {
+this.ap.idPanel.highlightSearchResults (null);
+}if (this.searchResults.getSize () > 0) {
+haveResults = true;
+this.createNewGroup.setEnabled (true);
+} else {
+this.searchResults = null;
+}this.ap.highlightSearchResults (this.searchResults);
+if (!haveResults) {
+this.ap.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.finished_searching"));
+this.resIndex = -1;
+this.seqIndex = 0;
+} else {
+if (findAll) {
+var message = (idMatch.size () > 0) ? "" + idMatch.size () + " IDs" : "";
+if (idMatch.size () > 0 && this.searchResults != null && this.searchResults.getSize () > 0) {
+message += " and ";
+}if (this.searchResults != null) {
+message += this.searchResults.getSize () + " subsequence matches.";
+}this.ap.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.search_results",  Clazz.newArray (-1, [searchString, message])));
+} else {
+this.ap.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.found_match_for",  Clazz.newArray (-1, [searchString])));
+}}}, "~B");
+Clazz.defineMethod (c$, "jbInit", 
+($fz = function () {
+this.jLabel1.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jLabel1.setText (jalview.util.MessageManager.getString ("action.find"));
+this.jLabel1.setBounds ( new java.awt.Rectangle (3, 30, 34, 15));
+this.setLayout (null);
+this.textfield.setFont ( new java.awt.Font ("Verdana", 0, 10));
+this.textfield.setText ("");
+this.textfield.setBounds ( new java.awt.Rectangle (40, 17, 133, 21));
+this.textfield.addKeyListener (((Clazz.isClassDefined ("jalview.appletgui.Finder$2") ? 0 : jalview.appletgui.Finder.$Finder$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.Finder$2, this, null)));
+this.textfield.addActionListener (this);
+this.findAll.setFont ( new java.awt.Font ("Verdana", 0, 10));
+this.findAll.setLabel (jalview.util.MessageManager.getString ("action.find_all"));
+this.findAll.addActionListener (this);
+this.findNext.setEnabled (false);
+this.findNext.setFont ( new java.awt.Font ("Verdana", 0, 10));
+this.findNext.setLabel (jalview.util.MessageManager.getString ("action.find_next"));
+this.findNext.addActionListener (this);
+this.actionsPanel.setBounds ( new java.awt.Rectangle (195, 5, 141, 64));
+this.actionsPanel.setLayout (this.gridLayout1);
+this.gridLayout1.setHgap (0);
+this.gridLayout1.setRows (3);
+this.gridLayout1.setVgap (2);
+this.createNewGroup.setEnabled (false);
+this.createNewGroup.setFont ( new java.awt.Font ("Verdana", 0, 10));
+this.createNewGroup.setLabel (jalview.util.MessageManager.getString ("label.new_feature"));
+this.createNewGroup.addActionListener (this);
+this.caseSensitive.setLabel (jalview.util.MessageManager.getString ("label.match_case"));
+this.caseSensitive.setBounds ( new java.awt.Rectangle (30, 39, 126, 23));
+this.searchDescription.setLabel (jalview.util.MessageManager.getString ("label.include_description"));
+this.searchDescription.setBounds ( new java.awt.Rectangle (30, 59, 170, 23));
+this.actionsPanel.add (this.findNext, null);
+this.actionsPanel.add (this.findAll, null);
+this.actionsPanel.add (this.createNewGroup, null);
+this.add (this.caseSensitive);
+this.add (this.textfield, null);
+this.add (this.jLabel1, null);
+this.add (this.actionsPanel, null);
+this.add (this.searchDescription);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "textfield_keyTyped", 
+function (e) {
+this.findNext.setEnabled (true);
+}, "java.awt.event.KeyEvent");
+c$.$Finder$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "Finder$1", java.awt.event.WindowAdapter);
+Clazz.overrideMethod (c$, "windowClosing", 
+function (evt) {
+this.f$.ap.highlightSearchResults (null);
+}, "java.awt.event.WindowEvent");
+c$ = Clazz.p0p ();
+};
+c$.$Finder$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "Finder$2", java.awt.event.KeyAdapter);
+Clazz.overrideMethod (c$, "keyTyped", 
+function (e) {
+this.b$["jalview.appletgui.Finder"].textfield_keyTyped (e);
+}, "java.awt.event.KeyEvent");
+c$ = Clazz.p0p ();
+};
+});
index c8a21c0..a0154ca 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.ItemListener", "awt2swing.Button", "$.Checkbox", "$.Choice", "java.awt.Font"], "jalview.appletgui.FontChooser", ["awt2swing.Frame", "$.Label", "jalview.appletgui.JVDialog", "jalview.bin.JalviewLite", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.FlowLayout", "$.Toolkit", "java.awt.event.ActionListener"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.fontSize = null;\r
-this.fontStyle = null;\r
-this.fontName = null;\r
-this.scaleAsCdna = null;\r
-this.ok = null;\r
-this.cancel = null;\r
-this.ap = null;\r
-this.tp = null;\r
-this.oldFont = null;\r
-this.oldCharWidth = 0;\r
-this.oldScaleProtein = false;\r
-this.lastSelected = null;\r
-this.lastSelStyle = 0;\r
-this.lastSelSize = 0;\r
-this.$init = true;\r
-this.frame = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "FontChooser", awt2swing.Panel, java.awt.event.ItemListener);\r
-Clazz.prepareFields (c$, function () {\r
-this.fontSize =  new awt2swing.Choice ();\r
-this.fontStyle =  new awt2swing.Choice ();\r
-this.fontName =  new awt2swing.Choice ();\r
-this.scaleAsCdna =  new awt2swing.Checkbox ();\r
-this.ok =  new awt2swing.Button ();\r
-this.cancel =  new awt2swing.Button ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (tp) {\r
-Clazz.superConstructor (this, jalview.appletgui.FontChooser, []);\r
-try {\r
-this.jbInit ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.tp = tp;\r
-this.oldFont = tp.getTreeFont ();\r
-this.init ();\r
-}, "jalview.appletgui.TreePanel");\r
-Clazz.makeConstructor (c$, \r
-function (ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.FontChooser, []);\r
-this.ap = ap;\r
-this.oldFont = ap.av.getFont ();\r
-this.oldCharWidth = ap.av.getViewStyle ().getCharWidth ();\r
-this.oldScaleProtein = ap.av.getViewStyle ().isScaleProteinAsCdna ();\r
-try {\r
-this.jbInit ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.init ();\r
-}, "jalview.appletgui.AlignmentPanel");\r
-Clazz.defineMethod (c$, "init", \r
-function () {\r
-var fonts = java.awt.Toolkit.getDefaultToolkit ().getFontList ();\r
-for (var i = 0; i < fonts.length; i++) {\r
-this.fontName.addItem (fonts[i]);\r
-}\r
-for (var i = 1; i < 31; i++) {\r
-this.fontSize.addItem (i + "");\r
-}\r
-this.fontStyle.addItem ("plain");\r
-this.fontStyle.addItem ("bold");\r
-this.fontStyle.addItem ("italic");\r
-this.fontName.select (this.oldFont.getName ());\r
-this.fontSize.select (this.oldFont.getSize () + "");\r
-this.fontStyle.select (new Integer (this.oldFont.getStyle ()));\r
-this.frame =  new awt2swing.Frame ();\r
-this.frame.add (this);\r
-jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("action.change_font"), 440, 115);\r
-this.$init = false;\r
-});\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (evt) {\r
-var source = evt.getSource ();\r
-if (source === this.fontName) {\r
-this.fontName_actionPerformed ();\r
-} else if (source === this.fontSize) {\r
-this.fontSize_actionPerformed ();\r
-} else if (source === this.fontStyle) {\r
-this.fontStyle_actionPerformed ();\r
-} else if (source === this.scaleAsCdna) {\r
-this.scaleAsCdna_actionPerformed ();\r
-}}, "java.awt.event.ItemEvent");\r
-Clazz.defineMethod (c$, "ok_actionPerformed", \r
-function () {\r
-this.frame.setVisible (false);\r
-if (this.ap != null) {\r
-if (this.ap.getOverviewPanel () != null) {\r
-this.ap.getOverviewPanel ().updateOverviewImage ();\r
-}}});\r
-Clazz.defineMethod (c$, "cancel_actionPerformed", \r
-function () {\r
-if (this.ap != null) {\r
-this.ap.av.setScaleProteinAsCdna (this.oldScaleProtein);\r
-if (this.ap.av.getCodingComplement () != null) {\r
-this.ap.av.getCodingComplement ().setScaleProteinAsCdna (this.oldScaleProtein);\r
-this.ap.alignFrame.getSplitFrame ().repaint ();\r
-}this.ap.av.setFont (this.oldFont);\r
-var style = this.ap.av.getViewStyle ();\r
-if (style.getCharWidth () != this.oldCharWidth) {\r
-style.setCharWidth (this.oldCharWidth);\r
-this.ap.av.setViewStyle (style);\r
-}this.ap.paintAlignment (true);\r
-} else if (this.tp != null) {\r
-this.tp.setTreeFont (this.oldFont);\r
-this.tp.treeCanvas.repaint ();\r
-}this.fontName.select (this.oldFont.getName ());\r
-this.fontSize.select (this.oldFont.getSize () + "");\r
-this.fontStyle.select (new Integer (this.oldFont.getStyle ()));\r
-this.frame.setVisible (false);\r
-});\r
-Clazz.defineMethod (c$, "changeFont", \r
-function () {\r
-if (this.lastSelected == null) {\r
-this.lastSelected = this.oldFont;\r
-this.lastSelSize = this.oldFont.getSize ();\r
-this.lastSelStyle = this.oldFont.getStyle ();\r
-}var newFont =  new java.awt.Font (this.fontName.getSelectedItem ().toString (), this.fontStyle.getSelectedIndex (), Integer.parseInt (this.fontSize.getSelectedItem ().toString ()));\r
-var fm = this.getGraphics ().getFontMetrics (newFont);\r
-var mw = fm.getStringBounds ("M", this.getGraphics ()).getWidth ();\r
-var iw = fm.getStringBounds ("I", this.getGraphics ()).getWidth ();\r
-if (mw < 1 || iw < 1) {\r
-this.fontName.select (this.lastSelected.getName ());\r
-this.fontStyle.select (new Integer (this.lastSelStyle));\r
-this.fontSize.select ("" + this.lastSelSize);\r
-var d =  new jalview.appletgui.JVDialog (this.frame, jalview.util.MessageManager.getString ("label.invalid_font"), true, 350, 200);\r
-var mp =  new awt2swing.Panel ();\r
-d.cancel.setVisible (false);\r
-mp.setLayout ( new java.awt.FlowLayout ());\r
-mp.add ( new awt2swing.Label ("Font doesn't have letters defined\nso cannot be used\nwith alignment data."));\r
-d.setMainPanel (mp);\r
-d.setVisible (true);\r
-return;\r
-}if (this.tp != null) {\r
-this.tp.setTreeFont (newFont);\r
-} else if (this.ap != null) {\r
-this.ap.av.setFont (newFont);\r
-this.ap.fontChanged ();\r
-}this.lastSelected = newFont;\r
-});\r
-Clazz.defineMethod (c$, "fontName_actionPerformed", \r
-function () {\r
-if (this.$init) {\r
-return;\r
-}this.changeFont ();\r
-});\r
-Clazz.defineMethod (c$, "fontSize_actionPerformed", \r
-function () {\r
-if (this.$init) {\r
-return;\r
-}this.changeFont ();\r
-});\r
-Clazz.defineMethod (c$, "fontStyle_actionPerformed", \r
-function () {\r
-if (this.$init) {\r
-return;\r
-}this.changeFont ();\r
-});\r
-Clazz.defineMethod (c$, "jbInit", \r
-($fz = function () {\r
-this.setLayout ( new java.awt.BorderLayout ());\r
-this.setBackground (java.awt.Color.white);\r
-var fontLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.font"));\r
-fontLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);\r
-fontLabel.setAlignment (4);\r
-this.fontSize.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);\r
-this.fontSize.addItemListener (this);\r
-this.fontStyle.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);\r
-this.fontStyle.addItemListener (this);\r
-var sizeLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.size"));\r
-sizeLabel.setAlignment (4);\r
-sizeLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);\r
-var styleLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.style"));\r
-styleLabel.setAlignment (4);\r
-styleLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);\r
-this.fontName.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);\r
-this.fontName.addItemListener (this);\r
-this.scaleAsCdna.setLabel (jalview.util.MessageManager.getString ("label.scale_as_cdna"));\r
-this.scaleAsCdna.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);\r
-this.scaleAsCdna.addItemListener (this);\r
-this.scaleAsCdna.setState (this.ap.av.isScaleProteinAsCdna ());\r
-this.ok.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);\r
-this.ok.setLabel (jalview.util.MessageManager.getString ("action.ok"));\r
-this.ok.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FontChooser$1") ? 0 : jalview.appletgui.FontChooser.$FontChooser$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.FontChooser$1, this, null)));\r
-this.cancel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);\r
-this.cancel.setLabel (jalview.util.MessageManager.getString ("action.cancel"));\r
-this.cancel.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FontChooser$2") ? 0 : jalview.appletgui.FontChooser.$FontChooser$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.FontChooser$2, this, null)));\r
-var fontPanel =  new awt2swing.Panel ();\r
-fontPanel.setLayout ( new java.awt.BorderLayout ());\r
-var stylePanel =  new awt2swing.Panel ();\r
-stylePanel.setLayout ( new java.awt.BorderLayout ());\r
-var sizePanel =  new awt2swing.Panel ();\r
-sizePanel.setLayout ( new java.awt.BorderLayout ());\r
-var scalePanel =  new awt2swing.Panel ();\r
-scalePanel.setLayout ( new java.awt.BorderLayout ());\r
-var okCancelPanel =  new awt2swing.Panel ();\r
-var optionsPanel =  new awt2swing.Panel ();\r
-fontPanel.setBackground (java.awt.Color.white);\r
-stylePanel.setBackground (java.awt.Color.white);\r
-sizePanel.setBackground (java.awt.Color.white);\r
-okCancelPanel.setBackground (java.awt.Color.white);\r
-optionsPanel.setBackground (java.awt.Color.white);\r
-fontPanel.add (fontLabel, "West");\r
-fontPanel.add (this.fontName, "Center");\r
-stylePanel.add (styleLabel, "West");\r
-stylePanel.add (this.fontStyle, "Center");\r
-sizePanel.add (sizeLabel, "West");\r
-sizePanel.add (this.fontSize, "Center");\r
-scalePanel.add (this.scaleAsCdna, "Center");\r
-okCancelPanel.add (this.ok, null);\r
-okCancelPanel.add (this.cancel, null);\r
-optionsPanel.add (fontPanel, null);\r
-optionsPanel.add (sizePanel, null);\r
-optionsPanel.add (stylePanel, null);\r
-this.add (optionsPanel, "North");\r
-if (this.ap.alignFrame.getSplitFrame () != null) {\r
-this.add (scalePanel, "Center");\r
-}this.add (okCancelPanel, "South");\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "scaleAsCdna_actionPerformed", \r
-function () {\r
-this.ap.av.setScaleProteinAsCdna (this.scaleAsCdna.getState ());\r
-this.ap.av.getCodingComplement ().setScaleProteinAsCdna (this.scaleAsCdna.getState ());\r
-this.ap.alignFrame.getSplitFrame ().adjustLayout ();\r
-this.ap.paintAlignment (true);\r
-this.ap.alignFrame.getSplitFrame ().repaint ();\r
-});\r
-c$.$FontChooser$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FontChooser$1", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-this.b$["jalview.appletgui.FontChooser"].ok_actionPerformed ();\r
-}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$FontChooser$2$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "FontChooser$2", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-this.b$["jalview.appletgui.FontChooser"].cancel_actionPerformed ();\r
-}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.VERDANA_11PT = c$.prototype.VERDANA_11PT =  new java.awt.Font ("Verdana", 0, 11);\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ItemListener", "awt2swing.Button", "$.Checkbox", "$.Choice", "java.awt.Font"], "jalview.appletgui.FontChooser", ["awt2swing.Frame", "$.Label", "jalview.appletgui.JVDialog", "jalview.bin.JalviewLite", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.FlowLayout", "$.Toolkit", "java.awt.event.ActionListener"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.fontSize = null;
+this.fontStyle = null;
+this.fontName = null;
+this.scaleAsCdna = null;
+this.ok = null;
+this.cancel = null;
+this.ap = null;
+this.tp = null;
+this.oldFont = null;
+this.oldCharWidth = 0;
+this.oldScaleProtein = false;
+this.lastSelected = null;
+this.lastSelStyle = 0;
+this.lastSelSize = 0;
+this.$init = true;
+this.frame = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "FontChooser", awt2swing.Panel, java.awt.event.ItemListener);
+Clazz.prepareFields (c$, function () {
+this.fontSize =  new awt2swing.Choice ();
+this.fontStyle =  new awt2swing.Choice ();
+this.fontName =  new awt2swing.Choice ();
+this.scaleAsCdna =  new awt2swing.Checkbox ();
+this.ok =  new awt2swing.Button ();
+this.cancel =  new awt2swing.Button ();
+});
+Clazz.makeConstructor (c$, 
+function (tp) {
+Clazz.superConstructor (this, jalview.appletgui.FontChooser, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.tp = tp;
+this.oldFont = tp.getTreeFont ();
+this.init ();
+}, "jalview.appletgui.TreePanel");
+Clazz.makeConstructor (c$, 
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.FontChooser, []);
+this.ap = ap;
+this.oldFont = ap.av.getFont ();
+this.oldCharWidth = ap.av.getViewStyle ().getCharWidth ();
+this.oldScaleProtein = ap.av.getViewStyle ().isScaleProteinAsCdna ();
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.init ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.defineMethod (c$, "init", 
+function () {
+var fonts = java.awt.Toolkit.getDefaultToolkit ().getFontList ();
+for (var i = 0; i < fonts.length; i++) {
+this.fontName.addItem (fonts[i]);
+}
+for (var i = 1; i < 31; i++) {
+this.fontSize.addItem (i + "");
+}
+this.fontStyle.addItem ("plain");
+this.fontStyle.addItem ("bold");
+this.fontStyle.addItem ("italic");
+this.fontName.select (this.oldFont.getName ());
+this.fontSize.select (this.oldFont.getSize () + "");
+this.fontStyle.select (new Integer (this.oldFont.getStyle ()));
+this.frame =  new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("action.change_font"), 440, 115);
+this.$init = false;
+});
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+var source = evt.getSource ();
+if (source === this.fontName) {
+this.fontName_actionPerformed ();
+} else if (source === this.fontSize) {
+this.fontSize_actionPerformed ();
+} else if (source === this.fontStyle) {
+this.fontStyle_actionPerformed ();
+} else if (source === this.scaleAsCdna) {
+this.scaleAsCdna_actionPerformed ();
+}}, "java.awt.event.ItemEvent");
+Clazz.defineMethod (c$, "ok_actionPerformed", 
+function () {
+this.frame.setVisible (false);
+if (this.ap != null) {
+if (this.ap.getOverviewPanel () != null) {
+this.ap.getOverviewPanel ().updateOverviewImage ();
+}}});
+Clazz.defineMethod (c$, "cancel_actionPerformed", 
+function () {
+if (this.ap != null) {
+this.ap.av.setScaleProteinAsCdna (this.oldScaleProtein);
+if (this.ap.av.getCodingComplement () != null) {
+this.ap.av.getCodingComplement ().setScaleProteinAsCdna (this.oldScaleProtein);
+this.ap.alignFrame.getSplitFrame ().repaint ();
+}this.ap.av.setFont (this.oldFont);
+var style = this.ap.av.getViewStyle ();
+if (style.getCharWidth () != this.oldCharWidth) {
+style.setCharWidth (this.oldCharWidth);
+this.ap.av.setViewStyle (style);
+}this.ap.paintAlignment (true);
+} else if (this.tp != null) {
+this.tp.setTreeFont (this.oldFont);
+this.tp.treeCanvas.repaint ();
+}this.fontName.select (this.oldFont.getName ());
+this.fontSize.select (this.oldFont.getSize () + "");
+this.fontStyle.select (new Integer (this.oldFont.getStyle ()));
+this.frame.setVisible (false);
+});
+Clazz.defineMethod (c$, "changeFont", 
+function () {
+if (this.lastSelected == null) {
+this.lastSelected = this.oldFont;
+this.lastSelSize = this.oldFont.getSize ();
+this.lastSelStyle = this.oldFont.getStyle ();
+}var newFont =  new java.awt.Font (this.fontName.getSelectedItem ().toString (), this.fontStyle.getSelectedIndex (), Integer.parseInt (this.fontSize.getSelectedItem ().toString ()));
+var fm = this.getGraphics ().getFontMetrics (newFont);
+var mw = fm.getStringBounds ("M", this.getGraphics ()).getWidth ();
+var iw = fm.getStringBounds ("I", this.getGraphics ()).getWidth ();
+if (mw < 1 || iw < 1) {
+this.fontName.select (this.lastSelected.getName ());
+this.fontStyle.select (new Integer (this.lastSelStyle));
+this.fontSize.select ("" + this.lastSelSize);
+var d =  new jalview.appletgui.JVDialog (this.frame, jalview.util.MessageManager.getString ("label.invalid_font"), true, 350, 200);
+var mp =  new awt2swing.Panel ();
+d.cancel.setVisible (false);
+mp.setLayout ( new java.awt.FlowLayout ());
+mp.add ( new awt2swing.Label ("Font doesn't have letters defined\nso cannot be used\nwith alignment data."));
+d.setMainPanel (mp);
+d.setVisible (true);
+return;
+}if (this.tp != null) {
+this.tp.setTreeFont (newFont);
+} else if (this.ap != null) {
+this.ap.av.setFont (newFont);
+this.ap.fontChanged ();
+}this.lastSelected = newFont;
+});
+Clazz.defineMethod (c$, "fontName_actionPerformed", 
+function () {
+if (this.$init) {
+return;
+}this.changeFont ();
+});
+Clazz.defineMethod (c$, "fontSize_actionPerformed", 
+function () {
+if (this.$init) {
+return;
+}this.changeFont ();
+});
+Clazz.defineMethod (c$, "fontStyle_actionPerformed", 
+function () {
+if (this.$init) {
+return;
+}this.changeFont ();
+});
+Clazz.defineMethod (c$, "jbInit", 
+($fz = function () {
+this.setLayout ( new java.awt.BorderLayout ());
+this.setBackground (java.awt.Color.white);
+var fontLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.font"));
+fontLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+fontLabel.setAlignment (4);
+this.fontSize.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.fontSize.addItemListener (this);
+this.fontStyle.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.fontStyle.addItemListener (this);
+var sizeLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.size"));
+sizeLabel.setAlignment (4);
+sizeLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+var styleLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.style"));
+styleLabel.setAlignment (4);
+styleLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.fontName.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.fontName.addItemListener (this);
+this.scaleAsCdna.setLabel (jalview.util.MessageManager.getString ("label.scale_as_cdna"));
+this.scaleAsCdna.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.scaleAsCdna.addItemListener (this);
+this.scaleAsCdna.setState (this.ap.av.isScaleProteinAsCdna ());
+this.ok.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.ok.setLabel (jalview.util.MessageManager.getString ("action.ok"));
+this.ok.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FontChooser$1") ? 0 : jalview.appletgui.FontChooser.$FontChooser$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.FontChooser$1, this, null)));
+this.cancel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.cancel.setLabel (jalview.util.MessageManager.getString ("action.cancel"));
+this.cancel.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.FontChooser$2") ? 0 : jalview.appletgui.FontChooser.$FontChooser$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.FontChooser$2, this, null)));
+var fontPanel =  new awt2swing.Panel ();
+fontPanel.setLayout ( new java.awt.BorderLayout ());
+var stylePanel =  new awt2swing.Panel ();
+stylePanel.setLayout ( new java.awt.BorderLayout ());
+var sizePanel =  new awt2swing.Panel ();
+sizePanel.setLayout ( new java.awt.BorderLayout ());
+var scalePanel =  new awt2swing.Panel ();
+scalePanel.setLayout ( new java.awt.BorderLayout ());
+var okCancelPanel =  new awt2swing.Panel ();
+var optionsPanel =  new awt2swing.Panel ();
+fontPanel.setBackground (java.awt.Color.white);
+stylePanel.setBackground (java.awt.Color.white);
+sizePanel.setBackground (java.awt.Color.white);
+okCancelPanel.setBackground (java.awt.Color.white);
+optionsPanel.setBackground (java.awt.Color.white);
+fontPanel.add (fontLabel, "West");
+fontPanel.add (this.fontName, "Center");
+stylePanel.add (styleLabel, "West");
+stylePanel.add (this.fontStyle, "Center");
+sizePanel.add (sizeLabel, "West");
+sizePanel.add (this.fontSize, "Center");
+scalePanel.add (this.scaleAsCdna, "Center");
+okCancelPanel.add (this.ok, null);
+okCancelPanel.add (this.cancel, null);
+optionsPanel.add (fontPanel, null);
+optionsPanel.add (sizePanel, null);
+optionsPanel.add (stylePanel, null);
+this.add (optionsPanel, "North");
+if (this.ap.alignFrame.getSplitFrame () != null) {
+this.add (scalePanel, "Center");
+}this.add (okCancelPanel, "South");
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "scaleAsCdna_actionPerformed", 
+function () {
+this.ap.av.setScaleProteinAsCdna (this.scaleAsCdna.getState ());
+this.ap.av.getCodingComplement ().setScaleProteinAsCdna (this.scaleAsCdna.getState ());
+this.ap.alignFrame.getSplitFrame ().adjustLayout ();
+this.ap.paintAlignment (true);
+this.ap.alignFrame.getSplitFrame ().repaint ();
+});
+c$.$FontChooser$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FontChooser$1", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.FontChooser"].ok_actionPerformed ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$FontChooser$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "FontChooser$2", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.FontChooser"].cancel_actionPerformed ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.VERDANA_11PT = c$.prototype.VERDANA_11PT =  new java.awt.Font ("Verdana", 0, 11);
+});
index c079bc6..2c2cb6f 100644 (file)
Binary files a/bin/jalview/appletgui/IdCanvas.class and b/bin/jalview/appletgui/IdCanvas.class differ
index 7c5a1c2..673b00e 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel"], "jalview.appletgui.IdCanvas", ["jalview.appletgui.AnnotationLabels", "$.AnnotationPanel", "$.PaintRefresher", "java.awt.Color", "$.Font"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.av = null;\r
-this.showScores = true;\r
-this.maxIdLength = -1;\r
-this.maxIdStr = null;\r
-this.image = null;\r
-this.gg = null;\r
-this.imgHeight = 0;\r
-this.$fastPaint = false;\r
-this.searchResults = null;\r
-this.avcharHeight = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "IdCanvas", awt2swing.Panel);\r
-Clazz.makeConstructor (c$, \r
-function (av) {\r
-Clazz.superConstructor (this, jalview.appletgui.IdCanvas, []);\r
-this.setLayout (null);\r
-this.av = av;\r
-jalview.appletgui.PaintRefresher.Register (this, av.getSequenceSetId ());\r
-}, "jalview.appletgui.AlignViewport");\r
-Clazz.defineMethod (c$, "drawIdString", \r
-function (gg, hiddenRows, s, i, starty, ypos) {\r
-var charHeight = this.av.getCharHeight ();\r
-if (this.searchResults != null && this.searchResults.contains (s)) {\r
-gg.setColor (java.awt.Color.black);\r
-gg.fillRect (0, ((i - starty) * charHeight) + ypos, this.getSize ().width, charHeight);\r
-gg.setColor (java.awt.Color.white);\r
-} else if (this.av.getSelectionGroup () != null && this.av.getSelectionGroup ().getSequences (null).contains (s)) {\r
-gg.setColor (java.awt.Color.lightGray);\r
-gg.fillRect (0, ((i - starty) * charHeight) + ypos, this.getSize ().width, charHeight);\r
-gg.setColor (java.awt.Color.white);\r
-} else {\r
-gg.setColor (this.av.getSequenceColour (s));\r
-gg.fillRect (0, ((i - starty) * charHeight) + ypos, this.getSize ().width, charHeight);\r
-gg.setColor (java.awt.Color.black);\r
-}gg.drawString (s.getDisplayId (this.av.getShowJVSuffix ()), 0, ((i - starty) * charHeight) + ypos + charHeight - (Clazz.doubleToInt (charHeight / 5)));\r
-if (hiddenRows) {\r
-this.drawMarker (i, starty, ypos);\r
-}}, "java.awt.Graphics,~B,jalview.datamodel.SequenceI,~N,~N,~N");\r
-Clazz.defineMethod (c$, "fastPaint", \r
-function (vertical) {\r
-if (this.gg == null) {\r
-this.repaint ();\r
-return;\r
-}this.gg.copyArea (0, 0, this.getSize ().width, this.imgHeight, 0, -vertical * this.av.getCharHeight ());\r
-var ss = this.av.startSeq;\r
-var es = this.av.endSeq;\r
-var transY = 0;\r
-if (vertical > 0) {\r
-ss = es - vertical;\r
-if (ss < this.av.startSeq) {\r
-ss = this.av.startSeq;\r
-} else {\r
-transY = this.imgHeight - vertical * this.av.getCharHeight ();\r
-}} else if (vertical < 0) {\r
-es = ss - vertical;\r
-if (es > this.av.endSeq) {\r
-es = this.av.endSeq;\r
-}}this.gg.translate (0, transY);\r
-this.drawIds (ss, es);\r
-this.gg.translate (0, -transY);\r
-this.$fastPaint = true;\r
-this.repaint ();\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "paintComponent", \r
-function (g) {\r
-if (this.getSize ().height < 0 || this.getSize ().width < 0) {\r
-return;\r
-}if (this.$fastPaint) {\r
-this.$fastPaint = false;\r
-g.drawImage (this.image, 0, 0, this);\r
-return;\r
-}this.imgHeight = this.getSize ().height;\r
-this.imgHeight -= this.imgHeight % this.av.getCharHeight ();\r
-if (this.imgHeight < 1) {\r
-return;\r
-}if (this.image == null || this.imgHeight != this.image.getHeight (this)) {\r
-this.image = this.createImage (this.getSize ().width, this.imgHeight);\r
-this.gg = this.image.getGraphics ();\r
-this.gg.setFont (this.av.getFont ());\r
-}this.gg.setColor (java.awt.Color.white);\r
-var italic =  new java.awt.Font (this.av.getFont ().getName (), 2, this.av.getFont ().getSize ());\r
-this.gg.setFont (italic);\r
-this.gg.fillRect (0, 0, this.getSize ().width, this.getSize ().height);\r
-this.drawIds (this.av.startSeq, this.av.endSeq);\r
-g.drawImage (this.image, 0, 0, this);\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "drawIds", \r
-function (starty, endy) {\r
-var italic =  new java.awt.Font (this.av.getFont ().getName (), 2, this.av.getFont ().getSize ());\r
-this.avcharHeight = this.av.getCharHeight ();\r
-this.gg.setFont (italic);\r
-var currentColor = java.awt.Color.white;\r
-var currentTextColor = java.awt.Color.black;\r
-var doHiddenCheck = this.av.isDisplayReferenceSeq () || this.av.hasHiddenRows ();\r
-var hiddenRows = this.av.hasHiddenRows () && this.av.getShowHiddenMarkers ();\r
-if (this.av.getWrapAlignment ()) {\r
-var maxwidth = this.av.getAlignment ().getWidth ();\r
-var alheight = this.av.getAlignment ().getHeight ();\r
-if (this.av.hasHiddenColumns ()) {\r
-maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;\r
-}var annotationHeight = 0;\r
-var labels = null;\r
-if (this.av.isShowAnnotation ()) {\r
-var ap =  new jalview.appletgui.AnnotationPanel (this.av);\r
-annotationHeight = ap.adjustPanelHeight ();\r
-labels =  new jalview.appletgui.AnnotationLabels (this.av);\r
-}var hgap = this.avcharHeight;\r
-if (this.av.getScaleAboveWrapped ()) {\r
-hgap += this.avcharHeight;\r
-}var cHeight = alheight * this.avcharHeight + hgap + annotationHeight;\r
-var rowSize = this.av.getEndRes () - this.av.getStartRes ();\r
-for (var ypos = hgap, row = this.av.startRes; (ypos <= this.getSize ().height) && (row < maxwidth); ypos += cHeight, row += rowSize) {\r
-for (var i = starty; i < alheight; i++) {\r
-var s = this.av.getAlignment ().getSequenceAt (i);\r
-this.gg.setFont (italic);\r
-if (doHiddenCheck) {\r
-this.setHiddenFont (s);\r
-}this.drawIdString (this.gg, hiddenRows, s, i, 0, ypos);\r
-}\r
-if (labels != null) {\r
-this.gg.translate (0, ypos + (alheight * this.avcharHeight));\r
-labels.drawComponent (this.gg, this.getSize ().width);\r
-this.gg.translate (0, -ypos - (alheight * this.avcharHeight));\r
-}}\r
-} else {\r
-var seq;\r
-for (var i = starty; i < endy; i++) {\r
-seq = this.av.getAlignment ().getSequenceAt (i);\r
-if (seq == null) {\r
-continue;\r
-}this.gg.setFont (italic);\r
-if (doHiddenCheck) {\r
-this.setHiddenFont (seq);\r
-}if ((this.searchResults != null) && this.searchResults.contains (seq)) {\r
-currentColor = java.awt.Color.black;\r
-currentTextColor = java.awt.Color.white;\r
-} else if ((this.av.getSelectionGroup () != null) && this.av.getSelectionGroup ().getSequences (null).contains (seq)) {\r
-currentColor = java.awt.Color.lightGray;\r
-currentTextColor = java.awt.Color.black;\r
-} else {\r
-currentColor = this.av.getSequenceColour (seq);\r
-currentTextColor = java.awt.Color.black;\r
-}this.gg.setColor (currentColor);\r
-this.gg.fillRect (0, (i - starty) * this.avcharHeight, this.getSize ().width, this.avcharHeight);\r
-this.gg.setColor (currentTextColor);\r
-this.gg.drawString (seq.getDisplayId (this.av.getShowJVSuffix ()), 0, (((i - starty) * this.avcharHeight) + this.avcharHeight) - (Clazz.doubleToInt (this.avcharHeight / 5)));\r
-if (hiddenRows) {\r
-this.drawMarker (i, starty, 0);\r
-}}\r
-}}, "~N,~N");\r
-Clazz.defineMethod (c$, "setHighlighted", \r
-function (list) {\r
-this.searchResults = list;\r
-this.repaint ();\r
-}, "java.util.List");\r
-Clazz.defineMethod (c$, "drawMarker", \r
-function (i, starty, yoffset) {\r
-var hseqs = this.av.getAlignment ().getHiddenSequences ().hiddenSequences;\r
-var hSize = hseqs.length;\r
-var hiddenIndex = i;\r
-var lastIndex = i - 1;\r
-var nextIndex = i + 1;\r
-for (var j = 0; j < hSize; j++) {\r
-if (hseqs[j] != null) {\r
-if (j - 1 < hiddenIndex) {\r
-hiddenIndex++;\r
-}if (j - 1 < lastIndex) {\r
-lastIndex++;\r
-}if (j - 1 < nextIndex) {\r
-nextIndex++;\r
-}}}\r
-var below = (hiddenIndex > lastIndex + 1);\r
-var above = (nextIndex > hiddenIndex + 1);\r
-this.gg.setColor (java.awt.Color.blue);\r
-if (below) {\r
-this.gg.fillPolygon ( Clazz.newIntArray (-1, [this.getSize ().width - this.avcharHeight, this.getSize ().width - this.avcharHeight, this.getSize ().width]),  Clazz.newIntArray (-1, [(i - starty) * this.avcharHeight + yoffset, (i - starty) * this.avcharHeight + yoffset + Clazz.doubleToInt (this.avcharHeight / 4), (i - starty) * this.avcharHeight + yoffset]), 3);\r
-}if (above) {\r
-this.gg.fillPolygon ( Clazz.newIntArray (-1, [this.getSize ().width - this.avcharHeight, this.getSize ().width - this.avcharHeight, this.getSize ().width]),  Clazz.newIntArray (-1, [(i - starty + 1) * this.avcharHeight + yoffset, (i - starty + 1) * this.avcharHeight + yoffset - Clazz.doubleToInt (this.avcharHeight / 4), (i - starty + 1) * this.avcharHeight + yoffset]), 3);\r
-}}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "setHiddenFont", \r
-function (seq) {\r
-var bold =  new java.awt.Font (this.av.getFont ().getName (), 1, this.av.getFont ().getSize ());\r
-if (this.av.isHiddenRepSequence (seq)) {\r
-this.gg.setFont (bold);\r
-return true;\r
-}return false;\r
-}, "jalview.datamodel.SequenceI");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel"], "jalview.appletgui.IdCanvas", ["jalview.appletgui.AnnotationLabels", "$.AnnotationPanel", "$.PaintRefresher", "java.awt.Color", "$.Font"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.av = null;
+this.showScores = true;
+this.maxIdLength = -1;
+this.maxIdStr = null;
+this.image = null;
+this.gg = null;
+this.imgHeight = 0;
+this.$fastPaint = false;
+this.searchResults = null;
+this.avcharHeight = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "IdCanvas", awt2swing.Panel);
+Clazz.makeConstructor (c$, 
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.IdCanvas, []);
+this.setLayout (null);
+this.av = av;
+jalview.appletgui.PaintRefresher.Register (this, av.getSequenceSetId ());
+}, "jalview.appletgui.AlignViewport");
+Clazz.defineMethod (c$, "drawIdString", 
+function (gg, hiddenRows, s, i, starty, ypos) {
+var charHeight = this.av.getCharHeight ();
+if (this.searchResults != null && this.searchResults.contains (s)) {
+gg.setColor (java.awt.Color.black);
+gg.fillRect (0, ((i - starty) * charHeight) + ypos, this.getSize ().width, charHeight);
+gg.setColor (java.awt.Color.white);
+} else if (this.av.getSelectionGroup () != null && this.av.getSelectionGroup ().getSequences (null).contains (s)) {
+gg.setColor (java.awt.Color.lightGray);
+gg.fillRect (0, ((i - starty) * charHeight) + ypos, this.getSize ().width, charHeight);
+gg.setColor (java.awt.Color.white);
+} else {
+gg.setColor (this.av.getSequenceColour (s));
+gg.fillRect (0, ((i - starty) * charHeight) + ypos, this.getSize ().width, charHeight);
+gg.setColor (java.awt.Color.black);
+}gg.drawString (s.getDisplayId (this.av.getShowJVSuffix ()), 0, ((i - starty) * charHeight) + ypos + charHeight - (Clazz.doubleToInt (charHeight / 5)));
+if (hiddenRows) {
+this.drawMarker (i, starty, ypos);
+}}, "java.awt.Graphics,~B,jalview.datamodel.SequenceI,~N,~N,~N");
+Clazz.defineMethod (c$, "fastPaint", 
+function (vertical) {
+if (this.gg == null) {
+this.repaint ();
+return;
+}this.gg.copyArea (0, 0, this.getSize ().width, this.imgHeight, 0, -vertical * this.av.getCharHeight ());
+var ss = this.av.startSeq;
+var es = this.av.endSeq;
+var transY = 0;
+if (vertical > 0) {
+ss = es - vertical;
+if (ss < this.av.startSeq) {
+ss = this.av.startSeq;
+} else {
+transY = this.imgHeight - vertical * this.av.getCharHeight ();
+}} else if (vertical < 0) {
+es = ss - vertical;
+if (es > this.av.endSeq) {
+es = this.av.endSeq;
+}}this.gg.translate (0, transY);
+this.drawIds (ss, es);
+this.gg.translate (0, -transY);
+this.$fastPaint = true;
+this.repaint ();
+}, "~N");
+Clazz.overrideMethod (c$, "paintComponent", 
+function (g) {
+if (this.getSize ().height < 0 || this.getSize ().width < 0) {
+return;
+}if (this.$fastPaint) {
+this.$fastPaint = false;
+g.drawImage (this.image, 0, 0, this);
+return;
+}this.imgHeight = this.getSize ().height;
+this.imgHeight -= this.imgHeight % this.av.getCharHeight ();
+if (this.imgHeight < 1) {
+return;
+}if (this.image == null || this.imgHeight != this.image.getHeight (this)) {
+this.image = this.createImage (this.getSize ().width, this.imgHeight);
+this.gg = this.image.getGraphics ();
+this.gg.setFont (this.av.getFont ());
+}this.gg.setColor (java.awt.Color.white);
+var italic =  new java.awt.Font (this.av.getFont ().getName (), 2, this.av.getFont ().getSize ());
+this.gg.setFont (italic);
+this.gg.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+this.drawIds (this.av.startSeq, this.av.endSeq);
+g.drawImage (this.image, 0, 0, this);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "drawIds", 
+function (starty, endy) {
+var italic =  new java.awt.Font (this.av.getFont ().getName (), 2, this.av.getFont ().getSize ());
+this.avcharHeight = this.av.getCharHeight ();
+this.gg.setFont (italic);
+var currentColor = java.awt.Color.white;
+var currentTextColor = java.awt.Color.black;
+var doHiddenCheck = this.av.isDisplayReferenceSeq () || this.av.hasHiddenRows ();
+var hiddenRows = this.av.hasHiddenRows () && this.av.getShowHiddenMarkers ();
+if (this.av.getWrapAlignment ()) {
+var maxwidth = this.av.getAlignment ().getWidth ();
+var alheight = this.av.getAlignment ().getHeight ();
+if (this.av.hasHiddenColumns ()) {
+maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
+}var annotationHeight = 0;
+var labels = null;
+if (this.av.isShowAnnotation ()) {
+var ap =  new jalview.appletgui.AnnotationPanel (this.av);
+annotationHeight = ap.adjustPanelHeight ();
+labels =  new jalview.appletgui.AnnotationLabels (this.av);
+}var hgap = this.avcharHeight;
+if (this.av.getScaleAboveWrapped ()) {
+hgap += this.avcharHeight;
+}var cHeight = alheight * this.avcharHeight + hgap + annotationHeight;
+var rowSize = this.av.getEndRes () - this.av.getStartRes ();
+for (var ypos = hgap, row = this.av.startRes; (ypos <= this.getSize ().height) && (row < maxwidth); ypos += cHeight, row += rowSize) {
+for (var i = starty; i < alheight; i++) {
+var s = this.av.getAlignment ().getSequenceAt (i);
+this.gg.setFont (italic);
+if (doHiddenCheck) {
+this.setHiddenFont (s);
+}this.drawIdString (this.gg, hiddenRows, s, i, 0, ypos);
+}
+if (labels != null) {
+this.gg.translate (0, ypos + (alheight * this.avcharHeight));
+labels.drawComponent (this.gg, this.getSize ().width);
+this.gg.translate (0, -ypos - (alheight * this.avcharHeight));
+}}
+} else {
+var seq;
+for (var i = starty; i < endy; i++) {
+seq = this.av.getAlignment ().getSequenceAt (i);
+if (seq == null) {
+continue;
+}this.gg.setFont (italic);
+if (doHiddenCheck) {
+this.setHiddenFont (seq);
+}if ((this.searchResults != null) && this.searchResults.contains (seq)) {
+currentColor = java.awt.Color.black;
+currentTextColor = java.awt.Color.white;
+} else if ((this.av.getSelectionGroup () != null) && this.av.getSelectionGroup ().getSequences (null).contains (seq)) {
+currentColor = java.awt.Color.lightGray;
+currentTextColor = java.awt.Color.black;
+} else {
+currentColor = this.av.getSequenceColour (seq);
+currentTextColor = java.awt.Color.black;
+}this.gg.setColor (currentColor);
+this.gg.fillRect (0, (i - starty) * this.avcharHeight, this.getSize ().width, this.avcharHeight);
+this.gg.setColor (currentTextColor);
+this.gg.drawString (seq.getDisplayId (this.av.getShowJVSuffix ()), 0, (((i - starty) * this.avcharHeight) + this.avcharHeight) - (Clazz.doubleToInt (this.avcharHeight / 5)));
+if (hiddenRows) {
+this.drawMarker (i, starty, 0);
+}}
+}}, "~N,~N");
+Clazz.defineMethod (c$, "setHighlighted", 
+function (list) {
+this.searchResults = list;
+this.repaint ();
+}, "java.util.List");
+Clazz.defineMethod (c$, "drawMarker", 
+function (i, starty, yoffset) {
+var hseqs = this.av.getAlignment ().getHiddenSequences ().hiddenSequences;
+var hSize = hseqs.length;
+var hiddenIndex = i;
+var lastIndex = i - 1;
+var nextIndex = i + 1;
+for (var j = 0; j < hSize; j++) {
+if (hseqs[j] != null) {
+if (j - 1 < hiddenIndex) {
+hiddenIndex++;
+}if (j - 1 < lastIndex) {
+lastIndex++;
+}if (j - 1 < nextIndex) {
+nextIndex++;
+}}}
+var below = (hiddenIndex > lastIndex + 1);
+var above = (nextIndex > hiddenIndex + 1);
+this.gg.setColor (java.awt.Color.blue);
+if (below) {
+this.gg.fillPolygon ( Clazz.newIntArray (-1, [this.getSize ().width - this.avcharHeight, this.getSize ().width - this.avcharHeight, this.getSize ().width]),  Clazz.newIntArray (-1, [(i - starty) * this.avcharHeight + yoffset, (i - starty) * this.avcharHeight + yoffset + Clazz.doubleToInt (this.avcharHeight / 4), (i - starty) * this.avcharHeight + yoffset]), 3);
+}if (above) {
+this.gg.fillPolygon ( Clazz.newIntArray (-1, [this.getSize ().width - this.avcharHeight, this.getSize ().width - this.avcharHeight, this.getSize ().width]),  Clazz.newIntArray (-1, [(i - starty + 1) * this.avcharHeight + yoffset, (i - starty + 1) * this.avcharHeight + yoffset - Clazz.doubleToInt (this.avcharHeight / 4), (i - starty + 1) * this.avcharHeight + yoffset]), 3);
+}}, "~N,~N,~N");
+Clazz.defineMethod (c$, "setHiddenFont", 
+function (seq) {
+var bold =  new java.awt.Font (this.av.getFont ().getName (), 1, this.av.getFont ().getSize ());
+if (this.av.isHiddenRepSequence (seq)) {
+this.gg.setFont (bold);
+return true;
+}return false;
+}, "jalview.datamodel.SequenceI");
+});
index 1419a24..4f70687 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.lang.Thread", "java.util.Vector"], "jalview.appletgui.IdPanel", ["jalview.appletgui.APopupMenu", "$.IdCanvas", "$.PaintRefresher", "$.Tooltip", "jalview.datamodel.SequenceGroup", "jalview.util.UrlLink", "java.awt.BorderLayout", "java.lang.Float", "$.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.idCanvas = null;\r
-this.av = null;\r
-this.alignPanel = null;\r
-this.scrollThread = null;\r
-this.lastid = -1;\r
-this.mouseDragging = false;\r
-this.links = null;\r
-this.tooltip = null;\r
-if (!Clazz.isClassDefined ("jalview.appletgui.IdPanel.ScrollThread")) {\r
-jalview.appletgui.IdPanel.$IdPanel$ScrollThread$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "IdPanel", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);\r
-Clazz.prepareFields (c$, function () {\r
-this.links =  new java.util.Vector ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (av, parent) {\r
-Clazz.superConstructor (this, jalview.appletgui.IdPanel, []);\r
-this.setName ("idPanel");\r
-this.av = av;\r
-this.alignPanel = parent;\r
-this.idCanvas =  new jalview.appletgui.IdCanvas (av);\r
-this.setLayout ( new java.awt.BorderLayout ());\r
-this.add (this.idCanvas, "Center");\r
-this.idCanvas.addMouseListener (this);\r
-this.idCanvas.addMouseMotionListener (this);\r
-if (av.applet != null) {\r
-av.applet.getLinkParams (this.links);\r
-}{\r
-var srsPos = this.links.indexOf ("SRS|http://srs.ebi.ac.uk/srsbin/cgi-bin/wgetz?-newId+(([uniprot-all:$SEQUENCE_ID$]))+-view+SwissEntry");\r
-if (srsPos > -1) {\r
-this.links.setElementAt ("EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$", srsPos);\r
-}}if (this.links.size () < 1) {\r
-this.links =  new java.util.Vector ();\r
-this.links.addElement ("EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$");\r
-}}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");\r
-Clazz.overrideMethod (c$, "mouseMoved", \r
-function (e) {\r
-var seq = this.alignPanel.seqPanel.findSeq (e);\r
-var sequence = this.av.getAlignment ().getSequenceAt (seq);\r
-var tooltiptext =  new StringBuffer ();\r
-if (sequence != null) {\r
-if (sequence.getDescription () != null) {\r
-tooltiptext.append (sequence.getDescription ());\r
-tooltiptext.append ("\n");\r
-}var sf = sequence.getSequenceFeatures ();\r
-for (var sl = 0; sf != null && sl < sf.length; sl++) {\r
-if (sf[sl].begin == sf[sl].end && sf[sl].begin == 0) {\r
-var nl = false;\r
-if (sf[sl].getFeatureGroup () != null) {\r
-tooltiptext.append (sf[sl].getFeatureGroup ());\r
-nl = true;\r
-};if (sf[sl].getType () != null) {\r
-tooltiptext.append (" ");\r
-tooltiptext.append (sf[sl].getType ());\r
-nl = true;\r
-};if (sf[sl].getDescription () != null) {\r
-tooltiptext.append (" ");\r
-tooltiptext.append (sf[sl].getDescription ());\r
-nl = true;\r
-};if (!Float.isNaN (sf[sl].getScore ()) && sf[sl].getScore () != 0) {\r
-tooltiptext.append (" Score = ");\r
-tooltiptext.append (sf[sl].getScore ());\r
-nl = true;\r
-};if (sf[sl].getStatus () != null && sf[sl].getStatus ().length > 0) {\r
-tooltiptext.append (" (");\r
-tooltiptext.append (sf[sl].getStatus ());\r
-tooltiptext.append (")");\r
-nl = true;\r
-};if (nl) {\r
-tooltiptext.append ("\n");\r
-}}}\r
-}if (tooltiptext.length () == 0) {\r
-if (this.tooltip != null) {\r
-this.tooltip.setVisible (false);\r
-}this.tooltip = null;\r
-tooltiptext = null;\r
-return;\r
-}if (this.tooltip == null) {\r
-this.tooltip =  new jalview.appletgui.Tooltip (sequence.getDisplayId (true) + "\n" + tooltiptext.toString (), this.idCanvas);\r
-} else {\r
-this.tooltip.setTip (sequence.getDisplayId (true) + "\n" + tooltiptext.toString ());\r
-}tooltiptext = null;\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseDragged", \r
-function (e) {\r
-this.mouseDragging = true;\r
-var seq = Math.max (0, this.alignPanel.seqPanel.findSeq (e));\r
-if (seq < this.lastid) {\r
-this.selectSeqs (this.lastid - 1, seq);\r
-} else if (seq > this.lastid) {\r
-this.selectSeqs (this.lastid + 1, seq);\r
-}this.lastid = seq;\r
-this.alignPanel.paintAlignment (false);\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (e) {\r
-if (e.getClickCount () < 2) {\r
-return;\r
-}var seq = this.alignPanel.seqPanel.findSeq (e);\r
-var sq = this.av.getAlignment ().getSequenceAt (seq);\r
-if (sq == null) {\r
-return;\r
-}var id = sq.getName ();\r
-var target = null;\r
-var url = null;\r
-var i = 0;\r
-while (url == null && i < this.links.size ()) {\r
-url = this.links.elementAt (i++).toString ();\r
-var urlLink = null;\r
-try {\r
-urlLink =  new jalview.util.UrlLink (url);\r
-target = urlLink.getTarget ();\r
-} catch (foo) {\r
-if (Clazz.exceptionOf (foo, Exception)) {\r
-System.err.println ("Exception for URLLink '" + url + "'");\r
-foo.printStackTrace ();\r
-url = null;\r
-continue;\r
-} else {\r
-throw foo;\r
-}\r
-}\r
-;if (!urlLink.isValid ()) {\r
-System.err.println (urlLink.getInvalidMessage ());\r
-url = null;\r
-continue;\r
-}var urls = urlLink.makeUrls (id, true);\r
-if (urls == null || urls[0] == null || urls[0].length < 1) {\r
-url = null;\r
-continue;\r
-}url = urls[1];\r
-}\r
-try {\r
-this.alignPanel.alignFrame.showURL (url, target);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (e) {\r
-if (this.scrollThread != null) {\r
-this.scrollThread.running = false;\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (e) {\r
-if (this.av.getWrapAlignment ()) {\r
-return;\r
-}if (this.mouseDragging && e.getY () < 0 && this.av.getStartSeq () > 0) {\r
-this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.IdPanel.ScrollThread, this, null, true);\r
-}if (this.mouseDragging && e.getY () >= this.getSize ().height && this.av.getAlignment ().getHeight () > this.av.getEndSeq ()) {\r
-this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.IdPanel.ScrollThread, this, null, false);\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (e) {\r
-if (e.getClickCount () > 1) {\r
-return;\r
-}var y = e.getY ();\r
-if (this.av.getWrapAlignment ()) {\r
-y -= 2 * this.av.getCharHeight ();\r
-}var seq = this.alignPanel.seqPanel.findSeq (e);\r
-if ((e.getModifiers () & 4) == 4) {\r
-var sq = this.av.getAlignment ().getSequenceAt (seq);\r
-var nlinks =  new java.util.Vector ();\r
-for (var l = 0, lSize = this.links.size (); l < lSize; l++) {\r
-nlinks.addElement (this.links.elementAt (l));\r
-}\r
-var sf = sq == null ? null : sq.getSequenceFeatures ();\r
-for (var sl = 0; sf != null && sl < sf.length; sl++) {\r
-if (sf[sl].begin == sf[sl].end && sf[sl].begin == 0) {\r
-if (sf[sl].links != null && sf[sl].links.size () > 0) {\r
-for (var l = 0, lSize = sf[sl].links.size (); l < lSize; l++) {\r
-nlinks.addElement (sf[sl].links.elementAt (l));\r
-}\r
-}}}\r
-var popup =  new jalview.appletgui.APopupMenu (this.alignPanel, sq, nlinks);\r
-this.add (popup);\r
-popup.show (this, e.getX (), e.getY ());\r
-return;\r
-}if ((this.av.getSelectionGroup () == null) || ((!e.isControlDown () && !e.isShiftDown ()) && this.av.getSelectionGroup () != null)) {\r
-this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());\r
-this.av.getSelectionGroup ().setStartRes (0);\r
-this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);\r
-}if (e.isShiftDown () && this.lastid != -1) {\r
-this.selectSeqs (this.lastid, seq);\r
-} else {\r
-this.selectSeq (seq);\r
-}this.alignPanel.paintAlignment (false);\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "selectSeq", \r
-function (seq) {\r
-this.lastid = seq;\r
-var pickedSeq = this.av.getAlignment ().getSequenceAt (seq);\r
-this.av.getSelectionGroup ().addOrRemove (pickedSeq, true);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "selectSeqs", \r
-function (start, end) {\r
-this.lastid = start;\r
-if (end >= this.av.getAlignment ().getHeight ()) {\r
-end = this.av.getAlignment ().getHeight () - 1;\r
-}if (end < start) {\r
-var tmp = start;\r
-start = end;\r
-end = tmp;\r
-this.lastid = end;\r
-}if (this.av.getSelectionGroup () == null) {\r
-this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());\r
-}for (var i = start; i <= end; i++) {\r
-this.av.getSelectionGroup ().addSequence (this.av.getAlignment ().getSequenceAt (i), i == end);\r
-}\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (e) {\r
-if (this.scrollThread != null) {\r
-this.scrollThread.running = false;\r
-}if (this.av.getSelectionGroup () != null) {\r
-this.av.getSelectionGroup ().recalcConservation ();\r
-}this.mouseDragging = false;\r
-jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());\r
-this.av.sendSelection ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "highlightSearchResults", \r
-function (list) {\r
-this.idCanvas.setHighlighted (list);\r
-if (list == null) {\r
-return;\r
-}var index = this.av.getAlignment ().findIndex (list.get (0));\r
-if (this.av.getStartSeq () > index || this.av.getEndSeq () < index) {\r
-this.alignPanel.setScrollValues (this.av.getStartRes (), index);\r
-}}, "java.util.List");\r
-c$.$IdPanel$ScrollThread$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.running = false;\r
-this.up = true;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui.IdPanel, "ScrollThread", Thread);\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-Clazz.superConstructor (this, jalview.appletgui.IdPanel.ScrollThread, []);\r
-this.up = a;\r
-this.start ();\r
-}, "~B");\r
-Clazz.defineMethod (c$, "stopScrolling", \r
-function () {\r
-this.running = false;\r
-});\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-this.running = true;\r
-while (this.running) {\r
-if (this.b$["jalview.appletgui.IdPanel"].alignPanel.scrollUp (this.up)) {\r
-var a = this.b$["jalview.appletgui.IdPanel"].av.getStartSeq ();\r
-if (!this.up) {\r
-a = this.b$["jalview.appletgui.IdPanel"].av.getEndSeq ();\r
-}if (a < this.b$["jalview.appletgui.IdPanel"].lastid) {\r
-this.b$["jalview.appletgui.IdPanel"].selectSeqs (this.b$["jalview.appletgui.IdPanel"].lastid - 1, a);\r
-} else if (a > this.b$["jalview.appletgui.IdPanel"].lastid && a < this.b$["jalview.appletgui.IdPanel"].av.getAlignment ().getHeight ()) {\r
-this.b$["jalview.appletgui.IdPanel"].selectSeqs (this.b$["jalview.appletgui.IdPanel"].lastid + 1, a);\r
-}this.b$["jalview.appletgui.IdPanel"].lastid = a;\r
-} else {\r
-this.running = false;\r
-}this.b$["jalview.appletgui.IdPanel"].alignPanel.paintAlignment (true);\r
-try {\r
-Thread.sleep (100);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.lang.Thread", "java.util.Vector"], "jalview.appletgui.IdPanel", ["jalview.appletgui.APopupMenu", "$.IdCanvas", "$.PaintRefresher", "$.Tooltip", "jalview.datamodel.SequenceGroup", "jalview.util.UrlLink", "java.awt.BorderLayout", "java.lang.Float", "$.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.idCanvas = null;
+this.av = null;
+this.alignPanel = null;
+this.scrollThread = null;
+this.lastid = -1;
+this.mouseDragging = false;
+this.links = null;
+this.tooltip = null;
+if (!Clazz.isClassDefined ("jalview.appletgui.IdPanel.ScrollThread")) {
+jalview.appletgui.IdPanel.$IdPanel$ScrollThread$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "IdPanel", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz.prepareFields (c$, function () {
+this.links =  new java.util.Vector ();
+});
+Clazz.makeConstructor (c$, 
+function (av, parent) {
+Clazz.superConstructor (this, jalview.appletgui.IdPanel, []);
+this.setName ("idPanel");
+this.av = av;
+this.alignPanel = parent;
+this.idCanvas =  new jalview.appletgui.IdCanvas (av);
+this.setLayout ( new java.awt.BorderLayout ());
+this.add (this.idCanvas, "Center");
+this.idCanvas.addMouseListener (this);
+this.idCanvas.addMouseMotionListener (this);
+if (av.applet != null) {
+av.applet.getLinkParams (this.links);
+}{
+var srsPos = this.links.indexOf ("SRS|http://srs.ebi.ac.uk/srsbin/cgi-bin/wgetz?-newId+(([uniprot-all:$SEQUENCE_ID$]))+-view+SwissEntry");
+if (srsPos > -1) {
+this.links.setElementAt ("EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$", srsPos);
+}}if (this.links.size () < 1) {
+this.links =  new java.util.Vector ();
+this.links.addElement ("EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$");
+}}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "mouseMoved", 
+function (e) {
+var seq = this.alignPanel.seqPanel.findSeq (e);
+var sequence = this.av.getAlignment ().getSequenceAt (seq);
+var tooltiptext =  new StringBuffer ();
+if (sequence != null) {
+if (sequence.getDescription () != null) {
+tooltiptext.append (sequence.getDescription ());
+tooltiptext.append ("\n");
+}var sf = sequence.getSequenceFeatures ();
+for (var sl = 0; sf != null && sl < sf.length; sl++) {
+if (sf[sl].begin == sf[sl].end && sf[sl].begin == 0) {
+var nl = false;
+if (sf[sl].getFeatureGroup () != null) {
+tooltiptext.append (sf[sl].getFeatureGroup ());
+nl = true;
+};if (sf[sl].getType () != null) {
+tooltiptext.append (" ");
+tooltiptext.append (sf[sl].getType ());
+nl = true;
+};if (sf[sl].getDescription () != null) {
+tooltiptext.append (" ");
+tooltiptext.append (sf[sl].getDescription ());
+nl = true;
+};if (!Float.isNaN (sf[sl].getScore ()) && sf[sl].getScore () != 0) {
+tooltiptext.append (" Score = ");
+tooltiptext.append (sf[sl].getScore ());
+nl = true;
+};if (sf[sl].getStatus () != null && sf[sl].getStatus ().length > 0) {
+tooltiptext.append (" (");
+tooltiptext.append (sf[sl].getStatus ());
+tooltiptext.append (")");
+nl = true;
+};if (nl) {
+tooltiptext.append ("\n");
+}}}
+}if (tooltiptext.length () == 0) {
+if (this.tooltip != null) {
+this.tooltip.setVisible (false);
+}this.tooltip = null;
+tooltiptext = null;
+return;
+}if (this.tooltip == null) {
+this.tooltip =  new jalview.appletgui.Tooltip (sequence.getDisplayId (true) + "\n" + tooltiptext.toString (), this.idCanvas);
+} else {
+this.tooltip.setTip (sequence.getDisplayId (true) + "\n" + tooltiptext.toString ());
+}tooltiptext = null;
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged", 
+function (e) {
+this.mouseDragging = true;
+var seq = Math.max (0, this.alignPanel.seqPanel.findSeq (e));
+if (seq < this.lastid) {
+this.selectSeqs (this.lastid - 1, seq);
+} else if (seq > this.lastid) {
+this.selectSeqs (this.lastid + 1, seq);
+}this.lastid = seq;
+this.alignPanel.paintAlignment (false);
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (e) {
+if (e.getClickCount () < 2) {
+return;
+}var seq = this.alignPanel.seqPanel.findSeq (e);
+var sq = this.av.getAlignment ().getSequenceAt (seq);
+if (sq == null) {
+return;
+}var id = sq.getName ();
+var target = null;
+var url = null;
+var i = 0;
+while (url == null && i < this.links.size ()) {
+url = this.links.elementAt (i++).toString ();
+var urlLink = null;
+try {
+urlLink =  new jalview.util.UrlLink (url);
+target = urlLink.getTarget ();
+} catch (foo) {
+if (Clazz.exceptionOf (foo, Exception)) {
+System.err.println ("Exception for URLLink '" + url + "'");
+foo.printStackTrace ();
+url = null;
+continue;
+} else {
+throw foo;
+}
+}
+;if (!urlLink.isValid ()) {
+System.err.println (urlLink.getInvalidMessage ());
+url = null;
+continue;
+}var urls = urlLink.makeUrls (id, true);
+if (urls == null || urls[0] == null || urls[0].length < 1) {
+url = null;
+continue;
+}url = urls[1];
+}
+try {
+this.alignPanel.alignFrame.showURL (url, target);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (e) {
+if (this.scrollThread != null) {
+this.scrollThread.running = false;
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (e) {
+if (this.av.getWrapAlignment ()) {
+return;
+}if (this.mouseDragging && e.getY () < 0 && this.av.getStartSeq () > 0) {
+this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.IdPanel.ScrollThread, this, null, true);
+}if (this.mouseDragging && e.getY () >= this.getSize ().height && this.av.getAlignment ().getHeight () > this.av.getEndSeq ()) {
+this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.IdPanel.ScrollThread, this, null, false);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (e) {
+if (e.getClickCount () > 1) {
+return;
+}var y = e.getY ();
+if (this.av.getWrapAlignment ()) {
+y -= 2 * this.av.getCharHeight ();
+}var seq = this.alignPanel.seqPanel.findSeq (e);
+if ((e.getModifiers () & 4) == 4) {
+var sq = this.av.getAlignment ().getSequenceAt (seq);
+var nlinks =  new java.util.Vector ();
+for (var l = 0, lSize = this.links.size (); l < lSize; l++) {
+nlinks.addElement (this.links.elementAt (l));
+}
+var sf = sq == null ? null : sq.getSequenceFeatures ();
+for (var sl = 0; sf != null && sl < sf.length; sl++) {
+if (sf[sl].begin == sf[sl].end && sf[sl].begin == 0) {
+if (sf[sl].links != null && sf[sl].links.size () > 0) {
+for (var l = 0, lSize = sf[sl].links.size (); l < lSize; l++) {
+nlinks.addElement (sf[sl].links.elementAt (l));
+}
+}}}
+var popup =  new jalview.appletgui.APopupMenu (this.alignPanel, sq, nlinks);
+this.add (popup);
+popup.show (this, e.getX (), e.getY ());
+return;
+}if ((this.av.getSelectionGroup () == null) || ((!e.isControlDown () && !e.isShiftDown ()) && this.av.getSelectionGroup () != null)) {
+this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());
+this.av.getSelectionGroup ().setStartRes (0);
+this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);
+}if (e.isShiftDown () && this.lastid != -1) {
+this.selectSeqs (this.lastid, seq);
+} else {
+this.selectSeq (seq);
+}this.alignPanel.paintAlignment (false);
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "selectSeq", 
+function (seq) {
+this.lastid = seq;
+var pickedSeq = this.av.getAlignment ().getSequenceAt (seq);
+this.av.getSelectionGroup ().addOrRemove (pickedSeq, true);
+}, "~N");
+Clazz.defineMethod (c$, "selectSeqs", 
+function (start, end) {
+this.lastid = start;
+if (end >= this.av.getAlignment ().getHeight ()) {
+end = this.av.getAlignment ().getHeight () - 1;
+}if (end < start) {
+var tmp = start;
+start = end;
+end = tmp;
+this.lastid = end;
+}if (this.av.getSelectionGroup () == null) {
+this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());
+}for (var i = start; i <= end; i++) {
+this.av.getSelectionGroup ().addSequence (this.av.getAlignment ().getSequenceAt (i), i == end);
+}
+}, "~N,~N");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (e) {
+if (this.scrollThread != null) {
+this.scrollThread.running = false;
+}if (this.av.getSelectionGroup () != null) {
+this.av.getSelectionGroup ().recalcConservation ();
+}this.mouseDragging = false;
+jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.av.sendSelection ();
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "highlightSearchResults", 
+function (list) {
+this.idCanvas.setHighlighted (list);
+if (list == null) {
+return;
+}var index = this.av.getAlignment ().findIndex (list.get (0));
+if (this.av.getStartSeq () > index || this.av.getEndSeq () < index) {
+this.alignPanel.setScrollValues (this.av.getStartRes (), index);
+}}, "java.util.List");
+c$.$IdPanel$ScrollThread$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.running = false;
+this.up = true;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.IdPanel, "ScrollThread", Thread);
+Clazz.makeConstructor (c$, 
+function (a) {
+Clazz.superConstructor (this, jalview.appletgui.IdPanel.ScrollThread, []);
+this.up = a;
+this.start ();
+}, "~B");
+Clazz.defineMethod (c$, "stopScrolling", 
+function () {
+this.running = false;
+});
+Clazz.overrideMethod (c$, "run", 
+function () {
+this.running = true;
+while (this.running) {
+if (this.b$["jalview.appletgui.IdPanel"].alignPanel.scrollUp (this.up)) {
+var a = this.b$["jalview.appletgui.IdPanel"].av.getStartSeq ();
+if (!this.up) {
+a = this.b$["jalview.appletgui.IdPanel"].av.getEndSeq ();
+}if (a < this.b$["jalview.appletgui.IdPanel"].lastid) {
+this.b$["jalview.appletgui.IdPanel"].selectSeqs (this.b$["jalview.appletgui.IdPanel"].lastid - 1, a);
+} else if (a > this.b$["jalview.appletgui.IdPanel"].lastid && a < this.b$["jalview.appletgui.IdPanel"].av.getAlignment ().getHeight ()) {
+this.b$["jalview.appletgui.IdPanel"].selectSeqs (this.b$["jalview.appletgui.IdPanel"].lastid + 1, a);
+}this.b$["jalview.appletgui.IdPanel"].lastid = a;
+} else {
+this.running = false;
+}this.b$["jalview.appletgui.IdPanel"].alignPanel.paintAlignment (true);
+try {
+Thread.sleep (100);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}
+});
+c$ = Clazz.p0p ();
+};
+});
index 80a0c59..e7b92f7 100644 (file)
@@ -1,66 +1,66 @@
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.IdwidthAdjuster", ["java.awt.Color", "$.Toolkit"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.active = false;\r
-this.oldX = 0;\r
-this.image = null;\r
-this.ap = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "IdwidthAdjuster", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);\r
-Clazz.makeConstructor (c$, \r
-function (ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.IdwidthAdjuster, []);\r
-this.setName ("IdwidthAdjuster");\r
-this.setLayout (null);\r
-this.ap = ap;\r
-var url = this.getClass ().getResource ("/images/idwidth.gif");\r
-if (url != null) {\r
-this.image = java.awt.Toolkit.getDefaultToolkit ().getImage (url);\r
-}this.addMouseListener (this);\r
-this.addMouseMotionListener (this);\r
-}, "jalview.appletgui.AlignmentPanel");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-this.oldX = evt.getX ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-this.active = false;\r
-this.repaint ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (evt) {\r
-this.active = true;\r
-this.repaint ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (evt) {\r
-this.active = false;\r
-this.repaint ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseDragged", \r
-function (evt) {\r
-this.active = true;\r
-var d = this.ap.idPanel.idCanvas.getSize ();\r
-var dif = evt.getX () - this.oldX;\r
-var newWidth = d.width + dif;\r
-if (newWidth > 20 || dif > 0) {\r
-this.ap.setIdWidth (newWidth, d.height);\r
-this.setSize (newWidth, this.getSize ().height);\r
-this.oldX = evt.getX ();\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseMoved", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "PaintComponent", \r
-function (g) {\r
-g.setColor (java.awt.Color.white);\r
-g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);\r
-if (this.active) {\r
-if (this.image != null) {\r
-g.drawImage (this.image, this.getSize ().width - 20, 2, this);\r
-}}}, "java.awt.Graphics");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.IdwidthAdjuster", ["java.awt.Color", "$.Toolkit"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.active = false;
+this.oldX = 0;
+this.image = null;
+this.ap = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "IdwidthAdjuster", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz.makeConstructor (c$, 
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.IdwidthAdjuster, []);
+this.setName ("IdwidthAdjuster");
+this.setLayout (null);
+this.ap = ap;
+var url = this.getClass ().getResource ("/images/idwidth.gif");
+if (url != null) {
+this.image = java.awt.Toolkit.getDefaultToolkit ().getImage (url);
+}this.addMouseListener (this);
+this.addMouseMotionListener (this);
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+this.oldX = evt.getX ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.active = false;
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (evt) {
+this.active = true;
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (evt) {
+this.active = false;
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged", 
+function (evt) {
+this.active = true;
+var d = this.ap.idPanel.idCanvas.getSize ();
+var dif = evt.getX () - this.oldX;
+var newWidth = d.width + dif;
+if (newWidth > 20 || dif > 0) {
+this.ap.setIdWidth (newWidth, d.height);
+this.setSize (newWidth, this.getSize ().height);
+this.oldX = evt.getX ();
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "PaintComponent", 
+function (g) {
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+if (this.active) {
+if (this.image != null) {
+g.drawImage (this.image, this.getSize ().width - 20, 2, this);
+}}}, "java.awt.Graphics");
+});
index 6f85ed1..ed9ee14 100644 (file)
@@ -1,40 +1,40 @@
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["java.awt.Dialog", "java.awt.event.ActionListener", "awt2swing.Button"], "jalview.appletgui.JVDialog", ["awt2swing.Panel", "java.awt.FlowLayout"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.ap = null;\r
-this.buttonPanel = null;\r
-this.ok = null;\r
-this.cancel = null;\r
-this.accept = false;\r
-this.owner = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "JVDialog", java.awt.Dialog, java.awt.event.ActionListener);\r
-Clazz.prepareFields (c$, function () {\r
-this.ok =  new awt2swing.Button ("Accept");\r
-this.cancel =  new awt2swing.Button ("Cancel");\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (owner, title, modal, width, height) {\r
-Clazz.superConstructor (this, jalview.appletgui.JVDialog, [owner, title, modal]);\r
-this.owner = owner;\r
-height += owner.getInsets ().top + this.getInsets ().bottom;\r
-this.setBounds (owner.getBounds ().x + Clazz.doubleToInt ((owner.getSize ().width - width) / 2), owner.getBounds ().y + Clazz.doubleToInt ((owner.getSize ().height - height) / 2), width, height);\r
-}, "awt2swing.Frame,~S,~B,~N,~N");\r
-Clazz.defineMethod (c$, "setMainPanel", \r
-function (panel) {\r
-this.add (panel, "North");\r
-this.buttonPanel =  new awt2swing.Panel ( new java.awt.FlowLayout ());\r
-this.buttonPanel.add (this.ok);\r
-this.buttonPanel.add (this.cancel);\r
-this.ok.addActionListener (this);\r
-this.cancel.addActionListener (this);\r
-this.add (this.buttonPanel, "South");\r
-this.pack ();\r
-}, "awt2swing.Panel");\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-if (evt.getSource () === this.ok) {\r
-this.accept = true;\r
-}this.setVisible (false);\r
-}, "java.awt.event.ActionEvent");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["java.awt.Dialog", "java.awt.event.ActionListener", "awt2swing.Button"], "jalview.appletgui.JVDialog", ["awt2swing.Panel", "java.awt.FlowLayout"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.ap = null;
+this.buttonPanel = null;
+this.ok = null;
+this.cancel = null;
+this.accept = false;
+this.owner = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "JVDialog", java.awt.Dialog, java.awt.event.ActionListener);
+Clazz.prepareFields (c$, function () {
+this.ok =  new awt2swing.Button ("Accept");
+this.cancel =  new awt2swing.Button ("Cancel");
+});
+Clazz.makeConstructor (c$, 
+function (owner, title, modal, width, height) {
+Clazz.superConstructor (this, jalview.appletgui.JVDialog, [owner, title, modal]);
+this.owner = owner;
+height += owner.getInsets ().top + this.getInsets ().bottom;
+this.setBounds (owner.getBounds ().x + Clazz.doubleToInt ((owner.getSize ().width - width) / 2), owner.getBounds ().y + Clazz.doubleToInt ((owner.getSize ().height - height) / 2), width, height);
+}, "awt2swing.Frame,~S,~B,~N,~N");
+Clazz.defineMethod (c$, "setMainPanel", 
+function (panel) {
+this.add (panel, "North");
+this.buttonPanel =  new awt2swing.Panel ( new java.awt.FlowLayout ());
+this.buttonPanel.add (this.ok);
+this.buttonPanel.add (this.cancel);
+this.ok.addActionListener (this);
+this.cancel.addActionListener (this);
+this.add (this.buttonPanel, "South");
+this.pack ();
+}, "awt2swing.Panel");
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.ok) {
+this.accept = true;
+}this.setVisible (false);
+}, "java.awt.event.ActionEvent");
+});
index 58462cb..e63efea 100644 (file)
Binary files a/bin/jalview/appletgui/OverviewPanel.class and b/bin/jalview/appletgui/OverviewPanel.class differ
index cadd6b7..41baadd 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.OverviewPanel", ["awt2swing.Frame", "jalview.appletgui.FeatureRenderer", "$.SequenceRenderer", "java.awt.Color", "$.Dimension", "java.awt.event.ComponentAdapter", "java.lang.Thread"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.miniMe = null;\r
-this.offscreen = null;\r
-this.av = null;\r
-this.ap = null;\r
-this.scalew = 1;\r
-this.scaleh = 1;\r
-this.$width = 0;\r
-this.sequencesHeight = 0;\r
-this.graphHeight = 20;\r
-this.boxX = -1;\r
-this.boxY = -1;\r
-this.boxWidth = -1;\r
-this.boxHeight = -1;\r
-this.resizing = false;\r
-this.sr = null;\r
-this.fr = null;\r
-this.nullFrame = null;\r
-this.resizeAgain = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "OverviewPanel", awt2swing.Panel, [Runnable, java.awt.event.MouseMotionListener, java.awt.event.MouseListener]);\r
-Clazz.makeConstructor (c$, \r
-function (ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.OverviewPanel, []);\r
-this.av = ap.av;\r
-this.ap = ap;\r
-this.setLayout (null);\r
-this.nullFrame =  new awt2swing.Frame ();\r
-this.nullFrame.addNotify ();\r
-this.sr =  new jalview.appletgui.SequenceRenderer (this.av);\r
-this.sr.graphics = this.nullFrame.getGraphics ();\r
-this.sr.renderGaps = false;\r
-this.sr.forOverview = true;\r
-this.fr =  new jalview.appletgui.FeatureRenderer (this.av);\r
-var initialScale = this.av.getAlignment ().getWidth () / this.av.getAlignment ().getHeight ();\r
-if (this.av.getSequenceConsensusHash () == null) {\r
-this.graphHeight = 0;\r
-}if (this.av.getAlignment ().getWidth () > this.av.getAlignment ().getHeight ()) {\r
-this.$width = 400;\r
-this.sequencesHeight = Clazz.floatToInt (400 / initialScale);\r
-if (this.sequencesHeight < 40) {\r
-this.sequencesHeight = 40;\r
-}} else {\r
-this.$width = Clazz.floatToInt (400 * initialScale);\r
-this.sequencesHeight = 300;\r
-if (this.$width < 120) {\r
-this.$width = 120;\r
-}}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));\r
-this.addComponentListener (((Clazz.isClassDefined ("jalview.appletgui.OverviewPanel$1") ? 0 : jalview.appletgui.OverviewPanel.$OverviewPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.OverviewPanel$1, this, null)));\r
-this.addMouseMotionListener (this);\r
-this.addMouseListener (this);\r
-this.updateOverviewImage ();\r
-}, "jalview.appletgui.AlignmentPanel");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseMoved", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-this.boxX = evt.getX ();\r
-this.boxY = evt.getY ();\r
-this.checkValid ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-this.boxX = evt.getX ();\r
-this.boxY = evt.getY ();\r
-this.checkValid ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseDragged", \r
-function (evt) {\r
-this.boxX = evt.getX ();\r
-this.boxY = evt.getY ();\r
-this.checkValid ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "checkValid", \r
-function () {\r
-if (this.boxY < 0) {\r
-this.boxY = 0;\r
-}if (this.boxY > (this.sequencesHeight - this.boxHeight)) {\r
-this.boxY = this.sequencesHeight - this.boxHeight + 1;\r
-}if (this.boxX < 0) {\r
-this.boxX = 0;\r
-}if (this.boxX > (this.$width - this.boxWidth)) {\r
-if (this.av.hasHiddenColumns ()) {\r
-this.boxWidth = Clazz.floatToInt ((this.av.endRes - this.av.startRes + 1) * this.av.getCharWidth () * this.scalew);\r
-}this.boxX = this.$width - this.boxWidth;\r
-}var col = Clazz.floatToInt (this.boxX / this.scalew / this.av.getCharWidth ());\r
-var row = Clazz.floatToInt (this.boxY / this.scaleh / this.av.getCharHeight ());\r
-if (this.av.hasHiddenColumns ()) {\r
-if (!this.av.getColumnSelection ().isVisible (col)) {\r
-return;\r
-}col = this.av.getColumnSelection ().findColumnPosition (col);\r
-}if (this.av.hasHiddenRows ()) {\r
-row = this.av.getAlignment ().getHiddenSequences ().findIndexWithoutHiddenSeqs (row);\r
-}this.ap.setScrollValues (col, row);\r
-this.ap.paintAlignment (false);\r
-});\r
-Clazz.defineMethod (c$, "updateOverviewImage", \r
-function () {\r
-if (this.resizing) {\r
-this.resizeAgain = true;\r
-return;\r
-}if (this.av.isShowSequenceFeatures ()) {\r
-this.fr.transferSettings (this.ap.seqPanel.seqCanvas.fr);\r
-}this.resizing = true;\r
-if ((this.getSize ().width > 0) && (this.getSize ().height > 0)) {\r
-this.$width = this.getSize ().width;\r
-this.sequencesHeight = this.getSize ().height - this.graphHeight;\r
-}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));\r
-var thread =  new Thread (this);\r
-thread.start ();\r
-this.repaint ();\r
-});\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-this.miniMe = null;\r
-var alwidth = this.av.getAlignment ().getWidth ();\r
-var alheight = this.av.getAlignment ().getHeight ();\r
-if (this.av.isShowSequenceFeatures ()) {\r
-this.fr.transferSettings (this.ap.seqPanel.seqCanvas.getFeatureRenderer ());\r
-}if (this.getSize ().width > 0 && this.getSize ().height > 0) {\r
-this.$width = this.getSize ().width;\r
-this.sequencesHeight = this.getSize ().height - this.graphHeight;\r
-}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));\r
-var fullsizeWidth = alwidth * this.av.getCharWidth ();\r
-var fullsizeHeight = alheight * this.av.getCharHeight ();\r
-this.scalew = this.$width / fullsizeWidth;\r
-this.scaleh = this.sequencesHeight / fullsizeHeight;\r
-this.miniMe = this.nullFrame.createImage (this.$width, this.sequencesHeight + this.graphHeight);\r
-this.offscreen = this.nullFrame.createImage (this.$width, this.sequencesHeight + this.graphHeight);\r
-var mg = this.miniMe.getGraphics ();\r
-var sampleCol = alwidth / this.$width;\r
-var sampleRow = alheight / this.sequencesHeight;\r
-var lastcol = 0;\r
-var lastrow = 0;\r
-var xstart = 0;\r
-var ystart = 0;\r
-var color = java.awt.Color.yellow;\r
-var row;\r
-var col;\r
-var sameRow = 0;\r
-var sameCol = 0;\r
-var seq;\r
-var hasHiddenRows = this.av.hasHiddenRows ();\r
-var hasHiddenCols = this.av.hasHiddenColumns ();\r
-var hiddenRow = false;\r
-var alignment = this.av.getAlignment ();\r
-for (row = 0; row <= this.sequencesHeight; row++) {\r
-if (Clazz.floatToInt (row * sampleRow) == lastrow) {\r
-sameRow++;\r
-continue;\r
-}hiddenRow = false;\r
-if (hasHiddenRows) {\r
-seq = alignment.getHiddenSequences ().getHiddenSequence (lastrow);\r
-if (seq == null) {\r
-var index = alignment.getHiddenSequences ().findIndexWithoutHiddenSeqs (lastrow);\r
-seq = alignment.getSequenceAt (index);\r
-} else {\r
-hiddenRow = true;\r
-}} else {\r
-seq = alignment.getSequenceAt (lastrow);\r
-}for (col = 0; col < this.$width; col++) {\r
-if (Clazz.floatToInt (col * sampleCol) == lastcol && Clazz.floatToInt (row * sampleRow) == lastrow) {\r
-sameCol++;\r
-continue;\r
-}lastcol = Clazz.floatToInt (col * sampleCol);\r
-if (seq.getLength () > lastcol) {\r
-color = this.sr.getResidueBoxColour (seq, lastcol);\r
-if (this.av.isShowSequenceFeatures ()) {\r
-color = this.fr.findFeatureColour (color, seq, lastcol);\r
-}} else {\r
-color = java.awt.Color.white;\r
-}if (hiddenRow || (hasHiddenCols && !this.av.getColumnSelection ().isVisible (lastcol))) {\r
-color = color.darker ().darker ();\r
-}mg.setColor (color);\r
-if (sameCol == 1 && sameRow == 1) {\r
-mg.drawLine (xstart, ystart, xstart, ystart);\r
-} else {\r
-mg.fillRect (xstart, ystart, sameCol, sameRow);\r
-}xstart = col;\r
-sameCol = 1;\r
-}\r
-lastrow = Clazz.floatToInt (row * sampleRow);\r
-ystart = row;\r
-sameRow = 1;\r
-}\r
-if (this.av.getAlignmentConservationAnnotation () != null) {\r
-for (col = 0; col < this.$width; col++) {\r
-lastcol = Clazz.floatToInt (col * sampleCol);\r
-{\r
-mg.translate (col, this.sequencesHeight);\r
-this.ap.annotationPanel.renderer.drawGraph (mg, this.av.getAlignmentConservationAnnotation (), this.av.getAlignmentConservationAnnotation ().annotations, Clazz.floatToInt (sampleCol) + 1, this.graphHeight, Clazz.floatToInt (col * sampleCol), Clazz.floatToInt (col * sampleCol) + 1);\r
-mg.translate (-col, -this.sequencesHeight);\r
-}}\r
-}System.gc ();\r
-this.resizing = false;\r
-this.setBoxPosition ();\r
-if (this.resizeAgain) {\r
-this.resizeAgain = false;\r
-this.updateOverviewImage ();\r
-}});\r
-Clazz.defineMethod (c$, "setBoxPosition", \r
-function () {\r
-var fullsizeWidth = this.av.getAlignment ().getWidth () * this.av.getCharWidth ();\r
-var fullsizeHeight = (this.av.getAlignment ().getHeight () + this.av.getAlignment ().getHiddenSequences ().getSize ()) * this.av.getCharHeight ();\r
-var startRes = this.av.getStartRes ();\r
-var endRes = this.av.getEndRes ();\r
-if (this.av.hasHiddenColumns ()) {\r
-startRes = this.av.getColumnSelection ().adjustForHiddenColumns (startRes);\r
-endRes = this.av.getColumnSelection ().adjustForHiddenColumns (endRes);\r
-}var startSeq = this.av.startSeq;\r
-var endSeq = this.av.endSeq;\r
-if (this.av.hasHiddenRows ()) {\r
-startSeq = this.av.getAlignment ().getHiddenSequences ().adjustForHiddenSeqs (startSeq);\r
-endSeq = this.av.getAlignment ().getHiddenSequences ().adjustForHiddenSeqs (endSeq);\r
-}this.scalew = this.$width / fullsizeWidth;\r
-this.scaleh = this.sequencesHeight / fullsizeHeight;\r
-this.boxX = Clazz.floatToInt (startRes * this.av.getCharWidth () * this.scalew);\r
-this.boxY = Clazz.floatToInt (startSeq * this.av.getCharHeight () * this.scaleh);\r
-if (this.av.hasHiddenColumns ()) {\r
-this.boxWidth = Clazz.floatToInt ((endRes - startRes + 1) * this.av.getCharWidth () * this.scalew);\r
-} else {\r
-this.boxWidth = Clazz.floatToInt ((endRes - startRes + 1) * this.av.getCharWidth () * this.scalew);\r
-}this.boxHeight = Clazz.floatToInt ((endSeq - startSeq) * this.av.getCharHeight () * this.scaleh);\r
-this.repaint ();\r
-});\r
-Clazz.overrideMethod (c$, "update", \r
-function (g) {\r
-this.paint (g);\r
-}, "java.awt.Graphics");\r
-Clazz.overrideMethod (c$, "paintComponent", \r
-function (g) {\r
-var og = this.offscreen.getGraphics ();\r
-if (this.miniMe != null) {\r
-og.drawImage (this.miniMe, 0, 0, this);\r
-og.setColor (java.awt.Color.red);\r
-og.drawRect (this.boxX, this.boxY, this.boxWidth, this.boxHeight);\r
-og.drawRect (this.boxX + 1, this.boxY + 1, this.boxWidth - 2, this.boxHeight - 2);\r
-g.drawImage (this.offscreen, 0, 0, this);\r
-}}, "java.awt.Graphics");\r
-c$.$OverviewPanel$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "OverviewPanel$1", java.awt.event.ComponentAdapter);\r
-Clazz.overrideMethod (c$, "componentResized", \r
-function (evt) {\r
-if (this.b$["jalview.appletgui.OverviewPanel"].getSize ().width != this.b$["jalview.appletgui.OverviewPanel"].$width || this.b$["jalview.appletgui.OverviewPanel"].getSize ().height != this.b$["jalview.appletgui.OverviewPanel"].sequencesHeight + this.b$["jalview.appletgui.OverviewPanel"].graphHeight) {\r
-this.b$["jalview.appletgui.OverviewPanel"].updateOverviewImage ();\r
-}}, "java.awt.event.ComponentEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.OverviewPanel", ["awt2swing.Frame", "jalview.appletgui.FeatureRenderer", "$.SequenceRenderer", "java.awt.Color", "$.Dimension", "java.awt.event.ComponentAdapter", "java.lang.Thread"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.miniMe = null;
+this.offscreen = null;
+this.av = null;
+this.ap = null;
+this.scalew = 1;
+this.scaleh = 1;
+this.$width = 0;
+this.sequencesHeight = 0;
+this.graphHeight = 20;
+this.boxX = -1;
+this.boxY = -1;
+this.boxWidth = -1;
+this.boxHeight = -1;
+this.resizing = false;
+this.sr = null;
+this.fr = null;
+this.nullFrame = null;
+this.resizeAgain = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "OverviewPanel", awt2swing.Panel, [Runnable, java.awt.event.MouseMotionListener, java.awt.event.MouseListener]);
+Clazz.makeConstructor (c$, 
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.OverviewPanel, []);
+this.av = ap.av;
+this.ap = ap;
+this.setLayout (null);
+this.nullFrame =  new awt2swing.Frame ();
+this.nullFrame.addNotify ();
+this.sr =  new jalview.appletgui.SequenceRenderer (this.av);
+this.sr.graphics = this.nullFrame.getGraphics ();
+this.sr.renderGaps = false;
+this.sr.forOverview = true;
+this.fr =  new jalview.appletgui.FeatureRenderer (this.av);
+var initialScale = this.av.getAlignment ().getWidth () / this.av.getAlignment ().getHeight ();
+if (this.av.getSequenceConsensusHash () == null) {
+this.graphHeight = 0;
+}if (this.av.getAlignment ().getWidth () > this.av.getAlignment ().getHeight ()) {
+this.$width = 400;
+this.sequencesHeight = Clazz.floatToInt (400 / initialScale);
+if (this.sequencesHeight < 40) {
+this.sequencesHeight = 40;
+}} else {
+this.$width = Clazz.floatToInt (400 * initialScale);
+this.sequencesHeight = 300;
+if (this.$width < 120) {
+this.$width = 120;
+}}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));
+this.addComponentListener (((Clazz.isClassDefined ("jalview.appletgui.OverviewPanel$1") ? 0 : jalview.appletgui.OverviewPanel.$OverviewPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.OverviewPanel$1, this, null)));
+this.addMouseMotionListener (this);
+this.addMouseListener (this);
+this.updateOverviewImage ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+this.boxX = evt.getX ();
+this.boxY = evt.getY ();
+this.checkValid ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.boxX = evt.getX ();
+this.boxY = evt.getY ();
+this.checkValid ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged", 
+function (evt) {
+this.boxX = evt.getX ();
+this.boxY = evt.getY ();
+this.checkValid ();
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "checkValid", 
+function () {
+if (this.boxY < 0) {
+this.boxY = 0;
+}if (this.boxY > (this.sequencesHeight - this.boxHeight)) {
+this.boxY = this.sequencesHeight - this.boxHeight + 1;
+}if (this.boxX < 0) {
+this.boxX = 0;
+}if (this.boxX > (this.$width - this.boxWidth)) {
+if (this.av.hasHiddenColumns ()) {
+this.boxWidth = Clazz.floatToInt ((this.av.endRes - this.av.startRes + 1) * this.av.getCharWidth () * this.scalew);
+}this.boxX = this.$width - this.boxWidth;
+}var col = Clazz.floatToInt (this.boxX / this.scalew / this.av.getCharWidth ());
+var row = Clazz.floatToInt (this.boxY / this.scaleh / this.av.getCharHeight ());
+if (this.av.hasHiddenColumns ()) {
+if (!this.av.getColumnSelection ().isVisible (col)) {
+return;
+}col = this.av.getColumnSelection ().findColumnPosition (col);
+}if (this.av.hasHiddenRows ()) {
+row = this.av.getAlignment ().getHiddenSequences ().findIndexWithoutHiddenSeqs (row);
+}this.ap.setScrollValues (col, row);
+this.ap.paintAlignment (false);
+});
+Clazz.defineMethod (c$, "updateOverviewImage", 
+function () {
+if (this.resizing) {
+this.resizeAgain = true;
+return;
+}if (this.av.isShowSequenceFeatures ()) {
+this.fr.transferSettings (this.ap.seqPanel.seqCanvas.fr);
+}this.resizing = true;
+if ((this.getSize ().width > 0) && (this.getSize ().height > 0)) {
+this.$width = this.getSize ().width;
+this.sequencesHeight = this.getSize ().height - this.graphHeight;
+}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));
+var thread =  new Thread (this);
+thread.start ();
+this.repaint ();
+});
+Clazz.overrideMethod (c$, "run", 
+function () {
+this.miniMe = null;
+var alwidth = this.av.getAlignment ().getWidth ();
+var alheight = this.av.getAlignment ().getHeight ();
+if (this.av.isShowSequenceFeatures ()) {
+this.fr.transferSettings (this.ap.seqPanel.seqCanvas.getFeatureRenderer ());
+}if (this.getSize ().width > 0 && this.getSize ().height > 0) {
+this.$width = this.getSize ().width;
+this.sequencesHeight = this.getSize ().height - this.graphHeight;
+}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));
+var fullsizeWidth = alwidth * this.av.getCharWidth ();
+var fullsizeHeight = alheight * this.av.getCharHeight ();
+this.scalew = this.$width / fullsizeWidth;
+this.scaleh = this.sequencesHeight / fullsizeHeight;
+this.miniMe = this.nullFrame.createImage (this.$width, this.sequencesHeight + this.graphHeight);
+this.offscreen = this.nullFrame.createImage (this.$width, this.sequencesHeight + this.graphHeight);
+var mg = this.miniMe.getGraphics ();
+var sampleCol = alwidth / this.$width;
+var sampleRow = alheight / this.sequencesHeight;
+var lastcol = 0;
+var lastrow = 0;
+var xstart = 0;
+var ystart = 0;
+var color = java.awt.Color.yellow;
+var row;
+var col;
+var sameRow = 0;
+var sameCol = 0;
+var seq;
+var hasHiddenRows = this.av.hasHiddenRows ();
+var hasHiddenCols = this.av.hasHiddenColumns ();
+var hiddenRow = false;
+var alignment = this.av.getAlignment ();
+for (row = 0; row <= this.sequencesHeight; row++) {
+if (Clazz.floatToInt (row * sampleRow) == lastrow) {
+sameRow++;
+continue;
+}hiddenRow = false;
+if (hasHiddenRows) {
+seq = alignment.getHiddenSequences ().getHiddenSequence (lastrow);
+if (seq == null) {
+var index = alignment.getHiddenSequences ().findIndexWithoutHiddenSeqs (lastrow);
+seq = alignment.getSequenceAt (index);
+} else {
+hiddenRow = true;
+}} else {
+seq = alignment.getSequenceAt (lastrow);
+}for (col = 0; col < this.$width; col++) {
+if (Clazz.floatToInt (col * sampleCol) == lastcol && Clazz.floatToInt (row * sampleRow) == lastrow) {
+sameCol++;
+continue;
+}lastcol = Clazz.floatToInt (col * sampleCol);
+if (seq.getLength () > lastcol) {
+color = this.sr.getResidueBoxColour (seq, lastcol);
+if (this.av.isShowSequenceFeatures ()) {
+color = this.fr.findFeatureColour (color, seq, lastcol);
+}} else {
+color = java.awt.Color.white;
+}if (hiddenRow || (hasHiddenCols && !this.av.getColumnSelection ().isVisible (lastcol))) {
+color = color.darker ().darker ();
+}mg.setColor (color);
+if (sameCol == 1 && sameRow == 1) {
+mg.drawLine (xstart, ystart, xstart, ystart);
+} else {
+mg.fillRect (xstart, ystart, sameCol, sameRow);
+}xstart = col;
+sameCol = 1;
+}
+lastrow = Clazz.floatToInt (row * sampleRow);
+ystart = row;
+sameRow = 1;
+}
+if (this.av.getAlignmentConservationAnnotation () != null) {
+for (col = 0; col < this.$width; col++) {
+lastcol = Clazz.floatToInt (col * sampleCol);
+{
+mg.translate (col, this.sequencesHeight);
+this.ap.annotationPanel.renderer.drawGraph (mg, this.av.getAlignmentConservationAnnotation (), this.av.getAlignmentConservationAnnotation ().annotations, Clazz.floatToInt (sampleCol) + 1, this.graphHeight, Clazz.floatToInt (col * sampleCol), Clazz.floatToInt (col * sampleCol) + 1);
+mg.translate (-col, -this.sequencesHeight);
+}}
+}System.gc ();
+this.resizing = false;
+this.setBoxPosition ();
+if (this.resizeAgain) {
+this.resizeAgain = false;
+this.updateOverviewImage ();
+}});
+Clazz.defineMethod (c$, "setBoxPosition", 
+function () {
+var fullsizeWidth = this.av.getAlignment ().getWidth () * this.av.getCharWidth ();
+var fullsizeHeight = (this.av.getAlignment ().getHeight () + this.av.getAlignment ().getHiddenSequences ().getSize ()) * this.av.getCharHeight ();
+var startRes = this.av.getStartRes ();
+var endRes = this.av.getEndRes ();
+if (this.av.hasHiddenColumns ()) {
+startRes = this.av.getColumnSelection ().adjustForHiddenColumns (startRes);
+endRes = this.av.getColumnSelection ().adjustForHiddenColumns (endRes);
+}var startSeq = this.av.startSeq;
+var endSeq = this.av.endSeq;
+if (this.av.hasHiddenRows ()) {
+startSeq = this.av.getAlignment ().getHiddenSequences ().adjustForHiddenSeqs (startSeq);
+endSeq = this.av.getAlignment ().getHiddenSequences ().adjustForHiddenSeqs (endSeq);
+}this.scalew = this.$width / fullsizeWidth;
+this.scaleh = this.sequencesHeight / fullsizeHeight;
+this.boxX = Clazz.floatToInt (startRes * this.av.getCharWidth () * this.scalew);
+this.boxY = Clazz.floatToInt (startSeq * this.av.getCharHeight () * this.scaleh);
+if (this.av.hasHiddenColumns ()) {
+this.boxWidth = Clazz.floatToInt ((endRes - startRes + 1) * this.av.getCharWidth () * this.scalew);
+} else {
+this.boxWidth = Clazz.floatToInt ((endRes - startRes + 1) * this.av.getCharWidth () * this.scalew);
+}this.boxHeight = Clazz.floatToInt ((endSeq - startSeq) * this.av.getCharHeight () * this.scaleh);
+this.repaint ();
+});
+Clazz.overrideMethod (c$, "update", 
+function (g) {
+this.paint (g);
+}, "java.awt.Graphics");
+Clazz.overrideMethod (c$, "paintComponent", 
+function (g) {
+var og = this.offscreen.getGraphics ();
+if (this.miniMe != null) {
+og.drawImage (this.miniMe, 0, 0, this);
+og.setColor (java.awt.Color.red);
+og.drawRect (this.boxX, this.boxY, this.boxWidth, this.boxHeight);
+og.drawRect (this.boxX + 1, this.boxY + 1, this.boxWidth - 2, this.boxHeight - 2);
+g.drawImage (this.offscreen, 0, 0, this);
+}}, "java.awt.Graphics");
+c$.$OverviewPanel$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "OverviewPanel$1", java.awt.event.ComponentAdapter);
+Clazz.overrideMethod (c$, "componentResized", 
+function (evt) {
+if (this.b$["jalview.appletgui.OverviewPanel"].getSize ().width != this.b$["jalview.appletgui.OverviewPanel"].$width || this.b$["jalview.appletgui.OverviewPanel"].getSize ().height != this.b$["jalview.appletgui.OverviewPanel"].sequencesHeight + this.b$["jalview.appletgui.OverviewPanel"].graphHeight) {
+this.b$["jalview.appletgui.OverviewPanel"].updateOverviewImage ();
+}}, "java.awt.event.ComponentEvent");
+c$ = Clazz.p0p ();
+};
+});
index 92d23e5..fbccea5 100644 (file)
Binary files a/bin/jalview/appletgui/PCAPanel.class and b/bin/jalview/appletgui/PCAPanel.class differ
index 7813b4d..77168bf 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["jalview.appletgui.EmbmenuFrame", "java.awt.event.ActionListener", "$.ItemListener", "awt2swing.Button", "$.CheckboxMenuItem", "$.Choice", "$.Label", "$.Menu", "$.MenuBar", "$.MenuItem", "$.Panel", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.PCAPanel", ["awt2swing.Frame", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.RotatableCanvas", "jalview.bin.JalviewLite", "jalview.datamodel.Alignment", "jalview.util.MessageManager", "jalview.viewmodel.PCAModel", "java.awt.Color", "$.Font", "java.lang.Thread"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.rc = null;\r
-this.av = null;\r
-this.pcaModel = null;\r
-this.top = 0;\r
-this.jPanel2 = null;\r
-this.jLabel1 = null;\r
-this.jLabel2 = null;\r
-this.jLabel3 = null;\r
-this.xCombobox = null;\r
-this.yCombobox = null;\r
-this.zCombobox = null;\r
-this.resetButton = null;\r
-this.flowLayout1 = null;\r
-this.borderLayout1 = null;\r
-this.menuBar1 = null;\r
-this.menu1 = null;\r
-this.menu2 = null;\r
-this.calcSettings = null;\r
-this.labels = null;\r
-this.protSetting = null;\r
-this.nuclSetting = null;\r
-this.values = null;\r
-this.inputData = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "PCAPanel", jalview.appletgui.EmbmenuFrame, [Runnable, java.awt.event.ActionListener, java.awt.event.ItemListener]);\r
-Clazz.prepareFields (c$, function () {\r
-this.jPanel2 =  new awt2swing.Panel ();\r
-this.jLabel1 =  new awt2swing.Label ();\r
-this.jLabel2 =  new awt2swing.Label ();\r
-this.jLabel3 =  new awt2swing.Label ();\r
-this.xCombobox =  new awt2swing.Choice ();\r
-this.yCombobox =  new awt2swing.Choice ();\r
-this.zCombobox =  new awt2swing.Choice ();\r
-this.resetButton =  new awt2swing.Button ();\r
-this.flowLayout1 =  new java.awt.FlowLayout ();\r
-this.borderLayout1 =  new java.awt.BorderLayout ();\r
-this.menuBar1 =  new awt2swing.MenuBar ();\r
-this.menu1 =  new awt2swing.Menu ();\r
-this.menu2 =  new awt2swing.Menu ();\r
-this.calcSettings =  new awt2swing.Menu ();\r
-this.labels =  new awt2swing.CheckboxMenuItem ();\r
-this.protSetting =  new awt2swing.CheckboxMenuItem ();\r
-this.nuclSetting =  new awt2swing.CheckboxMenuItem ();\r
-this.values =  new awt2swing.MenuItem ();\r
-this.inputData =  new awt2swing.MenuItem ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (av) {\r
-Clazz.superConstructor (this, jalview.appletgui.PCAPanel, []);\r
-try {\r
-this.jbInit ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-for (var i = 1; i < 8; i++) {\r
-this.xCombobox.addItem ("dim " + i);\r
-this.yCombobox.addItem ("dim " + i);\r
-this.zCombobox.addItem ("dim " + i);\r
-}\r
-this.av = av;\r
-var selected = av.getSelectionGroup () != null && av.getSelectionGroup ().getSize () > 0;\r
-var seqstrings = av.getAlignmentView (selected);\r
-var nucleotide = av.getAlignment ().isNucleotide ();\r
-var seqs;\r
-if (!selected) {\r
-seqs = av.getAlignment ().getSequencesArray ();\r
-} else {\r
-seqs = av.getSelectionGroup ().getSequencesInOrder (av.getAlignment ());\r
-}var sq = seqstrings.getSequences ();\r
-var length = sq[0].getWidth ();\r
-for (var i = 0; i < seqs.length; i++) {\r
-if (sq[i].getWidth () != length) {\r
-System.out.println ("Sequences must be equal length for PCA analysis");\r
-return;\r
-}}\r
-this.pcaModel =  new jalview.viewmodel.PCAModel (seqstrings, seqs, nucleotide);\r
-this.rc =  new jalview.appletgui.RotatableCanvas (av);\r
-this.embedMenuIfNeeded (this.rc);\r
-this.add (this.rc, "Center");\r
-jalview.bin.JalviewLite.addFrame (this, jalview.util.MessageManager.getString ("label.principal_component_analysis"), 475, 400);\r
-var worker =  new Thread (this);\r
-worker.start ();\r
-}, "jalview.appletgui.AlignViewport");\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-this.calcSettings.setEnabled (false);\r
-this.rc.setEnabled (false);\r
-try {\r
-this.nuclSetting.setState (this.pcaModel.isNucleotide ());\r
-this.protSetting.setState (!this.pcaModel.isNucleotide ());\r
-this.pcaModel.run ();\r
-this.xCombobox.select (new Integer (0));\r
-this.yCombobox.select (new Integer (1));\r
-this.zCombobox.select (new Integer (2));\r
-this.pcaModel.updateRc (this.rc);\r
-this.top = this.pcaModel.getTop ();\r
-} catch (x) {\r
-if (Clazz.exceptionOf (x, OutOfMemoryError)) {\r
-System.err.println ("Out of memory when calculating PCA.");\r
-return;\r
-} else {\r
-throw x;\r
-}\r
-}\r
-this.calcSettings.setEnabled (true);\r
-this.rc.setEnabled (true);\r
-this.rc.repaint ();\r
-this.repaint ();\r
-});\r
-Clazz.defineMethod (c$, "doDimensionChange", \r
-function () {\r
-if (this.top == 0) {\r
-return;\r
-}var dim1 = this.top - this.xCombobox.getSelectedIndex ();\r
-var dim2 = this.top - this.yCombobox.getSelectedIndex ();\r
-var dim3 = this.top - this.zCombobox.getSelectedIndex ();\r
-this.pcaModel.updateRcView (dim1, dim2, dim3);\r
-this.rc.img = null;\r
-this.rc.rotmat.setIdentity ();\r
-this.rc.initAxes ();\r
-this.rc.paint (this.rc.getGraphics ());\r
-});\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-if (evt.getSource () === this.inputData) {\r
-this.showOriginalData ();\r
-}if (evt.getSource () === this.resetButton) {\r
-this.xCombobox.select (new Integer (0));\r
-this.yCombobox.select (new Integer (1));\r
-this.zCombobox.select (new Integer (2));\r
-this.doDimensionChange ();\r
-}if (evt.getSource () === this.values) {\r
-this.values_actionPerformed ();\r
-}}, "java.awt.event.ActionEvent");\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (evt) {\r
-if (evt.getSource () === this.xCombobox) {\r
-this.xCombobox_actionPerformed ();\r
-} else if (evt.getSource () === this.yCombobox) {\r
-this.yCombobox_actionPerformed ();\r
-} else if (evt.getSource () === this.zCombobox) {\r
-this.zCombobox_actionPerformed ();\r
-} else if (evt.getSource () === this.labels) {\r
-this.labels_itemStateChanged (evt);\r
-} else if (evt.getSource () === this.nuclSetting) {\r
-if (!this.pcaModel.isNucleotide ()) {\r
-this.pcaModel.setNucleotide (true);\r
- new Thread (this).start ();\r
-}} else if (evt.getSource () === this.protSetting) {\r
-if (this.pcaModel.isNucleotide ()) {\r
-this.pcaModel.setNucleotide (false);\r
- new Thread (this).start ();\r
-}}}, "java.awt.event.ItemEvent");\r
-Clazz.defineMethod (c$, "xCombobox_actionPerformed", \r
-function () {\r
-this.doDimensionChange ();\r
-});\r
-Clazz.defineMethod (c$, "yCombobox_actionPerformed", \r
-function () {\r
-this.doDimensionChange ();\r
-});\r
-Clazz.defineMethod (c$, "zCombobox_actionPerformed", \r
-function () {\r
-this.doDimensionChange ();\r
-});\r
-Clazz.defineMethod (c$, "values_actionPerformed", \r
-function () {\r
-var cap =  new jalview.appletgui.CutAndPasteTransfer (false, null);\r
-var frame =  new awt2swing.Frame ();\r
-frame.add (cap);\r
-jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.pca_details"), 500, 500);\r
-cap.setText (this.pcaModel.getDetails ());\r
-});\r
-Clazz.defineMethod (c$, "showOriginalData", \r
-function () {\r
-var gc = '-';\r
-try {\r
-gc = this.av.getGapCharacter ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-;var alAndColsel = this.pcaModel.getSeqtrings ().getAlignmentAndColumnSelection (gc);\r
-if (alAndColsel != null && alAndColsel[0] != null) {\r
-var al =  new jalview.datamodel.Alignment (alAndColsel[0]);\r
-var af =  new jalview.appletgui.AlignFrame (al, this.av.applet, "Original Data for PCA", false);\r
-af.viewport.setHiddenColumns (alAndColsel[1]);\r
-}});\r
-Clazz.defineMethod (c$, "labels_itemStateChanged", \r
-function (itemEvent) {\r
-this.rc.showLabels (this.labels.getState ());\r
-}, "java.awt.event.ItemEvent");\r
-Clazz.defineMethod (c$, "jbInit", \r
-($fz = function () {\r
-this.setLayout (this.borderLayout1);\r
-this.jPanel2.setLayout (this.flowLayout1);\r
-this.jLabel1.setFont ( new java.awt.Font ("Verdana", 0, 12));\r
-this.jLabel1.setText ("x=");\r
-this.jLabel2.setFont ( new java.awt.Font ("Verdana", 0, 12));\r
-this.jLabel2.setText ("y=");\r
-this.jLabel3.setFont ( new java.awt.Font ("Verdana", 0, 12));\r
-this.jLabel3.setText ("z=");\r
-this.jPanel2.setBackground (java.awt.Color.white);\r
-this.zCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));\r
-this.zCombobox.addItemListener (this);\r
-this.yCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));\r
-this.yCombobox.addItemListener (this);\r
-this.xCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));\r
-this.xCombobox.addItemListener (this);\r
-this.resetButton.setFont ( new java.awt.Font ("Verdana", 0, 12));\r
-this.resetButton.setLabel (jalview.util.MessageManager.getString ("action.reset"));\r
-this.resetButton.addActionListener (this);\r
-this.setMenuBar (this.menuBar1);\r
-this.menu1.setLabel (jalview.util.MessageManager.getString ("action.file"));\r
-this.menu2.setLabel (jalview.util.MessageManager.getString ("action.view"));\r
-this.calcSettings.setLabel (jalview.util.MessageManager.getString ("action.change_params"));\r
-this.labels.setLabel (jalview.util.MessageManager.getString ("label.labels"));\r
-this.labels.addItemListener (this);\r
-this.values.setLabel (jalview.util.MessageManager.getString ("label.output_values"));\r
-this.values.addActionListener (this);\r
-this.inputData.setLabel (jalview.util.MessageManager.getString ("label.input_data"));\r
-this.nuclSetting.setLabel (jalview.util.MessageManager.getString ("label.nucleotide_matrix"));\r
-this.nuclSetting.addItemListener (this);\r
-this.protSetting.setLabel (jalview.util.MessageManager.getString ("label.protein_matrix"));\r
-this.protSetting.addItemListener (this);\r
-this.add (this.jPanel2, "South");\r
-this.jPanel2.add (this.jLabel1, null);\r
-this.jPanel2.add (this.xCombobox, null);\r
-this.jPanel2.add (this.jLabel2, null);\r
-this.jPanel2.add (this.yCombobox, null);\r
-this.jPanel2.add (this.jLabel3, null);\r
-this.jPanel2.add (this.zCombobox, null);\r
-this.jPanel2.add (this.resetButton, null);\r
-this.menuBar1.add (this.menu1);\r
-this.menuBar1.add (this.menu2);\r
-this.menuBar1.add (this.calcSettings);\r
-this.menu2.add (this.labels);\r
-this.menu1.add (this.values);\r
-this.menu1.add (this.inputData);\r
-this.calcSettings.add (this.nuclSetting);\r
-this.calcSettings.add (this.protSetting);\r
-this.inputData.addActionListener (this);\r
-}, $fz.isPrivate = true, $fz));\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.appletgui.EmbmenuFrame", "java.awt.event.ActionListener", "$.ItemListener", "awt2swing.Button", "$.CheckboxMenuItem", "$.Choice", "$.Label", "$.Menu", "$.MenuBar", "$.MenuItem", "$.Panel", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.PCAPanel", ["awt2swing.Frame", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.RotatableCanvas", "jalview.bin.JalviewLite", "jalview.datamodel.Alignment", "jalview.util.MessageManager", "jalview.viewmodel.PCAModel", "java.awt.Color", "$.Font", "java.lang.Thread"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.rc = null;
+this.av = null;
+this.pcaModel = null;
+this.top = 0;
+this.jPanel2 = null;
+this.jLabel1 = null;
+this.jLabel2 = null;
+this.jLabel3 = null;
+this.xCombobox = null;
+this.yCombobox = null;
+this.zCombobox = null;
+this.resetButton = null;
+this.flowLayout1 = null;
+this.borderLayout1 = null;
+this.menuBar1 = null;
+this.menu1 = null;
+this.menu2 = null;
+this.calcSettings = null;
+this.labels = null;
+this.protSetting = null;
+this.nuclSetting = null;
+this.values = null;
+this.inputData = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "PCAPanel", jalview.appletgui.EmbmenuFrame, [Runnable, java.awt.event.ActionListener, java.awt.event.ItemListener]);
+Clazz.prepareFields (c$, function () {
+this.jPanel2 =  new awt2swing.Panel ();
+this.jLabel1 =  new awt2swing.Label ();
+this.jLabel2 =  new awt2swing.Label ();
+this.jLabel3 =  new awt2swing.Label ();
+this.xCombobox =  new awt2swing.Choice ();
+this.yCombobox =  new awt2swing.Choice ();
+this.zCombobox =  new awt2swing.Choice ();
+this.resetButton =  new awt2swing.Button ();
+this.flowLayout1 =  new java.awt.FlowLayout ();
+this.borderLayout1 =  new java.awt.BorderLayout ();
+this.menuBar1 =  new awt2swing.MenuBar ();
+this.menu1 =  new awt2swing.Menu ();
+this.menu2 =  new awt2swing.Menu ();
+this.calcSettings =  new awt2swing.Menu ();
+this.labels =  new awt2swing.CheckboxMenuItem ();
+this.protSetting =  new awt2swing.CheckboxMenuItem ();
+this.nuclSetting =  new awt2swing.CheckboxMenuItem ();
+this.values =  new awt2swing.MenuItem ();
+this.inputData =  new awt2swing.MenuItem ();
+});
+Clazz.makeConstructor (c$, 
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.PCAPanel, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+for (var i = 1; i < 8; i++) {
+this.xCombobox.addItem ("dim " + i);
+this.yCombobox.addItem ("dim " + i);
+this.zCombobox.addItem ("dim " + i);
+}
+this.av = av;
+var selected = av.getSelectionGroup () != null && av.getSelectionGroup ().getSize () > 0;
+var seqstrings = av.getAlignmentView (selected);
+var nucleotide = av.getAlignment ().isNucleotide ();
+var seqs;
+if (!selected) {
+seqs = av.getAlignment ().getSequencesArray ();
+} else {
+seqs = av.getSelectionGroup ().getSequencesInOrder (av.getAlignment ());
+}var sq = seqstrings.getSequences ();
+var length = sq[0].getWidth ();
+for (var i = 0; i < seqs.length; i++) {
+if (sq[i].getWidth () != length) {
+System.out.println ("Sequences must be equal length for PCA analysis");
+return;
+}}
+this.pcaModel =  new jalview.viewmodel.PCAModel (seqstrings, seqs, nucleotide);
+this.rc =  new jalview.appletgui.RotatableCanvas (av);
+this.embedMenuIfNeeded (this.rc);
+this.add (this.rc, "Center");
+jalview.bin.JalviewLite.addFrame (this, jalview.util.MessageManager.getString ("label.principal_component_analysis"), 475, 400);
+var worker =  new Thread (this);
+worker.start ();
+}, "jalview.appletgui.AlignViewport");
+Clazz.overrideMethod (c$, "run", 
+function () {
+this.calcSettings.setEnabled (false);
+this.rc.setEnabled (false);
+try {
+this.nuclSetting.setState (this.pcaModel.isNucleotide ());
+this.protSetting.setState (!this.pcaModel.isNucleotide ());
+this.pcaModel.run ();
+this.xCombobox.select (new Integer (0));
+this.yCombobox.select (new Integer (1));
+this.zCombobox.select (new Integer (2));
+this.pcaModel.updateRc (this.rc);
+this.top = this.pcaModel.getTop ();
+} catch (x) {
+if (Clazz.exceptionOf (x, OutOfMemoryError)) {
+System.err.println ("Out of memory when calculating PCA.");
+return;
+} else {
+throw x;
+}
+}
+this.calcSettings.setEnabled (true);
+this.rc.setEnabled (true);
+this.rc.repaint ();
+this.repaint ();
+});
+Clazz.defineMethod (c$, "doDimensionChange", 
+function () {
+if (this.top == 0) {
+return;
+}var dim1 = this.top - this.xCombobox.getSelectedIndex ();
+var dim2 = this.top - this.yCombobox.getSelectedIndex ();
+var dim3 = this.top - this.zCombobox.getSelectedIndex ();
+this.pcaModel.updateRcView (dim1, dim2, dim3);
+this.rc.img = null;
+this.rc.rotmat.setIdentity ();
+this.rc.initAxes ();
+this.rc.paint (this.rc.getGraphics ());
+});
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.inputData) {
+this.showOriginalData ();
+}if (evt.getSource () === this.resetButton) {
+this.xCombobox.select (new Integer (0));
+this.yCombobox.select (new Integer (1));
+this.zCombobox.select (new Integer (2));
+this.doDimensionChange ();
+}if (evt.getSource () === this.values) {
+this.values_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+if (evt.getSource () === this.xCombobox) {
+this.xCombobox_actionPerformed ();
+} else if (evt.getSource () === this.yCombobox) {
+this.yCombobox_actionPerformed ();
+} else if (evt.getSource () === this.zCombobox) {
+this.zCombobox_actionPerformed ();
+} else if (evt.getSource () === this.labels) {
+this.labels_itemStateChanged (evt);
+} else if (evt.getSource () === this.nuclSetting) {
+if (!this.pcaModel.isNucleotide ()) {
+this.pcaModel.setNucleotide (true);
+ new Thread (this).start ();
+}} else if (evt.getSource () === this.protSetting) {
+if (this.pcaModel.isNucleotide ()) {
+this.pcaModel.setNucleotide (false);
+ new Thread (this).start ();
+}}}, "java.awt.event.ItemEvent");
+Clazz.defineMethod (c$, "xCombobox_actionPerformed", 
+function () {
+this.doDimensionChange ();
+});
+Clazz.defineMethod (c$, "yCombobox_actionPerformed", 
+function () {
+this.doDimensionChange ();
+});
+Clazz.defineMethod (c$, "zCombobox_actionPerformed", 
+function () {
+this.doDimensionChange ();
+});
+Clazz.defineMethod (c$, "values_actionPerformed", 
+function () {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (false, null);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.pca_details"), 500, 500);
+cap.setText (this.pcaModel.getDetails ());
+});
+Clazz.defineMethod (c$, "showOriginalData", 
+function () {
+var gc = '-';
+try {
+gc = this.av.getGapCharacter ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+;var alAndColsel = this.pcaModel.getSeqtrings ().getAlignmentAndColumnSelection (gc);
+if (alAndColsel != null && alAndColsel[0] != null) {
+var al =  new jalview.datamodel.Alignment (alAndColsel[0]);
+var af =  new jalview.appletgui.AlignFrame (al, this.av.applet, "Original Data for PCA", false);
+af.viewport.setHiddenColumns (alAndColsel[1]);
+}});
+Clazz.defineMethod (c$, "labels_itemStateChanged", 
+function (itemEvent) {
+this.rc.showLabels (this.labels.getState ());
+}, "java.awt.event.ItemEvent");
+Clazz.defineMethod (c$, "jbInit", 
+($fz = function () {
+this.setLayout (this.borderLayout1);
+this.jPanel2.setLayout (this.flowLayout1);
+this.jLabel1.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jLabel1.setText ("x=");
+this.jLabel2.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jLabel2.setText ("y=");
+this.jLabel3.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jLabel3.setText ("z=");
+this.jPanel2.setBackground (java.awt.Color.white);
+this.zCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.zCombobox.addItemListener (this);
+this.yCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.yCombobox.addItemListener (this);
+this.xCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.xCombobox.addItemListener (this);
+this.resetButton.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.resetButton.setLabel (jalview.util.MessageManager.getString ("action.reset"));
+this.resetButton.addActionListener (this);
+this.setMenuBar (this.menuBar1);
+this.menu1.setLabel (jalview.util.MessageManager.getString ("action.file"));
+this.menu2.setLabel (jalview.util.MessageManager.getString ("action.view"));
+this.calcSettings.setLabel (jalview.util.MessageManager.getString ("action.change_params"));
+this.labels.setLabel (jalview.util.MessageManager.getString ("label.labels"));
+this.labels.addItemListener (this);
+this.values.setLabel (jalview.util.MessageManager.getString ("label.output_values"));
+this.values.addActionListener (this);
+this.inputData.setLabel (jalview.util.MessageManager.getString ("label.input_data"));
+this.nuclSetting.setLabel (jalview.util.MessageManager.getString ("label.nucleotide_matrix"));
+this.nuclSetting.addItemListener (this);
+this.protSetting.setLabel (jalview.util.MessageManager.getString ("label.protein_matrix"));
+this.protSetting.addItemListener (this);
+this.add (this.jPanel2, "South");
+this.jPanel2.add (this.jLabel1, null);
+this.jPanel2.add (this.xCombobox, null);
+this.jPanel2.add (this.jLabel2, null);
+this.jPanel2.add (this.yCombobox, null);
+this.jPanel2.add (this.jLabel3, null);
+this.jPanel2.add (this.zCombobox, null);
+this.jPanel2.add (this.resetButton, null);
+this.menuBar1.add (this.menu1);
+this.menuBar1.add (this.menu2);
+this.menuBar1.add (this.calcSettings);
+this.menu2.add (this.labels);
+this.menu1.add (this.values);
+this.menu1.add (this.inputData);
+this.calcSettings.add (this.nuclSetting);
+this.calcSettings.add (this.protSetting);
+this.inputData.addActionListener (this);
+}, $fz.isPrivate = true, $fz));
+});
index 0086f7e..8d0e0cc 100644 (file)
Binary files a/bin/jalview/appletgui/PaintRefresher.class and b/bin/jalview/appletgui/PaintRefresher.class differ
index 09c8d0a..7bd9686 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (null, "jalview.appletgui.PaintRefresher", ["jalview.appletgui.AlignmentPanel", "java.util.Hashtable", "$.Vector"], function () {\r
-c$ = Clazz.declareType (jalview.appletgui, "PaintRefresher");\r
-c$.Register = Clazz.defineMethod (c$, "Register", \r
-function (comp, seqSetId) {\r
-if (jalview.appletgui.PaintRefresher.components == null) {\r
-jalview.appletgui.PaintRefresher.components =  new java.util.Hashtable ();\r
-}if (jalview.appletgui.PaintRefresher.components.containsKey (seqSetId)) {\r
-var comps = jalview.appletgui.PaintRefresher.components.get (seqSetId);\r
-if (!comps.contains (comp)) {\r
-comps.addElement (comp);\r
-}} else {\r
-var vcoms =  new java.util.Vector ();\r
-vcoms.addElement (comp);\r
-jalview.appletgui.PaintRefresher.components.put (seqSetId, vcoms);\r
-}}, "java.awt.Component,~S");\r
-c$.RemoveComponent = Clazz.defineMethod (c$, "RemoveComponent", \r
-function (comp) {\r
-if (jalview.appletgui.PaintRefresher.components == null) {\r
-return;\r
-}var en = jalview.appletgui.PaintRefresher.components.keys ();\r
-while (en.hasMoreElements ()) {\r
-var id = en.nextElement ().toString ();\r
-var comps = jalview.appletgui.PaintRefresher.components.get (id);\r
-comps.removeElement (comp);\r
-if (comps.size () == 0) {\r
-jalview.appletgui.PaintRefresher.components.remove (id);\r
-}}\r
-}, "java.awt.Component");\r
-c$.Refresh = Clazz.defineMethod (c$, "Refresh", \r
-function (source, id) {\r
-jalview.appletgui.PaintRefresher.Refresh (source, id, false, false);\r
-}, "java.awt.Component,~S");\r
-c$.Refresh = Clazz.defineMethod (c$, "Refresh", \r
-function (source, id, alignmentChanged, validateSequences) {\r
-if (jalview.appletgui.PaintRefresher.components == null) {\r
-return;\r
-}var comp;\r
-var comps = jalview.appletgui.PaintRefresher.components.get (id);\r
-if (comps == null) {\r
-return;\r
-}var e = comps.elements ();\r
-while (e.hasMoreElements ()) {\r
-comp = e.nextElement ();\r
-if (comp === source) {\r
-continue;\r
-}if (!comp.isValid ()) {\r
-comps.removeElement (comp);\r
-} else if (validateSequences && Clazz.instanceOf (comp, jalview.appletgui.AlignmentPanel) && Clazz.instanceOf (source, jalview.appletgui.AlignmentPanel)) {\r
-jalview.appletgui.PaintRefresher.validateSequences ((source).av.getAlignment (), (comp).av.getAlignment ());\r
-}if (Clazz.instanceOf (comp, jalview.appletgui.AlignmentPanel) && alignmentChanged) {\r
-(comp).alignmentChanged ();\r
-}comp.repaint ();\r
-}\r
-}, "java.awt.Component,~S,~B,~B");\r
-c$.validateSequences = Clazz.defineMethod (c$, "validateSequences", \r
-function (source, comp) {\r
-var a1;\r
-if (source.getHiddenSequences ().getSize () > 0) {\r
-a1 = source.getHiddenSequences ().getFullAlignment ().getSequencesArray ();\r
-} else {\r
-a1 = source.getSequencesArray ();\r
-}var a2;\r
-if (comp.getHiddenSequences ().getSize () > 0) {\r
-a2 = comp.getHiddenSequences ().getFullAlignment ().getSequencesArray ();\r
-} else {\r
-a2 = comp.getSequencesArray ();\r
-}var i;\r
-var iSize = a1.length;\r
-var j;\r
-var jSize = a2.length;\r
-if (iSize == jSize) {\r
-return;\r
-}var exists = false;\r
-for (i = 0; i < iSize; i++) {\r
-exists = false;\r
-for (j = 0; j < jSize; j++) {\r
-if (a2[j] === a1[i]) {\r
-exists = true;\r
-break;\r
-}}\r
-if (!exists) {\r
-if (i < comp.getHeight ()) {\r
-var alsq;\r
-{\r
-alsq.add (i, a1[i]);\r
-}} else {\r
-comp.addSequence (a1[i]);\r
-}if (comp.getHiddenSequences ().getSize () > 0) {\r
-a2 = comp.getHiddenSequences ().getFullAlignment ().getSequencesArray ();\r
-} else {\r
-a2 = comp.getSequencesArray ();\r
-}jSize = a2.length;\r
-}}\r
-iSize = a1.length;\r
-jSize = a2.length;\r
-for (j = 0; j < jSize; j++) {\r
-exists = false;\r
-for (i = 0; i < iSize; i++) {\r
-if (a2[j] === a1[i]) {\r
-exists = true;\r
-break;\r
-}}\r
-if (!exists) {\r
-comp.deleteSequence (a2[j]);\r
-}}\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");\r
-c$.getAssociatedPanels = Clazz.defineMethod (c$, "getAssociatedPanels", \r
-function (id) {\r
-var comps = jalview.appletgui.PaintRefresher.components.get (id);\r
-var tmp =  new java.util.Vector ();\r
-var i;\r
-var iSize = comps.size ();\r
-for (i = 0; i < iSize; i++) {\r
-if (Clazz.instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {\r
-tmp.addElement (comps.elementAt (i));\r
-}}\r
-var result =  new Array (tmp.size ());\r
-for (var ix = 0; ix < result.length; ix++) {\r
-result[ix] = tmp.elementAt (ix);\r
-}\r
-return result;\r
-}, "~S");\r
-Clazz.defineStatics (c$,\r
-"components", null);\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (null, "jalview.appletgui.PaintRefresher", ["jalview.appletgui.AlignmentPanel", "java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz.declareType (jalview.appletgui, "PaintRefresher");
+c$.Register = Clazz.defineMethod (c$, "Register", 
+function (comp, seqSetId) {
+if (jalview.appletgui.PaintRefresher.components == null) {
+jalview.appletgui.PaintRefresher.components =  new java.util.Hashtable ();
+}if (jalview.appletgui.PaintRefresher.components.containsKey (seqSetId)) {
+var comps = jalview.appletgui.PaintRefresher.components.get (seqSetId);
+if (!comps.contains (comp)) {
+comps.addElement (comp);
+}} else {
+var vcoms =  new java.util.Vector ();
+vcoms.addElement (comp);
+jalview.appletgui.PaintRefresher.components.put (seqSetId, vcoms);
+}}, "java.awt.Component,~S");
+c$.RemoveComponent = Clazz.defineMethod (c$, "RemoveComponent", 
+function (comp) {
+if (jalview.appletgui.PaintRefresher.components == null) {
+return;
+}var en = jalview.appletgui.PaintRefresher.components.keys ();
+while (en.hasMoreElements ()) {
+var id = en.nextElement ().toString ();
+var comps = jalview.appletgui.PaintRefresher.components.get (id);
+comps.removeElement (comp);
+if (comps.size () == 0) {
+jalview.appletgui.PaintRefresher.components.remove (id);
+}}
+}, "java.awt.Component");
+c$.Refresh = Clazz.defineMethod (c$, "Refresh", 
+function (source, id) {
+jalview.appletgui.PaintRefresher.Refresh (source, id, false, false);
+}, "java.awt.Component,~S");
+c$.Refresh = Clazz.defineMethod (c$, "Refresh", 
+function (source, id, alignmentChanged, validateSequences) {
+if (jalview.appletgui.PaintRefresher.components == null) {
+return;
+}var comp;
+var comps = jalview.appletgui.PaintRefresher.components.get (id);
+if (comps == null) {
+return;
+}var e = comps.elements ();
+while (e.hasMoreElements ()) {
+comp = e.nextElement ();
+if (comp === source) {
+continue;
+}if (!comp.isValid ()) {
+comps.removeElement (comp);
+} else if (validateSequences && Clazz.instanceOf (comp, jalview.appletgui.AlignmentPanel) && Clazz.instanceOf (source, jalview.appletgui.AlignmentPanel)) {
+jalview.appletgui.PaintRefresher.validateSequences ((source).av.getAlignment (), (comp).av.getAlignment ());
+}if (Clazz.instanceOf (comp, jalview.appletgui.AlignmentPanel) && alignmentChanged) {
+(comp).alignmentChanged ();
+}comp.repaint ();
+}
+}, "java.awt.Component,~S,~B,~B");
+c$.validateSequences = Clazz.defineMethod (c$, "validateSequences", 
+function (source, comp) {
+var a1;
+if (source.getHiddenSequences ().getSize () > 0) {
+a1 = source.getHiddenSequences ().getFullAlignment ().getSequencesArray ();
+} else {
+a1 = source.getSequencesArray ();
+}var a2;
+if (comp.getHiddenSequences ().getSize () > 0) {
+a2 = comp.getHiddenSequences ().getFullAlignment ().getSequencesArray ();
+} else {
+a2 = comp.getSequencesArray ();
+}var i;
+var iSize = a1.length;
+var j;
+var jSize = a2.length;
+if (iSize == jSize) {
+return;
+}var exists = false;
+for (i = 0; i < iSize; i++) {
+exists = false;
+for (j = 0; j < jSize; j++) {
+if (a2[j] === a1[i]) {
+exists = true;
+break;
+}}
+if (!exists) {
+if (i < comp.getHeight ()) {
+var alsq;
+{
+alsq.add (i, a1[i]);
+}} else {
+comp.addSequence (a1[i]);
+}if (comp.getHiddenSequences ().getSize () > 0) {
+a2 = comp.getHiddenSequences ().getFullAlignment ().getSequencesArray ();
+} else {
+a2 = comp.getSequencesArray ();
+}jSize = a2.length;
+}}
+iSize = a1.length;
+jSize = a2.length;
+for (j = 0; j < jSize; j++) {
+exists = false;
+for (i = 0; i < iSize; i++) {
+if (a2[j] === a1[i]) {
+exists = true;
+break;
+}}
+if (!exists) {
+comp.deleteSequence (a2[j]);
+}}
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");
+c$.getAssociatedPanels = Clazz.defineMethod (c$, "getAssociatedPanels", 
+function (id) {
+var comps = jalview.appletgui.PaintRefresher.components.get (id);
+var tmp =  new java.util.Vector ();
+var i;
+var iSize = comps.size ();
+for (i = 0; i < iSize; i++) {
+if (Clazz.instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {
+tmp.addElement (comps.elementAt (i));
+}}
+var result =  new Array (tmp.size ());
+for (var ix = 0; ix < result.length; ix++) {
+result[ix] = tmp.elementAt (ix);
+}
+return result;
+}, "~S");
+Clazz.defineStatics (c$,
+"components", null);
+});
index 22c33f9..202bf5c 100644 (file)
Binary files a/bin/jalview/appletgui/PairwiseAlignPanel.class and b/bin/jalview/appletgui/PairwiseAlignPanel.class differ
index ddb1948..e91c56d 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "awt2swing.Button", "$.ScrollPane", "$.TextArea", "java.awt.BorderLayout", "java.util.Vector"], "jalview.appletgui.PairwiseAlignPanel", ["jalview.analysis.AlignSeq", "jalview.appletgui.AlignFrame", "jalview.datamodel.Alignment", "jalview.util.Format", "$.MessageManager", "java.awt.Font"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.sequences = null;\r
-this.ap = null;\r
-this.scrollPane = null;\r
-this.textarea = null;\r
-this.viewInEditorButton = null;\r
-this.jPanel1 = null;\r
-this.borderLayout1 = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "PairwiseAlignPanel", awt2swing.Panel, java.awt.event.ActionListener);\r
-Clazz.prepareFields (c$, function () {\r
-this.sequences =  new java.util.Vector ();\r
-this.scrollPane =  new awt2swing.ScrollPane ();\r
-this.textarea =  new awt2swing.TextArea ();\r
-this.viewInEditorButton =  new awt2swing.Button ();\r
-this.jPanel1 =  new awt2swing.Panel ();\r
-this.borderLayout1 =  new java.awt.BorderLayout ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.PairwiseAlignPanel, []);\r
-try {\r
-this.jbInit ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.ap = ap;\r
-this.sequences =  new java.util.Vector ();\r
-var seqs;\r
-var seqStrings = ap.av.getViewAsString (true);\r
-if (ap.av.getSelectionGroup () == null) {\r
-seqs = ap.av.getAlignment ().getSequencesArray ();\r
-} else {\r
-seqs = ap.av.getSelectionGroup ().getSequencesInOrder (ap.av.getAlignment ());\r
-}var scores =  Clazz.newFloatArray (seqs.length, seqs.length, 0);\r
-var totscore = 0;\r
-var count = ap.av.getSelectionGroup ().getSize ();\r
-var type = (ap.av.getAlignment ().isNucleotide ()) ? "dna" : "pep";\r
-var seq;\r
-for (var i = 1; i < count; i++) {\r
-for (var j = 0; j < i; j++) {\r
-var as =  new jalview.analysis.AlignSeq (seqs[i], seqStrings[i], seqs[j], seqStrings[j], type);\r
-if (as.s1str.length == 0 || as.s2str.length == 0) {\r
-continue;\r
-}as.calcScoreMatrix ();\r
-as.traceAlignment ();\r
-as.printAlignment (System.out);\r
-scores[i][j] = as.getMaxScore () / as.getASeq1 ().length;\r
-totscore = totscore + scores[i][j];\r
-this.textarea.append (as.getOutput ());\r
-this.sequences.add (as.getAlignedSeq1 ());\r
-this.sequences.add (as.getAlignedSeq1 ());\r
-}\r
-}\r
-if (count > 2) {\r
-System.out.println ("Pairwise alignment scaled similarity score matrix\n");\r
-for (var i = 0; i < count; i++) {\r
-jalview.util.Format.print (System.out, "%s \n", ("" + i) + " " + seqs[i].getName ());\r
-}\r
-System.out.println ("\n");\r
-for (var i = 0; i < count; i++) {\r
-for (var j = 0; j < i; j++) {\r
-jalview.util.Format.printDouble (System.out, "%7.3f", scores[i][j] / totscore);\r
-}\r
-}\r
-System.out.println ("\n");\r
-}}, "jalview.appletgui.AlignmentPanel");\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-if (evt.getSource () === this.viewInEditorButton) {\r
-this.viewInEditorButton_actionPerformed ();\r
-}}, "java.awt.event.ActionEvent");\r
-Clazz.defineMethod (c$, "viewInEditorButton_actionPerformed", \r
-function () {\r
-var seq =  new Array (this.sequences.size ());\r
-for (var i = 0; i < this.sequences.size (); i++) {\r
-seq[i] = this.sequences.elementAt (i);\r
-}\r
- new jalview.appletgui.AlignFrame ( new jalview.datamodel.Alignment (seq), this.ap.av.applet, "Pairwise Aligned Sequences", false);\r
-});\r
-Clazz.defineMethod (c$, "jbInit", \r
-($fz = function () {\r
-this.setLayout (this.borderLayout1);\r
-this.textarea.setFont ( new java.awt.Font ("Monospaced", 0, 12));\r
-this.textarea.setText ("");\r
-this.viewInEditorButton.setFont ( new java.awt.Font ("Verdana", 0, 12));\r
-this.viewInEditorButton.setLabel (jalview.util.MessageManager.getString ("label.view_alignment_editor"));\r
-this.viewInEditorButton.addActionListener (this);\r
-this.add (this.scrollPane, "Center");\r
-this.scrollPane.add (this.textarea);\r
-this.add (this.jPanel1, "South");\r
-this.jPanel1.add (this.viewInEditorButton, null);\r
-}, $fz.isPrivate = true, $fz));\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "awt2swing.Button", "$.ScrollPane", "$.TextArea", "java.awt.BorderLayout", "java.util.Vector"], "jalview.appletgui.PairwiseAlignPanel", ["jalview.analysis.AlignSeq", "jalview.appletgui.AlignFrame", "jalview.datamodel.Alignment", "jalview.util.Format", "$.MessageManager", "java.awt.Font"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.sequences = null;
+this.ap = null;
+this.scrollPane = null;
+this.textarea = null;
+this.viewInEditorButton = null;
+this.jPanel1 = null;
+this.borderLayout1 = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "PairwiseAlignPanel", awt2swing.Panel, java.awt.event.ActionListener);
+Clazz.prepareFields (c$, function () {
+this.sequences =  new java.util.Vector ();
+this.scrollPane =  new awt2swing.ScrollPane ();
+this.textarea =  new awt2swing.TextArea ();
+this.viewInEditorButton =  new awt2swing.Button ();
+this.jPanel1 =  new awt2swing.Panel ();
+this.borderLayout1 =  new java.awt.BorderLayout ();
+});
+Clazz.makeConstructor (c$, 
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.PairwiseAlignPanel, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.ap = ap;
+this.sequences =  new java.util.Vector ();
+var seqs;
+var seqStrings = ap.av.getViewAsString (true);
+if (ap.av.getSelectionGroup () == null) {
+seqs = ap.av.getAlignment ().getSequencesArray ();
+} else {
+seqs = ap.av.getSelectionGroup ().getSequencesInOrder (ap.av.getAlignment ());
+}var scores =  Clazz.newFloatArray (seqs.length, seqs.length, 0);
+var totscore = 0;
+var count = ap.av.getSelectionGroup ().getSize ();
+var type = (ap.av.getAlignment ().isNucleotide ()) ? "dna" : "pep";
+var seq;
+for (var i = 1; i < count; i++) {
+for (var j = 0; j < i; j++) {
+var as =  new jalview.analysis.AlignSeq (seqs[i], seqStrings[i], seqs[j], seqStrings[j], type);
+if (as.s1str.length == 0 || as.s2str.length == 0) {
+continue;
+}as.calcScoreMatrix ();
+as.traceAlignment ();
+as.printAlignment (System.out);
+scores[i][j] = as.getMaxScore () / as.getASeq1 ().length;
+totscore = totscore + scores[i][j];
+this.textarea.append (as.getOutput ());
+this.sequences.add (as.getAlignedSeq1 ());
+this.sequences.add (as.getAlignedSeq1 ());
+}
+}
+if (count > 2) {
+System.out.println ("Pairwise alignment scaled similarity score matrix\n");
+for (var i = 0; i < count; i++) {
+jalview.util.Format.print (System.out, "%s \n", ("" + i) + " " + seqs[i].getName ());
+}
+System.out.println ("\n");
+for (var i = 0; i < count; i++) {
+for (var j = 0; j < i; j++) {
+jalview.util.Format.printDouble (System.out, "%7.3f", scores[i][j] / totscore);
+}
+}
+System.out.println ("\n");
+}}, "jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.viewInEditorButton) {
+this.viewInEditorButton_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz.defineMethod (c$, "viewInEditorButton_actionPerformed", 
+function () {
+var seq =  new Array (this.sequences.size ());
+for (var i = 0; i < this.sequences.size (); i++) {
+seq[i] = this.sequences.elementAt (i);
+}
+ new jalview.appletgui.AlignFrame ( new jalview.datamodel.Alignment (seq), this.ap.av.applet, "Pairwise Aligned Sequences", false);
+});
+Clazz.defineMethod (c$, "jbInit", 
+($fz = function () {
+this.setLayout (this.borderLayout1);
+this.textarea.setFont ( new java.awt.Font ("Monospaced", 0, 12));
+this.textarea.setText ("");
+this.viewInEditorButton.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.viewInEditorButton.setLabel (jalview.util.MessageManager.getString ("label.view_alignment_editor"));
+this.viewInEditorButton.addActionListener (this);
+this.add (this.scrollPane, "Center");
+this.scrollPane.add (this.textarea);
+this.add (this.jPanel1, "South");
+this.jPanel1.add (this.viewInEditorButton, null);
+}, $fz.isPrivate = true, $fz));
+});
index f6b850d..647ac1b 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["jalview.appletgui.SliderPanel", "java.awt.event.WindowListener", "java.util.Stack"], "jalview.appletgui.RedundancyPanel", ["awt2swing.Frame", "jalview.analysis.AlignSeq", "jalview.appletgui.PaintRefresher", "jalview.bin.JalviewLite", "jalview.commands.EditCommand", "jalview.util.MessageManager", "java.awt.event.AdjustmentListener", "java.lang.Thread", "java.util.ArrayList", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.historyList = null;\r
-this.redundancy = null;\r
-this.originalSequences = null;\r
-this.frame = null;\r
-this.redundantSeqs = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "RedundancyPanel", jalview.appletgui.SliderPanel, [Runnable, java.awt.event.WindowListener]);\r
-Clazz.prepareFields (c$, function () {\r
-this.historyList =  new java.util.Stack ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.RedundancyPanel, [ap, 0, false, null]);\r
-this.redundantSeqs =  new java.util.Vector ();\r
-this.ap = ap;\r
-this.undoButton.setVisible (true);\r
-this.applyButton.setVisible (true);\r
-this.allGroupsCheck.setVisible (false);\r
-this.label.setText (jalview.util.MessageManager.getString ("label.enter_redundancy_threshold"));\r
-this.valueField.setText ("100");\r
-this.slider.setVisibleAmount (1);\r
-this.slider.setMinimum (0);\r
-this.slider.setMaximum (100 + this.slider.getVisibleAmount ());\r
-this.slider.setValue (100);\r
-this.slider.addAdjustmentListener (((Clazz.isClassDefined ("jalview.appletgui.RedundancyPanel$1") ? 0 : jalview.appletgui.RedundancyPanel.$RedundancyPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.RedundancyPanel$1, this, null)));\r
-this.frame =  new awt2swing.Frame ();\r
-this.frame.add (this);\r
-jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.redundancy_threshold_selection"), 400, 100);\r
-this.frame.addWindowListener (this);\r
-var worker =  new Thread (this);\r
-worker.start ();\r
-}, "jalview.appletgui.AlignmentPanel");\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-this.label.setText (jalview.util.MessageManager.getString ("label.calculating"));\r
-this.slider.setVisible (false);\r
-this.applyButton.setEnabled (false);\r
-this.valueField.setVisible (false);\r
-this.validate ();\r
-var omitHidden = null;\r
-var sg = this.ap.av.getSelectionGroup ();\r
-var height;\r
-var start;\r
-var end;\r
-if ((sg != null) && (sg.getSize () >= 1)) {\r
-this.originalSequences = sg.getSequencesInOrder (this.ap.av.getAlignment ());\r
-start = sg.getStartRes ();\r
-end = sg.getEndRes ();\r
-} else {\r
-this.originalSequences = this.ap.av.getAlignment ().getSequencesArray ();\r
-start = 0;\r
-end = this.ap.av.getAlignment ().getWidth ();\r
-}height = this.originalSequences.length;\r
-this.redundancy = jalview.analysis.AlignSeq.computeRedundancyMatrix (this.originalSequences, omitHidden, start, end, false);\r
-this.label.setText (jalview.util.MessageManager.getString ("label.enter_redundancy_threshold"));\r
-this.slider.setVisible (true);\r
-this.applyButton.setEnabled (true);\r
-this.valueField.setVisible (true);\r
-this.validate ();\r
-this.sliderValueChanged ();\r
-});\r
-Clazz.defineMethod (c$, "sliderValueChanged", \r
-function () {\r
-if (this.redundancy == null) {\r
-return;\r
-}var value = this.slider.getValue ();\r
-var redundantSequences =  new java.util.ArrayList ();\r
-for (var i = 0; i < this.redundancy.length; i++) {\r
-if (value <= this.redundancy[i]) {\r
-redundantSequences.add (this.originalSequences[i]);\r
-}}\r
-this.ap.idPanel.idCanvas.setHighlighted (redundantSequences);\r
-jalview.appletgui.PaintRefresher.Refresh (this, this.ap.av.getSequenceSetId (), true, true);\r
-});\r
-Clazz.overrideMethod (c$, "applyButton_actionPerformed", \r
-function () {\r
-var del =  new java.util.Vector ();\r
-this.undoButton.setEnabled (true);\r
-var value = this.slider.getValue ();\r
-var sg = this.ap.av.getSelectionGroup ();\r
-for (var i = 0; i < this.redundancy.length; i++) {\r
-if (value <= this.redundancy[i]) {\r
-del.addElement (this.originalSequences[i]);\r
-}}\r
-if (del.size () > 0) {\r
-var deleted =  new Array (del.size ());\r
-var width = 0;\r
-for (var i = 0; i < del.size (); i++) {\r
-deleted[i] = del.elementAt (i);\r
-if (deleted[i].getLength () > width) {\r
-width = deleted[i].getLength ();\r
-}}\r
-var cut =  new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("action.remove_redundancy"), jalview.commands.EditCommand.Action.CUT, deleted, 0, width, this.ap.av.getAlignment ());\r
-var alignment = this.ap.av.getAlignment ();\r
-for (var i = 0; i < del.size (); i++) {\r
-alignment.deleteSequence (deleted[i]);\r
-if (sg != null) {\r
-sg.deleteSequence (deleted[i], false);\r
-}}\r
-this.historyList.push (cut);\r
-this.ap.alignFrame.addHistoryItem (cut);\r
-jalview.appletgui.PaintRefresher.Refresh (this, this.ap.av.getSequenceSetId (), true, true);\r
-this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());\r
-}});\r
-Clazz.overrideMethod (c$, "undoButton_actionPerformed", \r
-function () {\r
-var command = this.historyList.pop ();\r
-command.undoCommand (null);\r
-if (this.ap.av.getHistoryList ().contains (command)) {\r
-this.ap.av.getHistoryList ().remove (command);\r
-this.ap.alignFrame.updateEditMenuBar ();\r
-this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());\r
-}this.ap.paintAlignment (true);\r
-if (this.historyList.size () == 0) {\r
-this.undoButton.setEnabled (false);\r
-}});\r
-Clazz.defineMethod (c$, "valueField_actionPerformed", \r
-function (e) {\r
-try {\r
-var i = Integer.parseInt (this.valueField.getText ());\r
-this.slider.setValue (i);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-this.valueField.setText (this.slider.getValue () + "");\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}, "java.awt.event.ActionEvent");\r
-Clazz.overrideMethod (c$, "windowOpened", \r
-function (evt) {\r
-}, "java.awt.event.WindowEvent");\r
-Clazz.overrideMethod (c$, "windowClosing", \r
-function (evt) {\r
-this.ap.idPanel.idCanvas.setHighlighted (null);\r
-}, "java.awt.event.WindowEvent");\r
-Clazz.overrideMethod (c$, "windowClosed", \r
-function (evt) {\r
-}, "java.awt.event.WindowEvent");\r
-Clazz.overrideMethod (c$, "windowActivated", \r
-function (evt) {\r
-}, "java.awt.event.WindowEvent");\r
-Clazz.overrideMethod (c$, "windowDeactivated", \r
-function (evt) {\r
-}, "java.awt.event.WindowEvent");\r
-Clazz.overrideMethod (c$, "windowIconified", \r
-function (evt) {\r
-}, "java.awt.event.WindowEvent");\r
-Clazz.overrideMethod (c$, "windowDeiconified", \r
-function (evt) {\r
-}, "java.awt.event.WindowEvent");\r
-c$.$RedundancyPanel$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "RedundancyPanel$1", null, java.awt.event.AdjustmentListener);\r
-Clazz.overrideMethod (c$, "adjustmentValueChanged", \r
-function (evt) {\r
-this.b$["jalview.appletgui.RedundancyPanel"].valueField.setText (this.b$["jalview.appletgui.RedundancyPanel"].slider.getValue () + "");\r
-this.b$["jalview.appletgui.RedundancyPanel"].sliderValueChanged ();\r
-}, "java.awt.event.AdjustmentEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.appletgui.SliderPanel", "java.awt.event.WindowListener", "java.util.Stack"], "jalview.appletgui.RedundancyPanel", ["awt2swing.Frame", "jalview.analysis.AlignSeq", "jalview.appletgui.PaintRefresher", "jalview.bin.JalviewLite", "jalview.commands.EditCommand", "jalview.util.MessageManager", "java.awt.event.AdjustmentListener", "java.lang.Thread", "java.util.ArrayList", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.historyList = null;
+this.redundancy = null;
+this.originalSequences = null;
+this.frame = null;
+this.redundantSeqs = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "RedundancyPanel", jalview.appletgui.SliderPanel, [Runnable, java.awt.event.WindowListener]);
+Clazz.prepareFields (c$, function () {
+this.historyList =  new java.util.Stack ();
+});
+Clazz.makeConstructor (c$, 
+function (ap) {
+Clazz.superConstructor (this, jalview.appletgui.RedundancyPanel, [ap, 0, false, null]);
+this.redundantSeqs =  new java.util.Vector ();
+this.ap = ap;
+this.undoButton.setVisible (true);
+this.applyButton.setVisible (true);
+this.allGroupsCheck.setVisible (false);
+this.label.setText (jalview.util.MessageManager.getString ("label.enter_redundancy_threshold"));
+this.valueField.setText ("100");
+this.slider.setVisibleAmount (1);
+this.slider.setMinimum (0);
+this.slider.setMaximum (100 + this.slider.getVisibleAmount ());
+this.slider.setValue (100);
+this.slider.addAdjustmentListener (((Clazz.isClassDefined ("jalview.appletgui.RedundancyPanel$1") ? 0 : jalview.appletgui.RedundancyPanel.$RedundancyPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.RedundancyPanel$1, this, null)));
+this.frame =  new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.redundancy_threshold_selection"), 400, 100);
+this.frame.addWindowListener (this);
+var worker =  new Thread (this);
+worker.start ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "run", 
+function () {
+this.label.setText (jalview.util.MessageManager.getString ("label.calculating"));
+this.slider.setVisible (false);
+this.applyButton.setEnabled (false);
+this.valueField.setVisible (false);
+this.validate ();
+var omitHidden = null;
+var sg = this.ap.av.getSelectionGroup ();
+var height;
+var start;
+var end;
+if ((sg != null) && (sg.getSize () >= 1)) {
+this.originalSequences = sg.getSequencesInOrder (this.ap.av.getAlignment ());
+start = sg.getStartRes ();
+end = sg.getEndRes ();
+} else {
+this.originalSequences = this.ap.av.getAlignment ().getSequencesArray ();
+start = 0;
+end = this.ap.av.getAlignment ().getWidth ();
+}height = this.originalSequences.length;
+this.redundancy = jalview.analysis.AlignSeq.computeRedundancyMatrix (this.originalSequences, omitHidden, start, end, false);
+this.label.setText (jalview.util.MessageManager.getString ("label.enter_redundancy_threshold"));
+this.slider.setVisible (true);
+this.applyButton.setEnabled (true);
+this.valueField.setVisible (true);
+this.validate ();
+this.sliderValueChanged ();
+});
+Clazz.defineMethod (c$, "sliderValueChanged", 
+function () {
+if (this.redundancy == null) {
+return;
+}var value = this.slider.getValue ();
+var redundantSequences =  new java.util.ArrayList ();
+for (var i = 0; i < this.redundancy.length; i++) {
+if (value <= this.redundancy[i]) {
+redundantSequences.add (this.originalSequences[i]);
+}}
+this.ap.idPanel.idCanvas.setHighlighted (redundantSequences);
+jalview.appletgui.PaintRefresher.Refresh (this, this.ap.av.getSequenceSetId (), true, true);
+});
+Clazz.overrideMethod (c$, "applyButton_actionPerformed", 
+function () {
+var del =  new java.util.Vector ();
+this.undoButton.setEnabled (true);
+var value = this.slider.getValue ();
+var sg = this.ap.av.getSelectionGroup ();
+for (var i = 0; i < this.redundancy.length; i++) {
+if (value <= this.redundancy[i]) {
+del.addElement (this.originalSequences[i]);
+}}
+if (del.size () > 0) {
+var deleted =  new Array (del.size ());
+var width = 0;
+for (var i = 0; i < del.size (); i++) {
+deleted[i] = del.elementAt (i);
+if (deleted[i].getLength () > width) {
+width = deleted[i].getLength ();
+}}
+var cut =  new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("action.remove_redundancy"), jalview.commands.EditCommand.Action.CUT, deleted, 0, width, this.ap.av.getAlignment ());
+var alignment = this.ap.av.getAlignment ();
+for (var i = 0; i < del.size (); i++) {
+alignment.deleteSequence (deleted[i]);
+if (sg != null) {
+sg.deleteSequence (deleted[i], false);
+}}
+this.historyList.push (cut);
+this.ap.alignFrame.addHistoryItem (cut);
+jalview.appletgui.PaintRefresher.Refresh (this, this.ap.av.getSequenceSetId (), true, true);
+this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
+}});
+Clazz.overrideMethod (c$, "undoButton_actionPerformed", 
+function () {
+var command = this.historyList.pop ();
+command.undoCommand (null);
+if (this.ap.av.getHistoryList ().contains (command)) {
+this.ap.av.getHistoryList ().remove (command);
+this.ap.alignFrame.updateEditMenuBar ();
+this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
+}this.ap.paintAlignment (true);
+if (this.historyList.size () == 0) {
+this.undoButton.setEnabled (false);
+}});
+Clazz.defineMethod (c$, "valueField_actionPerformed", 
+function (e) {
+try {
+var i = Integer.parseInt (this.valueField.getText ());
+this.slider.setValue (i);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+this.valueField.setText (this.slider.getValue () + "");
+} else {
+throw ex;
+}
+}
+}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "windowOpened", 
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz.overrideMethod (c$, "windowClosing", 
+function (evt) {
+this.ap.idPanel.idCanvas.setHighlighted (null);
+}, "java.awt.event.WindowEvent");
+Clazz.overrideMethod (c$, "windowClosed", 
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz.overrideMethod (c$, "windowActivated", 
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz.overrideMethod (c$, "windowDeactivated", 
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz.overrideMethod (c$, "windowIconified", 
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz.overrideMethod (c$, "windowDeiconified", 
+function (evt) {
+}, "java.awt.event.WindowEvent");
+c$.$RedundancyPanel$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "RedundancyPanel$1", null, java.awt.event.AdjustmentListener);
+Clazz.overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+this.b$["jalview.appletgui.RedundancyPanel"].valueField.setText (this.b$["jalview.appletgui.RedundancyPanel"].slider.getValue () + "");
+this.b$["jalview.appletgui.RedundancyPanel"].sliderValueChanged ();
+}, "java.awt.event.AdjustmentEvent");
+c$ = Clazz.p0p ();
+};
+});
index 0bb0b4a..5e61dea 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "jalview.api.RotatableCanvasI", "java.awt.event.KeyListener", "$.MouseListener", "$.MouseMotionListener", "jalview.math.RotatableMatrix"], "jalview.appletgui.RotatableCanvas", ["jalview.appletgui.PaintRefresher", "jalview.datamodel.SequenceGroup", "jalview.util.Format", "$.MessageManager", "java.awt.Color", "$.Dimension", "$.Font"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.idmat = null;\r
-this.objmat = null;\r
-this.rotmat = null;\r
-this.tooltip = null;\r
-this.toolx = 0;\r
-this.tooly = 0;\r
-this.$drawAxes = true;\r
-this.omx = 0;\r
-this.mx = 0;\r
-this.omy = 0;\r
-this.my = 0;\r
-this.img = null;\r
-this.ig = null;\r
-this.prefsize = null;\r
-this.centre = null;\r
-this.$width = null;\r
-this.max = null;\r
-this.min = null;\r
-this.maxwidth = 0;\r
-this.scale = 0;\r
-this.npoint = 0;\r
-this.points = null;\r
-this.orig = null;\r
-this.axes = null;\r
-this.startx = 0;\r
-this.starty = 0;\r
-this.lastx = 0;\r
-this.lasty = 0;\r
-this.rectx1 = 0;\r
-this.recty1 = 0;\r
-this.rectx2 = 0;\r
-this.recty2 = 0;\r
-this.scalefactor = 1;\r
-this.av = null;\r
-this.$showLabels = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "RotatableCanvas", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.KeyListener, jalview.api.RotatableCanvasI]);\r
-Clazz.prepareFields (c$, function () {\r
-this.idmat =  new jalview.math.RotatableMatrix (3, 3);\r
-this.objmat =  new jalview.math.RotatableMatrix (3, 3);\r
-this.rotmat =  new jalview.math.RotatableMatrix (3, 3);\r
-this.centre =  Clazz.newFloatArray (3, 0);\r
-this.$width =  Clazz.newFloatArray (3, 0);\r
-this.max =  Clazz.newFloatArray (3, 0);\r
-this.min =  Clazz.newFloatArray (3, 0);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (av) {\r
-Clazz.superConstructor (this, jalview.appletgui.RotatableCanvas, []);\r
-this.av = av;\r
-}, "jalview.viewmodel.AlignmentViewport");\r
-Clazz.defineMethod (c$, "showLabels", \r
-function (b) {\r
-this.$showLabels = b;\r
-this.repaint ();\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setPoints", \r
-function (points, npoint) {\r
-this.points = points;\r
-this.npoint = npoint;\r
-jalview.appletgui.PaintRefresher.Register (this, this.av.getSequenceSetId ());\r
-this.prefsize = this.getPreferredSize ();\r
-this.orig =  Clazz.newFloatArray (npoint, 3, 0);\r
-for (var i = 0; i < npoint; i++) {\r
-var sp = points.elementAt (i);\r
-for (var j = 0; j < 3; j++) {\r
-this.orig[i][j] = sp.coord[j];\r
-}\r
-}\r
-for (var i = 0; i < 3; i++) {\r
-for (var j = 0; j < 3; j++) {\r
-if (i != j) {\r
-this.idmat.addElement (i, j, 0);\r
-this.objmat.addElement (i, j, 0);\r
-this.rotmat.addElement (i, j, 0);\r
-} else {\r
-this.idmat.addElement (i, j, 0);\r
-this.objmat.addElement (i, j, 0);\r
-this.rotmat.addElement (i, j, 0);\r
-}}\r
-}\r
-this.axes =  Clazz.newFloatArray (3, 3, 0);\r
-this.initAxes ();\r
-this.findCentre ();\r
-this.findWidth ();\r
-this.scale = this.findScale ();\r
-this.addMouseListener (this);\r
-this.addKeyListener (this);\r
-this.addMouseMotionListener (this);\r
-}, "java.util.Vector,~N");\r
-Clazz.defineMethod (c$, "initAxes", \r
-function () {\r
-for (var i = 0; i < 3; i++) {\r
-for (var j = 0; j < 3; j++) {\r
-if (i != j) {\r
-this.axes[i][j] = 0;\r
-} else {\r
-this.axes[i][j] = 1;\r
-}}\r
-}\r
-});\r
-Clazz.defineMethod (c$, "findWidth", \r
-function () {\r
-this.max =  Clazz.newFloatArray (3, 0);\r
-this.min =  Clazz.newFloatArray (3, 0);\r
-this.max[0] = -1.0E30;\r
-this.max[1] = -1.0E30;\r
-this.max[2] = -1.0E30;\r
-this.min[0] = 1e30;\r
-this.min[1] = 1e30;\r
-this.min[2] = 1e30;\r
-for (var i = 0; i < 3; i++) {\r
-for (var j = 0; j < this.npoint; j++) {\r
-var sp = this.points.elementAt (j);\r
-if (sp.coord[i] >= this.max[i]) {\r
-this.max[i] = sp.coord[i];\r
-}if (sp.coord[i] <= this.min[i]) {\r
-this.min[i] = sp.coord[i];\r
-}}\r
-}\r
-this.$width[0] = Math.abs (this.max[0] - this.min[0]);\r
-this.$width[1] = Math.abs (this.max[1] - this.min[1]);\r
-this.$width[2] = Math.abs (this.max[2] - this.min[2]);\r
-this.maxwidth = this.$width[0];\r
-if (this.$width[1] > this.$width[0]) {\r
-this.maxwidth = this.$width[1];\r
-}if (this.$width[2] > this.$width[1]) {\r
-this.maxwidth = this.$width[2];\r
-}});\r
-Clazz.defineMethod (c$, "findScale", \r
-function () {\r
-var dim;\r
-var width;\r
-var height;\r
-if (this.getSize ().width != 0) {\r
-width = this.getSize ().width;\r
-height = this.getSize ().height;\r
-} else {\r
-width = this.prefsize.width;\r
-height = this.prefsize.height;\r
-}if (width < height) {\r
-dim = width;\r
-} else {\r
-dim = height;\r
-}return dim * this.scalefactor / (2 * this.maxwidth);\r
-});\r
-Clazz.defineMethod (c$, "findCentre", \r
-function () {\r
-this.findWidth ();\r
-this.centre[0] = (this.max[0] + this.min[0]) / 2;\r
-this.centre[1] = (this.max[1] + this.min[1]) / 2;\r
-this.centre[2] = (this.max[2] + this.min[2]) / 2;\r
-});\r
-Clazz.overrideMethod (c$, "getPreferredSize", \r
-function () {\r
-if (this.prefsize != null) {\r
-return this.prefsize;\r
-} else {\r
-return  new java.awt.Dimension (400, 400);\r
-}});\r
-Clazz.overrideMethod (c$, "getMinimumSize", \r
-function () {\r
-return this.getPreferredSize ();\r
-});\r
-Clazz.overrideMethod (c$, "update", \r
-function (g) {\r
-this.paint (g);\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "PaintComponent", \r
-function (g) {\r
-if (this.points == null) {\r
-g.setFont ( new java.awt.Font ("Verdana", 0, 18));\r
-g.drawString (jalview.util.MessageManager.getString ("label.calculating_pca") + "....", 20, Clazz.doubleToInt (this.getSize ().height / 2));\r
-} else {\r
-if ((this.img == null) || (this.prefsize.width != this.getSize ().width) || (this.prefsize.height != this.getSize ().height)) {\r
-this.prefsize.width = this.getSize ().width;\r
-this.prefsize.height = this.getSize ().height;\r
-this.scale = this.findScale ();\r
-this.img = this.createImage (this.getSize ().width, this.getSize ().height);\r
-this.ig = this.img.getGraphics ();\r
-}this.drawBackground (this.ig, java.awt.Color.black);\r
-this.drawScene (this.ig);\r
-if (this.$drawAxes == true) {\r
-this.drawAxes (this.ig);\r
-}if (this.tooltip != null) {\r
-this.ig.setColor (java.awt.Color.red);\r
-this.ig.drawString (this.tooltip, this.toolx, this.tooly);\r
-}g.drawImage (this.img, 0, 0, this);\r
-}}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "drawAxes", \r
-function (g) {\r
-g.setColor (java.awt.Color.yellow);\r
-for (var i = 0; i < 3; i++) {\r
-g.drawLine (Clazz.doubleToInt (this.getSize ().width / 2), Clazz.doubleToInt (this.getSize ().height / 2), Clazz.floatToInt (this.axes[i][0] * this.scale * this.max[0] + Clazz.doubleToInt (this.getSize ().width / 2)), Clazz.floatToInt (this.axes[i][1] * this.scale * this.max[1] + Clazz.doubleToInt (this.getSize ().height / 2)));\r
-}\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "drawBackground", \r
-function (g, col) {\r
-g.setColor (col);\r
-g.fillRect (0, 0, this.prefsize.width, this.prefsize.height);\r
-}, "java.awt.Graphics,java.awt.Color");\r
-Clazz.defineMethod (c$, "drawScene", \r
-function (g) {\r
-var halfwidth = Clazz.doubleToInt (this.getSize ().width / 2);\r
-var halfheight = Clazz.doubleToInt (this.getSize ().height / 2);\r
-for (var i = 0; i < this.npoint; i++) {\r
-var sp = this.points.elementAt (i);\r
-var x = Clazz.floatToInt ((sp.coord[0] - this.centre[0]) * this.scale) + halfwidth;\r
-var y = Clazz.floatToInt ((sp.coord[1] - this.centre[1]) * this.scale) + halfheight;\r
-var z = sp.coord[1] - this.centre[2];\r
-if (this.av.getSequenceColour (sp.sequence) === java.awt.Color.black) {\r
-g.setColor (java.awt.Color.white);\r
-} else {\r
-g.setColor (this.av.getSequenceColour (sp.sequence));\r
-}if (this.av.getSelectionGroup () != null) {\r
-if (this.av.getSelectionGroup ().getSequences (null).contains ((this.points.elementAt (i)).sequence)) {\r
-g.setColor (java.awt.Color.gray);\r
-}}if (z < 0) {\r
-g.setColor (g.getColor ().darker ());\r
-}g.fillRect (x - 3, y - 3, 6, 6);\r
-if (this.$showLabels) {\r
-g.setColor (java.awt.Color.red);\r
-g.drawString ((this.points.elementAt (i)).sequence.getName (), x - 3, y - 4);\r
-}}\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "minimumsize", \r
-function () {\r
-return this.prefsize;\r
-});\r
-Clazz.defineMethod (c$, "preferredsize", \r
-function () {\r
-return this.prefsize;\r
-});\r
-Clazz.overrideMethod (c$, "keyTyped", \r
-function (evt) {\r
-}, "java.awt.event.KeyEvent");\r
-Clazz.overrideMethod (c$, "keyReleased", \r
-function (evt) {\r
-}, "java.awt.event.KeyEvent");\r
-Clazz.overrideMethod (c$, "keyPressed", \r
-function (evt) {\r
-if (evt.getKeyCode () == 38) {\r
-this.scalefactor = (this.scalefactor * 1.1);\r
-this.scale = this.findScale ();\r
-} else if (evt.getKeyCode () == 40) {\r
-this.scalefactor = (this.scalefactor * 0.9);\r
-this.scale = this.findScale ();\r
-} else if (evt.getKeyChar () == 's') {\r
-System.err.println ("DEBUG: Rectangle selection");\r
-if (this.rectx2 != -1 && this.recty2 != -1) {\r
-this.rectSelect (this.rectx1, this.recty1, this.rectx2, this.recty2);\r
-}}this.repaint ();\r
-}, "java.awt.event.KeyEvent");\r
-Clazz.defineMethod (c$, "printPoints", \r
-function () {\r
-for (var i = 0; i < this.npoint; i++) {\r
-var sp = this.points.elementAt (i);\r
-jalview.util.Format.printLong (System.out, "%5d ", i);\r
-for (var j = 0; j < 3; j++) {\r
-jalview.util.Format.printDouble (System.out, "%13.3f  ", sp.coord[j]);\r
-}\r
-System.out.println ();\r
-}\r
-});\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-var x = evt.getX ();\r
-var y = evt.getY ();\r
-this.mx = x;\r
-this.my = y;\r
-this.omx = this.mx;\r
-this.omy = this.my;\r
-this.startx = x;\r
-this.starty = y;\r
-this.rectx1 = x;\r
-this.recty1 = y;\r
-this.rectx2 = -1;\r
-this.recty2 = -1;\r
-var found = this.findPoint (x, y);\r
-if (found != null) {\r
-if (this.av.getSelectionGroup () != null) {\r
-this.av.getSelectionGroup ().addOrRemove (found, true);\r
-this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);\r
-} else {\r
-this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());\r
-this.av.getSelectionGroup ().addOrRemove (found, true);\r
-this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);\r
-}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());\r
-this.av.sendSelection ();\r
-}this.repaint ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseMoved", \r
-function (evt) {\r
-var found = this.findPoint (evt.getX (), evt.getY ());\r
-if (found == null) {\r
-this.tooltip = null;\r
-} else {\r
-this.tooltip = found.getName ();\r
-this.toolx = evt.getX ();\r
-this.tooly = evt.getY ();\r
-}this.repaint ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseDragged", \r
-function (evt) {\r
-this.mx = evt.getX ();\r
-this.my = evt.getY ();\r
-this.rotmat.setIdentity ();\r
-this.rotmat.rotate (this.my - this.omy, 'x');\r
-this.rotmat.rotate (this.mx - this.omx, 'y');\r
-for (var i = 0; i < this.npoint; i++) {\r
-var sp = this.points.elementAt (i);\r
-sp.coord[0] -= this.centre[0];\r
-sp.coord[1] -= this.centre[1];\r
-sp.coord[2] -= this.centre[2];\r
-sp.coord = this.rotmat.vectorMultiply (sp.coord);\r
-sp.coord[0] += this.centre[0];\r
-sp.coord[1] += this.centre[1];\r
-sp.coord[2] += this.centre[2];\r
-}\r
-for (var i = 0; i < 3; i++) {\r
-this.axes[i] = this.rotmat.vectorMultiply (this.axes[i]);\r
-}\r
-this.omx = this.mx;\r
-this.omy = this.my;\r
-this.paint (this.getGraphics ());\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "rectSelect", \r
-function (x1, y1, x2, y2) {\r
-for (var i = 0; i < this.npoint; i++) {\r
-var sp = this.points.elementAt (i);\r
-var tmp1 = Clazz.doubleToInt ((sp.coord[0] - this.centre[0]) * this.scale + this.getSize ().width / 2.0);\r
-var tmp2 = Clazz.doubleToInt ((sp.coord[1] - this.centre[1]) * this.scale + this.getSize ().height / 2.0);\r
-if (tmp1 > x1 && tmp1 < x2 && tmp2 > y1 && tmp2 < y2) {\r
-if (this.av != null) {\r
-if (!this.av.getSelectionGroup ().getSequences (null).contains (sp.sequence)) {\r
-this.av.getSelectionGroup ().addSequence (sp.sequence, true);\r
-}}}}\r
-}, "~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "findPoint", \r
-function (x, y) {\r
-var halfwidth = Clazz.doubleToInt (this.getSize ().width / 2);\r
-var halfheight = Clazz.doubleToInt (this.getSize ().height / 2);\r
-var found = -1;\r
-for (var i = 0; i < this.npoint; i++) {\r
-var sp = this.points.elementAt (i);\r
-var px = Clazz.floatToInt ((sp.coord[0] - this.centre[0]) * this.scale) + halfwidth;\r
-var py = Clazz.floatToInt ((sp.coord[1] - this.centre[1]) * this.scale) + halfheight;\r
-if (Math.abs (px - x) < 3 && Math.abs (py - y) < 3) {\r
-found = i;\r
-}}\r
-if (found != -1) {\r
-return (this.points.elementAt (found)).sequence;\r
-} else {\r
-return null;\r
-}}, "~N,~N");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "jalview.api.RotatableCanvasI", "java.awt.event.KeyListener", "$.MouseListener", "$.MouseMotionListener", "jalview.math.RotatableMatrix"], "jalview.appletgui.RotatableCanvas", ["jalview.appletgui.PaintRefresher", "jalview.datamodel.SequenceGroup", "jalview.util.Format", "$.MessageManager", "java.awt.Color", "$.Dimension", "$.Font"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.idmat = null;
+this.objmat = null;
+this.rotmat = null;
+this.tooltip = null;
+this.toolx = 0;
+this.tooly = 0;
+this.$drawAxes = true;
+this.omx = 0;
+this.mx = 0;
+this.omy = 0;
+this.my = 0;
+this.img = null;
+this.ig = null;
+this.prefsize = null;
+this.centre = null;
+this.$width = null;
+this.max = null;
+this.min = null;
+this.maxwidth = 0;
+this.scale = 0;
+this.npoint = 0;
+this.points = null;
+this.orig = null;
+this.axes = null;
+this.startx = 0;
+this.starty = 0;
+this.lastx = 0;
+this.lasty = 0;
+this.rectx1 = 0;
+this.recty1 = 0;
+this.rectx2 = 0;
+this.recty2 = 0;
+this.scalefactor = 1;
+this.av = null;
+this.$showLabels = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "RotatableCanvas", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.KeyListener, jalview.api.RotatableCanvasI]);
+Clazz.prepareFields (c$, function () {
+this.idmat =  new jalview.math.RotatableMatrix (3, 3);
+this.objmat =  new jalview.math.RotatableMatrix (3, 3);
+this.rotmat =  new jalview.math.RotatableMatrix (3, 3);
+this.centre =  Clazz.newFloatArray (3, 0);
+this.$width =  Clazz.newFloatArray (3, 0);
+this.max =  Clazz.newFloatArray (3, 0);
+this.min =  Clazz.newFloatArray (3, 0);
+});
+Clazz.makeConstructor (c$, 
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.RotatableCanvas, []);
+this.av = av;
+}, "jalview.viewmodel.AlignmentViewport");
+Clazz.defineMethod (c$, "showLabels", 
+function (b) {
+this.$showLabels = b;
+this.repaint ();
+}, "~B");
+Clazz.overrideMethod (c$, "setPoints", 
+function (points, npoint) {
+this.points = points;
+this.npoint = npoint;
+jalview.appletgui.PaintRefresher.Register (this, this.av.getSequenceSetId ());
+this.prefsize = this.getPreferredSize ();
+this.orig =  Clazz.newFloatArray (npoint, 3, 0);
+for (var i = 0; i < npoint; i++) {
+var sp = points.elementAt (i);
+for (var j = 0; j < 3; j++) {
+this.orig[i][j] = sp.coord[j];
+}
+}
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < 3; j++) {
+if (i != j) {
+this.idmat.addElement (i, j, 0);
+this.objmat.addElement (i, j, 0);
+this.rotmat.addElement (i, j, 0);
+} else {
+this.idmat.addElement (i, j, 0);
+this.objmat.addElement (i, j, 0);
+this.rotmat.addElement (i, j, 0);
+}}
+}
+this.axes =  Clazz.newFloatArray (3, 3, 0);
+this.initAxes ();
+this.findCentre ();
+this.findWidth ();
+this.scale = this.findScale ();
+this.addMouseListener (this);
+this.addKeyListener (this);
+this.addMouseMotionListener (this);
+}, "java.util.Vector,~N");
+Clazz.defineMethod (c$, "initAxes", 
+function () {
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < 3; j++) {
+if (i != j) {
+this.axes[i][j] = 0;
+} else {
+this.axes[i][j] = 1;
+}}
+}
+});
+Clazz.defineMethod (c$, "findWidth", 
+function () {
+this.max =  Clazz.newFloatArray (3, 0);
+this.min =  Clazz.newFloatArray (3, 0);
+this.max[0] = -1.0E30;
+this.max[1] = -1.0E30;
+this.max[2] = -1.0E30;
+this.min[0] = 1e30;
+this.min[1] = 1e30;
+this.min[2] = 1e30;
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < this.npoint; j++) {
+var sp = this.points.elementAt (j);
+if (sp.coord[i] >= this.max[i]) {
+this.max[i] = sp.coord[i];
+}if (sp.coord[i] <= this.min[i]) {
+this.min[i] = sp.coord[i];
+}}
+}
+this.$width[0] = Math.abs (this.max[0] - this.min[0]);
+this.$width[1] = Math.abs (this.max[1] - this.min[1]);
+this.$width[2] = Math.abs (this.max[2] - this.min[2]);
+this.maxwidth = this.$width[0];
+if (this.$width[1] > this.$width[0]) {
+this.maxwidth = this.$width[1];
+}if (this.$width[2] > this.$width[1]) {
+this.maxwidth = this.$width[2];
+}});
+Clazz.defineMethod (c$, "findScale", 
+function () {
+var dim;
+var width;
+var height;
+if (this.getSize ().width != 0) {
+width = this.getSize ().width;
+height = this.getSize ().height;
+} else {
+width = this.prefsize.width;
+height = this.prefsize.height;
+}if (width < height) {
+dim = width;
+} else {
+dim = height;
+}return dim * this.scalefactor / (2 * this.maxwidth);
+});
+Clazz.defineMethod (c$, "findCentre", 
+function () {
+this.findWidth ();
+this.centre[0] = (this.max[0] + this.min[0]) / 2;
+this.centre[1] = (this.max[1] + this.min[1]) / 2;
+this.centre[2] = (this.max[2] + this.min[2]) / 2;
+});
+Clazz.overrideMethod (c$, "getPreferredSize", 
+function () {
+if (this.prefsize != null) {
+return this.prefsize;
+} else {
+return  new java.awt.Dimension (400, 400);
+}});
+Clazz.overrideMethod (c$, "getMinimumSize", 
+function () {
+return this.getPreferredSize ();
+});
+Clazz.overrideMethod (c$, "update", 
+function (g) {
+this.paint (g);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "PaintComponent", 
+function (g) {
+if (this.points == null) {
+g.setFont ( new java.awt.Font ("Verdana", 0, 18));
+g.drawString (jalview.util.MessageManager.getString ("label.calculating_pca") + "....", 20, Clazz.doubleToInt (this.getSize ().height / 2));
+} else {
+if ((this.img == null) || (this.prefsize.width != this.getSize ().width) || (this.prefsize.height != this.getSize ().height)) {
+this.prefsize.width = this.getSize ().width;
+this.prefsize.height = this.getSize ().height;
+this.scale = this.findScale ();
+this.img = this.createImage (this.getSize ().width, this.getSize ().height);
+this.ig = this.img.getGraphics ();
+}this.drawBackground (this.ig, java.awt.Color.black);
+this.drawScene (this.ig);
+if (this.$drawAxes == true) {
+this.drawAxes (this.ig);
+}if (this.tooltip != null) {
+this.ig.setColor (java.awt.Color.red);
+this.ig.drawString (this.tooltip, this.toolx, this.tooly);
+}g.drawImage (this.img, 0, 0, this);
+}}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "drawAxes", 
+function (g) {
+g.setColor (java.awt.Color.yellow);
+for (var i = 0; i < 3; i++) {
+g.drawLine (Clazz.doubleToInt (this.getSize ().width / 2), Clazz.doubleToInt (this.getSize ().height / 2), Clazz.floatToInt (this.axes[i][0] * this.scale * this.max[0] + Clazz.doubleToInt (this.getSize ().width / 2)), Clazz.floatToInt (this.axes[i][1] * this.scale * this.max[1] + Clazz.doubleToInt (this.getSize ().height / 2)));
+}
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "drawBackground", 
+function (g, col) {
+g.setColor (col);
+g.fillRect (0, 0, this.prefsize.width, this.prefsize.height);
+}, "java.awt.Graphics,java.awt.Color");
+Clazz.defineMethod (c$, "drawScene", 
+function (g) {
+var halfwidth = Clazz.doubleToInt (this.getSize ().width / 2);
+var halfheight = Clazz.doubleToInt (this.getSize ().height / 2);
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+var x = Clazz.floatToInt ((sp.coord[0] - this.centre[0]) * this.scale) + halfwidth;
+var y = Clazz.floatToInt ((sp.coord[1] - this.centre[1]) * this.scale) + halfheight;
+var z = sp.coord[1] - this.centre[2];
+if (this.av.getSequenceColour (sp.sequence) === java.awt.Color.black) {
+g.setColor (java.awt.Color.white);
+} else {
+g.setColor (this.av.getSequenceColour (sp.sequence));
+}if (this.av.getSelectionGroup () != null) {
+if (this.av.getSelectionGroup ().getSequences (null).contains ((this.points.elementAt (i)).sequence)) {
+g.setColor (java.awt.Color.gray);
+}}if (z < 0) {
+g.setColor (g.getColor ().darker ());
+}g.fillRect (x - 3, y - 3, 6, 6);
+if (this.$showLabels) {
+g.setColor (java.awt.Color.red);
+g.drawString ((this.points.elementAt (i)).sequence.getName (), x - 3, y - 4);
+}}
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "minimumsize", 
+function () {
+return this.prefsize;
+});
+Clazz.defineMethod (c$, "preferredsize", 
+function () {
+return this.prefsize;
+});
+Clazz.overrideMethod (c$, "keyTyped", 
+function (evt) {
+}, "java.awt.event.KeyEvent");
+Clazz.overrideMethod (c$, "keyReleased", 
+function (evt) {
+}, "java.awt.event.KeyEvent");
+Clazz.overrideMethod (c$, "keyPressed", 
+function (evt) {
+if (evt.getKeyCode () == 38) {
+this.scalefactor = (this.scalefactor * 1.1);
+this.scale = this.findScale ();
+} else if (evt.getKeyCode () == 40) {
+this.scalefactor = (this.scalefactor * 0.9);
+this.scale = this.findScale ();
+} else if (evt.getKeyChar () == 's') {
+System.err.println ("DEBUG: Rectangle selection");
+if (this.rectx2 != -1 && this.recty2 != -1) {
+this.rectSelect (this.rectx1, this.recty1, this.rectx2, this.recty2);
+}}this.repaint ();
+}, "java.awt.event.KeyEvent");
+Clazz.defineMethod (c$, "printPoints", 
+function () {
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+jalview.util.Format.printLong (System.out, "%5d ", i);
+for (var j = 0; j < 3; j++) {
+jalview.util.Format.printDouble (System.out, "%13.3f  ", sp.coord[j]);
+}
+System.out.println ();
+}
+});
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+var x = evt.getX ();
+var y = evt.getY ();
+this.mx = x;
+this.my = y;
+this.omx = this.mx;
+this.omy = this.my;
+this.startx = x;
+this.starty = y;
+this.rectx1 = x;
+this.recty1 = y;
+this.rectx2 = -1;
+this.recty2 = -1;
+var found = this.findPoint (x, y);
+if (found != null) {
+if (this.av.getSelectionGroup () != null) {
+this.av.getSelectionGroup ().addOrRemove (found, true);
+this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);
+} else {
+this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());
+this.av.getSelectionGroup ().addOrRemove (found, true);
+this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);
+}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.av.sendSelection ();
+}this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved", 
+function (evt) {
+var found = this.findPoint (evt.getX (), evt.getY ());
+if (found == null) {
+this.tooltip = null;
+} else {
+this.tooltip = found.getName ();
+this.toolx = evt.getX ();
+this.tooly = evt.getY ();
+}this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged", 
+function (evt) {
+this.mx = evt.getX ();
+this.my = evt.getY ();
+this.rotmat.setIdentity ();
+this.rotmat.rotate (this.my - this.omy, 'x');
+this.rotmat.rotate (this.mx - this.omx, 'y');
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+sp.coord[0] -= this.centre[0];
+sp.coord[1] -= this.centre[1];
+sp.coord[2] -= this.centre[2];
+sp.coord = this.rotmat.vectorMultiply (sp.coord);
+sp.coord[0] += this.centre[0];
+sp.coord[1] += this.centre[1];
+sp.coord[2] += this.centre[2];
+}
+for (var i = 0; i < 3; i++) {
+this.axes[i] = this.rotmat.vectorMultiply (this.axes[i]);
+}
+this.omx = this.mx;
+this.omy = this.my;
+this.paint (this.getGraphics ());
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "rectSelect", 
+function (x1, y1, x2, y2) {
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+var tmp1 = Clazz.doubleToInt ((sp.coord[0] - this.centre[0]) * this.scale + this.getSize ().width / 2.0);
+var tmp2 = Clazz.doubleToInt ((sp.coord[1] - this.centre[1]) * this.scale + this.getSize ().height / 2.0);
+if (tmp1 > x1 && tmp1 < x2 && tmp2 > y1 && tmp2 < y2) {
+if (this.av != null) {
+if (!this.av.getSelectionGroup ().getSequences (null).contains (sp.sequence)) {
+this.av.getSelectionGroup ().addSequence (sp.sequence, true);
+}}}}
+}, "~N,~N,~N,~N");
+Clazz.defineMethod (c$, "findPoint", 
+function (x, y) {
+var halfwidth = Clazz.doubleToInt (this.getSize ().width / 2);
+var halfheight = Clazz.doubleToInt (this.getSize ().height / 2);
+var found = -1;
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+var px = Clazz.floatToInt ((sp.coord[0] - this.centre[0]) * this.scale) + halfwidth;
+var py = Clazz.floatToInt ((sp.coord[1] - this.centre[1]) * this.scale) + halfheight;
+if (Math.abs (px - x) < 3 && Math.abs (py - y) < 3) {
+found = i;
+}}
+if (found != -1) {
+return (this.points.elementAt (found)).sequence;
+} else {
+return null;
+}}, "~N,~N");
+});
index 66ccdcb..332e353 100644 (file)
Binary files a/bin/jalview/appletgui/ScalePanel.class and b/bin/jalview/appletgui/ScalePanel.class differ
index 755df0a..eddee91 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.ScalePanel", ["awt2swing.MenuItem", "$.PopupMenu", "jalview.datamodel.SequenceGroup", "jalview.util.MessageManager", "java.awt.Color", "java.awt.event.ActionListener"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.offy = 4;\r
-this.$width = 0;\r
-this.av = null;\r
-this.ap = null;\r
-this.stretchingGroup = false;\r
-this.min = 0;\r
-this.max = 0;\r
-this.mouseDragging = false;\r
-this.reveal = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "ScalePanel", awt2swing.Panel, [java.awt.event.MouseMotionListener, java.awt.event.MouseListener]);\r
-Clazz.makeConstructor (c$, \r
-function (av, ap) {\r
-Clazz.superConstructor (this, jalview.appletgui.ScalePanel, []);\r
-this.setName ("scalePanel");\r
-this.setLayout (null);\r
-this.av = av;\r
-this.ap = ap;\r
-this.addMouseListener (this);\r
-this.addMouseMotionListener (this);\r
-}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-var x = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();\r
-var res;\r
-if (this.av.hasHiddenColumns ()) {\r
-res = this.av.getColumnSelection ().adjustForHiddenColumns (x);\r
-} else {\r
-res = x;\r
-}this.min = res;\r
-this.max = res;\r
-if ((evt.getModifiers () & 4) == 4) {\r
-var pop =  new awt2swing.PopupMenu ();\r
-if (this.reveal != null) {\r
-var item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.reveal"));\r
-item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$1") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$1, this, null)));\r
-pop.add (item);\r
-if (this.av.getColumnSelection ().hasManyHiddenColumns ()) {\r
-item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.reveal_all"));\r
-item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$2") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$2, this, null)));\r
-pop.add (item);\r
-}this.add (pop);\r
-pop.show (this, evt.getX (), evt.getY ());\r
-} else if (this.av.getColumnSelection ().contains (res)) {\r
-var item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.hide_columns"));\r
-item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$3") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$3, this, Clazz.cloneFinals ("res", res))));\r
-pop.add (item);\r
-this.add (pop);\r
-pop.show (this, evt.getX (), evt.getY ());\r
-}} else {\r
-if (!evt.isControlDown () && !evt.isShiftDown ()) {\r
-this.av.getColumnSelection ().clear ();\r
-}this.av.getColumnSelection ().addElement (res);\r
-var sg =  new jalview.datamodel.SequenceGroup ();\r
-for (var i = 0; i < this.av.getAlignment ().getSequences ().size (); i++) {\r
-sg.addSequence (this.av.getAlignment ().getSequenceAt (i), false);\r
-}\r
-sg.setStartRes (res);\r
-sg.setEndRes (res);\r
-this.av.setSelectionGroup (sg);\r
-if (evt.isShiftDown ()) {\r
-var min = Math.min (this.av.getColumnSelection ().getMin (), res);\r
-var max = Math.max (this.av.getColumnSelection ().getMax (), res);\r
-for (var i = min; i < max; i++) {\r
-this.av.getColumnSelection ().addElement (i);\r
-}\r
-sg.setStartRes (min);\r
-sg.setEndRes (max);\r
-}}this.ap.paintAlignment (true);\r
-this.av.sendSelection ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-this.mouseDragging = false;\r
-var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();\r
-if (res > this.av.getAlignment ().getWidth ()) {\r
-res = this.av.getAlignment ().getWidth () - 1;\r
-}if (this.av.hasHiddenColumns ()) {\r
-res = this.av.getColumnSelection ().adjustForHiddenColumns (res);\r
-}if (!this.stretchingGroup) {\r
-this.ap.paintAlignment (false);\r
-return;\r
-}var sg = this.av.getSelectionGroup ();\r
-if (res > sg.getStartRes ()) {\r
-sg.setEndRes (res);\r
-} else if (res < sg.getStartRes ()) {\r
-sg.setStartRes (res);\r
-}this.stretchingGroup = false;\r
-this.ap.paintAlignment (false);\r
-this.av.sendSelection ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseDragged", \r
-function (evt) {\r
-this.mouseDragging = true;\r
-var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();\r
-if (res < 0) {\r
-res = 0;\r
-}if (this.av.hasHiddenColumns ()) {\r
-res = this.av.getColumnSelection ().adjustForHiddenColumns (res);\r
-}if (res > this.av.getAlignment ().getWidth ()) {\r
-res = this.av.getAlignment ().getWidth () - 1;\r
-}if (res < this.min) {\r
-this.min = res;\r
-}if (res > this.max) {\r
-this.max = res;\r
-}var sg = this.av.getSelectionGroup ();\r
-if (sg != null) {\r
-this.stretchingGroup = true;\r
-if (!this.av.getColumnSelection ().contains (res)) {\r
-this.av.getColumnSelection ().addElement (res);\r
-}if (res > sg.getStartRes ()) {\r
-sg.setEndRes (res);\r
-}if (res < sg.getStartRes ()) {\r
-sg.setStartRes (res);\r
-}var col;\r
-for (var i = this.min; i <= this.max; i++) {\r
-col = this.av.getColumnSelection ().adjustForHiddenColumns (i);\r
-if ((col < sg.getStartRes ()) || (col > sg.getEndRes ())) {\r
-this.av.getColumnSelection ().removeElement (col);\r
-} else {\r
-this.av.getColumnSelection ().addElement (col);\r
-}}\r
-this.ap.paintAlignment (false);\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (evt) {\r
-if (this.mouseDragging) {\r
-this.ap.seqPanel.scrollCanvas (null);\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (evt) {\r
-if (this.mouseDragging) {\r
-this.ap.seqPanel.scrollCanvas (evt);\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseMoved", \r
-function (evt) {\r
-if (!this.av.hasHiddenColumns ()) {\r
-return;\r
-}var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();\r
-res = this.av.getColumnSelection ().adjustForHiddenColumns (res);\r
-this.reveal = null;\r
-for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {\r
-if (res + 1 == region[0] || res - 1 == region[1]) {\r
-this.reveal = region;\r
-break;\r
-}}\r
-this.repaint ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "paintComponent", \r
-function (g) {\r
-if (this.av.getWrapAlignment ()) return;\r
-this.drawScale (g, this.av.getStartRes (), this.av.getEndRes (), this.getSize ().width, this.getSize ().height);\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "drawScale", \r
-function (gg, startx, endx, width, height) {\r
-gg.setFont (this.av.getFont ());\r
-gg.setColor (java.awt.Color.white);\r
-gg.fillRect (0, 0, width, height);\r
-gg.setColor (java.awt.Color.black);\r
-var cs = this.av.getColumnSelection ();\r
-gg.setColor ( new java.awt.Color (220, 0, 0));\r
-var avcharWidth = this.av.getCharWidth ();\r
-var avcharHeight = this.av.getCharHeight ();\r
-for (var i = 0; i < cs.size (); i++) {\r
-var sel = cs.columnAt (i);\r
-if (this.av.hasHiddenColumns ()) {\r
-sel = this.av.getColumnSelection ().findColumnPosition (sel);\r
-}if ((sel >= startx) && (sel <= endx)) {\r
-gg.fillRect ((sel - startx) * avcharWidth, 0, avcharWidth, this.getSize ().height);\r
-}}\r
-gg.setColor (java.awt.Color.black);\r
-var scalestartx = (Clazz.doubleToInt (startx / 10)) * 10;\r
-var fm = gg.getFontMetrics (this.av.getFont ());\r
-var y = avcharHeight - fm.getDescent ();\r
-if ((scalestartx % 10) == 0) {\r
-scalestartx += 5;\r
-}var string;\r
-var maxX = 0;\r
-for (var i = scalestartx; i < endx; i += 5) {\r
-if ((i % 10) == 0) {\r
-string = String.valueOf (this.av.getColumnSelection ().adjustForHiddenColumns (i));\r
-if ((i - startx - 1) * avcharWidth > maxX) {\r
-gg.drawString (string, (i - startx - 1) * avcharWidth, y);\r
-maxX = (i - startx + 1) * avcharWidth + fm.stringWidth (string);\r
-}gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + 2, ((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));\r
-} else {\r
-gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + fm.getDescent (), ((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));\r
-}}\r
-if (this.av.hasHiddenColumns ()) {\r
-gg.setColor (java.awt.Color.blue);\r
-var res;\r
-if (this.av.getShowHiddenMarkers ()) {\r
-for (var i = 0; i < this.av.getColumnSelection ().getHiddenColumns ().size (); i++) {\r
-res = this.av.getColumnSelection ().findHiddenRegionPosition (i) - startx;\r
-if (res < 0 || res > endx - scalestartx) {\r
-continue;\r
-}gg.fillPolygon ( Clazz.newIntArray (-1, [res * avcharWidth - Clazz.doubleToInt (avcharHeight / 4), res * avcharWidth + Clazz.doubleToInt (avcharHeight / 4), res * avcharWidth]),  Clazz.newIntArray (-1, [y - Clazz.doubleToInt (avcharHeight / 2), y - Clazz.doubleToInt (avcharHeight / 2), y + 8]), 3);\r
-}\r
-}if (this.reveal != null && this.reveal[0] > startx && this.reveal[0] < endx) {\r
-gg.drawString (jalview.util.MessageManager.getString ("label.reveal_columns"), this.reveal[0] * avcharWidth, 0);\r
-}}}, "java.awt.Graphics,~N,~N,~N,~N");\r
-c$.$ScalePanel$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$1", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-this.b$["jalview.appletgui.ScalePanel"].av.showColumn (this.b$["jalview.appletgui.ScalePanel"].reveal[0]);\r
-this.b$["jalview.appletgui.ScalePanel"].reveal = null;\r
-this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);\r
-if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {\r
-this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();\r
-}}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$ScalePanel$2$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$2", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-this.b$["jalview.appletgui.ScalePanel"].av.showAllHiddenColumns ();\r
-this.b$["jalview.appletgui.ScalePanel"].reveal = null;\r
-this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);\r
-if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {\r
-this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();\r
-}}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$ScalePanel$3$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$3", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-this.b$["jalview.appletgui.ScalePanel"].av.hideColumns (this.f$.res, this.f$.res);\r
-if (this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup () != null && this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup ().getSize () == this.b$["jalview.appletgui.ScalePanel"].av.getAlignment ().getHeight ()) {\r
-this.b$["jalview.appletgui.ScalePanel"].av.setSelectionGroup (null);\r
-}this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);\r
-if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {\r
-this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();\r
-}}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.ScalePanel", ["awt2swing.MenuItem", "$.PopupMenu", "jalview.datamodel.SequenceGroup", "jalview.util.MessageManager", "java.awt.Color", "java.awt.event.ActionListener"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.offy = 4;
+this.$width = 0;
+this.av = null;
+this.ap = null;
+this.stretchingGroup = false;
+this.min = 0;
+this.max = 0;
+this.mouseDragging = false;
+this.reveal = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "ScalePanel", awt2swing.Panel, [java.awt.event.MouseMotionListener, java.awt.event.MouseListener]);
+Clazz.makeConstructor (c$, 
+function (av, ap) {
+Clazz.superConstructor (this, jalview.appletgui.ScalePanel, []);
+this.setName ("scalePanel");
+this.setLayout (null);
+this.av = av;
+this.ap = ap;
+this.addMouseListener (this);
+this.addMouseMotionListener (this);
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+var x = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+var res;
+if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (x);
+} else {
+res = x;
+}this.min = res;
+this.max = res;
+if ((evt.getModifiers () & 4) == 4) {
+var pop =  new awt2swing.PopupMenu ();
+if (this.reveal != null) {
+var item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.reveal"));
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$1") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$1, this, null)));
+pop.add (item);
+if (this.av.getColumnSelection ().hasManyHiddenColumns ()) {
+item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.reveal_all"));
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$2") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$2, this, null)));
+pop.add (item);
+}this.add (pop);
+pop.show (this, evt.getX (), evt.getY ());
+} else if (this.av.getColumnSelection ().contains (res)) {
+var item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.hide_columns"));
+item.addActionListener (((Clazz.isClassDefined ("jalview.appletgui.ScalePanel$3") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$3$ ()), Clazz.innerTypeInstance (jalview.appletgui.ScalePanel$3, this, Clazz.cloneFinals ("res", res))));
+pop.add (item);
+this.add (pop);
+pop.show (this, evt.getX (), evt.getY ());
+}} else {
+if (!evt.isControlDown () && !evt.isShiftDown ()) {
+this.av.getColumnSelection ().clear ();
+}this.av.getColumnSelection ().addElement (res);
+var sg =  new jalview.datamodel.SequenceGroup ();
+for (var i = 0; i < this.av.getAlignment ().getSequences ().size (); i++) {
+sg.addSequence (this.av.getAlignment ().getSequenceAt (i), false);
+}
+sg.setStartRes (res);
+sg.setEndRes (res);
+this.av.setSelectionGroup (sg);
+if (evt.isShiftDown ()) {
+var min = Math.min (this.av.getColumnSelection ().getMin (), res);
+var max = Math.max (this.av.getColumnSelection ().getMax (), res);
+for (var i = min; i < max; i++) {
+this.av.getColumnSelection ().addElement (i);
+}
+sg.setStartRes (min);
+sg.setEndRes (max);
+}}this.ap.paintAlignment (true);
+this.av.sendSelection ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.mouseDragging = false;
+var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+if (res > this.av.getAlignment ().getWidth ()) {
+res = this.av.getAlignment ().getWidth () - 1;
+}if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+}if (!this.stretchingGroup) {
+this.ap.paintAlignment (false);
+return;
+}var sg = this.av.getSelectionGroup ();
+if (res > sg.getStartRes ()) {
+sg.setEndRes (res);
+} else if (res < sg.getStartRes ()) {
+sg.setStartRes (res);
+}this.stretchingGroup = false;
+this.ap.paintAlignment (false);
+this.av.sendSelection ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged", 
+function (evt) {
+this.mouseDragging = true;
+var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+if (res < 0) {
+res = 0;
+}if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+}if (res > this.av.getAlignment ().getWidth ()) {
+res = this.av.getAlignment ().getWidth () - 1;
+}if (res < this.min) {
+this.min = res;
+}if (res > this.max) {
+this.max = res;
+}var sg = this.av.getSelectionGroup ();
+if (sg != null) {
+this.stretchingGroup = true;
+if (!this.av.getColumnSelection ().contains (res)) {
+this.av.getColumnSelection ().addElement (res);
+}if (res > sg.getStartRes ()) {
+sg.setEndRes (res);
+}if (res < sg.getStartRes ()) {
+sg.setStartRes (res);
+}var col;
+for (var i = this.min; i <= this.max; i++) {
+col = this.av.getColumnSelection ().adjustForHiddenColumns (i);
+if ((col < sg.getStartRes ()) || (col > sg.getEndRes ())) {
+this.av.getColumnSelection ().removeElement (col);
+} else {
+this.av.getColumnSelection ().addElement (col);
+}}
+this.ap.paintAlignment (false);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (evt) {
+if (this.mouseDragging) {
+this.ap.seqPanel.scrollCanvas (null);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (evt) {
+if (this.mouseDragging) {
+this.ap.seqPanel.scrollCanvas (evt);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved", 
+function (evt) {
+if (!this.av.hasHiddenColumns ()) {
+return;
+}var res = (Clazz.doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+this.reveal = null;
+for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
+if (res + 1 == region[0] || res - 1 == region[1]) {
+this.reveal = region;
+break;
+}}
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "paintComponent", 
+function (g) {
+if (this.av.getWrapAlignment ()) return;
+this.drawScale (g, this.av.getStartRes (), this.av.getEndRes (), this.getSize ().width, this.getSize ().height);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "drawScale", 
+function (gg, startx, endx, width, height) {
+gg.setFont (this.av.getFont ());
+gg.setColor (java.awt.Color.white);
+gg.fillRect (0, 0, width, height);
+gg.setColor (java.awt.Color.black);
+var cs = this.av.getColumnSelection ();
+gg.setColor ( new java.awt.Color (220, 0, 0));
+var avcharWidth = this.av.getCharWidth ();
+var avcharHeight = this.av.getCharHeight ();
+for (var i = 0; i < cs.size (); i++) {
+var sel = cs.columnAt (i);
+if (this.av.hasHiddenColumns ()) {
+sel = this.av.getColumnSelection ().findColumnPosition (sel);
+}if ((sel >= startx) && (sel <= endx)) {
+gg.fillRect ((sel - startx) * avcharWidth, 0, avcharWidth, this.getSize ().height);
+}}
+gg.setColor (java.awt.Color.black);
+var scalestartx = (Clazz.doubleToInt (startx / 10)) * 10;
+var fm = gg.getFontMetrics (this.av.getFont ());
+var y = avcharHeight - fm.getDescent ();
+if ((scalestartx % 10) == 0) {
+scalestartx += 5;
+}var string;
+var maxX = 0;
+for (var i = scalestartx; i < endx; i += 5) {
+if ((i % 10) == 0) {
+string = String.valueOf (this.av.getColumnSelection ().adjustForHiddenColumns (i));
+if ((i - startx - 1) * avcharWidth > maxX) {
+gg.drawString (string, (i - startx - 1) * avcharWidth, y);
+maxX = (i - startx + 1) * avcharWidth + fm.stringWidth (string);
+}gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + 2, ((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));
+} else {
+gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + fm.getDescent (), ((i - startx - 1) * avcharWidth) + (Clazz.doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));
+}}
+if (this.av.hasHiddenColumns ()) {
+gg.setColor (java.awt.Color.blue);
+var res;
+if (this.av.getShowHiddenMarkers ()) {
+for (var i = 0; i < this.av.getColumnSelection ().getHiddenColumns ().size (); i++) {
+res = this.av.getColumnSelection ().findHiddenRegionPosition (i) - startx;
+if (res < 0 || res > endx - scalestartx) {
+continue;
+}gg.fillPolygon ( Clazz.newIntArray (-1, [res * avcharWidth - Clazz.doubleToInt (avcharHeight / 4), res * avcharWidth + Clazz.doubleToInt (avcharHeight / 4), res * avcharWidth]),  Clazz.newIntArray (-1, [y - Clazz.doubleToInt (avcharHeight / 2), y - Clazz.doubleToInt (avcharHeight / 2), y + 8]), 3);
+}
+}if (this.reveal != null && this.reveal[0] > startx && this.reveal[0] < endx) {
+gg.drawString (jalview.util.MessageManager.getString ("label.reveal_columns"), this.reveal[0] * avcharWidth, 0);
+}}}, "java.awt.Graphics,~N,~N,~N,~N");
+c$.$ScalePanel$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$1", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.ScalePanel"].av.showColumn (this.b$["jalview.appletgui.ScalePanel"].reveal[0]);
+this.b$["jalview.appletgui.ScalePanel"].reveal = null;
+this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
+if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$ScalePanel$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$2", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.ScalePanel"].av.showAllHiddenColumns ();
+this.b$["jalview.appletgui.ScalePanel"].reveal = null;
+this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
+if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$ScalePanel$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "ScalePanel$3", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.ScalePanel"].av.hideColumns (this.f$.res, this.f$.res);
+if (this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup () != null && this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup ().getSize () == this.b$["jalview.appletgui.ScalePanel"].av.getAlignment ().getHeight ()) {
+this.b$["jalview.appletgui.ScalePanel"].av.setSelectionGroup (null);
+}this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
+if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+});
index a5ce5f0..c3feb04 100644 (file)
Binary files a/bin/jalview/appletgui/SeqCanvas.class and b/bin/jalview/appletgui/SeqCanvas.class differ
index ac84c24..af5372b 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel"], "jalview.appletgui.SeqCanvas", ["jalview.appletgui.AnnotationPanel", "$.FeatureRenderer", "$.PaintRefresher", "$.SequenceRenderer", "jalview.util.Comparison", "java.awt.Color"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.fr = null;\r
-this.sr = null;\r
-this.img = null;\r
-this.gg = null;\r
-this.imgWidth = 0;\r
-this.imgHeight = 0;\r
-this.av = null;\r
-this.searchResults = null;\r
-this.$fastPaint = false;\r
-this.cursorX = 0;\r
-this.cursorY = 0;\r
-this.avcharHeight = 0;\r
-this.avcharWidth = 0;\r
-this.lastsr = 0;\r
-this.LABEL_WEST = 0;\r
-this.LABEL_EAST = 0;\r
-this.annotations = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "SeqCanvas", awt2swing.Panel);\r
-Clazz.makeConstructor (c$, \r
-function (av) {\r
-Clazz.superConstructor (this, jalview.appletgui.SeqCanvas, []);\r
-this.av = av;\r
-this.fr =  new jalview.appletgui.FeatureRenderer (av);\r
-this.sr =  new jalview.appletgui.SequenceRenderer (av);\r
-jalview.appletgui.PaintRefresher.Register (this, av.getSequenceSetId ());\r
-this.updateViewport ();\r
-}, "jalview.appletgui.AlignViewport");\r
-Clazz.defineMethod (c$, "updateViewport", \r
-($fz = function () {\r
-this.avcharHeight = this.av.getCharHeight ();\r
-this.avcharWidth = this.av.getCharWidth ();\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "getViewport", \r
-function () {\r
-return this.av;\r
-});\r
-Clazz.defineMethod (c$, "getFeatureRenderer", \r
-function () {\r
-return this.fr;\r
-});\r
-Clazz.defineMethod (c$, "getSequenceRenderer", \r
-function () {\r
-return this.sr;\r
-});\r
-Clazz.defineMethod (c$, "drawNorthScale", \r
-($fz = function (g, startx, endx, ypos) {\r
-var scalestartx = startx - startx % 10 + 10;\r
-g.setColor (java.awt.Color.black);\r
-for (var i = scalestartx; i < endx; i += 10) {\r
-var value = i;\r
-if (this.av.hasHiddenColumns ()) {\r
-value = this.av.getColumnSelection ().adjustForHiddenColumns (value);\r
-}g.drawString (String.valueOf (value), (i - startx - 1) * this.avcharWidth, ypos - (Clazz.doubleToInt (this.avcharHeight / 2)));\r
-g.drawLine (((i - startx - 1) * this.avcharWidth) + (Clazz.doubleToInt (this.avcharWidth / 2)), (ypos + 2) - (Clazz.doubleToInt (this.avcharHeight / 2)), ((i - startx - 1) * this.avcharWidth) + (Clazz.doubleToInt (this.avcharWidth / 2)), ypos - 2);\r
-}\r
-}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");\r
-Clazz.defineMethod (c$, "drawWestScale", \r
-($fz = function (g, startx, endx, ypos) {\r
-var fm = this.getFontMetrics (this.av.getFont ());\r
-ypos += this.avcharHeight;\r
-if (this.av.hasHiddenColumns ()) {\r
-startx = this.av.getColumnSelection ().adjustForHiddenColumns (startx);\r
-endx = this.av.getColumnSelection ().adjustForHiddenColumns (endx);\r
-}var maxwidth = this.av.getAlignment ().getWidth ();\r
-if (this.av.hasHiddenColumns ()) {\r
-maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;\r
-}for (var i = 0; i < this.av.getAlignment ().getHeight (); i++) {\r
-var seq = this.av.getAlignment ().getSequenceAt (i);\r
-var index = startx;\r
-var value = -1;\r
-while (index < endx) {\r
-if (jalview.util.Comparison.isGap (seq.getCharAt (index))) {\r
-index++;\r
-continue;\r
-}value = this.av.getAlignment ().getSequenceAt (i).findPosition (index);\r
-break;\r
-}\r
-if (value != -1) {\r
-var x = this.LABEL_WEST - fm.stringWidth (String.valueOf (value)) - Clazz.doubleToInt (this.avcharWidth / 2);\r
-g.drawString (value + "", x, (ypos + (i * this.avcharHeight)) - (Clazz.doubleToInt (this.avcharHeight / 5)));\r
-}}\r
-}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");\r
-Clazz.defineMethod (c$, "drawEastScale", \r
-($fz = function (g, startx, endx, ypos) {\r
-ypos += this.avcharHeight;\r
-if (this.av.hasHiddenColumns ()) {\r
-endx = this.av.getColumnSelection ().adjustForHiddenColumns (endx);\r
-}var seq;\r
-for (var i = 0; i < this.av.getAlignment ().getHeight (); i++) {\r
-seq = this.av.getAlignment ().getSequenceAt (i);\r
-var index = endx;\r
-var value = -1;\r
-while (index > startx) {\r
-if (jalview.util.Comparison.isGap (seq.getCharAt (index))) {\r
-index--;\r
-continue;\r
-}value = seq.findPosition (index);\r
-break;\r
-}\r
-if (value != -1) {\r
-g.drawString (String.valueOf (value), 0, (ypos + (i * this.avcharHeight)) - (Clazz.doubleToInt (this.avcharHeight / 5)));\r
-}}\r
-}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");\r
-Clazz.defineMethod (c$, "fastPaint", \r
-function (horizontal, vertical) {\r
-if (this.$fastPaint || this.gg == null) {\r
-return;\r
-}this.updateViewport ();\r
-if (this.lastsr + horizontal != this.av.startRes) {\r
-horizontal = this.av.startRes - this.lastsr;\r
-}this.lastsr = this.av.startRes;\r
-this.$fastPaint = true;\r
-this.gg.copyArea (horizontal * this.avcharWidth, vertical * this.avcharHeight, this.imgWidth - horizontal * this.avcharWidth, this.imgHeight - vertical * this.avcharHeight, -horizontal * this.avcharWidth, -vertical * this.avcharHeight);\r
-var sr = this.av.startRes;\r
-var er = this.av.endRes;\r
-var ss = this.av.startSeq;\r
-var es = this.av.endSeq;\r
-var transX = 0;\r
-var transY = 0;\r
-if (horizontal > 0) {\r
-transX = (er - sr - horizontal) * this.avcharWidth;\r
-sr = er - horizontal;\r
-} else if (horizontal < 0) {\r
-er = sr - horizontal;\r
-} else if (vertical > 0) {\r
-ss = es - vertical;\r
-if (ss < this.av.startSeq) {\r
-ss = this.av.startSeq;\r
-} else {\r
-transY = this.imgHeight - vertical * this.avcharHeight;\r
-}} else if (vertical < 0) {\r
-es = ss - vertical;\r
-if (es > this.av.endSeq) {\r
-es = this.av.endSeq;\r
-}}this.gg.translate (transX, transY);\r
-this.drawPanel (this.gg, sr, er, ss, es, 0);\r
-this.gg.translate (-transX, -transY);\r
-this.repaint ();\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "paintComponent", \r
-function (g) {\r
-if (this.img != null && (this.$fastPaint || (this.getSize ().width != g.getClipBounds ().width) || (this.getSize ().height != g.getClipBounds ().height))) {\r
-g.drawImage (this.img, 0, 0, this);\r
-this.$fastPaint = false;\r
-return;\r
-}if (this.$fastPaint) {\r
-g.drawImage (this.img, 0, 0, this);\r
-this.$fastPaint = false;\r
-return;\r
-}this.updateViewport ();\r
-this.imgWidth = this.getSize ().width;\r
-this.imgHeight = this.getSize ().height;\r
-this.imgWidth -= this.imgWidth % this.avcharWidth;\r
-this.imgHeight -= this.imgHeight % this.avcharHeight;\r
-if (this.imgWidth < 1 || this.imgHeight < 1) {\r
-return;\r
-}if (this.img == null || this.imgWidth != this.img.getWidth (this) || this.imgHeight != this.img.getHeight (this)) {\r
-this.img = this.createImage (this.imgWidth, this.imgHeight);\r
-this.gg = this.img.getGraphics ();\r
-this.gg.setFont (this.av.getFont ());\r
-}this.gg.setColor (java.awt.Color.white);\r
-this.gg.fillRect (0, 0, this.imgWidth, this.imgHeight);\r
-if (this.av.getWrapAlignment ()) {\r
-this.drawWrappedPanel (this.gg, this.imgWidth, this.imgHeight, this.av.startRes);\r
-} else {\r
-this.drawPanel (this.gg, this.av.startRes, this.av.endRes, this.av.startSeq, this.av.endSeq, 0);\r
-}g.drawImage (this.img, 0, 0, this);\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "getWrappedCanvasWidth", \r
-function (cwidth) {\r
-cwidth -= cwidth % this.av.getCharWidth ();\r
-var fm = this.getFontMetrics (this.av.getFont ());\r
-this.LABEL_EAST = 0;\r
-this.LABEL_WEST = 0;\r
-if (this.av.getScaleRightWrapped ()) {\r
-this.LABEL_EAST = fm.stringWidth (this.getMask ());\r
-}if (this.av.getScaleLeftWrapped ()) {\r
-this.LABEL_WEST = fm.stringWidth (this.getMask ());\r
-}return Clazz.doubleToInt ((cwidth - this.LABEL_EAST - this.LABEL_WEST) / this.av.getCharWidth ());\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getMask", \r
-function () {\r
-var mask = "0";\r
-var maxWidth = 0;\r
-var tmp;\r
-var alignment = this.av.getAlignment ();\r
-for (var i = 0; i < alignment.getHeight (); i++) {\r
-tmp = alignment.getSequenceAt (i).getEnd ();\r
-if (tmp > maxWidth) {\r
-maxWidth = tmp;\r
-}}\r
-for (var i = maxWidth; i > 0; i /= 10) {\r
-mask += "0";\r
-}\r
-return mask;\r
-});\r
-Clazz.defineMethod (c$, "drawWrappedPanel", \r
-($fz = function (g, canvasWidth, canvasHeight, startRes) {\r
-var al = this.av.getAlignment ();\r
-var fm = this.getFontMetrics (this.av.getFont ());\r
-if (this.av.getScaleRightWrapped ()) {\r
-this.LABEL_EAST = fm.stringWidth (this.getMask ());\r
-}if (this.av.getScaleLeftWrapped ()) {\r
-this.LABEL_WEST = fm.stringWidth (this.getMask ());\r
-}var hgap = this.avcharHeight;\r
-if (this.av.getScaleAboveWrapped ()) {\r
-hgap += this.avcharHeight;\r
-}var cWidth = Clazz.doubleToInt ((canvasWidth - this.LABEL_EAST - this.LABEL_WEST) / this.avcharWidth);\r
-var cHeight = this.av.getAlignment ().getHeight () * this.avcharHeight;\r
-this.av.setWrappedWidth (cWidth);\r
-this.av.endRes = this.av.startRes + cWidth;\r
-var endx;\r
-var ypos = hgap;\r
-var maxwidth = this.av.getAlignment ().getWidth () - 1;\r
-if (this.av.hasHiddenColumns ()) {\r
-maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;\r
-}while ((ypos <= canvasHeight) && (startRes < maxwidth)) {\r
-endx = startRes + cWidth - 1;\r
-if (endx > maxwidth) {\r
-endx = maxwidth;\r
-}g.setColor (java.awt.Color.black);\r
-if (this.av.getScaleLeftWrapped ()) {\r
-this.drawWestScale (g, startRes, endx, ypos);\r
-}if (this.av.getScaleRightWrapped ()) {\r
-g.translate (canvasWidth - this.LABEL_EAST, 0);\r
-this.drawEastScale (g, startRes, endx, ypos);\r
-g.translate (-(canvasWidth - this.LABEL_EAST), 0);\r
-}g.translate (this.LABEL_WEST, 0);\r
-if (this.av.getScaleAboveWrapped ()) {\r
-this.drawNorthScale (g, startRes, endx, ypos);\r
-}if (this.av.hasHiddenColumns () && this.av.getShowHiddenMarkers ()) {\r
-g.setColor (java.awt.Color.blue);\r
-var res;\r
-for (var i = 0; i < this.av.getColumnSelection ().getHiddenColumns ().size (); i++) {\r
-res = this.av.getColumnSelection ().findHiddenRegionPosition (i) - startRes;\r
-if (res < 0 || res > endx - startRes) {\r
-continue;\r
-}this.gg.fillPolygon ( Clazz.newIntArray (-1, [res * this.avcharWidth - Clazz.doubleToInt (this.avcharHeight / 4), res * this.avcharWidth + Clazz.doubleToInt (this.avcharHeight / 4), res * this.avcharWidth]),  Clazz.newIntArray (-1, [ypos - (Clazz.doubleToInt (this.avcharHeight / 2)), ypos - (Clazz.doubleToInt (this.avcharHeight / 2)), ypos - (Clazz.doubleToInt (this.avcharHeight / 2)) + 8]), 3);\r
-}\r
-}if (g.getClip () == null) {\r
-g.setClip (0, 0, cWidth * this.avcharWidth, canvasHeight);\r
-}this.drawPanel (g, startRes, endx, 0, al.getHeight (), ypos);\r
-g.setClip (null);\r
-if (this.av.isShowAnnotation ()) {\r
-g.translate (0, cHeight + ypos + 4);\r
-if (this.annotations == null) {\r
-this.annotations =  new jalview.appletgui.AnnotationPanel (this.av);\r
-}this.annotations.drawComponent (g, startRes, endx + 1);\r
-g.translate (0, -cHeight - ypos - 4);\r
-}g.translate (-this.LABEL_WEST, 0);\r
-ypos += cHeight + this.getAnnotationHeight () + hgap;\r
-startRes += cWidth;\r
-}\r
-}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");\r
-Clazz.defineMethod (c$, "getAnnotationHeight", \r
-function () {\r
-if (!this.av.isShowAnnotation ()) {\r
-return 0;\r
-}if (this.annotations == null) {\r
-this.annotations =  new jalview.appletgui.AnnotationPanel (this.av);\r
-}return this.annotations.adjustPanelHeight ();\r
-});\r
-Clazz.defineMethod (c$, "drawPanel", \r
-($fz = function (g1, startRes, endRes, startSeq, endSeq, offset) {\r
-if (!this.av.hasHiddenColumns ()) {\r
-this.draw (g1, startRes, endRes, startSeq, endSeq, offset);\r
-} else {\r
-var screenY = 0;\r
-var blockStart = startRes;\r
-var blockEnd = endRes;\r
-if (this.av.hasHiddenColumns ()) {\r
-for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {\r
-var hideStart = region[0];\r
-var hideEnd = region[1];\r
-if (hideStart <= blockStart) {\r
-blockStart += (hideEnd - hideStart) + 1;\r
-continue;\r
-}blockEnd = hideStart - 1;\r
-g1.translate (screenY * this.avcharWidth, 0);\r
-this.draw (g1, blockStart, blockEnd, startSeq, endSeq, offset);\r
-if (this.av.getShowHiddenMarkers ()) {\r
-g1.setColor (java.awt.Color.blue);\r
-g1.drawLine ((blockEnd - blockStart + 1) * this.avcharWidth - 1, 0 + offset, (blockEnd - blockStart + 1) * this.avcharWidth - 1, (endSeq - startSeq) * this.avcharHeight + offset);\r
-}g1.translate (-screenY * this.avcharWidth, 0);\r
-screenY += blockEnd - blockStart + 1;\r
-blockStart = hideEnd + 1;\r
-}\r
-}if (screenY <= (endRes - startRes)) {\r
-blockEnd = blockStart + (endRes - startRes) - screenY;\r
-g1.translate (screenY * this.avcharWidth, 0);\r
-this.draw (g1, blockStart, blockEnd, startSeq, endSeq, offset);\r
-g1.translate (-screenY * this.avcharWidth, 0);\r
-}}}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "draw", \r
-function (g, startRes, endRes, startSeq, endSeq, offset) {\r
-g.setFont (this.av.getFont ());\r
-this.sr.prepare (g, this.av.isRenderGaps ());\r
-this.updateViewport ();\r
-var nextSeq;\r
-for (var i = startSeq; i < endSeq; i++) {\r
-nextSeq = this.av.getAlignment ().getSequenceAt (i);\r
-if (nextSeq == null) {\r
-continue;\r
-}this.sr.drawSequence (nextSeq, this.av.getAlignment ().findAllGroups (nextSeq), startRes, endRes, offset + ((i - startSeq) * this.avcharHeight));\r
-if (this.av.isShowSequenceFeatures ()) {\r
-this.fr.drawSequence (g, nextSeq, startRes, endRes, offset + ((i - startSeq) * this.avcharHeight));\r
-}if (this.searchResults != null) {\r
-var visibleResults = this.searchResults.getResults (nextSeq, startRes, endRes);\r
-if (visibleResults != null) {\r
-for (var r = 0; r < visibleResults.length; r += 2) {\r
-this.sr.drawHighlightedText (nextSeq, visibleResults[r], visibleResults[r + 1], (visibleResults[r] - startRes) * this.avcharWidth, offset + ((i - startSeq) * this.avcharHeight));\r
-}\r
-}}if (this.av.cursorMode && this.cursorY == i && this.cursorX >= startRes && this.cursorX <= endRes) {\r
-this.sr.drawCursor (nextSeq, this.cursorX, (this.cursorX - startRes) * this.avcharWidth, offset + ((i - startSeq) * this.avcharHeight));\r
-}}\r
-if (this.av.getSelectionGroup () != null || this.av.getAlignment ().getGroups ().size () > 0) {\r
-this.drawGroupsBoundaries (g, startRes, endRes, startSeq, endSeq, offset);\r
-}}, "java.awt.Graphics,~N,~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "drawGroupsBoundaries", \r
-($fz = function (g, startRes, endRes, startSeq, endSeq, offset) {\r
-var group = this.av.getSelectionGroup ();\r
-var sx = -1;\r
-var sy = -1;\r
-var ex = -1;\r
-var groupIndex = -1;\r
-if ((group == null) && (this.av.getAlignment ().getGroups ().size () > 0)) {\r
-group = this.av.getAlignment ().getGroups ().get (0);\r
-groupIndex = 0;\r
-}if (group != null) {\r
-do {\r
-var oldY = -1;\r
-var i = 0;\r
-var inGroup = false;\r
-var top = -1;\r
-var bottom = -1;\r
-var alHeight = this.av.getAlignment ().getHeight () - 1;\r
-for (i = startSeq; i < endSeq; i++) {\r
-sx = (group.getStartRes () - startRes) * this.avcharWidth;\r
-sy = offset + ((i - startSeq) * this.avcharHeight);\r
-ex = (((group.getEndRes () + 1) - group.getStartRes ()) * this.avcharWidth) - 1;\r
-if (sx + ex < 0 || sx > this.imgWidth) {\r
-continue;\r
-}if ((sx <= (endRes - startRes) * this.avcharWidth) && group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i))) {\r
-if ((bottom == -1) && (i >= alHeight || !group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i + 1)))) {\r
-bottom = sy + this.avcharHeight;\r
-}if (!inGroup) {\r
-if (((top == -1) && (i == 0)) || !group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i - 1))) {\r
-top = sy;\r
-}oldY = sy;\r
-inGroup = true;\r
-if (group === this.av.getSelectionGroup ()) {\r
-g.setColor (java.awt.Color.red);\r
-} else {\r
-g.setColor (group.getOutlineColour ());\r
-}}} else {\r
-if (inGroup) {\r
-if (sx >= 0 && sx < this.imgWidth) {\r
-g.drawLine (sx, oldY, sx, sy);\r
-}if (sx + ex < this.imgWidth) {\r
-g.drawLine (sx + ex, oldY, sx + ex, sy);\r
-}if (sx < 0) {\r
-ex += sx;\r
-sx = 0;\r
-}if (sx + ex > this.imgWidth) {\r
-ex = this.imgWidth;\r
-} else if (sx + ex >= (endRes - startRes + 1) * this.avcharWidth) {\r
-ex = (endRes - startRes + 1) * this.avcharWidth;\r
-}if (top != -1) {\r
-g.drawLine (sx, top, sx + ex, top);\r
-top = -1;\r
-}if (bottom != -1) {\r
-g.drawLine (sx, bottom, sx + ex, bottom);\r
-bottom = -1;\r
-}inGroup = false;\r
-}}}\r
-if (inGroup) {\r
-sy = offset + ((i - startSeq) * this.avcharHeight);\r
-if (sx >= 0 && sx < this.imgWidth) {\r
-g.drawLine (sx, oldY, sx, sy);\r
-}if (sx + ex < this.imgWidth) {\r
-g.drawLine (sx + ex, oldY, sx + ex, sy);\r
-}if (sx < 0) {\r
-ex += sx;\r
-sx = 0;\r
-}if (sx + ex > this.imgWidth) {\r
-ex = this.imgWidth;\r
-} else if (sx + ex >= (endRes - startRes + 1) * this.avcharWidth) {\r
-ex = (endRes - startRes + 1) * this.avcharWidth;\r
-}if (top != -1) {\r
-g.drawLine (sx, top, sx + ex, top);\r
-top = -1;\r
-}if (bottom != -1) {\r
-g.drawLine (sx, bottom - 1, sx + ex, bottom - 1);\r
-bottom = -1;\r
-}inGroup = false;\r
-}groupIndex++;\r
-if (groupIndex >= this.av.getAlignment ().getGroups ().size ()) {\r
-break;\r
-}group = this.av.getAlignment ().getGroups ().get (groupIndex);\r
-} while (groupIndex < this.av.getAlignment ().getGroups ().size ());\r
-}}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "highlightSearchResults", \r
-function (results) {\r
-this.searchResults = results;\r
-this.repaint ();\r
-}, "jalview.datamodel.SearchResults");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel"], "jalview.appletgui.SeqCanvas", ["jalview.appletgui.AnnotationPanel", "$.FeatureRenderer", "$.PaintRefresher", "$.SequenceRenderer", "jalview.util.Comparison", "java.awt.Color"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.fr = null;
+this.sr = null;
+this.img = null;
+this.gg = null;
+this.imgWidth = 0;
+this.imgHeight = 0;
+this.av = null;
+this.searchResults = null;
+this.$fastPaint = false;
+this.cursorX = 0;
+this.cursorY = 0;
+this.avcharHeight = 0;
+this.avcharWidth = 0;
+this.lastsr = 0;
+this.LABEL_WEST = 0;
+this.LABEL_EAST = 0;
+this.annotations = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "SeqCanvas", awt2swing.Panel);
+Clazz.makeConstructor (c$, 
+function (av) {
+Clazz.superConstructor (this, jalview.appletgui.SeqCanvas, []);
+this.av = av;
+this.fr =  new jalview.appletgui.FeatureRenderer (av);
+this.sr =  new jalview.appletgui.SequenceRenderer (av);
+jalview.appletgui.PaintRefresher.Register (this, av.getSequenceSetId ());
+this.updateViewport ();
+}, "jalview.appletgui.AlignViewport");
+Clazz.defineMethod (c$, "updateViewport", 
+($fz = function () {
+this.avcharHeight = this.av.getCharHeight ();
+this.avcharWidth = this.av.getCharWidth ();
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getViewport", 
+function () {
+return this.av;
+});
+Clazz.defineMethod (c$, "getFeatureRenderer", 
+function () {
+return this.fr;
+});
+Clazz.defineMethod (c$, "getSequenceRenderer", 
+function () {
+return this.sr;
+});
+Clazz.defineMethod (c$, "drawNorthScale", 
+($fz = function (g, startx, endx, ypos) {
+var scalestartx = startx - startx % 10 + 10;
+g.setColor (java.awt.Color.black);
+for (var i = scalestartx; i < endx; i += 10) {
+var value = i;
+if (this.av.hasHiddenColumns ()) {
+value = this.av.getColumnSelection ().adjustForHiddenColumns (value);
+}g.drawString (String.valueOf (value), (i - startx - 1) * this.avcharWidth, ypos - (Clazz.doubleToInt (this.avcharHeight / 2)));
+g.drawLine (((i - startx - 1) * this.avcharWidth) + (Clazz.doubleToInt (this.avcharWidth / 2)), (ypos + 2) - (Clazz.doubleToInt (this.avcharHeight / 2)), ((i - startx - 1) * this.avcharWidth) + (Clazz.doubleToInt (this.avcharWidth / 2)), ypos - 2);
+}
+}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");
+Clazz.defineMethod (c$, "drawWestScale", 
+($fz = function (g, startx, endx, ypos) {
+var fm = this.getFontMetrics (this.av.getFont ());
+ypos += this.avcharHeight;
+if (this.av.hasHiddenColumns ()) {
+startx = this.av.getColumnSelection ().adjustForHiddenColumns (startx);
+endx = this.av.getColumnSelection ().adjustForHiddenColumns (endx);
+}var maxwidth = this.av.getAlignment ().getWidth ();
+if (this.av.hasHiddenColumns ()) {
+maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
+}for (var i = 0; i < this.av.getAlignment ().getHeight (); i++) {
+var seq = this.av.getAlignment ().getSequenceAt (i);
+var index = startx;
+var value = -1;
+while (index < endx) {
+if (jalview.util.Comparison.isGap (seq.getCharAt (index))) {
+index++;
+continue;
+}value = this.av.getAlignment ().getSequenceAt (i).findPosition (index);
+break;
+}
+if (value != -1) {
+var x = this.LABEL_WEST - fm.stringWidth (String.valueOf (value)) - Clazz.doubleToInt (this.avcharWidth / 2);
+g.drawString (value + "", x, (ypos + (i * this.avcharHeight)) - (Clazz.doubleToInt (this.avcharHeight / 5)));
+}}
+}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");
+Clazz.defineMethod (c$, "drawEastScale", 
+($fz = function (g, startx, endx, ypos) {
+ypos += this.avcharHeight;
+if (this.av.hasHiddenColumns ()) {
+endx = this.av.getColumnSelection ().adjustForHiddenColumns (endx);
+}var seq;
+for (var i = 0; i < this.av.getAlignment ().getHeight (); i++) {
+seq = this.av.getAlignment ().getSequenceAt (i);
+var index = endx;
+var value = -1;
+while (index > startx) {
+if (jalview.util.Comparison.isGap (seq.getCharAt (index))) {
+index--;
+continue;
+}value = seq.findPosition (index);
+break;
+}
+if (value != -1) {
+g.drawString (String.valueOf (value), 0, (ypos + (i * this.avcharHeight)) - (Clazz.doubleToInt (this.avcharHeight / 5)));
+}}
+}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");
+Clazz.defineMethod (c$, "fastPaint", 
+function (horizontal, vertical) {
+if (this.$fastPaint || this.gg == null) {
+return;
+}this.updateViewport ();
+if (this.lastsr + horizontal != this.av.startRes) {
+horizontal = this.av.startRes - this.lastsr;
+}this.lastsr = this.av.startRes;
+this.$fastPaint = true;
+this.gg.copyArea (horizontal * this.avcharWidth, vertical * this.avcharHeight, this.imgWidth - horizontal * this.avcharWidth, this.imgHeight - vertical * this.avcharHeight, -horizontal * this.avcharWidth, -vertical * this.avcharHeight);
+var sr = this.av.startRes;
+var er = this.av.endRes;
+var ss = this.av.startSeq;
+var es = this.av.endSeq;
+var transX = 0;
+var transY = 0;
+if (horizontal > 0) {
+transX = (er - sr - horizontal) * this.avcharWidth;
+sr = er - horizontal;
+} else if (horizontal < 0) {
+er = sr - horizontal;
+} else if (vertical > 0) {
+ss = es - vertical;
+if (ss < this.av.startSeq) {
+ss = this.av.startSeq;
+} else {
+transY = this.imgHeight - vertical * this.avcharHeight;
+}} else if (vertical < 0) {
+es = ss - vertical;
+if (es > this.av.endSeq) {
+es = this.av.endSeq;
+}}this.gg.translate (transX, transY);
+this.drawPanel (this.gg, sr, er, ss, es, 0);
+this.gg.translate (-transX, -transY);
+this.repaint ();
+}, "~N,~N");
+Clazz.overrideMethod (c$, "paintComponent", 
+function (g) {
+if (this.img != null && (this.$fastPaint || (this.getSize ().width != g.getClipBounds ().width) || (this.getSize ().height != g.getClipBounds ().height))) {
+g.drawImage (this.img, 0, 0, this);
+this.$fastPaint = false;
+return;
+}if (this.$fastPaint) {
+g.drawImage (this.img, 0, 0, this);
+this.$fastPaint = false;
+return;
+}this.updateViewport ();
+this.imgWidth = this.getSize ().width;
+this.imgHeight = this.getSize ().height;
+this.imgWidth -= this.imgWidth % this.avcharWidth;
+this.imgHeight -= this.imgHeight % this.avcharHeight;
+if (this.imgWidth < 1 || this.imgHeight < 1) {
+return;
+}if (this.img == null || this.imgWidth != this.img.getWidth (this) || this.imgHeight != this.img.getHeight (this)) {
+this.img = this.createImage (this.imgWidth, this.imgHeight);
+this.gg = this.img.getGraphics ();
+this.gg.setFont (this.av.getFont ());
+}this.gg.setColor (java.awt.Color.white);
+this.gg.fillRect (0, 0, this.imgWidth, this.imgHeight);
+if (this.av.getWrapAlignment ()) {
+this.drawWrappedPanel (this.gg, this.imgWidth, this.imgHeight, this.av.startRes);
+} else {
+this.drawPanel (this.gg, this.av.startRes, this.av.endRes, this.av.startSeq, this.av.endSeq, 0);
+}g.drawImage (this.img, 0, 0, this);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "getWrappedCanvasWidth", 
+function (cwidth) {
+cwidth -= cwidth % this.av.getCharWidth ();
+var fm = this.getFontMetrics (this.av.getFont ());
+this.LABEL_EAST = 0;
+this.LABEL_WEST = 0;
+if (this.av.getScaleRightWrapped ()) {
+this.LABEL_EAST = fm.stringWidth (this.getMask ());
+}if (this.av.getScaleLeftWrapped ()) {
+this.LABEL_WEST = fm.stringWidth (this.getMask ());
+}return Clazz.doubleToInt ((cwidth - this.LABEL_EAST - this.LABEL_WEST) / this.av.getCharWidth ());
+}, "~N");
+Clazz.defineMethod (c$, "getMask", 
+function () {
+var mask = "0";
+var maxWidth = 0;
+var tmp;
+var alignment = this.av.getAlignment ();
+for (var i = 0; i < alignment.getHeight (); i++) {
+tmp = alignment.getSequenceAt (i).getEnd ();
+if (tmp > maxWidth) {
+maxWidth = tmp;
+}}
+for (var i = maxWidth; i > 0; i /= 10) {
+mask += "0";
+}
+return mask;
+});
+Clazz.defineMethod (c$, "drawWrappedPanel", 
+($fz = function (g, canvasWidth, canvasHeight, startRes) {
+var al = this.av.getAlignment ();
+var fm = this.getFontMetrics (this.av.getFont ());
+if (this.av.getScaleRightWrapped ()) {
+this.LABEL_EAST = fm.stringWidth (this.getMask ());
+}if (this.av.getScaleLeftWrapped ()) {
+this.LABEL_WEST = fm.stringWidth (this.getMask ());
+}var hgap = this.avcharHeight;
+if (this.av.getScaleAboveWrapped ()) {
+hgap += this.avcharHeight;
+}var cWidth = Clazz.doubleToInt ((canvasWidth - this.LABEL_EAST - this.LABEL_WEST) / this.avcharWidth);
+var cHeight = this.av.getAlignment ().getHeight () * this.avcharHeight;
+this.av.setWrappedWidth (cWidth);
+this.av.endRes = this.av.startRes + cWidth;
+var endx;
+var ypos = hgap;
+var maxwidth = this.av.getAlignment ().getWidth () - 1;
+if (this.av.hasHiddenColumns ()) {
+maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
+}while ((ypos <= canvasHeight) && (startRes < maxwidth)) {
+endx = startRes + cWidth - 1;
+if (endx > maxwidth) {
+endx = maxwidth;
+}g.setColor (java.awt.Color.black);
+if (this.av.getScaleLeftWrapped ()) {
+this.drawWestScale (g, startRes, endx, ypos);
+}if (this.av.getScaleRightWrapped ()) {
+g.translate (canvasWidth - this.LABEL_EAST, 0);
+this.drawEastScale (g, startRes, endx, ypos);
+g.translate (-(canvasWidth - this.LABEL_EAST), 0);
+}g.translate (this.LABEL_WEST, 0);
+if (this.av.getScaleAboveWrapped ()) {
+this.drawNorthScale (g, startRes, endx, ypos);
+}if (this.av.hasHiddenColumns () && this.av.getShowHiddenMarkers ()) {
+g.setColor (java.awt.Color.blue);
+var res;
+for (var i = 0; i < this.av.getColumnSelection ().getHiddenColumns ().size (); i++) {
+res = this.av.getColumnSelection ().findHiddenRegionPosition (i) - startRes;
+if (res < 0 || res > endx - startRes) {
+continue;
+}this.gg.fillPolygon ( Clazz.newIntArray (-1, [res * this.avcharWidth - Clazz.doubleToInt (this.avcharHeight / 4), res * this.avcharWidth + Clazz.doubleToInt (this.avcharHeight / 4), res * this.avcharWidth]),  Clazz.newIntArray (-1, [ypos - (Clazz.doubleToInt (this.avcharHeight / 2)), ypos - (Clazz.doubleToInt (this.avcharHeight / 2)), ypos - (Clazz.doubleToInt (this.avcharHeight / 2)) + 8]), 3);
+}
+}if (g.getClip () == null) {
+g.setClip (0, 0, cWidth * this.avcharWidth, canvasHeight);
+}this.drawPanel (g, startRes, endx, 0, al.getHeight (), ypos);
+g.setClip (null);
+if (this.av.isShowAnnotation ()) {
+g.translate (0, cHeight + ypos + 4);
+if (this.annotations == null) {
+this.annotations =  new jalview.appletgui.AnnotationPanel (this.av);
+}this.annotations.drawComponent (g, startRes, endx + 1);
+g.translate (0, -cHeight - ypos - 4);
+}g.translate (-this.LABEL_WEST, 0);
+ypos += cHeight + this.getAnnotationHeight () + hgap;
+startRes += cWidth;
+}
+}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N");
+Clazz.defineMethod (c$, "getAnnotationHeight", 
+function () {
+if (!this.av.isShowAnnotation ()) {
+return 0;
+}if (this.annotations == null) {
+this.annotations =  new jalview.appletgui.AnnotationPanel (this.av);
+}return this.annotations.adjustPanelHeight ();
+});
+Clazz.defineMethod (c$, "drawPanel", 
+($fz = function (g1, startRes, endRes, startSeq, endSeq, offset) {
+if (!this.av.hasHiddenColumns ()) {
+this.draw (g1, startRes, endRes, startSeq, endSeq, offset);
+} else {
+var screenY = 0;
+var blockStart = startRes;
+var blockEnd = endRes;
+if (this.av.hasHiddenColumns ()) {
+for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
+var hideStart = region[0];
+var hideEnd = region[1];
+if (hideStart <= blockStart) {
+blockStart += (hideEnd - hideStart) + 1;
+continue;
+}blockEnd = hideStart - 1;
+g1.translate (screenY * this.avcharWidth, 0);
+this.draw (g1, blockStart, blockEnd, startSeq, endSeq, offset);
+if (this.av.getShowHiddenMarkers ()) {
+g1.setColor (java.awt.Color.blue);
+g1.drawLine ((blockEnd - blockStart + 1) * this.avcharWidth - 1, 0 + offset, (blockEnd - blockStart + 1) * this.avcharWidth - 1, (endSeq - startSeq) * this.avcharHeight + offset);
+}g1.translate (-screenY * this.avcharWidth, 0);
+screenY += blockEnd - blockStart + 1;
+blockStart = hideEnd + 1;
+}
+}if (screenY <= (endRes - startRes)) {
+blockEnd = blockStart + (endRes - startRes) - screenY;
+g1.translate (screenY * this.avcharWidth, 0);
+this.draw (g1, blockStart, blockEnd, startSeq, endSeq, offset);
+g1.translate (-screenY * this.avcharWidth, 0);
+}}}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "draw", 
+function (g, startRes, endRes, startSeq, endSeq, offset) {
+g.setFont (this.av.getFont ());
+this.sr.prepare (g, this.av.isRenderGaps ());
+this.updateViewport ();
+var nextSeq;
+for (var i = startSeq; i < endSeq; i++) {
+nextSeq = this.av.getAlignment ().getSequenceAt (i);
+if (nextSeq == null) {
+continue;
+}this.sr.drawSequence (nextSeq, this.av.getAlignment ().findAllGroups (nextSeq), startRes, endRes, offset + ((i - startSeq) * this.avcharHeight));
+if (this.av.isShowSequenceFeatures ()) {
+this.fr.drawSequence (g, nextSeq, startRes, endRes, offset + ((i - startSeq) * this.avcharHeight));
+}if (this.searchResults != null) {
+var visibleResults = this.searchResults.getResults (nextSeq, startRes, endRes);
+if (visibleResults != null) {
+for (var r = 0; r < visibleResults.length; r += 2) {
+this.sr.drawHighlightedText (nextSeq, visibleResults[r], visibleResults[r + 1], (visibleResults[r] - startRes) * this.avcharWidth, offset + ((i - startSeq) * this.avcharHeight));
+}
+}}if (this.av.cursorMode && this.cursorY == i && this.cursorX >= startRes && this.cursorX <= endRes) {
+this.sr.drawCursor (nextSeq, this.cursorX, (this.cursorX - startRes) * this.avcharWidth, offset + ((i - startSeq) * this.avcharHeight));
+}}
+if (this.av.getSelectionGroup () != null || this.av.getAlignment ().getGroups ().size () > 0) {
+this.drawGroupsBoundaries (g, startRes, endRes, startSeq, endSeq, offset);
+}}, "java.awt.Graphics,~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "drawGroupsBoundaries", 
+($fz = function (g, startRes, endRes, startSeq, endSeq, offset) {
+var group = this.av.getSelectionGroup ();
+var sx = -1;
+var sy = -1;
+var ex = -1;
+var groupIndex = -1;
+if ((group == null) && (this.av.getAlignment ().getGroups ().size () > 0)) {
+group = this.av.getAlignment ().getGroups ().get (0);
+groupIndex = 0;
+}if (group != null) {
+do {
+var oldY = -1;
+var i = 0;
+var inGroup = false;
+var top = -1;
+var bottom = -1;
+var alHeight = this.av.getAlignment ().getHeight () - 1;
+for (i = startSeq; i < endSeq; i++) {
+sx = (group.getStartRes () - startRes) * this.avcharWidth;
+sy = offset + ((i - startSeq) * this.avcharHeight);
+ex = (((group.getEndRes () + 1) - group.getStartRes ()) * this.avcharWidth) - 1;
+if (sx + ex < 0 || sx > this.imgWidth) {
+continue;
+}if ((sx <= (endRes - startRes) * this.avcharWidth) && group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i))) {
+if ((bottom == -1) && (i >= alHeight || !group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i + 1)))) {
+bottom = sy + this.avcharHeight;
+}if (!inGroup) {
+if (((top == -1) && (i == 0)) || !group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i - 1))) {
+top = sy;
+}oldY = sy;
+inGroup = true;
+if (group === this.av.getSelectionGroup ()) {
+g.setColor (java.awt.Color.red);
+} else {
+g.setColor (group.getOutlineColour ());
+}}} else {
+if (inGroup) {
+if (sx >= 0 && sx < this.imgWidth) {
+g.drawLine (sx, oldY, sx, sy);
+}if (sx + ex < this.imgWidth) {
+g.drawLine (sx + ex, oldY, sx + ex, sy);
+}if (sx < 0) {
+ex += sx;
+sx = 0;
+}if (sx + ex > this.imgWidth) {
+ex = this.imgWidth;
+} else if (sx + ex >= (endRes - startRes + 1) * this.avcharWidth) {
+ex = (endRes - startRes + 1) * this.avcharWidth;
+}if (top != -1) {
+g.drawLine (sx, top, sx + ex, top);
+top = -1;
+}if (bottom != -1) {
+g.drawLine (sx, bottom, sx + ex, bottom);
+bottom = -1;
+}inGroup = false;
+}}}
+if (inGroup) {
+sy = offset + ((i - startSeq) * this.avcharHeight);
+if (sx >= 0 && sx < this.imgWidth) {
+g.drawLine (sx, oldY, sx, sy);
+}if (sx + ex < this.imgWidth) {
+g.drawLine (sx + ex, oldY, sx + ex, sy);
+}if (sx < 0) {
+ex += sx;
+sx = 0;
+}if (sx + ex > this.imgWidth) {
+ex = this.imgWidth;
+} else if (sx + ex >= (endRes - startRes + 1) * this.avcharWidth) {
+ex = (endRes - startRes + 1) * this.avcharWidth;
+}if (top != -1) {
+g.drawLine (sx, top, sx + ex, top);
+top = -1;
+}if (bottom != -1) {
+g.drawLine (sx, bottom - 1, sx + ex, bottom - 1);
+bottom = -1;
+}inGroup = false;
+}groupIndex++;
+if (groupIndex >= this.av.getAlignment ().getGroups ().size ()) {
+break;
+}group = this.av.getAlignment ().getGroups ().get (groupIndex);
+} while (groupIndex < this.av.getAlignment ().getGroups ().size ());
+}}, $fz.isPrivate = true, $fz), "java.awt.Graphics,~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "highlightSearchResults", 
+function (results) {
+this.searchResults = results;
+this.repaint ();
+}, "jalview.datamodel.SearchResults");
+});
index 90a2222..f3e19d0 100644 (file)
Binary files a/bin/jalview/appletgui/SeqPanel.class and b/bin/jalview/appletgui/SeqPanel.class differ
index 7f97353..d500d0e 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "jalview.structure.SelectionListener", "$.SequenceListener", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.lang.Thread"], "jalview.appletgui.SeqPanel", ["jalview.api.AlignViewportI", "jalview.appletgui.APopupMenu", "$.AlignViewport", "$.PaintRefresher", "$.SeqCanvas", "$.SliderPanel", "$.Tooltip", "jalview.commands.EditCommand", "jalview.datamodel.ColumnSelection", "$.SearchResults", "$.SequenceGroup", "jalview.schemes.ResidueProperties", "jalview.structure.StructureSelectionManager", "jalview.util.Comparison", "$.MappingUtils", "$.MessageManager", "java.awt.BorderLayout", "$.Font", "java.lang.StringBuffer", "$.StringBuilder", "java.util.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.seqCanvas = null;\r
-this.ap = null;\r
-this.lastres = 0;\r
-this.startseq = 0;\r
-this.av = null;\r
-this.seqEditOccurred = false;\r
-this.scrollThread = null;\r
-this.mouseDragging = false;\r
-this.editingSeqs = false;\r
-this.groupEditing = false;\r
-this.oldSeq = -1;\r
-this.changeEndSeq = false;\r
-this.changeStartSeq = false;\r
-this.changeEndRes = false;\r
-this.changeStartRes = false;\r
-this.stretchGroup = null;\r
-this.keyboardNo1 = null;\r
-this.keyboardNo2 = null;\r
-this.mouseWheelPressed = false;\r
-this.lastMousePress = null;\r
-this.editCommand = null;\r
-this.ssm = null;\r
-this.startWrapBlock = -1;\r
-this.wrappedBlock = -1;\r
-this.lastMessage = null;\r
-this.tooltip = null;\r
-if (!Clazz.isClassDefined ("jalview.appletgui.SeqPanel.ScrollThread")) {\r
-jalview.appletgui.SeqPanel.$SeqPanel$ScrollThread$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "SeqPanel", awt2swing.Panel, [java.awt.event.MouseMotionListener, java.awt.event.MouseListener, jalview.structure.SequenceListener, jalview.structure.SelectionListener]);\r
-Clazz.makeConstructor (c$, \r
-function (avp, p) {\r
-Clazz.superConstructor (this, jalview.appletgui.SeqPanel, []);\r
-this.av = avp;\r
-this.setName ("seqPanel");\r
-this.seqCanvas =  new jalview.appletgui.SeqCanvas (avp);\r
-this.setLayout ( new java.awt.BorderLayout ());\r
-this.add (this.seqCanvas);\r
-this.ap = p;\r
-this.seqCanvas.addMouseMotionListener (this);\r
-this.seqCanvas.addMouseListener (this);\r
-this.ssm = jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet);\r
-this.ssm.addStructureViewerListener (this);\r
-this.ssm.addSelectionListener (this);\r
-this.seqCanvas.repaint ();\r
-}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");\r
-Clazz.defineMethod (c$, "endEditing", \r
-function () {\r
-if (this.editCommand != null && this.editCommand.getSize () > 0) {\r
-this.ap.alignFrame.addHistoryItem (this.editCommand);\r
-this.av.firePropertyChange ("alignment", null, this.av.getAlignment ().getSequences ());\r
-}this.startseq = -1;\r
-this.lastres = -1;\r
-this.editingSeqs = false;\r
-this.groupEditing = false;\r
-this.keyboardNo1 = null;\r
-this.keyboardNo2 = null;\r
-this.editCommand = null;\r
-});\r
-Clazz.defineMethod (c$, "setCursorRow", \r
-function () {\r
-this.seqCanvas.cursorY = this.getKeyboardNo1 () - 1;\r
-this.scrollToVisible ();\r
-});\r
-Clazz.defineMethod (c$, "setCursorColumn", \r
-function () {\r
-this.seqCanvas.cursorX = this.getKeyboardNo1 () - 1;\r
-this.scrollToVisible ();\r
-});\r
-Clazz.defineMethod (c$, "setCursorRowAndColumn", \r
-function () {\r
-if (this.keyboardNo2 == null) {\r
-this.keyboardNo2 =  new StringBuffer ();\r
-} else {\r
-this.seqCanvas.cursorX = this.getKeyboardNo1 () - 1;\r
-this.seqCanvas.cursorY = this.getKeyboardNo2 () - 1;\r
-this.scrollToVisible ();\r
-}});\r
-Clazz.defineMethod (c$, "setCursorPosition", \r
-function () {\r
-var sequence = this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY);\r
-this.seqCanvas.cursorX = sequence.findIndex (this.getKeyboardNo1 ()) - 1;\r
-this.scrollToVisible ();\r
-});\r
-Clazz.defineMethod (c$, "moveCursor", \r
-function (dx, dy) {\r
-this.seqCanvas.cursorX += dx;\r
-this.seqCanvas.cursorY += dy;\r
-if (this.av.hasHiddenColumns () && !this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX)) {\r
-var original = this.seqCanvas.cursorX - dx;\r
-var maxWidth = this.av.getAlignment ().getWidth ();\r
-while (!this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX) && this.seqCanvas.cursorX < maxWidth && this.seqCanvas.cursorX > 0) {\r
-this.seqCanvas.cursorX += dx;\r
-}\r
-if (this.seqCanvas.cursorX >= maxWidth || !this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX)) {\r
-this.seqCanvas.cursorX = original;\r
-}}this.scrollToVisible ();\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "scrollToVisible", \r
-function () {\r
-if (this.seqCanvas.cursorX < 0) {\r
-this.seqCanvas.cursorX = 0;\r
-} else if (this.seqCanvas.cursorX > this.av.getAlignment ().getWidth () - 1) {\r
-this.seqCanvas.cursorX = this.av.getAlignment ().getWidth () - 1;\r
-}if (this.seqCanvas.cursorY < 0) {\r
-this.seqCanvas.cursorY = 0;\r
-} else if (this.seqCanvas.cursorY > this.av.getAlignment ().getHeight () - 1) {\r
-this.seqCanvas.cursorY = this.av.getAlignment ().getHeight () - 1;\r
-}this.endEditing ();\r
-if (this.av.getWrapAlignment ()) {\r
-this.ap.scrollToWrappedVisible (this.seqCanvas.cursorX);\r
-} else {\r
-while (this.seqCanvas.cursorY < this.av.startSeq) {\r
-this.ap.scrollUp (true);\r
-}\r
-while (this.seqCanvas.cursorY + 1 > this.av.endSeq) {\r
-this.ap.scrollUp (false);\r
-}\r
-while (this.seqCanvas.cursorX < this.av.getColumnSelection ().adjustForHiddenColumns (this.av.startRes)) {\r
-if (!this.ap.scrollRight (false)) {\r
-break;\r
-}}\r
-while (this.seqCanvas.cursorX > this.av.getColumnSelection ().adjustForHiddenColumns (this.av.endRes)) {\r
-if (!this.ap.scrollRight (true)) {\r
-break;\r
-}}\r
-}this.setStatusMessage (this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY), this.seqCanvas.cursorX, this.seqCanvas.cursorY);\r
-this.seqCanvas.repaint ();\r
-});\r
-Clazz.defineMethod (c$, "setSelectionAreaAtCursor", \r
-function (topLeft) {\r
-var sequence = this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY);\r
-if (this.av.getSelectionGroup () != null) {\r
-var sg = this.av.getSelectionGroup ();\r
-var min = this.av.getAlignment ().getHeight ();\r
-var max = 0;\r
-for (var i = 0; i < sg.getSize (); i++) {\r
-var index = this.av.getAlignment ().findIndex (sg.getSequenceAt (i));\r
-if (index > max) {\r
-max = index;\r
-}if (index < min) {\r
-min = index;\r
-}}\r
-max++;\r
-if (topLeft) {\r
-sg.setStartRes (this.seqCanvas.cursorX);\r
-if (sg.getEndRes () < this.seqCanvas.cursorX) {\r
-sg.setEndRes (this.seqCanvas.cursorX);\r
-}min = this.seqCanvas.cursorY;\r
-} else {\r
-sg.setEndRes (this.seqCanvas.cursorX);\r
-if (sg.getStartRes () > this.seqCanvas.cursorX) {\r
-sg.setStartRes (this.seqCanvas.cursorX);\r
-}max = this.seqCanvas.cursorY + 1;\r
-}if (min > max) {\r
-this.av.setSelectionGroup (null);\r
-} else {\r
-sg.clear ();\r
-for (var i = min; i < max; i++) {\r
-sg.addSequence (this.av.getAlignment ().getSequenceAt (i), false);\r
-}\r
-}}if (this.av.getSelectionGroup () == null) {\r
-var sg =  new jalview.datamodel.SequenceGroup ();\r
-sg.setStartRes (this.seqCanvas.cursorX);\r
-sg.setEndRes (this.seqCanvas.cursorX);\r
-sg.addSequence (sequence, false);\r
-this.av.setSelectionGroup (sg);\r
-}this.ap.paintAlignment (false);\r
-this.av.sendSelection ();\r
-}, "~B");\r
-Clazz.defineMethod (c$, "insertGapAtCursor", \r
-function (group) {\r
-this.groupEditing = group;\r
-this.startseq = this.seqCanvas.cursorY;\r
-this.lastres = this.seqCanvas.cursorX;\r
-this.editSequence (true, this.seqCanvas.cursorX + this.getKeyboardNo1 ());\r
-this.endEditing ();\r
-}, "~B");\r
-Clazz.defineMethod (c$, "deleteGapAtCursor", \r
-function (group) {\r
-this.groupEditing = group;\r
-this.startseq = this.seqCanvas.cursorY;\r
-this.lastres = this.seqCanvas.cursorX + this.getKeyboardNo1 ();\r
-this.editSequence (false, this.seqCanvas.cursorX);\r
-this.endEditing ();\r
-}, "~B");\r
-Clazz.defineMethod (c$, "numberPressed", \r
-function (value) {\r
-if (this.keyboardNo1 == null) {\r
-this.keyboardNo1 =  new StringBuffer ();\r
-}if (this.keyboardNo2 != null) {\r
-this.keyboardNo2.append (value);\r
-} else {\r
-this.keyboardNo1.append (value);\r
-}}, "~S");\r
-Clazz.defineMethod (c$, "getKeyboardNo1", \r
-function () {\r
-try {\r
-if (this.keyboardNo1 != null) {\r
-var value = Integer.parseInt (this.keyboardNo1.toString ());\r
-this.keyboardNo1 = null;\r
-return value;\r
-}} catch (x) {\r
-if (Clazz.exceptionOf (x, Exception)) {\r
-} else {\r
-throw x;\r
-}\r
-}\r
-this.keyboardNo1 = null;\r
-return 1;\r
-});\r
-Clazz.defineMethod (c$, "getKeyboardNo2", \r
-function () {\r
-try {\r
-if (this.keyboardNo2 != null) {\r
-var value = Integer.parseInt (this.keyboardNo2.toString ());\r
-this.keyboardNo2 = null;\r
-return value;\r
-}} catch (x) {\r
-if (Clazz.exceptionOf (x, Exception)) {\r
-} else {\r
-throw x;\r
-}\r
-}\r
-this.keyboardNo2 = null;\r
-return 1;\r
-});\r
-Clazz.defineMethod (c$, "setStatusMessage", \r
-function (sequence, res, seq) {\r
-var text =  new StringBuilder (32);\r
-var seqno = seq == -1 ? "" : " " + (seq + 1);\r
-text.append ("Sequence" + seqno + " ID: " + sequence.getName ());\r
-var residue = null;\r
-var displayChar = String.valueOf (sequence.getCharAt (res));\r
-if (this.av.getAlignment ().isNucleotide ()) {\r
-residue = jalview.schemes.ResidueProperties.nucleotideName.get (displayChar);\r
-if (residue != null) {\r
-text.append (" Nucleotide: ").append (residue);\r
-}} else {\r
-residue = "X".equalsIgnoreCase (displayChar) ? "X" : jalview.schemes.ResidueProperties.aa2Triplet.get (displayChar);\r
-if (residue != null) {\r
-text.append (" Residue: ").append (residue);\r
-}}var pos = -1;\r
-if (residue != null) {\r
-pos = sequence.findPosition (res);\r
-text.append (" (").append (Integer.toString (pos)).append (")");\r
-}this.ap.alignFrame.setStatus (text.toString ());\r
-}, "jalview.datamodel.SequenceI,~N,~N");\r
-Clazz.defineMethod (c$, "setStatusMessage", \r
-($fz = function (results) {\r
-var matches = results.getResults ();\r
-if (!matches.isEmpty ()) {\r
-var m = matches.get (0);\r
-var seq = m.getSequence ();\r
-var sequenceIndex = this.av.getAlignment ().findIndex (seq);\r
-var start = m.getStart () - 1;\r
-this.setStatusMessage (seq, start, sequenceIndex);\r
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.SearchResults");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-this.lastMousePress = evt.getPoint ();\r
-if ((evt.getModifiers () & 8) == 8 && !this.av.MAC) {\r
-this.mouseWheelPressed = true;\r
-return;\r
-}if (evt.isShiftDown () || evt.isControlDown () || evt.isAltDown ()) {\r
-if (evt.isControlDown () || evt.isAltDown ()) {\r
-this.groupEditing = true;\r
-}this.editingSeqs = true;\r
-} else {\r
-this.doMousePressedDefineMode (evt);\r
-return;\r
-}var seq = this.findSeq (evt);\r
-var res = this.findRes (evt);\r
-if (seq < 0 || res < 0) {\r
-return;\r
-}if ((seq < this.av.getAlignment ().getHeight ()) && (res < this.av.getAlignment ().getSequenceAt (seq).getLength ())) {\r
-this.startseq = seq;\r
-this.lastres = res;\r
-} else {\r
-this.startseq = -1;\r
-this.lastres = -1;\r
-}return;\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-var sequence = this.av.getAlignment ().getSequenceAt (this.findSeq (evt));\r
-if (evt.getClickCount () > 1) {\r
-if (this.av.getSelectionGroup () != null && this.av.getSelectionGroup ().getSize () == 1 && this.av.getSelectionGroup ().getEndRes () - this.av.getSelectionGroup ().getStartRes () < 2) {\r
-this.av.setSelectionGroup (null);\r
-}var features = this.findFeaturesAtRes (sequence, sequence.findPosition (this.findRes (evt)));\r
-if (features != null && features.length > 0) {\r
-var highlight =  new jalview.datamodel.SearchResults ();\r
-highlight.addResult (sequence, features[0].getBegin (), features[0].getEnd ());\r
-this.seqCanvas.highlightSearchResults (highlight);\r
-}if (features != null && features.length > 0) {\r
-this.seqCanvas.getFeatureRenderer ().amendFeatures ( Clazz.newArray (-1, [sequence]), features, false, this.ap);\r
-this.seqCanvas.highlightSearchResults (null);\r
-}}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-this.mouseDragging = false;\r
-this.mouseWheelPressed = false;\r
-this.ap.paintAlignment (true);\r
-if (!this.editingSeqs) {\r
-this.doMouseReleasedDefineMode (evt);\r
-return;\r
-}this.endEditing ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "findRes", \r
-function (evt) {\r
-var res = 0;\r
-var x = evt.getX ();\r
-if (this.av.getWrapAlignment ()) {\r
-var hgap = this.av.getCharHeight ();\r
-if (this.av.getScaleAboveWrapped ()) {\r
-hgap += this.av.getCharHeight ();\r
-}var cHeight = this.av.getAlignment ().getHeight () * this.av.getCharHeight () + hgap + this.seqCanvas.getAnnotationHeight ();\r
-var y = evt.getY ();\r
-y -= hgap;\r
-x -= this.seqCanvas.LABEL_WEST;\r
-var cwidth = this.seqCanvas.getWrappedCanvasWidth (this.getSize ().width);\r
-if (cwidth < 1) {\r
-return 0;\r
-}this.wrappedBlock = Clazz.doubleToInt (y / cHeight);\r
-this.wrappedBlock += Clazz.doubleToInt (this.av.getStartRes () / cwidth);\r
-res = this.wrappedBlock * cwidth + Clazz.doubleToInt (x / this.av.getCharWidth ());\r
-} else {\r
-res = (Clazz.doubleToInt (x / this.av.getCharWidth ())) + this.av.getStartRes ();\r
-}if (this.av.hasHiddenColumns ()) {\r
-res = this.av.getColumnSelection ().adjustForHiddenColumns (res);\r
-}return res;\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "findSeq", \r
-function (evt) {\r
-var sqnum = this.findAlRow (evt);\r
-return (sqnum < 0) ? 0 : sqnum;\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "findAlRow", \r
-($fz = function (evt) {\r
-var seq = 0;\r
-var y = evt.getY ();\r
-if (this.av.getWrapAlignment ()) {\r
-var hgap = this.av.getCharHeight ();\r
-if (this.av.getScaleAboveWrapped ()) {\r
-hgap += this.av.getCharHeight ();\r
-}var cHeight = this.av.getAlignment ().getHeight () * this.av.getCharHeight () + hgap + this.seqCanvas.getAnnotationHeight ();\r
-y -= hgap;\r
-seq = Math.min (Clazz.doubleToInt ((y % cHeight) / this.av.getCharHeight ()), this.av.getAlignment ().getHeight () - 1);\r
-if (seq < 0) {\r
-seq = -1;\r
-}} else {\r
-seq = Math.min ((Clazz.doubleToInt (y / this.av.getCharHeight ())) + this.av.getStartSeq (), this.av.getAlignment ().getHeight () - 1);\r
-if (seq < 0) {\r
-seq = -1;\r
-}}return seq;\r
-}, $fz.isPrivate = true, $fz), "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "doMousePressed", \r
-function (evt) {\r
-var seq = this.findSeq (evt);\r
-var res = this.findRes (evt);\r
-if (seq < this.av.getAlignment ().getHeight () && res < this.av.getAlignment ().getSequenceAt (seq).getLength ()) {\r
-this.startseq = seq;\r
-this.lastres = res;\r
-} else {\r
-this.startseq = -1;\r
-this.lastres = -1;\r
-}return;\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseOverSequence", \r
-function (sequence, index, pos) {\r
-var tmp = sequence.hashCode () + index + "";\r
-if (this.lastMessage == null || !this.lastMessage.equals (tmp)) {\r
-this.ssm.mouseOverSequence (sequence, index, pos, this.av);\r
-}this.lastMessage = tmp;\r
-}, "jalview.datamodel.SequenceI,~N,~N");\r
-Clazz.overrideMethod (c$, "highlightSequence", \r
-function (results) {\r
-if (this.av.isFollowHighlight ()) {\r
-if (this.ap.scrollToPosition (results, true)) {\r
-this.ap.alignFrame.repaint ();\r
-}}this.setStatusMessage (results);\r
-this.seqCanvas.highlightSearchResults (results);\r
-}, "jalview.datamodel.SearchResults");\r
-Clazz.overrideMethod (c$, "getVamsasSource", \r
-function () {\r
-return this.ap == null ? null : this.ap.av;\r
-});\r
-Clazz.overrideMethod (c$, "updateColours", \r
-function (seq, index) {\r
-System.out.println ("update the seqPanel colours");\r
-}, "jalview.datamodel.SequenceI,~N");\r
-Clazz.overrideMethod (c$, "mouseMoved", \r
-function (evt) {\r
-var res = this.findRes (evt);\r
-var seq = this.findSeq (evt);\r
-if (seq >= this.av.getAlignment ().getHeight () || seq < 0 || res < 0) {\r
-if (this.tooltip != null) {\r
-this.tooltip.setTip ("");\r
-}return;\r
-}var sequence = this.av.getAlignment ().getSequenceAt (seq);\r
-if (res > sequence.getLength ()) {\r
-if (this.tooltip != null) {\r
-this.tooltip.setTip ("");\r
-}return;\r
-}var respos = sequence.findPosition (res);\r
-if (this.ssm != null) {\r
-this.mouseOverSequence (sequence, res, respos);\r
-}var text =  new StringBuilder ();\r
-text.append ("Sequence ").append (Integer.toString (seq + 1)).append (" ID: ").append (sequence.getName ());\r
-var obj = null;\r
-var ch = String.valueOf (sequence.getCharAt (res));\r
-if (this.av.getAlignment ().isNucleotide ()) {\r
-obj = jalview.schemes.ResidueProperties.nucleotideName.get (ch);\r
-if (obj != null) {\r
-text.append (" Nucleotide: ").append (obj);\r
-}} else {\r
-obj = "X".equalsIgnoreCase (ch) ? "X" : jalview.schemes.ResidueProperties.aa2Triplet.get (ch);\r
-if (obj != null) {\r
-text.append (" Residue: ").append (obj);\r
-}}if (obj != null) {\r
-text.append (" (").append (Integer.toString (respos)).append (")");\r
-}this.ap.alignFrame.setStatus (text.toString ());\r
-var tooltipText =  new StringBuilder ();\r
-var groups = this.av.getAlignment ().findAllGroups (sequence);\r
-if (groups != null) {\r
-for (var g = 0; g < groups.length; g++) {\r
-if (groups[g].getStartRes () <= res && groups[g].getEndRes () >= res) {\r
-if (!groups[g].getName ().startsWith ("JTreeGroup") && !groups[g].getName ().startsWith ("JGroup")) {\r
-tooltipText.append (groups[g].getName ()).append (" ");\r
-}if (groups[g].getDescription () != null) {\r
-tooltipText.append (groups[g].getDescription ());\r
-}tooltipText.append ("\n");\r
-}}\r
-}var allFeatures = this.findFeaturesAtRes (sequence, sequence.findPosition (res));\r
-var index = 0;\r
-while (index < allFeatures.length) {\r
-var sf = allFeatures[index];\r
-tooltipText.append (sf.getType () + " " + sf.begin + ":" + sf.end);\r
-if (sf.getDescription () != null) {\r
-tooltipText.append (" " + sf.getDescription ());\r
-}if (sf.getValue ("status") != null) {\r
-var status = sf.getValue ("status").toString ();\r
-if (status.length > 0) {\r
-tooltipText.append (" (" + sf.getValue ("status") + ")");\r
-}}tooltipText.append ("\n");\r
-index++;\r
-}\r
-if (this.tooltip == null) {\r
-this.tooltip =  new jalview.appletgui.Tooltip (tooltipText.toString (), this.seqCanvas);\r
-} else {\r
-this.tooltip.setTip (tooltipText.toString ());\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "findFeaturesAtRes", \r
-function (sequence, res) {\r
-var tmp =  new java.util.Vector ();\r
-var features = sequence.getSequenceFeatures ();\r
-if (features != null) {\r
-for (var i = 0; i < features.length; i++) {\r
-if (this.av.getFeaturesDisplayed () == null || !this.av.getFeaturesDisplayed ().isVisible (features[i].getType ())) {\r
-continue;\r
-}if (features[i].featureGroup != null && !this.seqCanvas.fr.checkGroupVisibility (features[i].featureGroup, false)) {\r
-continue;\r
-}if ((features[i].getBegin () <= res) && (features[i].getEnd () >= res)) {\r
-tmp.addElement (features[i]);\r
-}}\r
-}features =  new Array (tmp.size ());\r
-tmp.copyInto (features);\r
-return features;\r
-}, "jalview.datamodel.SequenceI,~N");\r
-Clazz.overrideMethod (c$, "mouseDragged", \r
-function (evt) {\r
-if (this.mouseWheelPressed) {\r
-var oldWidth = this.av.getCharWidth ();\r
-if (Math.abs (evt.getY () - this.lastMousePress.y) > Math.abs (evt.getX () - this.lastMousePress.x)) {\r
-var fontSize = this.av.font.getSize ();\r
-if (evt.getY () < this.lastMousePress.y && this.av.getCharHeight () > 1) {\r
-fontSize--;\r
-} else if (evt.getY () > this.lastMousePress.y) {\r
-fontSize++;\r
-}if (fontSize < 1) {\r
-fontSize = 1;\r
-}this.av.setFont ( new java.awt.Font (this.av.font.getName (), this.av.font.getStyle (), fontSize));\r
-this.av.setCharWidth (oldWidth);\r
-} else {\r
-if (evt.getX () < this.lastMousePress.x && this.av.getCharWidth () > 1) {\r
-this.av.setCharWidth (this.av.getCharWidth () - 1);\r
-} else if (evt.getX () > this.lastMousePress.x) {\r
-this.av.setCharWidth (this.av.getCharWidth () + 1);\r
-}if (this.av.getCharWidth () < 1) {\r
-this.av.setCharWidth (1);\r
-}}this.ap.fontChanged ();\r
-var fm = this.getFontMetrics (this.av.getFont ());\r
-this.av.validCharWidth = fm.charWidth ('M') <= this.av.getCharWidth ();\r
-this.lastMousePress = evt.getPoint ();\r
-this.ap.paintAlignment (false);\r
-this.ap.annotationPanel.image = null;\r
-return;\r
-}if (!this.editingSeqs) {\r
-this.doMouseDraggedDefineMode (evt);\r
-return;\r
-}var res = this.findRes (evt);\r
-if (res < 0) {\r
-res = 0;\r
-}if ((this.lastres == -1) || (this.lastres == res)) {\r
-return;\r
-}if ((res < this.av.getAlignment ().getWidth ()) && (res < this.lastres)) {\r
-this.editSequence (false, res);\r
-} else {\r
-this.editSequence (true, res);\r
-}this.mouseDragging = true;\r
-if (this.scrollThread != null) {\r
-this.scrollThread.setEvent (evt);\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "editSequence", \r
-function (insertGap, startres) {\r
-var fixedLeft = -1;\r
-var fixedRight = -1;\r
-var fixedColumns = false;\r
-var sg = this.av.getSelectionGroup ();\r
-var seq = this.av.getAlignment ().getSequenceAt (this.startseq);\r
-if (!this.groupEditing && this.av.hasHiddenRows ()) {\r
-if (this.av.isHiddenRepSequence (seq)) {\r
-sg = this.av.getRepresentedSequences (seq);\r
-this.groupEditing = true;\r
-}}var message =  new StringBuffer ();\r
-if (this.groupEditing) {\r
-message.append (jalview.util.MessageManager.getString ("action.edit_group")).append (":");\r
-if (this.editCommand == null) {\r
-this.editCommand =  new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("action.edit_group"));\r
-}} else {\r
-message.append (jalview.util.MessageManager.getString ("label.edit_sequence")).append (" " + seq.getName ());\r
-var label = seq.getName ();\r
-if (label.length > 10) {\r
-label = label.substring (0, 10);\r
-}if (this.editCommand == null) {\r
-this.editCommand =  new jalview.commands.EditCommand (jalview.util.MessageManager.formatMessage ("label.edit_params",  Clazz.newArray (-1, [label])));\r
-}}if (insertGap) {\r
-message.append (" insert ");\r
-} else {\r
-message.append (" delete ");\r
-}message.append (Math.abs (startres - this.lastres) + " gaps.");\r
-this.ap.alignFrame.setStatus (message.toString ());\r
-if (this.groupEditing || (sg != null && sg.getSequences (this.av.getHiddenRepSequences ()).contains (seq))) {\r
-fixedColumns = true;\r
-if (sg == null) {\r
-if (!this.av.isHiddenRepSequence (seq)) {\r
-this.endEditing ();\r
-return;\r
-}sg = this.av.getRepresentedSequences (seq);\r
-}fixedLeft = sg.getStartRes ();\r
-fixedRight = sg.getEndRes ();\r
-if ((startres < fixedLeft && this.lastres >= fixedLeft) || (startres >= fixedLeft && this.lastres < fixedLeft) || (startres > fixedRight && this.lastres <= fixedRight) || (startres <= fixedRight && this.lastres > fixedRight)) {\r
-this.endEditing ();\r
-return;\r
-}if (fixedLeft > startres) {\r
-fixedRight = fixedLeft - 1;\r
-fixedLeft = 0;\r
-} else if (fixedRight < startres) {\r
-fixedLeft = fixedRight;\r
-fixedRight = -1;\r
-}}if (this.av.hasHiddenColumns ()) {\r
-fixedColumns = true;\r
-var y1 = this.av.getColumnSelection ().getHiddenBoundaryLeft (startres);\r
-var y2 = this.av.getColumnSelection ().getHiddenBoundaryRight (startres);\r
-if ((insertGap && startres > y1 && this.lastres < y1) || (!insertGap && startres < y2 && this.lastres > y2)) {\r
-this.endEditing ();\r
-return;\r
-}if (fixedLeft < y1 && (fixedRight > y2 || fixedRight == -1)) {\r
-if (startres >= y2) {\r
-fixedLeft = y2;\r
-} else {\r
-fixedRight = y2 - 1;\r
-}}}if (this.groupEditing) {\r
-var groupSeqs = sg.getSequences (this.av.getHiddenRepSequences ()).toArray ( new Array (0));\r
-if (insertGap) {\r
-if (sg.getStartRes () == 0 && sg.getEndRes () == fixedRight && sg.getEndRes () == this.av.getAlignment ().getWidth () - 1) {\r
-sg.setEndRes (this.av.getAlignment ().getWidth () + startres - this.lastres);\r
-fixedRight = sg.getEndRes ();\r
-}var blank = false;\r
-for (fixedRight = fixedRight; fixedRight > this.lastres; fixedRight--) {\r
-blank = true;\r
-for (var gs, $gs = 0, $$gs = groupSeqs; $gs < $$gs.length && ((gs = $$gs[$gs]) || true); $gs++) {\r
-for (var j = 0; j < startres - this.lastres; j++) {\r
-if (!jalview.util.Comparison.isGap (gs.getCharAt (fixedRight - j))) {\r
-blank = false;\r
-break;\r
-}}\r
-}\r
-if (blank) {\r
-break;\r
-}}\r
-if (!blank) {\r
-if (sg.getSize () == this.av.getAlignment ().getHeight ()) {\r
-if ((this.av.hasHiddenColumns () && startres < this.av.getColumnSelection ().getHiddenBoundaryRight (startres))) {\r
-this.endEditing ();\r
-return;\r
-}var alWidth = this.av.getAlignment ().getWidth ();\r
-if (this.av.hasHiddenRows ()) {\r
-var hwidth = this.av.getAlignment ().getHiddenSequences ().getWidth ();\r
-if (hwidth > alWidth) {\r
-alWidth = hwidth;\r
-}}sg.setEndRes (sg.getEndRes () + startres - this.lastres);\r
-fixedRight = alWidth + startres - this.lastres;\r
-} else {\r
-this.endEditing ();\r
-return;\r
-}}} else if (!insertGap) {\r
-for (var gs, $gs = 0, $$gs = groupSeqs; $gs < $$gs.length && ((gs = $$gs[$gs]) || true); $gs++) {\r
-for (var j = startres; j < this.lastres; j++) {\r
-if (gs.getLength () <= j) {\r
-continue;\r
-}if (!jalview.util.Comparison.isGap (gs.getCharAt (j))) {\r
-this.endEditing ();\r
-return;\r
-}}\r
-}\r
-}if (insertGap) {\r
-if (fixedColumns && fixedRight != -1) {\r
-for (var j = this.lastres; j < startres; j++) {\r
-this.insertChar (j, groupSeqs, fixedRight);\r
-}\r
-} else {\r
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, groupSeqs, startres, startres - this.lastres, this.av.getAlignment (), true);\r
-}} else {\r
-if (fixedColumns && fixedRight != -1) {\r
-for (var j = this.lastres; j > startres; j--) {\r
-this.deleteChar (startres, groupSeqs, fixedRight);\r
-}\r
-} else {\r
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, groupSeqs, startres, this.lastres - startres, this.av.getAlignment (), true);\r
-}}} else {\r
-if (insertGap) {\r
-if (fixedColumns && fixedRight != -1) {\r
-for (var j = this.lastres; j < startres; j++) {\r
-this.insertChar (j,  Clazz.newArray (-1, [seq]), fixedRight);\r
-}\r
-} else {\r
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP,  Clazz.newArray (-1, [seq]), this.lastres, startres - this.lastres, this.av.getAlignment (), true);\r
-}} else {\r
-if (fixedColumns && fixedRight != -1) {\r
-for (var j = this.lastres; j > startres; j--) {\r
-if (!jalview.util.Comparison.isGap (seq.getCharAt (startres))) {\r
-this.endEditing ();\r
-break;\r
-}this.deleteChar (startres,  Clazz.newArray (-1, [seq]), fixedRight);\r
-}\r
-} else {\r
-var max = 0;\r
-for (var m = startres; m < this.lastres; m++) {\r
-if (!jalview.util.Comparison.isGap (seq.getCharAt (m))) {\r
-break;\r
-}max++;\r
-}\r
-if (max > 0) {\r
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP,  Clazz.newArray (-1, [seq]), startres, max, this.av.getAlignment (), true);\r
-}}}}this.lastres = startres;\r
-this.seqCanvas.repaint ();\r
-}, "~B,~N");\r
-Clazz.defineMethod (c$, "insertChar", \r
-function (j, seq, fixedColumn) {\r
-var blankColumn = fixedColumn;\r
-for (var s = 0; s < seq.length; s++) {\r
-for (blankColumn = fixedColumn; blankColumn > j; blankColumn--) {\r
-if (jalview.util.Comparison.isGap (seq[s].getCharAt (blankColumn))) {\r
-break;\r
-}}\r
-if (blankColumn <= j) {\r
-blankColumn = fixedColumn;\r
-this.endEditing ();\r
-return;\r
-}}\r
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seq, blankColumn, 1, this.av.getAlignment (), true);\r
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, seq, j, 1, this.av.getAlignment (), true);\r
-}, "~N,~A,~N");\r
-Clazz.defineMethod (c$, "deleteChar", \r
-function (j, seq, fixedColumn) {\r
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seq, j, 1, this.av.getAlignment (), true);\r
-this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, seq, fixedColumn, 1, this.av.getAlignment (), true);\r
-}, "~N,~A,~N");\r
-Clazz.defineMethod (c$, "doMousePressedDefineMode", \r
-function (evt) {\r
-if (this.scrollThread != null) {\r
-this.scrollThread.running = false;\r
-this.scrollThread = null;\r
-}var res = this.findRes (evt);\r
-var seq = this.findSeq (evt);\r
-this.oldSeq = seq;\r
-this.startWrapBlock = this.wrappedBlock;\r
-if (seq == -1) {\r
-return;\r
-}var sequence = this.av.getAlignment ().getSequenceAt (seq);\r
-if (sequence == null || res > sequence.getLength ()) {\r
-return;\r
-}this.stretchGroup = this.av.getSelectionGroup ();\r
-if (this.stretchGroup == null) {\r
-this.stretchGroup = this.av.getAlignment ().findGroup (sequence);\r
-if (this.stretchGroup != null && res > this.stretchGroup.getStartRes () && res < this.stretchGroup.getEndRes ()) {\r
-this.av.setSelectionGroup (this.stretchGroup);\r
-} else {\r
-this.stretchGroup = null;\r
-}} else if (!this.stretchGroup.getSequences (null).contains (sequence) || this.stretchGroup.getStartRes () > res || this.stretchGroup.getEndRes () < res) {\r
-this.stretchGroup = null;\r
-var allGroups = this.av.getAlignment ().findAllGroups (sequence);\r
-if (allGroups != null) {\r
-for (var i = 0; i < allGroups.length; i++) {\r
-if (allGroups[i].getStartRes () <= res && allGroups[i].getEndRes () >= res) {\r
-this.stretchGroup = allGroups[i];\r
-break;\r
-}}\r
-}this.av.setSelectionGroup (this.stretchGroup);\r
-}if ((evt.getModifiers () & 4) == 4) {\r
-var allFeatures = this.findFeaturesAtRes (sequence, sequence.findPosition (res));\r
-var links = null;\r
-if (allFeatures != null) {\r
-for (var i = 0; i < allFeatures.length; i++) {\r
-if (allFeatures[i].links != null) {\r
-if (links == null) {\r
-links =  new java.util.Vector ();\r
-}for (var j = 0; j < allFeatures[i].links.size (); j++) {\r
-links.addElement (allFeatures[i].links.elementAt (j));\r
-}\r
-}}\r
-}var popup =  new jalview.appletgui.APopupMenu (this.ap, null, links);\r
-this.add (popup);\r
-popup.show (this, evt.getX (), evt.getY ());\r
-return;\r
-}if (this.av.cursorMode) {\r
-this.seqCanvas.cursorX = this.findRes (evt);\r
-this.seqCanvas.cursorY = this.findSeq (evt);\r
-this.seqCanvas.repaint ();\r
-return;\r
-}if (this.stretchGroup == null) {\r
-var sg =  new jalview.datamodel.SequenceGroup ();\r
-sg.setStartRes (res);\r
-sg.setEndRes (res);\r
-sg.addSequence (sequence, false);\r
-this.av.setSelectionGroup (sg);\r
-this.stretchGroup = sg;\r
-if (this.av.getConservationSelected ()) {\r
-jalview.appletgui.SliderPanel.setConservationSlider (this.ap, this.av.getGlobalColourScheme (), "Background");\r
-}if (this.av.getAbovePIDThreshold ()) {\r
-jalview.appletgui.SliderPanel.setPIDSliderSource (this.ap, this.av.getGlobalColourScheme (), "Background");\r
-}}}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "doMouseReleasedDefineMode", \r
-function (evt) {\r
-if (this.stretchGroup == null) {\r
-return;\r
-}this.stretchGroup.recalcConservation ();\r
-if (this.stretchGroup.cs != null) {\r
-this.stretchGroup.cs.alignmentChanged (this.stretchGroup, this.av.getHiddenRepSequences ());\r
-if (this.stretchGroup.cs.conservationApplied ()) {\r
-jalview.appletgui.SliderPanel.setConservationSlider (this.ap, this.stretchGroup.cs, this.stretchGroup.getName ());\r
-} else {\r
-jalview.appletgui.SliderPanel.setPIDSliderSource (this.ap, this.stretchGroup.cs, this.stretchGroup.getName ());\r
-}}this.changeEndRes = false;\r
-this.changeStartRes = false;\r
-this.stretchGroup = null;\r
-jalview.appletgui.PaintRefresher.Refresh (this.ap, this.av.getSequenceSetId ());\r
-this.ap.paintAlignment (true);\r
-this.av.sendSelection ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "doMouseDraggedDefineMode", \r
-function (evt) {\r
-var res = this.findRes (evt);\r
-var y = this.findSeq (evt);\r
-if (this.wrappedBlock != this.startWrapBlock) {\r
-return;\r
-}if (this.stretchGroup == null) {\r
-return;\r
-}this.mouseDragging = true;\r
-if (y > this.av.getAlignment ().getHeight ()) {\r
-y = this.av.getAlignment ().getHeight () - 1;\r
-}if (res >= this.av.getAlignment ().getWidth ()) {\r
-res = this.av.getAlignment ().getWidth () - 1;\r
-}if (this.stretchGroup.getEndRes () == res) {\r
-this.changeEndRes = true;\r
-} else if (this.stretchGroup.getStartRes () == res) {\r
-this.changeStartRes = true;\r
-}if (res < 0) {\r
-res = 0;\r
-}if (this.changeEndRes) {\r
-if (res > (this.stretchGroup.getStartRes () - 1)) {\r
-this.stretchGroup.setEndRes (res);\r
-}} else if (this.changeStartRes) {\r
-if (res < (this.stretchGroup.getEndRes () + 1)) {\r
-this.stretchGroup.setStartRes (res);\r
-}}var dragDirection = 0;\r
-if (y > this.oldSeq) {\r
-dragDirection = 1;\r
-} else if (y < this.oldSeq) {\r
-dragDirection = -1;\r
-}while ((y != this.oldSeq) && (this.oldSeq > -1) && (y < this.av.getAlignment ().getHeight ())) {\r
-var seq = this.av.getAlignment ().getSequenceAt (this.oldSeq);\r
-this.oldSeq += dragDirection;\r
-if (this.oldSeq < 0) {\r
-break;\r
-}var nextSeq = this.av.getAlignment ().getSequenceAt (this.oldSeq);\r
-if (this.stretchGroup.getSequences (null).contains (nextSeq)) {\r
-this.stretchGroup.deleteSequence (seq, false);\r
-} else {\r
-if (seq != null) {\r
-this.stretchGroup.addSequence (seq, false);\r
-}this.stretchGroup.addSequence (nextSeq, false);\r
-}}\r
-if (this.oldSeq < 0) {\r
-this.oldSeq = -1;\r
-}if (res > this.av.endRes || res < this.av.startRes || y < this.av.startSeq || y > this.av.endSeq) {\r
-this.mouseExited (evt);\r
-}if (this.scrollThread != null) {\r
-this.scrollThread.setEvent (evt);\r
-}this.seqCanvas.repaint ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (e) {\r
-if (this.oldSeq < 0) {\r
-this.oldSeq = 0;\r
-}if (this.scrollThread != null) {\r
-this.scrollThread.running = false;\r
-this.scrollThread = null;\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (e) {\r
-if (this.av.getWrapAlignment ()) {\r
-return;\r
-}if (this.mouseDragging && this.scrollThread == null) {\r
-this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.SeqPanel.ScrollThread, this, null);\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "scrollCanvas", \r
-function (evt) {\r
-if (evt == null) {\r
-if (this.scrollThread != null) {\r
-this.scrollThread.running = false;\r
-this.scrollThread = null;\r
-}this.mouseDragging = false;\r
-} else {\r
-if (this.scrollThread == null) {\r
-this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.SeqPanel.ScrollThread, this, null);\r
-}this.mouseDragging = true;\r
-this.scrollThread.setEvent (evt);\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "selection", \r
-function (seqsel, colsel, source) {\r
-if (this.av != null && (this.av === source || !this.av.followSelection || (Clazz.instanceOf (source, jalview.appletgui.AlignViewport) && (source).getSequenceSetId ().equals (this.av.getSequenceSetId ())))) {\r
-return;\r
-}if (this.selectionFromTranslation (seqsel, colsel, source)) {\r
-return;\r
-}var repaint = false;\r
-var copycolsel = true;\r
-if (this.av.getSelectionGroup () == null || !this.av.isSelectionGroupChanged (true)) {\r
-var sgroup = null;\r
-if (seqsel != null && seqsel.getSize () > 0) {\r
-if (this.av.getAlignment () == null) {\r
-System.out.println ("Selection message: alignviewport av SeqSetId=" + this.av.getSequenceSetId () + " ViewId=" + this.av.getViewId () + " 's alignment is NULL! returning immediatly.");\r
-return;\r
-}sgroup = seqsel.intersect (this.av.getAlignment (), (this.av.hasHiddenRows ()) ? this.av.getHiddenRepSequences () : null);\r
-if ((sgroup == null || sgroup.getSize () == 0) && (colsel == null || colsel.size () == 0)) {\r
-copycolsel = false;\r
-}}if (sgroup != null && sgroup.getSize () > 0) {\r
-this.av.setSelectionGroup (sgroup);\r
-} else {\r
-this.av.setSelectionGroup (null);\r
-}repaint = this.av.isSelectionGroupChanged (true);\r
-}if (copycolsel && (this.av.getColumnSelection () == null || !this.av.isColSelChanged (true))) {\r
-if (colsel == null || colsel.size () == 0) {\r
-if (this.av.getColumnSelection () != null) {\r
-this.av.getColumnSelection ().clear ();\r
-}} else {\r
-if (this.av.getColumnSelection () == null) {\r
-this.av.setColumnSelection ( new jalview.datamodel.ColumnSelection (colsel));\r
-} else {\r
-this.av.getColumnSelection ().setElementsFrom (colsel);\r
-}}repaint = new Boolean (repaint | this.av.isColSelChanged (true)).valueOf ();\r
-}if (copycolsel && this.av.hasHiddenColumns () && (this.av.getColumnSelection () == null || this.av.getColumnSelection ().getHiddenColumns () == null)) {\r
-System.err.println ("Bad things");\r
-}if (repaint) {\r
-this.ap.scalePanelHolder.repaint ();\r
-this.ap.repaint ();\r
-}}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");\r
-Clazz.defineMethod (c$, "scrollTo", \r
-function (row, column) {\r
-row = row < 0 ? this.ap.av.startSeq : row;\r
-column = column < 0 ? this.ap.av.startRes : column;\r
-this.ap.scrollTo (column, column, row, true, true);\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "scrollToRow", \r
-function (row) {\r
-row = row < 0 ? this.ap.av.startSeq : row;\r
-this.ap.scrollTo (this.ap.av.startRes, this.ap.av.startRes, row, true, true);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "scrollToColumn", \r
-function (column) {\r
-column = column < 0 ? this.ap.av.startRes : column;\r
-this.ap.scrollTo (column, column, this.ap.av.startSeq, true, true);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "selectionFromTranslation", \r
-function (seqsel, colsel, source) {\r
-if (!(Clazz.instanceOf (source, jalview.api.AlignViewportI))) {\r
-return false;\r
-}var sourceAv = source;\r
-if (sourceAv.getCodingComplement () !== this.av && this.av.getCodingComplement () !== sourceAv) {\r
-return false;\r
-}var sg = jalview.util.MappingUtils.mapSequenceGroup (seqsel, sourceAv, this.av);\r
-this.av.setSelectionGroup (sg);\r
-this.av.isSelectionGroupChanged (true);\r
-var cs = jalview.util.MappingUtils.mapColumnSelection (colsel, sourceAv, this.av);\r
-this.av.setColumnSelection (cs);\r
-this.av.isColSelChanged (true);\r
-this.ap.scalePanelHolder.repaint ();\r
-this.ap.repaint ();\r
-return true;\r
-}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");\r
-c$.$SeqPanel$ScrollThread$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.evt = null;\r
-this.running = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui.SeqPanel, "ScrollThread", Thread);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.appletgui.SeqPanel.ScrollThread, []);\r
-this.start ();\r
-});\r
-Clazz.defineMethod (c$, "setEvent", \r
-function (a) {\r
-this.evt = a;\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "stopScrolling", \r
-function () {\r
-this.running = false;\r
-});\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-this.running = true;\r
-while (this.running) {\r
-if (this.evt != null) {\r
-if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getY () < 0 && this.b$["jalview.appletgui.SeqPanel"].av.getStartSeq () > 0) {\r
-this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollUp (true);\r
-}if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getY () >= this.b$["jalview.appletgui.SeqPanel"].getSize ().height && this.b$["jalview.appletgui.SeqPanel"].av.getAlignment ().getHeight () > this.b$["jalview.appletgui.SeqPanel"].av.getEndSeq ()) {\r
-this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollUp (false);\r
-}if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getX () < 0) {\r
-this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollRight (false);\r
-} else if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getX () >= this.b$["jalview.appletgui.SeqPanel"].getSize ().width) {\r
-this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollRight (true);\r
-}}try {\r
-Thread.sleep (75);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "jalview.structure.SelectionListener", "$.SequenceListener", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.lang.Thread"], "jalview.appletgui.SeqPanel", ["jalview.api.AlignViewportI", "jalview.appletgui.APopupMenu", "$.AlignViewport", "$.PaintRefresher", "$.SeqCanvas", "$.SliderPanel", "$.Tooltip", "jalview.commands.EditCommand", "jalview.datamodel.ColumnSelection", "$.SearchResults", "$.SequenceGroup", "jalview.schemes.ResidueProperties", "jalview.structure.StructureSelectionManager", "jalview.util.Comparison", "$.MappingUtils", "$.MessageManager", "java.awt.BorderLayout", "$.Font", "java.lang.StringBuffer", "$.StringBuilder", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.seqCanvas = null;
+this.ap = null;
+this.lastres = 0;
+this.startseq = 0;
+this.av = null;
+this.seqEditOccurred = false;
+this.scrollThread = null;
+this.mouseDragging = false;
+this.editingSeqs = false;
+this.groupEditing = false;
+this.oldSeq = -1;
+this.changeEndSeq = false;
+this.changeStartSeq = false;
+this.changeEndRes = false;
+this.changeStartRes = false;
+this.stretchGroup = null;
+this.keyboardNo1 = null;
+this.keyboardNo2 = null;
+this.mouseWheelPressed = false;
+this.lastMousePress = null;
+this.editCommand = null;
+this.ssm = null;
+this.startWrapBlock = -1;
+this.wrappedBlock = -1;
+this.lastMessage = null;
+this.tooltip = null;
+if (!Clazz.isClassDefined ("jalview.appletgui.SeqPanel.ScrollThread")) {
+jalview.appletgui.SeqPanel.$SeqPanel$ScrollThread$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "SeqPanel", awt2swing.Panel, [java.awt.event.MouseMotionListener, java.awt.event.MouseListener, jalview.structure.SequenceListener, jalview.structure.SelectionListener]);
+Clazz.makeConstructor (c$, 
+function (avp, p) {
+Clazz.superConstructor (this, jalview.appletgui.SeqPanel, []);
+this.av = avp;
+this.setName ("seqPanel");
+this.seqCanvas =  new jalview.appletgui.SeqCanvas (avp);
+this.setLayout ( new java.awt.BorderLayout ());
+this.add (this.seqCanvas);
+this.ap = p;
+this.seqCanvas.addMouseMotionListener (this);
+this.seqCanvas.addMouseListener (this);
+this.ssm = jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet);
+this.ssm.addStructureViewerListener (this);
+this.ssm.addSelectionListener (this);
+this.seqCanvas.repaint ();
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz.defineMethod (c$, "endEditing", 
+function () {
+if (this.editCommand != null && this.editCommand.getSize () > 0) {
+this.ap.alignFrame.addHistoryItem (this.editCommand);
+this.av.firePropertyChange ("alignment", null, this.av.getAlignment ().getSequences ());
+}this.startseq = -1;
+this.lastres = -1;
+this.editingSeqs = false;
+this.groupEditing = false;
+this.keyboardNo1 = null;
+this.keyboardNo2 = null;
+this.editCommand = null;
+});
+Clazz.defineMethod (c$, "setCursorRow", 
+function () {
+this.seqCanvas.cursorY = this.getKeyboardNo1 () - 1;
+this.scrollToVisible ();
+});
+Clazz.defineMethod (c$, "setCursorColumn", 
+function () {
+this.seqCanvas.cursorX = this.getKeyboardNo1 () - 1;
+this.scrollToVisible ();
+});
+Clazz.defineMethod (c$, "setCursorRowAndColumn", 
+function () {
+if (this.keyboardNo2 == null) {
+this.keyboardNo2 =  new StringBuffer ();
+} else {
+this.seqCanvas.cursorX = this.getKeyboardNo1 () - 1;
+this.seqCanvas.cursorY = this.getKeyboardNo2 () - 1;
+this.scrollToVisible ();
+}});
+Clazz.defineMethod (c$, "setCursorPosition", 
+function () {
+var sequence = this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY);
+this.seqCanvas.cursorX = sequence.findIndex (this.getKeyboardNo1 ()) - 1;
+this.scrollToVisible ();
+});
+Clazz.defineMethod (c$, "moveCursor", 
+function (dx, dy) {
+this.seqCanvas.cursorX += dx;
+this.seqCanvas.cursorY += dy;
+if (this.av.hasHiddenColumns () && !this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX)) {
+var original = this.seqCanvas.cursorX - dx;
+var maxWidth = this.av.getAlignment ().getWidth ();
+while (!this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX) && this.seqCanvas.cursorX < maxWidth && this.seqCanvas.cursorX > 0) {
+this.seqCanvas.cursorX += dx;
+}
+if (this.seqCanvas.cursorX >= maxWidth || !this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX)) {
+this.seqCanvas.cursorX = original;
+}}this.scrollToVisible ();
+}, "~N,~N");
+Clazz.defineMethod (c$, "scrollToVisible", 
+function () {
+if (this.seqCanvas.cursorX < 0) {
+this.seqCanvas.cursorX = 0;
+} else if (this.seqCanvas.cursorX > this.av.getAlignment ().getWidth () - 1) {
+this.seqCanvas.cursorX = this.av.getAlignment ().getWidth () - 1;
+}if (this.seqCanvas.cursorY < 0) {
+this.seqCanvas.cursorY = 0;
+} else if (this.seqCanvas.cursorY > this.av.getAlignment ().getHeight () - 1) {
+this.seqCanvas.cursorY = this.av.getAlignment ().getHeight () - 1;
+}this.endEditing ();
+if (this.av.getWrapAlignment ()) {
+this.ap.scrollToWrappedVisible (this.seqCanvas.cursorX);
+} else {
+while (this.seqCanvas.cursorY < this.av.startSeq) {
+this.ap.scrollUp (true);
+}
+while (this.seqCanvas.cursorY + 1 > this.av.endSeq) {
+this.ap.scrollUp (false);
+}
+while (this.seqCanvas.cursorX < this.av.getColumnSelection ().adjustForHiddenColumns (this.av.startRes)) {
+if (!this.ap.scrollRight (false)) {
+break;
+}}
+while (this.seqCanvas.cursorX > this.av.getColumnSelection ().adjustForHiddenColumns (this.av.endRes)) {
+if (!this.ap.scrollRight (true)) {
+break;
+}}
+}this.setStatusMessage (this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY), this.seqCanvas.cursorX, this.seqCanvas.cursorY);
+this.seqCanvas.repaint ();
+});
+Clazz.defineMethod (c$, "setSelectionAreaAtCursor", 
+function (topLeft) {
+var sequence = this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY);
+if (this.av.getSelectionGroup () != null) {
+var sg = this.av.getSelectionGroup ();
+var min = this.av.getAlignment ().getHeight ();
+var max = 0;
+for (var i = 0; i < sg.getSize (); i++) {
+var index = this.av.getAlignment ().findIndex (sg.getSequenceAt (i));
+if (index > max) {
+max = index;
+}if (index < min) {
+min = index;
+}}
+max++;
+if (topLeft) {
+sg.setStartRes (this.seqCanvas.cursorX);
+if (sg.getEndRes () < this.seqCanvas.cursorX) {
+sg.setEndRes (this.seqCanvas.cursorX);
+}min = this.seqCanvas.cursorY;
+} else {
+sg.setEndRes (this.seqCanvas.cursorX);
+if (sg.getStartRes () > this.seqCanvas.cursorX) {
+sg.setStartRes (this.seqCanvas.cursorX);
+}max = this.seqCanvas.cursorY + 1;
+}if (min > max) {
+this.av.setSelectionGroup (null);
+} else {
+sg.clear ();
+for (var i = min; i < max; i++) {
+sg.addSequence (this.av.getAlignment ().getSequenceAt (i), false);
+}
+}}if (this.av.getSelectionGroup () == null) {
+var sg =  new jalview.datamodel.SequenceGroup ();
+sg.setStartRes (this.seqCanvas.cursorX);
+sg.setEndRes (this.seqCanvas.cursorX);
+sg.addSequence (sequence, false);
+this.av.setSelectionGroup (sg);
+}this.ap.paintAlignment (false);
+this.av.sendSelection ();
+}, "~B");
+Clazz.defineMethod (c$, "insertGapAtCursor", 
+function (group) {
+this.groupEditing = group;
+this.startseq = this.seqCanvas.cursorY;
+this.lastres = this.seqCanvas.cursorX;
+this.editSequence (true, this.seqCanvas.cursorX + this.getKeyboardNo1 ());
+this.endEditing ();
+}, "~B");
+Clazz.defineMethod (c$, "deleteGapAtCursor", 
+function (group) {
+this.groupEditing = group;
+this.startseq = this.seqCanvas.cursorY;
+this.lastres = this.seqCanvas.cursorX + this.getKeyboardNo1 ();
+this.editSequence (false, this.seqCanvas.cursorX);
+this.endEditing ();
+}, "~B");
+Clazz.defineMethod (c$, "numberPressed", 
+function (value) {
+if (this.keyboardNo1 == null) {
+this.keyboardNo1 =  new StringBuffer ();
+}if (this.keyboardNo2 != null) {
+this.keyboardNo2.append (value);
+} else {
+this.keyboardNo1.append (value);
+}}, "~S");
+Clazz.defineMethod (c$, "getKeyboardNo1", 
+function () {
+try {
+if (this.keyboardNo1 != null) {
+var value = Integer.parseInt (this.keyboardNo1.toString ());
+this.keyboardNo1 = null;
+return value;
+}} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+}
+this.keyboardNo1 = null;
+return 1;
+});
+Clazz.defineMethod (c$, "getKeyboardNo2", 
+function () {
+try {
+if (this.keyboardNo2 != null) {
+var value = Integer.parseInt (this.keyboardNo2.toString ());
+this.keyboardNo2 = null;
+return value;
+}} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+}
+this.keyboardNo2 = null;
+return 1;
+});
+Clazz.defineMethod (c$, "setStatusMessage", 
+function (sequence, res, seq) {
+var text =  new StringBuilder (32);
+var seqno = seq == -1 ? "" : " " + (seq + 1);
+text.append ("Sequence" + seqno + " ID: " + sequence.getName ());
+var residue = null;
+var displayChar = String.valueOf (sequence.getCharAt (res));
+if (this.av.getAlignment ().isNucleotide ()) {
+residue = jalview.schemes.ResidueProperties.nucleotideName.get (displayChar);
+if (residue != null) {
+text.append (" Nucleotide: ").append (residue);
+}} else {
+residue = "X".equalsIgnoreCase (displayChar) ? "X" : jalview.schemes.ResidueProperties.aa2Triplet.get (displayChar);
+if (residue != null) {
+text.append (" Residue: ").append (residue);
+}}var pos = -1;
+if (residue != null) {
+pos = sequence.findPosition (res);
+text.append (" (").append (Integer.toString (pos)).append (")");
+}this.ap.alignFrame.setStatus (text.toString ());
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz.defineMethod (c$, "setStatusMessage", 
+($fz = function (results) {
+var matches = results.getResults ();
+if (!matches.isEmpty ()) {
+var m = matches.get (0);
+var seq = m.getSequence ();
+var sequenceIndex = this.av.getAlignment ().findIndex (seq);
+var start = m.getStart () - 1;
+this.setStatusMessage (seq, start, sequenceIndex);
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.SearchResults");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+this.lastMousePress = evt.getPoint ();
+if ((evt.getModifiers () & 8) == 8 && !this.av.MAC) {
+this.mouseWheelPressed = true;
+return;
+}if (evt.isShiftDown () || evt.isControlDown () || evt.isAltDown ()) {
+if (evt.isControlDown () || evt.isAltDown ()) {
+this.groupEditing = true;
+}this.editingSeqs = true;
+} else {
+this.doMousePressedDefineMode (evt);
+return;
+}var seq = this.findSeq (evt);
+var res = this.findRes (evt);
+if (seq < 0 || res < 0) {
+return;
+}if ((seq < this.av.getAlignment ().getHeight ()) && (res < this.av.getAlignment ().getSequenceAt (seq).getLength ())) {
+this.startseq = seq;
+this.lastres = res;
+} else {
+this.startseq = -1;
+this.lastres = -1;
+}return;
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+var sequence = this.av.getAlignment ().getSequenceAt (this.findSeq (evt));
+if (evt.getClickCount () > 1) {
+if (this.av.getSelectionGroup () != null && this.av.getSelectionGroup ().getSize () == 1 && this.av.getSelectionGroup ().getEndRes () - this.av.getSelectionGroup ().getStartRes () < 2) {
+this.av.setSelectionGroup (null);
+}var features = this.findFeaturesAtRes (sequence, sequence.findPosition (this.findRes (evt)));
+if (features != null && features.length > 0) {
+var highlight =  new jalview.datamodel.SearchResults ();
+highlight.addResult (sequence, features[0].getBegin (), features[0].getEnd ());
+this.seqCanvas.highlightSearchResults (highlight);
+}if (features != null && features.length > 0) {
+this.seqCanvas.getFeatureRenderer ().amendFeatures ( Clazz.newArray (-1, [sequence]), features, false, this.ap);
+this.seqCanvas.highlightSearchResults (null);
+}}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.mouseDragging = false;
+this.mouseWheelPressed = false;
+this.ap.paintAlignment (true);
+if (!this.editingSeqs) {
+this.doMouseReleasedDefineMode (evt);
+return;
+}this.endEditing ();
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "findRes", 
+function (evt) {
+var res = 0;
+var x = evt.getX ();
+if (this.av.getWrapAlignment ()) {
+var hgap = this.av.getCharHeight ();
+if (this.av.getScaleAboveWrapped ()) {
+hgap += this.av.getCharHeight ();
+}var cHeight = this.av.getAlignment ().getHeight () * this.av.getCharHeight () + hgap + this.seqCanvas.getAnnotationHeight ();
+var y = evt.getY ();
+y -= hgap;
+x -= this.seqCanvas.LABEL_WEST;
+var cwidth = this.seqCanvas.getWrappedCanvasWidth (this.getSize ().width);
+if (cwidth < 1) {
+return 0;
+}this.wrappedBlock = Clazz.doubleToInt (y / cHeight);
+this.wrappedBlock += Clazz.doubleToInt (this.av.getStartRes () / cwidth);
+res = this.wrappedBlock * cwidth + Clazz.doubleToInt (x / this.av.getCharWidth ());
+} else {
+res = (Clazz.doubleToInt (x / this.av.getCharWidth ())) + this.av.getStartRes ();
+}if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+}return res;
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "findSeq", 
+function (evt) {
+var sqnum = this.findAlRow (evt);
+return (sqnum < 0) ? 0 : sqnum;
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "findAlRow", 
+($fz = function (evt) {
+var seq = 0;
+var y = evt.getY ();
+if (this.av.getWrapAlignment ()) {
+var hgap = this.av.getCharHeight ();
+if (this.av.getScaleAboveWrapped ()) {
+hgap += this.av.getCharHeight ();
+}var cHeight = this.av.getAlignment ().getHeight () * this.av.getCharHeight () + hgap + this.seqCanvas.getAnnotationHeight ();
+y -= hgap;
+seq = Math.min (Clazz.doubleToInt ((y % cHeight) / this.av.getCharHeight ()), this.av.getAlignment ().getHeight () - 1);
+if (seq < 0) {
+seq = -1;
+}} else {
+seq = Math.min ((Clazz.doubleToInt (y / this.av.getCharHeight ())) + this.av.getStartSeq (), this.av.getAlignment ().getHeight () - 1);
+if (seq < 0) {
+seq = -1;
+}}return seq;
+}, $fz.isPrivate = true, $fz), "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "doMousePressed", 
+function (evt) {
+var seq = this.findSeq (evt);
+var res = this.findRes (evt);
+if (seq < this.av.getAlignment ().getHeight () && res < this.av.getAlignment ().getSequenceAt (seq).getLength ()) {
+this.startseq = seq;
+this.lastres = res;
+} else {
+this.startseq = -1;
+this.lastres = -1;
+}return;
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseOverSequence", 
+function (sequence, index, pos) {
+var tmp = sequence.hashCode () + index + "";
+if (this.lastMessage == null || !this.lastMessage.equals (tmp)) {
+this.ssm.mouseOverSequence (sequence, index, pos, this.av);
+}this.lastMessage = tmp;
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz.overrideMethod (c$, "highlightSequence", 
+function (results) {
+if (this.av.isFollowHighlight ()) {
+if (this.ap.scrollToPosition (results, true)) {
+this.ap.alignFrame.repaint ();
+}}this.setStatusMessage (results);
+this.seqCanvas.highlightSearchResults (results);
+}, "jalview.datamodel.SearchResults");
+Clazz.overrideMethod (c$, "getVamsasSource", 
+function () {
+return this.ap == null ? null : this.ap.av;
+});
+Clazz.overrideMethod (c$, "updateColours", 
+function (seq, index) {
+System.out.println ("update the seqPanel colours");
+}, "jalview.datamodel.SequenceI,~N");
+Clazz.overrideMethod (c$, "mouseMoved", 
+function (evt) {
+var res = this.findRes (evt);
+var seq = this.findSeq (evt);
+if (seq >= this.av.getAlignment ().getHeight () || seq < 0 || res < 0) {
+if (this.tooltip != null) {
+this.tooltip.setTip ("");
+}return;
+}var sequence = this.av.getAlignment ().getSequenceAt (seq);
+if (res > sequence.getLength ()) {
+if (this.tooltip != null) {
+this.tooltip.setTip ("");
+}return;
+}var respos = sequence.findPosition (res);
+if (this.ssm != null) {
+this.mouseOverSequence (sequence, res, respos);
+}var text =  new StringBuilder ();
+text.append ("Sequence ").append (Integer.toString (seq + 1)).append (" ID: ").append (sequence.getName ());
+var obj = null;
+var ch = String.valueOf (sequence.getCharAt (res));
+if (this.av.getAlignment ().isNucleotide ()) {
+obj = jalview.schemes.ResidueProperties.nucleotideName.get (ch);
+if (obj != null) {
+text.append (" Nucleotide: ").append (obj);
+}} else {
+obj = "X".equalsIgnoreCase (ch) ? "X" : jalview.schemes.ResidueProperties.aa2Triplet.get (ch);
+if (obj != null) {
+text.append (" Residue: ").append (obj);
+}}if (obj != null) {
+text.append (" (").append (Integer.toString (respos)).append (")");
+}this.ap.alignFrame.setStatus (text.toString ());
+var tooltipText =  new StringBuilder ();
+var groups = this.av.getAlignment ().findAllGroups (sequence);
+if (groups != null) {
+for (var g = 0; g < groups.length; g++) {
+if (groups[g].getStartRes () <= res && groups[g].getEndRes () >= res) {
+if (!groups[g].getName ().startsWith ("JTreeGroup") && !groups[g].getName ().startsWith ("JGroup")) {
+tooltipText.append (groups[g].getName ()).append (" ");
+}if (groups[g].getDescription () != null) {
+tooltipText.append (groups[g].getDescription ());
+}tooltipText.append ("\n");
+}}
+}var allFeatures = this.findFeaturesAtRes (sequence, sequence.findPosition (res));
+var index = 0;
+while (index < allFeatures.length) {
+var sf = allFeatures[index];
+tooltipText.append (sf.getType () + " " + sf.begin + ":" + sf.end);
+if (sf.getDescription () != null) {
+tooltipText.append (" " + sf.getDescription ());
+}if (sf.getValue ("status") != null) {
+var status = sf.getValue ("status").toString ();
+if (status.length > 0) {
+tooltipText.append (" (" + sf.getValue ("status") + ")");
+}}tooltipText.append ("\n");
+index++;
+}
+if (this.tooltip == null) {
+this.tooltip =  new jalview.appletgui.Tooltip (tooltipText.toString (), this.seqCanvas);
+} else {
+this.tooltip.setTip (tooltipText.toString ());
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "findFeaturesAtRes", 
+function (sequence, res) {
+var tmp =  new java.util.Vector ();
+var features = sequence.getSequenceFeatures ();
+if (features != null) {
+for (var i = 0; i < features.length; i++) {
+if (this.av.getFeaturesDisplayed () == null || !this.av.getFeaturesDisplayed ().isVisible (features[i].getType ())) {
+continue;
+}if (features[i].featureGroup != null && !this.seqCanvas.fr.checkGroupVisibility (features[i].featureGroup, false)) {
+continue;
+}if ((features[i].getBegin () <= res) && (features[i].getEnd () >= res)) {
+tmp.addElement (features[i]);
+}}
+}features =  new Array (tmp.size ());
+tmp.copyInto (features);
+return features;
+}, "jalview.datamodel.SequenceI,~N");
+Clazz.overrideMethod (c$, "mouseDragged", 
+function (evt) {
+if (this.mouseWheelPressed) {
+var oldWidth = this.av.getCharWidth ();
+if (Math.abs (evt.getY () - this.lastMousePress.y) > Math.abs (evt.getX () - this.lastMousePress.x)) {
+var fontSize = this.av.font.getSize ();
+if (evt.getY () < this.lastMousePress.y && this.av.getCharHeight () > 1) {
+fontSize--;
+} else if (evt.getY () > this.lastMousePress.y) {
+fontSize++;
+}if (fontSize < 1) {
+fontSize = 1;
+}this.av.setFont ( new java.awt.Font (this.av.font.getName (), this.av.font.getStyle (), fontSize));
+this.av.setCharWidth (oldWidth);
+} else {
+if (evt.getX () < this.lastMousePress.x && this.av.getCharWidth () > 1) {
+this.av.setCharWidth (this.av.getCharWidth () - 1);
+} else if (evt.getX () > this.lastMousePress.x) {
+this.av.setCharWidth (this.av.getCharWidth () + 1);
+}if (this.av.getCharWidth () < 1) {
+this.av.setCharWidth (1);
+}}this.ap.fontChanged ();
+var fm = this.getFontMetrics (this.av.getFont ());
+this.av.validCharWidth = fm.charWidth ('M') <= this.av.getCharWidth ();
+this.lastMousePress = evt.getPoint ();
+this.ap.paintAlignment (false);
+this.ap.annotationPanel.image = null;
+return;
+}if (!this.editingSeqs) {
+this.doMouseDraggedDefineMode (evt);
+return;
+}var res = this.findRes (evt);
+if (res < 0) {
+res = 0;
+}if ((this.lastres == -1) || (this.lastres == res)) {
+return;
+}if ((res < this.av.getAlignment ().getWidth ()) && (res < this.lastres)) {
+this.editSequence (false, res);
+} else {
+this.editSequence (true, res);
+}this.mouseDragging = true;
+if (this.scrollThread != null) {
+this.scrollThread.setEvent (evt);
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "editSequence", 
+function (insertGap, startres) {
+var fixedLeft = -1;
+var fixedRight = -1;
+var fixedColumns = false;
+var sg = this.av.getSelectionGroup ();
+var seq = this.av.getAlignment ().getSequenceAt (this.startseq);
+if (!this.groupEditing && this.av.hasHiddenRows ()) {
+if (this.av.isHiddenRepSequence (seq)) {
+sg = this.av.getRepresentedSequences (seq);
+this.groupEditing = true;
+}}var message =  new StringBuffer ();
+if (this.groupEditing) {
+message.append (jalview.util.MessageManager.getString ("action.edit_group")).append (":");
+if (this.editCommand == null) {
+this.editCommand =  new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("action.edit_group"));
+}} else {
+message.append (jalview.util.MessageManager.getString ("label.edit_sequence")).append (" " + seq.getName ());
+var label = seq.getName ();
+if (label.length > 10) {
+label = label.substring (0, 10);
+}if (this.editCommand == null) {
+this.editCommand =  new jalview.commands.EditCommand (jalview.util.MessageManager.formatMessage ("label.edit_params",  Clazz.newArray (-1, [label])));
+}}if (insertGap) {
+message.append (" insert ");
+} else {
+message.append (" delete ");
+}message.append (Math.abs (startres - this.lastres) + " gaps.");
+this.ap.alignFrame.setStatus (message.toString ());
+if (this.groupEditing || (sg != null && sg.getSequences (this.av.getHiddenRepSequences ()).contains (seq))) {
+fixedColumns = true;
+if (sg == null) {
+if (!this.av.isHiddenRepSequence (seq)) {
+this.endEditing ();
+return;
+}sg = this.av.getRepresentedSequences (seq);
+}fixedLeft = sg.getStartRes ();
+fixedRight = sg.getEndRes ();
+if ((startres < fixedLeft && this.lastres >= fixedLeft) || (startres >= fixedLeft && this.lastres < fixedLeft) || (startres > fixedRight && this.lastres <= fixedRight) || (startres <= fixedRight && this.lastres > fixedRight)) {
+this.endEditing ();
+return;
+}if (fixedLeft > startres) {
+fixedRight = fixedLeft - 1;
+fixedLeft = 0;
+} else if (fixedRight < startres) {
+fixedLeft = fixedRight;
+fixedRight = -1;
+}}if (this.av.hasHiddenColumns ()) {
+fixedColumns = true;
+var y1 = this.av.getColumnSelection ().getHiddenBoundaryLeft (startres);
+var y2 = this.av.getColumnSelection ().getHiddenBoundaryRight (startres);
+if ((insertGap && startres > y1 && this.lastres < y1) || (!insertGap && startres < y2 && this.lastres > y2)) {
+this.endEditing ();
+return;
+}if (fixedLeft < y1 && (fixedRight > y2 || fixedRight == -1)) {
+if (startres >= y2) {
+fixedLeft = y2;
+} else {
+fixedRight = y2 - 1;
+}}}if (this.groupEditing) {
+var groupSeqs = sg.getSequences (this.av.getHiddenRepSequences ()).toArray ( new Array (0));
+if (insertGap) {
+if (sg.getStartRes () == 0 && sg.getEndRes () == fixedRight && sg.getEndRes () == this.av.getAlignment ().getWidth () - 1) {
+sg.setEndRes (this.av.getAlignment ().getWidth () + startres - this.lastres);
+fixedRight = sg.getEndRes ();
+}var blank = false;
+for (fixedRight = fixedRight; fixedRight > this.lastres; fixedRight--) {
+blank = true;
+for (var gs, $gs = 0, $$gs = groupSeqs; $gs < $$gs.length && ((gs = $$gs[$gs]) || true); $gs++) {
+for (var j = 0; j < startres - this.lastres; j++) {
+if (!jalview.util.Comparison.isGap (gs.getCharAt (fixedRight - j))) {
+blank = false;
+break;
+}}
+}
+if (blank) {
+break;
+}}
+if (!blank) {
+if (sg.getSize () == this.av.getAlignment ().getHeight ()) {
+if ((this.av.hasHiddenColumns () && startres < this.av.getColumnSelection ().getHiddenBoundaryRight (startres))) {
+this.endEditing ();
+return;
+}var alWidth = this.av.getAlignment ().getWidth ();
+if (this.av.hasHiddenRows ()) {
+var hwidth = this.av.getAlignment ().getHiddenSequences ().getWidth ();
+if (hwidth > alWidth) {
+alWidth = hwidth;
+}}sg.setEndRes (sg.getEndRes () + startres - this.lastres);
+fixedRight = alWidth + startres - this.lastres;
+} else {
+this.endEditing ();
+return;
+}}} else if (!insertGap) {
+for (var gs, $gs = 0, $$gs = groupSeqs; $gs < $$gs.length && ((gs = $$gs[$gs]) || true); $gs++) {
+for (var j = startres; j < this.lastres; j++) {
+if (gs.getLength () <= j) {
+continue;
+}if (!jalview.util.Comparison.isGap (gs.getCharAt (j))) {
+this.endEditing ();
+return;
+}}
+}
+}if (insertGap) {
+if (fixedColumns && fixedRight != -1) {
+for (var j = this.lastres; j < startres; j++) {
+this.insertChar (j, groupSeqs, fixedRight);
+}
+} else {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, groupSeqs, startres, startres - this.lastres, this.av.getAlignment (), true);
+}} else {
+if (fixedColumns && fixedRight != -1) {
+for (var j = this.lastres; j > startres; j--) {
+this.deleteChar (startres, groupSeqs, fixedRight);
+}
+} else {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, groupSeqs, startres, this.lastres - startres, this.av.getAlignment (), true);
+}}} else {
+if (insertGap) {
+if (fixedColumns && fixedRight != -1) {
+for (var j = this.lastres; j < startres; j++) {
+this.insertChar (j,  Clazz.newArray (-1, [seq]), fixedRight);
+}
+} else {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP,  Clazz.newArray (-1, [seq]), this.lastres, startres - this.lastres, this.av.getAlignment (), true);
+}} else {
+if (fixedColumns && fixedRight != -1) {
+for (var j = this.lastres; j > startres; j--) {
+if (!jalview.util.Comparison.isGap (seq.getCharAt (startres))) {
+this.endEditing ();
+break;
+}this.deleteChar (startres,  Clazz.newArray (-1, [seq]), fixedRight);
+}
+} else {
+var max = 0;
+for (var m = startres; m < this.lastres; m++) {
+if (!jalview.util.Comparison.isGap (seq.getCharAt (m))) {
+break;
+}max++;
+}
+if (max > 0) {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP,  Clazz.newArray (-1, [seq]), startres, max, this.av.getAlignment (), true);
+}}}}this.lastres = startres;
+this.seqCanvas.repaint ();
+}, "~B,~N");
+Clazz.defineMethod (c$, "insertChar", 
+function (j, seq, fixedColumn) {
+var blankColumn = fixedColumn;
+for (var s = 0; s < seq.length; s++) {
+for (blankColumn = fixedColumn; blankColumn > j; blankColumn--) {
+if (jalview.util.Comparison.isGap (seq[s].getCharAt (blankColumn))) {
+break;
+}}
+if (blankColumn <= j) {
+blankColumn = fixedColumn;
+this.endEditing ();
+return;
+}}
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seq, blankColumn, 1, this.av.getAlignment (), true);
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, seq, j, 1, this.av.getAlignment (), true);
+}, "~N,~A,~N");
+Clazz.defineMethod (c$, "deleteChar", 
+function (j, seq, fixedColumn) {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seq, j, 1, this.av.getAlignment (), true);
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, seq, fixedColumn, 1, this.av.getAlignment (), true);
+}, "~N,~A,~N");
+Clazz.defineMethod (c$, "doMousePressedDefineMode", 
+function (evt) {
+if (this.scrollThread != null) {
+this.scrollThread.running = false;
+this.scrollThread = null;
+}var res = this.findRes (evt);
+var seq = this.findSeq (evt);
+this.oldSeq = seq;
+this.startWrapBlock = this.wrappedBlock;
+if (seq == -1) {
+return;
+}var sequence = this.av.getAlignment ().getSequenceAt (seq);
+if (sequence == null || res > sequence.getLength ()) {
+return;
+}this.stretchGroup = this.av.getSelectionGroup ();
+if (this.stretchGroup == null) {
+this.stretchGroup = this.av.getAlignment ().findGroup (sequence);
+if (this.stretchGroup != null && res > this.stretchGroup.getStartRes () && res < this.stretchGroup.getEndRes ()) {
+this.av.setSelectionGroup (this.stretchGroup);
+} else {
+this.stretchGroup = null;
+}} else if (!this.stretchGroup.getSequences (null).contains (sequence) || this.stretchGroup.getStartRes () > res || this.stretchGroup.getEndRes () < res) {
+this.stretchGroup = null;
+var allGroups = this.av.getAlignment ().findAllGroups (sequence);
+if (allGroups != null) {
+for (var i = 0; i < allGroups.length; i++) {
+if (allGroups[i].getStartRes () <= res && allGroups[i].getEndRes () >= res) {
+this.stretchGroup = allGroups[i];
+break;
+}}
+}this.av.setSelectionGroup (this.stretchGroup);
+}if ((evt.getModifiers () & 4) == 4) {
+var allFeatures = this.findFeaturesAtRes (sequence, sequence.findPosition (res));
+var links = null;
+if (allFeatures != null) {
+for (var i = 0; i < allFeatures.length; i++) {
+if (allFeatures[i].links != null) {
+if (links == null) {
+links =  new java.util.Vector ();
+}for (var j = 0; j < allFeatures[i].links.size (); j++) {
+links.addElement (allFeatures[i].links.elementAt (j));
+}
+}}
+}var popup =  new jalview.appletgui.APopupMenu (this.ap, null, links);
+this.add (popup);
+popup.show (this, evt.getX (), evt.getY ());
+return;
+}if (this.av.cursorMode) {
+this.seqCanvas.cursorX = this.findRes (evt);
+this.seqCanvas.cursorY = this.findSeq (evt);
+this.seqCanvas.repaint ();
+return;
+}if (this.stretchGroup == null) {
+var sg =  new jalview.datamodel.SequenceGroup ();
+sg.setStartRes (res);
+sg.setEndRes (res);
+sg.addSequence (sequence, false);
+this.av.setSelectionGroup (sg);
+this.stretchGroup = sg;
+if (this.av.getConservationSelected ()) {
+jalview.appletgui.SliderPanel.setConservationSlider (this.ap, this.av.getGlobalColourScheme (), "Background");
+}if (this.av.getAbovePIDThreshold ()) {
+jalview.appletgui.SliderPanel.setPIDSliderSource (this.ap, this.av.getGlobalColourScheme (), "Background");
+}}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "doMouseReleasedDefineMode", 
+function (evt) {
+if (this.stretchGroup == null) {
+return;
+}this.stretchGroup.recalcConservation ();
+if (this.stretchGroup.cs != null) {
+this.stretchGroup.cs.alignmentChanged (this.stretchGroup, this.av.getHiddenRepSequences ());
+if (this.stretchGroup.cs.conservationApplied ()) {
+jalview.appletgui.SliderPanel.setConservationSlider (this.ap, this.stretchGroup.cs, this.stretchGroup.getName ());
+} else {
+jalview.appletgui.SliderPanel.setPIDSliderSource (this.ap, this.stretchGroup.cs, this.stretchGroup.getName ());
+}}this.changeEndRes = false;
+this.changeStartRes = false;
+this.stretchGroup = null;
+jalview.appletgui.PaintRefresher.Refresh (this.ap, this.av.getSequenceSetId ());
+this.ap.paintAlignment (true);
+this.av.sendSelection ();
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "doMouseDraggedDefineMode", 
+function (evt) {
+var res = this.findRes (evt);
+var y = this.findSeq (evt);
+if (this.wrappedBlock != this.startWrapBlock) {
+return;
+}if (this.stretchGroup == null) {
+return;
+}this.mouseDragging = true;
+if (y > this.av.getAlignment ().getHeight ()) {
+y = this.av.getAlignment ().getHeight () - 1;
+}if (res >= this.av.getAlignment ().getWidth ()) {
+res = this.av.getAlignment ().getWidth () - 1;
+}if (this.stretchGroup.getEndRes () == res) {
+this.changeEndRes = true;
+} else if (this.stretchGroup.getStartRes () == res) {
+this.changeStartRes = true;
+}if (res < 0) {
+res = 0;
+}if (this.changeEndRes) {
+if (res > (this.stretchGroup.getStartRes () - 1)) {
+this.stretchGroup.setEndRes (res);
+}} else if (this.changeStartRes) {
+if (res < (this.stretchGroup.getEndRes () + 1)) {
+this.stretchGroup.setStartRes (res);
+}}var dragDirection = 0;
+if (y > this.oldSeq) {
+dragDirection = 1;
+} else if (y < this.oldSeq) {
+dragDirection = -1;
+}while ((y != this.oldSeq) && (this.oldSeq > -1) && (y < this.av.getAlignment ().getHeight ())) {
+var seq = this.av.getAlignment ().getSequenceAt (this.oldSeq);
+this.oldSeq += dragDirection;
+if (this.oldSeq < 0) {
+break;
+}var nextSeq = this.av.getAlignment ().getSequenceAt (this.oldSeq);
+if (this.stretchGroup.getSequences (null).contains (nextSeq)) {
+this.stretchGroup.deleteSequence (seq, false);
+} else {
+if (seq != null) {
+this.stretchGroup.addSequence (seq, false);
+}this.stretchGroup.addSequence (nextSeq, false);
+}}
+if (this.oldSeq < 0) {
+this.oldSeq = -1;
+}if (res > this.av.endRes || res < this.av.startRes || y < this.av.startSeq || y > this.av.endSeq) {
+this.mouseExited (evt);
+}if (this.scrollThread != null) {
+this.scrollThread.setEvent (evt);
+}this.seqCanvas.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (e) {
+if (this.oldSeq < 0) {
+this.oldSeq = 0;
+}if (this.scrollThread != null) {
+this.scrollThread.running = false;
+this.scrollThread = null;
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (e) {
+if (this.av.getWrapAlignment ()) {
+return;
+}if (this.mouseDragging && this.scrollThread == null) {
+this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.SeqPanel.ScrollThread, this, null);
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "scrollCanvas", 
+function (evt) {
+if (evt == null) {
+if (this.scrollThread != null) {
+this.scrollThread.running = false;
+this.scrollThread = null;
+}this.mouseDragging = false;
+} else {
+if (this.scrollThread == null) {
+this.scrollThread = Clazz.innerTypeInstance (jalview.appletgui.SeqPanel.ScrollThread, this, null);
+}this.mouseDragging = true;
+this.scrollThread.setEvent (evt);
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "selection", 
+function (seqsel, colsel, source) {
+if (this.av != null && (this.av === source || !this.av.followSelection || (Clazz.instanceOf (source, jalview.appletgui.AlignViewport) && (source).getSequenceSetId ().equals (this.av.getSequenceSetId ())))) {
+return;
+}if (this.selectionFromTranslation (seqsel, colsel, source)) {
+return;
+}var repaint = false;
+var copycolsel = true;
+if (this.av.getSelectionGroup () == null || !this.av.isSelectionGroupChanged (true)) {
+var sgroup = null;
+if (seqsel != null && seqsel.getSize () > 0) {
+if (this.av.getAlignment () == null) {
+System.out.println ("Selection message: alignviewport av SeqSetId=" + this.av.getSequenceSetId () + " ViewId=" + this.av.getViewId () + " 's alignment is NULL! returning immediatly.");
+return;
+}sgroup = seqsel.intersect (this.av.getAlignment (), (this.av.hasHiddenRows ()) ? this.av.getHiddenRepSequences () : null);
+if ((sgroup == null || sgroup.getSize () == 0) && (colsel == null || colsel.size () == 0)) {
+copycolsel = false;
+}}if (sgroup != null && sgroup.getSize () > 0) {
+this.av.setSelectionGroup (sgroup);
+} else {
+this.av.setSelectionGroup (null);
+}repaint = this.av.isSelectionGroupChanged (true);
+}if (copycolsel && (this.av.getColumnSelection () == null || !this.av.isColSelChanged (true))) {
+if (colsel == null || colsel.size () == 0) {
+if (this.av.getColumnSelection () != null) {
+this.av.getColumnSelection ().clear ();
+}} else {
+if (this.av.getColumnSelection () == null) {
+this.av.setColumnSelection ( new jalview.datamodel.ColumnSelection (colsel));
+} else {
+this.av.getColumnSelection ().setElementsFrom (colsel);
+}}repaint = new Boolean (repaint | this.av.isColSelChanged (true)).valueOf ();
+}if (copycolsel && this.av.hasHiddenColumns () && (this.av.getColumnSelection () == null || this.av.getColumnSelection ().getHiddenColumns () == null)) {
+System.err.println ("Bad things");
+}if (repaint) {
+this.ap.scalePanelHolder.repaint ();
+this.ap.repaint ();
+}}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
+Clazz.defineMethod (c$, "scrollTo", 
+function (row, column) {
+row = row < 0 ? this.ap.av.startSeq : row;
+column = column < 0 ? this.ap.av.startRes : column;
+this.ap.scrollTo (column, column, row, true, true);
+}, "~N,~N");
+Clazz.defineMethod (c$, "scrollToRow", 
+function (row) {
+row = row < 0 ? this.ap.av.startSeq : row;
+this.ap.scrollTo (this.ap.av.startRes, this.ap.av.startRes, row, true, true);
+}, "~N");
+Clazz.defineMethod (c$, "scrollToColumn", 
+function (column) {
+column = column < 0 ? this.ap.av.startRes : column;
+this.ap.scrollTo (column, column, this.ap.av.startSeq, true, true);
+}, "~N");
+Clazz.defineMethod (c$, "selectionFromTranslation", 
+function (seqsel, colsel, source) {
+if (!(Clazz.instanceOf (source, jalview.api.AlignViewportI))) {
+return false;
+}var sourceAv = source;
+if (sourceAv.getCodingComplement () !== this.av && this.av.getCodingComplement () !== sourceAv) {
+return false;
+}var sg = jalview.util.MappingUtils.mapSequenceGroup (seqsel, sourceAv, this.av);
+this.av.setSelectionGroup (sg);
+this.av.isSelectionGroupChanged (true);
+var cs = jalview.util.MappingUtils.mapColumnSelection (colsel, sourceAv, this.av);
+this.av.setColumnSelection (cs);
+this.av.isColSelChanged (true);
+this.ap.scalePanelHolder.repaint ();
+this.ap.repaint ();
+return true;
+}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
+c$.$SeqPanel$ScrollThread$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.evt = null;
+this.running = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.SeqPanel, "ScrollThread", Thread);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.appletgui.SeqPanel.ScrollThread, []);
+this.start ();
+});
+Clazz.defineMethod (c$, "setEvent", 
+function (a) {
+this.evt = a;
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "stopScrolling", 
+function () {
+this.running = false;
+});
+Clazz.overrideMethod (c$, "run", 
+function () {
+this.running = true;
+while (this.running) {
+if (this.evt != null) {
+if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getY () < 0 && this.b$["jalview.appletgui.SeqPanel"].av.getStartSeq () > 0) {
+this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollUp (true);
+}if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getY () >= this.b$["jalview.appletgui.SeqPanel"].getSize ().height && this.b$["jalview.appletgui.SeqPanel"].av.getAlignment ().getHeight () > this.b$["jalview.appletgui.SeqPanel"].av.getEndSeq ()) {
+this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollUp (false);
+}if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getX () < 0) {
+this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollRight (false);
+} else if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getX () >= this.b$["jalview.appletgui.SeqPanel"].getSize ().width) {
+this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollRight (true);
+}}try {
+Thread.sleep (75);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}
+});
+c$ = Clazz.p0p ();
+};
+});
index a758da7..d15b02f 100644 (file)
Binary files a/bin/jalview/appletgui/SequenceRenderer.class and b/bin/jalview/appletgui/SequenceRenderer.class differ
index 449c271..43ee455 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["jalview.api.SequenceRenderer"], "jalview.appletgui.SequenceRenderer", ["jalview.util.Comparison", "java.awt.Color", "$.Font"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.av = null;\r
-this.fm = null;\r
-this.renderGaps = true;\r
-this.currentSequenceGroup = null;\r
-this.allGroups = null;\r
-this.resBoxColour = null;\r
-this.graphics = null;\r
-this.forOverview = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "SequenceRenderer", null, jalview.api.SequenceRenderer);\r
-Clazz.makeConstructor (c$, \r
-function (av) {\r
-this.av = av;\r
-}, "jalview.appletgui.AlignViewport");\r
-Clazz.defineMethod (c$, "prepare", \r
-function (g, renderGaps) {\r
-this.graphics = g;\r
-this.fm = g.getFontMetrics ();\r
-this.renderGaps = renderGaps;\r
-}, "java.awt.Graphics,~B");\r
-Clazz.overrideMethod (c$, "getResidueBoxColour", \r
-function (seq, i) {\r
-this.allGroups = this.av.getAlignment ().findAllGroups (seq);\r
-if (this.inCurrentSequenceGroup (i)) {\r
-if (this.currentSequenceGroup.getDisplayBoxes ()) {\r
-this.getBoxColour (this.currentSequenceGroup.cs, seq, i);\r
-}} else if (this.av.getShowBoxes ()) {\r
-this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);\r
-}return this.resBoxColour;\r
-}, "jalview.datamodel.SequenceI,~N");\r
-Clazz.overrideMethod (c$, "getResidueColour", \r
-function (seq, position, fr) {\r
-var col = this.getResidueBoxColour (seq, position);\r
-if (fr != null) {\r
-col = fr.findFeatureColour (col, seq, position);\r
-}return col;\r
-}, "jalview.datamodel.SequenceI,~N,jalview.api.FeatureRenderer");\r
-Clazz.defineMethod (c$, "getBoxColour", \r
-function (cs, seq, i) {\r
-if (cs != null) {\r
-this.resBoxColour = cs.findColour (seq.getCharAt (i), i, seq);\r
-} else if (this.forOverview && !jalview.util.Comparison.isGap (seq.getCharAt (i))) {\r
-this.resBoxColour = java.awt.Color.lightGray;\r
-} else {\r
-this.resBoxColour = java.awt.Color.white;\r
-}}, "jalview.schemes.ColourSchemeI,jalview.datamodel.SequenceI,~N");\r
-Clazz.defineMethod (c$, "findSequenceColour", \r
-function (seq, i) {\r
-this.allGroups = this.av.getAlignment ().findAllGroups (seq);\r
-this.drawBoxes (seq, i, i, 0);\r
-return this.resBoxColour;\r
-}, "jalview.datamodel.SequenceI,~N");\r
-Clazz.defineMethod (c$, "drawSequence", \r
-function (seq, sg, start, end, y1) {\r
-if (seq == null) {\r
-return;\r
-}this.allGroups = sg;\r
-this.drawBoxes (seq, start, end, y1);\r
-if (this.av.validCharWidth) {\r
-this.drawText (seq, start, end, y1);\r
-}}, "jalview.datamodel.SequenceI,~A,~N,~N,~N");\r
-Clazz.defineMethod (c$, "drawBoxes", \r
-function (seq, start, end, y1) {\r
-var i = start;\r
-var length = seq.getLength ();\r
-var curStart = -1;\r
-var curWidth = this.av.getCharWidth ();\r
-var avCharWidth = this.av.getCharWidth ();\r
-var avCharHeight = this.av.getCharHeight ();\r
-var tempColour = null;\r
-while (i <= end) {\r
-this.resBoxColour = java.awt.Color.white;\r
-if (i < length) {\r
-if (this.inCurrentSequenceGroup (i)) {\r
-if (this.currentSequenceGroup.getDisplayBoxes ()) {\r
-this.getBoxColour (this.currentSequenceGroup.cs, seq, i);\r
-}} else if (this.av.getShowBoxes ()) {\r
-this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);\r
-}}if (this.resBoxColour !== tempColour) {\r
-if (tempColour != null) {\r
-this.graphics.fillRect (avCharWidth * (curStart - start), y1, curWidth, avCharHeight);\r
-}this.graphics.setColor (this.resBoxColour);\r
-curStart = i;\r
-curWidth = avCharWidth;\r
-tempColour = this.resBoxColour;\r
-} else {\r
-curWidth += avCharWidth;\r
-}i++;\r
-}\r
-this.graphics.fillRect (avCharWidth * (curStart - start), y1, curWidth, avCharHeight);\r
-}, "jalview.datamodel.SequenceI,~N,~N,~N");\r
-Clazz.defineMethod (c$, "drawText", \r
-function (seq, start, end, y1) {\r
-var avCharWidth = this.av.getCharWidth ();\r
-var avCharHeight = this.av.getCharHeight ();\r
-var boldFont = null;\r
-var bold = false;\r
-if (this.av.isUpperCasebold ()) {\r
-boldFont =  new java.awt.Font (this.av.getFont ().getName (), 1, avCharHeight);\r
-this.graphics.setFont (this.av.getFont ());\r
-}y1 += avCharHeight - Clazz.doubleToInt (avCharHeight / 5);\r
-var charOffset = 0;\r
-if (end + 1 >= seq.getLength ()) {\r
-end = seq.getLength () - 1;\r
-}var s = ' ';\r
-var srep = this.av.isDisplayReferenceSeq ();\r
-for (var i = start; i <= end; i++) {\r
-this.graphics.setColor (java.awt.Color.black);\r
-s = seq.getCharAt (i);\r
-if (!this.renderGaps && jalview.util.Comparison.isGap (s)) {\r
-continue;\r
-}if (this.inCurrentSequenceGroup (i)) {\r
-if (!this.currentSequenceGroup.getDisplayText ()) {\r
-continue;\r
-}if (this.currentSequenceGroup.getColourText ()) {\r
-this.getBoxColour (this.currentSequenceGroup.cs, seq, i);\r
-this.graphics.setColor (this.resBoxColour.darker ());\r
-}if (this.currentSequenceGroup.getShowNonconserved ()) {\r
-s = this.getDisplayChar (srep, i, s, '.');\r
-}} else {\r
-if (!this.av.getShowText ()) {\r
-continue;\r
-}if (this.av.getColourText ()) {\r
-this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);\r
-if (this.av.getShowBoxes ()) {\r
-this.graphics.setColor (this.resBoxColour.darker ());\r
-} else {\r
-this.graphics.setColor (this.resBoxColour);\r
-}}if (this.av.getShowUnconserved ()) {\r
-s = this.getDisplayChar (srep, i, s, '.');\r
-}}if (this.av.isUpperCasebold ()) {\r
-this.fm = this.graphics.getFontMetrics ();\r
-if ('A' <= s && s <= 'Z') {\r
-if (!bold) {\r
-this.graphics.setFont (boldFont);\r
-}bold = true;\r
-} else if (bold) {\r
-this.graphics.setFont (this.av.font);\r
-bold = false;\r
-}}charOffset = Clazz.doubleToInt ((avCharWidth - this.fm.charWidth (s)) / 2);\r
-this.graphics.drawString (String.valueOf (s), charOffset + avCharWidth * (i - start), y1);\r
-}\r
-}, "jalview.datamodel.SequenceI,~N,~N,~N");\r
-Clazz.defineMethod (c$, "getDisplayChar", \r
-($fz = function (usesrep, position, s, c) {\r
-var conschar = (usesrep) ? this.av.getAlignment ().getSeqrep ().getCharAt (position) : this.av.getAlignmentConsensusAnnotation ().annotations[position].displayCharacter.charAt (0);\r
-if (conschar != '-' && s == conschar) {\r
-s = c;\r
-}return s;\r
-}, $fz.isPrivate = true, $fz), "~B,~N,~S,~S");\r
-Clazz.defineMethod (c$, "inCurrentSequenceGroup", \r
-function (res) {\r
-if (this.allGroups == null) {\r
-return false;\r
-}for (var i = 0; i < this.allGroups.length; i++) {\r
-if (this.allGroups[i].getStartRes () <= res && this.allGroups[i].getEndRes () >= res) {\r
-this.currentSequenceGroup = this.allGroups[i];\r
-return true;\r
-}}\r
-return false;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "drawHighlightedText", \r
-function (seq, start, end, x1, y1) {\r
-var avCharWidth = this.av.getCharWidth ();\r
-var avCharHeight = this.av.getCharHeight ();\r
-var pady = Clazz.doubleToInt (avCharHeight / 5);\r
-var charOffset = 0;\r
-this.graphics.setColor (java.awt.Color.black);\r
-this.graphics.fillRect (x1, y1, avCharWidth * (end - start + 1), avCharHeight);\r
-this.graphics.setColor (java.awt.Color.white);\r
-var s = '~';\r
-if (this.av.validCharWidth) {\r
-for (var i = start; i <= end; i++) {\r
-if (i < seq.getLength ()) {\r
-s = seq.getCharAt (i);\r
-}charOffset = Clazz.doubleToInt ((avCharWidth - this.fm.charWidth (s)) / 2);\r
-this.graphics.drawString (String.valueOf (s), charOffset + x1 + avCharWidth * (i - start), y1 + avCharHeight - pady);\r
-}\r
-}}, "jalview.datamodel.SequenceI,~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "drawCursor", \r
-function (seq, res, x1, y1) {\r
-var pady = Clazz.doubleToInt (this.av.getCharHeight () / 5);\r
-var charOffset = 0;\r
-this.graphics.setColor (java.awt.Color.black);\r
-this.graphics.fillRect (x1, y1, this.av.getCharWidth (), this.av.getCharHeight ());\r
-this.graphics.setColor (java.awt.Color.white);\r
-this.graphics.setColor (java.awt.Color.white);\r
-var s = seq.getCharAt (res);\r
-if (this.av.validCharWidth) {\r
-charOffset = Clazz.doubleToInt ((this.av.getCharWidth () - this.fm.charWidth (s)) / 2);\r
-this.graphics.drawString (String.valueOf (s), charOffset + x1, (y1 + this.av.getCharHeight ()) - pady);\r
-}}, "jalview.datamodel.SequenceI,~N,~N,~N");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.api.SequenceRenderer"], "jalview.appletgui.SequenceRenderer", ["jalview.util.Comparison", "java.awt.Color", "$.Font"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.av = null;
+this.fm = null;
+this.renderGaps = true;
+this.currentSequenceGroup = null;
+this.allGroups = null;
+this.resBoxColour = null;
+this.graphics = null;
+this.forOverview = false;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "SequenceRenderer", null, jalview.api.SequenceRenderer);
+Clazz.makeConstructor (c$, 
+function (av) {
+this.av = av;
+}, "jalview.appletgui.AlignViewport");
+Clazz.defineMethod (c$, "prepare", 
+function (g, renderGaps) {
+this.graphics = g;
+this.fm = g.getFontMetrics ();
+this.renderGaps = renderGaps;
+}, "java.awt.Graphics,~B");
+Clazz.overrideMethod (c$, "getResidueBoxColour", 
+function (seq, i) {
+this.allGroups = this.av.getAlignment ().findAllGroups (seq);
+if (this.inCurrentSequenceGroup (i)) {
+if (this.currentSequenceGroup.getDisplayBoxes ()) {
+this.getBoxColour (this.currentSequenceGroup.cs, seq, i);
+}} else if (this.av.getShowBoxes ()) {
+this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);
+}return this.resBoxColour;
+}, "jalview.datamodel.SequenceI,~N");
+Clazz.overrideMethod (c$, "getResidueColour", 
+function (seq, position, fr) {
+var col = this.getResidueBoxColour (seq, position);
+if (fr != null) {
+col = fr.findFeatureColour (col, seq, position);
+}return col;
+}, "jalview.datamodel.SequenceI,~N,jalview.api.FeatureRenderer");
+Clazz.defineMethod (c$, "getBoxColour", 
+function (cs, seq, i) {
+if (cs != null) {
+this.resBoxColour = cs.findColour (seq.getCharAt (i), i, seq);
+} else if (this.forOverview && !jalview.util.Comparison.isGap (seq.getCharAt (i))) {
+this.resBoxColour = java.awt.Color.lightGray;
+} else {
+this.resBoxColour = java.awt.Color.white;
+}}, "jalview.schemes.ColourSchemeI,jalview.datamodel.SequenceI,~N");
+Clazz.defineMethod (c$, "findSequenceColour", 
+function (seq, i) {
+this.allGroups = this.av.getAlignment ().findAllGroups (seq);
+this.drawBoxes (seq, i, i, 0);
+return this.resBoxColour;
+}, "jalview.datamodel.SequenceI,~N");
+Clazz.defineMethod (c$, "drawSequence", 
+function (seq, sg, start, end, y1) {
+if (seq == null) {
+return;
+}this.allGroups = sg;
+this.drawBoxes (seq, start, end, y1);
+if (this.av.validCharWidth) {
+this.drawText (seq, start, end, y1);
+}}, "jalview.datamodel.SequenceI,~A,~N,~N,~N");
+Clazz.defineMethod (c$, "drawBoxes", 
+function (seq, start, end, y1) {
+var i = start;
+var length = seq.getLength ();
+var curStart = -1;
+var curWidth = this.av.getCharWidth ();
+var avCharWidth = this.av.getCharWidth ();
+var avCharHeight = this.av.getCharHeight ();
+var tempColour = null;
+while (i <= end) {
+this.resBoxColour = java.awt.Color.white;
+if (i < length) {
+if (this.inCurrentSequenceGroup (i)) {
+if (this.currentSequenceGroup.getDisplayBoxes ()) {
+this.getBoxColour (this.currentSequenceGroup.cs, seq, i);
+}} else if (this.av.getShowBoxes ()) {
+this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);
+}}if (this.resBoxColour !== tempColour) {
+if (tempColour != null) {
+this.graphics.fillRect (avCharWidth * (curStart - start), y1, curWidth, avCharHeight);
+}this.graphics.setColor (this.resBoxColour);
+curStart = i;
+curWidth = avCharWidth;
+tempColour = this.resBoxColour;
+} else {
+curWidth += avCharWidth;
+}i++;
+}
+this.graphics.fillRect (avCharWidth * (curStart - start), y1, curWidth, avCharHeight);
+}, "jalview.datamodel.SequenceI,~N,~N,~N");
+Clazz.defineMethod (c$, "drawText", 
+function (seq, start, end, y1) {
+var avCharWidth = this.av.getCharWidth ();
+var avCharHeight = this.av.getCharHeight ();
+var boldFont = null;
+var bold = false;
+if (this.av.isUpperCasebold ()) {
+boldFont =  new java.awt.Font (this.av.getFont ().getName (), 1, avCharHeight);
+this.graphics.setFont (this.av.getFont ());
+}y1 += avCharHeight - Clazz.doubleToInt (avCharHeight / 5);
+var charOffset = 0;
+if (end + 1 >= seq.getLength ()) {
+end = seq.getLength () - 1;
+}var s = ' ';
+var srep = this.av.isDisplayReferenceSeq ();
+for (var i = start; i <= end; i++) {
+this.graphics.setColor (java.awt.Color.black);
+s = seq.getCharAt (i);
+if (!this.renderGaps && jalview.util.Comparison.isGap (s)) {
+continue;
+}if (this.inCurrentSequenceGroup (i)) {
+if (!this.currentSequenceGroup.getDisplayText ()) {
+continue;
+}if (this.currentSequenceGroup.getColourText ()) {
+this.getBoxColour (this.currentSequenceGroup.cs, seq, i);
+this.graphics.setColor (this.resBoxColour.darker ());
+}if (this.currentSequenceGroup.getShowNonconserved ()) {
+s = this.getDisplayChar (srep, i, s, '.');
+}} else {
+if (!this.av.getShowText ()) {
+continue;
+}if (this.av.getColourText ()) {
+this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);
+if (this.av.getShowBoxes ()) {
+this.graphics.setColor (this.resBoxColour.darker ());
+} else {
+this.graphics.setColor (this.resBoxColour);
+}}if (this.av.getShowUnconserved ()) {
+s = this.getDisplayChar (srep, i, s, '.');
+}}if (this.av.isUpperCasebold ()) {
+this.fm = this.graphics.getFontMetrics ();
+if ('A' <= s && s <= 'Z') {
+if (!bold) {
+this.graphics.setFont (boldFont);
+}bold = true;
+} else if (bold) {
+this.graphics.setFont (this.av.font);
+bold = false;
+}}charOffset = Clazz.doubleToInt ((avCharWidth - this.fm.charWidth (s)) / 2);
+this.graphics.drawString (String.valueOf (s), charOffset + avCharWidth * (i - start), y1);
+}
+}, "jalview.datamodel.SequenceI,~N,~N,~N");
+Clazz.defineMethod (c$, "getDisplayChar", 
+($fz = function (usesrep, position, s, c) {
+var conschar = (usesrep) ? this.av.getAlignment ().getSeqrep ().getCharAt (position) : this.av.getAlignmentConsensusAnnotation ().annotations[position].displayCharacter.charAt (0);
+if (conschar != '-' && s == conschar) {
+s = c;
+}return s;
+}, $fz.isPrivate = true, $fz), "~B,~N,~S,~S");
+Clazz.defineMethod (c$, "inCurrentSequenceGroup", 
+function (res) {
+if (this.allGroups == null) {
+return false;
+}for (var i = 0; i < this.allGroups.length; i++) {
+if (this.allGroups[i].getStartRes () <= res && this.allGroups[i].getEndRes () >= res) {
+this.currentSequenceGroup = this.allGroups[i];
+return true;
+}}
+return false;
+}, "~N");
+Clazz.defineMethod (c$, "drawHighlightedText", 
+function (seq, start, end, x1, y1) {
+var avCharWidth = this.av.getCharWidth ();
+var avCharHeight = this.av.getCharHeight ();
+var pady = Clazz.doubleToInt (avCharHeight / 5);
+var charOffset = 0;
+this.graphics.setColor (java.awt.Color.black);
+this.graphics.fillRect (x1, y1, avCharWidth * (end - start + 1), avCharHeight);
+this.graphics.setColor (java.awt.Color.white);
+var s = '~';
+if (this.av.validCharWidth) {
+for (var i = start; i <= end; i++) {
+if (i < seq.getLength ()) {
+s = seq.getCharAt (i);
+}charOffset = Clazz.doubleToInt ((avCharWidth - this.fm.charWidth (s)) / 2);
+this.graphics.drawString (String.valueOf (s), charOffset + x1 + avCharWidth * (i - start), y1 + avCharHeight - pady);
+}
+}}, "jalview.datamodel.SequenceI,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "drawCursor", 
+function (seq, res, x1, y1) {
+var pady = Clazz.doubleToInt (this.av.getCharHeight () / 5);
+var charOffset = 0;
+this.graphics.setColor (java.awt.Color.black);
+this.graphics.fillRect (x1, y1, this.av.getCharWidth (), this.av.getCharHeight ());
+this.graphics.setColor (java.awt.Color.white);
+this.graphics.setColor (java.awt.Color.white);
+var s = seq.getCharAt (res);
+if (this.av.validCharWidth) {
+charOffset = Clazz.doubleToInt ((this.av.getCharWidth () - this.fm.charWidth (s)) / 2);
+this.graphics.drawString (String.valueOf (s), charOffset + x1, (y1 + this.av.getCharHeight ()) - pady);
+}}, "jalview.datamodel.SequenceI,~N,~N,~N");
+});
index ae2daac..58ba84c 100644 (file)
Binary files a/bin/jalview/appletgui/SliderPanel.class and b/bin/jalview/appletgui/SliderPanel.class differ
index dc38cc2..8ba7a20 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.MouseListener", "awt2swing.Button", "$.Checkbox", "$.Label", "$.Scrollbar", "$.TextField", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.SliderPanel", ["awt2swing.Frame", "jalview.bin.JalviewLite", "jalview.util.MessageManager", "java.awt.Color", "$.Font", "java.awt.event.WindowAdapter"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.ap = null;\r
-this.forConservation = true;\r
-this.cs = null;\r
-this.slider = null;\r
-this.valueField = null;\r
-this.label = null;\r
-this.jPanel1 = null;\r
-this.jPanel2 = null;\r
-this.applyButton = null;\r
-this.undoButton = null;\r
-this.flowLayout1 = null;\r
-this.allGroupsCheck = null;\r
-this.borderLayout1 = null;\r
-this.borderLayout2 = null;\r
-this.flowLayout2 = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "SliderPanel", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.MouseListener]);\r
-Clazz.prepareFields (c$, function () {\r
-this.slider =  new awt2swing.Scrollbar ();\r
-this.valueField =  new awt2swing.TextField ();\r
-this.label =  new awt2swing.Label ();\r
-this.jPanel1 =  new awt2swing.Panel ();\r
-this.jPanel2 =  new awt2swing.Panel ();\r
-this.applyButton =  new awt2swing.Button ();\r
-this.undoButton =  new awt2swing.Button ();\r
-this.flowLayout1 =  new java.awt.FlowLayout ();\r
-this.allGroupsCheck =  new awt2swing.Checkbox ();\r
-this.borderLayout1 =  new java.awt.BorderLayout ();\r
-this.borderLayout2 =  new java.awt.BorderLayout ();\r
-this.flowLayout2 =  new java.awt.FlowLayout ();\r
-});\r
-c$.setConservationSlider = Clazz.defineMethod (c$, "setConservationSlider", \r
-function (ap, cs, source) {\r
-var sp = null;\r
-if (jalview.appletgui.SliderPanel.conservationSlider == null) {\r
-sp =  new jalview.appletgui.SliderPanel (ap, cs.getConservationInc (), true, cs);\r
-jalview.appletgui.SliderPanel.conservationSlider =  new awt2swing.Frame ();\r
-jalview.appletgui.SliderPanel.conservationSlider.add (sp);\r
-} else {\r
-sp = jalview.appletgui.SliderPanel.conservationSlider.getComponent (0);\r
-sp.cs = cs;\r
-}jalview.appletgui.SliderPanel.conservationSlider.setTitle (jalview.util.MessageManager.formatMessage ("label.conservation_colour_increment",  Clazz.newArray (-1, [source])));\r
-if (ap.av.getAlignment ().getGroups () != null) {\r
-sp.setAllGroupsCheckEnabled (true);\r
-} else {\r
-sp.setAllGroupsCheckEnabled (false);\r
-}return sp.getValue ();\r
-}, "jalview.appletgui.AlignmentPanel,jalview.schemes.ColourSchemeI,~S");\r
-c$.showConservationSlider = Clazz.defineMethod (c$, "showConservationSlider", \r
-function () {\r
-try {\r
-jalview.appletgui.SliderPanel.PIDSlider.setVisible (false);\r
-jalview.appletgui.SliderPanel.PIDSlider = null;\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-if (!jalview.appletgui.SliderPanel.conservationSlider.isVisible ()) {\r
-jalview.bin.JalviewLite.addFrame (jalview.appletgui.SliderPanel.conservationSlider, jalview.appletgui.SliderPanel.conservationSlider.getTitle (), 420, 100);\r
-jalview.appletgui.SliderPanel.conservationSlider.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.SliderPanel$1") ? 0 : jalview.appletgui.SliderPanel.$SliderPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.SliderPanel$1, this, null)));\r
-}});\r
-c$.setPIDSliderSource = Clazz.defineMethod (c$, "setPIDSliderSource", \r
-function (ap, cs, source) {\r
-var pid = null;\r
-if (jalview.appletgui.SliderPanel.PIDSlider == null) {\r
-pid =  new jalview.appletgui.SliderPanel (ap, 50, false, cs);\r
-jalview.appletgui.SliderPanel.PIDSlider =  new awt2swing.Frame ();\r
-jalview.appletgui.SliderPanel.PIDSlider.add (pid);\r
-} else {\r
-pid = jalview.appletgui.SliderPanel.PIDSlider.getComponent (0);\r
-pid.cs = cs;\r
-}jalview.appletgui.SliderPanel.PIDSlider.setTitle (jalview.util.MessageManager.formatMessage ("label.percentage_identity_thereshold",  Clazz.newArray (-1, [source])));\r
-if (ap.av.getAlignment ().getGroups () != null) {\r
-pid.setAllGroupsCheckEnabled (true);\r
-} else {\r
-pid.setAllGroupsCheckEnabled (false);\r
-}return pid.getValue ();\r
-}, "jalview.appletgui.AlignmentPanel,jalview.schemes.ColourSchemeI,~S");\r
-c$.showPIDSlider = Clazz.defineMethod (c$, "showPIDSlider", \r
-function () {\r
-try {\r
-jalview.appletgui.SliderPanel.conservationSlider.setVisible (false);\r
-jalview.appletgui.SliderPanel.conservationSlider = null;\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-if (!jalview.appletgui.SliderPanel.PIDSlider.isVisible ()) {\r
-jalview.bin.JalviewLite.addFrame (jalview.appletgui.SliderPanel.PIDSlider, jalview.appletgui.SliderPanel.PIDSlider.getTitle (), 420, 100);\r
-jalview.appletgui.SliderPanel.PIDSlider.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.SliderPanel$2") ? 0 : jalview.appletgui.SliderPanel.$SliderPanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.SliderPanel$2, this, null)));\r
-}});\r
-Clazz.makeConstructor (c$, \r
-function (ap, value, forConserve, cs) {\r
-Clazz.superConstructor (this, jalview.appletgui.SliderPanel, []);\r
-try {\r
-this.jbInit ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.ap = ap;\r
-this.cs = cs;\r
-this.forConservation = forConserve;\r
-this.undoButton.setVisible (false);\r
-this.applyButton.setVisible (false);\r
-if (this.forConservation) {\r
-this.label.setText (jalview.util.MessageManager.getString ("label.modify_conservation_visibility"));\r
-this.slider.setMinimum (0);\r
-this.slider.setMaximum (50 + this.slider.getVisibleAmount ());\r
-this.slider.setUnitIncrement (1);\r
-} else {\r
-this.label.setText (jalview.util.MessageManager.getString ("label.colour_residues_above_occurence"));\r
-this.slider.setMinimum (0);\r
-this.slider.setMaximum (100 + this.slider.getVisibleAmount ());\r
-this.slider.setBlockIncrement (1);\r
-}this.slider.addAdjustmentListener (this);\r
-this.slider.addMouseListener (this);\r
-this.slider.setValue (value);\r
-this.valueField.setText (value + "");\r
-}, "jalview.appletgui.AlignmentPanel,~N,~B,jalview.schemes.ColourSchemeI");\r
-Clazz.defineMethod (c$, "valueChanged", \r
-function (i) {\r
-if (this.cs == null) {\r
-return;\r
-}var toChange = this.cs;\r
-var allGroups = null;\r
-if (this.allGroupsCheck.getState ()) {\r
-allGroups = this.ap.av.getAlignment ().getGroups ().listIterator ();\r
-}while (toChange != null) {\r
-if (this.forConservation) {\r
-toChange.setConservationInc (i);\r
-} else {\r
-toChange.setThreshold (i, this.ap.av.isIgnoreGapsConsensus ());\r
-}if (allGroups != null && allGroups.hasNext ()) {\r
-while ((toChange = allGroups.next ().cs) == null && allGroups.hasNext ()) {\r
-;}\r
-} else {\r
-toChange = null;\r
-}}\r
-this.ap.seqPanel.seqCanvas.repaint ();\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setAllGroupsCheckEnabled", \r
-function (b) {\r
-this.allGroupsCheck.setEnabled (b);\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-if (evt.getSource () === this.applyButton) {\r
-this.applyButton_actionPerformed ();\r
-} else if (evt.getSource () === this.undoButton) {\r
-this.undoButton_actionPerformed ();\r
-} else if (evt.getSource () === this.valueField) {\r
-this.valueField_actionPerformed ();\r
-}}, "java.awt.event.ActionEvent");\r
-Clazz.overrideMethod (c$, "adjustmentValueChanged", \r
-function (evt) {\r
-this.valueField.setText (this.slider.getValue () + "");\r
-this.valueChanged (this.slider.getValue ());\r
-}, "java.awt.event.AdjustmentEvent");\r
-Clazz.defineMethod (c$, "valueField_actionPerformed", \r
-function () {\r
-try {\r
-var i = Integer.parseInt (this.valueField.getText ());\r
-this.slider.setValue (i);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-this.valueField.setText (this.slider.getValue () + "");\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-});\r
-Clazz.defineMethod (c$, "setValue", \r
-function (value) {\r
-this.slider.setValue (value);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getValue", \r
-function () {\r
-return Integer.parseInt (this.valueField.getText ());\r
-});\r
-Clazz.defineMethod (c$, "jbInit", \r
-($fz = function () {\r
-this.setLayout (this.borderLayout2);\r
-this.slider.setBackground (java.awt.Color.white);\r
-this.slider.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.slider.setOrientation (0);\r
-this.valueField.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.valueField.setText ("   ");\r
-this.valueField.addActionListener (this);\r
-this.valueField.setColumns (3);\r
-this.label.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.label.setText (jalview.util.MessageManager.getString ("label.set_this_label_text"));\r
-this.jPanel1.setLayout (this.borderLayout1);\r
-this.jPanel2.setLayout (this.flowLayout1);\r
-this.applyButton.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.applyButton.setLabel (jalview.util.MessageManager.getString ("action.apply"));\r
-this.applyButton.addActionListener (this);\r
-this.undoButton.setEnabled (false);\r
-this.undoButton.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.undoButton.setLabel (jalview.util.MessageManager.getString ("action.undo"));\r
-this.undoButton.addActionListener (this);\r
-this.allGroupsCheck.setEnabled (false);\r
-this.allGroupsCheck.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.allGroupsCheck.setLabel (jalview.util.MessageManager.getString ("action.apply_threshold_all_groups"));\r
-this.allGroupsCheck.setName (jalview.util.MessageManager.getString ("action.apply_all_groups"));\r
-this.setBackground (java.awt.Color.white);\r
-this.setForeground (java.awt.Color.black);\r
-this.jPanel2.add (this.label, null);\r
-this.jPanel2.add (this.applyButton, null);\r
-this.jPanel2.add (this.undoButton, null);\r
-this.jPanel2.add (this.allGroupsCheck);\r
-this.jPanel1.add (this.valueField, "East");\r
-this.jPanel1.add (this.slider, "Center");\r
-this.add (this.jPanel1, "South");\r
-this.add (this.jPanel2, "Center");\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "applyButton_actionPerformed", \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "undoButton_actionPerformed", \r
-function () {\r
-});\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (evt) {\r
-this.ap.paintAlignment (true);\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-c$.$SliderPanel$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "SliderPanel$1", java.awt.event.WindowAdapter);\r
-Clazz.overrideMethod (c$, "windowClosing", \r
-function (e) {\r
-jalview.appletgui.SliderPanel.conservationSlider = null;\r
-}, "java.awt.event.WindowEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$SliderPanel$2$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "SliderPanel$2", java.awt.event.WindowAdapter);\r
-Clazz.overrideMethod (c$, "windowClosing", \r
-function (e) {\r
-jalview.appletgui.SliderPanel.PIDSlider = null;\r
-}, "java.awt.event.WindowEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"conservationSlider", null,\r
-"PIDSlider", null);\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.MouseListener", "awt2swing.Button", "$.Checkbox", "$.Label", "$.Scrollbar", "$.TextField", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.SliderPanel", ["awt2swing.Frame", "jalview.bin.JalviewLite", "jalview.util.MessageManager", "java.awt.Color", "$.Font", "java.awt.event.WindowAdapter"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.ap = null;
+this.forConservation = true;
+this.cs = null;
+this.slider = null;
+this.valueField = null;
+this.label = null;
+this.jPanel1 = null;
+this.jPanel2 = null;
+this.applyButton = null;
+this.undoButton = null;
+this.flowLayout1 = null;
+this.allGroupsCheck = null;
+this.borderLayout1 = null;
+this.borderLayout2 = null;
+this.flowLayout2 = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "SliderPanel", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.MouseListener]);
+Clazz.prepareFields (c$, function () {
+this.slider =  new awt2swing.Scrollbar ();
+this.valueField =  new awt2swing.TextField ();
+this.label =  new awt2swing.Label ();
+this.jPanel1 =  new awt2swing.Panel ();
+this.jPanel2 =  new awt2swing.Panel ();
+this.applyButton =  new awt2swing.Button ();
+this.undoButton =  new awt2swing.Button ();
+this.flowLayout1 =  new java.awt.FlowLayout ();
+this.allGroupsCheck =  new awt2swing.Checkbox ();
+this.borderLayout1 =  new java.awt.BorderLayout ();
+this.borderLayout2 =  new java.awt.BorderLayout ();
+this.flowLayout2 =  new java.awt.FlowLayout ();
+});
+c$.setConservationSlider = Clazz.defineMethod (c$, "setConservationSlider", 
+function (ap, cs, source) {
+var sp = null;
+if (jalview.appletgui.SliderPanel.conservationSlider == null) {
+sp =  new jalview.appletgui.SliderPanel (ap, cs.getConservationInc (), true, cs);
+jalview.appletgui.SliderPanel.conservationSlider =  new awt2swing.Frame ();
+jalview.appletgui.SliderPanel.conservationSlider.add (sp);
+} else {
+sp = jalview.appletgui.SliderPanel.conservationSlider.getComponent (0);
+sp.cs = cs;
+}jalview.appletgui.SliderPanel.conservationSlider.setTitle (jalview.util.MessageManager.formatMessage ("label.conservation_colour_increment",  Clazz.newArray (-1, [source])));
+if (ap.av.getAlignment ().getGroups () != null) {
+sp.setAllGroupsCheckEnabled (true);
+} else {
+sp.setAllGroupsCheckEnabled (false);
+}return sp.getValue ();
+}, "jalview.appletgui.AlignmentPanel,jalview.schemes.ColourSchemeI,~S");
+c$.showConservationSlider = Clazz.defineMethod (c$, "showConservationSlider", 
+function () {
+try {
+jalview.appletgui.SliderPanel.PIDSlider.setVisible (false);
+jalview.appletgui.SliderPanel.PIDSlider = null;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+if (!jalview.appletgui.SliderPanel.conservationSlider.isVisible ()) {
+jalview.bin.JalviewLite.addFrame (jalview.appletgui.SliderPanel.conservationSlider, jalview.appletgui.SliderPanel.conservationSlider.getTitle (), 420, 100);
+jalview.appletgui.SliderPanel.conservationSlider.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.SliderPanel$1") ? 0 : jalview.appletgui.SliderPanel.$SliderPanel$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.SliderPanel$1, this, null)));
+}});
+c$.setPIDSliderSource = Clazz.defineMethod (c$, "setPIDSliderSource", 
+function (ap, cs, source) {
+var pid = null;
+if (jalview.appletgui.SliderPanel.PIDSlider == null) {
+pid =  new jalview.appletgui.SliderPanel (ap, 50, false, cs);
+jalview.appletgui.SliderPanel.PIDSlider =  new awt2swing.Frame ();
+jalview.appletgui.SliderPanel.PIDSlider.add (pid);
+} else {
+pid = jalview.appletgui.SliderPanel.PIDSlider.getComponent (0);
+pid.cs = cs;
+}jalview.appletgui.SliderPanel.PIDSlider.setTitle (jalview.util.MessageManager.formatMessage ("label.percentage_identity_thereshold",  Clazz.newArray (-1, [source])));
+if (ap.av.getAlignment ().getGroups () != null) {
+pid.setAllGroupsCheckEnabled (true);
+} else {
+pid.setAllGroupsCheckEnabled (false);
+}return pid.getValue ();
+}, "jalview.appletgui.AlignmentPanel,jalview.schemes.ColourSchemeI,~S");
+c$.showPIDSlider = Clazz.defineMethod (c$, "showPIDSlider", 
+function () {
+try {
+jalview.appletgui.SliderPanel.conservationSlider.setVisible (false);
+jalview.appletgui.SliderPanel.conservationSlider = null;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+if (!jalview.appletgui.SliderPanel.PIDSlider.isVisible ()) {
+jalview.bin.JalviewLite.addFrame (jalview.appletgui.SliderPanel.PIDSlider, jalview.appletgui.SliderPanel.PIDSlider.getTitle (), 420, 100);
+jalview.appletgui.SliderPanel.PIDSlider.addWindowListener (((Clazz.isClassDefined ("jalview.appletgui.SliderPanel$2") ? 0 : jalview.appletgui.SliderPanel.$SliderPanel$2$ ()), Clazz.innerTypeInstance (jalview.appletgui.SliderPanel$2, this, null)));
+}});
+Clazz.makeConstructor (c$, 
+function (ap, value, forConserve, cs) {
+Clazz.superConstructor (this, jalview.appletgui.SliderPanel, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.ap = ap;
+this.cs = cs;
+this.forConservation = forConserve;
+this.undoButton.setVisible (false);
+this.applyButton.setVisible (false);
+if (this.forConservation) {
+this.label.setText (jalview.util.MessageManager.getString ("label.modify_conservation_visibility"));
+this.slider.setMinimum (0);
+this.slider.setMaximum (50 + this.slider.getVisibleAmount ());
+this.slider.setUnitIncrement (1);
+} else {
+this.label.setText (jalview.util.MessageManager.getString ("label.colour_residues_above_occurence"));
+this.slider.setMinimum (0);
+this.slider.setMaximum (100 + this.slider.getVisibleAmount ());
+this.slider.setBlockIncrement (1);
+}this.slider.addAdjustmentListener (this);
+this.slider.addMouseListener (this);
+this.slider.setValue (value);
+this.valueField.setText (value + "");
+}, "jalview.appletgui.AlignmentPanel,~N,~B,jalview.schemes.ColourSchemeI");
+Clazz.defineMethod (c$, "valueChanged", 
+function (i) {
+if (this.cs == null) {
+return;
+}var toChange = this.cs;
+var allGroups = null;
+if (this.allGroupsCheck.getState ()) {
+allGroups = this.ap.av.getAlignment ().getGroups ().listIterator ();
+}while (toChange != null) {
+if (this.forConservation) {
+toChange.setConservationInc (i);
+} else {
+toChange.setThreshold (i, this.ap.av.isIgnoreGapsConsensus ());
+}if (allGroups != null && allGroups.hasNext ()) {
+while ((toChange = allGroups.next ().cs) == null && allGroups.hasNext ()) {
+;}
+} else {
+toChange = null;
+}}
+this.ap.seqPanel.seqCanvas.repaint ();
+}, "~N");
+Clazz.defineMethod (c$, "setAllGroupsCheckEnabled", 
+function (b) {
+this.allGroupsCheck.setEnabled (b);
+}, "~B");
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.applyButton) {
+this.applyButton_actionPerformed ();
+} else if (evt.getSource () === this.undoButton) {
+this.undoButton_actionPerformed ();
+} else if (evt.getSource () === this.valueField) {
+this.valueField_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+this.valueField.setText (this.slider.getValue () + "");
+this.valueChanged (this.slider.getValue ());
+}, "java.awt.event.AdjustmentEvent");
+Clazz.defineMethod (c$, "valueField_actionPerformed", 
+function () {
+try {
+var i = Integer.parseInt (this.valueField.getText ());
+this.slider.setValue (i);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+this.valueField.setText (this.slider.getValue () + "");
+} else {
+throw ex;
+}
+}
+});
+Clazz.defineMethod (c$, "setValue", 
+function (value) {
+this.slider.setValue (value);
+}, "~N");
+Clazz.defineMethod (c$, "getValue", 
+function () {
+return Integer.parseInt (this.valueField.getText ());
+});
+Clazz.defineMethod (c$, "jbInit", 
+($fz = function () {
+this.setLayout (this.borderLayout2);
+this.slider.setBackground (java.awt.Color.white);
+this.slider.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.slider.setOrientation (0);
+this.valueField.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.valueField.setText ("   ");
+this.valueField.addActionListener (this);
+this.valueField.setColumns (3);
+this.label.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.label.setText (jalview.util.MessageManager.getString ("label.set_this_label_text"));
+this.jPanel1.setLayout (this.borderLayout1);
+this.jPanel2.setLayout (this.flowLayout1);
+this.applyButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.applyButton.setLabel (jalview.util.MessageManager.getString ("action.apply"));
+this.applyButton.addActionListener (this);
+this.undoButton.setEnabled (false);
+this.undoButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.undoButton.setLabel (jalview.util.MessageManager.getString ("action.undo"));
+this.undoButton.addActionListener (this);
+this.allGroupsCheck.setEnabled (false);
+this.allGroupsCheck.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.allGroupsCheck.setLabel (jalview.util.MessageManager.getString ("action.apply_threshold_all_groups"));
+this.allGroupsCheck.setName (jalview.util.MessageManager.getString ("action.apply_all_groups"));
+this.setBackground (java.awt.Color.white);
+this.setForeground (java.awt.Color.black);
+this.jPanel2.add (this.label, null);
+this.jPanel2.add (this.applyButton, null);
+this.jPanel2.add (this.undoButton, null);
+this.jPanel2.add (this.allGroupsCheck);
+this.jPanel1.add (this.valueField, "East");
+this.jPanel1.add (this.slider, "Center");
+this.add (this.jPanel1, "South");
+this.add (this.jPanel2, "Center");
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "applyButton_actionPerformed", 
+function () {
+});
+Clazz.defineMethod (c$, "undoButton_actionPerformed", 
+function () {
+});
+Clazz.overrideMethod (c$, "mousePressed", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.ap.paintAlignment (true);
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+c$.$SliderPanel$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "SliderPanel$1", java.awt.event.WindowAdapter);
+Clazz.overrideMethod (c$, "windowClosing", 
+function (e) {
+jalview.appletgui.SliderPanel.conservationSlider = null;
+}, "java.awt.event.WindowEvent");
+c$ = Clazz.p0p ();
+};
+c$.$SliderPanel$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "SliderPanel$2", java.awt.event.WindowAdapter);
+Clazz.overrideMethod (c$, "windowClosing", 
+function (e) {
+jalview.appletgui.SliderPanel.PIDSlider = null;
+}, "java.awt.event.WindowEvent");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"conservationSlider", null,
+"PIDSlider", null);
+});
index 7818eaf..eb3570a 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["jalview.appletgui.EmbmenuFrame"], "jalview.appletgui.SplitFrame", ["awt2swing.Panel", "jalview.analysis.AlignmentUtils", "jalview.bin.JalviewLite", "jalview.structure.StructureSelectionManager", "java.awt.BorderLayout", "$.Dimension", "$.GridLayout"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.topFrame = null;\r
-this.bottomFrame = null;\r
-this.outermost = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "SplitFrame", jalview.appletgui.EmbmenuFrame);\r
-Clazz.makeConstructor (c$, \r
-function (af1, af2) {\r
-Clazz.superConstructor (this, jalview.appletgui.SplitFrame, []);\r
-this.topFrame = af1;\r
-this.bottomFrame = af2;\r
-this.init ();\r
-}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignFrame");\r
-Clazz.defineMethod (c$, "init", \r
-function () {\r
-var $private = Clazz.checkPrivateMethod (arguments);\r
-if ($private != null) {\r
-return $private.apply (this, arguments);\r
-}\r
-this.constructSplit ();\r
-var topViewport = this.topFrame.viewport;\r
-var bottomViewport = this.bottomFrame.viewport;\r
-var topAlignment = topViewport.getAlignment ();\r
-var bottomAlignment = bottomViewport.getAlignment ();\r
-var cdna = topAlignment.isNucleotide () ? topViewport : (bottomAlignment.isNucleotide () ? bottomViewport : null);\r
-var protein = !topAlignment.isNucleotide () ? topViewport : (!bottomAlignment.isNucleotide () ? bottomViewport : null);\r
-var mapped = jalview.analysis.AlignmentUtils.mapProteinToCdna (protein.getAlignment (), cdna.getAlignment ());\r
-if (mapped) {\r
-var ssm = jalview.structure.StructureSelectionManager.getStructureSelectionManager (topViewport.applet);\r
-ssm.addMappings (protein.getAlignment ().getCodonFrames ());\r
-topViewport.setCodingComplement (bottomViewport);\r
-ssm.addCommandListener (cdna);\r
-ssm.addCommandListener (protein);\r
-}protein.initComplementConsensus ();\r
-var ap = topAlignment.isNucleotide () ? this.bottomFrame.alignPanel : this.topFrame.alignPanel;\r
-protein.updateConsensus (ap);\r
-this.adjustLayout ();\r
-});\r
-Clazz.defineMethod (c$, "constructSplit", \r
-function () {\r
-this.unsetMenuBar ();\r
-this.outermost =  new awt2swing.Panel ( new java.awt.GridLayout (2, 1));\r
-var topPanel =  new awt2swing.Panel ();\r
-var bottomPanel =  new awt2swing.Panel ();\r
-this.outermost.add (topPanel);\r
-this.outermost.add (bottomPanel);\r
-this.addAlignFrameComponents (this.topFrame, topPanel);\r
-this.addAlignFrameComponents (this.bottomFrame, bottomPanel);\r
-});\r
-Clazz.defineMethod (c$, "adjustLayout", \r
-function () {\r
-var cdna = this.topFrame.getAlignViewport ().getAlignment ().isNucleotide () ? this.topFrame.viewport : this.bottomFrame.viewport;\r
-var protein = cdna === this.topFrame.viewport ? this.bottomFrame.viewport : this.topFrame.viewport;\r
-var w1 = this.topFrame.alignPanel.idPanel.idCanvas.getWidth ();\r
-var w2 = this.bottomFrame.alignPanel.idPanel.idCanvas.getWidth ();\r
-var w3 = Math.max (w1, w2);\r
-if (w1 != w3) {\r
-var d = this.topFrame.alignPanel.idPanel.idCanvas.getSize ();\r
-this.topFrame.alignPanel.idPanel.idCanvas.setSize ( new java.awt.Dimension (w3, d.height));\r
-}if (w2 != w3) {\r
-var d = this.bottomFrame.alignPanel.idPanel.idCanvas.getSize ();\r
-this.bottomFrame.alignPanel.idPanel.idCanvas.setSize ( new java.awt.Dimension (w3, d.height));\r
-}if (protein != null && cdna != null) {\r
-var vs = protein.getViewStyle ();\r
-var scale = vs.isScaleProteinAsCdna () ? 3 : 1;\r
-vs.setCharWidth (scale * cdna.getViewStyle ().getCharWidth ());\r
-protein.setViewStyle (vs);\r
-}});\r
-Clazz.defineMethod (c$, "addAlignFrameComponents", \r
-($fz = function (af, panel) {\r
-panel.setLayout ( new java.awt.BorderLayout ());\r
-var menuPanel = af.makeEmbeddedPopupMenu (af.getJMenuBar (), true, false);\r
-panel.add (menuPanel, "North");\r
-panel.add (af.statusBar, "South");\r
-panel.add (af.alignPanel, "Center");\r
-af.setSplitFrame (this);\r
-}, $fz.isPrivate = true, $fz), "jalview.appletgui.AlignFrame,awt2swing.Panel");\r
-Clazz.defineMethod (c$, "addToDisplay", \r
-function (embedded, applet) {\r
-this.createSplitFrameWindow (embedded, applet);\r
-this.validate ();\r
-this.topFrame.alignPanel.adjustAnnotationHeight ();\r
-this.topFrame.alignPanel.paintAlignment (true);\r
-this.bottomFrame.alignPanel.adjustAnnotationHeight ();\r
-this.bottomFrame.alignPanel.paintAlignment (true);\r
-}, "~B,jalview.bin.JalviewLite");\r
-Clazz.defineMethod (c$, "createSplitFrameWindow", \r
-function (embed, applet) {\r
-if (embed) {\r
-applet.add (this.outermost);\r
-applet.validate ();\r
-} else {\r
-this.add (this.outermost);\r
-var width = Math.max (this.topFrame.frameWidth, this.bottomFrame.frameWidth);\r
-var height = this.topFrame.frameHeight + this.bottomFrame.frameHeight;\r
-jalview.bin.JalviewLite.addFrame (this, this.getTitle (), width, height);\r
-}}, "~B,jalview.bin.JalviewLite");\r
-Clazz.defineMethod (c$, "getComplement", \r
-function (af) {\r
-if (this.topFrame === af) {\r
-return this.bottomFrame;\r
-} else if (this.bottomFrame === af) {\r
-return this.topFrame;\r
-}return null;\r
-}, "jalview.appletgui.AlignFrame");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.appletgui.EmbmenuFrame"], "jalview.appletgui.SplitFrame", ["awt2swing.Panel", "jalview.analysis.AlignmentUtils", "jalview.bin.JalviewLite", "jalview.structure.StructureSelectionManager", "java.awt.BorderLayout", "$.Dimension", "$.GridLayout"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.topFrame = null;
+this.bottomFrame = null;
+this.outermost = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "SplitFrame", jalview.appletgui.EmbmenuFrame);
+Clazz.makeConstructor (c$, 
+function (af1, af2) {
+Clazz.superConstructor (this, jalview.appletgui.SplitFrame, []);
+this.topFrame = af1;
+this.bottomFrame = af2;
+this.init ();
+}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "init", 
+function () {
+var $private = Clazz.checkPrivateMethod (arguments);
+if ($private != null) {
+return $private.apply (this, arguments);
+}
+this.constructSplit ();
+var topViewport = this.topFrame.viewport;
+var bottomViewport = this.bottomFrame.viewport;
+var topAlignment = topViewport.getAlignment ();
+var bottomAlignment = bottomViewport.getAlignment ();
+var cdna = topAlignment.isNucleotide () ? topViewport : (bottomAlignment.isNucleotide () ? bottomViewport : null);
+var protein = !topAlignment.isNucleotide () ? topViewport : (!bottomAlignment.isNucleotide () ? bottomViewport : null);
+var mapped = jalview.analysis.AlignmentUtils.mapProteinToCdna (protein.getAlignment (), cdna.getAlignment ());
+if (mapped) {
+var ssm = jalview.structure.StructureSelectionManager.getStructureSelectionManager (topViewport.applet);
+ssm.addMappings (protein.getAlignment ().getCodonFrames ());
+topViewport.setCodingComplement (bottomViewport);
+ssm.addCommandListener (cdna);
+ssm.addCommandListener (protein);
+}protein.initComplementConsensus ();
+var ap = topAlignment.isNucleotide () ? this.bottomFrame.alignPanel : this.topFrame.alignPanel;
+protein.updateConsensus (ap);
+this.adjustLayout ();
+});
+Clazz.defineMethod (c$, "constructSplit", 
+function () {
+this.unsetMenuBar ();
+this.outermost =  new awt2swing.Panel ( new java.awt.GridLayout (2, 1));
+var topPanel =  new awt2swing.Panel ();
+var bottomPanel =  new awt2swing.Panel ();
+this.outermost.add (topPanel);
+this.outermost.add (bottomPanel);
+this.addAlignFrameComponents (this.topFrame, topPanel);
+this.addAlignFrameComponents (this.bottomFrame, bottomPanel);
+});
+Clazz.defineMethod (c$, "adjustLayout", 
+function () {
+var cdna = this.topFrame.getAlignViewport ().getAlignment ().isNucleotide () ? this.topFrame.viewport : this.bottomFrame.viewport;
+var protein = cdna === this.topFrame.viewport ? this.bottomFrame.viewport : this.topFrame.viewport;
+var w1 = this.topFrame.alignPanel.idPanel.idCanvas.getWidth ();
+var w2 = this.bottomFrame.alignPanel.idPanel.idCanvas.getWidth ();
+var w3 = Math.max (w1, w2);
+if (w1 != w3) {
+var d = this.topFrame.alignPanel.idPanel.idCanvas.getSize ();
+this.topFrame.alignPanel.idPanel.idCanvas.setSize ( new java.awt.Dimension (w3, d.height));
+}if (w2 != w3) {
+var d = this.bottomFrame.alignPanel.idPanel.idCanvas.getSize ();
+this.bottomFrame.alignPanel.idPanel.idCanvas.setSize ( new java.awt.Dimension (w3, d.height));
+}if (protein != null && cdna != null) {
+var vs = protein.getViewStyle ();
+var scale = vs.isScaleProteinAsCdna () ? 3 : 1;
+vs.setCharWidth (scale * cdna.getViewStyle ().getCharWidth ());
+protein.setViewStyle (vs);
+}});
+Clazz.defineMethod (c$, "addAlignFrameComponents", 
+($fz = function (af, panel) {
+panel.setLayout ( new java.awt.BorderLayout ());
+var menuPanel = af.makeEmbeddedPopupMenu (af.getJMenuBar (), true, false);
+panel.add (menuPanel, "North");
+panel.add (af.statusBar, "South");
+panel.add (af.alignPanel, "Center");
+af.setSplitFrame (this);
+}, $fz.isPrivate = true, $fz), "jalview.appletgui.AlignFrame,awt2swing.Panel");
+Clazz.defineMethod (c$, "addToDisplay", 
+function (embedded, applet) {
+this.createSplitFrameWindow (embedded, applet);
+this.validate ();
+this.topFrame.alignPanel.adjustAnnotationHeight ();
+this.topFrame.alignPanel.paintAlignment (true);
+this.bottomFrame.alignPanel.adjustAnnotationHeight ();
+this.bottomFrame.alignPanel.paintAlignment (true);
+}, "~B,jalview.bin.JalviewLite");
+Clazz.defineMethod (c$, "createSplitFrameWindow", 
+function (embed, applet) {
+if (embed) {
+applet.add (this.outermost);
+applet.validate ();
+} else {
+this.add (this.outermost);
+var width = Math.max (this.topFrame.frameWidth, this.bottomFrame.frameWidth);
+var height = this.topFrame.frameHeight + this.bottomFrame.frameHeight;
+jalview.bin.JalviewLite.addFrame (this, this.getTitle (), width, height);
+}}, "~B,jalview.bin.JalviewLite");
+Clazz.defineMethod (c$, "getComplement", 
+function (af) {
+if (this.topFrame === af) {
+return this.bottomFrame;
+} else if (this.bottomFrame === af) {
+return this.topFrame;
+}return null;
+}, "jalview.appletgui.AlignFrame");
+});
index 351c3ff..026a455 100644 (file)
@@ -1,43 +1,43 @@
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.Insets"], "jalview.appletgui.TitledPanel", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.title = null;\r
-this.$insets = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "TitledPanel", awt2swing.Panel);\r
-Clazz.prepareFields (c$, function () {\r
-this.$insets =  new java.awt.Insets (10, 10, 10, 10);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.construct ("");\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (title) {\r
-Clazz.superConstructor (this, jalview.appletgui.TitledPanel, []);\r
-this.setTitle (title);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getInsets", \r
-function () {\r
-return this.$insets;\r
-});\r
-Clazz.defineMethod (c$, "paintComponent", \r
-function (g) {\r
-Clazz.superCall (this, jalview.appletgui.TitledPanel, "paintComponent", [g]);\r
-g.setColor (this.getForeground ());\r
-g.drawRect (5, 5, this.getWidth () - 10, this.getHeight () - 10);\r
-var width = g.getFontMetrics ().stringWidth (this.getTitle ());\r
-g.setColor (this.getBackground ());\r
-g.fillRect (10, 0, width, 10);\r
-g.setColor (this.getForeground ());\r
-g.drawString (this.getTitle (), 10, 10);\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "getTitle", \r
-function () {\r
-return this.title;\r
-});\r
-Clazz.defineMethod (c$, "setTitle", \r
-function (title) {\r
-this.title = title;\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.Insets"], "jalview.appletgui.TitledPanel", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.title = null;
+this.$insets = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "TitledPanel", awt2swing.Panel);
+Clazz.prepareFields (c$, function () {
+this.$insets =  new java.awt.Insets (10, 10, 10, 10);
+});
+Clazz.makeConstructor (c$, 
+function () {
+this.construct ("");
+});
+Clazz.makeConstructor (c$, 
+function (title) {
+Clazz.superConstructor (this, jalview.appletgui.TitledPanel, []);
+this.setTitle (title);
+}, "~S");
+Clazz.defineMethod (c$, "getInsets", 
+function () {
+return this.$insets;
+});
+Clazz.defineMethod (c$, "paintComponent", 
+function (g) {
+Clazz.superCall (this, jalview.appletgui.TitledPanel, "paintComponent", [g]);
+g.setColor (this.getForeground ());
+g.drawRect (5, 5, this.getWidth () - 10, this.getHeight () - 10);
+var width = g.getFontMetrics ().stringWidth (this.getTitle ());
+g.setColor (this.getBackground ());
+g.fillRect (10, 0, width, 10);
+g.setColor (this.getForeground ());
+g.drawString (this.getTitle (), 10, 10);
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "getTitle", 
+function () {
+return this.title;
+});
+Clazz.defineMethod (c$, "setTitle", 
+function (title) {
+this.title = title;
+}, "~S");
+});
index cb48e62..425b8d7 100644 (file)
@@ -1,67 +1,67 @@
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (null, "jalview.appletgui.Tooltip", ["awt2swing.Frame", "java.applet.Applet", "java.awt.Toolkit"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.tip = null;\r
-this.lastTip = "";\r
-this.setPosition = false;\r
-this.owner = null;\r
-this.mainContainer = null;\r
-this.mainLayout = null;\r
-this.shown = false;\r
-this.VERTICAL_OFFSET = 20;\r
-this.HORIZONTAL_ENLARGE = 10;\r
-this.fontHeight = 0;\r
-this.linkImage = null;\r
-this.fm = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "Tooltip");\r
-Clazz.defineMethod (c$, "setVisible", \r
-function (b) {\r
-}, "~B");\r
-Clazz.makeConstructor (c$, \r
-function (tip, owner) {\r
-this.owner = owner;\r
-this.setTip (tip);\r
-var url = this.getClass ().getResource ("/images/link.gif");\r
-if (url != null) {\r
-this.linkImage = java.awt.Toolkit.getDefaultToolkit ().getImage (url);\r
-}}, "~S,java.awt.Component");\r
-Clazz.defineMethod (c$, "setTip", \r
-function (tip) {\r
-System.err.println ("Tooltip: " + tip);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setTipLocation", \r
-function (evt) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "removeToolTip", \r
-($fz = function () {\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "mouseEntered", \r
-function (me) {\r
-this.setTipLocation (me);\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "mouseExited", \r
-function (me) {\r
-this.removeToolTip ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "mousePressed", \r
-function (me) {\r
-this.removeToolTip ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "mouseReleased", \r
-function (me) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "mouseClicked", \r
-function (me) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "mouseMoved", \r
-function (me) {\r
-if (!this.shown) {\r
-this.setTipLocation (me);\r
-} else if (this.setPosition) {\r
-this.setTipLocation (me);\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "mouseDragged", \r
-function (me) {\r
-}, "java.awt.event.MouseEvent");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (null, "jalview.appletgui.Tooltip", ["awt2swing.Frame", "java.applet.Applet", "java.awt.Toolkit"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.tip = null;
+this.lastTip = "";
+this.setPosition = false;
+this.owner = null;
+this.mainContainer = null;
+this.mainLayout = null;
+this.shown = false;
+this.VERTICAL_OFFSET = 20;
+this.HORIZONTAL_ENLARGE = 10;
+this.fontHeight = 0;
+this.linkImage = null;
+this.fm = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "Tooltip");
+Clazz.defineMethod (c$, "setVisible", 
+function (b) {
+}, "~B");
+Clazz.makeConstructor (c$, 
+function (tip, owner) {
+this.owner = owner;
+this.setTip (tip);
+var url = this.getClass ().getResource ("/images/link.gif");
+if (url != null) {
+this.linkImage = java.awt.Toolkit.getDefaultToolkit ().getImage (url);
+}}, "~S,java.awt.Component");
+Clazz.defineMethod (c$, "setTip", 
+function (tip) {
+System.err.println ("Tooltip: " + tip);
+}, "~S");
+Clazz.defineMethod (c$, "setTipLocation", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "removeToolTip", 
+($fz = function () {
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "mouseEntered", 
+function (me) {
+this.setTipLocation (me);
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "mouseExited", 
+function (me) {
+this.removeToolTip ();
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "mousePressed", 
+function (me) {
+this.removeToolTip ();
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "mouseReleased", 
+function (me) {
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "mouseClicked", 
+function (me) {
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "mouseMoved", 
+function (me) {
+if (!this.shown) {
+this.setTipLocation (me);
+} else if (this.setPosition) {
+this.setTipLocation (me);
+}}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "mouseDragged", 
+function (me) {
+}, "java.awt.event.MouseEvent");
+});
index ee9c1c1..b5cddc1 100644 (file)
Binary files a/bin/jalview/appletgui/TreeCanvas.class and b/bin/jalview/appletgui/TreeCanvas.class differ
index da76a3e..69da9f2 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.util.Hashtable"], "jalview.appletgui.TreeCanvas", ["jalview.analysis.Conservation", "jalview.appletgui.PaintRefresher", "jalview.datamodel.SequenceGroup", "$.SequenceI", "$.SequenceNode", "jalview.schemes.ColourSchemeProperty", "$.ResidueProperties", "$.UserColourScheme", "jalview.util.Format", "$.MappingUtils", "java.awt.Color", "$.Dimension", "$.Point", "$.Rectangle", "java.util.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.tree = null;\r
-this.scrollPane = null;\r
-this.av = null;\r
-this.$font = null;\r
-this.fitToWindow = true;\r
-this.showDistances = false;\r
-this.showBootstrap = false;\r
-this.markPlaceholders = false;\r
-this.offx = 20;\r
-this.offy = 0;\r
-this.threshold = 0;\r
-this.longestName = null;\r
-this.labelLength = -1;\r
-this.nameHash = null;\r
-this.nodeHash = null;\r
-this.highlightNode = null;\r
-this.ap = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "TreeCanvas", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);\r
-Clazz.prepareFields (c$, function () {\r
-this.nameHash =  new java.util.Hashtable ();\r
-this.nodeHash =  new java.util.Hashtable ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (ap, scroller) {\r
-Clazz.superConstructor (this, jalview.appletgui.TreeCanvas, []);\r
-this.ap = ap;\r
-this.av = ap.av;\r
-this.$font = this.av.getFont ();\r
-this.scrollPane = scroller;\r
-this.addMouseListener (this);\r
-this.addMouseMotionListener (this);\r
-this.setLayout (null);\r
-jalview.appletgui.PaintRefresher.Register (this, this.av.getSequenceSetId ());\r
-}, "jalview.appletgui.AlignmentPanel,awt2swing.ScrollPane");\r
-Clazz.defineMethod (c$, "treeSelectionChanged", \r
-function (sequence) {\r
-var selected = this.av.getSelectionGroup ();\r
-if (selected == null) {\r
-selected =  new jalview.datamodel.SequenceGroup ();\r
-this.av.setSelectionGroup (selected);\r
-}selected.setEndRes (this.av.getAlignment ().getWidth () - 1);\r
-selected.addOrRemove (sequence, true);\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "setTree", \r
-function (tree) {\r
-this.tree = tree;\r
-tree.findHeight (tree.getTopNode ());\r
-var leaves = tree.findLeaves (tree.getTopNode (),  new java.util.Vector ());\r
-var has_placeholders = false;\r
-this.longestName = "";\r
-for (var i = 0; i < leaves.size (); i++) {\r
-var lf = leaves.elementAt (i);\r
-if (lf.isPlaceholder ()) {\r
-has_placeholders = true;\r
-}if (this.longestName.length < (lf.element ()).getName ().length) {\r
-this.longestName = " * " + (lf.element ()).getName ();\r
-}}\r
-this.setMarkPlaceholders (has_placeholders);\r
-}, "jalview.analysis.NJTree");\r
-Clazz.defineMethod (c$, "drawNode", \r
-function (g, node, chunk, scale, width, offx, offy) {\r
-if (node == null) {\r
-return;\r
-}if (node.left () == null && node.right () == null) {\r
-var height = node.height;\r
-var dist = node.dist;\r
-var xstart = Clazz.floatToInt ((height - dist) * scale) + offx;\r
-var xend = Clazz.floatToInt (height * scale) + offx;\r
-var ypos = Clazz.floatToInt (node.ycount * chunk) + offy;\r
-if (Clazz.instanceOf (node.element (), jalview.datamodel.SequenceI)) {\r
-var seq = node.element ();\r
-if (this.av.getSequenceColour (seq) === java.awt.Color.white) {\r
-g.setColor (java.awt.Color.black);\r
-} else {\r
-g.setColor (this.av.getSequenceColour (seq).darker ());\r
-}} else {\r
-g.setColor (java.awt.Color.black);\r
-}g.drawLine (xstart, ypos, xend, ypos);\r
-var nodeLabel = "";\r
-if (this.showDistances && node.dist > 0) {\r
-nodeLabel =  new jalview.util.Format ("%-.2f").formDouble (node.dist);\r
-}if (this.showBootstrap) {\r
-var btstrap = node.getBootstrap ();\r
-if (btstrap > -1) {\r
-if (this.showDistances) {\r
-nodeLabel = nodeLabel + " : ";\r
-}nodeLabel = nodeLabel + String.valueOf (node.getBootstrap ());\r
-}}if (!nodeLabel.equals ("")) {\r
-g.drawString (nodeLabel, xstart + 2, ypos - 2);\r
-}var name = (this.markPlaceholders && node.isPlaceholder ()) ? (" * " + node.getName ()) : node.getName ();\r
-var fm = g.getFontMetrics (this.$font);\r
-var charWidth = fm.stringWidth (name) + 3;\r
-var charHeight = fm.getHeight ();\r
-var rect =  new java.awt.Rectangle (xend + 10, ypos - charHeight, charWidth, charHeight);\r
-this.nameHash.put (node.element (), rect);\r
-var selected = this.av.getSelectionGroup ();\r
-if (selected != null && selected.getSequences (null).contains (node.element ())) {\r
-g.setColor (java.awt.Color.gray);\r
-g.fillRect (xend + 10, ypos - charHeight + 3, charWidth, charHeight);\r
-g.setColor (java.awt.Color.white);\r
-}g.drawString (name, xend + 10, ypos);\r
-g.setColor (java.awt.Color.black);\r
-} else {\r
-this.drawNode (g, node.left (), chunk, scale, width, offx, offy);\r
-this.drawNode (g, node.right (), chunk, scale, width, offx, offy);\r
-var height = node.height;\r
-var dist = node.dist;\r
-var xstart = Clazz.floatToInt ((height - dist) * scale) + offx;\r
-var xend = Clazz.floatToInt (height * scale) + offx;\r
-var ypos = Clazz.floatToInt (node.ycount * chunk) + offy;\r
-g.setColor (node.color.darker ());\r
-g.drawLine (xstart, ypos, xend, ypos);\r
-if (node === this.highlightNode) {\r
-g.fillRect (xend - 3, ypos - 3, 6, 6);\r
-} else {\r
-g.fillRect (xend - 2, ypos - 2, 4, 4);\r
-}var ystart = Clazz.floatToInt ((node.left ()).ycount * chunk) + offy;\r
-var yend = Clazz.floatToInt ((node.right ()).ycount * chunk) + offy;\r
-var pos =  new java.awt.Rectangle (xend - 2, ypos - 2, 5, 5);\r
-this.nodeHash.put (node, pos);\r
-g.drawLine (Clazz.floatToInt (height * scale) + offx, ystart, Clazz.floatToInt (height * scale) + offx, yend);\r
-var nodeLabel = "";\r
-if (this.showDistances && (node.dist > 0)) {\r
-nodeLabel =  new jalview.util.Format ("%-.2f").formDouble (node.dist);\r
-}if (this.showBootstrap) {\r
-var btstrap = node.getBootstrap ();\r
-if (btstrap > -1) {\r
-if (this.showDistances) {\r
-nodeLabel = nodeLabel + " : ";\r
-}nodeLabel = nodeLabel + String.valueOf (node.getBootstrap ());\r
-}}if (!nodeLabel.equals ("")) {\r
-g.drawString (nodeLabel, xstart + 2, ypos - 2);\r
-}}}, "java.awt.Graphics,jalview.datamodel.SequenceNode,~N,~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "findElement", \r
-function (x, y) {\r
-var keys = this.nameHash.keys ();\r
-while (keys.hasMoreElements ()) {\r
-var ob = keys.nextElement ();\r
-var rect = this.nameHash.get (ob);\r
-if (x >= rect.x && x <= (rect.x + rect.width) && y >= rect.y && y <= (rect.y + rect.height)) {\r
-return ob;\r
-}}\r
-keys = this.nodeHash.keys ();\r
-while (keys.hasMoreElements ()) {\r
-var ob = keys.nextElement ();\r
-var rect = this.nodeHash.get (ob);\r
-if (x >= rect.x && x <= (rect.x + rect.width) && y >= rect.y && y <= (rect.y + rect.height)) {\r
-return ob;\r
-}}\r
-return null;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "pickNodes", \r
-function (pickBox) {\r
-var width = this.getSize ().width;\r
-var height = this.getSize ().height;\r
-var top = this.tree.getTopNode ();\r
-var wscale = (width * .8 - this.offx * 2) / this.tree.getMaxHeight ();\r
-if (top.count == 0) {\r
-top.count = (top.left ()).count + (top.right ()).count;\r
-}var chunk = (height - this.offy) / top.count;\r
-this.pickNode (pickBox, top, chunk, wscale, width, this.offx, this.offy);\r
-}, "java.awt.Rectangle");\r
-Clazz.defineMethod (c$, "pickNode", \r
-function (pickBox, node, chunk, scale, width, offx, offy) {\r
-if (node == null) {\r
-return;\r
-}if (node.left () == null && node.right () == null) {\r
-var height = node.height;\r
-var xend = Clazz.floatToInt (height * scale) + offx;\r
-var ypos = Clazz.floatToInt (node.ycount * chunk) + offy;\r
-if (pickBox.contains ( new java.awt.Point (xend, ypos))) {\r
-if (Clazz.instanceOf (node.element (), jalview.datamodel.SequenceI)) {\r
-var seq = node.element ();\r
-var sg = this.av.getSelectionGroup ();\r
-if (sg != null) {\r
-sg.addOrRemove (seq, true);\r
-}}}} else {\r
-this.pickNode (pickBox, node.left (), chunk, scale, width, offx, offy);\r
-this.pickNode (pickBox, node.right (), chunk, scale, width, offx, offy);\r
-}}, "java.awt.Rectangle,jalview.datamodel.SequenceNode,~N,~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "setColor", \r
-function (node, c) {\r
-if (node == null) {\r
-return;\r
-}if (node.left () == null && node.right () == null) {\r
-node.color = c;\r
-if (Clazz.instanceOf (node.element (), jalview.datamodel.SequenceI)) {\r
-this.av.setSequenceColour (node.element (), c);\r
-}} else {\r
-node.color = c;\r
-this.setColor (node.left (), c);\r
-this.setColor (node.right (), c);\r
-}}, "jalview.datamodel.SequenceNode,java.awt.Color");\r
-Clazz.overrideMethod (c$, "update", \r
-function (g) {\r
-this.paint (g);\r
-}, "java.awt.Graphics");\r
-Clazz.overrideMethod (c$, "paintComponent", \r
-function (g) {\r
-if (this.tree == null) {\r
-return;\r
-}if (this.nameHash.size () == 0) {\r
-this.repaint ();\r
-}var width = this.scrollPane.getSize ().width;\r
-var height = this.scrollPane.getSize ().height;\r
-if (!this.fitToWindow) {\r
-height = g.getFontMetrics (this.$font).getHeight () * this.nameHash.size ();\r
-}if (this.getSize ().width > width) {\r
-this.setSize ( new java.awt.Dimension (width, height));\r
-this.scrollPane.validate ();\r
-return;\r
-}this.setSize ( new java.awt.Dimension (width, height));\r
-g.setFont (this.$font);\r
-this.draw (g, width, height);\r
-this.validate ();\r
-}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "draw", \r
-function (g, width, height) {\r
-this.offy = this.$font.getSize () + 10;\r
-g.setColor (java.awt.Color.white);\r
-g.fillRect (0, 0, width, height);\r
-this.labelLength = g.getFontMetrics (this.$font).stringWidth (this.longestName) + 20;\r
-var wscale = (width - this.labelLength - this.offx * 2) / this.tree.getMaxHeight ();\r
-var top = this.tree.getTopNode ();\r
-if (top.count == 0) {\r
-top.count = (top.left ()).count + (top.right ()).count;\r
-}var chunk = (height - this.offy) / top.count;\r
-this.drawNode (g, this.tree.getTopNode (), chunk, wscale, width, this.offx, this.offy);\r
-if (this.threshold != 0) {\r
-if (this.av.getCurrentTree () === this.tree) {\r
-g.setColor (java.awt.Color.red);\r
-} else {\r
-g.setColor (java.awt.Color.gray);\r
-}var x = Clazz.floatToInt (this.threshold * (this.getSize ().width - this.labelLength - 2 * this.offx) + this.offx);\r
-g.drawLine (x, 0, x, this.getSize ().height);\r
-}}, "java.awt.Graphics,~N,~N");\r
-Clazz.overrideMethod (c$, "mouseReleased", \r
-function (e) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseEntered", \r
-function (e) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseExited", \r
-function (e) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (evt) {\r
-if (this.highlightNode != null) {\r
-if (evt.getClickCount () > 1) {\r
-this.tree.swapNodes (this.highlightNode);\r
-this.tree.reCount (this.tree.getTopNode ());\r
-this.tree.findHeight (this.tree.getTopNode ());\r
-} else {\r
-var leaves =  new java.util.Vector ();\r
-this.tree.findLeaves (this.highlightNode, leaves);\r
-for (var i = 0; i < leaves.size (); i++) {\r
-var seq = (leaves.elementAt (i)).element ();\r
-this.treeSelectionChanged (seq);\r
-}\r
-}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());\r
-this.repaint ();\r
-this.av.sendSelection ();\r
-}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseDragged", \r
-function (ect) {\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mouseMoved", \r
-function (evt) {\r
-this.av.setCurrentTree (this.tree);\r
-var ob = this.findElement (evt.getX (), evt.getY ());\r
-if (Clazz.instanceOf (ob, jalview.datamodel.SequenceNode)) {\r
-this.highlightNode = ob;\r
-this.repaint ();\r
-} else {\r
-if (this.highlightNode != null) {\r
-this.highlightNode = null;\r
-this.repaint ();\r
-}}}, "java.awt.event.MouseEvent");\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (e) {\r
-this.av.setCurrentTree (this.tree);\r
-var x = e.getX ();\r
-var y = e.getY ();\r
-var ob = this.findElement (x, y);\r
-if (Clazz.instanceOf (ob, jalview.datamodel.SequenceI)) {\r
-this.treeSelectionChanged (ob);\r
-jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());\r
-this.repaint ();\r
-this.av.sendSelection ();\r
-return;\r
-} else if (!(Clazz.instanceOf (ob, jalview.datamodel.SequenceNode))) {\r
-if (this.tree.getMaxHeight () != 0) {\r
-this.threshold = (x - this.offx) / (this.getSize ().width - this.labelLength - 2 * this.offx);\r
-this.tree.getGroups ().removeAllElements ();\r
-this.tree.groupNodes (this.tree.getTopNode (), this.threshold);\r
-this.setColor (this.tree.getTopNode (), java.awt.Color.black);\r
-this.av.setSelectionGroup (null);\r
-this.av.getAlignment ().deleteAllGroups ();\r
-this.av.clearSequenceColours ();\r
-var codingComplement = this.av.getCodingComplement ();\r
-if (codingComplement != null) {\r
-codingComplement.setSelectionGroup (null);\r
-codingComplement.getAlignment ().deleteAllGroups ();\r
-codingComplement.clearSequenceColours ();\r
-}this.colourGroups ();\r
-}}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());\r
-this.repaint ();\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "colourGroups", \r
-function () {\r
-for (var i = 0; i < this.tree.getGroups ().size (); i++) {\r
-var col =  new java.awt.Color (Clazz.doubleToInt (Math.random () * 255), Clazz.doubleToInt (Math.random () * 255), Clazz.doubleToInt (Math.random () * 255));\r
-this.setColor (this.tree.getGroups ().elementAt (i), col.brighter ());\r
-var l = this.tree.findLeaves (this.tree.getGroups ().elementAt (i),  new java.util.Vector ());\r
-var sequences =  new java.util.Vector ();\r
-for (var j = 0; j < l.size (); j++) {\r
-var s1 = (l.elementAt (j)).element ();\r
-if (!sequences.contains (s1)) {\r
-sequences.addElement (s1);\r
-}}\r
-var cs = null;\r
-var sg =  new jalview.datamodel.SequenceGroup (sequences, "", cs, true, true, false, 0, this.av.getAlignment ().getWidth () - 1);\r
-if (this.av.getGlobalColourScheme () != null) {\r
-if (Clazz.instanceOf (this.av.getGlobalColourScheme (), jalview.schemes.UserColourScheme)) {\r
-cs =  new jalview.schemes.UserColourScheme ((this.av.getGlobalColourScheme ()).getColours ());\r
-} else {\r
-cs = jalview.schemes.ColourSchemeProperty.getColour (sg, jalview.schemes.ColourSchemeProperty.getColourName (this.av.getGlobalColourScheme ()));\r
-}if (cs != null) {\r
-cs.setThreshold (this.av.getGlobalColourScheme ().getThreshold (), this.av.isIgnoreGapsConsensus ());\r
-}}sg.cs = cs;\r
-sg.setName ("JTreeGroup:" + sg.hashCode ());\r
-sg.setIdColour (col);\r
-if (this.av.getGlobalColourScheme () != null && this.av.getGlobalColourScheme ().conservationApplied ()) {\r
-var c =  new jalview.analysis.Conservation ("Group", jalview.schemes.ResidueProperties.propHash, 3, sg.getSequences (null), sg.getStartRes (), sg.getEndRes ());\r
-c.calculate ();\r
-c.verdict (false, this.av.getConsPercGaps ());\r
-cs.setConservation (c);\r
-sg.cs = cs;\r
-}this.av.getAlignment ().addGroup (sg);\r
-this.av.getAlignment ().addGroup (sg);\r
-var codingComplement = this.av.getCodingComplement ();\r
-if (codingComplement != null) {\r
-var mappedGroup = jalview.util.MappingUtils.mapSequenceGroup (sg, this.av, codingComplement);\r
-if (mappedGroup.getSequences ().size () > 0) {\r
-codingComplement.getAlignment ().addGroup (mappedGroup);\r
-for (var seq, $seq = mappedGroup.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-codingComplement.setSequenceColour (seq, col);\r
-}\r
-}}}\r
-this.ap.updateAnnotation ();\r
-if (this.av.getCodingComplement () != null) {\r
-(this.av.getCodingComplement ()).firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());\r
-}});\r
-Clazz.defineMethod (c$, "setShowDistances", \r
-function (state) {\r
-this.showDistances = state;\r
-this.repaint ();\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setShowBootstrap", \r
-function (state) {\r
-this.showBootstrap = state;\r
-this.repaint ();\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setMarkPlaceholders", \r
-function (state) {\r
-this.markPlaceholders = state;\r
-this.repaint ();\r
-}, "~B");\r
-Clazz.defineStatics (c$,\r
-"PLACEHOLDER", " * ");\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.util.Hashtable"], "jalview.appletgui.TreeCanvas", ["jalview.analysis.Conservation", "jalview.appletgui.PaintRefresher", "jalview.datamodel.SequenceGroup", "$.SequenceI", "$.SequenceNode", "jalview.schemes.ColourSchemeProperty", "$.ResidueProperties", "$.UserColourScheme", "jalview.util.Format", "$.MappingUtils", "java.awt.Color", "$.Dimension", "$.Point", "$.Rectangle", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.tree = null;
+this.scrollPane = null;
+this.av = null;
+this.$font = null;
+this.fitToWindow = true;
+this.showDistances = false;
+this.showBootstrap = false;
+this.markPlaceholders = false;
+this.offx = 20;
+this.offy = 0;
+this.threshold = 0;
+this.longestName = null;
+this.labelLength = -1;
+this.nameHash = null;
+this.nodeHash = null;
+this.highlightNode = null;
+this.ap = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "TreeCanvas", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz.prepareFields (c$, function () {
+this.nameHash =  new java.util.Hashtable ();
+this.nodeHash =  new java.util.Hashtable ();
+});
+Clazz.makeConstructor (c$, 
+function (ap, scroller) {
+Clazz.superConstructor (this, jalview.appletgui.TreeCanvas, []);
+this.ap = ap;
+this.av = ap.av;
+this.$font = this.av.getFont ();
+this.scrollPane = scroller;
+this.addMouseListener (this);
+this.addMouseMotionListener (this);
+this.setLayout (null);
+jalview.appletgui.PaintRefresher.Register (this, this.av.getSequenceSetId ());
+}, "jalview.appletgui.AlignmentPanel,awt2swing.ScrollPane");
+Clazz.defineMethod (c$, "treeSelectionChanged", 
+function (sequence) {
+var selected = this.av.getSelectionGroup ();
+if (selected == null) {
+selected =  new jalview.datamodel.SequenceGroup ();
+this.av.setSelectionGroup (selected);
+}selected.setEndRes (this.av.getAlignment ().getWidth () - 1);
+selected.addOrRemove (sequence, true);
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "setTree", 
+function (tree) {
+this.tree = tree;
+tree.findHeight (tree.getTopNode ());
+var leaves = tree.findLeaves (tree.getTopNode (),  new java.util.Vector ());
+var has_placeholders = false;
+this.longestName = "";
+for (var i = 0; i < leaves.size (); i++) {
+var lf = leaves.elementAt (i);
+if (lf.isPlaceholder ()) {
+has_placeholders = true;
+}if (this.longestName.length < (lf.element ()).getName ().length) {
+this.longestName = " * " + (lf.element ()).getName ();
+}}
+this.setMarkPlaceholders (has_placeholders);
+}, "jalview.analysis.NJTree");
+Clazz.defineMethod (c$, "drawNode", 
+function (g, node, chunk, scale, width, offx, offy) {
+if (node == null) {
+return;
+}if (node.left () == null && node.right () == null) {
+var height = node.height;
+var dist = node.dist;
+var xstart = Clazz.floatToInt ((height - dist) * scale) + offx;
+var xend = Clazz.floatToInt (height * scale) + offx;
+var ypos = Clazz.floatToInt (node.ycount * chunk) + offy;
+if (Clazz.instanceOf (node.element (), jalview.datamodel.SequenceI)) {
+var seq = node.element ();
+if (this.av.getSequenceColour (seq) === java.awt.Color.white) {
+g.setColor (java.awt.Color.black);
+} else {
+g.setColor (this.av.getSequenceColour (seq).darker ());
+}} else {
+g.setColor (java.awt.Color.black);
+}g.drawLine (xstart, ypos, xend, ypos);
+var nodeLabel = "";
+if (this.showDistances && node.dist > 0) {
+nodeLabel =  new jalview.util.Format ("%-.2f").formDouble (node.dist);
+}if (this.showBootstrap) {
+var btstrap = node.getBootstrap ();
+if (btstrap > -1) {
+if (this.showDistances) {
+nodeLabel = nodeLabel + " : ";
+}nodeLabel = nodeLabel + String.valueOf (node.getBootstrap ());
+}}if (!nodeLabel.equals ("")) {
+g.drawString (nodeLabel, xstart + 2, ypos - 2);
+}var name = (this.markPlaceholders && node.isPlaceholder ()) ? (" * " + node.getName ()) : node.getName ();
+var fm = g.getFontMetrics (this.$font);
+var charWidth = fm.stringWidth (name) + 3;
+var charHeight = fm.getHeight ();
+var rect =  new java.awt.Rectangle (xend + 10, ypos - charHeight, charWidth, charHeight);
+this.nameHash.put (node.element (), rect);
+var selected = this.av.getSelectionGroup ();
+if (selected != null && selected.getSequences (null).contains (node.element ())) {
+g.setColor (java.awt.Color.gray);
+g.fillRect (xend + 10, ypos - charHeight + 3, charWidth, charHeight);
+g.setColor (java.awt.Color.white);
+}g.drawString (name, xend + 10, ypos);
+g.setColor (java.awt.Color.black);
+} else {
+this.drawNode (g, node.left (), chunk, scale, width, offx, offy);
+this.drawNode (g, node.right (), chunk, scale, width, offx, offy);
+var height = node.height;
+var dist = node.dist;
+var xstart = Clazz.floatToInt ((height - dist) * scale) + offx;
+var xend = Clazz.floatToInt (height * scale) + offx;
+var ypos = Clazz.floatToInt (node.ycount * chunk) + offy;
+g.setColor (node.color.darker ());
+g.drawLine (xstart, ypos, xend, ypos);
+if (node === this.highlightNode) {
+g.fillRect (xend - 3, ypos - 3, 6, 6);
+} else {
+g.fillRect (xend - 2, ypos - 2, 4, 4);
+}var ystart = Clazz.floatToInt ((node.left ()).ycount * chunk) + offy;
+var yend = Clazz.floatToInt ((node.right ()).ycount * chunk) + offy;
+var pos =  new java.awt.Rectangle (xend - 2, ypos - 2, 5, 5);
+this.nodeHash.put (node, pos);
+g.drawLine (Clazz.floatToInt (height * scale) + offx, ystart, Clazz.floatToInt (height * scale) + offx, yend);
+var nodeLabel = "";
+if (this.showDistances && (node.dist > 0)) {
+nodeLabel =  new jalview.util.Format ("%-.2f").formDouble (node.dist);
+}if (this.showBootstrap) {
+var btstrap = node.getBootstrap ();
+if (btstrap > -1) {
+if (this.showDistances) {
+nodeLabel = nodeLabel + " : ";
+}nodeLabel = nodeLabel + String.valueOf (node.getBootstrap ());
+}}if (!nodeLabel.equals ("")) {
+g.drawString (nodeLabel, xstart + 2, ypos - 2);
+}}}, "java.awt.Graphics,jalview.datamodel.SequenceNode,~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "findElement", 
+function (x, y) {
+var keys = this.nameHash.keys ();
+while (keys.hasMoreElements ()) {
+var ob = keys.nextElement ();
+var rect = this.nameHash.get (ob);
+if (x >= rect.x && x <= (rect.x + rect.width) && y >= rect.y && y <= (rect.y + rect.height)) {
+return ob;
+}}
+keys = this.nodeHash.keys ();
+while (keys.hasMoreElements ()) {
+var ob = keys.nextElement ();
+var rect = this.nodeHash.get (ob);
+if (x >= rect.x && x <= (rect.x + rect.width) && y >= rect.y && y <= (rect.y + rect.height)) {
+return ob;
+}}
+return null;
+}, "~N,~N");
+Clazz.defineMethod (c$, "pickNodes", 
+function (pickBox) {
+var width = this.getSize ().width;
+var height = this.getSize ().height;
+var top = this.tree.getTopNode ();
+var wscale = (width * .8 - this.offx * 2) / this.tree.getMaxHeight ();
+if (top.count == 0) {
+top.count = (top.left ()).count + (top.right ()).count;
+}var chunk = (height - this.offy) / top.count;
+this.pickNode (pickBox, top, chunk, wscale, width, this.offx, this.offy);
+}, "java.awt.Rectangle");
+Clazz.defineMethod (c$, "pickNode", 
+function (pickBox, node, chunk, scale, width, offx, offy) {
+if (node == null) {
+return;
+}if (node.left () == null && node.right () == null) {
+var height = node.height;
+var xend = Clazz.floatToInt (height * scale) + offx;
+var ypos = Clazz.floatToInt (node.ycount * chunk) + offy;
+if (pickBox.contains ( new java.awt.Point (xend, ypos))) {
+if (Clazz.instanceOf (node.element (), jalview.datamodel.SequenceI)) {
+var seq = node.element ();
+var sg = this.av.getSelectionGroup ();
+if (sg != null) {
+sg.addOrRemove (seq, true);
+}}}} else {
+this.pickNode (pickBox, node.left (), chunk, scale, width, offx, offy);
+this.pickNode (pickBox, node.right (), chunk, scale, width, offx, offy);
+}}, "java.awt.Rectangle,jalview.datamodel.SequenceNode,~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "setColor", 
+function (node, c) {
+if (node == null) {
+return;
+}if (node.left () == null && node.right () == null) {
+node.color = c;
+if (Clazz.instanceOf (node.element (), jalview.datamodel.SequenceI)) {
+this.av.setSequenceColour (node.element (), c);
+}} else {
+node.color = c;
+this.setColor (node.left (), c);
+this.setColor (node.right (), c);
+}}, "jalview.datamodel.SequenceNode,java.awt.Color");
+Clazz.overrideMethod (c$, "update", 
+function (g) {
+this.paint (g);
+}, "java.awt.Graphics");
+Clazz.overrideMethod (c$, "paintComponent", 
+function (g) {
+if (this.tree == null) {
+return;
+}if (this.nameHash.size () == 0) {
+this.repaint ();
+}var width = this.scrollPane.getSize ().width;
+var height = this.scrollPane.getSize ().height;
+if (!this.fitToWindow) {
+height = g.getFontMetrics (this.$font).getHeight () * this.nameHash.size ();
+}if (this.getSize ().width > width) {
+this.setSize ( new java.awt.Dimension (width, height));
+this.scrollPane.validate ();
+return;
+}this.setSize ( new java.awt.Dimension (width, height));
+g.setFont (this.$font);
+this.draw (g, width, height);
+this.validate ();
+}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "draw", 
+function (g, width, height) {
+this.offy = this.$font.getSize () + 10;
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, width, height);
+this.labelLength = g.getFontMetrics (this.$font).stringWidth (this.longestName) + 20;
+var wscale = (width - this.labelLength - this.offx * 2) / this.tree.getMaxHeight ();
+var top = this.tree.getTopNode ();
+if (top.count == 0) {
+top.count = (top.left ()).count + (top.right ()).count;
+}var chunk = (height - this.offy) / top.count;
+this.drawNode (g, this.tree.getTopNode (), chunk, wscale, width, this.offx, this.offy);
+if (this.threshold != 0) {
+if (this.av.getCurrentTree () === this.tree) {
+g.setColor (java.awt.Color.red);
+} else {
+g.setColor (java.awt.Color.gray);
+}var x = Clazz.floatToInt (this.threshold * (this.getSize ().width - this.labelLength - 2 * this.offx) + this.offx);
+g.drawLine (x, 0, x, this.getSize ().height);
+}}, "java.awt.Graphics,~N,~N");
+Clazz.overrideMethod (c$, "mouseReleased", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseEntered", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseExited", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (evt) {
+if (this.highlightNode != null) {
+if (evt.getClickCount () > 1) {
+this.tree.swapNodes (this.highlightNode);
+this.tree.reCount (this.tree.getTopNode ());
+this.tree.findHeight (this.tree.getTopNode ());
+} else {
+var leaves =  new java.util.Vector ();
+this.tree.findLeaves (this.highlightNode, leaves);
+for (var i = 0; i < leaves.size (); i++) {
+var seq = (leaves.elementAt (i)).element ();
+this.treeSelectionChanged (seq);
+}
+}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.repaint ();
+this.av.sendSelection ();
+}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseDragged", 
+function (ect) {
+}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mouseMoved", 
+function (evt) {
+this.av.setCurrentTree (this.tree);
+var ob = this.findElement (evt.getX (), evt.getY ());
+if (Clazz.instanceOf (ob, jalview.datamodel.SequenceNode)) {
+this.highlightNode = ob;
+this.repaint ();
+} else {
+if (this.highlightNode != null) {
+this.highlightNode = null;
+this.repaint ();
+}}}, "java.awt.event.MouseEvent");
+Clazz.overrideMethod (c$, "mousePressed", 
+function (e) {
+this.av.setCurrentTree (this.tree);
+var x = e.getX ();
+var y = e.getY ();
+var ob = this.findElement (x, y);
+if (Clazz.instanceOf (ob, jalview.datamodel.SequenceI)) {
+this.treeSelectionChanged (ob);
+jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.repaint ();
+this.av.sendSelection ();
+return;
+} else if (!(Clazz.instanceOf (ob, jalview.datamodel.SequenceNode))) {
+if (this.tree.getMaxHeight () != 0) {
+this.threshold = (x - this.offx) / (this.getSize ().width - this.labelLength - 2 * this.offx);
+this.tree.getGroups ().removeAllElements ();
+this.tree.groupNodes (this.tree.getTopNode (), this.threshold);
+this.setColor (this.tree.getTopNode (), java.awt.Color.black);
+this.av.setSelectionGroup (null);
+this.av.getAlignment ().deleteAllGroups ();
+this.av.clearSequenceColours ();
+var codingComplement = this.av.getCodingComplement ();
+if (codingComplement != null) {
+codingComplement.setSelectionGroup (null);
+codingComplement.getAlignment ().deleteAllGroups ();
+codingComplement.clearSequenceColours ();
+}this.colourGroups ();
+}}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "colourGroups", 
+function () {
+for (var i = 0; i < this.tree.getGroups ().size (); i++) {
+var col =  new java.awt.Color (Clazz.doubleToInt (Math.random () * 255), Clazz.doubleToInt (Math.random () * 255), Clazz.doubleToInt (Math.random () * 255));
+this.setColor (this.tree.getGroups ().elementAt (i), col.brighter ());
+var l = this.tree.findLeaves (this.tree.getGroups ().elementAt (i),  new java.util.Vector ());
+var sequences =  new java.util.Vector ();
+for (var j = 0; j < l.size (); j++) {
+var s1 = (l.elementAt (j)).element ();
+if (!sequences.contains (s1)) {
+sequences.addElement (s1);
+}}
+var cs = null;
+var sg =  new jalview.datamodel.SequenceGroup (sequences, "", cs, true, true, false, 0, this.av.getAlignment ().getWidth () - 1);
+if (this.av.getGlobalColourScheme () != null) {
+if (Clazz.instanceOf (this.av.getGlobalColourScheme (), jalview.schemes.UserColourScheme)) {
+cs =  new jalview.schemes.UserColourScheme ((this.av.getGlobalColourScheme ()).getColours ());
+} else {
+cs = jalview.schemes.ColourSchemeProperty.getColour (sg, jalview.schemes.ColourSchemeProperty.getColourName (this.av.getGlobalColourScheme ()));
+}if (cs != null) {
+cs.setThreshold (this.av.getGlobalColourScheme ().getThreshold (), this.av.isIgnoreGapsConsensus ());
+}}sg.cs = cs;
+sg.setName ("JTreeGroup:" + sg.hashCode ());
+sg.setIdColour (col);
+if (this.av.getGlobalColourScheme () != null && this.av.getGlobalColourScheme ().conservationApplied ()) {
+var c =  new jalview.analysis.Conservation ("Group", jalview.schemes.ResidueProperties.propHash, 3, sg.getSequences (null), sg.getStartRes (), sg.getEndRes ());
+c.calculate ();
+c.verdict (false, this.av.getConsPercGaps ());
+cs.setConservation (c);
+sg.cs = cs;
+}this.av.getAlignment ().addGroup (sg);
+this.av.getAlignment ().addGroup (sg);
+var codingComplement = this.av.getCodingComplement ();
+if (codingComplement != null) {
+var mappedGroup = jalview.util.MappingUtils.mapSequenceGroup (sg, this.av, codingComplement);
+if (mappedGroup.getSequences ().size () > 0) {
+codingComplement.getAlignment ().addGroup (mappedGroup);
+for (var seq, $seq = mappedGroup.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+codingComplement.setSequenceColour (seq, col);
+}
+}}}
+this.ap.updateAnnotation ();
+if (this.av.getCodingComplement () != null) {
+(this.av.getCodingComplement ()).firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
+}});
+Clazz.defineMethod (c$, "setShowDistances", 
+function (state) {
+this.showDistances = state;
+this.repaint ();
+}, "~B");
+Clazz.defineMethod (c$, "setShowBootstrap", 
+function (state) {
+this.showBootstrap = state;
+this.repaint ();
+}, "~B");
+Clazz.defineMethod (c$, "setMarkPlaceholders", 
+function (state) {
+this.markPlaceholders = state;
+this.repaint ();
+}, "~B");
+Clazz.defineStatics (c$,
+"PLACEHOLDER", " * ");
+});
index 9a214e5..cd993a2 100644 (file)
Binary files a/bin/jalview/appletgui/TreePanel$TreeLoader.class and b/bin/jalview/appletgui/TreePanel$TreeLoader.class differ
index a2409c8..b8a678d 100644 (file)
Binary files a/bin/jalview/appletgui/TreePanel.class and b/bin/jalview/appletgui/TreePanel.class differ
index 4d0d747..77a1db5 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["jalview.appletgui.EmbmenuFrame", "java.awt.event.ActionListener", "$.ItemListener", "java.lang.Thread", "awt2swing.CheckboxMenuItem", "$.Menu", "$.MenuBar", "$.MenuItem", "$.ScrollPane", "java.awt.BorderLayout"], "jalview.appletgui.TreePanel", ["awt2swing.Frame", "jalview.analysis.NJTree", "jalview.api.analysis.ViewBasedAnalysisI", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.FontChooser", "$.TreeCanvas", "jalview.bin.JalviewLite", "jalview.datamodel.Alignment", "jalview.io.NewickFile", "jalview.schemes.ResidueProperties", "jalview.util.MessageManager", "java.awt.Color", "$.Font"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.seq = null;\r
-this.$type = null;\r
-this.pwtype = null;\r
-this.start = 0;\r
-this.end = 0;\r
-this.treeCanvas = null;\r
-this.tree = null;\r
-this.ap = null;\r
-this.av = null;\r
-if (!Clazz.isClassDefined ("jalview.appletgui.TreePanel.TreeLoader")) {\r
-jalview.appletgui.TreePanel.$TreePanel$TreeLoader$ ();\r
-}\r
-this.borderLayout1 = null;\r
-this.scrollPane = null;\r
-this.jMenuBar1 = null;\r
-this.jMenu2 = null;\r
-this.fontSize = null;\r
-this.bootstrapMenu = null;\r
-this.distanceMenu = null;\r
-this.placeholdersMenu = null;\r
-this.fitToWindow = null;\r
-this.fileMenu = null;\r
-this.newickOutput = null;\r
-this.inputData = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "TreePanel", jalview.appletgui.EmbmenuFrame, [java.awt.event.ActionListener, java.awt.event.ItemListener]);\r
-Clazz.prepareFields (c$, function () {\r
-this.borderLayout1 =  new java.awt.BorderLayout ();\r
-this.scrollPane =  new awt2swing.ScrollPane ();\r
-this.jMenuBar1 =  new awt2swing.MenuBar ();\r
-this.jMenu2 =  new awt2swing.Menu ();\r
-this.fontSize =  new awt2swing.MenuItem ();\r
-this.bootstrapMenu =  new awt2swing.CheckboxMenuItem ();\r
-this.distanceMenu =  new awt2swing.CheckboxMenuItem ();\r
-this.placeholdersMenu =  new awt2swing.CheckboxMenuItem ();\r
-this.fitToWindow =  new awt2swing.CheckboxMenuItem ();\r
-this.fileMenu =  new awt2swing.Menu ();\r
-this.newickOutput =  new awt2swing.MenuItem ();\r
-this.inputData =  new awt2swing.MenuItem ();\r
-});\r
-Clazz.defineMethod (c$, "getTree", \r
-function () {\r
-return this.tree;\r
-});\r
-Clazz.defineMethod (c$, "finalize", \r
-function () {\r
-this.ap = null;\r
-this.av = null;\r
-Clazz.superCall (this, jalview.appletgui.TreePanel, "finalize", []);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (ap, type, pwtype) {\r
-Clazz.superConstructor (this, jalview.appletgui.TreePanel, []);\r
-try {\r
-this.jbInit ();\r
-this.setMenuBar (this.jMenuBar1);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-this.initTreePanel (ap, type, pwtype, null);\r
-}, "jalview.appletgui.AlignmentPanel,~S,~S");\r
-Clazz.makeConstructor (c$, \r
-function (ap, type, pwtype, newtree) {\r
-Clazz.superConstructor (this, jalview.appletgui.TreePanel, []);\r
-try {\r
-this.jbInit ();\r
-this.setMenuBar (this.jMenuBar1);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.initTreePanel (ap, type, pwtype, newtree);\r
-}, "jalview.appletgui.AlignmentPanel,~S,~S,jalview.io.NewickFile");\r
-Clazz.defineMethod (c$, "initTreePanel", \r
-function (ap, type, pwtype, newTree) {\r
-this.ap = ap;\r
-this.av = ap.av;\r
-this.$type = type;\r
-this.pwtype = pwtype;\r
-this.treeCanvas =  new jalview.appletgui.TreeCanvas (ap, this.scrollPane);\r
-var tl = Clazz.innerTypeInstance (jalview.appletgui.TreePanel.TreeLoader, this, null, newTree);\r
-tl.start ();\r
-this.embedMenuIfNeeded (this.treeCanvas);\r
-this.scrollPane.add (this.treeCanvas, "Center");\r
-}, "jalview.appletgui.AlignmentPanel,~S,~S,jalview.io.NewickFile");\r
-Clazz.defineMethod (c$, "showOriginalData", \r
-function () {\r
-if (this.tree.seqData != null) {\r
-var gc = '-';\r
-try {\r
-gc = this.av.getGapCharacter ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-;var alAndColsel = this.tree.seqData.getAlignmentAndColumnSelection (gc);\r
-if (alAndColsel != null && alAndColsel[0] != null) {\r
-var al =  new jalview.datamodel.Alignment (alAndColsel[0]);\r
-var af =  new jalview.appletgui.AlignFrame (al, this.av.applet, "Original Data for Tree", false);\r
-af.viewport.setHiddenColumns (alAndColsel[1]);\r
-}} else {\r
-System.out.println ("Original Tree Data not available");\r
-}});\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-if (evt.getSource () === this.newickOutput) {\r
-this.newickOutput_actionPerformed ();\r
-} else if (evt.getSource () === this.fontSize) {\r
-this.fontSize_actionPerformed ();\r
-} else if (evt.getSource () === this.inputData) {\r
-this.showOriginalData ();\r
-}}, "java.awt.event.ActionEvent");\r
-Clazz.overrideMethod (c$, "itemStateChanged", \r
-function (evt) {\r
-if (evt.getSource () === this.fitToWindow) {\r
-this.treeCanvas.fitToWindow = this.fitToWindow.getState ();\r
-} else if (evt.getSource () === this.distanceMenu) {\r
-this.treeCanvas.setShowDistances (this.distanceMenu.getState ());\r
-} else if (evt.getSource () === this.bootstrapMenu) {\r
-this.treeCanvas.setShowBootstrap (this.bootstrapMenu.getState ());\r
-} else if (evt.getSource () === this.placeholdersMenu) {\r
-this.treeCanvas.setMarkPlaceholders (this.placeholdersMenu.getState ());\r
-}this.treeCanvas.repaint ();\r
-}, "java.awt.event.ItemEvent");\r
-Clazz.defineMethod (c$, "newickOutput_actionPerformed", \r
-function () {\r
-var fout =  new jalview.io.NewickFile (this.tree.getTopNode ());\r
-var output = fout.print (false, true);\r
-var cap =  new jalview.appletgui.CutAndPasteTransfer (false, null);\r
-cap.setText (output);\r
-var frame =  new awt2swing.Frame ();\r
-frame.add (cap);\r
-jalview.bin.JalviewLite.addFrame (frame, this.$type + " " + this.pwtype, 500, 100);\r
-});\r
-Clazz.defineMethod (c$, "getTreeFont", \r
-function () {\r
-return this.treeCanvas.$font;\r
-});\r
-Clazz.defineMethod (c$, "setTreeFont", \r
-function (font) {\r
-this.treeCanvas.$font = font;\r
-this.treeCanvas.repaint ();\r
-}, "java.awt.Font");\r
-Clazz.defineMethod (c$, "fontSize_actionPerformed", \r
-function () {\r
-if (this.treeCanvas == null) {\r
-return;\r
-} new jalview.appletgui.FontChooser (this);\r
-});\r
-Clazz.defineMethod (c$, "jbInit", \r
-($fz = function () {\r
-this.setLayout (this.borderLayout1);\r
-this.setBackground (java.awt.Color.white);\r
-this.setFont ( new java.awt.Font ("Verdana", 0, 12));\r
-this.jMenu2.setLabel (jalview.util.MessageManager.getString ("action.view"));\r
-this.fontSize.setLabel (jalview.util.MessageManager.getString ("action.font"));\r
-this.fontSize.addActionListener (this);\r
-this.bootstrapMenu.setLabel (jalview.util.MessageManager.getString ("label.show_bootstrap_values"));\r
-this.bootstrapMenu.addItemListener (this);\r
-this.distanceMenu.setLabel (jalview.util.MessageManager.getString ("label.show_distances"));\r
-this.distanceMenu.addItemListener (this);\r
-this.placeholdersMenu.setLabel (jalview.util.MessageManager.getString ("label.mark_unassociated_leaves"));\r
-this.placeholdersMenu.addItemListener (this);\r
-this.fitToWindow.setState (true);\r
-this.fitToWindow.setLabel (jalview.util.MessageManager.getString ("label.fit_to_window"));\r
-this.fitToWindow.addItemListener (this);\r
-this.fileMenu.setLabel (jalview.util.MessageManager.getString ("action.file"));\r
-this.newickOutput.setLabel (jalview.util.MessageManager.getString ("label.newick_format"));\r
-this.newickOutput.addActionListener (this);\r
-this.inputData.setLabel (jalview.util.MessageManager.getString ("label.input_data"));\r
-this.add (this.scrollPane, "Center");\r
-this.jMenuBar1.add (this.fileMenu);\r
-this.jMenuBar1.add (this.jMenu2);\r
-this.jMenu2.add (this.fitToWindow);\r
-this.jMenu2.add (this.fontSize);\r
-this.jMenu2.add (this.distanceMenu);\r
-this.jMenu2.add (this.bootstrapMenu);\r
-this.jMenu2.add (this.placeholdersMenu);\r
-this.fileMenu.add (this.newickOutput);\r
-this.fileMenu.add (this.inputData);\r
-this.inputData.addActionListener (this);\r
-}, $fz.isPrivate = true, $fz));\r
-c$.$TreePanel$TreeLoader$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.newtree = null;\r
-this.odata = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui.TreePanel, "TreeLoader", Thread);\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-Clazz.superConstructor (this, jalview.appletgui.TreePanel.TreeLoader, []);\r
-this.newtree = a;\r
-}, "jalview.io.NewickFile");\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-if (this.newtree != null) {\r
-if (this.odata == null) {\r
-this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray (), this.newtree);\r
-} else {\r
-this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray (), this.odata, this.newtree);\r
-}} else {\r
-var a;\r
-var b;\r
-var c;\r
-var d = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup () != null && this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getSize () > 1;\r
-var e = this.b$["jalview.appletgui.TreePanel"].av.getAlignmentView (d);\r
-if (!d) {\r
-a = 0;\r
-b = this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getWidth ();\r
-c = this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray ();\r
-} else {\r
-a = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getStartRes ();\r
-b = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getEndRes () + 1;\r
-c = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getSequencesInOrder (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ());\r
-}var f = jalview.schemes.ResidueProperties.getScoreModel (this.b$["jalview.appletgui.TreePanel"].pwtype);\r
-if (Clazz.instanceOf (f, jalview.api.analysis.ViewBasedAnalysisI)) {\r
-try {\r
-f = f.getClass ().newInstance ();\r
-(f).configureFromAlignmentView (this.b$["jalview.appletgui.TreePanel"].treeCanvas.ap);\r
-} catch (q) {\r
-if (Clazz.exceptionOf (q, Exception)) {\r
-System.err.println ("Couldn't create a scoremodel instance for " + f.getName ());\r
-q.printStackTrace ();\r
-} else {\r
-throw q;\r
-}\r
-}\r
-this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (c, e, this.b$["jalview.appletgui.TreePanel"].$type, this.b$["jalview.appletgui.TreePanel"].pwtype, f, a, b);\r
-} else {\r
-this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (c, e, this.b$["jalview.appletgui.TreePanel"].$type, this.b$["jalview.appletgui.TreePanel"].pwtype, null, a, b);\r
-}}this.b$["jalview.appletgui.TreePanel"].tree.reCount (this.b$["jalview.appletgui.TreePanel"].tree.getTopNode ());\r
-this.b$["jalview.appletgui.TreePanel"].tree.findHeight (this.b$["jalview.appletgui.TreePanel"].tree.getTopNode ());\r
-this.b$["jalview.appletgui.TreePanel"].treeCanvas.setTree (this.b$["jalview.appletgui.TreePanel"].tree);\r
-if (this.newtree != null) {\r
-var a = this.newtree.HasDistances () && this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showTreeDistances", this.newtree.HasDistances ());\r
-var b = this.newtree.HasBootstrap () && this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showTreeBootstraps", this.newtree.HasBootstrap ());\r
-this.b$["jalview.appletgui.TreePanel"].distanceMenu.setState (a);\r
-this.b$["jalview.appletgui.TreePanel"].bootstrapMenu.setState (b);\r
-this.b$["jalview.appletgui.TreePanel"].treeCanvas.setShowBootstrap (b);\r
-this.b$["jalview.appletgui.TreePanel"].treeCanvas.setShowDistances (a);\r
-this.b$["jalview.appletgui.TreePanel"].treeCanvas.setMarkPlaceholders (this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showUnlinkedTreeNodes", false));\r
-}this.b$["jalview.appletgui.TreePanel"].treeCanvas.repaint ();\r
-this.b$["jalview.appletgui.TreePanel"].av.setCurrentTree (this.b$["jalview.appletgui.TreePanel"].tree);\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["jalview.appletgui.EmbmenuFrame", "java.awt.event.ActionListener", "$.ItemListener", "java.lang.Thread", "awt2swing.CheckboxMenuItem", "$.Menu", "$.MenuBar", "$.MenuItem", "$.ScrollPane", "java.awt.BorderLayout"], "jalview.appletgui.TreePanel", ["awt2swing.Frame", "jalview.analysis.NJTree", "jalview.api.analysis.ViewBasedAnalysisI", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.FontChooser", "$.TreeCanvas", "jalview.bin.JalviewLite", "jalview.datamodel.Alignment", "jalview.io.NewickFile", "jalview.schemes.ResidueProperties", "jalview.util.MessageManager", "java.awt.Color", "$.Font"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.seq = null;
+this.$type = null;
+this.pwtype = null;
+this.start = 0;
+this.end = 0;
+this.treeCanvas = null;
+this.tree = null;
+this.ap = null;
+this.av = null;
+if (!Clazz.isClassDefined ("jalview.appletgui.TreePanel.TreeLoader")) {
+jalview.appletgui.TreePanel.$TreePanel$TreeLoader$ ();
+}
+this.borderLayout1 = null;
+this.scrollPane = null;
+this.jMenuBar1 = null;
+this.jMenu2 = null;
+this.fontSize = null;
+this.bootstrapMenu = null;
+this.distanceMenu = null;
+this.placeholdersMenu = null;
+this.fitToWindow = null;
+this.fileMenu = null;
+this.newickOutput = null;
+this.inputData = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "TreePanel", jalview.appletgui.EmbmenuFrame, [java.awt.event.ActionListener, java.awt.event.ItemListener]);
+Clazz.prepareFields (c$, function () {
+this.borderLayout1 =  new java.awt.BorderLayout ();
+this.scrollPane =  new awt2swing.ScrollPane ();
+this.jMenuBar1 =  new awt2swing.MenuBar ();
+this.jMenu2 =  new awt2swing.Menu ();
+this.fontSize =  new awt2swing.MenuItem ();
+this.bootstrapMenu =  new awt2swing.CheckboxMenuItem ();
+this.distanceMenu =  new awt2swing.CheckboxMenuItem ();
+this.placeholdersMenu =  new awt2swing.CheckboxMenuItem ();
+this.fitToWindow =  new awt2swing.CheckboxMenuItem ();
+this.fileMenu =  new awt2swing.Menu ();
+this.newickOutput =  new awt2swing.MenuItem ();
+this.inputData =  new awt2swing.MenuItem ();
+});
+Clazz.defineMethod (c$, "getTree", 
+function () {
+return this.tree;
+});
+Clazz.defineMethod (c$, "finalize", 
+function () {
+this.ap = null;
+this.av = null;
+Clazz.superCall (this, jalview.appletgui.TreePanel, "finalize", []);
+});
+Clazz.makeConstructor (c$, 
+function (ap, type, pwtype) {
+Clazz.superConstructor (this, jalview.appletgui.TreePanel, []);
+try {
+this.jbInit ();
+this.setMenuBar (this.jMenuBar1);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+this.initTreePanel (ap, type, pwtype, null);
+}, "jalview.appletgui.AlignmentPanel,~S,~S");
+Clazz.makeConstructor (c$, 
+function (ap, type, pwtype, newtree) {
+Clazz.superConstructor (this, jalview.appletgui.TreePanel, []);
+try {
+this.jbInit ();
+this.setMenuBar (this.jMenuBar1);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.initTreePanel (ap, type, pwtype, newtree);
+}, "jalview.appletgui.AlignmentPanel,~S,~S,jalview.io.NewickFile");
+Clazz.defineMethod (c$, "initTreePanel", 
+function (ap, type, pwtype, newTree) {
+this.ap = ap;
+this.av = ap.av;
+this.$type = type;
+this.pwtype = pwtype;
+this.treeCanvas =  new jalview.appletgui.TreeCanvas (ap, this.scrollPane);
+var tl = Clazz.innerTypeInstance (jalview.appletgui.TreePanel.TreeLoader, this, null, newTree);
+tl.start ();
+this.embedMenuIfNeeded (this.treeCanvas);
+this.scrollPane.add (this.treeCanvas, "Center");
+}, "jalview.appletgui.AlignmentPanel,~S,~S,jalview.io.NewickFile");
+Clazz.defineMethod (c$, "showOriginalData", 
+function () {
+if (this.tree.seqData != null) {
+var gc = '-';
+try {
+gc = this.av.getGapCharacter ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+;var alAndColsel = this.tree.seqData.getAlignmentAndColumnSelection (gc);
+if (alAndColsel != null && alAndColsel[0] != null) {
+var al =  new jalview.datamodel.Alignment (alAndColsel[0]);
+var af =  new jalview.appletgui.AlignFrame (al, this.av.applet, "Original Data for Tree", false);
+af.viewport.setHiddenColumns (alAndColsel[1]);
+}} else {
+System.out.println ("Original Tree Data not available");
+}});
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.newickOutput) {
+this.newickOutput_actionPerformed ();
+} else if (evt.getSource () === this.fontSize) {
+this.fontSize_actionPerformed ();
+} else if (evt.getSource () === this.inputData) {
+this.showOriginalData ();
+}}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+if (evt.getSource () === this.fitToWindow) {
+this.treeCanvas.fitToWindow = this.fitToWindow.getState ();
+} else if (evt.getSource () === this.distanceMenu) {
+this.treeCanvas.setShowDistances (this.distanceMenu.getState ());
+} else if (evt.getSource () === this.bootstrapMenu) {
+this.treeCanvas.setShowBootstrap (this.bootstrapMenu.getState ());
+} else if (evt.getSource () === this.placeholdersMenu) {
+this.treeCanvas.setMarkPlaceholders (this.placeholdersMenu.getState ());
+}this.treeCanvas.repaint ();
+}, "java.awt.event.ItemEvent");
+Clazz.defineMethod (c$, "newickOutput_actionPerformed", 
+function () {
+var fout =  new jalview.io.NewickFile (this.tree.getTopNode ());
+var output = fout.print (false, true);
+var cap =  new jalview.appletgui.CutAndPasteTransfer (false, null);
+cap.setText (output);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, this.$type + " " + this.pwtype, 500, 100);
+});
+Clazz.defineMethod (c$, "getTreeFont", 
+function () {
+return this.treeCanvas.$font;
+});
+Clazz.defineMethod (c$, "setTreeFont", 
+function (font) {
+this.treeCanvas.$font = font;
+this.treeCanvas.repaint ();
+}, "java.awt.Font");
+Clazz.defineMethod (c$, "fontSize_actionPerformed", 
+function () {
+if (this.treeCanvas == null) {
+return;
+} new jalview.appletgui.FontChooser (this);
+});
+Clazz.defineMethod (c$, "jbInit", 
+($fz = function () {
+this.setLayout (this.borderLayout1);
+this.setBackground (java.awt.Color.white);
+this.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jMenu2.setLabel (jalview.util.MessageManager.getString ("action.view"));
+this.fontSize.setLabel (jalview.util.MessageManager.getString ("action.font"));
+this.fontSize.addActionListener (this);
+this.bootstrapMenu.setLabel (jalview.util.MessageManager.getString ("label.show_bootstrap_values"));
+this.bootstrapMenu.addItemListener (this);
+this.distanceMenu.setLabel (jalview.util.MessageManager.getString ("label.show_distances"));
+this.distanceMenu.addItemListener (this);
+this.placeholdersMenu.setLabel (jalview.util.MessageManager.getString ("label.mark_unassociated_leaves"));
+this.placeholdersMenu.addItemListener (this);
+this.fitToWindow.setState (true);
+this.fitToWindow.setLabel (jalview.util.MessageManager.getString ("label.fit_to_window"));
+this.fitToWindow.addItemListener (this);
+this.fileMenu.setLabel (jalview.util.MessageManager.getString ("action.file"));
+this.newickOutput.setLabel (jalview.util.MessageManager.getString ("label.newick_format"));
+this.newickOutput.addActionListener (this);
+this.inputData.setLabel (jalview.util.MessageManager.getString ("label.input_data"));
+this.add (this.scrollPane, "Center");
+this.jMenuBar1.add (this.fileMenu);
+this.jMenuBar1.add (this.jMenu2);
+this.jMenu2.add (this.fitToWindow);
+this.jMenu2.add (this.fontSize);
+this.jMenu2.add (this.distanceMenu);
+this.jMenu2.add (this.bootstrapMenu);
+this.jMenu2.add (this.placeholdersMenu);
+this.fileMenu.add (this.newickOutput);
+this.fileMenu.add (this.inputData);
+this.inputData.addActionListener (this);
+}, $fz.isPrivate = true, $fz));
+c$.$TreePanel$TreeLoader$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.newtree = null;
+this.odata = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui.TreePanel, "TreeLoader", Thread);
+Clazz.makeConstructor (c$, 
+function (a) {
+Clazz.superConstructor (this, jalview.appletgui.TreePanel.TreeLoader, []);
+this.newtree = a;
+}, "jalview.io.NewickFile");
+Clazz.overrideMethod (c$, "run", 
+function () {
+if (this.newtree != null) {
+if (this.odata == null) {
+this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray (), this.newtree);
+} else {
+this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray (), this.odata, this.newtree);
+}} else {
+var a;
+var b;
+var c;
+var d = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup () != null && this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getSize () > 1;
+var e = this.b$["jalview.appletgui.TreePanel"].av.getAlignmentView (d);
+if (!d) {
+a = 0;
+b = this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getWidth ();
+c = this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray ();
+} else {
+a = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getStartRes ();
+b = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getEndRes () + 1;
+c = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getSequencesInOrder (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ());
+}var f = jalview.schemes.ResidueProperties.getScoreModel (this.b$["jalview.appletgui.TreePanel"].pwtype);
+if (Clazz.instanceOf (f, jalview.api.analysis.ViewBasedAnalysisI)) {
+try {
+f = f.getClass ().newInstance ();
+(f).configureFromAlignmentView (this.b$["jalview.appletgui.TreePanel"].treeCanvas.ap);
+} catch (q) {
+if (Clazz.exceptionOf (q, Exception)) {
+System.err.println ("Couldn't create a scoremodel instance for " + f.getName ());
+q.printStackTrace ();
+} else {
+throw q;
+}
+}
+this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (c, e, this.b$["jalview.appletgui.TreePanel"].$type, this.b$["jalview.appletgui.TreePanel"].pwtype, f, a, b);
+} else {
+this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (c, e, this.b$["jalview.appletgui.TreePanel"].$type, this.b$["jalview.appletgui.TreePanel"].pwtype, null, a, b);
+}}this.b$["jalview.appletgui.TreePanel"].tree.reCount (this.b$["jalview.appletgui.TreePanel"].tree.getTopNode ());
+this.b$["jalview.appletgui.TreePanel"].tree.findHeight (this.b$["jalview.appletgui.TreePanel"].tree.getTopNode ());
+this.b$["jalview.appletgui.TreePanel"].treeCanvas.setTree (this.b$["jalview.appletgui.TreePanel"].tree);
+if (this.newtree != null) {
+var a = this.newtree.HasDistances () && this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showTreeDistances", this.newtree.HasDistances ());
+var b = this.newtree.HasBootstrap () && this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showTreeBootstraps", this.newtree.HasBootstrap ());
+this.b$["jalview.appletgui.TreePanel"].distanceMenu.setState (a);
+this.b$["jalview.appletgui.TreePanel"].bootstrapMenu.setState (b);
+this.b$["jalview.appletgui.TreePanel"].treeCanvas.setShowBootstrap (b);
+this.b$["jalview.appletgui.TreePanel"].treeCanvas.setShowDistances (a);
+this.b$["jalview.appletgui.TreePanel"].treeCanvas.setMarkPlaceholders (this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showUnlinkedTreeNodes", false));
+}this.b$["jalview.appletgui.TreePanel"].treeCanvas.repaint ();
+this.b$["jalview.appletgui.TreePanel"].av.setCurrentTree (this.b$["jalview.appletgui.TreePanel"].tree);
+});
+c$ = Clazz.p0p ();
+};
+});
index c53d7e0..593d23d 100644 (file)
Binary files a/bin/jalview/appletgui/UserDefinedColours.class and b/bin/jalview/appletgui/UserDefinedColours.class differ
index 2cc0d9b..a1b23f6 100644 (file)
-Clazz.declarePackage ("jalview.appletgui");\r
-Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.FocusListener", "awt2swing.Button", "$.Label", "$.Scrollbar", "$.TextField", "java.awt.GridLayout", "java.util.Vector"], "jalview.appletgui.UserDefinedColours", ["awt2swing.Frame", "jalview.appletgui.AnnotationColourChooser", "$.FeatureColourChooser", "$.FeatureRenderer", "$.FeatureSettings", "jalview.bin.JalviewLite", "jalview.schemes.ResidueProperties", "$.UserColourScheme", "jalview.util.MessageManager", "java.awt.Color", "$.Dialog", "$.Font", "$.Rectangle", "java.awt.event.MouseAdapter", "java.lang.Error"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.ap = null;\r
-this.seqGroup = null;\r
-this.selectedButton = null;\r
-this.oldColours = null;\r
-this.oldColourScheme = null;\r
-this.frame = null;\r
-this.jmol = null;\r
-this.dialog = null;\r
-this.caller = null;\r
-this.originalLabel = null;\r
-this.originalColour = null;\r
-this.R = 0;\r
-this.G = 0;\r
-this.B = 0;\r
-this.buttonPanel = null;\r
-this.gridLayout = null;\r
-this.okcancelPanel = null;\r
-this.okButton = null;\r
-this.applyButton = null;\r
-this.cancelButton = null;\r
-this.rScroller = null;\r
-this.label1 = null;\r
-this.rText = null;\r
-this.label4 = null;\r
-this.gScroller = null;\r
-this.gText = null;\r
-this.label5 = null;\r
-this.bScroller = null;\r
-this.bText = null;\r
-this.target = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.appletgui, "UserDefinedColours", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.FocusListener]);\r
-Clazz.prepareFields (c$, function () {\r
-this.oldColours =  new java.util.Vector ();\r
-this.buttonPanel =  new awt2swing.Panel ();\r
-this.gridLayout =  new java.awt.GridLayout ();\r
-this.okcancelPanel =  new awt2swing.Panel ();\r
-this.okButton =  new awt2swing.Button ();\r
-this.applyButton =  new awt2swing.Button ();\r
-this.cancelButton =  new awt2swing.Button ();\r
-this.rScroller =  new awt2swing.Scrollbar ();\r
-this.label1 =  new awt2swing.Label ();\r
-this.rText =  new awt2swing.TextField ();\r
-this.label4 =  new awt2swing.Label ();\r
-this.gScroller =  new awt2swing.Scrollbar ();\r
-this.gText =  new awt2swing.TextField ();\r
-this.label5 =  new awt2swing.Label ();\r
-this.bScroller =  new awt2swing.Scrollbar ();\r
-this.bText =  new awt2swing.TextField ();\r
-this.target =  new awt2swing.Panel ();\r
-});\r
-Clazz.defineMethod (c$, "loadDefaultColours", \r
-function () {\r
-return null;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (ap, sg) {\r
-Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);\r
-this.ap = ap;\r
-this.seqGroup = sg;\r
-if (this.seqGroup != null) {\r
-this.oldColourScheme = this.seqGroup.cs;\r
-} else {\r
-this.oldColourScheme = ap.av.getGlobalColourScheme ();\r
-}this.init ();\r
-}, "jalview.appletgui.AlignmentPanel,jalview.datamodel.SequenceGroup");\r
-Clazz.makeConstructor (c$, \r
-function (jmol) {\r
-Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);\r
-this.jmol = jmol;\r
-this.init ();\r
-}, "jalview.appletgui.AppletJmol");\r
-Clazz.makeConstructor (c$, \r
-function (fr, alignframe) {\r
-Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);\r
-this.caller = fr;\r
-this.originalColour = fr.colourPanel.getBackground ();\r
-this.originalLabel = "Feature Colour";\r
-this.setForDialog ("Select Feature Colour", alignframe);\r
-this.setTargetColour (fr.colourPanel.getBackground ());\r
-this.dialog.setVisible (true);\r
-}, "jalview.appletgui.FeatureRenderer,awt2swing.Frame");\r
-Clazz.makeConstructor (c$, \r
-function (caller, col1, alignframe) {\r
-this.construct (caller, col1, alignframe, "Select Colour");\r
-}, "java.awt.Component,java.awt.Color,awt2swing.Frame");\r
-Clazz.makeConstructor (c$, \r
-function (caller, col1, alignframe, title) {\r
-Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);\r
-this.caller = caller;\r
-this.originalColour = col1;\r
-this.originalLabel = title;\r
-this.setForDialog (title, alignframe);\r
-this.setTargetColour (col1);\r
-this.dialog.setVisible (true);\r
-}, "java.awt.Component,java.awt.Color,awt2swing.Frame,~S");\r
-Clazz.makeConstructor (c$, \r
-function (caller, label, colour) {\r
-this.construct (caller, label, colour, colour);\r
-}, "~O,~S,java.awt.Color");\r
-Clazz.makeConstructor (c$, \r
-function (me, type, graduatedColor) {\r
-this.construct (me, type, graduatedColor, graduatedColor.getMaxColor ());\r
-}, "jalview.appletgui.FeatureSettings,~S,jalview.schemes.GraduatedColor");\r
-Clazz.makeConstructor (c$, \r
-($fz = function (caller, label, ocolour, colour) {\r
-Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);\r
-this.caller = caller;\r
-this.originalColour = ocolour;\r
-this.originalLabel = label;\r
-this.init ();\r
-this.remove (this.buttonPanel);\r
-this.setTargetColour (colour);\r
-this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 113, 400, 35));\r
-this.frame.setTitle (jalview.util.MessageManager.getString ("label.user_defined_colours") + " - " + label);\r
-this.frame.setSize (420, 200);\r
-}, $fz.isPrivate = true, $fz), "~O,~S,~O,java.awt.Color");\r
-Clazz.defineMethod (c$, "setForDialog", \r
-function (title, alignframe) {\r
-this.init ();\r
-this.frame.setVisible (false);\r
-this.remove (this.buttonPanel);\r
-if (Clazz.instanceOf (alignframe, awt2swing.Frame)) {\r
-this.dialog =  new java.awt.Dialog (alignframe, title, true);\r
-} else {\r
-throw  new Error (jalview.util.MessageManager.getString ("label.error_unsupported_owwner_user_colour_scheme"));\r
-}this.dialog.add (this);\r
-this.setSize (400, 123);\r
-this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 123, 400, 35));\r
-var height = 160 + alignframe.getInsets ().top + this.getInsets ().bottom;\r
-var width = 400;\r
-this.dialog.setBounds (alignframe.getBounds ().x + Clazz.doubleToInt ((alignframe.getSize ().width - width) / 2), alignframe.getBounds ().y + Clazz.doubleToInt ((alignframe.getSize ().height - height) / 2), width, height);\r
-}, "~S,java.awt.Container");\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-var source = evt.getSource ();\r
-if (source === this.okButton) {\r
-this.okButton_actionPerformed ();\r
-} else if (source === this.applyButton) {\r
-this.applyButton_actionPerformed ();\r
-} else if (source === this.cancelButton) {\r
-this.cancelButton_actionPerformed ();\r
-} else if (source === this.rText) {\r
-this.rText_actionPerformed ();\r
-} else if (source === this.gText) {\r
-this.gText_actionPerformed ();\r
-} else if (source === this.bText) {\r
-this.bText_actionPerformed ();\r
-}}, "java.awt.event.ActionEvent");\r
-Clazz.overrideMethod (c$, "adjustmentValueChanged", \r
-function (evt) {\r
-if (evt.getSource () === this.rScroller) {\r
-this.rScroller_adjustmentValueChanged ();\r
-} else if (evt.getSource () === this.gScroller) {\r
-this.gScroller_adjustmentValueChanged ();\r
-} else if (evt.getSource () === this.bScroller) {\r
-this.bScroller_adjustmentValueChanged ();\r
-}}, "java.awt.event.AdjustmentEvent");\r
-Clazz.defineMethod (c$, "init", \r
-function () {\r
-try {\r
-this.jbInit ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.frame =  new awt2swing.Frame ();\r
-this.frame.add (this);\r
-jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.user_defined_colours"), 420, 345);\r
-if (this.seqGroup != null) {\r
-this.frame.setTitle (this.frame.getTitle () + " (" + this.seqGroup.getName () + ")");\r
-}for (var i = 0; i < 20; i++) {\r
-this.makeButton (jalview.schemes.ResidueProperties.aa2Triplet.get (jalview.schemes.ResidueProperties.aa[i]) + "", jalview.schemes.ResidueProperties.aa[i]);\r
-}\r
-this.makeButton ("B", "B");\r
-this.makeButton ("Z", "Z");\r
-this.makeButton ("X", "X");\r
-this.makeButton ("Gap", "'.','-',' '");\r
-this.validate ();\r
-});\r
-Clazz.defineMethod (c$, "rText_actionPerformed", \r
-function () {\r
-try {\r
-var i = Integer.parseInt (this.rText.getText ());\r
-this.rScroller.setValue (i);\r
-this.rScroller_adjustmentValueChanged ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-});\r
-Clazz.defineMethod (c$, "gText_actionPerformed", \r
-function () {\r
-try {\r
-var i = Integer.parseInt (this.gText.getText ());\r
-this.gScroller.setValue (i);\r
-this.gScroller_adjustmentValueChanged ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-});\r
-Clazz.defineMethod (c$, "bText_actionPerformed", \r
-function () {\r
-try {\r
-var i = Integer.parseInt (this.bText.getText ());\r
-this.bScroller.setValue (i);\r
-this.bScroller_adjustmentValueChanged ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-});\r
-Clazz.defineMethod (c$, "rScroller_adjustmentValueChanged", \r
-function () {\r
-this.R = this.rScroller.getValue ();\r
-this.rText.setText (this.R + "");\r
-this.colourChanged ();\r
-});\r
-Clazz.defineMethod (c$, "gScroller_adjustmentValueChanged", \r
-function () {\r
-this.G = this.gScroller.getValue ();\r
-this.gText.setText (this.G + "");\r
-this.colourChanged ();\r
-});\r
-Clazz.defineMethod (c$, "bScroller_adjustmentValueChanged", \r
-function () {\r
-this.B = this.bScroller.getValue ();\r
-this.bText.setText (this.B + "");\r
-this.colourChanged ();\r
-});\r
-Clazz.defineMethod (c$, "colourChanged", \r
-function () {\r
-var col =  new java.awt.Color (this.R, this.G, this.B);\r
-this.target.setBackground (col);\r
-this.target.repaint ();\r
-if (this.selectedButton != null) {\r
-this.selectedButton.setBackground (col);\r
-this.selectedButton.repaint ();\r
-}});\r
-Clazz.defineMethod (c$, "setTargetColour", \r
-function (col) {\r
-this.R = col.getRed ();\r
-this.G = col.getGreen ();\r
-this.B = col.getBlue ();\r
-this.rScroller.setValue (this.R);\r
-this.gScroller.setValue (this.G);\r
-this.bScroller.setValue (this.B);\r
-this.rText.setText (this.R + "");\r
-this.gText.setText (this.G + "");\r
-this.bText.setText (this.B + "");\r
-this.colourChanged ();\r
-}, "java.awt.Color");\r
-Clazz.defineMethod (c$, "colourButtonPressed", \r
-function (e) {\r
-this.selectedButton = e.getSource ();\r
-this.setTargetColour (this.selectedButton.getBackground ());\r
-}, "java.awt.event.MouseEvent");\r
-Clazz.defineMethod (c$, "makeButton", \r
-function (label, aa) {\r
-var button =  new awt2swing.Button ();\r
-var col = java.awt.Color.white;\r
-if (this.oldColourScheme != null) {\r
-try {\r
-col = this.oldColourScheme.findColour (aa.charAt (0), -1, null);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}button.setBackground (col);\r
-this.oldColours.addElement (col);\r
-button.setLabel (label);\r
-button.setForeground (col.darker ().darker ().darker ());\r
-button.setFont ( new java.awt.Font ("Verdana", 1, 10));\r
-button.addMouseListener (((Clazz.isClassDefined ("jalview.appletgui.UserDefinedColours$1") ? 0 : jalview.appletgui.UserDefinedColours.$UserDefinedColours$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.UserDefinedColours$1, this, null)));\r
-this.buttonPanel.add (button, null);\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "okButton_actionPerformed", \r
-function () {\r
-this.applyButton_actionPerformed ();\r
-if (this.dialog != null) {\r
-this.dialog.setVisible (false);\r
-}this.frame.setVisible (false);\r
-});\r
-Clazz.defineMethod (c$, "getColor", \r
-function () {\r
-return  new java.awt.Color (this.R, this.G, this.B);\r
-});\r
-Clazz.defineMethod (c$, "applyButton_actionPerformed", \r
-function () {\r
-if (this.caller != null) {\r
-if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureSettings)) {\r
-(this.caller).setUserColour (this.originalLabel, this.getColor ());\r
-} else if (Clazz.instanceOf (this.caller, jalview.appletgui.AnnotationColourChooser)) {\r
-if (this.originalLabel.equals ("Min Colour")) {\r
-(this.caller).minColour_actionPerformed (this.getColor ());\r
-} else {\r
-(this.caller).maxColour_actionPerformed (this.getColor ());\r
-}} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureRenderer)) {\r
-(this.caller).colourPanel.updateColor (this.getColor ());\r
-} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureColourChooser)) {\r
-if (this.originalLabel.indexOf ("inimum") > -1) {\r
-(this.caller).minColour_actionPerformed (this.getColor ());\r
-} else {\r
-(this.caller).maxColour_actionPerformed (this.getColor ());\r
-}}return;\r
-}var newColours =  new Array (24);\r
-for (var i = 0; i < 24; i++) {\r
-var button = this.buttonPanel.getComponent (i);\r
-newColours[i] = button.getBackground ();\r
-}\r
-var ucs =  new jalview.schemes.UserColourScheme (newColours);\r
-if (this.ap != null) {\r
-ucs.setThreshold (0, this.ap.av.isIgnoreGapsConsensus ());\r
-}if (this.ap != null) {\r
-if (this.seqGroup != null) {\r
-this.seqGroup.cs = ucs;\r
-} else {\r
-this.ap.av.setGlobalColourScheme (ucs);\r
-}this.ap.seqPanel.seqCanvas.img = null;\r
-this.ap.paintAlignment (true);\r
-} else if (this.jmol != null) {\r
-this.jmol.setJalviewColourScheme (ucs);\r
-}});\r
-Clazz.defineMethod (c$, "cancelButton_actionPerformed", \r
-function () {\r
-if (this.caller != null) {\r
-if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureSettings)) {\r
-(this.caller).setUserColour (this.originalLabel, this.originalColour);\r
-} else if (Clazz.instanceOf (this.caller, jalview.appletgui.AnnotationColourChooser)) {\r
-if (this.originalLabel.equals ("Min Colour")) {\r
-(this.caller).minColour_actionPerformed (this.originalColour);\r
-} else {\r
-(this.caller).maxColour_actionPerformed (this.originalColour);\r
-}} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureRenderer)) {\r
-(this.caller).colourPanel.updateColor (this.originalColour);\r
-} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureColourChooser)) {\r
-if (this.originalLabel.indexOf ("inimum") > -1) {\r
-(this.caller).minColour_actionPerformed (this.originalColour);\r
-} else {\r
-(this.caller).maxColour_actionPerformed (this.originalColour);\r
-}}if (this.dialog != null) {\r
-this.dialog.setVisible (false);\r
-}this.frame.setVisible (false);\r
-return;\r
-}var newColours =  new Array (24);\r
-for (var i = 0; i < 24; i++) {\r
-newColours[i] = this.oldColours.elementAt (i);\r
-this.buttonPanel.getComponent (i).setBackground (newColours[i]);\r
-}\r
-var ucs =  new jalview.schemes.UserColourScheme (newColours);\r
-if (this.ap != null) {\r
-if (this.seqGroup != null) {\r
-this.seqGroup.cs = ucs;\r
-} else {\r
-this.ap.av.setGlobalColourScheme (ucs);\r
-}this.ap.paintAlignment (true);\r
-} else if (this.jmol != null) {\r
-this.jmol.setJalviewColourScheme (ucs);\r
-}this.frame.setVisible (false);\r
-});\r
-Clazz.defineMethod (c$, "jbInit", \r
-($fz = function () {\r
-this.setLayout (null);\r
-this.buttonPanel.setLayout (this.gridLayout);\r
-this.gridLayout.setColumns (6);\r
-this.gridLayout.setRows (4);\r
-this.okButton.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.okButton.setLabel (jalview.util.MessageManager.getString ("action.ok"));\r
-this.okButton.addActionListener (this);\r
-this.applyButton.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.applyButton.setLabel (jalview.util.MessageManager.getString ("action.apply"));\r
-this.applyButton.addActionListener (this);\r
-this.cancelButton.setFont ( new java.awt.Font ("Verdana", 0, 11));\r
-this.cancelButton.setLabel (jalview.util.MessageManager.getString ("action.cancel"));\r
-this.cancelButton.addActionListener (this);\r
-this.setBackground ( new java.awt.Color (212, 208, 223));\r
-this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 265, 400, 35));\r
-this.buttonPanel.setBounds ( new java.awt.Rectangle (0, 123, 400, 142));\r
-this.rScroller.setMaximum (256);\r
-this.rScroller.setMinimum (0);\r
-this.rScroller.setOrientation (0);\r
-this.rScroller.setUnitIncrement (1);\r
-this.rScroller.setVisibleAmount (1);\r
-this.rScroller.setBounds ( new java.awt.Rectangle (36, 27, 119, 19));\r
-this.rScroller.addAdjustmentListener (this);\r
-this.label1.setAlignment (4);\r
-this.label1.setText ("R");\r
-this.label1.setBounds ( new java.awt.Rectangle (19, 30, 16, 15));\r
-this.rText.setFont ( new java.awt.Font ("Dialog", 0, 10));\r
-this.rText.setText ("0        ");\r
-this.rText.setBounds ( new java.awt.Rectangle (156, 27, 53, 19));\r
-this.rText.addActionListener (this);\r
-this.rText.addFocusListener (this);\r
-this.label4.setAlignment (4);\r
-this.label4.setText ("G");\r
-this.label4.setBounds ( new java.awt.Rectangle (15, 56, 20, 15));\r
-this.gScroller.setMaximum (256);\r
-this.gScroller.setMinimum (0);\r
-this.gScroller.setOrientation (0);\r
-this.gScroller.setUnitIncrement (1);\r
-this.gScroller.setVisibleAmount (1);\r
-this.gScroller.setBounds ( new java.awt.Rectangle (35, 52, 120, 20));\r
-this.gScroller.addAdjustmentListener (this);\r
-this.gText.setFont ( new java.awt.Font ("Dialog", 0, 10));\r
-this.gText.setText ("0        ");\r
-this.gText.setBounds ( new java.awt.Rectangle (156, 52, 53, 20));\r
-this.gText.addActionListener (this);\r
-this.gText.addFocusListener (this);\r
-this.label5.setAlignment (4);\r
-this.label5.setText ("B");\r
-this.label5.setBounds ( new java.awt.Rectangle (14, 82, 20, 15));\r
-this.bScroller.setMaximum (256);\r
-this.bScroller.setMinimum (0);\r
-this.bScroller.setOrientation (0);\r
-this.bScroller.setUnitIncrement (1);\r
-this.bScroller.setVisibleAmount (1);\r
-this.bScroller.setBounds ( new java.awt.Rectangle (35, 78, 120, 20));\r
-this.bScroller.addAdjustmentListener (this);\r
-this.bText.setFont ( new java.awt.Font ("Dialog", 0, 10));\r
-this.bText.setText ("0        ");\r
-this.bText.setBounds ( new java.awt.Rectangle (157, 78, 52, 20));\r
-this.bText.addActionListener (this);\r
-this.bText.addFocusListener (this);\r
-this.target.setBackground (java.awt.Color.black);\r
-this.target.setBounds ( new java.awt.Rectangle (229, 26, 134, 79));\r
-this.add (this.okcancelPanel, null);\r
-this.okcancelPanel.add (this.okButton, null);\r
-this.okcancelPanel.add (this.applyButton, null);\r
-this.okcancelPanel.add (this.cancelButton, null);\r
-this.add (this.rText);\r
-this.add (this.gText);\r
-this.add (this.bText);\r
-this.add (this.buttonPanel, null);\r
-this.add (this.target, null);\r
-this.add (this.gScroller);\r
-this.add (this.rScroller);\r
-this.add (this.bScroller);\r
-this.add (this.label5);\r
-this.add (this.label4);\r
-this.add (this.label1);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "focusGained", \r
-function (e) {\r
-}, "java.awt.event.FocusEvent");\r
-Clazz.overrideMethod (c$, "focusLost", \r
-function (e) {\r
-var c = e.getComponent ();\r
-if (c === this.rText) {\r
-this.rText_actionPerformed ();\r
-} else {\r
-if (c === this.gText) {\r
-this.gText_actionPerformed ();\r
-} else {\r
-if (c === this.bText) {\r
-this.bText_actionPerformed ();\r
-}}}}, "java.awt.event.FocusEvent");\r
-c$.$UserDefinedColours$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.appletgui, "UserDefinedColours$1", java.awt.event.MouseAdapter);\r
-Clazz.overrideMethod (c$, "mousePressed", \r
-function (e) {\r
-this.b$["jalview.appletgui.UserDefinedColours"].colourButtonPressed (e);\r
-}, "java.awt.event.MouseEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.appletgui");
+Clazz.load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.FocusListener", "awt2swing.Button", "$.Label", "$.Scrollbar", "$.TextField", "java.awt.GridLayout", "java.util.Vector"], "jalview.appletgui.UserDefinedColours", ["awt2swing.Frame", "jalview.appletgui.AnnotationColourChooser", "$.FeatureColourChooser", "$.FeatureRenderer", "$.FeatureSettings", "jalview.bin.JalviewLite", "jalview.schemes.ResidueProperties", "$.UserColourScheme", "jalview.util.MessageManager", "java.awt.Color", "$.Dialog", "$.Font", "$.Rectangle", "java.awt.event.MouseAdapter", "java.lang.Error"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.ap = null;
+this.seqGroup = null;
+this.selectedButton = null;
+this.oldColours = null;
+this.oldColourScheme = null;
+this.frame = null;
+this.jmol = null;
+this.dialog = null;
+this.caller = null;
+this.originalLabel = null;
+this.originalColour = null;
+this.R = 0;
+this.G = 0;
+this.B = 0;
+this.buttonPanel = null;
+this.gridLayout = null;
+this.okcancelPanel = null;
+this.okButton = null;
+this.applyButton = null;
+this.cancelButton = null;
+this.rScroller = null;
+this.label1 = null;
+this.rText = null;
+this.label4 = null;
+this.gScroller = null;
+this.gText = null;
+this.label5 = null;
+this.bScroller = null;
+this.bText = null;
+this.target = null;
+Clazz.instantialize (this, arguments);
+}, jalview.appletgui, "UserDefinedColours", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.FocusListener]);
+Clazz.prepareFields (c$, function () {
+this.oldColours =  new java.util.Vector ();
+this.buttonPanel =  new awt2swing.Panel ();
+this.gridLayout =  new java.awt.GridLayout ();
+this.okcancelPanel =  new awt2swing.Panel ();
+this.okButton =  new awt2swing.Button ();
+this.applyButton =  new awt2swing.Button ();
+this.cancelButton =  new awt2swing.Button ();
+this.rScroller =  new awt2swing.Scrollbar ();
+this.label1 =  new awt2swing.Label ();
+this.rText =  new awt2swing.TextField ();
+this.label4 =  new awt2swing.Label ();
+this.gScroller =  new awt2swing.Scrollbar ();
+this.gText =  new awt2swing.TextField ();
+this.label5 =  new awt2swing.Label ();
+this.bScroller =  new awt2swing.Scrollbar ();
+this.bText =  new awt2swing.TextField ();
+this.target =  new awt2swing.Panel ();
+});
+Clazz.defineMethod (c$, "loadDefaultColours", 
+function () {
+return null;
+});
+Clazz.makeConstructor (c$, 
+function (ap, sg) {
+Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.ap = ap;
+this.seqGroup = sg;
+if (this.seqGroup != null) {
+this.oldColourScheme = this.seqGroup.cs;
+} else {
+this.oldColourScheme = ap.av.getGlobalColourScheme ();
+}this.init ();
+}, "jalview.appletgui.AlignmentPanel,jalview.datamodel.SequenceGroup");
+Clazz.makeConstructor (c$, 
+function (jmol) {
+Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.jmol = jmol;
+this.init ();
+}, "jalview.appletgui.AppletJmol");
+Clazz.makeConstructor (c$, 
+function (fr, alignframe) {
+Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.caller = fr;
+this.originalColour = fr.colourPanel.getBackground ();
+this.originalLabel = "Feature Colour";
+this.setForDialog ("Select Feature Colour", alignframe);
+this.setTargetColour (fr.colourPanel.getBackground ());
+this.dialog.setVisible (true);
+}, "jalview.appletgui.FeatureRenderer,awt2swing.Frame");
+Clazz.makeConstructor (c$, 
+function (caller, col1, alignframe) {
+this.construct (caller, col1, alignframe, "Select Colour");
+}, "java.awt.Component,java.awt.Color,awt2swing.Frame");
+Clazz.makeConstructor (c$, 
+function (caller, col1, alignframe, title) {
+Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.caller = caller;
+this.originalColour = col1;
+this.originalLabel = title;
+this.setForDialog (title, alignframe);
+this.setTargetColour (col1);
+this.dialog.setVisible (true);
+}, "java.awt.Component,java.awt.Color,awt2swing.Frame,~S");
+Clazz.makeConstructor (c$, 
+function (caller, label, colour) {
+this.construct (caller, label, colour, colour);
+}, "~O,~S,java.awt.Color");
+Clazz.makeConstructor (c$, 
+function (me, type, graduatedColor) {
+this.construct (me, type, graduatedColor, graduatedColor.getMaxColor ());
+}, "jalview.appletgui.FeatureSettings,~S,jalview.schemes.GraduatedColor");
+Clazz.makeConstructor (c$, 
+($fz = function (caller, label, ocolour, colour) {
+Clazz.superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.caller = caller;
+this.originalColour = ocolour;
+this.originalLabel = label;
+this.init ();
+this.remove (this.buttonPanel);
+this.setTargetColour (colour);
+this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 113, 400, 35));
+this.frame.setTitle (jalview.util.MessageManager.getString ("label.user_defined_colours") + " - " + label);
+this.frame.setSize (420, 200);
+}, $fz.isPrivate = true, $fz), "~O,~S,~O,java.awt.Color");
+Clazz.defineMethod (c$, "setForDialog", 
+function (title, alignframe) {
+this.init ();
+this.frame.setVisible (false);
+this.remove (this.buttonPanel);
+if (Clazz.instanceOf (alignframe, awt2swing.Frame)) {
+this.dialog =  new java.awt.Dialog (alignframe, title, true);
+} else {
+throw  new Error (jalview.util.MessageManager.getString ("label.error_unsupported_owwner_user_colour_scheme"));
+}this.dialog.add (this);
+this.setSize (400, 123);
+this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 123, 400, 35));
+var height = 160 + alignframe.getInsets ().top + this.getInsets ().bottom;
+var width = 400;
+this.dialog.setBounds (alignframe.getBounds ().x + Clazz.doubleToInt ((alignframe.getSize ().width - width) / 2), alignframe.getBounds ().y + Clazz.doubleToInt ((alignframe.getSize ().height - height) / 2), width, height);
+}, "~S,java.awt.Container");
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (evt) {
+var source = evt.getSource ();
+if (source === this.okButton) {
+this.okButton_actionPerformed ();
+} else if (source === this.applyButton) {
+this.applyButton_actionPerformed ();
+} else if (source === this.cancelButton) {
+this.cancelButton_actionPerformed ();
+} else if (source === this.rText) {
+this.rText_actionPerformed ();
+} else if (source === this.gText) {
+this.gText_actionPerformed ();
+} else if (source === this.bText) {
+this.bText_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz.overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+if (evt.getSource () === this.rScroller) {
+this.rScroller_adjustmentValueChanged ();
+} else if (evt.getSource () === this.gScroller) {
+this.gScroller_adjustmentValueChanged ();
+} else if (evt.getSource () === this.bScroller) {
+this.bScroller_adjustmentValueChanged ();
+}}, "java.awt.event.AdjustmentEvent");
+Clazz.defineMethod (c$, "init", 
+function () {
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.frame =  new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.user_defined_colours"), 420, 345);
+if (this.seqGroup != null) {
+this.frame.setTitle (this.frame.getTitle () + " (" + this.seqGroup.getName () + ")");
+}for (var i = 0; i < 20; i++) {
+this.makeButton (jalview.schemes.ResidueProperties.aa2Triplet.get (jalview.schemes.ResidueProperties.aa[i]) + "", jalview.schemes.ResidueProperties.aa[i]);
+}
+this.makeButton ("B", "B");
+this.makeButton ("Z", "Z");
+this.makeButton ("X", "X");
+this.makeButton ("Gap", "'.','-',' '");
+this.validate ();
+});
+Clazz.defineMethod (c$, "rText_actionPerformed", 
+function () {
+try {
+var i = Integer.parseInt (this.rText.getText ());
+this.rScroller.setValue (i);
+this.rScroller_adjustmentValueChanged ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+});
+Clazz.defineMethod (c$, "gText_actionPerformed", 
+function () {
+try {
+var i = Integer.parseInt (this.gText.getText ());
+this.gScroller.setValue (i);
+this.gScroller_adjustmentValueChanged ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+});
+Clazz.defineMethod (c$, "bText_actionPerformed", 
+function () {
+try {
+var i = Integer.parseInt (this.bText.getText ());
+this.bScroller.setValue (i);
+this.bScroller_adjustmentValueChanged ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+});
+Clazz.defineMethod (c$, "rScroller_adjustmentValueChanged", 
+function () {
+this.R = this.rScroller.getValue ();
+this.rText.setText (this.R + "");
+this.colourChanged ();
+});
+Clazz.defineMethod (c$, "gScroller_adjustmentValueChanged", 
+function () {
+this.G = this.gScroller.getValue ();
+this.gText.setText (this.G + "");
+this.colourChanged ();
+});
+Clazz.defineMethod (c$, "bScroller_adjustmentValueChanged", 
+function () {
+this.B = this.bScroller.getValue ();
+this.bText.setText (this.B + "");
+this.colourChanged ();
+});
+Clazz.defineMethod (c$, "colourChanged", 
+function () {
+var col =  new java.awt.Color (this.R, this.G, this.B);
+this.target.setBackground (col);
+this.target.repaint ();
+if (this.selectedButton != null) {
+this.selectedButton.setBackground (col);
+this.selectedButton.repaint ();
+}});
+Clazz.defineMethod (c$, "setTargetColour", 
+function (col) {
+this.R = col.getRed ();
+this.G = col.getGreen ();
+this.B = col.getBlue ();
+this.rScroller.setValue (this.R);
+this.gScroller.setValue (this.G);
+this.bScroller.setValue (this.B);
+this.rText.setText (this.R + "");
+this.gText.setText (this.G + "");
+this.bText.setText (this.B + "");
+this.colourChanged ();
+}, "java.awt.Color");
+Clazz.defineMethod (c$, "colourButtonPressed", 
+function (e) {
+this.selectedButton = e.getSource ();
+this.setTargetColour (this.selectedButton.getBackground ());
+}, "java.awt.event.MouseEvent");
+Clazz.defineMethod (c$, "makeButton", 
+function (label, aa) {
+var button =  new awt2swing.Button ();
+var col = java.awt.Color.white;
+if (this.oldColourScheme != null) {
+try {
+col = this.oldColourScheme.findColour (aa.charAt (0), -1, null);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}button.setBackground (col);
+this.oldColours.addElement (col);
+button.setLabel (label);
+button.setForeground (col.darker ().darker ().darker ());
+button.setFont ( new java.awt.Font ("Verdana", 1, 10));
+button.addMouseListener (((Clazz.isClassDefined ("jalview.appletgui.UserDefinedColours$1") ? 0 : jalview.appletgui.UserDefinedColours.$UserDefinedColours$1$ ()), Clazz.innerTypeInstance (jalview.appletgui.UserDefinedColours$1, this, null)));
+this.buttonPanel.add (button, null);
+}, "~S,~S");
+Clazz.defineMethod (c$, "okButton_actionPerformed", 
+function () {
+this.applyButton_actionPerformed ();
+if (this.dialog != null) {
+this.dialog.setVisible (false);
+}this.frame.setVisible (false);
+});
+Clazz.defineMethod (c$, "getColor", 
+function () {
+return  new java.awt.Color (this.R, this.G, this.B);
+});
+Clazz.defineMethod (c$, "applyButton_actionPerformed", 
+function () {
+if (this.caller != null) {
+if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureSettings)) {
+(this.caller).setUserColour (this.originalLabel, this.getColor ());
+} else if (Clazz.instanceOf (this.caller, jalview.appletgui.AnnotationColourChooser)) {
+if (this.originalLabel.equals ("Min Colour")) {
+(this.caller).minColour_actionPerformed (this.getColor ());
+} else {
+(this.caller).maxColour_actionPerformed (this.getColor ());
+}} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureRenderer)) {
+(this.caller).colourPanel.updateColor (this.getColor ());
+} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureColourChooser)) {
+if (this.originalLabel.indexOf ("inimum") > -1) {
+(this.caller).minColour_actionPerformed (this.getColor ());
+} else {
+(this.caller).maxColour_actionPerformed (this.getColor ());
+}}return;
+}var newColours =  new Array (24);
+for (var i = 0; i < 24; i++) {
+var button = this.buttonPanel.getComponent (i);
+newColours[i] = button.getBackground ();
+}
+var ucs =  new jalview.schemes.UserColourScheme (newColours);
+if (this.ap != null) {
+ucs.setThreshold (0, this.ap.av.isIgnoreGapsConsensus ());
+}if (this.ap != null) {
+if (this.seqGroup != null) {
+this.seqGroup.cs = ucs;
+} else {
+this.ap.av.setGlobalColourScheme (ucs);
+}this.ap.seqPanel.seqCanvas.img = null;
+this.ap.paintAlignment (true);
+} else if (this.jmol != null) {
+this.jmol.setJalviewColourScheme (ucs);
+}});
+Clazz.defineMethod (c$, "cancelButton_actionPerformed", 
+function () {
+if (this.caller != null) {
+if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureSettings)) {
+(this.caller).setUserColour (this.originalLabel, this.originalColour);
+} else if (Clazz.instanceOf (this.caller, jalview.appletgui.AnnotationColourChooser)) {
+if (this.originalLabel.equals ("Min Colour")) {
+(this.caller).minColour_actionPerformed (this.originalColour);
+} else {
+(this.caller).maxColour_actionPerformed (this.originalColour);
+}} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureRenderer)) {
+(this.caller).colourPanel.updateColor (this.originalColour);
+} else if (Clazz.instanceOf (this.caller, jalview.appletgui.FeatureColourChooser)) {
+if (this.originalLabel.indexOf ("inimum") > -1) {
+(this.caller).minColour_actionPerformed (this.originalColour);
+} else {
+(this.caller).maxColour_actionPerformed (this.originalColour);
+}}if (this.dialog != null) {
+this.dialog.setVisible (false);
+}this.frame.setVisible (false);
+return;
+}var newColours =  new Array (24);
+for (var i = 0; i < 24; i++) {
+newColours[i] = this.oldColours.elementAt (i);
+this.buttonPanel.getComponent (i).setBackground (newColours[i]);
+}
+var ucs =  new jalview.schemes.UserColourScheme (newColours);
+if (this.ap != null) {
+if (this.seqGroup != null) {
+this.seqGroup.cs = ucs;
+} else {
+this.ap.av.setGlobalColourScheme (ucs);
+}this.ap.paintAlignment (true);
+} else if (this.jmol != null) {
+this.jmol.setJalviewColourScheme (ucs);
+}this.frame.setVisible (false);
+});
+Clazz.defineMethod (c$, "jbInit", 
+($fz = function () {
+this.setLayout (null);
+this.buttonPanel.setLayout (this.gridLayout);
+this.gridLayout.setColumns (6);
+this.gridLayout.setRows (4);
+this.okButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.okButton.setLabel (jalview.util.MessageManager.getString ("action.ok"));
+this.okButton.addActionListener (this);
+this.applyButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.applyButton.setLabel (jalview.util.MessageManager.getString ("action.apply"));
+this.applyButton.addActionListener (this);
+this.cancelButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.cancelButton.setLabel (jalview.util.MessageManager.getString ("action.cancel"));
+this.cancelButton.addActionListener (this);
+this.setBackground ( new java.awt.Color (212, 208, 223));
+this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 265, 400, 35));
+this.buttonPanel.setBounds ( new java.awt.Rectangle (0, 123, 400, 142));
+this.rScroller.setMaximum (256);
+this.rScroller.setMinimum (0);
+this.rScroller.setOrientation (0);
+this.rScroller.setUnitIncrement (1);
+this.rScroller.setVisibleAmount (1);
+this.rScroller.setBounds ( new java.awt.Rectangle (36, 27, 119, 19));
+this.rScroller.addAdjustmentListener (this);
+this.label1.setAlignment (4);
+this.label1.setText ("R");
+this.label1.setBounds ( new java.awt.Rectangle (19, 30, 16, 15));
+this.rText.setFont ( new java.awt.Font ("Dialog", 0, 10));
+this.rText.setText ("0        ");
+this.rText.setBounds ( new java.awt.Rectangle (156, 27, 53, 19));
+this.rText.addActionListener (this);
+this.rText.addFocusListener (this);
+this.label4.setAlignment (4);
+this.label4.setText ("G");
+this.label4.setBounds ( new java.awt.Rectangle (15, 56, 20, 15));
+this.gScroller.setMaximum (256);
+this.gScroller.setMinimum (0);
+this.gScroller.setOrientation (0);
+this.gScroller.setUnitIncrement (1);
+this.gScroller.setVisibleAmount (1);
+this.gScroller.setBounds ( new java.awt.Rectangle (35, 52, 120, 20));
+this.gScroller.addAdjustmentListener (this);
+this.gText.setFont ( new java.awt.Font ("Dialog", 0, 10));
+this.gText.setText ("0        ");
+this.gText.setBounds ( new java.awt.Rectangle (156, 52, 53, 20));
+this.gText.addActionListener (this);
+this.gText.addFocusListener (this);
+this.label5.setAlignment (4);
+this.label5.setText ("B");
+this.label5.setBounds ( new java.awt.Rectangle (14, 82, 20, 15));
+this.bScroller.setMaximum (256);
+this.bScroller.setMinimum (0);
+this.bScroller.setOrientation (0);
+this.bScroller.setUnitIncrement (1);
+this.bScroller.setVisibleAmount (1);
+this.bScroller.setBounds ( new java.awt.Rectangle (35, 78, 120, 20));
+this.bScroller.addAdjustmentListener (this);
+this.bText.setFont ( new java.awt.Font ("Dialog", 0, 10));
+this.bText.setText ("0        ");
+this.bText.setBounds ( new java.awt.Rectangle (157, 78, 52, 20));
+this.bText.addActionListener (this);
+this.bText.addFocusListener (this);
+this.target.setBackground (java.awt.Color.black);
+this.target.setBounds ( new java.awt.Rectangle (229, 26, 134, 79));
+this.add (this.okcancelPanel, null);
+this.okcancelPanel.add (this.okButton, null);
+this.okcancelPanel.add (this.applyButton, null);
+this.okcancelPanel.add (this.cancelButton, null);
+this.add (this.rText);
+this.add (this.gText);
+this.add (this.bText);
+this.add (this.buttonPanel, null);
+this.add (this.target, null);
+this.add (this.gScroller);
+this.add (this.rScroller);
+this.add (this.bScroller);
+this.add (this.label5);
+this.add (this.label4);
+this.add (this.label1);
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "focusGained", 
+function (e) {
+}, "java.awt.event.FocusEvent");
+Clazz.overrideMethod (c$, "focusLost", 
+function (e) {
+var c = e.getComponent ();
+if (c === this.rText) {
+this.rText_actionPerformed ();
+} else {
+if (c === this.gText) {
+this.gText_actionPerformed ();
+} else {
+if (c === this.bText) {
+this.bText_actionPerformed ();
+}}}}, "java.awt.event.FocusEvent");
+c$.$UserDefinedColours$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.appletgui, "UserDefinedColours$1", java.awt.event.MouseAdapter);
+Clazz.overrideMethod (c$, "mousePressed", 
+function (e) {
+this.b$["jalview.appletgui.UserDefinedColours"].colourButtonPressed (e);
+}, "java.awt.event.MouseEvent");
+c$ = Clazz.p0p ();
+};
+});
index b2a7cae..3013f58 100644 (file)
@@ -1,29 +1,29 @@
-Clazz.declarePackage ("jalview.bin");\r
-c$ = Clazz.decorateAsClass (function () {\r
-if (!Clazz.isClassDefined ("jalview.bin.Cache.Log")) {\r
-jalview.bin.Cache.$Cache$Log$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.bin, "Cache");\r
-c$.getDefault = Clazz.defineMethod (c$, "getDefault", \r
-function (string, string2) {\r
-return null;\r
-}, "~S,~S");\r
-c$.$Cache$Log$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.bin.Cache, "Log");\r
-Clazz.defineMethod (c$, "error", \r
-function (a) {\r
-}, "~S");\r
-Clazz.defineMethod (c$, "isDebugEnabled", \r
-function () {\r
-return false;\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"CASTORLOGLEVEL", null,\r
-"log", null);\r
+Clazz.declarePackage ("jalview.bin");
+c$ = Clazz.decorateAsClass (function () {
+if (!Clazz.isClassDefined ("jalview.bin.Cache.Log")) {
+jalview.bin.Cache.$Cache$Log$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.bin, "Cache");
+c$.getDefault = Clazz.defineMethod (c$, "getDefault", 
+function (string, string2) {
+return null;
+}, "~S,~S");
+c$.$Cache$Log$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+Clazz.instantialize (this, arguments);
+}, jalview.bin.Cache, "Log");
+Clazz.defineMethod (c$, "error", 
+function (a) {
+}, "~S");
+Clazz.defineMethod (c$, "isDebugEnabled", 
+function () {
+return false;
+});
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"CASTORLOGLEVEL", null,
+"log", null);
index 09353ff..884af19 100644 (file)
Binary files a/bin/jalview/bin/JalviewLite$4.class and b/bin/jalview/bin/JalviewLite$4.class differ
index 17bcf98..94eb08f 100644 (file)
Binary files a/bin/jalview/bin/JalviewLite$LoadJmolThread.class and b/bin/jalview/bin/JalviewLite$LoadJmolThread.class differ
index 6ffac37..4dc6751 100644 (file)
Binary files a/bin/jalview/bin/JalviewLite$LoadingThread.class and b/bin/jalview/bin/JalviewLite$LoadingThread.class differ
index ae19296..7d70007 100644 (file)
Binary files a/bin/jalview/bin/JalviewLite.class and b/bin/jalview/bin/JalviewLite.class differ
index 23d66b7..1049dcb 100644 (file)
-Clazz.declarePackage ("jalview.bin");\r
-Clazz.load (["jalview.api.StructureSelectionManagerProvider", "jalview.javascript.JalviewLiteJsApi", "java.lang.Thread", "javax.swing.JApplet", "jalview.util.MessageManager", "java.util.Hashtable", "$.Vector", "javax.swing.JButton"], "jalview.bin.JalviewLite", ["jalview.analysis.SequenceIdMatcher", "jalview.appletgui.AlignFrame", "$.EmbmenuFrame", "$.FeatureSettings", "$.SplitFrame", "jalview.datamodel.Alignment", "$.AlignmentOrder", "$.ColumnSelection", "$.PDBEntry", "$.SequenceGroup", "jalview.io.AnnotationFile", "$.AppletFormatAdapter", "$.FileParse", "$.IdentifyFile", "$.JnetAnnotationMaker", "$.NewickFile", "jalview.javascript.JSFunctionExec", "$.JsSelectionSender", "$.MouseOverListener", "$.MouseOverStructureListener", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.ColourSchemeProperty", "$.UserColourScheme", "jalview.structure.SelectionListener", "$.StructureSelectionManager", "java.awt.Color", "$.EventQueue", "$.Font", "java.awt.event.ActionListener", "$.WindowAdapter", "java.io.BufferedReader", "$.InputStreamReader", "java.lang.Error", "$.StringBuffer", "java.net.URL", "java.util.StringTokenizer", "netscape.javascript.JSObject"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.embedded = false;\r
-this.enableSplitFrame = false;\r
-this.showButton = true;\r
-this.checkForJmol = true;\r
-this.jalviewServletURL = null;\r
-this.startupFile = "No file";\r
-this.helpUrl = null;\r
-this.externalstructureviewer = null;\r
-this.sep = null;\r
-this.rgb = null;\r
-this.labelColour = null;\r
-this.initjscallback = null;\r
-this.pdbFile = null;\r
-this.sequence = null;\r
-this.jnetFile = null;\r
-this.annotations = null;\r
-this.hideFeatureGroups = null;\r
-this.showFeatureGroups = null;\r
-this.features = null;\r
-this.showFeatureSettings = null;\r
-this.scoreFile = null;\r
-this.treeFile = null;\r
-this.windowWidth = null;\r
-this.windowHeight = null;\r
-this.defaultColour = null;\r
-this.sortBy = null;\r
-this.wrap = null;\r
-this.centrecolumnlabels = null;\r
-this.userDefinedColour = null;\r
-this.widthScale = null;\r
-this.heightScale = null;\r
-this.upperCase = null;\r
-this.file2 = null;\r
-this.javascriptListeners = null;\r
-this.jsFunctionExec = null;\r
-this.fileFound = true;\r
-this.launcher = null;\r
-this.currentAlignFrame = null;\r
-this.initialAlignFrame = null;\r
-this.checkedForJmol = false;\r
-this.jmolAvailable = false;\r
-this.alignPdbStructures = false;\r
-this.useXtrnalSviewer = false;\r
-this.haveShownLoadMessage = false;\r
-if (!Clazz.isClassDefined ("jalview.bin.JalviewLite.LoadJmolThread")) {\r
-jalview.bin.JalviewLite.$JalviewLite$LoadJmolThread$ ();\r
-}\r
-if (!Clazz.isClassDefined ("jalview.bin.JalviewLite.LoadingThread")) {\r
-jalview.bin.JalviewLite.$JalviewLite$LoadingThread$ ();\r
-}\r
-this.separator = "\u00ac";\r
-this.jsfallbackEnabled = false;\r
-this.jshashes = null;\r
-this.jsmessages = null;\r
-this.jsExecQueue = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.bin, "JalviewLite", javax.swing.JApplet, [jalview.api.StructureSelectionManagerProvider, jalview.javascript.JalviewLiteJsApi]);\r
-Clazz.prepareFields (c$, function () {\r
-this.javascriptListeners =  new java.util.Vector ();\r
-this.launcher =  new javax.swing.JButton (jalview.util.MessageManager.getString ("label.start_jalview"));\r
-this.jshashes =  new java.util.Hashtable ();\r
-this.jsmessages =  new java.util.Hashtable ();\r
-this.jsExecQueue =  new java.util.Vector ();\r
-});\r
-Clazz.defineMethod (c$, "setParams", \r
-($fz = function () {\r
-jalview.bin.JalviewLite.debug = "true".equalsIgnoreCase (this.getParameter ("debug"));\r
-this.enableSplitFrame = "true".equalsIgnoreCase (this.getParameter ("enableSplitFrame"));\r
-this.embedded = "true".equalsIgnoreCase (this.getParameter ("embedded"));\r
-this.showButton = !"false".equalsIgnoreCase (this.getParameter ("showbutton"));\r
-this.jalviewServletURL = this.getParameter ("APPLICATION_URL");\r
-this.startupFile = this.getParameter ("file");\r
-this.helpUrl = this.getParameter ("jalviewhelpurl");\r
-this.externalstructureviewer = this.getParameter ("externalstructureviewer");\r
-this.checkForJmol = !"true".equals (this.getParameter ("nojmol"));\r
-this.sep = this.getParameter ("separator");\r
-this.rgb = this.getParameter ("RGB");\r
-this.labelColour = this.getParameter ("label");\r
-this.initjscallback = this.getParameter ("oninit");\r
-this.pdbFile = this.getParameter ("PDBFILE");\r
-this.sequence = this.getParameter ("PDBSEQ");\r
-this.jnetFile = this.getParameter ("jnetfile");\r
-this.annotations = this.getParameter ("annotations");\r
-this.hideFeatureGroups = this.getParameter ("hidefeaturegroups");\r
-this.showFeatureGroups = this.getParameter ("showfeaturegroups");\r
-this.features = this.getParameter ("features");\r
-this.showFeatureSettings = this.getParameter ("showFeatureSettings");\r
-this.scoreFile = this.getParameter ("scoreFile");\r
-this.treeFile = this.getParameter ("tree");\r
-if (this.treeFile == null) this.treeFile = this.getParameter ("treeFile");\r
-this.windowWidth = this.getParameter ("windowWidth");\r
-this.windowHeight = this.getParameter ("windowHeight");\r
-this.defaultColour = this.getParameter ("defaultColour");\r
-this.sortBy = this.getParameter ("sortBy");\r
-this.wrap = this.getParameter ("wrap");\r
-this.centrecolumnlabels = this.getParameter ("centrecolumnlabels");\r
-this.userDefinedColour = this.getParameter ("userDefinedColour");\r
-this.widthScale = this.getParameter ("widthScale");\r
-this.heightScale = this.getParameter ("heightScale");\r
-this.upperCase = this.getParameter ("upperCase");\r
-this.file2 = this.getParameter ("file2");\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "getDefaultParameter", \r
-function (name, def) {\r
-var stn;\r
-if ((stn = this.getParameter (name)) == null) {\r
-return def;\r
-}if (stn.toLowerCase ().equals ("true")) {\r
-return true;\r
-}return false;\r
-}, "~S,~B");\r
-Clazz.defineMethod (c$, "getLinkParams", \r
-function (links) {\r
-var label;\r
-var url;\r
-for (var i = 1; i < 10; i++) {\r
-label = this.getParameter ("linkLabel_" + i);\r
-url = this.getParameter ("linkURL_" + i);\r
-if (label != null && url != null) {\r
-links.addElement (label + "|" + url);\r
-}}\r
-}, "java.util.Vector");\r
-Clazz.defineMethod (c$, "getStructureSelectionManager", \r
-function () {\r
-return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this);\r
-});\r
-Clazz.defineMethod (c$, "getSelectedSequences", \r
-function () {\r
-return this.getSelectedSequencesFrom (this.getDefaultTargetFrame ());\r
-});\r
-Clazz.defineMethod (c$, "getSelectedSequences", \r
-function (sep) {\r
-return this.getSelectedSequencesFrom (this.getDefaultTargetFrame (), sep);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getSelectedSequencesFrom", \r
-function (alf) {\r
-return this.getSelectedSequencesFrom (alf, this.separator);\r
-}, "jalview.appletgui.AlignFrame");\r
-Clazz.defineMethod (c$, "getSelectedSequencesFrom", \r
-function (alf, sep) {\r
-var result =  new StringBuffer ("");\r
-if (sep == null || sep.length == 0) {\r
-sep = this.separator;\r
-}if (alf.viewport.getSelectionGroup () != null) {\r
-var seqs = alf.viewport.getSelectionGroup ().getSequencesInOrder (alf.viewport.getAlignment ());\r
-for (var i = 0; i < seqs.length; i++) {\r
-result.append (seqs[i].getName ());\r
-result.append (sep);\r
-}\r
-}return result.toString ();\r
-}, "jalview.appletgui.AlignFrame,~S");\r
-Clazz.overrideMethod (c$, "highlight", \r
-function (sequenceId, position, alignedPosition) {\r
-this.highlightIn (this.getDefaultTargetFrame (), sequenceId, position, alignedPosition);\r
-}, "~S,~S,~S");\r
-Clazz.overrideMethod (c$, "highlightIn", \r
-function (alf, sequenceId, position, alignedPosition) {\r
-var matcher =  new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());\r
-var sq = matcher.findIdMatch (sequenceId);\r
-if (sq != null) {\r
-var apos = -1;\r
-try {\r
-apos =  new Integer (position).intValue ();\r
-apos--;\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-return;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-var me = this;\r
-var pos = apos;\r
-if (alignedPosition != null && (alignedPosition.trim ().length == 0 || alignedPosition.toLowerCase ().indexOf ("false") > -1)) {\r
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$1") ? 0 : jalview.bin.JalviewLite.$JalviewLite$1$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$1, this, Clazz.cloneFinals ("me", me, "sq", sq, "pos", pos))));\r
-} else {\r
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$2") ? 0 : jalview.bin.JalviewLite.$JalviewLite$2$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$2, this, Clazz.cloneFinals ("me", me, "sq", sq, "pos", pos))));\r
-}}}, "jalview.appletgui.AlignFrame,~S,~S,~S");\r
-Clazz.defineMethod (c$, "select", \r
-function (sequenceIds, columns) {\r
-this.selectIn (this.getDefaultTargetFrame (), sequenceIds, columns, this.separator);\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "select", \r
-function (sequenceIds, columns, sep) {\r
-this.selectIn (this.getDefaultTargetFrame (), sequenceIds, columns, sep);\r
-}, "~S,~S,~S");\r
-Clazz.defineMethod (c$, "selectIn", \r
-function (alf, sequenceIds, columns) {\r
-this.selectIn (alf, sequenceIds, columns, this.separator);\r
-}, "jalview.appletgui.AlignFrame,~S,~S");\r
-Clazz.defineMethod (c$, "selectIn", \r
-function (alf, sequenceIds, columns, sep) {\r
-if (sep == null || sep.length == 0) {\r
-sep = this.separator;\r
-} else {\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Selecting region using separator string '" + this.separator + "'");\r
-}}var ids = this.separatorListToArray (sequenceIds, sep);\r
-var cols = this.separatorListToArray (columns, sep);\r
-var sel =  new jalview.datamodel.SequenceGroup ();\r
-var csel =  new jalview.datamodel.ColumnSelection ();\r
-var al = alf.viewport.getAlignment ();\r
-var matcher =  new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());\r
-var start = 0;\r
-var end = al.getWidth ();\r
-var alw = al.getWidth ();\r
-var seqsfound = true;\r
-if (ids != null && ids.length > 0) {\r
-seqsfound = false;\r
-for (var i = 0; i < ids.length; i++) {\r
-if (ids[i].trim ().length == 0) {\r
-continue;\r
-}var sq = matcher.findIdMatch (ids[i]);\r
-if (sq != null) {\r
-seqsfound = true;\r
-sel.addSequence (sq, false);\r
-}}\r
-}var inseqpos = false;\r
-if (cols != null && cols.length > 0) {\r
-var seset = false;\r
-for (var i = 0; i < cols.length; i++) {\r
-var cl = cols[i].trim ();\r
-if (cl.length == 0) {\r
-continue;\r
-}var p;\r
-if ((p = cl.indexOf ("-")) > -1) {\r
-var from = -1;\r
-var to = -1;\r
-try {\r
-from =  new Integer (cl.substring (0, p)).intValue ();\r
-from--;\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-System.err.println ("ERROR: Couldn't parse first integer in range element column selection string '" + cl + "' - format is 'from-to'");\r
-return;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-try {\r
-to =  new Integer (cl.substring (p + 1)).intValue ();\r
-to--;\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-System.err.println ("ERROR: Couldn't parse second integer in range element column selection string '" + cl + "' - format is 'from-to'");\r
-return;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-if (from >= 0 && to >= 0) {\r
-if (from < to) {\r
-var t = to;\r
-to = from;\r
-to = t;\r
-}if (!seset) {\r
-start = from;\r
-end = to;\r
-seset = true;\r
-} else {\r
-if (start > from) {\r
-start = from;\r
-}if (end < to) {\r
-end = to;\r
-}}for (var r = from; r <= to; r++) {\r
-if (r >= 0 && r < alw) {\r
-csel.addElement (r);\r
-}}\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Range '" + cl + "' deparsed as [" + from + "," + to + "]");\r
-}} else {\r
-System.err.println ("ERROR: Invalid Range '" + cl + "' deparsed as [" + from + "," + to + "]");\r
-}} else {\r
-var r = -1;\r
-try {\r
-r =  new Integer (cl).intValue ();\r
-r--;\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-if (cl.toLowerCase ().equals ("sequence")) {\r
-inseqpos = true;\r
-} else {\r
-System.err.println ("ERROR: Couldn't parse integer from point selection element of column selection string '" + cl + "'");\r
-return;\r
-}} else {\r
-throw ex;\r
-}\r
-}\r
-if (r >= 0 && r <= alw) {\r
-if (!seset) {\r
-start = r;\r
-end = r;\r
-seset = true;\r
-} else {\r
-if (start > r) {\r
-start = r;\r
-}if (end < r) {\r
-end = r;\r
-}}csel.addElement (r);\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Point selection '" + cl + "' deparsed as [" + r + "]");\r
-}} else {\r
-System.err.println ("ERROR: Invalid Point selection '" + cl + "' deparsed as [" + r + "]");\r
-}}}\r
-}if (seqsfound) {\r
-if (inseqpos && sel.getSize () > 0) {\r
-var rs = sel.getSequenceAt (0);\r
-start = rs.findIndex (start);\r
-end = rs.findIndex (end);\r
-if (csel != null) {\r
-var cs = csel.getSelected ();\r
-csel.clear ();\r
-for (var selectedCol, $selectedCol = cs.iterator (); $selectedCol.hasNext () && ((selectedCol = $selectedCol.next ()) || true);) {\r
-csel.addElement (rs.findIndex ((selectedCol).intValue ()));\r
-}\r
-}}sel.setStartRes (start);\r
-sel.setEndRes (end);\r
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$3") ? 0 : jalview.bin.JalviewLite.$JalviewLite$3$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$3, this, Clazz.cloneFinals ("alf", alf, "sel", sel, "csel", csel))));\r
-}}, "jalview.appletgui.AlignFrame,~S,~S,~S");\r
-Clazz.overrideMethod (c$, "getSelectedSequencesAsAlignment", \r
-function (format, suffix) {\r
-return this.getSelectedSequencesAsAlignmentFrom (this.getDefaultTargetFrame (), format, suffix);\r
-}, "~S,~S");\r
-Clazz.overrideMethod (c$, "getSelectedSequencesAsAlignmentFrom", \r
-function (alf, format, suffix) {\r
-try {\r
-var seqlimits = suffix.equalsIgnoreCase ("true");\r
-if (alf.viewport.getSelectionGroup () != null) {\r
-var reply =  new jalview.io.AppletFormatAdapter ().formatSequences (format,  new jalview.datamodel.Alignment (alf.viewport.getSelectionAsNewSequence ()), seqlimits);\r
-return reply;\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-return "Error retrieving alignment in " + format + " format. ";\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-return "";\r
-}, "jalview.appletgui.AlignFrame,~S,~S");\r
-Clazz.overrideMethod (c$, "getAlignmentOrder", \r
-function () {\r
-return this.getAlignmentOrderFrom (this.getDefaultTargetFrame ());\r
-});\r
-Clazz.defineMethod (c$, "getAlignmentOrderFrom", \r
-function (alf) {\r
-return this.getAlignmentOrderFrom (alf, this.separator);\r
-}, "jalview.appletgui.AlignFrame");\r
-Clazz.defineMethod (c$, "getAlignmentOrderFrom", \r
-function (alf, sep) {\r
-var alorder = alf.getAlignViewport ().getAlignment ();\r
-var order =  new Array (alorder.getHeight ());\r
-for (var i = 0; i < order.length; i++) {\r
-order[i] = alorder.getSequenceAt (i).getName ();\r
-}\r
-return this.arrayToSeparatorList (order);\r
-}, "jalview.appletgui.AlignFrame,~S");\r
-Clazz.defineMethod (c$, "orderBy", \r
-function (order, undoName) {\r
-return this.orderBy (order, undoName, this.separator);\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "orderBy", \r
-function (order, undoName, sep) {\r
-return this.orderAlignmentBy (this.getDefaultTargetFrame (), order, undoName, sep);\r
-}, "~S,~S,~S");\r
-Clazz.overrideMethod (c$, "orderAlignmentBy", \r
-function (alf, order, undoName, sep) {\r
-var ids = this.separatorListToArray (order, sep);\r
-var sqs = null;\r
-if (ids != null && ids.length > 0) {\r
-var matcher =  new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());\r
-var s = 0;\r
-sqs =  new Array (ids.length);\r
-for (var i = 0; i < ids.length; i++) {\r
-if (ids[i].trim ().length == 0) {\r
-continue;\r
-}var sq = matcher.findIdMatch (ids[i]);\r
-if (sq != null) {\r
-sqs[s++] = sq;\r
-}}\r
-if (s > 0) {\r
-var sqq =  new Array (s);\r
-System.arraycopy (sqs, 0, sqq, 0, s);\r
-sqs = sqq;\r
-} else {\r
-sqs = null;\r
-}}if (sqs == null) {\r
-return "";\r
-};var aorder =  new jalview.datamodel.AlignmentOrder (sqs);\r
-if (undoName != null && undoName.trim ().length == 0) {\r
-undoName = null;\r
-}var _undoName = undoName;\r
-return alf.sortBy (aorder, _undoName) ? "true" : "";\r
-}, "jalview.appletgui.AlignFrame,~S,~S,~S");\r
-Clazz.defineMethod (c$, "getAlignment", \r
-function (format) {\r
-return this.getAlignmentFrom (this.getDefaultTargetFrame (), format, "true");\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getAlignmentFrom", \r
-function (alf, format) {\r
-return this.getAlignmentFrom (alf, format, "true");\r
-}, "jalview.appletgui.AlignFrame,~S");\r
-Clazz.defineMethod (c$, "getAlignment", \r
-function (format, suffix) {\r
-return this.getAlignmentFrom (this.getDefaultTargetFrame (), format, suffix);\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "getAlignmentFrom", \r
-function (alf, format, suffix) {\r
-try {\r
-var seqlimits = suffix.equalsIgnoreCase ("true");\r
-var reply =  new jalview.io.AppletFormatAdapter ().formatSequences (format, alf.viewport.getAlignment (), seqlimits);\r
-return reply;\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-return "Error retrieving alignment in " + format + " format. ";\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}, "jalview.appletgui.AlignFrame,~S,~S");\r
-Clazz.overrideMethod (c$, "loadAnnotation", \r
-function (annotation) {\r
-this.loadAnnotationFrom (this.getDefaultTargetFrame (), annotation);\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "loadAnnotationFrom", \r
-function (alf, annotation) {\r
-if ( new jalview.io.AnnotationFile ().annotateAlignmentView (alf.getAlignViewport (), annotation, jalview.io.AppletFormatAdapter.PASTE)) {\r
-alf.alignPanel.fontChanged ();\r
-alf.alignPanel.setScrollValues (0, 0);\r
-} else {\r
-alf.parseFeaturesFile (annotation, jalview.io.AppletFormatAdapter.PASTE);\r
-}}, "jalview.appletgui.AlignFrame,~S");\r
-Clazz.overrideMethod (c$, "loadFeatures", \r
-function (features, autoenabledisplay) {\r
-this.loadFeaturesFrom (this.getDefaultTargetFrame (), features, autoenabledisplay);\r
-}, "~S,~B");\r
-Clazz.overrideMethod (c$, "loadFeaturesFrom", \r
-function (alf, features, autoenabledisplay) {\r
-return alf.parseFeaturesFile (features, jalview.io.AppletFormatAdapter.PASTE, autoenabledisplay);\r
-}, "jalview.appletgui.AlignFrame,~S,~B");\r
-Clazz.overrideMethod (c$, "getFeatures", \r
-function (format) {\r
-return this.getFeaturesFrom (this.getDefaultTargetFrame (), format);\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "getFeaturesFrom", \r
-function (alf, format) {\r
-return alf.outputFeatures (false, format);\r
-}, "jalview.appletgui.AlignFrame,~S");\r
-Clazz.overrideMethod (c$, "getAnnotation", \r
-function () {\r
-return this.getAnnotationFrom (this.getDefaultTargetFrame ());\r
-});\r
-Clazz.overrideMethod (c$, "getAnnotationFrom", \r
-function (alf) {\r
-return alf.outputAnnotations (false);\r
-}, "jalview.appletgui.AlignFrame");\r
-Clazz.defineMethod (c$, "newView", \r
-function () {\r
-return this.newViewFrom (this.getDefaultTargetFrame ());\r
-});\r
-Clazz.defineMethod (c$, "newView", \r
-function (name) {\r
-return this.newViewFrom (this.getDefaultTargetFrame (), name);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "newViewFrom", \r
-function (alf) {\r
-return alf.newView (null);\r
-}, "jalview.appletgui.AlignFrame");\r
-Clazz.defineMethod (c$, "newViewFrom", \r
-function (alf, name) {\r
-return alf.newView (name);\r
-}, "jalview.appletgui.AlignFrame,~S");\r
-Clazz.overrideMethod (c$, "loadAlignment", \r
-function (text, title) {\r
-var al = null;\r
-var format =  new jalview.io.IdentifyFile ().Identify (text, jalview.io.AppletFormatAdapter.PASTE);\r
-try {\r
-al =  new jalview.io.AppletFormatAdapter ().readFile (text, jalview.io.AppletFormatAdapter.PASTE, format);\r
-if (al.getHeight () > 0) {\r
-return  new jalview.appletgui.AlignFrame (al, this, title, false);\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, java.io.IOException)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-return null;\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "setMouseoverListener", \r
-function (listener) {\r
-this.setMouseoverListener (this.currentAlignFrame, listener);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setMouseoverListener", \r
-function (af, listener) {\r
-if (listener != null) {\r
-listener = listener.trim ();\r
-if (listener.length == 0) {\r
-System.err.println ("jalview Javascript error: Ignoring empty function for mouseover listener.");\r
-return;\r
-}}var mol =  new jalview.javascript.MouseOverListener (this, af, listener);\r
-this.javascriptListeners.addElement (mol);\r
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addStructureViewerListener (mol);\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Added a mouseover listener for " + ((af == null) ? "All frames" : "Just views for " + af.getAlignViewport ().getSequenceSetId ()));\r
-System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");\r
-}}, "jalview.appletgui.AlignFrame,~S");\r
-Clazz.defineMethod (c$, "setSelectionListener", \r
-function (listener) {\r
-this.setSelectionListener (null, listener);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setSelectionListener", \r
-function (af, listener) {\r
-if (listener != null) {\r
-listener = listener.trim ();\r
-if (listener.length == 0) {\r
-System.err.println ("jalview Javascript error: Ignoring empty function for selection listener.");\r
-return;\r
-}}var mol =  new jalview.javascript.JsSelectionSender (this, af, listener);\r
-this.javascriptListeners.addElement (mol);\r
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addSelectionListener (mol);\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Added a selection listener for " + ((af == null) ? "All frames" : "Just views for " + af.getAlignViewport ().getSequenceSetId ()));\r
-System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");\r
-}}, "jalview.appletgui.AlignFrame,~S");\r
-Clazz.overrideMethod (c$, "setStructureListener", \r
-function (listener, modelSet) {\r
-if (listener != null) {\r
-listener = listener.trim ();\r
-if (listener.length == 0) {\r
-System.err.println ("jalview Javascript error: Ignoring empty function for selection listener.");\r
-return;\r
-}}var mol =  new jalview.javascript.MouseOverStructureListener (this, listener, this.separatorListToArray (modelSet));\r
-this.javascriptListeners.addElement (mol);\r
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addStructureViewerListener (mol);\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Added a javascript structure viewer listener '" + listener + "'");\r
-System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");\r
-}}, "~S,~S");\r
-Clazz.overrideMethod (c$, "removeJavascriptListener", \r
-function (af, listener) {\r
-if (listener != null) {\r
-listener = listener.trim ();\r
-if (listener.length == 0) {\r
-listener = null;\r
-}}var rprt = false;\r
-for (var ms = 0, msSize = this.javascriptListeners.size (); ms < msSize; ) {\r
-var lstn = this.javascriptListeners.elementAt (ms);\r
-var lstner = lstn;\r
-if ((af == null || lstner.getAlignFrame () === af) && (listener == null || lstner.getListenerFunction ().equals (listener))) {\r
-this.javascriptListeners.removeElement (lstner);\r
-msSize--;\r
-if (Clazz.instanceOf (lstner, jalview.structure.SelectionListener)) {\r
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeSelectionListener (lstner);\r
-} else {\r
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeStructureViewerListener (lstner, null);\r
-}rprt = jalview.bin.JalviewLite.debug;\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Removed listener '" + listener + "'");\r
-}} else {\r
-ms++;\r
-}}\r
-if (rprt) {\r
-System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");\r
-}}, "jalview.appletgui.AlignFrame,~S");\r
-Clazz.overrideMethod (c$, "stop", \r
-function () {\r
-System.err.println ("Applet " + this.getName () + " stop().");\r
-this.tidyUp ();\r
-});\r
-Clazz.overrideMethod (c$, "destroy", \r
-function () {\r
-System.err.println ("Applet " + this.getName () + " destroy().");\r
-this.tidyUp ();\r
-});\r
-Clazz.defineMethod (c$, "tidyUp", \r
-($fz = function () {\r
-this.removeAll ();\r
-if (this.currentAlignFrame != null && this.currentAlignFrame.viewport != null && this.currentAlignFrame.viewport.applet != null) {\r
-var av = this.currentAlignFrame.viewport;\r
-this.currentAlignFrame.closeMenuItem_actionPerformed ();\r
-av.applet = null;\r
-this.currentAlignFrame = null;\r
-}if (this.javascriptListeners != null) {\r
-while (this.javascriptListeners.size () > 0) {\r
-var mol = this.javascriptListeners.elementAt (0);\r
-this.javascriptListeners.removeElement (mol);\r
-if (Clazz.instanceOf (mol, jalview.structure.SelectionListener)) {\r
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeSelectionListener (mol);\r
-} else {\r
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeStructureViewerListener (mol, null);\r
-}mol.jvlite = null;\r
-}\r
-}if (this.jsFunctionExec != null) {\r
-this.jsFunctionExec.stopQueue ();\r
-this.jsFunctionExec.jvlite = null;\r
-}this.initialAlignFrame = null;\r
-this.jsFunctionExec = null;\r
-this.javascriptListeners = null;\r
-jalview.structure.StructureSelectionManager.release (this);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "mouseOverStructure", \r
-function (pdbResNum, chain, pdbfile) {\r
-var me = this;\r
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$4") ? 0 : jalview.bin.JalviewLite.$JalviewLite$4$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$4, this, Clazz.cloneFinals ("me", me, "pdbResNum", pdbResNum, "chain", chain, "pdbfile", pdbfile))));\r
-}, "~S,~S,~S");\r
-Clazz.overrideMethod (c$, "scrollViewToIn", \r
-function (alf, topRow, leftHandColumn) {\r
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$5") ? 0 : jalview.bin.JalviewLite.$JalviewLite$5$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$5, this, Clazz.cloneFinals ("alf", alf, "topRow", topRow, "leftHandColumn", leftHandColumn))));\r
-}, "jalview.appletgui.AlignFrame,~S,~S");\r
-Clazz.overrideMethod (c$, "scrollViewToRowIn", \r
-function (alf, topRow) {\r
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$6") ? 0 : jalview.bin.JalviewLite.$JalviewLite$6$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$6, this, Clazz.cloneFinals ("alf", alf, "topRow", topRow))));\r
-}, "jalview.appletgui.AlignFrame,~S");\r
-Clazz.overrideMethod (c$, "scrollViewToColumnIn", \r
-function (alf, leftHandColumn) {\r
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$7") ? 0 : jalview.bin.JalviewLite.$JalviewLite$7$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$7, this, Clazz.cloneFinals ("alf", alf, "leftHandColumn", leftHandColumn))));\r
-}, "jalview.appletgui.AlignFrame,~S");\r
-c$.initBuildDetails = Clazz.defineMethod (c$, "initBuildDetails", \r
-($fz = function () {\r
-if (jalview.bin.JalviewLite.builddate == null) {\r
-jalview.bin.JalviewLite.builddate = "unknown";\r
-jalview.bin.JalviewLite.version = "test";\r
-jalview.bin.JalviewLite.installation = "Webstart";\r
-var url = jalview.bin.JalviewLite.getResource ("/.build_properties");\r
-if (url != null) {\r
-try {\r
-var reader =  new java.io.BufferedReader ( new java.io.InputStreamReader (url.openStream ()));\r
-var line;\r
-while ((line = reader.readLine ()) != null) {\r
-if (line.indexOf ("VERSION") > -1) {\r
-jalview.bin.JalviewLite.version = line.substring (line.indexOf ("=") + 1);\r
-}if (line.indexOf ("BUILD_DATE") > -1) {\r
-jalview.bin.JalviewLite.builddate = line.substring (line.indexOf ("=") + 1);\r
-}if (line.indexOf ("INSTALLATION") > -1) {\r
-jalview.bin.JalviewLite.installation = line.substring (line.indexOf ("=") + 1);\r
-}}\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}}}, $fz.isPrivate = true, $fz));\r
-c$.getBuildDate = Clazz.defineMethod (c$, "getBuildDate", \r
-function () {\r
-jalview.bin.JalviewLite.initBuildDetails ();\r
-return jalview.bin.JalviewLite.builddate;\r
-});\r
-c$.getInstallation = Clazz.defineMethod (c$, "getInstallation", \r
-function () {\r
-jalview.bin.JalviewLite.initBuildDetails ();\r
-return jalview.bin.JalviewLite.installation;\r
-});\r
-c$.getVersion = Clazz.defineMethod (c$, "getVersion", \r
-function () {\r
-jalview.bin.JalviewLite.initBuildDetails ();\r
-return jalview.bin.JalviewLite.version;\r
-});\r
-Clazz.overrideMethod (c$, "init", \r
-function () {\r
-this.setParams ();\r
-try {\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Applet context is '" + this.getAppletContext ().getClass ().toString () + "'");\r
-}var scriptObject = netscape.javascript.JSObject.getWindow (this);\r
-if (jalview.bin.JalviewLite.debug && scriptObject != null) {\r
-System.err.println ("Applet has Javascript callback support.");\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.err.println ("Warning: No JalviewLite javascript callbacks available.");\r
-if (jalview.bin.JalviewLite.debug) {\r
-ex.printStackTrace ();\r
-}} else {\r
-throw ex;\r
-}\r
-}\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("JalviewLite Version " + jalview.bin.JalviewLite.getVersion ());\r
-System.err.println ("Build Date : " + jalview.bin.JalviewLite.getBuildDate ());\r
-System.err.println ("Installation : " + jalview.bin.JalviewLite.getInstallation ());\r
-}if (this.externalstructureviewer != null) {\r
-this.useXtrnalSviewer = this.externalstructureviewer.trim ().toLowerCase ().equals ("true");\r
-}if (this.sep != null) {\r
-if (this.sep.length > 0) {\r
-this.separator = this.sep;\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Separator set to '" + this.separator + "'");\r
-}} else {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.invalid_separator_parameter"));\r
-}}var r = 255;\r
-var g = 255;\r
-var b = 255;\r
-if (this.rgb != null) {\r
-try {\r
-r = Integer.parseInt (this.rgb.substring (0, 2), 16);\r
-g = Integer.parseInt (this.rgb.substring (2, 4), 16);\r
-b = Integer.parseInt (this.rgb.substring (4, 6), 16);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-r = 255;\r
-g = 255;\r
-b = 255;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}this.rgb = this.labelColour;\r
-if (this.rgb != null) {\r
-this.launcher.setLabel (this.rgb);\r
-}this.setBackground ( new java.awt.Color (r, g, b));\r
-if (this.startupFile == null) {\r
-var data =  new StringBuffer ("PASTE");\r
-var i = 1;\r
-while ((this.startupFile = this.getParameter ("sequence" + i)) != null) {\r
-data.append (this.startupFile.toString () + "\n");\r
-i++;\r
-}\r
-if (data.length () > 5) {\r
-this.startupFile = data.toString ();\r
-}}if (!this.enableSplitFrame) {\r
-this.file2 = null;\r
-}if (this.embedded) {\r
-var loader = Clazz.innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.startupFile, this.file2, this);\r
-{\r
-loader.run();\r
-}} else if (this.startupFile != null) {\r
-if (!this.showButton) {\r
-var loader = Clazz.innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.startupFile, this.file2, this);\r
-loader.start ();\r
-} else {\r
-this.add (this.launcher);\r
-this.launcher.addActionListener (((Clazz.isClassDefined ("jalview.bin.JalviewLite$8") ? 0 : jalview.bin.JalviewLite.$JalviewLite$8$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$8, this, null)));\r
-}} else {\r
-this.startupFile = "NO FILE";\r
-this.fileFound = false;\r
-this.callInitCallback ();\r
-}});\r
-Clazz.defineMethod (c$, "initLiveConnect", \r
-($fz = function () {\r
-var notFailed = false;\r
-var tries = 0;\r
-while (!notFailed && tries < 10) {\r
-if (tries > 0) {\r
-System.err.println ("LiveConnect request thread going to sleep.");\r
-}try {\r
-Thread.sleep (700 * (1 + tries));\r
-} catch (q) {\r
-if (Clazz.exceptionOf (q, InterruptedException)) {\r
-} else {\r
-throw q;\r
-}\r
-}\r
-;if (tries++ > 0) {\r
-System.err.println ("LiveConnect request thread woken up.");\r
-}try {\r
-var scriptObject = netscape.javascript.JSObject.getWindow (this);\r
-if (scriptObject.eval ("navigator") != null) {\r
-notFailed = true;\r
-}} catch (jsex) {\r
-if (Clazz.exceptionOf (jsex, Exception)) {\r
-System.err.println ("Attempt " + tries + " to access LiveConnect javascript failed.");\r
-} else {\r
-throw jsex;\r
-}\r
-}\r
-}\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "callInitCallback", \r
-($fz = function () {\r
-if (this.initjscallback == null) {\r
-return;\r
-}this.initjscallback = this.initjscallback.trim ();\r
-if (this.initjscallback.length > 0) {\r
-var scriptObject = null;\r
-try {\r
-scriptObject = netscape.javascript.JSObject.getWindow (this);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-;this.initLiveConnect ();\r
-if (scriptObject != null) {\r
-try {\r
- new jalview.javascript.JSFunctionExec (this).executeJavascriptFunction (true, this.initjscallback, null, "Calling oninit callback '" + this.initjscallback + "'.");\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Exception when executing _oninit callback '" + this.initjscallback + "'.");\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-} else {\r
-System.err.println ("Not executing _oninit callback '" + this.initjscallback + "' - no scripting allowed.");\r
-}}}, $fz.isPrivate = true, $fz));\r
-c$.addFrame = Clazz.defineMethod (c$, "addFrame", \r
-function (frame, title, width, height) {\r
-frame.setLocation (jalview.bin.JalviewLite.lastFrameX, jalview.bin.JalviewLite.lastFrameY);\r
-jalview.bin.JalviewLite.lastFrameX += 40;\r
-jalview.bin.JalviewLite.lastFrameY += 40;\r
-frame.setSize (width, height);\r
-frame.setTitle (title);\r
-frame.addWindowListener (((Clazz.isClassDefined ("jalview.bin.JalviewLite$9") ? 0 : jalview.bin.JalviewLite.$JalviewLite$9$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$9, this, Clazz.cloneFinals ("frame", frame))));\r
-frame.setVisible (true);\r
-}, "javax.swing.JFrame,~S,~N,~N");\r
-Clazz.defineMethod (c$, "paintComponent", \r
-function (g) {\r
-if (!this.fileFound) {\r
-g.setColor ( new java.awt.Color (200, 200, 200));\r
-g.setColor (java.awt.Color.cyan);\r
-g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);\r
-g.setColor (java.awt.Color.red);\r
-g.drawString (jalview.util.MessageManager.getString ("label.jalview_cannot_open_file"), 5, 15);\r
-g.drawString ("\"" + this.startupFile + "\"", 5, 30);\r
-} else if (this.embedded && !this.haveShownLoadMessage) {\r
-g.setColor (java.awt.Color.black);\r
-g.setFont ( new java.awt.Font ("Arial", 1, 24));\r
-g.drawString (jalview.util.MessageManager.getString ("label.jalview_applet"), 50, Clazz.doubleToInt (this.getSize ().height / 2) - 30);\r
-g.drawString (jalview.util.MessageManager.getString ("label.loading_data") + "...", 50, Clazz.doubleToInt (this.getSize ().height / 2));\r
-this.haveShownLoadMessage = true;\r
-}}, "java.awt.Graphics");\r
-Clazz.defineMethod (c$, "getAppletWindow", \r
-function (class1) {\r
-var wnds =  new java.util.Vector ();\r
-var cmp = this.getComponents ();\r
-if (cmp != null) {\r
-for (var i = 0; i < cmp.length; i++) {\r
-if (class1.isAssignableFrom (cmp[i].getClass ())) {\r
-wnds.addElement (cmp);\r
-}}\r
-}return wnds;\r
-}, "Class");\r
-Clazz.defineMethod (c$, "getDefaultTargetFrame", \r
-function () {\r
-if (this.currentAlignFrame != null) {\r
-return this.currentAlignFrame;\r
-}if (this.initialAlignFrame != null) {\r
-return this.initialAlignFrame;\r
-}System.err.println ("Implementation error: Jalview Applet API cannot work out which AlignFrame to use.");\r
-return null;\r
-});\r
-Clazz.defineMethod (c$, "separatorListToArray", \r
-function (list) {\r
-return this.separatorListToArray (list, this.separator);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "separatorListToArray", \r
-function (list, separator) {\r
-var seplen = separator.length;\r
-if (list == null || list.equals ("") || list.equals (separator)) {\r
-return null;\r
-}var jv =  new java.util.Vector ();\r
-var cp = 0;\r
-var pos;\r
-while ((pos = list.indexOf (separator, cp)) > cp) {\r
-jv.addElement (list.substring (cp, pos));\r
-cp = pos + seplen;\r
-}\r
-if (cp < list.length) {\r
-var c = list.substring (cp);\r
-if (!c.equals (separator)) {\r
-jv.addElement (c);\r
-}}if (jv.size () > 0) {\r
-var v =  new Array (jv.size ());\r
-for (var i = 0; i < v.length; i++) {\r
-v[i] = jv.elementAt (i);\r
-}\r
-jv.removeAllElements ();\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Array from '" + separator + "' separated List:\n" + v.length);\r
-for (var i = 0; i < v.length; i++) {\r
-System.err.println ("item " + i + " '" + v[i] + "'");\r
-}\r
-}return v;\r
-}if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Empty Array from '" + separator + "' separated List");\r
-}return null;\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "arrayToSeparatorList", \r
-function (list) {\r
-return this.arrayToSeparatorList (list, this.separator);\r
-}, "~A");\r
-Clazz.defineMethod (c$, "arrayToSeparatorList", \r
-function (list, separator) {\r
-var v =  new StringBuffer ();\r
-if (list != null && list.length > 0) {\r
-for (var i = 0, iSize = list.length; i < iSize; i++) {\r
-if (list[i] != null) {\r
-if (i > 0) {\r
-v.append (separator);\r
-}v.append (list[i]);\r
-}}\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Returning '" + separator + "' separated List:\n");\r
-System.err.println (v);\r
-}return v.toString ();\r
-}if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Returning empty '" + separator + "' separated List\n");\r
-}return "" + separator;\r
-}, "~A,~S");\r
-Clazz.overrideMethod (c$, "getFeatureGroups", \r
-function () {\r
-var lst = this.arrayToSeparatorList (this.getDefaultTargetFrame ().getFeatureGroups ());\r
-return lst;\r
-});\r
-Clazz.overrideMethod (c$, "getFeatureGroupsOn", \r
-function (alf) {\r
-var lst = this.arrayToSeparatorList (alf.getFeatureGroups ());\r
-return lst;\r
-}, "jalview.appletgui.AlignFrame");\r
-Clazz.overrideMethod (c$, "getFeatureGroupsOfState", \r
-function (visible) {\r
-return this.arrayToSeparatorList (this.getDefaultTargetFrame ().getFeatureGroupsOfState (visible));\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "getFeatureGroupsOfStateOn", \r
-function (alf, visible) {\r
-return this.arrayToSeparatorList (alf.getFeatureGroupsOfState (visible));\r
-}, "jalview.appletgui.AlignFrame,~B");\r
-Clazz.overrideMethod (c$, "setFeatureGroupStateOn", \r
-function (alf, groups, state) {\r
-var st = state;\r
-java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$10") ? 0 : jalview.bin.JalviewLite.$JalviewLite$10$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$10, this, Clazz.cloneFinals ("alf", alf, "groups", groups, "st", st))));\r
-}, "jalview.appletgui.AlignFrame,~S,~B");\r
-Clazz.overrideMethod (c$, "setFeatureGroupState", \r
-function (groups, state) {\r
-this.setFeatureGroupStateOn (this.getDefaultTargetFrame (), groups, state);\r
-}, "~S,~B");\r
-Clazz.overrideMethod (c$, "getSeparator", \r
-function () {\r
-return this.separator;\r
-});\r
-Clazz.overrideMethod (c$, "setSeparator", \r
-function (separator) {\r
-if (separator == null || separator.length < 1) {\r
-separator = "\u00ac";\r
-}this.separator = separator;\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Default Separator now: '" + separator + "'");\r
-}}, "~S");\r
-Clazz.overrideMethod (c$, "addPdbFile", \r
-function (alFrame, sequenceId, pdbEntryString, pdbFile) {\r
-return alFrame.addPdbFile (sequenceId, pdbEntryString, pdbFile);\r
-}, "jalview.appletgui.AlignFrame,~S,~S,~S");\r
-Clazz.defineMethod (c$, "setAlignPdbStructures", \r
-function (alignPdbStructures) {\r
-this.alignPdbStructures = alignPdbStructures;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isAlignPdbStructures", \r
-function () {\r
-return this.alignPdbStructures;\r
-});\r
-Clazz.overrideMethod (c$, "start", \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "setJsMessageSet", \r
-function (messageclass, viewId, colcommands) {\r
-var msgset = this.jsmessages.get (messageclass);\r
-if (msgset == null) {\r
-msgset =  new java.util.Hashtable ();\r
-this.jsmessages.put (messageclass, msgset);\r
-}msgset.put (viewId, colcommands);\r
-var l =  Clazz.newLongArray (colcommands.length, 0);\r
-for (var i = 0; i < colcommands.length; i++) {\r
-l[i] = colcommands[i].hashCode ();\r
-}\r
-this.jshashes.put (messageclass + "|" + viewId, l);\r
-}, "~S,~S,~A");\r
-Clazz.overrideMethod (c$, "getJsMessage", \r
-function (messageclass, viewId) {\r
-var msgset = this.jsmessages.get (messageclass);\r
-if (msgset != null) {\r
-var msgs = msgset.get (viewId);\r
-if (msgs != null) {\r
-for (var i = 0; i < msgs.length; i++) {\r
-if (msgs[i] != null) {\r
-var m = msgs[i];\r
-msgs[i] = null;\r
-return m;\r
-}}\r
-}}return "";\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "isJsMessageSetChanged", \r
-function (string, string2, colcommands) {\r
-var l = this.jshashes.get (string + "|" + string2);\r
-if (l == null && colcommands != null) {\r
-return true;\r
-}for (var i = 0; i < colcommands.length; i++) {\r
-if (l[i] != colcommands[i].hashCode ()) {\r
-return true;\r
-}}\r
-return false;\r
-}, "~S,~S,~A");\r
-Clazz.defineMethod (c$, "getJsExecQueue", \r
-function () {\r
-return this.jsExecQueue;\r
-});\r
-Clazz.defineMethod (c$, "setExecutor", \r
-function (jsFunctionExec2) {\r
-this.jsFunctionExec = jsFunctionExec2;\r
-}, "jalview.javascript.JSFunctionExec");\r
-Clazz.defineMethod (c$, "getDefaultColourParameter", \r
-function (colparam, defcolour) {\r
-var colprop = this.getParameter (colparam);\r
-if (colprop == null || colprop.trim ().length == 0) {\r
-return defcolour;\r
-}var col = jalview.schemes.ColourSchemeProperty.getAWTColorFromName (colprop);\r
-if (col == null) {\r
-try {\r
-col =  new jalview.schemes.UserColourScheme (colprop).findColour ('A');\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.err.println ("Couldn't parse '" + colprop + "' as a colour for " + colparam);\r
-col = null;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}return (col == null) ? defcolour : col;\r
-}, "~S,java.awt.Color");\r
-Clazz.defineMethod (c$, "openJalviewHelpUrl", \r
-function () {\r
-if (this.helpUrl == null || this.helpUrl.trim ().length < 5) {\r
-this.helpUrl = "http://www.jalview.org/help.html";\r
-}this.showURL (this.helpUrl, "HELP");\r
-});\r
-Clazz.defineMethod (c$, "resolveUrlForLocalOrAbsolute", \r
-($fz = function (url, localref) {\r
-var codebase = localref.toString ();\r
-var pt = codebase.indexOf ("?");\r
-if (pt < 0) pt = codebase.length;\r
-codebase = codebase.substring (0, pt);\r
-codebase = codebase.substring (0, codebase.lastIndexOf ("/") + 1);\r
-if (url.indexOf ("/") == 0 && !localref.getProtocol ().equals ("file")) {\r
-pt = codebase.indexOf ("/", 8);\r
-return codebase.substring (0, pt) + url;\r
-}return codebase + url;\r
-}, $fz.isPrivate = true, $fz), "~S,java.net.URL");\r
-Clazz.defineMethod (c$, "showURL", \r
-function (url, target) {\r
-try {\r
-if (url.indexOf (":") == -1) {\r
-var prepend;\r
-url = this.resolveUrlForLocalOrAbsolute (url, prepend = this.getDefaultParameter ("resolvetocodebase", false) ? this.getDocumentBase () : this.getCodeBase ());\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Show url (prepended " + prepend + " - toggle resolvetocodebase if code/docbase resolution is wrong): " + url);\r
-}} else {\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Show url: " + url);\r
-}}if (url.indexOf ("javascript:") == 0) {\r
-this.getAppletContext ().showDocument ( new java.net.URL (url));\r
-} else {\r
-this.getAppletContext ().showDocument ( new java.net.URL (url), target);\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}, "~S,~S");\r
-c$.$JalviewLite$LoadJmolThread$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.running = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.bin.JalviewLite, "LoadJmolThread", Thread);\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-if (this.running || this.b$["jalview.bin.JalviewLite"].checkedForJmol) {\r
-return;\r
-}this.running = true;\r
-if (this.b$["jalview.bin.JalviewLite"].checkForJmol) {\r
-try {\r
-if (!System.getProperty ("java.version").startsWith ("1.1")) {\r
-Class.forName ("org.jmol.adapter.smarter.SmarterJmolAdapter");\r
-this.b$["jalview.bin.JalviewLite"].jmolAvailable = true;\r
-}if (!this.b$["jalview.bin.JalviewLite"].jmolAvailable) {\r
-System.out.println ("Jmol not available - Using MCview for structures");\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, ClassNotFoundException)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-} else {\r
-this.b$["jalview.bin.JalviewLite"].jmolAvailable = false;\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Skipping Jmol check. Will use MCView (probably)");\r
-}}this.b$["jalview.bin.JalviewLite"].checkedForJmol = true;\r
-this.running = false;\r
-});\r
-Clazz.defineMethod (c$, "notFinished", \r
-function () {\r
-return this.running || !this.b$["jalview.bin.JalviewLite"].checkedForJmol;\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$JalviewLite$LoadingThread$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.protocol = null;\r
-this._file = null;\r
-this._file2 = null;\r
-this.applet = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.bin.JalviewLite, "LoadingThread", Thread);\r
-Clazz.defineMethod (c$, "dbgMsg", \r
-($fz = function (a) {\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println (a);\r
-}}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "setProtocolState", \r
-function (a) {\r
-if (a.startsWith ("PASTE")) {\r
-a = a.substring (5);\r
-this.protocol = jalview.io.AppletFormatAdapter.PASTE;\r
-} else if (this.inArchive (a)) {\r
-this.protocol = jalview.io.AppletFormatAdapter.CLASSLOADER;\r
-} else {\r
-a = this.addProtocol (a);\r
-this.protocol = jalview.io.AppletFormatAdapter.URL;\r
-}this.dbgMsg ("Protocol identified as '" + this.protocol + "'");\r
-return a;\r
-}, "~S");\r
-Clazz.makeConstructor (c$, \r
-function (a, b, c) {\r
-Clazz.superConstructor (this, jalview.bin.JalviewLite.LoadingThread, []);\r
-this._file = a;\r
-this._file2 = b;\r
-this.applet = c;\r
-}, "~S,~S,jalview.bin.JalviewLite");\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-{\r
-System.out.println("BYPASSING JMOL LOADING FOR NOW. THIS WILL BE DONE ANOTHER WAY")\r
-}this.startLoading ();\r
-});\r
-Clazz.defineMethod (c$, "startLoading", \r
-($fz = function () {\r
-this.dbgMsg ("Loading thread started with:\n>>file\n" + this._file + ">>endfile");\r
-this.dbgMsg ("Loading started.");\r
-var a = this.readAlignment (this._file);\r
-var b = this.readAlignment (this._file2);\r
-if (a != null) {\r
-this.addToDisplay (a, b);\r
-this.loadTree (a);\r
-this.loadScoreFile (a);\r
-this.loadFeatures (a);\r
-this.loadAnnotations (a);\r
-this.loadJnetFile (a);\r
-this.loadPdbFiles (a);\r
-} else {\r
-this.b$["jalview.bin.JalviewLite"].fileFound = false;\r
-this.applet.remove (this.b$["jalview.bin.JalviewLite"].launcher);\r
-this.applet.repaint ();\r
-}this.b$["jalview.bin.JalviewLite"].callInitCallback ();\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "addToDisplay", \r
-function (a, b) {\r
-if (b == null) {\r
-a.addToDisplay (this.b$["jalview.bin.JalviewLite"].embedded);\r
-} else {\r
-var c =  new jalview.appletgui.SplitFrame (a, b);\r
-c.addToDisplay (this.b$["jalview.bin.JalviewLite"].embedded, this.b$["jalview.bin.JalviewLite"]);\r
-}}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignFrame");\r
-Clazz.defineMethod (c$, "readAlignment", \r
-function (a) {\r
-if (a == null) {\r
-return null;\r
-}var b = this.setProtocolState (a);\r
-var c =  new jalview.io.IdentifyFile ().Identify (b, this.protocol);\r
-this.dbgMsg ("File identified as '" + c + "'");\r
-var d = null;\r
-try {\r
-d =  new jalview.io.AppletFormatAdapter ().readFile (b, this.protocol, c);\r
-if ((d != null) && (d.getHeight () > 0)) {\r
-this.dbgMsg ("Successfully loaded file.");\r
-d.setDataset (null);\r
-var e =  new jalview.appletgui.AlignFrame (d, this.applet, b, this.b$["jalview.bin.JalviewLite"].embedded, false);\r
-e.setTitle (b);\r
-if (this.b$["jalview.bin.JalviewLite"].initialAlignFrame == null) {\r
-this.b$["jalview.bin.JalviewLite"].initialAlignFrame = e;\r
-}this.b$["jalview.bin.JalviewLite"].currentAlignFrame = e;\r
-if (this.protocol === jalview.io.AppletFormatAdapter.PASTE) {\r
-e.setTitle (jalview.util.MessageManager.formatMessage ("label.sequences_from",  Clazz.newArray (-1, [this.applet.getDocumentBase ().toString ()])));\r
-}e.setStatus (jalview.util.MessageManager.formatMessage ("label.successfully_loaded_file",  Clazz.newArray (-1, [b])));\r
-return e;\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, java.io.IOException)) {\r
-this.dbgMsg ("File load exception.");\r
-ex.printStackTrace ();\r
-if (jalview.bin.JalviewLite.debug) {\r
-try {\r
-var e =  new jalview.io.FileParse (b, this.protocol);\r
-var f = null;\r
-this.dbgMsg (">>>Dumping contents of '" + b + "' " + "(" + this.protocol + ")");\r
-while ((f = e.nextLine ()) != null) {\r
-this.dbgMsg (f);\r
-}\r
-this.dbgMsg (">>>Dump finished.");\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Exception when trying to dump the content of the file parameter.");\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}} else {\r
-throw ex;\r
-}\r
-}\r
-return null;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "loadPdbFiles", \r
-function (a) {\r
-var b = false;\r
-this.applet.setAlignPdbStructures (this.b$["jalview.bin.JalviewLite"].getDefaultParameter ("alignpdbfiles", false));\r
-var c = 0;\r
-var d =  new java.util.Vector ();\r
-var e = (this.applet.getDefaultParameter ("relaxedidmatch", false)) ?  new jalview.analysis.SequenceIdMatcher (a.getAlignViewport ().getAlignment ().getSequencesArray ()) : null;\r
-var f;\r
-do {\r
-if (c > 0) {\r
-f = this.applet.getParameter ("PDBFILE" + c);\r
-} else {\r
-f = this.b$["jalview.bin.JalviewLite"].pdbFile;\r
-}if (f != null) {\r
-var g =  new jalview.datamodel.PDBEntry ();\r
-var h;\r
-var i = null;\r
-var j = null;\r
-var k =  new java.util.StringTokenizer (f, " ");\r
-if (k.countTokens () < 2) {\r
-if (this.b$["jalview.bin.JalviewLite"].sequence != null) {\r
-i =  Clazz.newArray (-1, [e == null ? a.getAlignViewport ().getAlignment ().findName (this.b$["jalview.bin.JalviewLite"].sequence) : e.findIdMatch (this.b$["jalview.bin.JalviewLite"].sequence)]);\r
-}} else {\r
-f = k.nextToken ();\r
-var l =  new java.util.Vector ();\r
-var m =  new java.util.Vector ();\r
-while (k.hasMoreTokens ()) {\r
-h = k.nextToken ();\r
-var n =  new java.util.StringTokenizer (h, "=");\r
-if (n.countTokens () > 1) {\r
-m.addElement (n.nextToken ());\r
-h = n.nextToken ();\r
-}l.addElement (e == null ? a.getAlignViewport ().getAlignment ().findName (h) : e.findIdMatch (h));\r
-}\r
-i =  new Array (l.size ());\r
-l.copyInto (i);\r
-if (m.size () == l.size ()) {\r
-j =  new Array (m.size ());\r
-m.copyInto (j);\r
-}}f = this.setProtocolState (f);\r
-if (this.protocol === jalview.io.AppletFormatAdapter.CLASSLOADER && !this.b$["jalview.bin.JalviewLite"].useXtrnalSviewer) {\r
-this.protocol = jalview.io.AppletFormatAdapter.URL;\r
-f = this.addProtocol (f);\r
-}g.setFile (f);\r
-if (i != null) {\r
-for (var l = 0; l < i.length; l++) {\r
-if (i[l] != null) {\r
-(i[l]).addPDBId (g);\r
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.applet).registerPDBEntry (g);\r
-} else {\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Warning: Possible input parsing error: Null sequence for attachment of PDB (sequence " + l + ")");\r
-}}}\r
-if (!this.b$["jalview.bin.JalviewLite"].alignPdbStructures) {\r
-a.newStructureView (this.applet, g, i, j, this.protocol);\r
-} else {\r
-d.addElement ( Clazz.newArray (-1, [g, i, j,  String.instantialize (this.protocol)]));\r
-}}}c++;\r
-} while (f != null || c < 10);\r
-if (d.size () > 0) {\r
-var g =  new Array (d.size ());\r
-var h =  new Array (d.size ());\r
-var i =  new Array (d.size ());\r
-var j =  new Array (d.size ());\r
-for (var k = 0, l = d.size (); k < l; k++) {\r
-var m = d.elementAt (k);\r
-h[k] = m[0];\r
-g[k] = m[1];\r
-i[k] = m[2];\r
-j[k] = m[3];\r
-}\r
-a.alignedStructureView (this.applet, h, g, i, j);\r
-b = true;\r
-}return b;\r
-}, "jalview.appletgui.AlignFrame");\r
-Clazz.defineMethod (c$, "loadJnetFile", \r
-function (a) {\r
-var b = false;\r
-var c = this.b$["jalview.bin.JalviewLite"].jnetFile;\r
-if (c != null) {\r
-try {\r
-c = this.setProtocolState (c);\r
-var d = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [c, this.protocol]);\r
-jalview.io.JnetAnnotationMaker.add_annotation (d, a.viewport.getAlignment (), 0, false);\r
-var e = a.viewport.getAlignment ().getSequenceAt (0);\r
-a.viewport.getAlignment ().setSeqrep (e);\r
-var f =  new jalview.datamodel.ColumnSelection ();\r
-f.hideInsertionsFor (e);\r
-a.viewport.setColumnSelection (f);\r
-a.alignPanel.fontChanged ();\r
-a.alignPanel.setScrollValues (0, 0);\r
-b = true;\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}return b;\r
-}, "jalview.appletgui.AlignFrame");\r
-Clazz.defineMethod (c$, "loadAnnotations", \r
-function (a) {\r
-var b = false;\r
-var c = this.b$["jalview.bin.JalviewLite"].annotations;\r
-if (c != null) {\r
-c = this.setProtocolState (c);\r
-if ( new jalview.io.AnnotationFile ().annotateAlignmentView (a.viewport, c, this.protocol)) {\r
-a.alignPanel.fontChanged ();\r
-a.alignPanel.setScrollValues (0, 0);\r
-b = true;\r
-} else {\r
-System.err.println ("Annotations were not added from annotation file '" + c + "'");\r
-}}return b;\r
-}, "jalview.appletgui.AlignFrame");\r
-Clazz.defineMethod (c$, "loadFeatures", \r
-function (a) {\r
-var b = false;\r
-var c = this.b$["jalview.bin.JalviewLite"].hideFeatureGroups;\r
-if (c != null) {\r
-a.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (c), false);\r
-}c = this.b$["jalview.bin.JalviewLite"].showFeatureGroups;\r
-if (c != null) {\r
-a.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (c), true);\r
-}c = this.b$["jalview.bin.JalviewLite"].features;\r
-if (c != null) {\r
-c = this.setProtocolState (c);\r
-b = a.parseFeaturesFile (c, this.protocol);\r
-}c = this.b$["jalview.bin.JalviewLite"].showFeatureSettings;\r
-if (c != null && c.equalsIgnoreCase ("true")) {\r
-a.viewport.setShowSequenceFeatures (true);\r
- new jalview.appletgui.FeatureSettings (a.alignPanel);\r
-}return b;\r
-}, "jalview.appletgui.AlignFrame");\r
-Clazz.defineMethod (c$, "loadScoreFile", \r
-function (a) {\r
-var b = false;\r
-if (this.b$["jalview.bin.JalviewLite"].scoreFile != null && !"".equals (this.b$["jalview.bin.JalviewLite"].scoreFile)) {\r
-try {\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Attempting to load T-COFFEE score file from the scoreFile parameter");\r
-}b = a.loadScoreFile (this.b$["jalview.bin.JalviewLite"].scoreFile);\r
-if (!b) {\r
-System.err.println ("Failed to parse T-COFFEE parameter as a valid score file ('" + this.b$["jalview.bin.JalviewLite"].scoreFile + "')");\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.printf ("Cannot read score file: '%s'. Cause: %s \n", [this.b$["jalview.bin.JalviewLite"].scoreFile, e.getMessage ()]);\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}return b;\r
-}, "jalview.appletgui.AlignFrame");\r
-Clazz.defineMethod (c$, "loadTree", \r
-function (a) {\r
-var b = false;\r
-if (this.b$["jalview.bin.JalviewLite"].treeFile == null) {\r
-this.b$["jalview.bin.JalviewLite"].treeFile = this.applet.getParameter ("treeFile");\r
-}if (this.b$["jalview.bin.JalviewLite"].treeFile != null) {\r
-try {\r
-this.b$["jalview.bin.JalviewLite"].treeFile = this.setProtocolState (this.b$["jalview.bin.JalviewLite"].treeFile);\r
-var c =  new jalview.io.NewickFile (this.b$["jalview.bin.JalviewLite"].treeFile, this.protocol);\r
-c.parse ();\r
-if (c.getTree () != null) {\r
-a.loadTree (c, this.b$["jalview.bin.JalviewLite"].treeFile);\r
-b = true;\r
-this.dbgMsg ("Successfully imported tree.");\r
-} else {\r
-this.dbgMsg ("Tree parameter did not resolve to a valid tree.");\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}return b;\r
-}, "jalview.appletgui.AlignFrame");\r
-Clazz.defineMethod (c$, "inArchive", \r
-function (a) {\r
-try {\r
-var b = (this.getClass ().getResourceAsStream ("/" + a) != null);\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Resource '" + a + "' was " + (b ? "" : "not") + " located by classloader.");\r
-}return b;\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.out.println ("Exception checking resources: " + a + " " + ex);\r
-return false;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}, "~S");\r
-Clazz.defineMethod (c$, "addProtocol", \r
-function (a) {\r
-if (a.indexOf ("://") == -1) {\r
-var b = this.applet.resolveUrlForLocalOrAbsolute (a, this.b$["jalview.bin.JalviewLite"].getDocumentBase ());\r
-if (this.urlExists (b)) {\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Prepended document base for resource: '" + a + "'");\r
-}return b;\r
-}b = this.applet.resolveUrlForLocalOrAbsolute (a, this.b$["jalview.bin.JalviewLite"].getCodeBase ());\r
-if (this.urlExists (b)) {\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Prepended codebase for resource: '" + a + "'");\r
-}return b;\r
-}}return a;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "urlExists", \r
-($fz = function (a) {\r
-var b = null;\r
-try {\r
-b =  new java.net.URL (a).openStream ();\r
-if (b != null) {\r
-return true;\r
-}} catch (x) {\r
-if (Clazz.exceptionOf (x, Exception)) {\r
-} else {\r
-throw x;\r
-}\r
-} finally {\r
-if (b != null) {\r
-try {\r
-b.close ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}}\r
-return false;\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$JalviewLite$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$1", null, Runnable);\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverVamsasSequence (this.f$.sq, this.f$.sq.findIndex (this.f$.pos), null);\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$JalviewLite$2$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$2", null, Runnable);\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverVamsasSequence (this.f$.sq, this.f$.pos, null);\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$JalviewLite$3$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$3", null, Runnable);\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-this.f$.alf.select (this.f$.sel, this.f$.csel);\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$JalviewLite$4$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$4", null, Runnable);\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-try {\r
-jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverStructure ( new Integer (this.f$.pdbResNum).intValue (), this.f$.chain, this.f$.pdbfile);\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("mouseOver for '" + this.f$.pdbResNum + "' in chain '" + this.f$.chain + "' in structure '" + this.f$.pdbfile + "'");\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, NumberFormatException)) {\r
-System.err.println ("Ignoring invalid residue number string '" + this.f$.pdbResNum + "'");\r
-} else {\r
-throw e;\r
-}\r
-}\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$JalviewLite$5$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$5", null, Runnable);\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-try {\r
-this.f$.alf.scrollTo ( new Integer (this.f$.topRow).intValue (),  new Integer (this.f$.leftHandColumn).intValue ());\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.err.println ("Couldn't parse integer arguments (topRow='" + this.f$.topRow + "' and leftHandColumn='" + this.f$.leftHandColumn + "')");\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$JalviewLite$6$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$6", null, Runnable);\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-try {\r
-this.f$.alf.scrollToRow ( new Integer (this.f$.topRow).intValue ());\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.err.println ("Couldn't parse integer arguments (topRow='" + this.f$.topRow + "')");\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$JalviewLite$7$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$7", null, Runnable);\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-try {\r
-this.f$.alf.scrollToColumn ( new Integer (this.f$.leftHandColumn).intValue ());\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.err.println ("Couldn't parse integer arguments (leftHandColumn='" + this.f$.leftHandColumn + "')");\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$JalviewLite$8$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$8", null, java.awt.event.ActionListener);\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (e) {\r
-var loader = Clazz.innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.b$["jalview.bin.JalviewLite"].startupFile, this.b$["jalview.bin.JalviewLite"].file2, this.b$["jalview.bin.JalviewLite"]);\r
-loader.start ();\r
-}, "java.awt.event.ActionEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$JalviewLite$9$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$9", java.awt.event.WindowAdapter);\r
-Clazz.overrideMethod (c$, "windowClosing", \r
-function (e) {\r
-if (Clazz.instanceOf (this.f$.frame, jalview.appletgui.AlignFrame)) {\r
-var vp = (this.f$.frame).viewport;\r
-(this.f$.frame).closeMenuItem_actionPerformed ();\r
-if (vp.applet.currentAlignFrame === this.f$.frame) {\r
-vp.applet.currentAlignFrame = null;\r
-}vp.applet = null;\r
-vp = null;\r
-}jalview.bin.JalviewLite.lastFrameX -= 40;\r
-jalview.bin.JalviewLite.lastFrameY -= 40;\r
-if (Clazz.instanceOf (this.f$.frame, jalview.appletgui.EmbmenuFrame)) {\r
-(this.f$.frame).destroyMenus ();\r
-}this.f$.frame.setMenuBar (null);\r
-this.f$.frame.dispose ();\r
-}, "java.awt.event.WindowEvent");\r
-Clazz.defineMethod (c$, "windowActivated", \r
-function (e) {\r
-if (Clazz.instanceOf (this.f$.frame, jalview.appletgui.AlignFrame)) {\r
-(this.f$.frame).viewport.applet.currentAlignFrame = this.f$.frame;\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Activated window " + this.f$.frame);\r
-}}Clazz.superCall (this, jalview.bin.JalviewLite$9, "windowActivated", [e]);\r
-}, "java.awt.event.WindowEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$JalviewLite$10$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$10", null, Runnable);\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-this.f$.alf.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (this.f$.groups), this.f$.st);\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"TRUE", "true",\r
-"FALSE", "false",\r
-"debug", false,\r
-"lastFrameX", 200,\r
-"lastFrameY", 200,\r
-"builddate", null,\r
-"version", null,\r
-"installation", null);\r
-});\r
+Clazz.declarePackage ("jalview.bin");
+Clazz.load (["jalview.api.StructureSelectionManagerProvider", "jalview.javascript.JalviewLiteJsApi", "java.lang.Thread", "javax.swing.JApplet", "jalview.util.MessageManager", "java.util.Hashtable", "$.Vector", "javax.swing.JButton"], "jalview.bin.JalviewLite", ["jalview.analysis.SequenceIdMatcher", "jalview.appletgui.AlignFrame", "$.EmbmenuFrame", "$.FeatureSettings", "$.SplitFrame", "jalview.datamodel.Alignment", "$.AlignmentOrder", "$.ColumnSelection", "$.PDBEntry", "$.SequenceGroup", "jalview.io.AnnotationFile", "$.AppletFormatAdapter", "$.FileParse", "$.IdentifyFile", "$.JnetAnnotationMaker", "$.NewickFile", "jalview.javascript.JSFunctionExec", "$.JsSelectionSender", "$.MouseOverListener", "$.MouseOverStructureListener", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.ColourSchemeProperty", "$.UserColourScheme", "jalview.structure.SelectionListener", "$.StructureSelectionManager", "java.awt.Color", "$.EventQueue", "$.Font", "java.awt.event.ActionListener", "$.WindowAdapter", "java.io.BufferedReader", "$.InputStreamReader", "java.lang.Error", "$.StringBuffer", "java.net.URL", "java.util.StringTokenizer", "netscape.javascript.JSObject"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.embedded = false;
+this.enableSplitFrame = false;
+this.showButton = true;
+this.checkForJmol = true;
+this.jalviewServletURL = null;
+this.startupFile = "No file";
+this.helpUrl = null;
+this.externalstructureviewer = null;
+this.sep = null;
+this.rgb = null;
+this.labelColour = null;
+this.initjscallback = null;
+this.pdbFile = null;
+this.sequence = null;
+this.jnetFile = null;
+this.annotations = null;
+this.hideFeatureGroups = null;
+this.showFeatureGroups = null;
+this.features = null;
+this.showFeatureSettings = null;
+this.scoreFile = null;
+this.treeFile = null;
+this.windowWidth = null;
+this.windowHeight = null;
+this.defaultColour = null;
+this.sortBy = null;
+this.wrap = null;
+this.centrecolumnlabels = null;
+this.userDefinedColour = null;
+this.widthScale = null;
+this.heightScale = null;
+this.upperCase = null;
+this.file2 = null;
+this.javascriptListeners = null;
+this.jsFunctionExec = null;
+this.fileFound = true;
+this.launcher = null;
+this.currentAlignFrame = null;
+this.initialAlignFrame = null;
+this.checkedForJmol = false;
+this.jmolAvailable = false;
+this.alignPdbStructures = false;
+this.useXtrnalSviewer = false;
+this.haveShownLoadMessage = false;
+if (!Clazz.isClassDefined ("jalview.bin.JalviewLite.LoadJmolThread")) {
+jalview.bin.JalviewLite.$JalviewLite$LoadJmolThread$ ();
+}
+if (!Clazz.isClassDefined ("jalview.bin.JalviewLite.LoadingThread")) {
+jalview.bin.JalviewLite.$JalviewLite$LoadingThread$ ();
+}
+this.separator = "\u00ac";
+this.jsfallbackEnabled = false;
+this.jshashes = null;
+this.jsmessages = null;
+this.jsExecQueue = null;
+Clazz.instantialize (this, arguments);
+}, jalview.bin, "JalviewLite", javax.swing.JApplet, [jalview.api.StructureSelectionManagerProvider, jalview.javascript.JalviewLiteJsApi]);
+Clazz.prepareFields (c$, function () {
+this.javascriptListeners =  new java.util.Vector ();
+this.launcher =  new javax.swing.JButton (jalview.util.MessageManager.getString ("label.start_jalview"));
+this.jshashes =  new java.util.Hashtable ();
+this.jsmessages =  new java.util.Hashtable ();
+this.jsExecQueue =  new java.util.Vector ();
+});
+Clazz.defineMethod (c$, "setParams", 
+($fz = function () {
+jalview.bin.JalviewLite.debug = "true".equalsIgnoreCase (this.getParameter ("debug"));
+this.enableSplitFrame = "true".equalsIgnoreCase (this.getParameter ("enableSplitFrame"));
+this.embedded = "true".equalsIgnoreCase (this.getParameter ("embedded"));
+this.showButton = !"false".equalsIgnoreCase (this.getParameter ("showbutton"));
+this.jalviewServletURL = this.getParameter ("APPLICATION_URL");
+this.startupFile = this.getParameter ("file");
+this.helpUrl = this.getParameter ("jalviewhelpurl");
+this.externalstructureviewer = this.getParameter ("externalstructureviewer");
+this.checkForJmol = !"true".equals (this.getParameter ("nojmol"));
+this.sep = this.getParameter ("separator");
+this.rgb = this.getParameter ("RGB");
+this.labelColour = this.getParameter ("label");
+this.initjscallback = this.getParameter ("oninit");
+this.pdbFile = this.getParameter ("PDBFILE");
+this.sequence = this.getParameter ("PDBSEQ");
+this.jnetFile = this.getParameter ("jnetfile");
+this.annotations = this.getParameter ("annotations");
+this.hideFeatureGroups = this.getParameter ("hidefeaturegroups");
+this.showFeatureGroups = this.getParameter ("showfeaturegroups");
+this.features = this.getParameter ("features");
+this.showFeatureSettings = this.getParameter ("showFeatureSettings");
+this.scoreFile = this.getParameter ("scoreFile");
+this.treeFile = this.getParameter ("tree");
+if (this.treeFile == null) this.treeFile = this.getParameter ("treeFile");
+this.windowWidth = this.getParameter ("windowWidth");
+this.windowHeight = this.getParameter ("windowHeight");
+this.defaultColour = this.getParameter ("defaultColour");
+this.sortBy = this.getParameter ("sortBy");
+this.wrap = this.getParameter ("wrap");
+this.centrecolumnlabels = this.getParameter ("centrecolumnlabels");
+this.userDefinedColour = this.getParameter ("userDefinedColour");
+this.widthScale = this.getParameter ("widthScale");
+this.heightScale = this.getParameter ("heightScale");
+this.upperCase = this.getParameter ("upperCase");
+this.file2 = this.getParameter ("file2");
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getDefaultParameter", 
+function (name, def) {
+var stn;
+if ((stn = this.getParameter (name)) == null) {
+return def;
+}if (stn.toLowerCase ().equals ("true")) {
+return true;
+}return false;
+}, "~S,~B");
+Clazz.defineMethod (c$, "getLinkParams", 
+function (links) {
+var label;
+var url;
+for (var i = 1; i < 10; i++) {
+label = this.getParameter ("linkLabel_" + i);
+url = this.getParameter ("linkURL_" + i);
+if (label != null && url != null) {
+links.addElement (label + "|" + url);
+}}
+}, "java.util.Vector");
+Clazz.defineMethod (c$, "getStructureSelectionManager", 
+function () {
+return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this);
+});
+Clazz.defineMethod (c$, "getSelectedSequences", 
+function () {
+return this.getSelectedSequencesFrom (this.getDefaultTargetFrame ());
+});
+Clazz.defineMethod (c$, "getSelectedSequences", 
+function (sep) {
+return this.getSelectedSequencesFrom (this.getDefaultTargetFrame (), sep);
+}, "~S");
+Clazz.defineMethod (c$, "getSelectedSequencesFrom", 
+function (alf) {
+return this.getSelectedSequencesFrom (alf, this.separator);
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "getSelectedSequencesFrom", 
+function (alf, sep) {
+var result =  new StringBuffer ("");
+if (sep == null || sep.length == 0) {
+sep = this.separator;
+}if (alf.viewport.getSelectionGroup () != null) {
+var seqs = alf.viewport.getSelectionGroup ().getSequencesInOrder (alf.viewport.getAlignment ());
+for (var i = 0; i < seqs.length; i++) {
+result.append (seqs[i].getName ());
+result.append (sep);
+}
+}return result.toString ();
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "highlight", 
+function (sequenceId, position, alignedPosition) {
+this.highlightIn (this.getDefaultTargetFrame (), sequenceId, position, alignedPosition);
+}, "~S,~S,~S");
+Clazz.overrideMethod (c$, "highlightIn", 
+function (alf, sequenceId, position, alignedPosition) {
+var matcher =  new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());
+var sq = matcher.findIdMatch (sequenceId);
+if (sq != null) {
+var apos = -1;
+try {
+apos =  new Integer (position).intValue ();
+apos--;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+return;
+} else {
+throw ex;
+}
+}
+var me = this;
+var pos = apos;
+if (alignedPosition != null && (alignedPosition.trim ().length == 0 || alignedPosition.toLowerCase ().indexOf ("false") > -1)) {
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$1") ? 0 : jalview.bin.JalviewLite.$JalviewLite$1$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$1, this, Clazz.cloneFinals ("me", me, "sq", sq, "pos", pos))));
+} else {
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$2") ? 0 : jalview.bin.JalviewLite.$JalviewLite$2$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$2, this, Clazz.cloneFinals ("me", me, "sq", sq, "pos", pos))));
+}}}, "jalview.appletgui.AlignFrame,~S,~S,~S");
+Clazz.defineMethod (c$, "select", 
+function (sequenceIds, columns) {
+this.selectIn (this.getDefaultTargetFrame (), sequenceIds, columns, this.separator);
+}, "~S,~S");
+Clazz.defineMethod (c$, "select", 
+function (sequenceIds, columns, sep) {
+this.selectIn (this.getDefaultTargetFrame (), sequenceIds, columns, sep);
+}, "~S,~S,~S");
+Clazz.defineMethod (c$, "selectIn", 
+function (alf, sequenceIds, columns) {
+this.selectIn (alf, sequenceIds, columns, this.separator);
+}, "jalview.appletgui.AlignFrame,~S,~S");
+Clazz.defineMethod (c$, "selectIn", 
+function (alf, sequenceIds, columns, sep) {
+if (sep == null || sep.length == 0) {
+sep = this.separator;
+} else {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Selecting region using separator string '" + this.separator + "'");
+}}var ids = this.separatorListToArray (sequenceIds, sep);
+var cols = this.separatorListToArray (columns, sep);
+var sel =  new jalview.datamodel.SequenceGroup ();
+var csel =  new jalview.datamodel.ColumnSelection ();
+var al = alf.viewport.getAlignment ();
+var matcher =  new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());
+var start = 0;
+var end = al.getWidth ();
+var alw = al.getWidth ();
+var seqsfound = true;
+if (ids != null && ids.length > 0) {
+seqsfound = false;
+for (var i = 0; i < ids.length; i++) {
+if (ids[i].trim ().length == 0) {
+continue;
+}var sq = matcher.findIdMatch (ids[i]);
+if (sq != null) {
+seqsfound = true;
+sel.addSequence (sq, false);
+}}
+}var inseqpos = false;
+if (cols != null && cols.length > 0) {
+var seset = false;
+for (var i = 0; i < cols.length; i++) {
+var cl = cols[i].trim ();
+if (cl.length == 0) {
+continue;
+}var p;
+if ((p = cl.indexOf ("-")) > -1) {
+var from = -1;
+var to = -1;
+try {
+from =  new Integer (cl.substring (0, p)).intValue ();
+from--;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+System.err.println ("ERROR: Couldn't parse first integer in range element column selection string '" + cl + "' - format is 'from-to'");
+return;
+} else {
+throw ex;
+}
+}
+try {
+to =  new Integer (cl.substring (p + 1)).intValue ();
+to--;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+System.err.println ("ERROR: Couldn't parse second integer in range element column selection string '" + cl + "' - format is 'from-to'");
+return;
+} else {
+throw ex;
+}
+}
+if (from >= 0 && to >= 0) {
+if (from < to) {
+var t = to;
+to = from;
+to = t;
+}if (!seset) {
+start = from;
+end = to;
+seset = true;
+} else {
+if (start > from) {
+start = from;
+}if (end < to) {
+end = to;
+}}for (var r = from; r <= to; r++) {
+if (r >= 0 && r < alw) {
+csel.addElement (r);
+}}
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Range '" + cl + "' deparsed as [" + from + "," + to + "]");
+}} else {
+System.err.println ("ERROR: Invalid Range '" + cl + "' deparsed as [" + from + "," + to + "]");
+}} else {
+var r = -1;
+try {
+r =  new Integer (cl).intValue ();
+r--;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+if (cl.toLowerCase ().equals ("sequence")) {
+inseqpos = true;
+} else {
+System.err.println ("ERROR: Couldn't parse integer from point selection element of column selection string '" + cl + "'");
+return;
+}} else {
+throw ex;
+}
+}
+if (r >= 0 && r <= alw) {
+if (!seset) {
+start = r;
+end = r;
+seset = true;
+} else {
+if (start > r) {
+start = r;
+}if (end < r) {
+end = r;
+}}csel.addElement (r);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Point selection '" + cl + "' deparsed as [" + r + "]");
+}} else {
+System.err.println ("ERROR: Invalid Point selection '" + cl + "' deparsed as [" + r + "]");
+}}}
+}if (seqsfound) {
+if (inseqpos && sel.getSize () > 0) {
+var rs = sel.getSequenceAt (0);
+start = rs.findIndex (start);
+end = rs.findIndex (end);
+if (csel != null) {
+var cs = csel.getSelected ();
+csel.clear ();
+for (var selectedCol, $selectedCol = cs.iterator (); $selectedCol.hasNext () && ((selectedCol = $selectedCol.next ()) || true);) {
+csel.addElement (rs.findIndex ((selectedCol).intValue ()));
+}
+}}sel.setStartRes (start);
+sel.setEndRes (end);
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$3") ? 0 : jalview.bin.JalviewLite.$JalviewLite$3$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$3, this, Clazz.cloneFinals ("alf", alf, "sel", sel, "csel", csel))));
+}}, "jalview.appletgui.AlignFrame,~S,~S,~S");
+Clazz.overrideMethod (c$, "getSelectedSequencesAsAlignment", 
+function (format, suffix) {
+return this.getSelectedSequencesAsAlignmentFrom (this.getDefaultTargetFrame (), format, suffix);
+}, "~S,~S");
+Clazz.overrideMethod (c$, "getSelectedSequencesAsAlignmentFrom", 
+function (alf, format, suffix) {
+try {
+var seqlimits = suffix.equalsIgnoreCase ("true");
+if (alf.viewport.getSelectionGroup () != null) {
+var reply =  new jalview.io.AppletFormatAdapter ().formatSequences (format,  new jalview.datamodel.Alignment (alf.viewport.getSelectionAsNewSequence ()), seqlimits);
+return reply;
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+return "Error retrieving alignment in " + format + " format. ";
+} else {
+throw ex;
+}
+}
+return "";
+}, "jalview.appletgui.AlignFrame,~S,~S");
+Clazz.overrideMethod (c$, "getAlignmentOrder", 
+function () {
+return this.getAlignmentOrderFrom (this.getDefaultTargetFrame ());
+});
+Clazz.defineMethod (c$, "getAlignmentOrderFrom", 
+function (alf) {
+return this.getAlignmentOrderFrom (alf, this.separator);
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "getAlignmentOrderFrom", 
+function (alf, sep) {
+var alorder = alf.getAlignViewport ().getAlignment ();
+var order =  new Array (alorder.getHeight ());
+for (var i = 0; i < order.length; i++) {
+order[i] = alorder.getSequenceAt (i).getName ();
+}
+return this.arrayToSeparatorList (order);
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz.defineMethod (c$, "orderBy", 
+function (order, undoName) {
+return this.orderBy (order, undoName, this.separator);
+}, "~S,~S");
+Clazz.defineMethod (c$, "orderBy", 
+function (order, undoName, sep) {
+return this.orderAlignmentBy (this.getDefaultTargetFrame (), order, undoName, sep);
+}, "~S,~S,~S");
+Clazz.overrideMethod (c$, "orderAlignmentBy", 
+function (alf, order, undoName, sep) {
+var ids = this.separatorListToArray (order, sep);
+var sqs = null;
+if (ids != null && ids.length > 0) {
+var matcher =  new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());
+var s = 0;
+sqs =  new Array (ids.length);
+for (var i = 0; i < ids.length; i++) {
+if (ids[i].trim ().length == 0) {
+continue;
+}var sq = matcher.findIdMatch (ids[i]);
+if (sq != null) {
+sqs[s++] = sq;
+}}
+if (s > 0) {
+var sqq =  new Array (s);
+System.arraycopy (sqs, 0, sqq, 0, s);
+sqs = sqq;
+} else {
+sqs = null;
+}}if (sqs == null) {
+return "";
+};var aorder =  new jalview.datamodel.AlignmentOrder (sqs);
+if (undoName != null && undoName.trim ().length == 0) {
+undoName = null;
+}var _undoName = undoName;
+return alf.sortBy (aorder, _undoName) ? "true" : "";
+}, "jalview.appletgui.AlignFrame,~S,~S,~S");
+Clazz.defineMethod (c$, "getAlignment", 
+function (format) {
+return this.getAlignmentFrom (this.getDefaultTargetFrame (), format, "true");
+}, "~S");
+Clazz.defineMethod (c$, "getAlignmentFrom", 
+function (alf, format) {
+return this.getAlignmentFrom (alf, format, "true");
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz.defineMethod (c$, "getAlignment", 
+function (format, suffix) {
+return this.getAlignmentFrom (this.getDefaultTargetFrame (), format, suffix);
+}, "~S,~S");
+Clazz.defineMethod (c$, "getAlignmentFrom", 
+function (alf, format, suffix) {
+try {
+var seqlimits = suffix.equalsIgnoreCase ("true");
+var reply =  new jalview.io.AppletFormatAdapter ().formatSequences (format, alf.viewport.getAlignment (), seqlimits);
+return reply;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+return "Error retrieving alignment in " + format + " format. ";
+} else {
+throw ex;
+}
+}
+}, "jalview.appletgui.AlignFrame,~S,~S");
+Clazz.overrideMethod (c$, "loadAnnotation", 
+function (annotation) {
+this.loadAnnotationFrom (this.getDefaultTargetFrame (), annotation);
+}, "~S");
+Clazz.overrideMethod (c$, "loadAnnotationFrom", 
+function (alf, annotation) {
+if ( new jalview.io.AnnotationFile ().annotateAlignmentView (alf.getAlignViewport (), annotation, jalview.io.AppletFormatAdapter.PASTE)) {
+alf.alignPanel.fontChanged ();
+alf.alignPanel.setScrollValues (0, 0);
+} else {
+alf.parseFeaturesFile (annotation, jalview.io.AppletFormatAdapter.PASTE);
+}}, "jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "loadFeatures", 
+function (features, autoenabledisplay) {
+this.loadFeaturesFrom (this.getDefaultTargetFrame (), features, autoenabledisplay);
+}, "~S,~B");
+Clazz.overrideMethod (c$, "loadFeaturesFrom", 
+function (alf, features, autoenabledisplay) {
+return alf.parseFeaturesFile (features, jalview.io.AppletFormatAdapter.PASTE, autoenabledisplay);
+}, "jalview.appletgui.AlignFrame,~S,~B");
+Clazz.overrideMethod (c$, "getFeatures", 
+function (format) {
+return this.getFeaturesFrom (this.getDefaultTargetFrame (), format);
+}, "~S");
+Clazz.overrideMethod (c$, "getFeaturesFrom", 
+function (alf, format) {
+return alf.outputFeatures (false, format);
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "getAnnotation", 
+function () {
+return this.getAnnotationFrom (this.getDefaultTargetFrame ());
+});
+Clazz.overrideMethod (c$, "getAnnotationFrom", 
+function (alf) {
+return alf.outputAnnotations (false);
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "newView", 
+function () {
+return this.newViewFrom (this.getDefaultTargetFrame ());
+});
+Clazz.defineMethod (c$, "newView", 
+function (name) {
+return this.newViewFrom (this.getDefaultTargetFrame (), name);
+}, "~S");
+Clazz.defineMethod (c$, "newViewFrom", 
+function (alf) {
+return alf.newView (null);
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "newViewFrom", 
+function (alf, name) {
+return alf.newView (name);
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "loadAlignment", 
+function (text, title) {
+var al = null;
+var format =  new jalview.io.IdentifyFile ().Identify (text, jalview.io.AppletFormatAdapter.PASTE);
+try {
+al =  new jalview.io.AppletFormatAdapter ().readFile (text, jalview.io.AppletFormatAdapter.PASTE, format);
+if (al.getHeight () > 0) {
+return  new jalview.appletgui.AlignFrame (al, this, title, false);
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, java.io.IOException)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+return null;
+}, "~S,~S");
+Clazz.defineMethod (c$, "setMouseoverListener", 
+function (listener) {
+this.setMouseoverListener (this.currentAlignFrame, listener);
+}, "~S");
+Clazz.defineMethod (c$, "setMouseoverListener", 
+function (af, listener) {
+if (listener != null) {
+listener = listener.trim ();
+if (listener.length == 0) {
+System.err.println ("jalview Javascript error: Ignoring empty function for mouseover listener.");
+return;
+}}var mol =  new jalview.javascript.MouseOverListener (this, af, listener);
+this.javascriptListeners.addElement (mol);
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addStructureViewerListener (mol);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Added a mouseover listener for " + ((af == null) ? "All frames" : "Just views for " + af.getAlignViewport ().getSequenceSetId ()));
+System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
+}}, "jalview.appletgui.AlignFrame,~S");
+Clazz.defineMethod (c$, "setSelectionListener", 
+function (listener) {
+this.setSelectionListener (null, listener);
+}, "~S");
+Clazz.defineMethod (c$, "setSelectionListener", 
+function (af, listener) {
+if (listener != null) {
+listener = listener.trim ();
+if (listener.length == 0) {
+System.err.println ("jalview Javascript error: Ignoring empty function for selection listener.");
+return;
+}}var mol =  new jalview.javascript.JsSelectionSender (this, af, listener);
+this.javascriptListeners.addElement (mol);
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addSelectionListener (mol);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Added a selection listener for " + ((af == null) ? "All frames" : "Just views for " + af.getAlignViewport ().getSequenceSetId ()));
+System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
+}}, "jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "setStructureListener", 
+function (listener, modelSet) {
+if (listener != null) {
+listener = listener.trim ();
+if (listener.length == 0) {
+System.err.println ("jalview Javascript error: Ignoring empty function for selection listener.");
+return;
+}}var mol =  new jalview.javascript.MouseOverStructureListener (this, listener, this.separatorListToArray (modelSet));
+this.javascriptListeners.addElement (mol);
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addStructureViewerListener (mol);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Added a javascript structure viewer listener '" + listener + "'");
+System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
+}}, "~S,~S");
+Clazz.overrideMethod (c$, "removeJavascriptListener", 
+function (af, listener) {
+if (listener != null) {
+listener = listener.trim ();
+if (listener.length == 0) {
+listener = null;
+}}var rprt = false;
+for (var ms = 0, msSize = this.javascriptListeners.size (); ms < msSize; ) {
+var lstn = this.javascriptListeners.elementAt (ms);
+var lstner = lstn;
+if ((af == null || lstner.getAlignFrame () === af) && (listener == null || lstner.getListenerFunction ().equals (listener))) {
+this.javascriptListeners.removeElement (lstner);
+msSize--;
+if (Clazz.instanceOf (lstner, jalview.structure.SelectionListener)) {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeSelectionListener (lstner);
+} else {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeStructureViewerListener (lstner, null);
+}rprt = jalview.bin.JalviewLite.debug;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Removed listener '" + listener + "'");
+}} else {
+ms++;
+}}
+if (rprt) {
+System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
+}}, "jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "stop", 
+function () {
+System.err.println ("Applet " + this.getName () + " stop().");
+this.tidyUp ();
+});
+Clazz.overrideMethod (c$, "destroy", 
+function () {
+System.err.println ("Applet " + this.getName () + " destroy().");
+this.tidyUp ();
+});
+Clazz.defineMethod (c$, "tidyUp", 
+($fz = function () {
+this.removeAll ();
+if (this.currentAlignFrame != null && this.currentAlignFrame.viewport != null && this.currentAlignFrame.viewport.applet != null) {
+var av = this.currentAlignFrame.viewport;
+this.currentAlignFrame.closeMenuItem_actionPerformed ();
+av.applet = null;
+this.currentAlignFrame = null;
+}if (this.javascriptListeners != null) {
+while (this.javascriptListeners.size () > 0) {
+var mol = this.javascriptListeners.elementAt (0);
+this.javascriptListeners.removeElement (mol);
+if (Clazz.instanceOf (mol, jalview.structure.SelectionListener)) {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeSelectionListener (mol);
+} else {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeStructureViewerListener (mol, null);
+}mol.jvlite = null;
+}
+}if (this.jsFunctionExec != null) {
+this.jsFunctionExec.stopQueue ();
+this.jsFunctionExec.jvlite = null;
+}this.initialAlignFrame = null;
+this.jsFunctionExec = null;
+this.javascriptListeners = null;
+jalview.structure.StructureSelectionManager.release (this);
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "mouseOverStructure", 
+function (pdbResNum, chain, pdbfile) {
+var me = this;
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$4") ? 0 : jalview.bin.JalviewLite.$JalviewLite$4$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$4, this, Clazz.cloneFinals ("me", me, "pdbResNum", pdbResNum, "chain", chain, "pdbfile", pdbfile))));
+}, "~S,~S,~S");
+Clazz.overrideMethod (c$, "scrollViewToIn", 
+function (alf, topRow, leftHandColumn) {
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$5") ? 0 : jalview.bin.JalviewLite.$JalviewLite$5$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$5, this, Clazz.cloneFinals ("alf", alf, "topRow", topRow, "leftHandColumn", leftHandColumn))));
+}, "jalview.appletgui.AlignFrame,~S,~S");
+Clazz.overrideMethod (c$, "scrollViewToRowIn", 
+function (alf, topRow) {
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$6") ? 0 : jalview.bin.JalviewLite.$JalviewLite$6$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$6, this, Clazz.cloneFinals ("alf", alf, "topRow", topRow))));
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "scrollViewToColumnIn", 
+function (alf, leftHandColumn) {
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$7") ? 0 : jalview.bin.JalviewLite.$JalviewLite$7$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$7, this, Clazz.cloneFinals ("alf", alf, "leftHandColumn", leftHandColumn))));
+}, "jalview.appletgui.AlignFrame,~S");
+c$.initBuildDetails = Clazz.defineMethod (c$, "initBuildDetails", 
+($fz = function () {
+if (jalview.bin.JalviewLite.builddate == null) {
+jalview.bin.JalviewLite.builddate = "unknown";
+jalview.bin.JalviewLite.version = "test";
+jalview.bin.JalviewLite.installation = "Webstart";
+var url = jalview.bin.JalviewLite.getResource ("/.build_properties");
+if (url != null) {
+try {
+var reader =  new java.io.BufferedReader ( new java.io.InputStreamReader (url.openStream ()));
+var line;
+while ((line = reader.readLine ()) != null) {
+if (line.indexOf ("VERSION") > -1) {
+jalview.bin.JalviewLite.version = line.substring (line.indexOf ("=") + 1);
+}if (line.indexOf ("BUILD_DATE") > -1) {
+jalview.bin.JalviewLite.builddate = line.substring (line.indexOf ("=") + 1);
+}if (line.indexOf ("INSTALLATION") > -1) {
+jalview.bin.JalviewLite.installation = line.substring (line.indexOf ("=") + 1);
+}}
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}}}, $fz.isPrivate = true, $fz));
+c$.getBuildDate = Clazz.defineMethod (c$, "getBuildDate", 
+function () {
+jalview.bin.JalviewLite.initBuildDetails ();
+return jalview.bin.JalviewLite.builddate;
+});
+c$.getInstallation = Clazz.defineMethod (c$, "getInstallation", 
+function () {
+jalview.bin.JalviewLite.initBuildDetails ();
+return jalview.bin.JalviewLite.installation;
+});
+c$.getVersion = Clazz.defineMethod (c$, "getVersion", 
+function () {
+jalview.bin.JalviewLite.initBuildDetails ();
+return jalview.bin.JalviewLite.version;
+});
+Clazz.overrideMethod (c$, "init", 
+function () {
+this.setParams ();
+try {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Applet context is '" + this.getAppletContext ().getClass ().toString () + "'");
+}var scriptObject = netscape.javascript.JSObject.getWindow (this);
+if (jalview.bin.JalviewLite.debug && scriptObject != null) {
+System.err.println ("Applet has Javascript callback support.");
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Warning: No JalviewLite javascript callbacks available.");
+if (jalview.bin.JalviewLite.debug) {
+ex.printStackTrace ();
+}} else {
+throw ex;
+}
+}
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("JalviewLite Version " + jalview.bin.JalviewLite.getVersion ());
+System.err.println ("Build Date : " + jalview.bin.JalviewLite.getBuildDate ());
+System.err.println ("Installation : " + jalview.bin.JalviewLite.getInstallation ());
+}if (this.externalstructureviewer != null) {
+this.useXtrnalSviewer = this.externalstructureviewer.trim ().toLowerCase ().equals ("true");
+}if (this.sep != null) {
+if (this.sep.length > 0) {
+this.separator = this.sep;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Separator set to '" + this.separator + "'");
+}} else {
+throw  new Error (jalview.util.MessageManager.getString ("error.invalid_separator_parameter"));
+}}var r = 255;
+var g = 255;
+var b = 255;
+if (this.rgb != null) {
+try {
+r = Integer.parseInt (this.rgb.substring (0, 2), 16);
+g = Integer.parseInt (this.rgb.substring (2, 4), 16);
+b = Integer.parseInt (this.rgb.substring (4, 6), 16);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+r = 255;
+g = 255;
+b = 255;
+} else {
+throw ex;
+}
+}
+}this.rgb = this.labelColour;
+if (this.rgb != null) {
+this.launcher.setLabel (this.rgb);
+}this.setBackground ( new java.awt.Color (r, g, b));
+if (this.startupFile == null) {
+var data =  new StringBuffer ("PASTE");
+var i = 1;
+while ((this.startupFile = this.getParameter ("sequence" + i)) != null) {
+data.append (this.startupFile.toString () + "\n");
+i++;
+}
+if (data.length () > 5) {
+this.startupFile = data.toString ();
+}}if (!this.enableSplitFrame) {
+this.file2 = null;
+}if (this.embedded) {
+var loader = Clazz.innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.startupFile, this.file2, this);
+{
+loader.run();
+}} else if (this.startupFile != null) {
+if (!this.showButton) {
+var loader = Clazz.innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.startupFile, this.file2, this);
+loader.start ();
+} else {
+this.add (this.launcher);
+this.launcher.addActionListener (((Clazz.isClassDefined ("jalview.bin.JalviewLite$8") ? 0 : jalview.bin.JalviewLite.$JalviewLite$8$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$8, this, null)));
+}} else {
+this.startupFile = "NO FILE";
+this.fileFound = false;
+this.callInitCallback ();
+}});
+Clazz.defineMethod (c$, "initLiveConnect", 
+($fz = function () {
+var notFailed = false;
+var tries = 0;
+while (!notFailed && tries < 10) {
+if (tries > 0) {
+System.err.println ("LiveConnect request thread going to sleep.");
+}try {
+Thread.sleep (700 * (1 + tries));
+} catch (q) {
+if (Clazz.exceptionOf (q, InterruptedException)) {
+} else {
+throw q;
+}
+}
+;if (tries++ > 0) {
+System.err.println ("LiveConnect request thread woken up.");
+}try {
+var scriptObject = netscape.javascript.JSObject.getWindow (this);
+if (scriptObject.eval ("navigator") != null) {
+notFailed = true;
+}} catch (jsex) {
+if (Clazz.exceptionOf (jsex, Exception)) {
+System.err.println ("Attempt " + tries + " to access LiveConnect javascript failed.");
+} else {
+throw jsex;
+}
+}
+}
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "callInitCallback", 
+($fz = function () {
+if (this.initjscallback == null) {
+return;
+}this.initjscallback = this.initjscallback.trim ();
+if (this.initjscallback.length > 0) {
+var scriptObject = null;
+try {
+scriptObject = netscape.javascript.JSObject.getWindow (this);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+;this.initLiveConnect ();
+if (scriptObject != null) {
+try {
+ new jalview.javascript.JSFunctionExec (this).executeJavascriptFunction (true, this.initjscallback, null, "Calling oninit callback '" + this.initjscallback + "'.");
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Exception when executing _oninit callback '" + this.initjscallback + "'.");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+} else {
+System.err.println ("Not executing _oninit callback '" + this.initjscallback + "' - no scripting allowed.");
+}}}, $fz.isPrivate = true, $fz));
+c$.addFrame = Clazz.defineMethod (c$, "addFrame", 
+function (frame, title, width, height) {
+frame.setLocation (jalview.bin.JalviewLite.lastFrameX, jalview.bin.JalviewLite.lastFrameY);
+jalview.bin.JalviewLite.lastFrameX += 40;
+jalview.bin.JalviewLite.lastFrameY += 40;
+frame.setSize (width, height);
+frame.setTitle (title);
+frame.addWindowListener (((Clazz.isClassDefined ("jalview.bin.JalviewLite$9") ? 0 : jalview.bin.JalviewLite.$JalviewLite$9$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$9, this, Clazz.cloneFinals ("frame", frame))));
+frame.setVisible (true);
+}, "javax.swing.JFrame,~S,~N,~N");
+Clazz.defineMethod (c$, "paintComponent", 
+function (g) {
+if (!this.fileFound) {
+g.setColor ( new java.awt.Color (200, 200, 200));
+g.setColor (java.awt.Color.cyan);
+g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+g.setColor (java.awt.Color.red);
+g.drawString (jalview.util.MessageManager.getString ("label.jalview_cannot_open_file"), 5, 15);
+g.drawString ("\"" + this.startupFile + "\"", 5, 30);
+} else if (this.embedded && !this.haveShownLoadMessage) {
+g.setColor (java.awt.Color.black);
+g.setFont ( new java.awt.Font ("Arial", 1, 24));
+g.drawString (jalview.util.MessageManager.getString ("label.jalview_applet"), 50, Clazz.doubleToInt (this.getSize ().height / 2) - 30);
+g.drawString (jalview.util.MessageManager.getString ("label.loading_data") + "...", 50, Clazz.doubleToInt (this.getSize ().height / 2));
+this.haveShownLoadMessage = true;
+}}, "java.awt.Graphics");
+Clazz.defineMethod (c$, "getAppletWindow", 
+function (class1) {
+var wnds =  new java.util.Vector ();
+var cmp = this.getComponents ();
+if (cmp != null) {
+for (var i = 0; i < cmp.length; i++) {
+if (class1.isAssignableFrom (cmp[i].getClass ())) {
+wnds.addElement (cmp);
+}}
+}return wnds;
+}, "Class");
+Clazz.defineMethod (c$, "getDefaultTargetFrame", 
+function () {
+if (this.currentAlignFrame != null) {
+return this.currentAlignFrame;
+}if (this.initialAlignFrame != null) {
+return this.initialAlignFrame;
+}System.err.println ("Implementation error: Jalview Applet API cannot work out which AlignFrame to use.");
+return null;
+});
+Clazz.defineMethod (c$, "separatorListToArray", 
+function (list) {
+return this.separatorListToArray (list, this.separator);
+}, "~S");
+Clazz.defineMethod (c$, "separatorListToArray", 
+function (list, separator) {
+var seplen = separator.length;
+if (list == null || list.equals ("") || list.equals (separator)) {
+return null;
+}var jv =  new java.util.Vector ();
+var cp = 0;
+var pos;
+while ((pos = list.indexOf (separator, cp)) > cp) {
+jv.addElement (list.substring (cp, pos));
+cp = pos + seplen;
+}
+if (cp < list.length) {
+var c = list.substring (cp);
+if (!c.equals (separator)) {
+jv.addElement (c);
+}}if (jv.size () > 0) {
+var v =  new Array (jv.size ());
+for (var i = 0; i < v.length; i++) {
+v[i] = jv.elementAt (i);
+}
+jv.removeAllElements ();
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Array from '" + separator + "' separated List:\n" + v.length);
+for (var i = 0; i < v.length; i++) {
+System.err.println ("item " + i + " '" + v[i] + "'");
+}
+}return v;
+}if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Empty Array from '" + separator + "' separated List");
+}return null;
+}, "~S,~S");
+Clazz.defineMethod (c$, "arrayToSeparatorList", 
+function (list) {
+return this.arrayToSeparatorList (list, this.separator);
+}, "~A");
+Clazz.defineMethod (c$, "arrayToSeparatorList", 
+function (list, separator) {
+var v =  new StringBuffer ();
+if (list != null && list.length > 0) {
+for (var i = 0, iSize = list.length; i < iSize; i++) {
+if (list[i] != null) {
+if (i > 0) {
+v.append (separator);
+}v.append (list[i]);
+}}
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Returning '" + separator + "' separated List:\n");
+System.err.println (v);
+}return v.toString ();
+}if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Returning empty '" + separator + "' separated List\n");
+}return "" + separator;
+}, "~A,~S");
+Clazz.overrideMethod (c$, "getFeatureGroups", 
+function () {
+var lst = this.arrayToSeparatorList (this.getDefaultTargetFrame ().getFeatureGroups ());
+return lst;
+});
+Clazz.overrideMethod (c$, "getFeatureGroupsOn", 
+function (alf) {
+var lst = this.arrayToSeparatorList (alf.getFeatureGroups ());
+return lst;
+}, "jalview.appletgui.AlignFrame");
+Clazz.overrideMethod (c$, "getFeatureGroupsOfState", 
+function (visible) {
+return this.arrayToSeparatorList (this.getDefaultTargetFrame ().getFeatureGroupsOfState (visible));
+}, "~B");
+Clazz.overrideMethod (c$, "getFeatureGroupsOfStateOn", 
+function (alf, visible) {
+return this.arrayToSeparatorList (alf.getFeatureGroupsOfState (visible));
+}, "jalview.appletgui.AlignFrame,~B");
+Clazz.overrideMethod (c$, "setFeatureGroupStateOn", 
+function (alf, groups, state) {
+var st = state;
+java.awt.EventQueue.invokeLater (((Clazz.isClassDefined ("jalview.bin.JalviewLite$10") ? 0 : jalview.bin.JalviewLite.$JalviewLite$10$ ()), Clazz.innerTypeInstance (jalview.bin.JalviewLite$10, this, Clazz.cloneFinals ("alf", alf, "groups", groups, "st", st))));
+}, "jalview.appletgui.AlignFrame,~S,~B");
+Clazz.overrideMethod (c$, "setFeatureGroupState", 
+function (groups, state) {
+this.setFeatureGroupStateOn (this.getDefaultTargetFrame (), groups, state);
+}, "~S,~B");
+Clazz.overrideMethod (c$, "getSeparator", 
+function () {
+return this.separator;
+});
+Clazz.overrideMethod (c$, "setSeparator", 
+function (separator) {
+if (separator == null || separator.length < 1) {
+separator = "\u00ac";
+}this.separator = separator;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Default Separator now: '" + separator + "'");
+}}, "~S");
+Clazz.overrideMethod (c$, "addPdbFile", 
+function (alFrame, sequenceId, pdbEntryString, pdbFile) {
+return alFrame.addPdbFile (sequenceId, pdbEntryString, pdbFile);
+}, "jalview.appletgui.AlignFrame,~S,~S,~S");
+Clazz.defineMethod (c$, "setAlignPdbStructures", 
+function (alignPdbStructures) {
+this.alignPdbStructures = alignPdbStructures;
+}, "~B");
+Clazz.defineMethod (c$, "isAlignPdbStructures", 
+function () {
+return this.alignPdbStructures;
+});
+Clazz.overrideMethod (c$, "start", 
+function () {
+});
+Clazz.defineMethod (c$, "setJsMessageSet", 
+function (messageclass, viewId, colcommands) {
+var msgset = this.jsmessages.get (messageclass);
+if (msgset == null) {
+msgset =  new java.util.Hashtable ();
+this.jsmessages.put (messageclass, msgset);
+}msgset.put (viewId, colcommands);
+var l =  Clazz.newLongArray (colcommands.length, 0);
+for (var i = 0; i < colcommands.length; i++) {
+l[i] = colcommands[i].hashCode ();
+}
+this.jshashes.put (messageclass + "|" + viewId, l);
+}, "~S,~S,~A");
+Clazz.overrideMethod (c$, "getJsMessage", 
+function (messageclass, viewId) {
+var msgset = this.jsmessages.get (messageclass);
+if (msgset != null) {
+var msgs = msgset.get (viewId);
+if (msgs != null) {
+for (var i = 0; i < msgs.length; i++) {
+if (msgs[i] != null) {
+var m = msgs[i];
+msgs[i] = null;
+return m;
+}}
+}}return "";
+}, "~S,~S");
+Clazz.defineMethod (c$, "isJsMessageSetChanged", 
+function (string, string2, colcommands) {
+var l = this.jshashes.get (string + "|" + string2);
+if (l == null && colcommands != null) {
+return true;
+}for (var i = 0; i < colcommands.length; i++) {
+if (l[i] != colcommands[i].hashCode ()) {
+return true;
+}}
+return false;
+}, "~S,~S,~A");
+Clazz.defineMethod (c$, "getJsExecQueue", 
+function () {
+return this.jsExecQueue;
+});
+Clazz.defineMethod (c$, "setExecutor", 
+function (jsFunctionExec2) {
+this.jsFunctionExec = jsFunctionExec2;
+}, "jalview.javascript.JSFunctionExec");
+Clazz.defineMethod (c$, "getDefaultColourParameter", 
+function (colparam, defcolour) {
+var colprop = this.getParameter (colparam);
+if (colprop == null || colprop.trim ().length == 0) {
+return defcolour;
+}var col = jalview.schemes.ColourSchemeProperty.getAWTColorFromName (colprop);
+if (col == null) {
+try {
+col =  new jalview.schemes.UserColourScheme (colprop).findColour ('A');
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't parse '" + colprop + "' as a colour for " + colparam);
+col = null;
+} else {
+throw ex;
+}
+}
+}return (col == null) ? defcolour : col;
+}, "~S,java.awt.Color");
+Clazz.defineMethod (c$, "openJalviewHelpUrl", 
+function () {
+if (this.helpUrl == null || this.helpUrl.trim ().length < 5) {
+this.helpUrl = "http://www.jalview.org/help.html";
+}this.showURL (this.helpUrl, "HELP");
+});
+Clazz.defineMethod (c$, "resolveUrlForLocalOrAbsolute", 
+($fz = function (url, localref) {
+var codebase = localref.toString ();
+var pt = codebase.indexOf ("?");
+if (pt < 0) pt = codebase.length;
+codebase = codebase.substring (0, pt);
+codebase = codebase.substring (0, codebase.lastIndexOf ("/") + 1);
+if (url.indexOf ("/") == 0 && !localref.getProtocol ().equals ("file")) {
+pt = codebase.indexOf ("/", 8);
+return codebase.substring (0, pt) + url;
+}return codebase + url;
+}, $fz.isPrivate = true, $fz), "~S,java.net.URL");
+Clazz.defineMethod (c$, "showURL", 
+function (url, target) {
+try {
+if (url.indexOf (":") == -1) {
+var prepend;
+url = this.resolveUrlForLocalOrAbsolute (url, prepend = this.getDefaultParameter ("resolvetocodebase", false) ? this.getDocumentBase () : this.getCodeBase ());
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Show url (prepended " + prepend + " - toggle resolvetocodebase if code/docbase resolution is wrong): " + url);
+}} else {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Show url: " + url);
+}}if (url.indexOf ("javascript:") == 0) {
+this.getAppletContext ().showDocument ( new java.net.URL (url));
+} else {
+this.getAppletContext ().showDocument ( new java.net.URL (url), target);
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}, "~S,~S");
+c$.$JalviewLite$LoadJmolThread$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.running = false;
+Clazz.instantialize (this, arguments);
+}, jalview.bin.JalviewLite, "LoadJmolThread", Thread);
+Clazz.overrideMethod (c$, "run", 
+function () {
+if (this.running || this.b$["jalview.bin.JalviewLite"].checkedForJmol) {
+return;
+}this.running = true;
+if (this.b$["jalview.bin.JalviewLite"].checkForJmol) {
+try {
+if (!System.getProperty ("java.version").startsWith ("1.1")) {
+Class.forName ("org.jmol.adapter.smarter.SmarterJmolAdapter");
+this.b$["jalview.bin.JalviewLite"].jmolAvailable = true;
+}if (!this.b$["jalview.bin.JalviewLite"].jmolAvailable) {
+System.out.println ("Jmol not available - Using MCview for structures");
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, ClassNotFoundException)) {
+} else {
+throw ex;
+}
+}
+} else {
+this.b$["jalview.bin.JalviewLite"].jmolAvailable = false;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Skipping Jmol check. Will use MCView (probably)");
+}}this.b$["jalview.bin.JalviewLite"].checkedForJmol = true;
+this.running = false;
+});
+Clazz.defineMethod (c$, "notFinished", 
+function () {
+return this.running || !this.b$["jalview.bin.JalviewLite"].checkedForJmol;
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$LoadingThread$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.protocol = null;
+this._file = null;
+this._file2 = null;
+this.applet = null;
+Clazz.instantialize (this, arguments);
+}, jalview.bin.JalviewLite, "LoadingThread", Thread);
+Clazz.defineMethod (c$, "dbgMsg", 
+($fz = function (a) {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println (a);
+}}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "setProtocolState", 
+function (a) {
+if (a.startsWith ("PASTE")) {
+a = a.substring (5);
+this.protocol = jalview.io.AppletFormatAdapter.PASTE;
+} else if (this.inArchive (a)) {
+this.protocol = jalview.io.AppletFormatAdapter.CLASSLOADER;
+} else {
+a = this.addProtocol (a);
+this.protocol = jalview.io.AppletFormatAdapter.URL;
+}this.dbgMsg ("Protocol identified as '" + this.protocol + "'");
+return a;
+}, "~S");
+Clazz.makeConstructor (c$, 
+function (a, b, c) {
+Clazz.superConstructor (this, jalview.bin.JalviewLite.LoadingThread, []);
+this._file = a;
+this._file2 = b;
+this.applet = c;
+}, "~S,~S,jalview.bin.JalviewLite");
+Clazz.overrideMethod (c$, "run", 
+function () {
+{
+System.out.println("BYPASSING JMOL LOADING FOR NOW. THIS WILL BE DONE ANOTHER WAY")
+}this.startLoading ();
+});
+Clazz.defineMethod (c$, "startLoading", 
+($fz = function () {
+this.dbgMsg ("Loading thread started with:\n>>file\n" + this._file + ">>endfile");
+this.dbgMsg ("Loading started.");
+var a = this.readAlignment (this._file);
+var b = this.readAlignment (this._file2);
+if (a != null) {
+this.addToDisplay (a, b);
+this.loadTree (a);
+this.loadScoreFile (a);
+this.loadFeatures (a);
+this.loadAnnotations (a);
+this.loadJnetFile (a);
+this.loadPdbFiles (a);
+} else {
+this.b$["jalview.bin.JalviewLite"].fileFound = false;
+this.applet.remove (this.b$["jalview.bin.JalviewLite"].launcher);
+this.applet.repaint ();
+}this.b$["jalview.bin.JalviewLite"].callInitCallback ();
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "addToDisplay", 
+function (a, b) {
+if (b == null) {
+a.addToDisplay (this.b$["jalview.bin.JalviewLite"].embedded);
+} else {
+var c =  new jalview.appletgui.SplitFrame (a, b);
+c.addToDisplay (this.b$["jalview.bin.JalviewLite"].embedded, this.b$["jalview.bin.JalviewLite"]);
+}}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "readAlignment", 
+function (a) {
+if (a == null) {
+return null;
+}var b = this.setProtocolState (a);
+var c =  new jalview.io.IdentifyFile ().Identify (b, this.protocol);
+this.dbgMsg ("File identified as '" + c + "'");
+var d = null;
+try {
+d =  new jalview.io.AppletFormatAdapter ().readFile (b, this.protocol, c);
+if ((d != null) && (d.getHeight () > 0)) {
+this.dbgMsg ("Successfully loaded file.");
+d.setDataset (null);
+var e =  new jalview.appletgui.AlignFrame (d, this.applet, b, this.b$["jalview.bin.JalviewLite"].embedded, false);
+e.setTitle (b);
+if (this.b$["jalview.bin.JalviewLite"].initialAlignFrame == null) {
+this.b$["jalview.bin.JalviewLite"].initialAlignFrame = e;
+}this.b$["jalview.bin.JalviewLite"].currentAlignFrame = e;
+if (this.protocol === jalview.io.AppletFormatAdapter.PASTE) {
+e.setTitle (jalview.util.MessageManager.formatMessage ("label.sequences_from",  Clazz.newArray (-1, [this.applet.getDocumentBase ().toString ()])));
+}e.setStatus (jalview.util.MessageManager.formatMessage ("label.successfully_loaded_file",  Clazz.newArray (-1, [b])));
+return e;
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, java.io.IOException)) {
+this.dbgMsg ("File load exception.");
+ex.printStackTrace ();
+if (jalview.bin.JalviewLite.debug) {
+try {
+var e =  new jalview.io.FileParse (b, this.protocol);
+var f = null;
+this.dbgMsg (">>>Dumping contents of '" + b + "' " + "(" + this.protocol + ")");
+while ((f = e.nextLine ()) != null) {
+this.dbgMsg (f);
+}
+this.dbgMsg (">>>Dump finished.");
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Exception when trying to dump the content of the file parameter.");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+}} else {
+throw ex;
+}
+}
+return null;
+}, "~S");
+Clazz.defineMethod (c$, "loadPdbFiles", 
+function (a) {
+var b = false;
+this.applet.setAlignPdbStructures (this.b$["jalview.bin.JalviewLite"].getDefaultParameter ("alignpdbfiles", false));
+var c = 0;
+var d =  new java.util.Vector ();
+var e = (this.applet.getDefaultParameter ("relaxedidmatch", false)) ?  new jalview.analysis.SequenceIdMatcher (a.getAlignViewport ().getAlignment ().getSequencesArray ()) : null;
+var f;
+do {
+if (c > 0) {
+f = this.applet.getParameter ("PDBFILE" + c);
+} else {
+f = this.b$["jalview.bin.JalviewLite"].pdbFile;
+}if (f != null) {
+var g =  new jalview.datamodel.PDBEntry ();
+var h;
+var i = null;
+var j = null;
+var k =  new java.util.StringTokenizer (f, " ");
+if (k.countTokens () < 2) {
+if (this.b$["jalview.bin.JalviewLite"].sequence != null) {
+i =  Clazz.newArray (-1, [e == null ? a.getAlignViewport ().getAlignment ().findName (this.b$["jalview.bin.JalviewLite"].sequence) : e.findIdMatch (this.b$["jalview.bin.JalviewLite"].sequence)]);
+}} else {
+f = k.nextToken ();
+var l =  new java.util.Vector ();
+var m =  new java.util.Vector ();
+while (k.hasMoreTokens ()) {
+h = k.nextToken ();
+var n =  new java.util.StringTokenizer (h, "=");
+if (n.countTokens () > 1) {
+m.addElement (n.nextToken ());
+h = n.nextToken ();
+}l.addElement (e == null ? a.getAlignViewport ().getAlignment ().findName (h) : e.findIdMatch (h));
+}
+i =  new Array (l.size ());
+l.copyInto (i);
+if (m.size () == l.size ()) {
+j =  new Array (m.size ());
+m.copyInto (j);
+}}f = this.setProtocolState (f);
+if (this.protocol === jalview.io.AppletFormatAdapter.CLASSLOADER && !this.b$["jalview.bin.JalviewLite"].useXtrnalSviewer) {
+this.protocol = jalview.io.AppletFormatAdapter.URL;
+f = this.addProtocol (f);
+}g.setFile (f);
+if (i != null) {
+for (var l = 0; l < i.length; l++) {
+if (i[l] != null) {
+(i[l]).addPDBId (g);
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.applet).registerPDBEntry (g);
+} else {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Warning: Possible input parsing error: Null sequence for attachment of PDB (sequence " + l + ")");
+}}}
+if (!this.b$["jalview.bin.JalviewLite"].alignPdbStructures) {
+a.newStructureView (this.applet, g, i, j, this.protocol);
+} else {
+d.addElement ( Clazz.newArray (-1, [g, i, j,  String.instantialize (this.protocol)]));
+}}}c++;
+} while (f != null || c < 10);
+if (d.size () > 0) {
+var g =  new Array (d.size ());
+var h =  new Array (d.size ());
+var i =  new Array (d.size ());
+var j =  new Array (d.size ());
+for (var k = 0, l = d.size (); k < l; k++) {
+var m = d.elementAt (k);
+h[k] = m[0];
+g[k] = m[1];
+i[k] = m[2];
+j[k] = m[3];
+}
+a.alignedStructureView (this.applet, h, g, i, j);
+b = true;
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "loadJnetFile", 
+function (a) {
+var b = false;
+var c = this.b$["jalview.bin.JalviewLite"].jnetFile;
+if (c != null) {
+try {
+c = this.setProtocolState (c);
+var d = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [c, this.protocol]);
+jalview.io.JnetAnnotationMaker.add_annotation (d, a.viewport.getAlignment (), 0, false);
+var e = a.viewport.getAlignment ().getSequenceAt (0);
+a.viewport.getAlignment ().setSeqrep (e);
+var f =  new jalview.datamodel.ColumnSelection ();
+f.hideInsertionsFor (e);
+a.viewport.setColumnSelection (f);
+a.alignPanel.fontChanged ();
+a.alignPanel.setScrollValues (0, 0);
+b = true;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "loadAnnotations", 
+function (a) {
+var b = false;
+var c = this.b$["jalview.bin.JalviewLite"].annotations;
+if (c != null) {
+c = this.setProtocolState (c);
+if ( new jalview.io.AnnotationFile ().annotateAlignmentView (a.viewport, c, this.protocol)) {
+a.alignPanel.fontChanged ();
+a.alignPanel.setScrollValues (0, 0);
+b = true;
+} else {
+System.err.println ("Annotations were not added from annotation file '" + c + "'");
+}}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "loadFeatures", 
+function (a) {
+var b = false;
+var c = this.b$["jalview.bin.JalviewLite"].hideFeatureGroups;
+if (c != null) {
+a.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (c), false);
+}c = this.b$["jalview.bin.JalviewLite"].showFeatureGroups;
+if (c != null) {
+a.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (c), true);
+}c = this.b$["jalview.bin.JalviewLite"].features;
+if (c != null) {
+c = this.setProtocolState (c);
+b = a.parseFeaturesFile (c, this.protocol);
+}c = this.b$["jalview.bin.JalviewLite"].showFeatureSettings;
+if (c != null && c.equalsIgnoreCase ("true")) {
+a.viewport.setShowSequenceFeatures (true);
+ new jalview.appletgui.FeatureSettings (a.alignPanel);
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "loadScoreFile", 
+function (a) {
+var b = false;
+if (this.b$["jalview.bin.JalviewLite"].scoreFile != null && !"".equals (this.b$["jalview.bin.JalviewLite"].scoreFile)) {
+try {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Attempting to load T-COFFEE score file from the scoreFile parameter");
+}b = a.loadScoreFile (this.b$["jalview.bin.JalviewLite"].scoreFile);
+if (!b) {
+System.err.println ("Failed to parse T-COFFEE parameter as a valid score file ('" + this.b$["jalview.bin.JalviewLite"].scoreFile + "')");
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.printf ("Cannot read score file: '%s'. Cause: %s \n", [this.b$["jalview.bin.JalviewLite"].scoreFile, e.getMessage ()]);
+} else {
+throw e;
+}
+}
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "loadTree", 
+function (a) {
+var b = false;
+if (this.b$["jalview.bin.JalviewLite"].treeFile == null) {
+this.b$["jalview.bin.JalviewLite"].treeFile = this.applet.getParameter ("treeFile");
+}if (this.b$["jalview.bin.JalviewLite"].treeFile != null) {
+try {
+this.b$["jalview.bin.JalviewLite"].treeFile = this.setProtocolState (this.b$["jalview.bin.JalviewLite"].treeFile);
+var c =  new jalview.io.NewickFile (this.b$["jalview.bin.JalviewLite"].treeFile, this.protocol);
+c.parse ();
+if (c.getTree () != null) {
+a.loadTree (c, this.b$["jalview.bin.JalviewLite"].treeFile);
+b = true;
+this.dbgMsg ("Successfully imported tree.");
+} else {
+this.dbgMsg ("Tree parameter did not resolve to a valid tree.");
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz.defineMethod (c$, "inArchive", 
+function (a) {
+try {
+var b = (this.getClass ().getResourceAsStream ("/" + a) != null);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Resource '" + a + "' was " + (b ? "" : "not") + " located by classloader.");
+}return b;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.out.println ("Exception checking resources: " + a + " " + ex);
+return false;
+} else {
+throw ex;
+}
+}
+}, "~S");
+Clazz.defineMethod (c$, "addProtocol", 
+function (a) {
+if (a.indexOf ("://") == -1) {
+var b = this.applet.resolveUrlForLocalOrAbsolute (a, this.b$["jalview.bin.JalviewLite"].getDocumentBase ());
+if (this.urlExists (b)) {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Prepended document base for resource: '" + a + "'");
+}return b;
+}b = this.applet.resolveUrlForLocalOrAbsolute (a, this.b$["jalview.bin.JalviewLite"].getCodeBase ());
+if (this.urlExists (b)) {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Prepended codebase for resource: '" + a + "'");
+}return b;
+}}return a;
+}, "~S");
+Clazz.defineMethod (c$, "urlExists", 
+($fz = function (a) {
+var b = null;
+try {
+b =  new java.net.URL (a).openStream ();
+if (b != null) {
+return true;
+}} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+} finally {
+if (b != null) {
+try {
+b.close ();
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+} else {
+throw e;
+}
+}
+}}
+return false;
+}, $fz.isPrivate = true, $fz), "~S");
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$1", null, Runnable);
+Clazz.overrideMethod (c$, "run", 
+function () {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverVamsasSequence (this.f$.sq, this.f$.sq.findIndex (this.f$.pos), null);
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$2", null, Runnable);
+Clazz.overrideMethod (c$, "run", 
+function () {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverVamsasSequence (this.f$.sq, this.f$.pos, null);
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$3", null, Runnable);
+Clazz.overrideMethod (c$, "run", 
+function () {
+this.f$.alf.select (this.f$.sel, this.f$.csel);
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$4$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$4", null, Runnable);
+Clazz.overrideMethod (c$, "run", 
+function () {
+try {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverStructure ( new Integer (this.f$.pdbResNum).intValue (), this.f$.chain, this.f$.pdbfile);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("mouseOver for '" + this.f$.pdbResNum + "' in chain '" + this.f$.chain + "' in structure '" + this.f$.pdbfile + "'");
+}} catch (e) {
+if (Clazz.exceptionOf (e, NumberFormatException)) {
+System.err.println ("Ignoring invalid residue number string '" + this.f$.pdbResNum + "'");
+} else {
+throw e;
+}
+}
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$5$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$5", null, Runnable);
+Clazz.overrideMethod (c$, "run", 
+function () {
+try {
+this.f$.alf.scrollTo ( new Integer (this.f$.topRow).intValue (),  new Integer (this.f$.leftHandColumn).intValue ());
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't parse integer arguments (topRow='" + this.f$.topRow + "' and leftHandColumn='" + this.f$.leftHandColumn + "')");
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$6$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$6", null, Runnable);
+Clazz.overrideMethod (c$, "run", 
+function () {
+try {
+this.f$.alf.scrollToRow ( new Integer (this.f$.topRow).intValue ());
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't parse integer arguments (topRow='" + this.f$.topRow + "')");
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$7$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$7", null, Runnable);
+Clazz.overrideMethod (c$, "run", 
+function () {
+try {
+this.f$.alf.scrollToColumn ( new Integer (this.f$.leftHandColumn).intValue ());
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't parse integer arguments (leftHandColumn='" + this.f$.leftHandColumn + "')");
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$8$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$8", null, java.awt.event.ActionListener);
+Clazz.overrideMethod (c$, "actionPerformed", 
+function (e) {
+var loader = Clazz.innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.b$["jalview.bin.JalviewLite"].startupFile, this.b$["jalview.bin.JalviewLite"].file2, this.b$["jalview.bin.JalviewLite"]);
+loader.start ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$9$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$9", java.awt.event.WindowAdapter);
+Clazz.overrideMethod (c$, "windowClosing", 
+function (e) {
+if (Clazz.instanceOf (this.f$.frame, jalview.appletgui.AlignFrame)) {
+var vp = (this.f$.frame).viewport;
+(this.f$.frame).closeMenuItem_actionPerformed ();
+if (vp.applet.currentAlignFrame === this.f$.frame) {
+vp.applet.currentAlignFrame = null;
+}vp.applet = null;
+vp = null;
+}jalview.bin.JalviewLite.lastFrameX -= 40;
+jalview.bin.JalviewLite.lastFrameY -= 40;
+if (Clazz.instanceOf (this.f$.frame, jalview.appletgui.EmbmenuFrame)) {
+(this.f$.frame).destroyMenus ();
+}this.f$.frame.setMenuBar (null);
+this.f$.frame.dispose ();
+}, "java.awt.event.WindowEvent");
+Clazz.defineMethod (c$, "windowActivated", 
+function (e) {
+if (Clazz.instanceOf (this.f$.frame, jalview.appletgui.AlignFrame)) {
+(this.f$.frame).viewport.applet.currentAlignFrame = this.f$.frame;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Activated window " + this.f$.frame);
+}}Clazz.superCall (this, jalview.bin.JalviewLite$9, "windowActivated", [e]);
+}, "java.awt.event.WindowEvent");
+c$ = Clazz.p0p ();
+};
+c$.$JalviewLite$10$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.bin, "JalviewLite$10", null, Runnable);
+Clazz.overrideMethod (c$, "run", 
+function () {
+this.f$.alf.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (this.f$.groups), this.f$.st);
+});
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"TRUE", "true",
+"FALSE", "false",
+"debug", false,
+"lastFrameX", 200,
+"lastFrameY", 200,
+"builddate", null,
+"version", null,
+"installation", null);
+});
index fb085d6..0ebfc96 100644 (file)
@@ -1,74 +1,74 @@
-Clazz.declarePackage ("jalview.commands");\r
-Clazz.load (["jalview.commands.CommandI"], "jalview.commands.ChangeCaseCommand", ["java.lang.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.description = null;\r
-this.caseChange = -1;\r
-this.seqs = null;\r
-this.regions = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.commands, "ChangeCaseCommand", null, jalview.commands.CommandI);\r
-Clazz.makeConstructor (c$, \r
-function (description, seqs, regions, caseChange) {\r
-this.description = description;\r
-this.seqs = seqs;\r
-this.regions = regions;\r
-this.caseChange = caseChange;\r
-this.doCommand (null);\r
-}, "~S,~A,java.util.List,~N");\r
-Clazz.overrideMethod (c$, "getDescription", \r
-function () {\r
-return this.description;\r
-});\r
-Clazz.overrideMethod (c$, "getSize", \r
-function () {\r
-return 1;\r
-});\r
-Clazz.overrideMethod (c$, "doCommand", \r
-function (views) {\r
-this.changeCase (true);\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "undoCommand", \r
-function (views) {\r
-this.changeCase (false);\r
-}, "~A");\r
-Clazz.defineMethod (c$, "changeCase", \r
-function (doCommand) {\r
-var sequence;\r
-var start;\r
-var end;\r
-var nextChar;\r
-for (var r, $r = this.regions.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {\r
-start = r[0];\r
-for (var s = 0; s < this.seqs.length; s++) {\r
-sequence = this.seqs[s].getSequenceAsString ();\r
-var newSeq =  new StringBuffer ();\r
-if (r[1] > sequence.length) {\r
-end = sequence.length;\r
-} else {\r
-end = r[1];\r
-}if (start > 0) {\r
-newSeq.append (sequence.substring (0, start));\r
-}if ((this.caseChange == jalview.commands.ChangeCaseCommand.TO_UPPER && doCommand) || (this.caseChange == jalview.commands.ChangeCaseCommand.TO_LOWER && !doCommand)) {\r
-newSeq.append (sequence.substring (start, end).toUpperCase ());\r
-} else if ((this.caseChange == jalview.commands.ChangeCaseCommand.TO_LOWER && doCommand) || (this.caseChange == jalview.commands.ChangeCaseCommand.TO_UPPER && !doCommand)) {\r
-newSeq.append (sequence.substring (start, end).toLowerCase ());\r
-} else {\r
-for (var c = start; c < end; c++) {\r
-nextChar = sequence.charAt (c);\r
-if ('a' <= nextChar && nextChar <= 'z') {\r
-nextChar = String.fromCharCode (nextChar.charCodeAt (0) - (32));\r
-} else if ('A' <= nextChar && nextChar <= 'Z') {\r
-nextChar = String.fromCharCode (nextChar.charCodeAt (0) + (32));\r
-}newSeq.append (nextChar);\r
-}\r
-}if (end < sequence.length) {\r
-newSeq.append (sequence.substring (end));\r
-}this.seqs[s].setSequence (newSeq.toString ());\r
-}\r
-}\r
-}, "~B");\r
-Clazz.defineStatics (c$,\r
-"TO_LOWER", 0,\r
-"TO_UPPER", 1,\r
-"TOGGLE_CASE", 2);\r
-});\r
+Clazz.declarePackage ("jalview.commands");
+Clazz.load (["jalview.commands.CommandI"], "jalview.commands.ChangeCaseCommand", ["java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.description = null;
+this.caseChange = -1;
+this.seqs = null;
+this.regions = null;
+Clazz.instantialize (this, arguments);
+}, jalview.commands, "ChangeCaseCommand", null, jalview.commands.CommandI);
+Clazz.makeConstructor (c$, 
+function (description, seqs, regions, caseChange) {
+this.description = description;
+this.seqs = seqs;
+this.regions = regions;
+this.caseChange = caseChange;
+this.doCommand (null);
+}, "~S,~A,java.util.List,~N");
+Clazz.overrideMethod (c$, "getDescription", 
+function () {
+return this.description;
+});
+Clazz.overrideMethod (c$, "getSize", 
+function () {
+return 1;
+});
+Clazz.overrideMethod (c$, "doCommand", 
+function (views) {
+this.changeCase (true);
+}, "~A");
+Clazz.overrideMethod (c$, "undoCommand", 
+function (views) {
+this.changeCase (false);
+}, "~A");
+Clazz.defineMethod (c$, "changeCase", 
+function (doCommand) {
+var sequence;
+var start;
+var end;
+var nextChar;
+for (var r, $r = this.regions.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
+start = r[0];
+for (var s = 0; s < this.seqs.length; s++) {
+sequence = this.seqs[s].getSequenceAsString ();
+var newSeq =  new StringBuffer ();
+if (r[1] > sequence.length) {
+end = sequence.length;
+} else {
+end = r[1];
+}if (start > 0) {
+newSeq.append (sequence.substring (0, start));
+}if ((this.caseChange == jalview.commands.ChangeCaseCommand.TO_UPPER && doCommand) || (this.caseChange == jalview.commands.ChangeCaseCommand.TO_LOWER && !doCommand)) {
+newSeq.append (sequence.substring (start, end).toUpperCase ());
+} else if ((this.caseChange == jalview.commands.ChangeCaseCommand.TO_LOWER && doCommand) || (this.caseChange == jalview.commands.ChangeCaseCommand.TO_UPPER && !doCommand)) {
+newSeq.append (sequence.substring (start, end).toLowerCase ());
+} else {
+for (var c = start; c < end; c++) {
+nextChar = sequence.charAt (c);
+if ('a' <= nextChar && nextChar <= 'z') {
+nextChar = String.fromCharCode (nextChar.charCodeAt (0) - (32));
+} else if ('A' <= nextChar && nextChar <= 'Z') {
+nextChar = String.fromCharCode (nextChar.charCodeAt (0) + (32));
+}newSeq.append (nextChar);
+}
+}if (end < sequence.length) {
+newSeq.append (sequence.substring (end));
+}this.seqs[s].setSequence (newSeq.toString ());
+}
+}
+}, "~B");
+Clazz.defineStatics (c$,
+"TO_LOWER", 0,
+"TO_UPPER", 1,
+"TOGGLE_CASE", 2);
+});
index 792918f..598c931 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.commands");\r
-Clazz.declareInterface (jalview.commands, "CommandI");\r
+Clazz.declarePackage ("jalview.commands");
+Clazz.declareInterface (jalview.commands, "CommandI");
index 21a6161..8e6645e 100644 (file)
Binary files a/bin/jalview/commands/EditCommand.class and b/bin/jalview/commands/EditCommand.class differ
index b556231..0839473 100644 (file)
-Clazz.declarePackage ("jalview.commands");\r
-Clazz.load (["jalview.commands.CommandI", "java.lang.Enum", "java.util.ArrayList"], "jalview.commands.EditCommand", ["jalview.analysis.AlignSeq", "jalview.datamodel.AlignmentAnnotation", "$.Annotation", "$.Sequence", "$.SequenceFeature", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "$.ReverseListIterator", "$.StringUtils", "java.lang.StringBuffer", "java.util.HashMap", "$.Hashtable"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.edits = null;\r
-this.description = null;\r
-if (!Clazz.isClassDefined ("jalview.commands.EditCommand.Edit")) {\r
-jalview.commands.EditCommand.$EditCommand$Edit$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.commands, "EditCommand", null, jalview.commands.CommandI);\r
-Clazz.prepareFields (c$, function () {\r
-this.edits =  new java.util.ArrayList ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (description) {\r
-this.description = description;\r
-}, "~S");\r
-Clazz.makeConstructor (c$, \r
-function (description, command, seqs, position, number, al) {\r
-this.description = description;\r
-if (command === jalview.commands.EditCommand.Action.CUT || command === jalview.commands.EditCommand.Action.PASTE) {\r
-this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al));\r
-}this.performEdit (0, null);\r
-}, "~S,jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI");\r
-Clazz.makeConstructor (c$, \r
-function (description, command, replace, seqs, position, number, al) {\r
-this.description = description;\r
-if (command === jalview.commands.EditCommand.Action.REPLACE) {\r
-this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al, replace));\r
-}this.performEdit (0, null);\r
-}, "~S,jalview.commands.EditCommand.Action,~S,~A,~N,~N,jalview.datamodel.AlignmentI");\r
-Clazz.defineMethod (c$, "setEdit", \r
-function (e) {\r
-this.edits.clear ();\r
-this.edits.add (e);\r
-}, "jalview.commands.EditCommand.Edit");\r
-Clazz.defineMethod (c$, "addEdit", \r
-function (e) {\r
-if (!jalview.commands.EditCommand.expandEdit (this.edits, e)) {\r
-this.edits.add (e);\r
-}}, "jalview.commands.EditCommand.Edit");\r
-c$.expandEdit = Clazz.defineMethod (c$, "expandEdit", \r
-function (edits, e) {\r
-if (edits == null || edits.isEmpty ()) {\r
-return false;\r
-}var lastEdit = edits.get (edits.size () - 1);\r
-var action = e.command;\r
-if (lastEdit.command !== action) {\r
-return false;\r
-}if (lastEdit.seqs.length != e.seqs.length) {\r
-return false;\r
-}for (var i = 0; i < e.seqs.length; i++) {\r
-if (lastEdit.seqs[i].getDatasetSequence () !== e.seqs[i].getDatasetSequence ()) {\r
-return false;\r
-}}\r
-var contiguous = (action === jalview.commands.EditCommand.Action.INSERT_GAP && e.position == lastEdit.position + lastEdit.number) || (action === jalview.commands.EditCommand.Action.DELETE_GAP && e.position + e.number == lastEdit.position);\r
-if (contiguous) {\r
-lastEdit.number += e.number;\r
-lastEdit.seqs = e.seqs;\r
-if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {\r
-lastEdit.position--;\r
-}return true;\r
-}return false;\r
-}, "java.util.List,jalview.commands.EditCommand.Edit");\r
-Clazz.defineMethod (c$, "clearEdits", \r
-function () {\r
-this.edits.clear ();\r
-});\r
-Clazz.defineMethod (c$, "getEdit", \r
-function (i) {\r
-if (i >= 0 && i < this.edits.size ()) {\r
-return this.edits.get (i);\r
-}return null;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "getDescription", \r
-function () {\r
-return this.description;\r
-});\r
-Clazz.overrideMethod (c$, "getSize", \r
-function () {\r
-return this.edits.size ();\r
-});\r
-Clazz.defineMethod (c$, "getAlignment", \r
-function () {\r
-return (this.edits.isEmpty () ? null : this.edits.get (0).al);\r
-});\r
-Clazz.defineMethod (c$, "appendEdit", \r
-function (command, seqs, position, number, al, performEdit) {\r
-this.appendEdit (command, seqs, position, number, al, performEdit, null);\r
-}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~B");\r
-Clazz.defineMethod (c$, "appendEdit", \r
-function (command, seqs, position, number, al, performEdit, views) {\r
-var edit = Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al.getGapCharacter ());\r
-if (al.getHeight () == seqs.length) {\r
-edit.al = al;\r
-edit.fullAlignmentHeight = true;\r
-}this.addEdit (edit);\r
-if (performEdit) {\r
-jalview.commands.EditCommand.performEdit (edit, views);\r
-}}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~B,~A");\r
-Clazz.defineMethod (c$, "appendEdit", \r
-function (edit, al, performEdit, views) {\r
-if (al.getHeight () == edit.seqs.length) {\r
-edit.al = al;\r
-edit.fullAlignmentHeight = true;\r
-}this.addEdit (edit);\r
-if (performEdit) {\r
-jalview.commands.EditCommand.performEdit (edit, views);\r
-}}, "jalview.commands.EditCommand.Edit,jalview.datamodel.AlignmentI,~B,~A");\r
-Clazz.defineMethod (c$, "performEdit", \r
-function (commandIndex, views) {\r
-var iterator = this.edits.listIterator (commandIndex);\r
-while (iterator.hasNext ()) {\r
-var edit = iterator.next ();\r
-jalview.commands.EditCommand.performEdit (edit, views);\r
-}\r
-}, "~N,~A");\r
-c$.performEdit = Clazz.defineMethod (c$, "performEdit", \r
-function (edit, views) {\r
-switch (edit.command) {\r
-case jalview.commands.EditCommand.Action.INSERT_GAP:\r
-jalview.commands.EditCommand.insertGap (edit);\r
-break;\r
-case jalview.commands.EditCommand.Action.DELETE_GAP:\r
-jalview.commands.EditCommand.deleteGap (edit);\r
-break;\r
-case jalview.commands.EditCommand.Action.CUT:\r
-jalview.commands.EditCommand.cut (edit, views);\r
-break;\r
-case jalview.commands.EditCommand.Action.PASTE:\r
-jalview.commands.EditCommand.paste (edit, views);\r
-break;\r
-case jalview.commands.EditCommand.Action.REPLACE:\r
-jalview.commands.EditCommand.replace (edit);\r
-break;\r
-case jalview.commands.EditCommand.Action.INSERT_NUC:\r
-break;\r
-default:\r
-break;\r
-}\r
-}, "jalview.commands.EditCommand.Edit,~A");\r
-Clazz.overrideMethod (c$, "doCommand", \r
-function (views) {\r
-this.performEdit (0, views);\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "undoCommand", \r
-function (views) {\r
-var iterator = this.edits.listIterator (this.edits.size ());\r
-while (iterator.hasPrevious ()) {\r
-var e = iterator.previous ();\r
-switch (e.command) {\r
-case jalview.commands.EditCommand.Action.INSERT_GAP:\r
-jalview.commands.EditCommand.deleteGap (e);\r
-break;\r
-case jalview.commands.EditCommand.Action.DELETE_GAP:\r
-jalview.commands.EditCommand.insertGap (e);\r
-break;\r
-case jalview.commands.EditCommand.Action.CUT:\r
-jalview.commands.EditCommand.paste (e, views);\r
-break;\r
-case jalview.commands.EditCommand.Action.PASTE:\r
-jalview.commands.EditCommand.cut (e, views);\r
-break;\r
-case jalview.commands.EditCommand.Action.REPLACE:\r
-jalview.commands.EditCommand.replace (e);\r
-break;\r
-case jalview.commands.EditCommand.Action.INSERT_NUC:\r
-break;\r
-default:\r
-break;\r
-}\r
-}\r
-}, "~A");\r
-c$.insertGap = Clazz.defineMethod (c$, "insertGap", \r
-($fz = function (command) {\r
-for (var s = 0; s < command.seqs.length; s++) {\r
-command.seqs[s].insertCharAt (command.position, command.number, command.gapChar);\r
-}\r
-jalview.commands.EditCommand.adjustAnnotations (command, true, false, null);\r
-}, $fz.isPrivate = true, $fz), "jalview.commands.EditCommand.Edit");\r
-c$.deleteGap = Clazz.defineMethod (c$, "deleteGap", \r
-($fz = function (command) {\r
-for (var s = 0; s < command.seqs.length; s++) {\r
-command.seqs[s].deleteChars (command.position, command.position + command.number);\r
-}\r
-jalview.commands.EditCommand.adjustAnnotations (command, false, false, null);\r
-}, $fz.isPrivate = true, $fz), "jalview.commands.EditCommand.Edit");\r
-c$.cut = Clazz.defineMethod (c$, "cut", \r
-function (command, views) {\r
-var seqDeleted = false;\r
-command.string =  Clazz.newCharArray (command.seqs.length, '\0');\r
-for (var i = 0; i < command.seqs.length; i++) {\r
-var sequence = command.seqs[i];\r
-if (sequence.getLength () > command.position) {\r
-command.string[i] = sequence.getSequence (command.position, command.position + command.number);\r
-var oldds = sequence.getDatasetSequence ();\r
-if (command.oldds != null && command.oldds[i] != null) {\r
-sequence.setDatasetSequence (null);\r
-}sequence.deleteChars (command.position, command.position + command.number);\r
-if (command.oldds != null && command.oldds[i] != null) {\r
-sequence.setDatasetSequence (command.oldds[i]);\r
-command.oldds[i] = oldds;\r
-} else {\r
-if (oldds !== sequence.getDatasetSequence () || sequence.getSequenceFeatures () != null) {\r
-if (command.oldds == null) {\r
-command.oldds =  new Array (command.seqs.length);\r
-}command.oldds[i] = oldds;\r
-jalview.commands.EditCommand.adjustFeatures (command, i, sequence.findPosition (command.position), sequence.findPosition (command.position + command.number), false);\r
-}}}if (sequence.getLength () < 1) {\r
-command.al.deleteSequence (sequence);\r
-seqDeleted = true;\r
-}}\r
-jalview.commands.EditCommand.adjustAnnotations (command, false, seqDeleted, views);\r
-}, "jalview.commands.EditCommand.Edit,~A");\r
-c$.paste = Clazz.defineMethod (c$, "paste", \r
-function (command, views) {\r
-var tmp;\r
-var newDSNeeded;\r
-var newDSWasNeeded;\r
-var newstart;\r
-var newend;\r
-var seqWasDeleted = false;\r
-var start = 0;\r
-var end = 0;\r
-for (var i = 0; i < command.seqs.length; i++) {\r
-newDSNeeded = false;\r
-newDSWasNeeded = command.oldds != null && command.oldds[i] != null;\r
-if (command.seqs[i].getLength () < 1) {\r
-if (command.alIndex[i] < command.al.getHeight ()) {\r
-var sequences;\r
-{\r
-if (!(command.alIndex[i] < 0)) {\r
-sequences.add (command.alIndex[i], command.seqs[i]);\r
-}}} else {\r
-command.al.addSequence (command.seqs[i]);\r
-}seqWasDeleted = true;\r
-}newstart = command.seqs[i].getStart ();\r
-newend = command.seqs[i].getEnd ();\r
-tmp =  new StringBuffer ();\r
-tmp.append (command.seqs[i].getSequence ());\r
-if (command.string != null && command.string[i] != null) {\r
-if (command.position >= tmp.length ()) {\r
-var length = command.position - tmp.length ();\r
-while (length > 0) {\r
-tmp.append (command.gapChar);\r
-length--;\r
-}\r
-}tmp.insert (command.position, command.string[i]);\r
-for (var s = 0; s < command.string[i].length; s++) {\r
-if (jalview.schemes.ResidueProperties.aaIndex[command.string[i][s].charCodeAt (0)] != 23) {\r
-if (!newDSNeeded) {\r
-newDSNeeded = true;\r
-start = command.seqs[i].findPosition (command.position);\r
-end = command.seqs[i].findPosition (command.position + command.number);\r
-}if (command.seqs[i].getStart () == start) {\r
-newstart--;\r
-} else {\r
-newend++;\r
-}}}\r
-command.string[i] = null;\r
-}command.seqs[i].setSequence (tmp.toString ());\r
-command.seqs[i].setStart (newstart);\r
-command.seqs[i].setEnd (newend);\r
-if (newDSNeeded) {\r
-if (command.seqs[i].getDatasetSequence () != null) {\r
-var ds;\r
-if (newDSWasNeeded) {\r
-ds = command.oldds[i];\r
-} else {\r
-ds =  new jalview.datamodel.Sequence (command.seqs[i].getName (), jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, command.seqs[i].getSequenceAsString ()), command.seqs[i].getStart (), command.seqs[i].getEnd ());\r
-ds.setDescription (command.seqs[i].getDescription ());\r
-}if (command.oldds == null) {\r
-command.oldds =  new Array (command.seqs.length);\r
-}command.oldds[i] = command.seqs[i].getDatasetSequence ();\r
-command.seqs[i].setDatasetSequence (ds);\r
-}jalview.commands.EditCommand.adjustFeatures (command, i, start, end, true);\r
-}}\r
-jalview.commands.EditCommand.adjustAnnotations (command, true, seqWasDeleted, views);\r
-command.string = null;\r
-}, "jalview.commands.EditCommand.Edit,~A");\r
-c$.replace = Clazz.defineMethod (c$, "replace", \r
-function (command) {\r
-var tmp;\r
-var oldstring;\r
-var start = command.position;\r
-var end = command.number;\r
-command.number = start + command.string[0].length;\r
-for (var i = 0; i < command.seqs.length; i++) {\r
-var newDSWasNeeded = command.oldds != null && command.oldds[i] != null;\r
-oldstring = command.seqs[i].getSequenceAsString ();\r
-tmp =  new StringBuffer (oldstring.substring (0, start));\r
-tmp.append (command.string[i]);\r
-var nogaprep = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (command.string[i]));\r
-var ipos = command.seqs[i].findPosition (start) - command.seqs[i].getStart ();\r
-tmp.append (oldstring.substring (end));\r
-command.seqs[i].setSequence (tmp.toString ());\r
-command.string[i] = oldstring.substring (start, end).toCharArray ();\r
-var nogapold = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (command.string[i]));\r
-if (!nogaprep.toLowerCase ().equals (nogapold.toLowerCase ())) {\r
-if (newDSWasNeeded) {\r
-var oldds = command.seqs[i].getDatasetSequence ();\r
-command.seqs[i].setDatasetSequence (command.oldds[i]);\r
-command.oldds[i] = oldds;\r
-} else {\r
-if (command.oldds == null) {\r
-command.oldds =  new Array (command.seqs.length);\r
-}command.oldds[i] = command.seqs[i].getDatasetSequence ();\r
-var newds =  new jalview.datamodel.Sequence (command.seqs[i].getDatasetSequence ());\r
-var fullseq;\r
-var osp = newds.getSequenceAsString ();\r
-fullseq = osp.substring (0, ipos) + nogaprep + osp.substring (ipos + nogaprep.length);\r
-newds.setSequence (fullseq.toUpperCase ());\r
-command.seqs[i].setDatasetSequence (newds);\r
-}}tmp = null;\r
-oldstring = null;\r
-}\r
-}, "jalview.commands.EditCommand.Edit");\r
-c$.adjustAnnotations = Clazz.defineMethod (c$, "adjustAnnotations", \r
-function (command, insert, modifyVisibility, views) {\r
-var annotations = null;\r
-if (modifyVisibility && !insert) {\r
-command.deletedAnnotationRows =  new java.util.Hashtable ();\r
-}if (command.fullAlignmentHeight) {\r
-annotations = command.al.getAlignmentAnnotation ();\r
-} else {\r
-var aSize = 0;\r
-var tmp;\r
-for (var s = 0; s < command.seqs.length; s++) {\r
-if (modifyVisibility) {\r
-if (!insert) {\r
-tmp = command.seqs[s].getAnnotation ();\r
-if (tmp != null) {\r
-var alen = tmp.length;\r
-for (var aa = 0; aa < tmp.length; aa++) {\r
-if (!command.al.deleteAnnotation (tmp[aa])) {\r
-tmp[aa] = null;\r
-alen--;\r
-}}\r
-command.seqs[s].setAlignmentAnnotation (null);\r
-if (alen != tmp.length) {\r
-var saved =  new Array (alen);\r
-for (var aa = 0, aapos = 0; aa < tmp.length; aa++) {\r
-if (tmp[aa] != null) {\r
-saved[aapos++] = tmp[aa];\r
-tmp[aa] = null;\r
-}}\r
-tmp = saved;\r
-command.deletedAnnotationRows.put (command.seqs[s], saved);\r
-for (var alview = 0; views != null && alview < views.length; alview++) {\r
-if (views[alview] !== command.al) {\r
-var toremove = views[alview].getAlignmentAnnotation ();\r
-if (toremove == null || toremove.length == 0) {\r
-continue;\r
-}for (var aa = 0; aa < toremove.length; aa++) {\r
-if (toremove[aa].sequenceRef === command.seqs[s]) {\r
-views[alview].deleteAnnotation (toremove[aa]);\r
-}}\r
-}}\r
-} else {\r
-command.deletedAnnotationRows.put (command.seqs[s], tmp);\r
-}}} else {\r
-if (command.deletedAnnotationRows != null && command.deletedAnnotationRows.containsKey (command.seqs[s])) {\r
-var revealed = command.deletedAnnotationRows.get (command.seqs[s]);\r
-command.seqs[s].setAlignmentAnnotation (revealed);\r
-if (revealed != null) {\r
-for (var aa = 0; aa < revealed.length; aa++) {\r
-command.al.addAnnotation (revealed[aa]);\r
-}\r
-for (var aa = 0; aa < revealed.length; aa++) {\r
-command.al.setAnnotationIndex (revealed[aa], aa);\r
-}\r
-for (var vnum = 0; views != null && vnum < views.length; vnum++) {\r
-if (views[vnum] !== command.al) {\r
-var avwidth = views[vnum].getWidth () + 1;\r
-for (var a = 0; a < revealed.length; a++) {\r
-var newann =  new jalview.datamodel.AlignmentAnnotation (revealed[a]);\r
-command.seqs[s].addAlignmentAnnotation (newann);\r
-newann.padAnnotation (avwidth);\r
-views[vnum].addAnnotation (newann);\r
-views[vnum].setAnnotationIndex (newann, a);\r
-}\r
-}}\r
-}}}continue;\r
-}if (command.seqs[s].getAnnotation () == null) {\r
-continue;\r
-}if (aSize == 0) {\r
-annotations = command.seqs[s].getAnnotation ();\r
-} else {\r
-tmp =  new Array (aSize + command.seqs[s].getAnnotation ().length);\r
-System.arraycopy (annotations, 0, tmp, 0, aSize);\r
-System.arraycopy (command.seqs[s].getAnnotation (), 0, tmp, aSize, command.seqs[s].getAnnotation ().length);\r
-annotations = tmp;\r
-}aSize = annotations.length;\r
-}\r
-}if (annotations == null) {\r
-return;\r
-}if (!insert) {\r
-command.deletedAnnotations =  new java.util.Hashtable ();\r
-}var aSize;\r
-var temp;\r
-for (var a = 0; a < annotations.length; a++) {\r
-if (annotations[a].autoCalculated || annotations[a].annotations == null) {\r
-continue;\r
-}var tSize = 0;\r
-aSize = annotations[a].annotations.length;\r
-if (insert) {\r
-temp =  new Array (aSize + command.number);\r
-if (annotations[a].padGaps) {\r
-for (var aa = 0; aa < temp.length; aa++) {\r
-temp[aa] =  new jalview.datamodel.Annotation (command.gapChar + "", null, ' ', 0);\r
-}\r
-}} else {\r
-if (command.position < aSize) {\r
-if (command.position + command.number >= aSize) {\r
-tSize = aSize;\r
-} else {\r
-tSize = aSize - command.number;\r
-}} else {\r
-tSize = aSize;\r
-}if (tSize < 0) {\r
-tSize = aSize;\r
-}temp =  new Array (tSize);\r
-}if (insert) {\r
-if (command.position < annotations[a].annotations.length) {\r
-System.arraycopy (annotations[a].annotations, 0, temp, 0, command.position);\r
-if (command.deletedAnnotations != null && command.deletedAnnotations.containsKey (annotations[a].annotationId)) {\r
-var restore = command.deletedAnnotations.get (annotations[a].annotationId);\r
-System.arraycopy (restore, 0, temp, command.position, command.number);\r
-}System.arraycopy (annotations[a].annotations, command.position, temp, command.position + command.number, aSize - command.position);\r
-} else {\r
-if (command.deletedAnnotations != null && command.deletedAnnotations.containsKey (annotations[a].annotationId)) {\r
-var restore = command.deletedAnnotations.get (annotations[a].annotationId);\r
-temp =  new Array (annotations[a].annotations.length + restore.length);\r
-System.arraycopy (annotations[a].annotations, 0, temp, 0, annotations[a].annotations.length);\r
-System.arraycopy (restore, 0, temp, annotations[a].annotations.length, restore.length);\r
-} else {\r
-temp = annotations[a].annotations;\r
-}}} else {\r
-if (tSize != aSize || command.position < 2) {\r
-var copylen = Math.min (command.position, annotations[a].annotations.length);\r
-if (copylen > 0) {\r
-System.arraycopy (annotations[a].annotations, 0, temp, 0, copylen);\r
-}var deleted =  new Array (command.number);\r
-if (copylen >= command.position) {\r
-copylen = Math.min (command.number, annotations[a].annotations.length - command.position);\r
-if (copylen > 0) {\r
-System.arraycopy (annotations[a].annotations, command.position, deleted, 0, copylen);\r
-}}command.deletedAnnotations.put (annotations[a].annotationId, deleted);\r
-if (annotations[a].annotations.length > command.position + command.number) {\r
-System.arraycopy (annotations[a].annotations, command.position + command.number, temp, command.position, annotations[a].annotations.length - command.position - command.number);\r
-}} else {\r
-var dSize = aSize - command.position;\r
-if (dSize > 0) {\r
-var deleted =  new Array (command.number);\r
-System.arraycopy (annotations[a].annotations, command.position, deleted, 0, dSize);\r
-command.deletedAnnotations.put (annotations[a].annotationId, deleted);\r
-tSize = Math.min (annotations[a].annotations.length, command.position);\r
-temp =  new Array (tSize);\r
-System.arraycopy (annotations[a].annotations, 0, temp, 0, tSize);\r
-} else {\r
-temp = annotations[a].annotations;\r
-}}}annotations[a].annotations = temp;\r
-}\r
-}, "jalview.commands.EditCommand.Edit,~B,~B,~A");\r
-c$.adjustFeatures = Clazz.defineMethod (c$, "adjustFeatures", \r
-function (command, index, i, j, insert) {\r
-var seq = command.seqs[index];\r
-var sequence = seq.getDatasetSequence ();\r
-if (sequence == null) {\r
-sequence = seq;\r
-}if (insert) {\r
-if (command.editedFeatures != null && command.editedFeatures.containsKey (seq)) {\r
-sequence.setSequenceFeatures (command.editedFeatures.get (seq));\r
-}return;\r
-}var sf = sequence.getSequenceFeatures ();\r
-if (sf == null) {\r
-return;\r
-}var oldsf =  new Array (sf.length);\r
-var cSize = j - i;\r
-for (var s = 0; s < sf.length; s++) {\r
-var copy =  new jalview.datamodel.SequenceFeature (sf[s]);\r
-oldsf[s] = copy;\r
-if (sf[s].getEnd () < i) {\r
-continue;\r
-}if (sf[s].getBegin () > j) {\r
-sf[s].setBegin (copy.getBegin () - cSize);\r
-sf[s].setEnd (copy.getEnd () - cSize);\r
-continue;\r
-}if (sf[s].getBegin () >= i) {\r
-sf[s].setBegin (i);\r
-}if (sf[s].getEnd () < j) {\r
-sf[s].setEnd (j - 1);\r
-}sf[s].setEnd (sf[s].getEnd () - (cSize));\r
-if (sf[s].getBegin () > sf[s].getEnd ()) {\r
-sequence.deleteFeature (sf[s]);\r
-}}\r
-if (command.editedFeatures == null) {\r
-command.editedFeatures =  new java.util.Hashtable ();\r
-}command.editedFeatures.put (seq, oldsf);\r
-}, "jalview.commands.EditCommand.Edit,~N,~N,~N,~B");\r
-Clazz.defineMethod (c$, "getEdits", \r
-function () {\r
-return this.edits;\r
-});\r
-Clazz.defineMethod (c$, "priorState", \r
-function (forUndo) {\r
-var result =  new java.util.HashMap ();\r
-if (this.getEdits () == null) {\r
-return result;\r
-}if (forUndo) {\r
-for (var e, $e = this.getEdits ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) {\r
-for (var seq, $seq = 0, $$seq = e.getSequences (); $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {\r
-var ds = seq.getDatasetSequence ();\r
-var preEdit = result.get (ds);\r
-if (preEdit == null) {\r
-preEdit =  new jalview.datamodel.Sequence ("", seq.getSequenceAsString ());\r
-preEdit.setDatasetSequence (ds);\r
-result.put (ds, preEdit);\r
-}}\r
-}\r
-return result;\r
-}var edits =  new jalview.util.ReverseListIterator (this.getEdits ());\r
-while (edits.hasNext ()) {\r
-var oldEdit = edits.next ();\r
-var action = oldEdit.getAction ();\r
-var position = oldEdit.getPosition ();\r
-var number = oldEdit.getNumber ();\r
-var gap = oldEdit.getGapCharacter ();\r
-for (var seq, $seq = 0, $$seq = oldEdit.getSequences (); $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {\r
-var ds = seq.getDatasetSequence ();\r
-var preEdit = result.get (ds);\r
-if (preEdit == null) {\r
-preEdit =  new jalview.datamodel.Sequence ("", seq.getSequenceAsString ());\r
-preEdit.setDatasetSequence (ds);\r
-result.put (ds, preEdit);\r
-}if (ds != null) {\r
-if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {\r
-preEdit.setSequence ( String.instantialize (jalview.util.StringUtils.insertCharAt (preEdit.getSequence (), position, number, gap)));\r
-} else if (action === jalview.commands.EditCommand.Action.INSERT_GAP) {\r
-preEdit.setSequence ( String.instantialize (jalview.util.StringUtils.deleteChars (preEdit.getSequence (), position, position + number)));\r
-} else {\r
-System.err.println ("Can't undo edit action " + action);\r
-}}}\r
-}\r
-return result;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getEditIterator", \r
-function (forwards) {\r
-if (forwards) {\r
-return this.getEdits ().iterator ();\r
-} else {\r
-return  new jalview.util.ReverseListIterator (this.getEdits ());\r
-}}, "~B");\r
-c$.$EditCommand$Edit$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.oldds = null;\r
-this.fullAlignmentHeight = false;\r
-this.deletedAnnotationRows = null;\r
-this.deletedAnnotations = null;\r
-this.editedFeatures = null;\r
-this.al = null;\r
-this.command = null;\r
-this.string = null;\r
-this.seqs = null;\r
-this.alIndex = null;\r
-this.position = 0;\r
-this.number = 0;\r
-this.gapChar = '\0';\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.commands.EditCommand, "Edit");\r
-Clazz.makeConstructor (c$, \r
-function (a, b, c, d, e) {\r
-this.command = a;\r
-this.seqs = b;\r
-this.position = c;\r
-this.number = d;\r
-this.gapChar = e;\r
-}, "jalview.commands.EditCommand.Action,~A,~N,~N,~S");\r
-Clazz.makeConstructor (c$, \r
-function (a, b, c, d, e) {\r
-this.gapChar = e.getGapCharacter ();\r
-this.command = a;\r
-this.seqs = b;\r
-this.position = c;\r
-this.number = d;\r
-this.al = e;\r
-this.alIndex =  Clazz.newIntArray (b.length, 0);\r
-for (var f = 0; f < b.length; f++) {\r
-this.alIndex[f] = e.findIndex (b[f]);\r
-}\r
-this.fullAlignmentHeight = (e.getHeight () == b.length);\r
-}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI");\r
-Clazz.makeConstructor (c$, \r
-function (a, b, c, d, e, f) {\r
-this.command = a;\r
-this.seqs = b;\r
-this.position = c;\r
-this.number = d;\r
-this.al = e;\r
-this.gapChar = e.getGapCharacter ();\r
-this.string =  Clazz.newCharArray (b.length, '\0');\r
-for (var g = 0; g < b.length; g++) {\r
-this.string[g] = f.toCharArray ();\r
-}\r
-this.fullAlignmentHeight = (e.getHeight () == b.length);\r
-}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~S");\r
-Clazz.defineMethod (c$, "getSequences", \r
-function () {\r
-return this.seqs;\r
-});\r
-Clazz.defineMethod (c$, "getPosition", \r
-function () {\r
-return this.position;\r
-});\r
-Clazz.defineMethod (c$, "getAction", \r
-function () {\r
-return this.command;\r
-});\r
-Clazz.defineMethod (c$, "getNumber", \r
-function () {\r
-return this.number;\r
-});\r
-Clazz.defineMethod (c$, "getGapCharacter", \r
-function () {\r
-return this.gapChar;\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareType (jalview.commands.EditCommand, "Action", Enum);\r
-Clazz.defineMethod (c$, "getUndoAction", \r
-function () {\r
-switch (this) {\r
-case jalview.commands.EditCommand.Action.INSERT_GAP:\r
-return jalview.commands.EditCommand.Action.DELETE_GAP;\r
-case jalview.commands.EditCommand.Action.CUT:\r
-return jalview.commands.EditCommand.Action.PASTE;\r
-case jalview.commands.EditCommand.Action.DELETE_GAP:\r
-return jalview.commands.EditCommand.Action.INSERT_GAP;\r
-case jalview.commands.EditCommand.Action.INSERT_NUC:\r
-return null;\r
-case jalview.commands.EditCommand.Action.PASTE:\r
-return jalview.commands.EditCommand.Action.CUT;\r
-case jalview.commands.EditCommand.Action.REPLACE:\r
-return jalview.commands.EditCommand.Action.REPLACE;\r
-}\r
-return null;\r
-});\r
-Clazz.defineEnumConstant (c$, "INSERT_GAP", 0, []);\r
-Clazz.defineEnumConstant (c$, "DELETE_GAP", 1, []);\r
-Clazz.defineEnumConstant (c$, "CUT", 2, []);\r
-Clazz.defineEnumConstant (c$, "PASTE", 3, []);\r
-Clazz.defineEnumConstant (c$, "REPLACE", 4, []);\r
-Clazz.defineEnumConstant (c$, "INSERT_NUC", 5, []);\r
-c$ = Clazz.p0p ();\r
-});\r
+Clazz.declarePackage ("jalview.commands");
+Clazz.load (["jalview.commands.CommandI", "java.lang.Enum", "java.util.ArrayList"], "jalview.commands.EditCommand", ["jalview.analysis.AlignSeq", "jalview.datamodel.AlignmentAnnotation", "$.Annotation", "$.Sequence", "$.SequenceFeature", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "$.ReverseListIterator", "$.StringUtils", "java.lang.StringBuffer", "java.util.HashMap", "$.Hashtable"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.edits = null;
+this.description = null;
+if (!Clazz.isClassDefined ("jalview.commands.EditCommand.Edit")) {
+jalview.commands.EditCommand.$EditCommand$Edit$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.commands, "EditCommand", null, jalview.commands.CommandI);
+Clazz.prepareFields (c$, function () {
+this.edits =  new java.util.ArrayList ();
+});
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.makeConstructor (c$, 
+function (description) {
+this.description = description;
+}, "~S");
+Clazz.makeConstructor (c$, 
+function (description, command, seqs, position, number, al) {
+this.description = description;
+if (command === jalview.commands.EditCommand.Action.CUT || command === jalview.commands.EditCommand.Action.PASTE) {
+this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al));
+}this.performEdit (0, null);
+}, "~S,jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz.makeConstructor (c$, 
+function (description, command, replace, seqs, position, number, al) {
+this.description = description;
+if (command === jalview.commands.EditCommand.Action.REPLACE) {
+this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al, replace));
+}this.performEdit (0, null);
+}, "~S,jalview.commands.EditCommand.Action,~S,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "setEdit", 
+function (e) {
+this.edits.clear ();
+this.edits.add (e);
+}, "jalview.commands.EditCommand.Edit");
+Clazz.defineMethod (c$, "addEdit", 
+function (e) {
+if (!jalview.commands.EditCommand.expandEdit (this.edits, e)) {
+this.edits.add (e);
+}}, "jalview.commands.EditCommand.Edit");
+c$.expandEdit = Clazz.defineMethod (c$, "expandEdit", 
+function (edits, e) {
+if (edits == null || edits.isEmpty ()) {
+return false;
+}var lastEdit = edits.get (edits.size () - 1);
+var action = e.command;
+if (lastEdit.command !== action) {
+return false;
+}if (lastEdit.seqs.length != e.seqs.length) {
+return false;
+}for (var i = 0; i < e.seqs.length; i++) {
+if (lastEdit.seqs[i].getDatasetSequence () !== e.seqs[i].getDatasetSequence ()) {
+return false;
+}}
+var contiguous = (action === jalview.commands.EditCommand.Action.INSERT_GAP && e.position == lastEdit.position + lastEdit.number) || (action === jalview.commands.EditCommand.Action.DELETE_GAP && e.position + e.number == lastEdit.position);
+if (contiguous) {
+lastEdit.number += e.number;
+lastEdit.seqs = e.seqs;
+if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {
+lastEdit.position--;
+}return true;
+}return false;
+}, "java.util.List,jalview.commands.EditCommand.Edit");
+Clazz.defineMethod (c$, "clearEdits", 
+function () {
+this.edits.clear ();
+});
+Clazz.defineMethod (c$, "getEdit", 
+function (i) {
+if (i >= 0 && i < this.edits.size ()) {
+return this.edits.get (i);
+}return null;
+}, "~N");
+Clazz.overrideMethod (c$, "getDescription", 
+function () {
+return this.description;
+});
+Clazz.overrideMethod (c$, "getSize", 
+function () {
+return this.edits.size ();
+});
+Clazz.defineMethod (c$, "getAlignment", 
+function () {
+return (this.edits.isEmpty () ? null : this.edits.get (0).al);
+});
+Clazz.defineMethod (c$, "appendEdit", 
+function (command, seqs, position, number, al, performEdit) {
+this.appendEdit (command, seqs, position, number, al, performEdit, null);
+}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~B");
+Clazz.defineMethod (c$, "appendEdit", 
+function (command, seqs, position, number, al, performEdit, views) {
+var edit = Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al.getGapCharacter ());
+if (al.getHeight () == seqs.length) {
+edit.al = al;
+edit.fullAlignmentHeight = true;
+}this.addEdit (edit);
+if (performEdit) {
+jalview.commands.EditCommand.performEdit (edit, views);
+}}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~B,~A");
+Clazz.defineMethod (c$, "appendEdit", 
+function (edit, al, performEdit, views) {
+if (al.getHeight () == edit.seqs.length) {
+edit.al = al;
+edit.fullAlignmentHeight = true;
+}this.addEdit (edit);
+if (performEdit) {
+jalview.commands.EditCommand.performEdit (edit, views);
+}}, "jalview.commands.EditCommand.Edit,jalview.datamodel.AlignmentI,~B,~A");
+Clazz.defineMethod (c$, "performEdit", 
+function (commandIndex, views) {
+var iterator = this.edits.listIterator (commandIndex);
+while (iterator.hasNext ()) {
+var edit = iterator.next ();
+jalview.commands.EditCommand.performEdit (edit, views);
+}
+}, "~N,~A");
+c$.performEdit = Clazz.defineMethod (c$, "performEdit", 
+function (edit, views) {
+switch (edit.command) {
+case jalview.commands.EditCommand.Action.INSERT_GAP:
+jalview.commands.EditCommand.insertGap (edit);
+break;
+case jalview.commands.EditCommand.Action.DELETE_GAP:
+jalview.commands.EditCommand.deleteGap (edit);
+break;
+case jalview.commands.EditCommand.Action.CUT:
+jalview.commands.EditCommand.cut (edit, views);
+break;
+case jalview.commands.EditCommand.Action.PASTE:
+jalview.commands.EditCommand.paste (edit, views);
+break;
+case jalview.commands.EditCommand.Action.REPLACE:
+jalview.commands.EditCommand.replace (edit);
+break;
+case jalview.commands.EditCommand.Action.INSERT_NUC:
+break;
+default:
+break;
+}
+}, "jalview.commands.EditCommand.Edit,~A");
+Clazz.overrideMethod (c$, "doCommand", 
+function (views) {
+this.performEdit (0, views);
+}, "~A");
+Clazz.overrideMethod (c$, "undoCommand", 
+function (views) {
+var iterator = this.edits.listIterator (this.edits.size ());
+while (iterator.hasPrevious ()) {
+var e = iterator.previous ();
+switch (e.command) {
+case jalview.commands.EditCommand.Action.INSERT_GAP:
+jalview.commands.EditCommand.deleteGap (e);
+break;
+case jalview.commands.EditCommand.Action.DELETE_GAP:
+jalview.commands.EditCommand.insertGap (e);
+break;
+case jalview.commands.EditCommand.Action.CUT:
+jalview.commands.EditCommand.paste (e, views);
+break;
+case jalview.commands.EditCommand.Action.PASTE:
+jalview.commands.EditCommand.cut (e, views);
+break;
+case jalview.commands.EditCommand.Action.REPLACE:
+jalview.commands.EditCommand.replace (e);
+break;
+case jalview.commands.EditCommand.Action.INSERT_NUC:
+break;
+default:
+break;
+}
+}
+}, "~A");
+c$.insertGap = Clazz.defineMethod (c$, "insertGap", 
+($fz = function (command) {
+for (var s = 0; s < command.seqs.length; s++) {
+command.seqs[s].insertCharAt (command.position, command.number, command.gapChar);
+}
+jalview.commands.EditCommand.adjustAnnotations (command, true, false, null);
+}, $fz.isPrivate = true, $fz), "jalview.commands.EditCommand.Edit");
+c$.deleteGap = Clazz.defineMethod (c$, "deleteGap", 
+($fz = function (command) {
+for (var s = 0; s < command.seqs.length; s++) {
+command.seqs[s].deleteChars (command.position, command.position + command.number);
+}
+jalview.commands.EditCommand.adjustAnnotations (command, false, false, null);
+}, $fz.isPrivate = true, $fz), "jalview.commands.EditCommand.Edit");
+c$.cut = Clazz.defineMethod (c$, "cut", 
+function (command, views) {
+var seqDeleted = false;
+command.string =  Clazz.newCharArray (command.seqs.length, '\0');
+for (var i = 0; i < command.seqs.length; i++) {
+var sequence = command.seqs[i];
+if (sequence.getLength () > command.position) {
+command.string[i] = sequence.getSequence (command.position, command.position + command.number);
+var oldds = sequence.getDatasetSequence ();
+if (command.oldds != null && command.oldds[i] != null) {
+sequence.setDatasetSequence (null);
+}sequence.deleteChars (command.position, command.position + command.number);
+if (command.oldds != null && command.oldds[i] != null) {
+sequence.setDatasetSequence (command.oldds[i]);
+command.oldds[i] = oldds;
+} else {
+if (oldds !== sequence.getDatasetSequence () || sequence.getSequenceFeatures () != null) {
+if (command.oldds == null) {
+command.oldds =  new Array (command.seqs.length);
+}command.oldds[i] = oldds;
+jalview.commands.EditCommand.adjustFeatures (command, i, sequence.findPosition (command.position), sequence.findPosition (command.position + command.number), false);
+}}}if (sequence.getLength () < 1) {
+command.al.deleteSequence (sequence);
+seqDeleted = true;
+}}
+jalview.commands.EditCommand.adjustAnnotations (command, false, seqDeleted, views);
+}, "jalview.commands.EditCommand.Edit,~A");
+c$.paste = Clazz.defineMethod (c$, "paste", 
+function (command, views) {
+var tmp;
+var newDSNeeded;
+var newDSWasNeeded;
+var newstart;
+var newend;
+var seqWasDeleted = false;
+var start = 0;
+var end = 0;
+for (var i = 0; i < command.seqs.length; i++) {
+newDSNeeded = false;
+newDSWasNeeded = command.oldds != null && command.oldds[i] != null;
+if (command.seqs[i].getLength () < 1) {
+if (command.alIndex[i] < command.al.getHeight ()) {
+var sequences;
+{
+if (!(command.alIndex[i] < 0)) {
+sequences.add (command.alIndex[i], command.seqs[i]);
+}}} else {
+command.al.addSequence (command.seqs[i]);
+}seqWasDeleted = true;
+}newstart = command.seqs[i].getStart ();
+newend = command.seqs[i].getEnd ();
+tmp =  new StringBuffer ();
+tmp.append (command.seqs[i].getSequence ());
+if (command.string != null && command.string[i] != null) {
+if (command.position >= tmp.length ()) {
+var length = command.position - tmp.length ();
+while (length > 0) {
+tmp.append (command.gapChar);
+length--;
+}
+}tmp.insert (command.position, command.string[i]);
+for (var s = 0; s < command.string[i].length; s++) {
+if (jalview.schemes.ResidueProperties.aaIndex[command.string[i][s].charCodeAt (0)] != 23) {
+if (!newDSNeeded) {
+newDSNeeded = true;
+start = command.seqs[i].findPosition (command.position);
+end = command.seqs[i].findPosition (command.position + command.number);
+}if (command.seqs[i].getStart () == start) {
+newstart--;
+} else {
+newend++;
+}}}
+command.string[i] = null;
+}command.seqs[i].setSequence (tmp.toString ());
+command.seqs[i].setStart (newstart);
+command.seqs[i].setEnd (newend);
+if (newDSNeeded) {
+if (command.seqs[i].getDatasetSequence () != null) {
+var ds;
+if (newDSWasNeeded) {
+ds = command.oldds[i];
+} else {
+ds =  new jalview.datamodel.Sequence (command.seqs[i].getName (), jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, command.seqs[i].getSequenceAsString ()), command.seqs[i].getStart (), command.seqs[i].getEnd ());
+ds.setDescription (command.seqs[i].getDescription ());
+}if (command.oldds == null) {
+command.oldds =  new Array (command.seqs.length);
+}command.oldds[i] = command.seqs[i].getDatasetSequence ();
+command.seqs[i].setDatasetSequence (ds);
+}jalview.commands.EditCommand.adjustFeatures (command, i, start, end, true);
+}}
+jalview.commands.EditCommand.adjustAnnotations (command, true, seqWasDeleted, views);
+command.string = null;
+}, "jalview.commands.EditCommand.Edit,~A");
+c$.replace = Clazz.defineMethod (c$, "replace", 
+function (command) {
+var tmp;
+var oldstring;
+var start = command.position;
+var end = command.number;
+command.number = start + command.string[0].length;
+for (var i = 0; i < command.seqs.length; i++) {
+var newDSWasNeeded = command.oldds != null && command.oldds[i] != null;
+oldstring = command.seqs[i].getSequenceAsString ();
+tmp =  new StringBuffer (oldstring.substring (0, start));
+tmp.append (command.string[i]);
+var nogaprep = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (command.string[i]));
+var ipos = command.seqs[i].findPosition (start) - command.seqs[i].getStart ();
+tmp.append (oldstring.substring (end));
+command.seqs[i].setSequence (tmp.toString ());
+command.string[i] = oldstring.substring (start, end).toCharArray ();
+var nogapold = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (command.string[i]));
+if (!nogaprep.toLowerCase ().equals (nogapold.toLowerCase ())) {
+if (newDSWasNeeded) {
+var oldds = command.seqs[i].getDatasetSequence ();
+command.seqs[i].setDatasetSequence (command.oldds[i]);
+command.oldds[i] = oldds;
+} else {
+if (command.oldds == null) {
+command.oldds =  new Array (command.seqs.length);
+}command.oldds[i] = command.seqs[i].getDatasetSequence ();
+var newds =  new jalview.datamodel.Sequence (command.seqs[i].getDatasetSequence ());
+var fullseq;
+var osp = newds.getSequenceAsString ();
+fullseq = osp.substring (0, ipos) + nogaprep + osp.substring (ipos + nogaprep.length);
+newds.setSequence (fullseq.toUpperCase ());
+command.seqs[i].setDatasetSequence (newds);
+}}tmp = null;
+oldstring = null;
+}
+}, "jalview.commands.EditCommand.Edit");
+c$.adjustAnnotations = Clazz.defineMethod (c$, "adjustAnnotations", 
+function (command, insert, modifyVisibility, views) {
+var annotations = null;
+if (modifyVisibility && !insert) {
+command.deletedAnnotationRows =  new java.util.Hashtable ();
+}if (command.fullAlignmentHeight) {
+annotations = command.al.getAlignmentAnnotation ();
+} else {
+var aSize = 0;
+var tmp;
+for (var s = 0; s < command.seqs.length; s++) {
+if (modifyVisibility) {
+if (!insert) {
+tmp = command.seqs[s].getAnnotation ();
+if (tmp != null) {
+var alen = tmp.length;
+for (var aa = 0; aa < tmp.length; aa++) {
+if (!command.al.deleteAnnotation (tmp[aa])) {
+tmp[aa] = null;
+alen--;
+}}
+command.seqs[s].setAlignmentAnnotation (null);
+if (alen != tmp.length) {
+var saved =  new Array (alen);
+for (var aa = 0, aapos = 0; aa < tmp.length; aa++) {
+if (tmp[aa] != null) {
+saved[aapos++] = tmp[aa];
+tmp[aa] = null;
+}}
+tmp = saved;
+command.deletedAnnotationRows.put (command.seqs[s], saved);
+for (var alview = 0; views != null && alview < views.length; alview++) {
+if (views[alview] !== command.al) {
+var toremove = views[alview].getAlignmentAnnotation ();
+if (toremove == null || toremove.length == 0) {
+continue;
+}for (var aa = 0; aa < toremove.length; aa++) {
+if (toremove[aa].sequenceRef === command.seqs[s]) {
+views[alview].deleteAnnotation (toremove[aa]);
+}}
+}}
+} else {
+command.deletedAnnotationRows.put (command.seqs[s], tmp);
+}}} else {
+if (command.deletedAnnotationRows != null && command.deletedAnnotationRows.containsKey (command.seqs[s])) {
+var revealed = command.deletedAnnotationRows.get (command.seqs[s]);
+command.seqs[s].setAlignmentAnnotation (revealed);
+if (revealed != null) {
+for (var aa = 0; aa < revealed.length; aa++) {
+command.al.addAnnotation (revealed[aa]);
+}
+for (var aa = 0; aa < revealed.length; aa++) {
+command.al.setAnnotationIndex (revealed[aa], aa);
+}
+for (var vnum = 0; views != null && vnum < views.length; vnum++) {
+if (views[vnum] !== command.al) {
+var avwidth = views[vnum].getWidth () + 1;
+for (var a = 0; a < revealed.length; a++) {
+var newann =  new jalview.datamodel.AlignmentAnnotation (revealed[a]);
+command.seqs[s].addAlignmentAnnotation (newann);
+newann.padAnnotation (avwidth);
+views[vnum].addAnnotation (newann);
+views[vnum].setAnnotationIndex (newann, a);
+}
+}}
+}}}continue;
+}if (command.seqs[s].getAnnotation () == null) {
+continue;
+}if (aSize == 0) {
+annotations = command.seqs[s].getAnnotation ();
+} else {
+tmp =  new Array (aSize + command.seqs[s].getAnnotation ().length);
+System.arraycopy (annotations, 0, tmp, 0, aSize);
+System.arraycopy (command.seqs[s].getAnnotation (), 0, tmp, aSize, command.seqs[s].getAnnotation ().length);
+annotations = tmp;
+}aSize = annotations.length;
+}
+}if (annotations == null) {
+return;
+}if (!insert) {
+command.deletedAnnotations =  new java.util.Hashtable ();
+}var aSize;
+var temp;
+for (var a = 0; a < annotations.length; a++) {
+if (annotations[a].autoCalculated || annotations[a].annotations == null) {
+continue;
+}var tSize = 0;
+aSize = annotations[a].annotations.length;
+if (insert) {
+temp =  new Array (aSize + command.number);
+if (annotations[a].padGaps) {
+for (var aa = 0; aa < temp.length; aa++) {
+temp[aa] =  new jalview.datamodel.Annotation (command.gapChar + "", null, ' ', 0);
+}
+}} else {
+if (command.position < aSize) {
+if (command.position + command.number >= aSize) {
+tSize = aSize;
+} else {
+tSize = aSize - command.number;
+}} else {
+tSize = aSize;
+}if (tSize < 0) {
+tSize = aSize;
+}temp =  new Array (tSize);
+}if (insert) {
+if (command.position < annotations[a].annotations.length) {
+System.arraycopy (annotations[a].annotations, 0, temp, 0, command.position);
+if (command.deletedAnnotations != null && command.deletedAnnotations.containsKey (annotations[a].annotationId)) {
+var restore = command.deletedAnnotations.get (annotations[a].annotationId);
+System.arraycopy (restore, 0, temp, command.position, command.number);
+}System.arraycopy (annotations[a].annotations, command.position, temp, command.position + command.number, aSize - command.position);
+} else {
+if (command.deletedAnnotations != null && command.deletedAnnotations.containsKey (annotations[a].annotationId)) {
+var restore = command.deletedAnnotations.get (annotations[a].annotationId);
+temp =  new Array (annotations[a].annotations.length + restore.length);
+System.arraycopy (annotations[a].annotations, 0, temp, 0, annotations[a].annotations.length);
+System.arraycopy (restore, 0, temp, annotations[a].annotations.length, restore.length);
+} else {
+temp = annotations[a].annotations;
+}}} else {
+if (tSize != aSize || command.position < 2) {
+var copylen = Math.min (command.position, annotations[a].annotations.length);
+if (copylen > 0) {
+System.arraycopy (annotations[a].annotations, 0, temp, 0, copylen);
+}var deleted =  new Array (command.number);
+if (copylen >= command.position) {
+copylen = Math.min (command.number, annotations[a].annotations.length - command.position);
+if (copylen > 0) {
+System.arraycopy (annotations[a].annotations, command.position, deleted, 0, copylen);
+}}command.deletedAnnotations.put (annotations[a].annotationId, deleted);
+if (annotations[a].annotations.length > command.position + command.number) {
+System.arraycopy (annotations[a].annotations, command.position + command.number, temp, command.position, annotations[a].annotations.length - command.position - command.number);
+}} else {
+var dSize = aSize - command.position;
+if (dSize > 0) {
+var deleted =  new Array (command.number);
+System.arraycopy (annotations[a].annotations, command.position, deleted, 0, dSize);
+command.deletedAnnotations.put (annotations[a].annotationId, deleted);
+tSize = Math.min (annotations[a].annotations.length, command.position);
+temp =  new Array (tSize);
+System.arraycopy (annotations[a].annotations, 0, temp, 0, tSize);
+} else {
+temp = annotations[a].annotations;
+}}}annotations[a].annotations = temp;
+}
+}, "jalview.commands.EditCommand.Edit,~B,~B,~A");
+c$.adjustFeatures = Clazz.defineMethod (c$, "adjustFeatures", 
+function (command, index, i, j, insert) {
+var seq = command.seqs[index];
+var sequence = seq.getDatasetSequence ();
+if (sequence == null) {
+sequence = seq;
+}if (insert) {
+if (command.editedFeatures != null && command.editedFeatures.containsKey (seq)) {
+sequence.setSequenceFeatures (command.editedFeatures.get (seq));
+}return;
+}var sf = sequence.getSequenceFeatures ();
+if (sf == null) {
+return;
+}var oldsf =  new Array (sf.length);
+var cSize = j - i;
+for (var s = 0; s < sf.length; s++) {
+var copy =  new jalview.datamodel.SequenceFeature (sf[s]);
+oldsf[s] = copy;
+if (sf[s].getEnd () < i) {
+continue;
+}if (sf[s].getBegin () > j) {
+sf[s].setBegin (copy.getBegin () - cSize);
+sf[s].setEnd (copy.getEnd () - cSize);
+continue;
+}if (sf[s].getBegin () >= i) {
+sf[s].setBegin (i);
+}if (sf[s].getEnd () < j) {
+sf[s].setEnd (j - 1);
+}sf[s].setEnd (sf[s].getEnd () - (cSize));
+if (sf[s].getBegin () > sf[s].getEnd ()) {
+sequence.deleteFeature (sf[s]);
+}}
+if (command.editedFeatures == null) {
+command.editedFeatures =  new java.util.Hashtable ();
+}command.editedFeatures.put (seq, oldsf);
+}, "jalview.commands.EditCommand.Edit,~N,~N,~N,~B");
+Clazz.defineMethod (c$, "getEdits", 
+function () {
+return this.edits;
+});
+Clazz.defineMethod (c$, "priorState", 
+function (forUndo) {
+var result =  new java.util.HashMap ();
+if (this.getEdits () == null) {
+return result;
+}if (forUndo) {
+for (var e, $e = this.getEdits ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) {
+for (var seq, $seq = 0, $$seq = e.getSequences (); $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
+var ds = seq.getDatasetSequence ();
+var preEdit = result.get (ds);
+if (preEdit == null) {
+preEdit =  new jalview.datamodel.Sequence ("", seq.getSequenceAsString ());
+preEdit.setDatasetSequence (ds);
+result.put (ds, preEdit);
+}}
+}
+return result;
+}var edits =  new jalview.util.ReverseListIterator (this.getEdits ());
+while (edits.hasNext ()) {
+var oldEdit = edits.next ();
+var action = oldEdit.getAction ();
+var position = oldEdit.getPosition ();
+var number = oldEdit.getNumber ();
+var gap = oldEdit.getGapCharacter ();
+for (var seq, $seq = 0, $$seq = oldEdit.getSequences (); $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
+var ds = seq.getDatasetSequence ();
+var preEdit = result.get (ds);
+if (preEdit == null) {
+preEdit =  new jalview.datamodel.Sequence ("", seq.getSequenceAsString ());
+preEdit.setDatasetSequence (ds);
+result.put (ds, preEdit);
+}if (ds != null) {
+if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {
+preEdit.setSequence ( String.instantialize (jalview.util.StringUtils.insertCharAt (preEdit.getSequence (), position, number, gap)));
+} else if (action === jalview.commands.EditCommand.Action.INSERT_GAP) {
+preEdit.setSequence ( String.instantialize (jalview.util.StringUtils.deleteChars (preEdit.getSequence (), position, position + number)));
+} else {
+System.err.println ("Can't undo edit action " + action);
+}}}
+}
+return result;
+}, "~B");
+Clazz.defineMethod (c$, "getEditIterator", 
+function (forwards) {
+if (forwards) {
+return this.getEdits ().iterator ();
+} else {
+return  new jalview.util.ReverseListIterator (this.getEdits ());
+}}, "~B");
+c$.$EditCommand$Edit$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.oldds = null;
+this.fullAlignmentHeight = false;
+this.deletedAnnotationRows = null;
+this.deletedAnnotations = null;
+this.editedFeatures = null;
+this.al = null;
+this.command = null;
+this.string = null;
+this.seqs = null;
+this.alIndex = null;
+this.position = 0;
+this.number = 0;
+this.gapChar = '\0';
+Clazz.instantialize (this, arguments);
+}, jalview.commands.EditCommand, "Edit");
+Clazz.makeConstructor (c$, 
+function (a, b, c, d, e) {
+this.command = a;
+this.seqs = b;
+this.position = c;
+this.number = d;
+this.gapChar = e;
+}, "jalview.commands.EditCommand.Action,~A,~N,~N,~S");
+Clazz.makeConstructor (c$, 
+function (a, b, c, d, e) {
+this.gapChar = e.getGapCharacter ();
+this.command = a;
+this.seqs = b;
+this.position = c;
+this.number = d;
+this.al = e;
+this.alIndex =  Clazz.newIntArray (b.length, 0);
+for (var f = 0; f < b.length; f++) {
+this.alIndex[f] = e.findIndex (b[f]);
+}
+this.fullAlignmentHeight = (e.getHeight () == b.length);
+}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz.makeConstructor (c$, 
+function (a, b, c, d, e, f) {
+this.command = a;
+this.seqs = b;
+this.position = c;
+this.number = d;
+this.al = e;
+this.gapChar = e.getGapCharacter ();
+this.string =  Clazz.newCharArray (b.length, '\0');
+for (var g = 0; g < b.length; g++) {
+this.string[g] = f.toCharArray ();
+}
+this.fullAlignmentHeight = (e.getHeight () == b.length);
+}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~S");
+Clazz.defineMethod (c$, "getSequences", 
+function () {
+return this.seqs;
+});
+Clazz.defineMethod (c$, "getPosition", 
+function () {
+return this.position;
+});
+Clazz.defineMethod (c$, "getAction", 
+function () {
+return this.command;
+});
+Clazz.defineMethod (c$, "getNumber", 
+function () {
+return this.number;
+});
+Clazz.defineMethod (c$, "getGapCharacter", 
+function () {
+return this.gapChar;
+});
+c$ = Clazz.p0p ();
+};
+Clazz.pu$h ();
+c$ = Clazz.declareType (jalview.commands.EditCommand, "Action", Enum);
+Clazz.defineMethod (c$, "getUndoAction", 
+function () {
+switch (this) {
+case jalview.commands.EditCommand.Action.INSERT_GAP:
+return jalview.commands.EditCommand.Action.DELETE_GAP;
+case jalview.commands.EditCommand.Action.CUT:
+return jalview.commands.EditCommand.Action.PASTE;
+case jalview.commands.EditCommand.Action.DELETE_GAP:
+return jalview.commands.EditCommand.Action.INSERT_GAP;
+case jalview.commands.EditCommand.Action.INSERT_NUC:
+return null;
+case jalview.commands.EditCommand.Action.PASTE:
+return jalview.commands.EditCommand.Action.CUT;
+case jalview.commands.EditCommand.Action.REPLACE:
+return jalview.commands.EditCommand.Action.REPLACE;
+}
+return null;
+});
+Clazz.defineEnumConstant (c$, "INSERT_GAP", 0, []);
+Clazz.defineEnumConstant (c$, "DELETE_GAP", 1, []);
+Clazz.defineEnumConstant (c$, "CUT", 2, []);
+Clazz.defineEnumConstant (c$, "PASTE", 3, []);
+Clazz.defineEnumConstant (c$, "REPLACE", 4, []);
+Clazz.defineEnumConstant (c$, "INSERT_NUC", 5, []);
+c$ = Clazz.p0p ();
+});
index c85c70b..8939653 100644 (file)
@@ -1,38 +1,38 @@
-Clazz.declarePackage ("jalview.commands");\r
-Clazz.load (["jalview.commands.CommandI"], "jalview.commands.OrderCommand", ["jalview.analysis.AlignmentSorter"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.description = null;\r
-this.seqs = null;\r
-this.seqs2 = null;\r
-this.al = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.commands, "OrderCommand", null, jalview.commands.CommandI);\r
-Clazz.makeConstructor (c$, \r
-function (description, seqs, al) {\r
-this.description = description;\r
-this.seqs = seqs;\r
-this.seqs2 = al.getSequencesArray ();\r
-this.al = al;\r
-this.doCommand (null);\r
-}, "~S,~A,jalview.datamodel.AlignmentI");\r
-Clazz.overrideMethod (c$, "getDescription", \r
-function () {\r
-return this.description;\r
-});\r
-Clazz.overrideMethod (c$, "getSize", \r
-function () {\r
-return 1;\r
-});\r
-Clazz.overrideMethod (c$, "doCommand", \r
-function (views) {\r
-jalview.analysis.AlignmentSorter.setOrder (this.al, this.seqs2);\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "undoCommand", \r
-function (views) {\r
-jalview.analysis.AlignmentSorter.setOrder (this.al, this.seqs);\r
-}, "~A");\r
-Clazz.defineMethod (c$, "getSequenceOrder", \r
-function (undo) {\r
-return undo ? this.seqs : this.seqs2;\r
-}, "~B");\r
-});\r
+Clazz.declarePackage ("jalview.commands");
+Clazz.load (["jalview.commands.CommandI"], "jalview.commands.OrderCommand", ["jalview.analysis.AlignmentSorter"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.description = null;
+this.seqs = null;
+this.seqs2 = null;
+this.al = null;
+Clazz.instantialize (this, arguments);
+}, jalview.commands, "OrderCommand", null, jalview.commands.CommandI);
+Clazz.makeConstructor (c$, 
+function (description, seqs, al) {
+this.description = description;
+this.seqs = seqs;
+this.seqs2 = al.getSequencesArray ();
+this.al = al;
+this.doCommand (null);
+}, "~S,~A,jalview.datamodel.AlignmentI");
+Clazz.overrideMethod (c$, "getDescription", 
+function () {
+return this.description;
+});
+Clazz.overrideMethod (c$, "getSize", 
+function () {
+return 1;
+});
+Clazz.overrideMethod (c$, "doCommand", 
+function (views) {
+jalview.analysis.AlignmentSorter.setOrder (this.al, this.seqs2);
+}, "~A");
+Clazz.overrideMethod (c$, "undoCommand", 
+function (views) {
+jalview.analysis.AlignmentSorter.setOrder (this.al, this.seqs);
+}, "~A");
+Clazz.defineMethod (c$, "getSequenceOrder", 
+function (undo) {
+return undo ? this.seqs : this.seqs2;
+}, "~B");
+});
index a41e76e..511279b 100644 (file)
@@ -1,45 +1,45 @@
-Clazz.declarePackage ("jalview.commands");\r
-Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.RemoveGapColCommand", ["jalview.util.Comparison"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.columnsDeleted = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.commands, "RemoveGapColCommand", jalview.commands.EditCommand);\r
-Clazz.makeConstructor (c$, \r
-function (description, seqs, start, end, al) {\r
-Clazz.superConstructor (this, jalview.commands.RemoveGapColCommand, []);\r
-this.description = description;\r
-var j;\r
-var jSize = seqs.length;\r
-var startCol = -1;\r
-var endCol = -1;\r
-this.columnsDeleted = 0;\r
-this.clearEdits ();\r
-var $delete = true;\r
-for (var i = start; i <= end; i++) {\r
-$delete = true;\r
-for (j = 0; j < jSize; j++) {\r
-if (seqs[j].getLength () > i) {\r
-if (!jalview.util.Comparison.isGap (seqs[j].getCharAt (i))) {\r
-if ($delete) {\r
-endCol = i;\r
-}$delete = false;\r
-break;\r
-}}}\r
-if ($delete && startCol == -1) {\r
-startCol = i;\r
-}if (!$delete && startCol > -1) {\r
-this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seqs, startCol - this.columnsDeleted, endCol - startCol, al, false, null);\r
-this.columnsDeleted += (endCol - startCol);\r
-startCol = -1;\r
-endCol = -1;\r
-}}\r
-if ($delete && startCol > -1) {\r
-this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seqs, startCol - this.columnsDeleted, end - startCol + 1, al, false, null);\r
-this.columnsDeleted += (end - startCol + 1);\r
-}this.performEdit (0, null);\r
-}, "~S,~A,~N,~N,jalview.datamodel.AlignmentI");\r
-Clazz.overrideMethod (c$, "getSize", \r
-function () {\r
-return this.columnsDeleted;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.commands");
+Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.RemoveGapColCommand", ["jalview.util.Comparison"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.columnsDeleted = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.commands, "RemoveGapColCommand", jalview.commands.EditCommand);
+Clazz.makeConstructor (c$, 
+function (description, seqs, start, end, al) {
+Clazz.superConstructor (this, jalview.commands.RemoveGapColCommand, []);
+this.description = description;
+var j;
+var jSize = seqs.length;
+var startCol = -1;
+var endCol = -1;
+this.columnsDeleted = 0;
+this.clearEdits ();
+var $delete = true;
+for (var i = start; i <= end; i++) {
+$delete = true;
+for (j = 0; j < jSize; j++) {
+if (seqs[j].getLength () > i) {
+if (!jalview.util.Comparison.isGap (seqs[j].getCharAt (i))) {
+if ($delete) {
+endCol = i;
+}$delete = false;
+break;
+}}}
+if ($delete && startCol == -1) {
+startCol = i;
+}if (!$delete && startCol > -1) {
+this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seqs, startCol - this.columnsDeleted, endCol - startCol, al, false, null);
+this.columnsDeleted += (endCol - startCol);
+startCol = -1;
+endCol = -1;
+}}
+if ($delete && startCol > -1) {
+this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seqs, startCol - this.columnsDeleted, end - startCol + 1, al, false, null);
+this.columnsDeleted += (end - startCol + 1);
+}this.performEdit (0, null);
+}, "~S,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz.overrideMethod (c$, "getSize", 
+function () {
+return this.columnsDeleted;
+});
+});
index 7097db3..3cc233d 100644 (file)
@@ -1,56 +1,56 @@
-Clazz.declarePackage ("jalview.commands");\r
-Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.RemoveGapsCommand", ["jalview.util.Comparison"], function () {\r
-c$ = Clazz.declareType (jalview.commands, "RemoveGapsCommand", jalview.commands.EditCommand);\r
-Clazz.makeConstructor (c$, \r
-function (description, seqs, al) {\r
-Clazz.superConstructor (this, jalview.commands.RemoveGapsCommand, []);\r
-this.description = description;\r
-var width = 0;\r
-for (var i = 0; i < seqs.length; i++) {\r
-if (seqs[i].getLength () > width) {\r
-width = seqs[i].getLength ();\r
-}}\r
-this.findGaps (seqs, 0, width, al);\r
-}, "~S,~A,jalview.datamodel.AlignmentI");\r
-Clazz.makeConstructor (c$, \r
-function (description, seqs, start, end, al) {\r
-Clazz.superConstructor (this, jalview.commands.RemoveGapsCommand, []);\r
-this.description = description;\r
-this.findGaps (seqs, start, end, al);\r
-}, "~S,~A,~N,~N,jalview.datamodel.AlignmentI");\r
-Clazz.defineMethod (c$, "findGaps", \r
-function (seqs, start, end, al) {\r
-var startCol = -1;\r
-var endCol = -1;\r
-var deletedCols = 0;\r
-var j;\r
-var jSize;\r
-this.clearEdits ();\r
-var $delete = true;\r
-var sequence;\r
-for (var s = 0; s < seqs.length; s++) {\r
-deletedCols = 0;\r
-startCol = -1;\r
-endCol = -1;\r
-sequence = seqs[s].getSequence (start, end + 1);\r
-jSize = sequence.length;\r
-for (j = 0; j < jSize; j++) {\r
-$delete = true;\r
-if (!jalview.util.Comparison.isGap (sequence[j])) {\r
-if ($delete) {\r
-endCol = j;\r
-}$delete = false;\r
-}if ($delete && startCol == -1) {\r
-startCol = j;\r
-}if (!$delete && startCol > -1) {\r
-this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP,  Clazz.newArray (-1, [seqs[s]]), start + startCol - deletedCols, endCol - startCol, al, false, null);\r
-deletedCols += (endCol - startCol);\r
-startCol = -1;\r
-endCol = -1;\r
-}}\r
-if ($delete && startCol > -1) {\r
-this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP,  Clazz.newArray (-1, [seqs[s]]), start + startCol - deletedCols, jSize - startCol, al, false, null);\r
-}}\r
-this.performEdit (0, null);\r
-}, "~A,~N,~N,jalview.datamodel.AlignmentI");\r
-});\r
+Clazz.declarePackage ("jalview.commands");
+Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.RemoveGapsCommand", ["jalview.util.Comparison"], function () {
+c$ = Clazz.declareType (jalview.commands, "RemoveGapsCommand", jalview.commands.EditCommand);
+Clazz.makeConstructor (c$, 
+function (description, seqs, al) {
+Clazz.superConstructor (this, jalview.commands.RemoveGapsCommand, []);
+this.description = description;
+var width = 0;
+for (var i = 0; i < seqs.length; i++) {
+if (seqs[i].getLength () > width) {
+width = seqs[i].getLength ();
+}}
+this.findGaps (seqs, 0, width, al);
+}, "~S,~A,jalview.datamodel.AlignmentI");
+Clazz.makeConstructor (c$, 
+function (description, seqs, start, end, al) {
+Clazz.superConstructor (this, jalview.commands.RemoveGapsCommand, []);
+this.description = description;
+this.findGaps (seqs, start, end, al);
+}, "~S,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "findGaps", 
+function (seqs, start, end, al) {
+var startCol = -1;
+var endCol = -1;
+var deletedCols = 0;
+var j;
+var jSize;
+this.clearEdits ();
+var $delete = true;
+var sequence;
+for (var s = 0; s < seqs.length; s++) {
+deletedCols = 0;
+startCol = -1;
+endCol = -1;
+sequence = seqs[s].getSequence (start, end + 1);
+jSize = sequence.length;
+for (j = 0; j < jSize; j++) {
+$delete = true;
+if (!jalview.util.Comparison.isGap (sequence[j])) {
+if ($delete) {
+endCol = j;
+}$delete = false;
+}if ($delete && startCol == -1) {
+startCol = j;
+}if (!$delete && startCol > -1) {
+this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP,  Clazz.newArray (-1, [seqs[s]]), start + startCol - deletedCols, endCol - startCol, al, false, null);
+deletedCols += (endCol - startCol);
+startCol = -1;
+endCol = -1;
+}}
+if ($delete && startCol > -1) {
+this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP,  Clazz.newArray (-1, [seqs[s]]), start + startCol - deletedCols, jSize - startCol, al, false, null);
+}}
+this.performEdit (0, null);
+}, "~A,~N,~N,jalview.datamodel.AlignmentI");
+});
index 125c732..5a79b67 100644 (file)
@@ -1,48 +1,48 @@
-Clazz.declarePackage ("jalview.commands");\r
-Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.SlideSequencesCommand", ["jalview.util.Comparison"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.gapsInsertedBegin = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.commands, "SlideSequencesCommand", jalview.commands.EditCommand);\r
-Clazz.makeConstructor (c$, \r
-function (description, seqsLeft, seqsRight, slideSize, gapChar) {\r
-Clazz.superConstructor (this, jalview.commands.SlideSequencesCommand, []);\r
-this.description = description;\r
-var lSize = seqsLeft.length;\r
-this.gapsInsertedBegin = false;\r
-var i;\r
-var j;\r
-for (i = 0; i < lSize; i++) {\r
-for (j = 0; j < slideSize; j++) {\r
-if (!jalview.util.Comparison.isGap (seqsLeft[i].getCharAt (j))) {\r
-this.gapsInsertedBegin = true;\r
-break;\r
-}}\r
-}\r
-var e = null;\r
-if (!this.gapsInsertedBegin) {\r
-e = Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.DELETE_GAP, seqsLeft, 0, slideSize, gapChar);\r
-this.setEdit (e);\r
-} else {\r
-e = Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.INSERT_GAP, seqsRight, 0, slideSize, gapChar);\r
-this.setEdit (e);\r
-}jalview.commands.EditCommand.performEdit (e, null);\r
-}, "~S,~A,~A,~N,~S");\r
-Clazz.defineMethod (c$, "getGapsInsertedBegin", \r
-function () {\r
-return this.gapsInsertedBegin;\r
-});\r
-Clazz.defineMethod (c$, "appendSlideCommand", \r
-function (command) {\r
-var same = false;\r
-if (command.getEdit (0).seqs.length == this.getEdit (0).seqs.length) {\r
-same = true;\r
-for (var i = 0; i < command.getEdit (0).seqs.length; i++) {\r
-if (this.getEdit (0).seqs[i] !== command.getEdit (0).seqs[i]) {\r
-same = false;\r
-}}\r
-}if (same) {\r
-command.addEdit (this.getEdit (0));\r
-}return same;\r
-}, "jalview.commands.SlideSequencesCommand");\r
-});\r
+Clazz.declarePackage ("jalview.commands");
+Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.SlideSequencesCommand", ["jalview.util.Comparison"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.gapsInsertedBegin = false;
+Clazz.instantialize (this, arguments);
+}, jalview.commands, "SlideSequencesCommand", jalview.commands.EditCommand);
+Clazz.makeConstructor (c$, 
+function (description, seqsLeft, seqsRight, slideSize, gapChar) {
+Clazz.superConstructor (this, jalview.commands.SlideSequencesCommand, []);
+this.description = description;
+var lSize = seqsLeft.length;
+this.gapsInsertedBegin = false;
+var i;
+var j;
+for (i = 0; i < lSize; i++) {
+for (j = 0; j < slideSize; j++) {
+if (!jalview.util.Comparison.isGap (seqsLeft[i].getCharAt (j))) {
+this.gapsInsertedBegin = true;
+break;
+}}
+}
+var e = null;
+if (!this.gapsInsertedBegin) {
+e = Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.DELETE_GAP, seqsLeft, 0, slideSize, gapChar);
+this.setEdit (e);
+} else {
+e = Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.INSERT_GAP, seqsRight, 0, slideSize, gapChar);
+this.setEdit (e);
+}jalview.commands.EditCommand.performEdit (e, null);
+}, "~S,~A,~A,~N,~S");
+Clazz.defineMethod (c$, "getGapsInsertedBegin", 
+function () {
+return this.gapsInsertedBegin;
+});
+Clazz.defineMethod (c$, "appendSlideCommand", 
+function (command) {
+var same = false;
+if (command.getEdit (0).seqs.length == this.getEdit (0).seqs.length) {
+same = true;
+for (var i = 0; i < command.getEdit (0).seqs.length; i++) {
+if (this.getEdit (0).seqs[i] !== command.getEdit (0).seqs[i]) {
+same = false;
+}}
+}if (same) {
+command.addEdit (this.getEdit (0));
+}return same;
+}, "jalview.commands.SlideSequencesCommand");
+});
index aace60c..5e4d0bb 100644 (file)
Binary files a/bin/jalview/commands/TrimRegionCommand.class and b/bin/jalview/commands/TrimRegionCommand.class differ
index ff06747..2732ca0 100644 (file)
@@ -1,91 +1,91 @@
-Clazz.declarePackage ("jalview.commands");\r
-Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.TrimRegionCommand", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.colSel = null;\r
-this.start = null;\r
-this.shiftList = null;\r
-this.selectionGroup = null;\r
-this.deletedHiddenColumns = null;\r
-this.columnsDeleted = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.commands, "TrimRegionCommand", jalview.commands.EditCommand);\r
-Clazz.makeConstructor (c$, \r
-function (description, command, seqs, column, al, colSel, selectedRegion) {\r
-Clazz.superConstructor (this, jalview.commands.TrimRegionCommand, []);\r
-this.description = description;\r
-this.selectionGroup = selectedRegion;\r
-this.colSel = colSel;\r
-if (command.equalsIgnoreCase (jalview.commands.TrimRegionCommand.TRIM_LEFT)) {\r
-if (column == 0) {\r
-return;\r
-}this.columnsDeleted = column;\r
-this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.CUT, seqs, 0, column, al));\r
-} else if (command.equalsIgnoreCase (jalview.commands.TrimRegionCommand.TRIM_RIGHT)) {\r
-var width = al.getWidth () - column - 1;\r
-if (width < 2) {\r
-return;\r
-}this.columnsDeleted = width - 1;\r
-this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.CUT, seqs, column + 1, width, al));\r
-}var i;\r
-var isize = this.getEdit (0).seqs.length;\r
-this.start =  Clazz.newIntArray (isize, 0);\r
-for (i = 0; i < isize; i++) {\r
-this.start[i] = this.getEdit (0).seqs[i].getStart ();\r
-}\r
-this.performEdit (0, null);\r
-}, "~S,~S,~A,~N,jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");\r
-Clazz.defineMethod (c$, "cut", \r
-function (command) {\r
-var column;\r
-var j;\r
-var jSize = command.seqs.length;\r
-for (j = 0; j < jSize; j++) {\r
-if (command.position == 0) {\r
-column = command.seqs[j].findPosition (command.number);\r
-command.seqs[j].setStart (column);\r
-} else {\r
-column = command.seqs[j].findPosition (command.position) - 1;\r
-command.seqs[j].setEnd (column);\r
-}}\r
-Clazz.superCall (this, jalview.commands.TrimRegionCommand, "cut", [command, null]);\r
-if (command.position == 0) {\r
-this.deletedHiddenColumns = this.colSel.compensateForEdit (0, command.number);\r
-if (this.selectionGroup != null) {\r
-this.selectionGroup.adjustForRemoveLeft (command.number);\r
-}} else {\r
-this.deletedHiddenColumns = this.colSel.compensateForEdit (command.position, command.number);\r
-if (this.selectionGroup != null) {\r
-this.selectionGroup.adjustForRemoveRight (command.position);\r
-}}}, "jalview.commands.EditCommand.Edit");\r
-Clazz.defineMethod (c$, "paste", \r
-function (command) {\r
-Clazz.superCall (this, jalview.commands.TrimRegionCommand, "paste", [command, null]);\r
-var column;\r
-var j;\r
-var jSize = command.seqs.length;\r
-for (j = 0; j < jSize; j++) {\r
-if (command.position == 0) {\r
-command.seqs[j].setStart (this.start[j]);\r
-} else {\r
-column = command.seqs[j].findPosition (command.number + command.position) - 1;\r
-command.seqs[j].setEnd (column);\r
-}}\r
-if (command.position == 0) {\r
-this.colSel.compensateForEdit (0, -command.number);\r
-if (this.selectionGroup != null) {\r
-this.selectionGroup.adjustForRemoveLeft (-command.number);\r
-}}if (this.deletedHiddenColumns != null) {\r
-var region;\r
-for (var i = 0; i < this.deletedHiddenColumns.size (); i++) {\r
-region = this.deletedHiddenColumns.get (i);\r
-this.colSel.hideColumns (region[0], region[1]);\r
-}\r
-}}, "jalview.commands.EditCommand.Edit");\r
-Clazz.overrideMethod (c$, "getSize", \r
-function () {\r
-return this.columnsDeleted;\r
-});\r
-Clazz.defineStatics (c$,\r
-"TRIM_LEFT", "TrimLeft",\r
-"TRIM_RIGHT", "TrimRight");\r
-});\r
+Clazz.declarePackage ("jalview.commands");
+Clazz.load (["jalview.commands.EditCommand"], "jalview.commands.TrimRegionCommand", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.colSel = null;
+this.start = null;
+this.shiftList = null;
+this.selectionGroup = null;
+this.deletedHiddenColumns = null;
+this.columnsDeleted = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.commands, "TrimRegionCommand", jalview.commands.EditCommand);
+Clazz.makeConstructor (c$, 
+function (description, command, seqs, column, al, colSel, selectedRegion) {
+Clazz.superConstructor (this, jalview.commands.TrimRegionCommand, []);
+this.description = description;
+this.selectionGroup = selectedRegion;
+this.colSel = colSel;
+if (command.equalsIgnoreCase (jalview.commands.TrimRegionCommand.TRIM_LEFT)) {
+if (column == 0) {
+return;
+}this.columnsDeleted = column;
+this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.CUT, seqs, 0, column, al));
+} else if (command.equalsIgnoreCase (jalview.commands.TrimRegionCommand.TRIM_RIGHT)) {
+var width = al.getWidth () - column - 1;
+if (width < 2) {
+return;
+}this.columnsDeleted = width - 1;
+this.setEdit (Clazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.CUT, seqs, column + 1, width, al));
+}var i;
+var isize = this.getEdit (0).seqs.length;
+this.start =  Clazz.newIntArray (isize, 0);
+for (i = 0; i < isize; i++) {
+this.start[i] = this.getEdit (0).seqs[i].getStart ();
+}
+this.performEdit (0, null);
+}, "~S,~S,~A,~N,jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "cut", 
+function (command) {
+var column;
+var j;
+var jSize = command.seqs.length;
+for (j = 0; j < jSize; j++) {
+if (command.position == 0) {
+column = command.seqs[j].findPosition (command.number);
+command.seqs[j].setStart (column);
+} else {
+column = command.seqs[j].findPosition (command.position) - 1;
+command.seqs[j].setEnd (column);
+}}
+Clazz.superCall (this, jalview.commands.TrimRegionCommand, "cut", [command, null]);
+if (command.position == 0) {
+this.deletedHiddenColumns = this.colSel.compensateForEdit (0, command.number);
+if (this.selectionGroup != null) {
+this.selectionGroup.adjustForRemoveLeft (command.number);
+}} else {
+this.deletedHiddenColumns = this.colSel.compensateForEdit (command.position, command.number);
+if (this.selectionGroup != null) {
+this.selectionGroup.adjustForRemoveRight (command.position);
+}}}, "jalview.commands.EditCommand.Edit");
+Clazz.defineMethod (c$, "paste", 
+function (command) {
+Clazz.superCall (this, jalview.commands.TrimRegionCommand, "paste", [command, null]);
+var column;
+var j;
+var jSize = command.seqs.length;
+for (j = 0; j < jSize; j++) {
+if (command.position == 0) {
+command.seqs[j].setStart (this.start[j]);
+} else {
+column = command.seqs[j].findPosition (command.number + command.position) - 1;
+command.seqs[j].setEnd (column);
+}}
+if (command.position == 0) {
+this.colSel.compensateForEdit (0, -command.number);
+if (this.selectionGroup != null) {
+this.selectionGroup.adjustForRemoveLeft (-command.number);
+}}if (this.deletedHiddenColumns != null) {
+var region;
+for (var i = 0; i < this.deletedHiddenColumns.size (); i++) {
+region = this.deletedHiddenColumns.get (i);
+this.colSel.hideColumns (region[0], region[1]);
+}
+}}, "jalview.commands.EditCommand.Edit");
+Clazz.overrideMethod (c$, "getSize", 
+function () {
+return this.columnsDeleted;
+});
+Clazz.defineStatics (c$,
+"TRIM_LEFT", "TrimLeft",
+"TRIM_RIGHT", "TrimRight");
+});
index c9c4b78..7507fec 100644 (file)
Binary files a/bin/jalview/controller/AlignViewController.class and b/bin/jalview/controller/AlignViewController.class differ
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");
+});
index 1a3acab..8a9666e 100644 (file)
@@ -1,7 +1,7 @@
-Clazz.declarePackage ("jalview.controller");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.settingUI = null;\r
-this.fr = null;\r
-this.fsettings = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.controller, "FeatureSettingsController");\r
+Clazz.declarePackage ("jalview.controller");
+c$ = Clazz.decorateAsClass (function () {
+this.settingUI = null;
+this.fr = null;
+this.fsettings = null;
+Clazz.instantialize (this, arguments);
+}, jalview.controller, "FeatureSettingsController");
index ec98397..c092514 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.controller");\r
-Clazz.declareInterface (jalview.controller, "FeatureSettingsControllerGuiI");\r
+Clazz.declarePackage ("jalview.controller");
+Clazz.declareInterface (jalview.controller, "FeatureSettingsControllerGuiI");
index 1c80545..76a4493 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.ASequenceI"], "jalview.datamodel.ASequence", null, function () {\r
-c$ = Clazz.declareType (jalview.datamodel, "ASequence", null, jalview.datamodel.ASequenceI);\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.ASequenceI"], "jalview.datamodel.ASequence", null, function () {
+c$ = Clazz.declareType (jalview.datamodel, "ASequence", null, jalview.datamodel.ASequenceI);
+});
index 91b3544..3d17914 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.declareInterface (jalview.datamodel, "ASequenceI");\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.declareInterface (jalview.datamodel, "ASequenceI");
index d02ac8a..3b95647 100644 (file)
@@ -1,42 +1,42 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (null, "jalview.datamodel.AlignedCodon", ["java.lang.IllegalArgumentException", "$.StringBuilder"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.pos1 = 0;\r
-this.pos2 = 0;\r
-this.pos3 = 0;\r
-this.product = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "AlignedCodon");\r
-Clazz.makeConstructor (c$, \r
-function (i, j, k) {\r
-this.construct (i, j, k, null);\r
-}, "~N,~N,~N");\r
-Clazz.makeConstructor (c$, \r
-function (i, j, k, prod) {\r
-this.pos1 = i;\r
-this.pos2 = j;\r
-this.pos3 = k;\r
-this.product = prod;\r
-}, "~N,~N,~N,~S");\r
-Clazz.defineMethod (c$, "getBaseColumn", \r
-function (base) {\r
-if (base < 1 || base > 3) {\r
-throw  new IllegalArgumentException (Integer.toString (base));\r
-}return base == 1 ? this.pos1 : (base == 2 ? this.pos2 : this.pos3);\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "equals", \r
-function (o) {\r
-if (o == null) {\r
-return true;\r
-}if (!(Clazz.instanceOf (o, jalview.datamodel.AlignedCodon))) {\r
-return false;\r
-}var ac = o;\r
-return (this.pos1 == ac.pos1 && this.pos2 == ac.pos2 && this.pos3 == ac.pos3);\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var sb =  new StringBuilder ();\r
-sb.append ("[").append (this.pos1).append (", ").append (this.pos2).append (", ").append (this.pos3).append ("]");\r
-return sb.toString ();\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.AlignedCodon", ["java.lang.IllegalArgumentException", "$.StringBuilder"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.pos1 = 0;
+this.pos2 = 0;
+this.pos3 = 0;
+this.product = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "AlignedCodon");
+Clazz.makeConstructor (c$, 
+function (i, j, k) {
+this.construct (i, j, k, null);
+}, "~N,~N,~N");
+Clazz.makeConstructor (c$, 
+function (i, j, k, prod) {
+this.pos1 = i;
+this.pos2 = j;
+this.pos3 = k;
+this.product = prod;
+}, "~N,~N,~N,~S");
+Clazz.defineMethod (c$, "getBaseColumn", 
+function (base) {
+if (base < 1 || base > 3) {
+throw  new IllegalArgumentException (Integer.toString (base));
+}return base == 1 ? this.pos1 : (base == 2 ? this.pos2 : this.pos3);
+}, "~N");
+Clazz.overrideMethod (c$, "equals", 
+function (o) {
+if (o == null) {
+return true;
+}if (!(Clazz.instanceOf (o, jalview.datamodel.AlignedCodon))) {
+return false;
+}var ac = o;
+return (this.pos1 == ac.pos1 && this.pos2 == ac.pos2 && this.pos3 == ac.pos3);
+}, "~O");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var sb =  new StringBuilder ();
+sb.append ("[").append (this.pos1).append (", ").append (this.pos2).append (", ").append (this.pos3).append ("]");
+return sb.toString ();
+});
+});
index dcb271c..071822f 100644 (file)
Binary files a/bin/jalview/datamodel/AlignedCodonFrame.class and b/bin/jalview/datamodel/AlignedCodonFrame.class differ
index 8d854b4..043b032 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (null, "jalview.datamodel.AlignedCodonFrame", ["jalview.datamodel.Mapping", "jalview.util.MappingUtils", "java.util.ArrayList"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.dnaSeqs = null;\r
-this.dnaToProt = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "AlignedCodonFrame");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "addMap", \r
-function (dnaseq, aaseq, map) {\r
-var nlen = 1;\r
-if (this.dnaSeqs != null) {\r
-nlen = this.dnaSeqs.length + 1;\r
-}var ndna =  new Array (nlen);\r
-var ndtp =  new Array (nlen);\r
-if (this.dnaSeqs != null) {\r
-System.arraycopy (this.dnaSeqs, 0, ndna, 0, this.dnaSeqs.length);\r
-System.arraycopy (this.dnaToProt, 0, ndtp, 0, this.dnaSeqs.length);\r
-}this.dnaSeqs = ndna;\r
-this.dnaToProt = ndtp;\r
-nlen--;\r
-this.dnaSeqs[nlen] = (dnaseq.getDatasetSequence () == null) ? dnaseq : dnaseq.getDatasetSequence ();\r
-var mp =  new jalview.datamodel.Mapping (map);\r
-mp.to = (aaseq.getDatasetSequence () == null) ? aaseq : aaseq.getDatasetSequence ();\r
-this.dnaToProt[nlen] = mp;\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,jalview.util.MapList");\r
-Clazz.defineMethod (c$, "getdnaSeqs", \r
-function () {\r
-return this.dnaSeqs;\r
-});\r
-Clazz.defineMethod (c$, "getAaSeqs", \r
-function () {\r
-if (this.dnaToProt == null) {\r
-return null;\r
-}var sqs =  new Array (this.dnaToProt.length);\r
-for (var sz = 0; sz < this.dnaToProt.length; sz++) {\r
-sqs[sz] = this.dnaToProt[sz].to;\r
-}\r
-return sqs;\r
-});\r
-Clazz.defineMethod (c$, "getdnaToProt", \r
-function () {\r
-if (this.dnaToProt == null) {\r
-return null;\r
-}var sqs =  new Array (this.dnaToProt.length);\r
-for (var sz = 0; sz < this.dnaToProt.length; sz++) {\r
-sqs[sz] = this.dnaToProt[sz].map;\r
-}\r
-return sqs;\r
-});\r
-Clazz.defineMethod (c$, "getProtMappings", \r
-function () {\r
-return this.dnaToProt;\r
-});\r
-Clazz.defineMethod (c$, "getMappingForSequence", \r
-function (seq) {\r
-if (this.dnaSeqs == null) {\r
-return null;\r
-}var seqDs = seq.getDatasetSequence ();\r
-seqDs = seqDs != null ? seqDs : seq;\r
-for (var ds = 0; ds < this.dnaSeqs.length; ds++) {\r
-if (this.dnaSeqs[ds] === seqDs || this.dnaToProt[ds].to === seqDs) {\r
-return this.dnaToProt[ds];\r
-}}\r
-return null;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "getAaForDnaSeq", \r
-function (dnaSeqRef) {\r
-if (this.dnaSeqs == null) {\r
-return null;\r
-}var dnads = dnaSeqRef.getDatasetSequence ();\r
-for (var ds = 0; ds < this.dnaSeqs.length; ds++) {\r
-if (this.dnaSeqs[ds] === dnaSeqRef || this.dnaSeqs[ds] === dnads) {\r
-return this.dnaToProt[ds].to;\r
-}}\r
-return null;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "getDnaForAaSeq", \r
-function (aaSeqRef) {\r
-if (this.dnaToProt == null) {\r
-return null;\r
-}var aads = aaSeqRef.getDatasetSequence ();\r
-for (var as = 0; as < this.dnaToProt.length; as++) {\r
-if (this.dnaToProt[as].to === aaSeqRef || this.dnaToProt[as].to === aads) {\r
-return this.dnaSeqs[as];\r
-}}\r
-return null;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "involvesSequence", \r
-function (seq) {\r
-return this.getAaForDnaSeq (seq) != null || this.getDnaForAaSeq (seq) != null;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "markMappedRegion", \r
-function (seq, index, results) {\r
-if (this.dnaToProt == null) {\r
-return;\r
-}var codon;\r
-var ds = seq.getDatasetSequence ();\r
-for (var mi = 0; mi < this.dnaToProt.length; mi++) {\r
-if (this.dnaSeqs[mi] === seq || this.dnaSeqs[mi] === ds) {\r
-codon = this.dnaToProt[mi].map.locateInTo (index, index);\r
-if (codon != null) {\r
-for (var i = 0; i < codon.length; i += 2) {\r
-results.addResult (this.dnaToProt[mi].to, codon[i], codon[i + 1]);\r
-}\r
-}} else if (this.dnaToProt[mi].to === seq || this.dnaToProt[mi].to === ds) {\r
-{\r
-codon = this.dnaToProt[mi].map.locateInFrom (index, index);\r
-if (codon != null) {\r
-for (var i = 0; i < codon.length; i += 2) {\r
-results.addResult (this.dnaSeqs[mi], codon[i], codon[i + 1]);\r
-}\r
-}}}}\r
-}, "jalview.datamodel.SequenceI,~N,jalview.datamodel.SearchResults");\r
-Clazz.defineMethod (c$, "getDnaPosition", \r
-function (seq, aaPos) {\r
-var ml = null;\r
-for (var i = 0; i < this.dnaToProt.length; i++) {\r
-if (this.dnaSeqs[i] === seq) {\r
-ml = this.getdnaToProt ()[i];\r
-break;\r
-}}\r
-return ml == null ? null : ml.locateInFrom (aaPos, aaPos);\r
-}, "jalview.datamodel.SequenceI,~N");\r
-Clazz.defineMethod (c$, "findAlignedSequence", \r
-function (seq, al) {\r
-if (this.dnaToProt != null) {\r
-for (var i = 0; i < this.dnaToProt.length; i++) {\r
-if (this.dnaSeqs[i] === seq) {\r
-for (var sourceAligned, $sourceAligned = al.getSequences ().iterator (); $sourceAligned.hasNext () && ((sourceAligned = $sourceAligned.next ()) || true);) {\r
-if (this.dnaToProt[i].to === sourceAligned.getDatasetSequence ()) {\r
-return sourceAligned;\r
-}}\r
-}}\r
-}if (this.dnaToProt != null) {\r
-for (var i = 0; i < this.dnaToProt.length; i++) {\r
-if (this.dnaToProt[i].to === seq) {\r
-for (var sourceAligned, $sourceAligned = al.getSequences ().iterator (); $sourceAligned.hasNext () && ((sourceAligned = $sourceAligned.next ()) || true);) {\r
-if (this.dnaSeqs[i] === sourceAligned.getDatasetSequence ()) {\r
-return sourceAligned;\r
-}}\r
-}}\r
-}return null;\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI");\r
-Clazz.defineMethod (c$, "getMappedRegion", \r
-function (mappedFrom, mappedTo, pos) {\r
-var targetDs = mappedFrom.getDatasetSequence () == null ? mappedFrom : mappedFrom.getDatasetSequence ();\r
-var sourceDs = mappedTo.getDatasetSequence () == null ? mappedTo : mappedTo.getDatasetSequence ();\r
-if (targetDs == null || sourceDs == null || this.dnaToProt == null) {\r
-return null;\r
-}for (var mi = 0; mi < this.dnaToProt.length; mi++) {\r
-if (this.dnaSeqs[mi] === targetDs && this.dnaToProt[mi].to === sourceDs) {\r
-var codon = this.dnaToProt[mi].map.locateInFrom (pos, pos);\r
-if (codon != null) {\r
-return codon;\r
-}}}\r
-return null;\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~N");\r
-Clazz.defineMethod (c$, "getMappedCodon", \r
-function (protein, aaPos) {\r
-if (this.dnaToProt == null) {\r
-return null;\r
-}var ml = null;\r
-var dnaSeq = null;\r
-for (var i = 0; i < this.dnaToProt.length; i++) {\r
-if (this.dnaToProt[i].to === protein) {\r
-ml = this.getdnaToProt ()[i];\r
-dnaSeq = this.dnaSeqs[i].getSequence ();\r
-break;\r
-}}\r
-if (ml == null) {\r
-return null;\r
-}var codonPos = ml.locateInFrom (aaPos, aaPos);\r
-if (codonPos == null) {\r
-return null;\r
-}codonPos = jalview.util.MappingUtils.flattenRanges (codonPos);\r
-return  Clazz.newCharArray (-1, [dnaSeq[codonPos[0] - 1], dnaSeq[codonPos[1] - 1], dnaSeq[codonPos[2] - 1]]);\r
-}, "jalview.datamodel.SequenceI,~N");\r
-Clazz.defineMethod (c$, "getMappingsForSequence", \r
-function (seq) {\r
-var result =  new java.util.ArrayList ();\r
-if (this.dnaSeqs == null) {\r
-return result;\r
-}var related =  new java.util.ArrayList ();\r
-var seqDs = seq.getDatasetSequence ();\r
-seqDs = seqDs != null ? seqDs : seq;\r
-for (var ds = 0; ds < this.dnaSeqs.length; ds++) {\r
-var mapping = this.dnaToProt[ds];\r
-if (this.dnaSeqs[ds] === seqDs || mapping.to === seqDs) {\r
-if (!related.contains (mapping.to)) {\r
-result.add (mapping);\r
-related.add (mapping.to);\r
-}}}\r
-return result;\r
-}, "jalview.datamodel.SequenceI");\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.AlignedCodonFrame", ["jalview.datamodel.Mapping", "jalview.util.MappingUtils", "java.util.ArrayList"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.dnaSeqs = null;
+this.dnaToProt = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "AlignedCodonFrame");
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.defineMethod (c$, "addMap", 
+function (dnaseq, aaseq, map) {
+var nlen = 1;
+if (this.dnaSeqs != null) {
+nlen = this.dnaSeqs.length + 1;
+}var ndna =  new Array (nlen);
+var ndtp =  new Array (nlen);
+if (this.dnaSeqs != null) {
+System.arraycopy (this.dnaSeqs, 0, ndna, 0, this.dnaSeqs.length);
+System.arraycopy (this.dnaToProt, 0, ndtp, 0, this.dnaSeqs.length);
+}this.dnaSeqs = ndna;
+this.dnaToProt = ndtp;
+nlen--;
+this.dnaSeqs[nlen] = (dnaseq.getDatasetSequence () == null) ? dnaseq : dnaseq.getDatasetSequence ();
+var mp =  new jalview.datamodel.Mapping (map);
+mp.to = (aaseq.getDatasetSequence () == null) ? aaseq : aaseq.getDatasetSequence ();
+this.dnaToProt[nlen] = mp;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,jalview.util.MapList");
+Clazz.defineMethod (c$, "getdnaSeqs", 
+function () {
+return this.dnaSeqs;
+});
+Clazz.defineMethod (c$, "getAaSeqs", 
+function () {
+if (this.dnaToProt == null) {
+return null;
+}var sqs =  new Array (this.dnaToProt.length);
+for (var sz = 0; sz < this.dnaToProt.length; sz++) {
+sqs[sz] = this.dnaToProt[sz].to;
+}
+return sqs;
+});
+Clazz.defineMethod (c$, "getdnaToProt", 
+function () {
+if (this.dnaToProt == null) {
+return null;
+}var sqs =  new Array (this.dnaToProt.length);
+for (var sz = 0; sz < this.dnaToProt.length; sz++) {
+sqs[sz] = this.dnaToProt[sz].map;
+}
+return sqs;
+});
+Clazz.defineMethod (c$, "getProtMappings", 
+function () {
+return this.dnaToProt;
+});
+Clazz.defineMethod (c$, "getMappingForSequence", 
+function (seq) {
+if (this.dnaSeqs == null) {
+return null;
+}var seqDs = seq.getDatasetSequence ();
+seqDs = seqDs != null ? seqDs : seq;
+for (var ds = 0; ds < this.dnaSeqs.length; ds++) {
+if (this.dnaSeqs[ds] === seqDs || this.dnaToProt[ds].to === seqDs) {
+return this.dnaToProt[ds];
+}}
+return null;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getAaForDnaSeq", 
+function (dnaSeqRef) {
+if (this.dnaSeqs == null) {
+return null;
+}var dnads = dnaSeqRef.getDatasetSequence ();
+for (var ds = 0; ds < this.dnaSeqs.length; ds++) {
+if (this.dnaSeqs[ds] === dnaSeqRef || this.dnaSeqs[ds] === dnads) {
+return this.dnaToProt[ds].to;
+}}
+return null;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getDnaForAaSeq", 
+function (aaSeqRef) {
+if (this.dnaToProt == null) {
+return null;
+}var aads = aaSeqRef.getDatasetSequence ();
+for (var as = 0; as < this.dnaToProt.length; as++) {
+if (this.dnaToProt[as].to === aaSeqRef || this.dnaToProt[as].to === aads) {
+return this.dnaSeqs[as];
+}}
+return null;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "involvesSequence", 
+function (seq) {
+return this.getAaForDnaSeq (seq) != null || this.getDnaForAaSeq (seq) != null;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "markMappedRegion", 
+function (seq, index, results) {
+if (this.dnaToProt == null) {
+return;
+}var codon;
+var ds = seq.getDatasetSequence ();
+for (var mi = 0; mi < this.dnaToProt.length; mi++) {
+if (this.dnaSeqs[mi] === seq || this.dnaSeqs[mi] === ds) {
+codon = this.dnaToProt[mi].map.locateInTo (index, index);
+if (codon != null) {
+for (var i = 0; i < codon.length; i += 2) {
+results.addResult (this.dnaToProt[mi].to, codon[i], codon[i + 1]);
+}
+}} else if (this.dnaToProt[mi].to === seq || this.dnaToProt[mi].to === ds) {
+{
+codon = this.dnaToProt[mi].map.locateInFrom (index, index);
+if (codon != null) {
+for (var i = 0; i < codon.length; i += 2) {
+results.addResult (this.dnaSeqs[mi], codon[i], codon[i + 1]);
+}
+}}}}
+}, "jalview.datamodel.SequenceI,~N,jalview.datamodel.SearchResults");
+Clazz.defineMethod (c$, "getDnaPosition", 
+function (seq, aaPos) {
+var ml = null;
+for (var i = 0; i < this.dnaToProt.length; i++) {
+if (this.dnaSeqs[i] === seq) {
+ml = this.getdnaToProt ()[i];
+break;
+}}
+return ml == null ? null : ml.locateInFrom (aaPos, aaPos);
+}, "jalview.datamodel.SequenceI,~N");
+Clazz.defineMethod (c$, "findAlignedSequence", 
+function (seq, al) {
+if (this.dnaToProt != null) {
+for (var i = 0; i < this.dnaToProt.length; i++) {
+if (this.dnaSeqs[i] === seq) {
+for (var sourceAligned, $sourceAligned = al.getSequences ().iterator (); $sourceAligned.hasNext () && ((sourceAligned = $sourceAligned.next ()) || true);) {
+if (this.dnaToProt[i].to === sourceAligned.getDatasetSequence ()) {
+return sourceAligned;
+}}
+}}
+}if (this.dnaToProt != null) {
+for (var i = 0; i < this.dnaToProt.length; i++) {
+if (this.dnaToProt[i].to === seq) {
+for (var sourceAligned, $sourceAligned = al.getSequences ().iterator (); $sourceAligned.hasNext () && ((sourceAligned = $sourceAligned.next ()) || true);) {
+if (this.dnaSeqs[i] === sourceAligned.getDatasetSequence ()) {
+return sourceAligned;
+}}
+}}
+}return null;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "getMappedRegion", 
+function (mappedFrom, mappedTo, pos) {
+var targetDs = mappedFrom.getDatasetSequence () == null ? mappedFrom : mappedFrom.getDatasetSequence ();
+var sourceDs = mappedTo.getDatasetSequence () == null ? mappedTo : mappedTo.getDatasetSequence ();
+if (targetDs == null || sourceDs == null || this.dnaToProt == null) {
+return null;
+}for (var mi = 0; mi < this.dnaToProt.length; mi++) {
+if (this.dnaSeqs[mi] === targetDs && this.dnaToProt[mi].to === sourceDs) {
+var codon = this.dnaToProt[mi].map.locateInFrom (pos, pos);
+if (codon != null) {
+return codon;
+}}}
+return null;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~N");
+Clazz.defineMethod (c$, "getMappedCodon", 
+function (protein, aaPos) {
+if (this.dnaToProt == null) {
+return null;
+}var ml = null;
+var dnaSeq = null;
+for (var i = 0; i < this.dnaToProt.length; i++) {
+if (this.dnaToProt[i].to === protein) {
+ml = this.getdnaToProt ()[i];
+dnaSeq = this.dnaSeqs[i].getSequence ();
+break;
+}}
+if (ml == null) {
+return null;
+}var codonPos = ml.locateInFrom (aaPos, aaPos);
+if (codonPos == null) {
+return null;
+}codonPos = jalview.util.MappingUtils.flattenRanges (codonPos);
+return  Clazz.newCharArray (-1, [dnaSeq[codonPos[0] - 1], dnaSeq[codonPos[1] - 1], dnaSeq[codonPos[2] - 1]]);
+}, "jalview.datamodel.SequenceI,~N");
+Clazz.defineMethod (c$, "getMappingsForSequence", 
+function (seq) {
+var result =  new java.util.ArrayList ();
+if (this.dnaSeqs == null) {
+return result;
+}var related =  new java.util.ArrayList ();
+var seqDs = seq.getDatasetSequence ();
+seqDs = seqDs != null ? seqDs : seq;
+for (var ds = 0; ds < this.dnaSeqs.length; ds++) {
+var mapping = this.dnaToProt[ds];
+if (this.dnaSeqs[ds] === seqDs || mapping.to === seqDs) {
+if (!related.contains (mapping.to)) {
+result.add (mapping);
+related.add (mapping.to);
+}}}
+return result;
+}, "jalview.datamodel.SequenceI");
+});
index 5ed53fa..c65b99e 100644 (file)
Binary files a/bin/jalview/datamodel/Alignment.class and b/bin/jalview/datamodel/Alignment.class differ
index f70f6ce..a4d45ee 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.AlignmentI", "$.HiddenSequences", "java.util.ArrayList", "$.Collections", "$.LinkedHashSet"], "jalview.datamodel.Alignment", ["jalview.analysis.AlignmentUtils", "jalview.datamodel.AlignmentAnnotation", "$.CigarArray", "$.SeqCigar", "$.Sequence", "jalview.util.Comparison", "$.MessageManager", "java.lang.Error", "java.util.HashSet", "$.Hashtable", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.dataset = null;\r
-this.sequences = null;\r
-this.groups = null;\r
-this.gapCharacter = '-';\r
-this.type = 1;\r
-this.$hasRNAStructure = false;\r
-this.annotations = null;\r
-this.hiddenSequences = null;\r
-this.alignmentProperties = null;\r
-this.codonFrameList = null;\r
-this.alignmentRefs = 0;\r
-this.seqrep = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "Alignment", null, jalview.datamodel.AlignmentI);\r
-Clazz.prepareFields (c$, function () {\r
-this.groups = java.util.Collections.synchronizedList ( new java.util.ArrayList ());\r
-this.hiddenSequences =  new jalview.datamodel.HiddenSequences (this);\r
-this.codonFrameList =  new java.util.LinkedHashSet ();\r
-});\r
-Clazz.defineMethod (c$, "initAlignment", \r
-($fz = function (seqs) {\r
-var i = 0;\r
-if (jalview.util.Comparison.isNucleotide (seqs)) {\r
-this.type = 1;\r
-} else {\r
-this.type = 0;\r
-}this.sequences = java.util.Collections.synchronizedList ( new java.util.ArrayList ());\r
-for (i = 0; i < seqs.length; i++) {\r
-this.sequences.add (seqs[i]);\r
-}\r
-}, $fz.isPrivate = true, $fz), "~A");\r
-Clazz.makeConstructor (c$, \r
-function (al) {\r
-var seqs = al.getSequencesArray ();\r
-for (var i = 0; i < seqs.length; i++) {\r
-seqs[i] =  new jalview.datamodel.Sequence (seqs[i]);\r
-}\r
-this.codonFrameList = (al).codonFrameList;\r
-this.initAlignment (seqs);\r
-}, "jalview.datamodel.AlignmentI");\r
-Clazz.makeConstructor (c$, \r
-function (seqs) {\r
-this.initAlignment (seqs);\r
-}, "~A");\r
-c$.createAlignment = Clazz.defineMethod (c$, "createAlignment", \r
-function (compactAlignment) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.alignment_cigararray_not_implemented"));\r
-}, "jalview.datamodel.CigarArray");\r
-Clazz.defineMethod (c$, "getSequences", \r
-function () {\r
-return this.sequences;\r
-});\r
-Clazz.defineMethod (c$, "getSequences", \r
-function (hiddenReps) {\r
-return this.sequences;\r
-}, "java.util.Map");\r
-Clazz.defineMethod (c$, "getSequencesArray", \r
-function () {\r
-if (this.sequences == null) {\r
-return null;\r
-}{\r
-return this.sequences.toArray ( new Array (this.sequences.size ()));\r
-}});\r
-Clazz.overrideMethod (c$, "getSequencesByName", \r
-function () {\r
-return jalview.analysis.AlignmentUtils.getSequencesByName (this);\r
-});\r
-Clazz.overrideMethod (c$, "getSequenceAt", \r
-function (i) {\r
-{\r
-if (i > -1 && i < this.sequences.size ()) {\r
-return this.sequences.get (i);\r
-}}return null;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "addSequence", \r
-function (snew) {\r
-if (this.dataset != null) {\r
-if (snew.getDatasetSequence () != null) {\r
-this.getDataset ().addSequence (snew.getDatasetSequence ());\r
-} else {\r
-var adding = snew.deriveSequence ();\r
-this.getDataset ().addSequence (adding.getDatasetSequence ());\r
-snew = adding;\r
-}}if (this.sequences == null) {\r
-this.initAlignment ( Clazz.newArray (-1, [snew]));\r
-} else {\r
-{\r
-this.sequences.add (snew);\r
-}}if (this.hiddenSequences != null) {\r
-this.hiddenSequences.adjustHeightSequenceAdded ();\r
-}}, "jalview.datamodel.SequenceI");\r
-Clazz.overrideMethod (c$, "setSequenceAt", \r
-function (i, snew) {\r
-{\r
-this.deleteSequence (i);\r
-this.sequences.set (i, snew);\r
-}}, "~N,jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "getGroups", \r
-function () {\r
-return this.groups;\r
-});\r
-Clazz.overrideMethod (c$, "finalize", \r
-function () {\r
-if (this.getDataset () != null) {\r
-this.getDataset ().removeAlignmentRef ();\r
-}this.dataset = null;\r
-this.sequences = null;\r
-this.groups = null;\r
-this.annotations = null;\r
-this.hiddenSequences = null;\r
-});\r
-Clazz.defineMethod (c$, "removeAlignmentRef", \r
-($fz = function () {\r
-if (--this.alignmentRefs == 0) {\r
-this.finalize ();\r
-}}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "deleteSequence", \r
-function (s) {\r
-this.deleteSequence (this.findIndex (s));\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "deleteSequence", \r
-function (i) {\r
-if (i > -1 && i < this.getHeight ()) {\r
-{\r
-this.sequences.remove (i);\r
-this.hiddenSequences.adjustHeightSequenceDeleted (i);\r
-}}}, "~N");\r
-Clazz.overrideMethod (c$, "findGroup", \r
-function (s) {\r
-{\r
-for (var i = 0; i < this.groups.size (); i++) {\r
-var sg = this.groups.get (i);\r
-if (sg.getSequences (null).contains (s)) {\r
-return sg;\r
-}}\r
-}return null;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.overrideMethod (c$, "findAllGroups", \r
-function (s) {\r
-var temp =  new java.util.ArrayList ();\r
-{\r
-var gSize = this.groups.size ();\r
-for (var i = 0; i < gSize; i++) {\r
-var sg = this.groups.get (i);\r
-if (sg == null || sg.getSequences () == null) {\r
-this.deleteGroup (sg);\r
-gSize--;\r
-continue;\r
-}if (sg.getSequences ().contains (s)) {\r
-temp.add (sg);\r
-}}\r
-}var ret =  new Array (temp.size ());\r
-return temp.toArray (ret);\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.overrideMethod (c$, "addGroup", \r
-function (sg) {\r
-{\r
-if (!this.groups.contains (sg)) {\r
-if (this.hiddenSequences.getSize () > 0) {\r
-var i;\r
-var iSize = sg.getSize ();\r
-for (i = 0; i < iSize; i++) {\r
-if (!this.sequences.contains (sg.getSequenceAt (i))) {\r
-sg.deleteSequence (sg.getSequenceAt (i), false);\r
-iSize--;\r
-i--;\r
-}}\r
-if (sg.getSize () < 1) {\r
-return;\r
-}}sg.setContext (this);\r
-this.groups.add (sg);\r
-}}}, "jalview.datamodel.SequenceGroup");\r
-Clazz.defineMethod (c$, "removeAnnotationForGroup", \r
-($fz = function (gp) {\r
-if (this.annotations == null || this.annotations.length == 0) {\r
-return;\r
-}var t;\r
-var todelete =  new Array (this.annotations.length);\r
-var tokeep =  new Array (this.annotations.length);\r
-var i;\r
-var p;\r
-var k;\r
-if (gp == null) {\r
-for (i = 0, p = 0, k = 0; i < this.annotations.length; i++) {\r
-if (this.annotations[i].groupRef != null) {\r
-todelete[p++] = this.annotations[i];\r
-} else {\r
-tokeep[k++] = this.annotations[i];\r
-}}\r
-} else {\r
-for (i = 0, p = 0, k = 0; i < this.annotations.length; i++) {\r
-if (this.annotations[i].groupRef === gp) {\r
-todelete[p++] = this.annotations[i];\r
-} else {\r
-tokeep[k++] = this.annotations[i];\r
-}}\r
-}if (p > 0) {\r
-for (i = 0; i < p; i++) {\r
-this.unhookAnnotation (todelete[i]);\r
-todelete[i] = null;\r
-}\r
-t =  new Array (k);\r
-for (i = 0; i < k; i++) {\r
-t[i] = tokeep[i];\r
-}\r
-this.annotations = t;\r
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceGroup");\r
-Clazz.overrideMethod (c$, "deleteAllGroups", \r
-function () {\r
-{\r
-if (this.annotations != null) {\r
-this.removeAnnotationForGroup (null);\r
-}for (var sg, $sg = this.groups.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-sg.setContext (null);\r
-}\r
-this.groups.clear ();\r
-}});\r
-Clazz.overrideMethod (c$, "deleteGroup", \r
-function (g) {\r
-{\r
-if (this.groups.contains (g)) {\r
-this.removeAnnotationForGroup (g);\r
-this.groups.remove (g);\r
-g.setContext (null);\r
-}}}, "jalview.datamodel.SequenceGroup");\r
-Clazz.defineMethod (c$, "findName", \r
-function (name) {\r
-return this.findName (name, false);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "findName", \r
-function (token, b) {\r
-return this.findName (null, token, b);\r
-}, "~S,~B");\r
-Clazz.defineMethod (c$, "findName", \r
-function (startAfter, token, b) {\r
-var i = 0;\r
-var sq = null;\r
-var sqname = null;\r
-if (startAfter != null) {\r
-var matched = false;\r
-while (i < this.sequences.size ()) {\r
-if (this.getSequenceAt (i++) === startAfter) {\r
-matched = true;\r
-break;\r
-}}\r
-if (!matched) {\r
-i = 0;\r
-}}while (i < this.sequences.size ()) {\r
-sq = this.getSequenceAt (i);\r
-sqname = sq.getName ();\r
-if (sqname.equals (token) || (b && (sqname.equalsIgnoreCase (token)))) {\r
-return this.getSequenceAt (i);\r
-}i++;\r
-}\r
-return null;\r
-}, "jalview.datamodel.SequenceI,~S,~B");\r
-Clazz.overrideMethod (c$, "findSequenceMatch", \r
-function (name) {\r
-var matches =  new java.util.Vector ();\r
-var i = 0;\r
-while (i < this.sequences.size ()) {\r
-if (this.getSequenceAt (i).getName ().equals (name)) {\r
-matches.addElement (this.getSequenceAt (i));\r
-}i++;\r
-}\r
-var result =  new Array (matches.size ());\r
-for (i = 0; i < result.length; i++) {\r
-result[i] = matches.elementAt (i);\r
-}\r
-return result;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "findIndex", \r
-function (s) {\r
-var i = 0;\r
-while (i < this.sequences.size ()) {\r
-if (s === this.getSequenceAt (i)) {\r
-return i;\r
-}i++;\r
-}\r
-return -1;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "findIndex", \r
-function (results) {\r
-var i = 0;\r
-while (i < this.sequences.size ()) {\r
-if (results.involvesSequence (this.getSequenceAt (i))) {\r
-return i;\r
-}i++;\r
-}\r
-return -1;\r
-}, "jalview.datamodel.SearchResults");\r
-Clazz.overrideMethod (c$, "getHeight", \r
-function () {\r
-return this.sequences.size ();\r
-});\r
-Clazz.overrideMethod (c$, "getWidth", \r
-function () {\r
-var maxLength = -1;\r
-for (var i = 0; i < this.sequences.size (); i++) {\r
-if (this.getSequenceAt (i).getLength () > maxLength) {\r
-maxLength = this.getSequenceAt (i).getLength ();\r
-}}\r
-return maxLength;\r
-});\r
-Clazz.overrideMethod (c$, "setGapCharacter", \r
-function (gc) {\r
-this.gapCharacter = gc;\r
-{\r
-for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-seq.setSequence (seq.getSequenceAsString ().$replace ('.', gc).$replace ('-', gc).$replace (' ', gc));\r
-}\r
-}}, "~S");\r
-Clazz.defineMethod (c$, "getGapCharacter", \r
-function () {\r
-return this.gapCharacter;\r
-});\r
-Clazz.defineMethod (c$, "isAligned", \r
-function () {\r
-return this.isAligned (false);\r
-});\r
-Clazz.defineMethod (c$, "isAligned", \r
-function (includeHidden) {\r
-var width = this.getWidth ();\r
-if (this.hiddenSequences == null || this.hiddenSequences.getSize () == 0) {\r
-includeHidden = true;\r
-}for (var i = 0; i < this.sequences.size (); i++) {\r
-if (includeHidden || !this.hiddenSequences.isHidden (this.getSequenceAt (i))) {\r
-if (this.getSequenceAt (i).getLength () != width) {\r
-return false;\r
-}}}\r
-return true;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "deleteAllAnnotations", \r
-function (includingAutoCalculated) {\r
-var result = false;\r
-for (var alan, $alan = 0, $$alan = this.getAlignmentAnnotation (); $alan < $$alan.length && ((alan = $$alan[$alan]) || true); $alan++) {\r
-if (!alan.autoCalculated || includingAutoCalculated) {\r
-this.deleteAnnotation (alan);\r
-result = true;\r
-}}\r
-return result;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "deleteAnnotation", \r
-function (aa) {\r
-return this.deleteAnnotation (aa, true);\r
-}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.defineMethod (c$, "deleteAnnotation", \r
-function (aa, unhook) {\r
-var aSize = 1;\r
-if (this.annotations != null) {\r
-aSize = this.annotations.length;\r
-}if (aSize < 1) {\r
-return false;\r
-}var temp =  new Array (aSize - 1);\r
-var swap = false;\r
-var tIndex = 0;\r
-for (var i = 0; i < aSize; i++) {\r
-if (this.annotations[i] === aa) {\r
-swap = true;\r
-continue;\r
-}if (tIndex < temp.length) {\r
-temp[tIndex++] = this.annotations[i];\r
-}}\r
-if (swap) {\r
-this.annotations = temp;\r
-if (unhook) {\r
-this.unhookAnnotation (aa);\r
-}}return swap;\r
-}, "jalview.datamodel.AlignmentAnnotation,~B");\r
-Clazz.defineMethod (c$, "unhookAnnotation", \r
-($fz = function (aa) {\r
-if (aa.sequenceRef != null) {\r
-aa.sequenceRef.removeAlignmentAnnotation (aa);\r
-}if (aa.groupRef != null) {\r
-aa.groupRef = null;\r
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.defineMethod (c$, "addAnnotation", \r
-function (aa) {\r
-this.addAnnotation (aa, -1);\r
-}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.defineMethod (c$, "addAnnotation", \r
-function (aa, pos) {\r
-if (aa.getRNAStruc () != null) {\r
-this.$hasRNAStructure = true;\r
-}var aSize = 1;\r
-if (this.annotations != null) {\r
-aSize = this.annotations.length + 1;\r
-}var temp =  new Array (aSize);\r
-var i = 0;\r
-if (pos == -1 || pos >= aSize) {\r
-temp[aSize - 1] = aa;\r
-} else {\r
-temp[pos] = aa;\r
-}if (aSize > 1) {\r
-var p = 0;\r
-for (i = 0; i < (aSize - 1); i++, p++) {\r
-if (p == pos) {\r
-p++;\r
-}if (p < temp.length) {\r
-temp[p] = this.annotations[i];\r
-}}\r
-}this.annotations = temp;\r
-}, "jalview.datamodel.AlignmentAnnotation,~N");\r
-Clazz.overrideMethod (c$, "setAnnotationIndex", \r
-function (aa, index) {\r
-if (aa == null || this.annotations == null || this.annotations.length - 1 < index) {\r
-return;\r
-}var aSize = this.annotations.length;\r
-var temp =  new Array (aSize);\r
-temp[index] = aa;\r
-for (var i = 0; i < aSize; i++) {\r
-if (i == index) {\r
-continue;\r
-}if (i < index) {\r
-temp[i] = this.annotations[i];\r
-} else {\r
-temp[i] = this.annotations[i - 1];\r
-}}\r
-this.annotations = temp;\r
-}, "jalview.datamodel.AlignmentAnnotation,~N");\r
-Clazz.defineMethod (c$, "getAlignmentAnnotation", \r
-function () {\r
-return this.annotations;\r
-});\r
-Clazz.overrideMethod (c$, "setNucleotide", \r
-function (b) {\r
-if (b) {\r
-this.type = 1;\r
-} else {\r
-this.type = 0;\r
-}}, "~B");\r
-Clazz.defineMethod (c$, "isNucleotide", \r
-function () {\r
-if (this.type == 1) {\r
-return true;\r
-} else {\r
-return false;\r
-}});\r
-Clazz.overrideMethod (c$, "hasRNAStructure", \r
-function () {\r
-return this.$hasRNAStructure;\r
-});\r
-Clazz.overrideMethod (c$, "setDataset", \r
-function (data) {\r
-if (this.dataset == null && data == null) {\r
-var seqs =  new Array (this.getHeight ());\r
-var currentSeq;\r
-for (var i = 0; i < this.getHeight (); i++) {\r
-currentSeq = this.getSequenceAt (i);\r
-if (currentSeq.getDatasetSequence () != null) {\r
-seqs[i] = currentSeq.getDatasetSequence ();\r
-} else {\r
-seqs[i] = currentSeq.createDatasetSequence ();\r
-}}\r
-this.dataset =  new jalview.datamodel.Alignment (seqs);\r
-} else if (this.dataset == null && data != null) {\r
-this.dataset = data;\r
-for (var i = 0; i < this.getHeight (); i++) {\r
-var currentSeq = this.getSequenceAt (i);\r
-var dsq = currentSeq.getDatasetSequence ();\r
-if (dsq == null) {\r
-dsq = currentSeq.createDatasetSequence ();\r
-this.dataset.addSequence (dsq);\r
-} else {\r
-while (dsq.getDatasetSequence () != null) {\r
-dsq = dsq.getDatasetSequence ();\r
-}\r
-if (this.dataset.findIndex (dsq) == -1) {\r
-this.dataset.addSequence (dsq);\r
-}}}\r
-}this.dataset.addAlignmentRef ();\r
-}, "jalview.datamodel.Alignment");\r
-Clazz.defineMethod (c$, "addAlignmentRef", \r
-($fz = function () {\r
-this.alignmentRefs++;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "getDataset", \r
-function () {\r
-return this.dataset;\r
-});\r
-Clazz.overrideMethod (c$, "padGaps", \r
-function () {\r
-var modified = false;\r
-var maxLength = -1;\r
-var current;\r
-for (var i = 0; i < this.sequences.size (); i++) {\r
-current = this.getSequenceAt (i);\r
-for (var j = current.getLength (); j > maxLength; j--) {\r
-if (j > maxLength && !jalview.util.Comparison.isGap (current.getCharAt (j))) {\r
-maxLength = j;\r
-break;\r
-}}\r
-}\r
-maxLength++;\r
-var cLength;\r
-for (var i = 0; i < this.sequences.size (); i++) {\r
-current = this.getSequenceAt (i);\r
-cLength = current.getLength ();\r
-if (cLength < maxLength) {\r
-current.insertCharAt (cLength, maxLength - cLength, this.gapCharacter);\r
-modified = true;\r
-} else if (current.getLength () > maxLength) {\r
-current.deleteChars (maxLength, current.getLength ());\r
-}}\r
-return modified;\r
-});\r
-Clazz.overrideMethod (c$, "justify", \r
-function (right) {\r
-var modified = false;\r
-var maxLength = -1;\r
-var ends =  Clazz.newIntArray (this.sequences.size () * 2, 0);\r
-var current;\r
-for (var i = 0; i < this.sequences.size (); i++) {\r
-current = this.getSequenceAt (i);\r
-ends[i * 2] = current.findIndex (current.getStart ());\r
-ends[i * 2 + 1] = current.findIndex (current.getStart () + current.getLength ());\r
-var hitres = false;\r
-for (var j = 0, rs = 0, ssiz = current.getLength (); j < ssiz; j++) {\r
-if (!jalview.util.Comparison.isGap (current.getCharAt (j))) {\r
-if (!hitres) {\r
-ends[i * 2] = j;\r
-hitres = true;\r
-} else {\r
-ends[i * 2 + 1] = j;\r
-if (j - ends[i * 2] > maxLength) {\r
-maxLength = j - ends[i * 2];\r
-}}}}\r
-}\r
-maxLength++;\r
-var cLength;\r
-var extent;\r
-var diff;\r
-for (var i = 0; i < this.sequences.size (); i++) {\r
-current = this.getSequenceAt (i);\r
-cLength = 1 + ends[i * 2 + 1] - ends[i * 2];\r
-diff = maxLength - cLength;\r
-extent = current.getLength ();\r
-if (right) {\r
-if (extent > ends[i * 2 + 1]) {\r
-current.deleteChars (ends[i * 2 + 1] + 1, extent);\r
-modified = true;\r
-}if (ends[i * 2] > diff) {\r
-current.deleteChars (0, ends[i * 2] - diff);\r
-modified = true;\r
-} else {\r
-if (ends[i * 2] < diff) {\r
-current.insertCharAt (0, diff - ends[i * 2], this.gapCharacter);\r
-modified = true;\r
-}}} else {\r
-if (ends[i * 2] > 0) {\r
-current.deleteChars (0, ends[i * 2]);\r
-modified = true;\r
-ends[i * 2 + 1] -= ends[i * 2];\r
-extent -= ends[i * 2];\r
-}if (extent > maxLength) {\r
-current.deleteChars (maxLength + 1, extent);\r
-modified = true;\r
-} else {\r
-if (extent < maxLength) {\r
-current.insertCharAt (extent, maxLength - extent, this.gapCharacter);\r
-modified = true;\r
-}}}}\r
-return modified;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getHiddenSequences", \r
-function () {\r
-return this.hiddenSequences;\r
-});\r
-Clazz.overrideMethod (c$, "getCompactAlignment", \r
-function () {\r
-{\r
-var alseqs =  new Array (this.sequences.size ());\r
-var i = 0;\r
-for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-alseqs[i++] =  new jalview.datamodel.SeqCigar (seq);\r
-}\r
-var cal =  new jalview.datamodel.CigarArray (alseqs);\r
-cal.addOperation ('M', this.getWidth ());\r
-return cal;\r
-}});\r
-Clazz.overrideMethod (c$, "setProperty", \r
-function (key, value) {\r
-if (this.alignmentProperties == null) {\r
-this.alignmentProperties =  new java.util.Hashtable ();\r
-}this.alignmentProperties.put (key, value);\r
-}, "~O,~O");\r
-Clazz.defineMethod (c$, "getProperty", \r
-function (key) {\r
-if (this.alignmentProperties != null) {\r
-return this.alignmentProperties.get (key);\r
-} else {\r
-return null;\r
-}}, "~O");\r
-Clazz.defineMethod (c$, "getProperties", \r
-function () {\r
-return this.alignmentProperties;\r
-});\r
-Clazz.overrideMethod (c$, "addCodonFrame", \r
-function (codons) {\r
-if (codons != null) {\r
-this.codonFrameList.add (codons);\r
-}}, "jalview.datamodel.AlignedCodonFrame");\r
-Clazz.overrideMethod (c$, "getCodonFrame", \r
-function (seq) {\r
-if (seq == null) {\r
-return null;\r
-}var cframes =  new java.util.ArrayList ();\r
-for (var acf, $acf = this.codonFrameList.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {\r
-if (acf.involvesSequence (seq)) {\r
-cframes.add (acf);\r
-}}\r
-return cframes;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.overrideMethod (c$, "setCodonFrames", \r
-function (acfs) {\r
-this.codonFrameList = acfs;\r
-}, "java.util.Set");\r
-Clazz.defineMethod (c$, "getCodonFrames", \r
-function () {\r
-return this.codonFrameList;\r
-});\r
-Clazz.overrideMethod (c$, "removeCodonFrame", \r
-function (codons) {\r
-if (codons == null || this.codonFrameList == null) {\r
-return false;\r
-}return this.codonFrameList.remove (codons);\r
-}, "jalview.datamodel.AlignedCodonFrame");\r
-Clazz.overrideMethod (c$, "append", \r
-function (toappend) {\r
-if (toappend === this) {\r
-System.err.println ("Self append may cause a deadlock.");\r
-}var samegap = toappend.getGapCharacter () == this.getGapCharacter ();\r
-var oldc = toappend.getGapCharacter ();\r
-var hashidden = toappend.getHiddenSequences () != null && toappend.getHiddenSequences ().hiddenSequences != null;\r
-var sqs = (hashidden) ? toappend.getHiddenSequences ().getFullAlignment ().getSequences () : toappend.getSequences ();\r
-if (sqs != null) {\r
-{\r
-for (var addedsq, $addedsq = sqs.iterator (); $addedsq.hasNext () && ((addedsq = $addedsq.next ()) || true);) {\r
-if (!samegap) {\r
-var oldseq = addedsq.getSequence ();\r
-for (var c = 0; c < oldseq.length; c++) {\r
-if (oldseq[c] == oldc) {\r
-oldseq[c] = this.gapCharacter;\r
-}}\r
-}this.addSequence (addedsq);\r
-}\r
-}}var alan = toappend.getAlignmentAnnotation ();\r
-for (var a = 0; alan != null && a < alan.length; a++) {\r
-this.addAnnotation (alan[a]);\r
-}\r
-this.codonFrameList.addAll (toappend.getCodonFrames ());\r
-var sg = toappend.getGroups ();\r
-if (sg != null) {\r
-for (var _sg, $_sg = sg.iterator (); $_sg.hasNext () && ((_sg = $_sg.next ()) || true);) {\r
-this.addGroup (_sg);\r
-}\r
-}if (toappend.getHiddenSequences () != null) {\r
-var hs = toappend.getHiddenSequences ();\r
-if (this.hiddenSequences == null) {\r
-this.hiddenSequences =  new jalview.datamodel.HiddenSequences (this);\r
-}if (hs.hiddenSequences != null) {\r
-for (var s = 0; s < hs.hiddenSequences.length; s++) {\r
-if (hs.hiddenSequences[s] != null) {\r
-this.hiddenSequences.hideSequence (hs.hiddenSequences[s]);\r
-}}\r
-}}if (toappend.getProperties () != null) {\r
-var key = toappend.getProperties ().keys ();\r
-while (key.hasMoreElements ()) {\r
-var k = key.nextElement ();\r
-var ourval = this.getProperty (k);\r
-var toapprop = toappend.getProperty (k);\r
-if (ourval != null) {\r
-if (ourval.getClass ().equals (toapprop.getClass ()) && !ourval.equals (toapprop)) {\r
-if (Clazz.instanceOf (ourval, String)) {\r
-this.setProperty (k, (ourval) + "; " + (toapprop));\r
-} else {\r
-if (Clazz.instanceOf (ourval, java.util.Vector)) {\r
-var theirv = (toapprop).elements ();\r
-while (theirv.hasMoreElements ()) {\r
-(ourval).addElement (theirv);\r
-}\r
-}}}} else {\r
-this.setProperty (k, toapprop);\r
-}}\r
-}}, "jalview.datamodel.AlignmentI");\r
-Clazz.overrideMethod (c$, "findOrCreateAnnotation", \r
-function (name, calcId, autoCalc, seqRef, groupRef) {\r
-if (this.annotations != null) {\r
-for (var annot, $annot = 0, $$annot = this.getAlignmentAnnotation (); $annot < $$annot.length && ((annot = $$annot[$annot]) || true); $annot++) {\r
-if (annot.autoCalculated == autoCalc && (name.equals (annot.label)) && (calcId == null || annot.getCalcId ().equals (calcId)) && annot.sequenceRef === seqRef && annot.groupRef === groupRef) {\r
-return annot;\r
-}}\r
-}var annot =  new jalview.datamodel.AlignmentAnnotation (name, name,  new Array (1), 0, 0, 1);\r
-annot.hasText = false;\r
-annot.setCalcId ( String.instantialize (calcId));\r
-annot.autoCalculated = autoCalc;\r
-if (seqRef != null) {\r
-annot.setSequenceRef (seqRef);\r
-}annot.groupRef = groupRef;\r
-this.addAnnotation (annot);\r
-return annot;\r
-}, "~S,~S,~B,jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");\r
-Clazz.overrideMethod (c$, "findAnnotation", \r
-function (calcId) {\r
-var aa =  new java.util.ArrayList ();\r
-for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {\r
-if (a.getCalcId () === calcId || (a.getCalcId () != null && calcId != null && a.getCalcId ().equals (calcId))) {\r
-aa.add (a);\r
-}}\r
-return aa;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "findAnnotations", \r
-function (seq, calcId, label) {\r
-var aa =  new java.util.ArrayList ();\r
-for (var ann, $ann = 0, $$ann = this.getAlignmentAnnotation (); $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {\r
-if (ann.getCalcId () != null && ann.getCalcId ().equals (calcId) && ann.sequenceRef != null && ann.sequenceRef === seq && ann.label != null && ann.label.equals (label)) {\r
-aa.add (ann);\r
-}}\r
-return aa;\r
-}, "jalview.datamodel.SequenceI,~S,~S");\r
-Clazz.overrideMethod (c$, "moveSelectedSequencesByOne", \r
-function (sg, map, up) {\r
-{\r
-if (up) {\r
-for (var i = 1, iSize = this.sequences.size (); i < iSize; i++) {\r
-var seq = this.sequences.get (i);\r
-if (!sg.getSequences (map).contains (seq)) {\r
-continue;\r
-}var temp = this.sequences.get (i - 1);\r
-if (sg.getSequences (null).contains (temp)) {\r
-continue;\r
-}this.sequences.set (i, temp);\r
-this.sequences.set (i - 1, seq);\r
-}\r
-} else {\r
-for (var i = this.sequences.size () - 2; i > -1; i--) {\r
-var seq = this.sequences.get (i);\r
-if (!sg.getSequences (map).contains (seq)) {\r
-continue;\r
-}var temp = this.sequences.get (i + 1);\r
-if (sg.getSequences (map).contains (temp)) {\r
-continue;\r
-}this.sequences.set (i, temp);\r
-this.sequences.set (i + 1, seq);\r
-}\r
-}}}, "jalview.datamodel.SequenceGroup,java.util.Map,~B");\r
-Clazz.overrideMethod (c$, "validateAnnotation", \r
-function (alignmentAnnotation) {\r
-alignmentAnnotation.validateRangeAndDisplay ();\r
-if (this.isNucleotide () && alignmentAnnotation.isValidStruc ()) {\r
-this.$hasRNAStructure = true;\r
-}}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.overrideMethod (c$, "getSeqrep", \r
-function () {\r
-return this.seqrep;\r
-});\r
-Clazz.overrideMethod (c$, "setSeqrep", \r
-function (seqrep) {\r
-this.seqrep = seqrep;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.overrideMethod (c$, "hasSeqrep", \r
-function () {\r
-return this.seqrep != null;\r
-});\r
-Clazz.overrideMethod (c$, "getEndRes", \r
-function () {\r
-return this.getWidth () - 1;\r
-});\r
-Clazz.overrideMethod (c$, "getStartRes", \r
-function () {\r
-return 0;\r
-});\r
-Clazz.overrideMethod (c$, "getContext", \r
-function () {\r
-return this.dataset;\r
-});\r
-Clazz.defineMethod (c$, "alignAs", \r
-function (al) {\r
-return this.alignAs (al, false, true);\r
-}, "jalview.datamodel.AlignmentI");\r
-Clazz.defineMethod (c$, "alignAs", \r
-function (al, preserveMappedGaps, preserveUnmappedGaps) {\r
-var count = 0;\r
-var thisIsNucleotide = this.isNucleotide ();\r
-var thatIsProtein = !al.isNucleotide ();\r
-if (!thatIsProtein && !thisIsNucleotide) {\r
-return jalview.analysis.AlignmentUtils.alignProteinAsDna (this, al);\r
-}var thisGapChar = this.getGapCharacter ();\r
-var gap = thisIsNucleotide && thatIsProtein ? String.valueOf ( Clazz.newCharArray (-1, [thisGapChar, thisGapChar, thisGapChar])) : String.valueOf (thisGapChar);\r
-for (var alignTo, $alignTo = this.getSequences ().iterator (); $alignTo.hasNext () && ((alignTo = $alignTo.next ()) || true);) {\r
-count += jalview.analysis.AlignmentUtils.alignSequenceAs (alignTo, al, gap, preserveMappedGaps, preserveUnmappedGaps) ? 1 : 0;\r
-}\r
-return count;\r
-}, "jalview.datamodel.AlignmentI,~B,~B");\r
-Clazz.overrideMethod (c$, "getSequenceNames", \r
-function () {\r
-var names =  new java.util.HashSet ();\r
-for (var seq, $seq = this.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-names.add (seq.getName ());\r
-}\r
-return names;\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var seq = this.getSequencesArray ();\r
-{\r
-return "" + JSON.stringify(seq);\r
-}});\r
-Clazz.defineStatics (c$,\r
-"PROTEIN", 0,\r
-"NUCLEOTIDE", 1);\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.AlignmentI", "$.HiddenSequences", "java.util.ArrayList", "$.Collections", "$.LinkedHashSet"], "jalview.datamodel.Alignment", ["jalview.analysis.AlignmentUtils", "jalview.datamodel.AlignmentAnnotation", "$.CigarArray", "$.SeqCigar", "$.Sequence", "jalview.util.Comparison", "$.MessageManager", "java.lang.Error", "java.util.HashSet", "$.Hashtable", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.dataset = null;
+this.sequences = null;
+this.groups = null;
+this.gapCharacter = '-';
+this.type = 1;
+this.$hasRNAStructure = false;
+this.annotations = null;
+this.hiddenSequences = null;
+this.alignmentProperties = null;
+this.codonFrameList = null;
+this.alignmentRefs = 0;
+this.seqrep = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "Alignment", null, jalview.datamodel.AlignmentI);
+Clazz.prepareFields (c$, function () {
+this.groups = java.util.Collections.synchronizedList ( new java.util.ArrayList ());
+this.hiddenSequences =  new jalview.datamodel.HiddenSequences (this);
+this.codonFrameList =  new java.util.LinkedHashSet ();
+});
+Clazz.defineMethod (c$, "initAlignment", 
+($fz = function (seqs) {
+var i = 0;
+if (jalview.util.Comparison.isNucleotide (seqs)) {
+this.type = 1;
+} else {
+this.type = 0;
+}this.sequences = java.util.Collections.synchronizedList ( new java.util.ArrayList ());
+for (i = 0; i < seqs.length; i++) {
+this.sequences.add (seqs[i]);
+}
+}, $fz.isPrivate = true, $fz), "~A");
+Clazz.makeConstructor (c$, 
+function (al) {
+var seqs = al.getSequencesArray ();
+for (var i = 0; i < seqs.length; i++) {
+seqs[i] =  new jalview.datamodel.Sequence (seqs[i]);
+}
+this.codonFrameList = (al).codonFrameList;
+this.initAlignment (seqs);
+}, "jalview.datamodel.AlignmentI");
+Clazz.makeConstructor (c$, 
+function (seqs) {
+this.initAlignment (seqs);
+}, "~A");
+c$.createAlignment = Clazz.defineMethod (c$, "createAlignment", 
+function (compactAlignment) {
+throw  new Error (jalview.util.MessageManager.getString ("error.alignment_cigararray_not_implemented"));
+}, "jalview.datamodel.CigarArray");
+Clazz.defineMethod (c$, "getSequences", 
+function () {
+return this.sequences;
+});
+Clazz.defineMethod (c$, "getSequences", 
+function (hiddenReps) {
+return this.sequences;
+}, "java.util.Map");
+Clazz.defineMethod (c$, "getSequencesArray", 
+function () {
+if (this.sequences == null) {
+return null;
+}{
+return this.sequences.toArray ( new Array (this.sequences.size ()));
+}});
+Clazz.overrideMethod (c$, "getSequencesByName", 
+function () {
+return jalview.analysis.AlignmentUtils.getSequencesByName (this);
+});
+Clazz.overrideMethod (c$, "getSequenceAt", 
+function (i) {
+{
+if (i > -1 && i < this.sequences.size ()) {
+return this.sequences.get (i);
+}}return null;
+}, "~N");
+Clazz.overrideMethod (c$, "addSequence", 
+function (snew) {
+if (this.dataset != null) {
+if (snew.getDatasetSequence () != null) {
+this.getDataset ().addSequence (snew.getDatasetSequence ());
+} else {
+var adding = snew.deriveSequence ();
+this.getDataset ().addSequence (adding.getDatasetSequence ());
+snew = adding;
+}}if (this.sequences == null) {
+this.initAlignment ( Clazz.newArray (-1, [snew]));
+} else {
+{
+this.sequences.add (snew);
+}}if (this.hiddenSequences != null) {
+this.hiddenSequences.adjustHeightSequenceAdded ();
+}}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "setSequenceAt", 
+function (i, snew) {
+{
+this.deleteSequence (i);
+this.sequences.set (i, snew);
+}}, "~N,jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getGroups", 
+function () {
+return this.groups;
+});
+Clazz.overrideMethod (c$, "finalize", 
+function () {
+if (this.getDataset () != null) {
+this.getDataset ().removeAlignmentRef ();
+}this.dataset = null;
+this.sequences = null;
+this.groups = null;
+this.annotations = null;
+this.hiddenSequences = null;
+});
+Clazz.defineMethod (c$, "removeAlignmentRef", 
+($fz = function () {
+if (--this.alignmentRefs == 0) {
+this.finalize ();
+}}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "deleteSequence", 
+function (s) {
+this.deleteSequence (this.findIndex (s));
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "deleteSequence", 
+function (i) {
+if (i > -1 && i < this.getHeight ()) {
+{
+this.sequences.remove (i);
+this.hiddenSequences.adjustHeightSequenceDeleted (i);
+}}}, "~N");
+Clazz.overrideMethod (c$, "findGroup", 
+function (s) {
+{
+for (var i = 0; i < this.groups.size (); i++) {
+var sg = this.groups.get (i);
+if (sg.getSequences (null).contains (s)) {
+return sg;
+}}
+}return null;
+}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "findAllGroups", 
+function (s) {
+var temp =  new java.util.ArrayList ();
+{
+var gSize = this.groups.size ();
+for (var i = 0; i < gSize; i++) {
+var sg = this.groups.get (i);
+if (sg == null || sg.getSequences () == null) {
+this.deleteGroup (sg);
+gSize--;
+continue;
+}if (sg.getSequences ().contains (s)) {
+temp.add (sg);
+}}
+}var ret =  new Array (temp.size ());
+return temp.toArray (ret);
+}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "addGroup", 
+function (sg) {
+{
+if (!this.groups.contains (sg)) {
+if (this.hiddenSequences.getSize () > 0) {
+var i;
+var iSize = sg.getSize ();
+for (i = 0; i < iSize; i++) {
+if (!this.sequences.contains (sg.getSequenceAt (i))) {
+sg.deleteSequence (sg.getSequenceAt (i), false);
+iSize--;
+i--;
+}}
+if (sg.getSize () < 1) {
+return;
+}}sg.setContext (this);
+this.groups.add (sg);
+}}}, "jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "removeAnnotationForGroup", 
+($fz = function (gp) {
+if (this.annotations == null || this.annotations.length == 0) {
+return;
+}var t;
+var todelete =  new Array (this.annotations.length);
+var tokeep =  new Array (this.annotations.length);
+var i;
+var p;
+var k;
+if (gp == null) {
+for (i = 0, p = 0, k = 0; i < this.annotations.length; i++) {
+if (this.annotations[i].groupRef != null) {
+todelete[p++] = this.annotations[i];
+} else {
+tokeep[k++] = this.annotations[i];
+}}
+} else {
+for (i = 0, p = 0, k = 0; i < this.annotations.length; i++) {
+if (this.annotations[i].groupRef === gp) {
+todelete[p++] = this.annotations[i];
+} else {
+tokeep[k++] = this.annotations[i];
+}}
+}if (p > 0) {
+for (i = 0; i < p; i++) {
+this.unhookAnnotation (todelete[i]);
+todelete[i] = null;
+}
+t =  new Array (k);
+for (i = 0; i < k; i++) {
+t[i] = tokeep[i];
+}
+this.annotations = t;
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceGroup");
+Clazz.overrideMethod (c$, "deleteAllGroups", 
+function () {
+{
+if (this.annotations != null) {
+this.removeAnnotationForGroup (null);
+}for (var sg, $sg = this.groups.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+sg.setContext (null);
+}
+this.groups.clear ();
+}});
+Clazz.overrideMethod (c$, "deleteGroup", 
+function (g) {
+{
+if (this.groups.contains (g)) {
+this.removeAnnotationForGroup (g);
+this.groups.remove (g);
+g.setContext (null);
+}}}, "jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "findName", 
+function (name) {
+return this.findName (name, false);
+}, "~S");
+Clazz.defineMethod (c$, "findName", 
+function (token, b) {
+return this.findName (null, token, b);
+}, "~S,~B");
+Clazz.defineMethod (c$, "findName", 
+function (startAfter, token, b) {
+var i = 0;
+var sq = null;
+var sqname = null;
+if (startAfter != null) {
+var matched = false;
+while (i < this.sequences.size ()) {
+if (this.getSequenceAt (i++) === startAfter) {
+matched = true;
+break;
+}}
+if (!matched) {
+i = 0;
+}}while (i < this.sequences.size ()) {
+sq = this.getSequenceAt (i);
+sqname = sq.getName ();
+if (sqname.equals (token) || (b && (sqname.equalsIgnoreCase (token)))) {
+return this.getSequenceAt (i);
+}i++;
+}
+return null;
+}, "jalview.datamodel.SequenceI,~S,~B");
+Clazz.overrideMethod (c$, "findSequenceMatch", 
+function (name) {
+var matches =  new java.util.Vector ();
+var i = 0;
+while (i < this.sequences.size ()) {
+if (this.getSequenceAt (i).getName ().equals (name)) {
+matches.addElement (this.getSequenceAt (i));
+}i++;
+}
+var result =  new Array (matches.size ());
+for (i = 0; i < result.length; i++) {
+result[i] = matches.elementAt (i);
+}
+return result;
+}, "~S");
+Clazz.defineMethod (c$, "findIndex", 
+function (s) {
+var i = 0;
+while (i < this.sequences.size ()) {
+if (s === this.getSequenceAt (i)) {
+return i;
+}i++;
+}
+return -1;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "findIndex", 
+function (results) {
+var i = 0;
+while (i < this.sequences.size ()) {
+if (results.involvesSequence (this.getSequenceAt (i))) {
+return i;
+}i++;
+}
+return -1;
+}, "jalview.datamodel.SearchResults");
+Clazz.overrideMethod (c$, "getHeight", 
+function () {
+return this.sequences.size ();
+});
+Clazz.overrideMethod (c$, "getWidth", 
+function () {
+var maxLength = -1;
+for (var i = 0; i < this.sequences.size (); i++) {
+if (this.getSequenceAt (i).getLength () > maxLength) {
+maxLength = this.getSequenceAt (i).getLength ();
+}}
+return maxLength;
+});
+Clazz.overrideMethod (c$, "setGapCharacter", 
+function (gc) {
+this.gapCharacter = gc;
+{
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+seq.setSequence (seq.getSequenceAsString ().$replace ('.', gc).$replace ('-', gc).$replace (' ', gc));
+}
+}}, "~S");
+Clazz.defineMethod (c$, "getGapCharacter", 
+function () {
+return this.gapCharacter;
+});
+Clazz.defineMethod (c$, "isAligned", 
+function () {
+return this.isAligned (false);
+});
+Clazz.defineMethod (c$, "isAligned", 
+function (includeHidden) {
+var width = this.getWidth ();
+if (this.hiddenSequences == null || this.hiddenSequences.getSize () == 0) {
+includeHidden = true;
+}for (var i = 0; i < this.sequences.size (); i++) {
+if (includeHidden || !this.hiddenSequences.isHidden (this.getSequenceAt (i))) {
+if (this.getSequenceAt (i).getLength () != width) {
+return false;
+}}}
+return true;
+}, "~B");
+Clazz.overrideMethod (c$, "deleteAllAnnotations", 
+function (includingAutoCalculated) {
+var result = false;
+for (var alan, $alan = 0, $$alan = this.getAlignmentAnnotation (); $alan < $$alan.length && ((alan = $$alan[$alan]) || true); $alan++) {
+if (!alan.autoCalculated || includingAutoCalculated) {
+this.deleteAnnotation (alan);
+result = true;
+}}
+return result;
+}, "~B");
+Clazz.defineMethod (c$, "deleteAnnotation", 
+function (aa) {
+return this.deleteAnnotation (aa, true);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "deleteAnnotation", 
+function (aa, unhook) {
+var aSize = 1;
+if (this.annotations != null) {
+aSize = this.annotations.length;
+}if (aSize < 1) {
+return false;
+}var temp =  new Array (aSize - 1);
+var swap = false;
+var tIndex = 0;
+for (var i = 0; i < aSize; i++) {
+if (this.annotations[i] === aa) {
+swap = true;
+continue;
+}if (tIndex < temp.length) {
+temp[tIndex++] = this.annotations[i];
+}}
+if (swap) {
+this.annotations = temp;
+if (unhook) {
+this.unhookAnnotation (aa);
+}}return swap;
+}, "jalview.datamodel.AlignmentAnnotation,~B");
+Clazz.defineMethod (c$, "unhookAnnotation", 
+($fz = function (aa) {
+if (aa.sequenceRef != null) {
+aa.sequenceRef.removeAlignmentAnnotation (aa);
+}if (aa.groupRef != null) {
+aa.groupRef = null;
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "addAnnotation", 
+function (aa) {
+this.addAnnotation (aa, -1);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "addAnnotation", 
+function (aa, pos) {
+if (aa.getRNAStruc () != null) {
+this.$hasRNAStructure = true;
+}var aSize = 1;
+if (this.annotations != null) {
+aSize = this.annotations.length + 1;
+}var temp =  new Array (aSize);
+var i = 0;
+if (pos == -1 || pos >= aSize) {
+temp[aSize - 1] = aa;
+} else {
+temp[pos] = aa;
+}if (aSize > 1) {
+var p = 0;
+for (i = 0; i < (aSize - 1); i++, p++) {
+if (p == pos) {
+p++;
+}if (p < temp.length) {
+temp[p] = this.annotations[i];
+}}
+}this.annotations = temp;
+}, "jalview.datamodel.AlignmentAnnotation,~N");
+Clazz.overrideMethod (c$, "setAnnotationIndex", 
+function (aa, index) {
+if (aa == null || this.annotations == null || this.annotations.length - 1 < index) {
+return;
+}var aSize = this.annotations.length;
+var temp =  new Array (aSize);
+temp[index] = aa;
+for (var i = 0; i < aSize; i++) {
+if (i == index) {
+continue;
+}if (i < index) {
+temp[i] = this.annotations[i];
+} else {
+temp[i] = this.annotations[i - 1];
+}}
+this.annotations = temp;
+}, "jalview.datamodel.AlignmentAnnotation,~N");
+Clazz.defineMethod (c$, "getAlignmentAnnotation", 
+function () {
+return this.annotations;
+});
+Clazz.overrideMethod (c$, "setNucleotide", 
+function (b) {
+if (b) {
+this.type = 1;
+} else {
+this.type = 0;
+}}, "~B");
+Clazz.defineMethod (c$, "isNucleotide", 
+function () {
+if (this.type == 1) {
+return true;
+} else {
+return false;
+}});
+Clazz.overrideMethod (c$, "hasRNAStructure", 
+function () {
+return this.$hasRNAStructure;
+});
+Clazz.overrideMethod (c$, "setDataset", 
+function (data) {
+if (this.dataset == null && data == null) {
+var seqs =  new Array (this.getHeight ());
+var currentSeq;
+for (var i = 0; i < this.getHeight (); i++) {
+currentSeq = this.getSequenceAt (i);
+if (currentSeq.getDatasetSequence () != null) {
+seqs[i] = currentSeq.getDatasetSequence ();
+} else {
+seqs[i] = currentSeq.createDatasetSequence ();
+}}
+this.dataset =  new jalview.datamodel.Alignment (seqs);
+} else if (this.dataset == null && data != null) {
+this.dataset = data;
+for (var i = 0; i < this.getHeight (); i++) {
+var currentSeq = this.getSequenceAt (i);
+var dsq = currentSeq.getDatasetSequence ();
+if (dsq == null) {
+dsq = currentSeq.createDatasetSequence ();
+this.dataset.addSequence (dsq);
+} else {
+while (dsq.getDatasetSequence () != null) {
+dsq = dsq.getDatasetSequence ();
+}
+if (this.dataset.findIndex (dsq) == -1) {
+this.dataset.addSequence (dsq);
+}}}
+}this.dataset.addAlignmentRef ();
+}, "jalview.datamodel.Alignment");
+Clazz.defineMethod (c$, "addAlignmentRef", 
+($fz = function () {
+this.alignmentRefs++;
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "getDataset", 
+function () {
+return this.dataset;
+});
+Clazz.overrideMethod (c$, "padGaps", 
+function () {
+var modified = false;
+var maxLength = -1;
+var current;
+for (var i = 0; i < this.sequences.size (); i++) {
+current = this.getSequenceAt (i);
+for (var j = current.getLength (); j > maxLength; j--) {
+if (j > maxLength && !jalview.util.Comparison.isGap (current.getCharAt (j))) {
+maxLength = j;
+break;
+}}
+}
+maxLength++;
+var cLength;
+for (var i = 0; i < this.sequences.size (); i++) {
+current = this.getSequenceAt (i);
+cLength = current.getLength ();
+if (cLength < maxLength) {
+current.insertCharAt (cLength, maxLength - cLength, this.gapCharacter);
+modified = true;
+} else if (current.getLength () > maxLength) {
+current.deleteChars (maxLength, current.getLength ());
+}}
+return modified;
+});
+Clazz.overrideMethod (c$, "justify", 
+function (right) {
+var modified = false;
+var maxLength = -1;
+var ends =  Clazz.newIntArray (this.sequences.size () * 2, 0);
+var current;
+for (var i = 0; i < this.sequences.size (); i++) {
+current = this.getSequenceAt (i);
+ends[i * 2] = current.findIndex (current.getStart ());
+ends[i * 2 + 1] = current.findIndex (current.getStart () + current.getLength ());
+var hitres = false;
+for (var j = 0, rs = 0, ssiz = current.getLength (); j < ssiz; j++) {
+if (!jalview.util.Comparison.isGap (current.getCharAt (j))) {
+if (!hitres) {
+ends[i * 2] = j;
+hitres = true;
+} else {
+ends[i * 2 + 1] = j;
+if (j - ends[i * 2] > maxLength) {
+maxLength = j - ends[i * 2];
+}}}}
+}
+maxLength++;
+var cLength;
+var extent;
+var diff;
+for (var i = 0; i < this.sequences.size (); i++) {
+current = this.getSequenceAt (i);
+cLength = 1 + ends[i * 2 + 1] - ends[i * 2];
+diff = maxLength - cLength;
+extent = current.getLength ();
+if (right) {
+if (extent > ends[i * 2 + 1]) {
+current.deleteChars (ends[i * 2 + 1] + 1, extent);
+modified = true;
+}if (ends[i * 2] > diff) {
+current.deleteChars (0, ends[i * 2] - diff);
+modified = true;
+} else {
+if (ends[i * 2] < diff) {
+current.insertCharAt (0, diff - ends[i * 2], this.gapCharacter);
+modified = true;
+}}} else {
+if (ends[i * 2] > 0) {
+current.deleteChars (0, ends[i * 2]);
+modified = true;
+ends[i * 2 + 1] -= ends[i * 2];
+extent -= ends[i * 2];
+}if (extent > maxLength) {
+current.deleteChars (maxLength + 1, extent);
+modified = true;
+} else {
+if (extent < maxLength) {
+current.insertCharAt (extent, maxLength - extent, this.gapCharacter);
+modified = true;
+}}}}
+return modified;
+}, "~B");
+Clazz.defineMethod (c$, "getHiddenSequences", 
+function () {
+return this.hiddenSequences;
+});
+Clazz.overrideMethod (c$, "getCompactAlignment", 
+function () {
+{
+var alseqs =  new Array (this.sequences.size ());
+var i = 0;
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+alseqs[i++] =  new jalview.datamodel.SeqCigar (seq);
+}
+var cal =  new jalview.datamodel.CigarArray (alseqs);
+cal.addOperation ('M', this.getWidth ());
+return cal;
+}});
+Clazz.overrideMethod (c$, "setProperty", 
+function (key, value) {
+if (this.alignmentProperties == null) {
+this.alignmentProperties =  new java.util.Hashtable ();
+}this.alignmentProperties.put (key, value);
+}, "~O,~O");
+Clazz.defineMethod (c$, "getProperty", 
+function (key) {
+if (this.alignmentProperties != null) {
+return this.alignmentProperties.get (key);
+} else {
+return null;
+}}, "~O");
+Clazz.defineMethod (c$, "getProperties", 
+function () {
+return this.alignmentProperties;
+});
+Clazz.overrideMethod (c$, "addCodonFrame", 
+function (codons) {
+if (codons != null) {
+this.codonFrameList.add (codons);
+}}, "jalview.datamodel.AlignedCodonFrame");
+Clazz.overrideMethod (c$, "getCodonFrame", 
+function (seq) {
+if (seq == null) {
+return null;
+}var cframes =  new java.util.ArrayList ();
+for (var acf, $acf = this.codonFrameList.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+if (acf.involvesSequence (seq)) {
+cframes.add (acf);
+}}
+return cframes;
+}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "setCodonFrames", 
+function (acfs) {
+this.codonFrameList = acfs;
+}, "java.util.Set");
+Clazz.defineMethod (c$, "getCodonFrames", 
+function () {
+return this.codonFrameList;
+});
+Clazz.overrideMethod (c$, "removeCodonFrame", 
+function (codons) {
+if (codons == null || this.codonFrameList == null) {
+return false;
+}return this.codonFrameList.remove (codons);
+}, "jalview.datamodel.AlignedCodonFrame");
+Clazz.overrideMethod (c$, "append", 
+function (toappend) {
+if (toappend === this) {
+System.err.println ("Self append may cause a deadlock.");
+}var samegap = toappend.getGapCharacter () == this.getGapCharacter ();
+var oldc = toappend.getGapCharacter ();
+var hashidden = toappend.getHiddenSequences () != null && toappend.getHiddenSequences ().hiddenSequences != null;
+var sqs = (hashidden) ? toappend.getHiddenSequences ().getFullAlignment ().getSequences () : toappend.getSequences ();
+if (sqs != null) {
+{
+for (var addedsq, $addedsq = sqs.iterator (); $addedsq.hasNext () && ((addedsq = $addedsq.next ()) || true);) {
+if (!samegap) {
+var oldseq = addedsq.getSequence ();
+for (var c = 0; c < oldseq.length; c++) {
+if (oldseq[c] == oldc) {
+oldseq[c] = this.gapCharacter;
+}}
+}this.addSequence (addedsq);
+}
+}}var alan = toappend.getAlignmentAnnotation ();
+for (var a = 0; alan != null && a < alan.length; a++) {
+this.addAnnotation (alan[a]);
+}
+this.codonFrameList.addAll (toappend.getCodonFrames ());
+var sg = toappend.getGroups ();
+if (sg != null) {
+for (var _sg, $_sg = sg.iterator (); $_sg.hasNext () && ((_sg = $_sg.next ()) || true);) {
+this.addGroup (_sg);
+}
+}if (toappend.getHiddenSequences () != null) {
+var hs = toappend.getHiddenSequences ();
+if (this.hiddenSequences == null) {
+this.hiddenSequences =  new jalview.datamodel.HiddenSequences (this);
+}if (hs.hiddenSequences != null) {
+for (var s = 0; s < hs.hiddenSequences.length; s++) {
+if (hs.hiddenSequences[s] != null) {
+this.hiddenSequences.hideSequence (hs.hiddenSequences[s]);
+}}
+}}if (toappend.getProperties () != null) {
+var key = toappend.getProperties ().keys ();
+while (key.hasMoreElements ()) {
+var k = key.nextElement ();
+var ourval = this.getProperty (k);
+var toapprop = toappend.getProperty (k);
+if (ourval != null) {
+if (ourval.getClass ().equals (toapprop.getClass ()) && !ourval.equals (toapprop)) {
+if (Clazz.instanceOf (ourval, String)) {
+this.setProperty (k, (ourval) + "; " + (toapprop));
+} else {
+if (Clazz.instanceOf (ourval, java.util.Vector)) {
+var theirv = (toapprop).elements ();
+while (theirv.hasMoreElements ()) {
+(ourval).addElement (theirv);
+}
+}}}} else {
+this.setProperty (k, toapprop);
+}}
+}}, "jalview.datamodel.AlignmentI");
+Clazz.overrideMethod (c$, "findOrCreateAnnotation", 
+function (name, calcId, autoCalc, seqRef, groupRef) {
+if (this.annotations != null) {
+for (var annot, $annot = 0, $$annot = this.getAlignmentAnnotation (); $annot < $$annot.length && ((annot = $$annot[$annot]) || true); $annot++) {
+if (annot.autoCalculated == autoCalc && (name.equals (annot.label)) && (calcId == null || annot.getCalcId ().equals (calcId)) && annot.sequenceRef === seqRef && annot.groupRef === groupRef) {
+return annot;
+}}
+}var annot =  new jalview.datamodel.AlignmentAnnotation (name, name,  new Array (1), 0, 0, 1);
+annot.hasText = false;
+annot.setCalcId ( String.instantialize (calcId));
+annot.autoCalculated = autoCalc;
+if (seqRef != null) {
+annot.setSequenceRef (seqRef);
+}annot.groupRef = groupRef;
+this.addAnnotation (annot);
+return annot;
+}, "~S,~S,~B,jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");
+Clazz.overrideMethod (c$, "findAnnotation", 
+function (calcId) {
+var aa =  new java.util.ArrayList ();
+for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {
+if (a.getCalcId () === calcId || (a.getCalcId () != null && calcId != null && a.getCalcId ().equals (calcId))) {
+aa.add (a);
+}}
+return aa;
+}, "~S");
+Clazz.overrideMethod (c$, "findAnnotations", 
+function (seq, calcId, label) {
+var aa =  new java.util.ArrayList ();
+for (var ann, $ann = 0, $$ann = this.getAlignmentAnnotation (); $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {
+if (ann.getCalcId () != null && ann.getCalcId ().equals (calcId) && ann.sequenceRef != null && ann.sequenceRef === seq && ann.label != null && ann.label.equals (label)) {
+aa.add (ann);
+}}
+return aa;
+}, "jalview.datamodel.SequenceI,~S,~S");
+Clazz.overrideMethod (c$, "moveSelectedSequencesByOne", 
+function (sg, map, up) {
+{
+if (up) {
+for (var i = 1, iSize = this.sequences.size (); i < iSize; i++) {
+var seq = this.sequences.get (i);
+if (!sg.getSequences (map).contains (seq)) {
+continue;
+}var temp = this.sequences.get (i - 1);
+if (sg.getSequences (null).contains (temp)) {
+continue;
+}this.sequences.set (i, temp);
+this.sequences.set (i - 1, seq);
+}
+} else {
+for (var i = this.sequences.size () - 2; i > -1; i--) {
+var seq = this.sequences.get (i);
+if (!sg.getSequences (map).contains (seq)) {
+continue;
+}var temp = this.sequences.get (i + 1);
+if (sg.getSequences (map).contains (temp)) {
+continue;
+}this.sequences.set (i, temp);
+this.sequences.set (i + 1, seq);
+}
+}}}, "jalview.datamodel.SequenceGroup,java.util.Map,~B");
+Clazz.overrideMethod (c$, "validateAnnotation", 
+function (alignmentAnnotation) {
+alignmentAnnotation.validateRangeAndDisplay ();
+if (this.isNucleotide () && alignmentAnnotation.isValidStruc ()) {
+this.$hasRNAStructure = true;
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.overrideMethod (c$, "getSeqrep", 
+function () {
+return this.seqrep;
+});
+Clazz.overrideMethod (c$, "setSeqrep", 
+function (seqrep) {
+this.seqrep = seqrep;
+}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "hasSeqrep", 
+function () {
+return this.seqrep != null;
+});
+Clazz.overrideMethod (c$, "getEndRes", 
+function () {
+return this.getWidth () - 1;
+});
+Clazz.overrideMethod (c$, "getStartRes", 
+function () {
+return 0;
+});
+Clazz.overrideMethod (c$, "getContext", 
+function () {
+return this.dataset;
+});
+Clazz.defineMethod (c$, "alignAs", 
+function (al) {
+return this.alignAs (al, false, true);
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "alignAs", 
+function (al, preserveMappedGaps, preserveUnmappedGaps) {
+var count = 0;
+var thisIsNucleotide = this.isNucleotide ();
+var thatIsProtein = !al.isNucleotide ();
+if (!thatIsProtein && !thisIsNucleotide) {
+return jalview.analysis.AlignmentUtils.alignProteinAsDna (this, al);
+}var thisGapChar = this.getGapCharacter ();
+var gap = thisIsNucleotide && thatIsProtein ? String.valueOf ( Clazz.newCharArray (-1, [thisGapChar, thisGapChar, thisGapChar])) : String.valueOf (thisGapChar);
+for (var alignTo, $alignTo = this.getSequences ().iterator (); $alignTo.hasNext () && ((alignTo = $alignTo.next ()) || true);) {
+count += jalview.analysis.AlignmentUtils.alignSequenceAs (alignTo, al, gap, preserveMappedGaps, preserveUnmappedGaps) ? 1 : 0;
+}
+return count;
+}, "jalview.datamodel.AlignmentI,~B,~B");
+Clazz.overrideMethod (c$, "getSequenceNames", 
+function () {
+var names =  new java.util.HashSet ();
+for (var seq, $seq = this.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+names.add (seq.getName ());
+}
+return names;
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var seq = this.getSequencesArray ();
+{
+return "" + JSON.stringify(seq);
+}});
+Clazz.defineStatics (c$,
+"PROTEIN", 0,
+"NUCLEOTIDE", 1);
+});
index 840fdf1..88e30db 100644 (file)
Binary files a/bin/jalview/datamodel/AlignmentAnnotation.class and b/bin/jalview/datamodel/AlignmentAnnotation.class differ
index 0be7f1c..e321a8d 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["java.util.HashMap"], "jalview.datamodel.AlignmentAnnotation", ["jalview.analysis.Rna", "jalview.datamodel.Annotation", "$.GraphLine", "jalview.schemes.ResidueProperties", "java.lang.Double", "$.Error", "$.Long", "$.StringBuffer", "$.StringBuilder", "java.util.Collections"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.autoCalculated = false;\r
-this.annotationId = null;\r
-this.sequenceRef = null;\r
-this.label = null;\r
-this.description = null;\r
-this.annotations = null;\r
-this.bps = null;\r
-this._rnasecstr = null;\r
-this.invalidrnastruc = -2;\r
-this.sequenceMapping = null;\r
-this.graphMin = 0;\r
-this.graphMax = 0;\r
-this.score = NaN;\r
-this.$hasScore = false;\r
-this.threshold = null;\r
-this.editable = false;\r
-this.hasIcons = false;\r
-this.hasText = false;\r
-this.visible = true;\r
-this.graphGroup = -1;\r
-this.height = 0;\r
-this.graph = 0;\r
-this.graphHeight = 40;\r
-this.padGaps = false;\r
-this.belowAlignment = true;\r
-this.groupRef = null;\r
-this.showAllColLabels = false;\r
-this.scaleColLabel = false;\r
-this.centreColLabels = false;\r
-this.isrna = false;\r
-if (!Clazz.isClassDefined ("jalview.datamodel.AlignmentAnnotation.AnnotCharSequence")) {\r
-jalview.datamodel.AlignmentAnnotation.$AlignmentAnnotation$AnnotCharSequence$ ();\r
-}\r
-this._lastrnaannot = -1;\r
-this.calcId = "";\r
-this.properties = null;\r
-this._linecolour = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "AlignmentAnnotation");\r
-Clazz.prepareFields (c$, function () {\r
-this.properties =  new java.util.HashMap ();\r
-});\r
-Clazz.defineMethod (c$, "_updateRnaSecStr", \r
-($fz = function (RNAannot) {\r
-try {\r
-this._rnasecstr = jalview.analysis.Rna.GetBasePairs (RNAannot);\r
-this.bps = jalview.analysis.Rna.GetModeleBP (RNAannot);\r
-this.invalidrnastruc = -1;\r
-} catch (px) {\r
-if (Clazz.exceptionOf (px, jalview.analysis.WUSSParseException)) {\r
-this.invalidrnastruc = px.getProblemPos ();\r
-} else {\r
-throw px;\r
-}\r
-}\r
-if (this.invalidrnastruc > -1) {\r
-return;\r
-}jalview.analysis.Rna.HelixMap (this._rnasecstr);\r
-if (this._rnasecstr != null && this._rnasecstr.length > 0) {\r
-this.isrna = true;\r
-this.showAllColLabels = true;\r
-this.scaleColLabel = true;\r
-this._markRnaHelices ();\r
-}}, $fz.isPrivate = true, $fz), "CharSequence");\r
-Clazz.defineMethod (c$, "_markRnaHelices", \r
-($fz = function () {\r
-var mxval = 0;\r
-for (var x = 0; x < this._rnasecstr.length; x++) {\r
-var val = 0;\r
-try {\r
-val = (Integer.$valueOf (this._rnasecstr[x].getFeatureGroup ())).intValue ();\r
-if (mxval < val) {\r
-mxval = val;\r
-}} catch (q) {\r
-if (Clazz.exceptionOf (q, NumberFormatException)) {\r
-} else {\r
-throw q;\r
-}\r
-}\r
-;this.annotations[this._rnasecstr[x].getBegin ()].value = val;\r
-this.annotations[this._rnasecstr[x].getEnd ()].value = val;\r
-}\r
-this.setScore (mxval);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "finalize", \r
-function () {\r
-this.sequenceRef = null;\r
-this.groupRef = null;\r
-Clazz.superCall (this, jalview.datamodel.AlignmentAnnotation, "finalize", []);\r
-});\r
-c$.getGraphValueFromString = Clazz.defineMethod (c$, "getGraphValueFromString", \r
-function (string) {\r
-if (string.equalsIgnoreCase ("BAR_GRAPH")) {\r
-return 1;\r
-} else if (string.equalsIgnoreCase ("LINE_GRAPH")) {\r
-return 2;\r
-} else {\r
-return 0;\r
-}}, "~S");\r
-Clazz.defineMethod (c$, "ConcenStru", \r
-function (RNAannot) {\r
-this.bps = jalview.analysis.Rna.GetModeleBP (RNAannot);\r
-}, "CharSequence");\r
-Clazz.makeConstructor (c$, \r
-function (label, description, annotations) {\r
-this.setAnnotationId ();\r
-this.editable = true;\r
-this.label = label;\r
-this.description = description;\r
-this.annotations = annotations;\r
-this.validateRangeAndDisplay ();\r
-}, "~S,~S,~A");\r
-Clazz.defineMethod (c$, "areLabelsSecondaryStructure", \r
-function () {\r
-var nonSSLabel = false;\r
-this.isrna = false;\r
-var rnastring =  new StringBuffer ();\r
-var firstChar = String.fromCharCode (0);\r
-for (var i = 0; i < this.annotations.length; i++) {\r
-if (this.annotations[i] == null) {\r
-continue;\r
-}if (this.annotations[i].secondaryStructure == 'H' || this.annotations[i].secondaryStructure == 'E') {\r
-this.hasIcons = new Boolean (this.hasIcons | true).valueOf ();\r
-} else {\r
-if (this.annotations[i].secondaryStructure == '(' || this.annotations[i].secondaryStructure == '[' || this.annotations[i].secondaryStructure == '<' || this.annotations[i].secondaryStructure == '{' || this.annotations[i].secondaryStructure == 'A' || this.annotations[i].secondaryStructure == 'B' || this.annotations[i].secondaryStructure == 'C' || this.annotations[i].secondaryStructure == 'D' || this.annotations[i].secondaryStructure == 'E' || this.annotations[i].secondaryStructure == 'F' || this.annotations[i].secondaryStructure == 'G' || this.annotations[i].secondaryStructure == 'H' || this.annotations[i].secondaryStructure == 'I' || this.annotations[i].secondaryStructure == 'J' || this.annotations[i].secondaryStructure == 'K' || this.annotations[i].secondaryStructure == 'L' || this.annotations[i].secondaryStructure == 'M' || this.annotations[i].secondaryStructure == 'N' || this.annotations[i].secondaryStructure == 'O' || this.annotations[i].secondaryStructure == 'P' || this.annotations[i].secondaryStructure == 'Q' || this.annotations[i].secondaryStructure == 'R' || this.annotations[i].secondaryStructure == 'S' || this.annotations[i].secondaryStructure == 'T' || this.annotations[i].secondaryStructure == 'U' || this.annotations[i].secondaryStructure == 'V' || this.annotations[i].secondaryStructure == 'W' || this.annotations[i].secondaryStructure == 'X' || this.annotations[i].secondaryStructure == 'Y' || this.annotations[i].secondaryStructure == 'Z') {\r
-this.hasIcons = new Boolean (this.hasIcons | true).valueOf ();\r
-this.isrna = new Boolean (this.isrna | true).valueOf ();\r
-}}if (this.annotations[i].displayCharacter == null || this.annotations[i].displayCharacter.length == 0) {\r
-rnastring.append ('.');\r
-continue;\r
-}if (this.annotations[i].displayCharacter.length == 1) {\r
-firstChar = this.annotations[i].displayCharacter.charAt (0);\r
-if (this.annotations[i].secondaryStructure != ' ' && !this.hasIcons && firstChar != ' ' && firstChar != '$' && firstChar.charCodeAt (0) != 0xCE && firstChar != '(' && firstChar != '[' && firstChar != '>' && firstChar != '{' && firstChar != 'A' && firstChar != 'B' && firstChar != 'C' && firstChar != 'D' && firstChar != 'E' && firstChar != 'F' && firstChar != 'G' && firstChar != 'H' && firstChar != 'I' && firstChar != 'J' && firstChar != 'K' && firstChar != 'L' && firstChar != 'M' && firstChar != 'N' && firstChar != 'O' && firstChar != 'P' && firstChar != 'Q' && firstChar != 'R' && firstChar != 'S' && firstChar != 'T' && firstChar != 'U' && firstChar != 'V' && firstChar != 'W' && firstChar != 'X' && firstChar != 'Y' && firstChar != 'Z' && firstChar != '-' && firstChar.charCodeAt (0) < jalview.schemes.ResidueProperties.aaIndex.length) {\r
-if (jalview.schemes.ResidueProperties.aaIndex[firstChar.charCodeAt (0)] < 23) {\r
-nonSSLabel = true;\r
-}}} else {\r
-rnastring.append (this.annotations[i].displayCharacter.charAt (1));\r
-}if (this.annotations[i].displayCharacter.length > 0) {\r
-this.hasText = true;\r
-}}\r
-if (nonSSLabel) {\r
-this.hasIcons = false;\r
-for (var j = 0; j < this.annotations.length; j++) {\r
-if (this.annotations[j] != null && this.annotations[j].secondaryStructure != ' ') {\r
-this.annotations[j].displayCharacter = String.valueOf (this.annotations[j].secondaryStructure);\r
-this.annotations[j].secondaryStructure = ' ';\r
-}}\r
-} else {\r
-if (this.isrna) {\r
-this._updateRnaSecStr (Clazz.innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null));\r
-}}});\r
-Clazz.defineMethod (c$, "getRNAStruc", \r
-function () {\r
-if (this.isrna) {\r
-var rnastruc = Clazz.innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null).toString ();\r
-if (this._lastrnaannot != rnastruc.hashCode ()) {\r
-this._lastrnaannot = rnastruc.hashCode ();\r
-this._updateRnaSecStr (rnastruc);\r
-}return rnastruc;\r
-}return null;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (label, description, annotations, min, max, graphType) {\r
-this.setAnnotationId ();\r
-this.editable = graphType == 0;\r
-this.label = label;\r
-this.description = description;\r
-this.annotations = annotations;\r
-this.graph = graphType;\r
-this.graphMin = min;\r
-this.graphMax = max;\r
-this.validateRangeAndDisplay ();\r
-}, "~S,~S,~A,~N,~N,~N");\r
-Clazz.defineMethod (c$, "validateRangeAndDisplay", \r
-function () {\r
-if (this.annotations == null) {\r
-this.visible = false;\r
-return;\r
-}var graphType = this.graph;\r
-var min = this.graphMin;\r
-var max = this.graphMax;\r
-var drawValues = true;\r
-this._linecolour = null;\r
-if (min == max) {\r
-min = 999999999;\r
-for (var i = 0; i < this.annotations.length; i++) {\r
-if (this.annotations[i] == null) {\r
-continue;\r
-}if (drawValues && this.annotations[i].displayCharacter != null && this.annotations[i].displayCharacter.length > 1) {\r
-drawValues = false;\r
-}if (this.annotations[i].value > max) {\r
-max = this.annotations[i].value;\r
-}if (this.annotations[i].value < min) {\r
-min = this.annotations[i].value;\r
-}if (this._linecolour == null && this.annotations[i].colour != null) {\r
-this._linecolour = this.annotations[i].colour;\r
-}}\r
-if (min > 0) {\r
-min = 0;\r
-} else {\r
-if (max < 0) {\r
-max = 0;\r
-}}}this.graphMin = min;\r
-this.graphMax = max;\r
-this.areLabelsSecondaryStructure ();\r
-if (!drawValues && graphType != 0) {\r
-for (var i = 0; i < this.annotations.length; i++) {\r
-if (this.annotations[i] != null) {\r
-this.annotations[i].displayCharacter = "";\r
-}}\r
-}});\r
-Clazz.makeConstructor (c$, \r
-function (annotation) {\r
-this.setAnnotationId ();\r
-this.label =  String.instantialize (annotation.label);\r
-if (annotation.description != null) {\r
-this.description =  String.instantialize (annotation.description);\r
-}this.graphMin = annotation.graphMin;\r
-this.graphMax = annotation.graphMax;\r
-this.graph = annotation.graph;\r
-this.graphHeight = annotation.graphHeight;\r
-this.graphGroup = annotation.graphGroup;\r
-this.groupRef = annotation.groupRef;\r
-this.editable = annotation.editable;\r
-this.autoCalculated = annotation.autoCalculated;\r
-this.hasIcons = annotation.hasIcons;\r
-this.hasText = annotation.hasText;\r
-this.height = annotation.height;\r
-this.label = annotation.label;\r
-this.padGaps = annotation.padGaps;\r
-this.visible = annotation.visible;\r
-this.centreColLabels = annotation.centreColLabels;\r
-this.scaleColLabel = annotation.scaleColLabel;\r
-this.showAllColLabels = annotation.showAllColLabels;\r
-this.calcId = annotation.calcId;\r
-if (annotation.properties != null) {\r
-this.properties =  new java.util.HashMap ();\r
-for (var val, $val = annotation.properties.entrySet ().iterator (); $val.hasNext () && ((val = $val.next ()) || true);) {\r
-this.properties.put (val.getKey (), val.getValue ());\r
-}\r
-}if (this.$hasScore = annotation.$hasScore) {\r
-this.score = annotation.score;\r
-}if (annotation.threshold != null) {\r
-this.threshold =  new jalview.datamodel.GraphLine (annotation.threshold);\r
-}var ann = annotation.annotations;\r
-if (annotation.annotations != null) {\r
-this.annotations =  new Array (ann.length);\r
-for (var i = 0; i < ann.length; i++) {\r
-if (ann[i] != null) {\r
-this.annotations[i] =  new jalview.datamodel.Annotation (ann[i]);\r
-if (this._linecolour != null) {\r
-this._linecolour = this.annotations[i].colour;\r
-}}}\r
-}if (annotation.sequenceRef != null) {\r
-this.sequenceRef = annotation.sequenceRef;\r
-if (annotation.sequenceMapping != null) {\r
-var p = null;\r
-this.sequenceMapping =  new java.util.HashMap ();\r
-var pos = annotation.sequenceMapping.keySet ().iterator ();\r
-while (pos.hasNext ()) {\r
-p = pos.next ();\r
-var a = annotation.sequenceMapping.get (p);\r
-if (a == null) {\r
-continue;\r
-}if (ann != null) {\r
-for (var i = 0; i < ann.length; i++) {\r
-if (ann[i] === a) {\r
-this.sequenceMapping.put (p, this.annotations[i]);\r
-}}\r
-}}\r
-} else {\r
-this.sequenceMapping = null;\r
-}}{\r
-}this.validateRangeAndDisplay ();\r
-}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.defineMethod (c$, "restrict", \r
-function (startRes, endRes) {\r
-if (this.annotations == null) {\r
-return;\r
-}if (startRes < 0) {\r
-startRes = 0;\r
-}if (startRes >= this.annotations.length) {\r
-startRes = this.annotations.length - 1;\r
-}if (endRes >= this.annotations.length) {\r
-endRes = this.annotations.length - 1;\r
-}if (this.annotations == null) {\r
-return;\r
-}var temp =  new Array (endRes - startRes + 1);\r
-if (startRes < this.annotations.length) {\r
-System.arraycopy (this.annotations, startRes, temp, 0, endRes - startRes + 1);\r
-}if (this.sequenceRef != null) {\r
-var spos = this.sequenceRef.findPosition (startRes);\r
-var epos = this.sequenceRef.findPosition (endRes);\r
-if (this.sequenceMapping != null) {\r
-var newmapping =  new java.util.HashMap ();\r
-var e = this.sequenceMapping.keySet ().iterator ();\r
-while (e.hasNext ()) {\r
-var pos = e.next ();\r
-if (pos.intValue () >= spos && pos.intValue () <= epos) {\r
-newmapping.put (pos, this.sequenceMapping.get (pos));\r
-}}\r
-this.sequenceMapping.clear ();\r
-this.sequenceMapping = newmapping;\r
-}}this.annotations = temp;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "padAnnotation", \r
-function (length) {\r
-if (this.annotations == null) {\r
-return true;\r
-}if (this.annotations.length < length) {\r
-var na =  new Array (length);\r
-System.arraycopy (this.annotations, 0, na, 0, this.annotations.length);\r
-this.annotations = na;\r
-return true;\r
-}return this.annotations.length > length;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var buffer =  new StringBuilder (256);\r
-for (var i = 0; i < this.annotations.length; i++) {\r
-if (this.annotations[i] != null) {\r
-if (this.graph != 0) {\r
-buffer.append (this.annotations[i].value);\r
-} else if (this.hasIcons) {\r
-buffer.append (this.annotations[i].secondaryStructure);\r
-} else {\r
-buffer.append (this.annotations[i].displayCharacter);\r
-}}buffer.append (", ");\r
-}\r
-if (this.label.indexOf ("Consensus") == 0) {\r
-buffer.append ("\n");\r
-for (var i = 0; i < this.annotations.length; i++) {\r
-if (this.annotations[i] != null) {\r
-buffer.append (this.annotations[i].description);\r
-}buffer.append (", ");\r
-}\r
-}return buffer.toString ();\r
-});\r
-Clazz.defineMethod (c$, "setThreshold", \r
-function (line) {\r
-this.threshold = line;\r
-}, "jalview.datamodel.GraphLine");\r
-Clazz.defineMethod (c$, "getThreshold", \r
-function () {\r
-return this.threshold;\r
-});\r
-Clazz.defineMethod (c$, "createSequenceMapping", \r
-function (seqRef, startRes, alreadyMapped) {\r
-if (seqRef == null) {\r
-return;\r
-}this.sequenceRef = seqRef;\r
-if (this.annotations == null) {\r
-return;\r
-}this.sequenceMapping =  new java.util.HashMap ();\r
-var seqPos;\r
-for (var i = 0; i < this.annotations.length; i++) {\r
-if (this.annotations[i] != null) {\r
-if (alreadyMapped) {\r
-seqPos = seqRef.findPosition (i);\r
-} else {\r
-seqPos = i + startRes;\r
-}this.sequenceMapping.put ( new Integer (seqPos), this.annotations[i]);\r
-}}\r
-}, "jalview.datamodel.SequenceI,~N,~B");\r
-Clazz.defineMethod (c$, "adjustForAlignment", \r
-function () {\r
-if (this.sequenceRef == null) {\r
-return;\r
-}if (this.annotations == null) {\r
-return;\r
-}var a = 0;\r
-var aSize = this.sequenceRef.getLength ();\r
-if (aSize == 0) {\r
-return;\r
-}var position;\r
-var temp =  new Array (aSize);\r
-var index;\r
-for (a = this.sequenceRef.getStart (); a <= this.sequenceRef.getEnd (); a++) {\r
-index =  new Integer (a);\r
-if (this.sequenceMapping.containsKey (index)) {\r
-position = this.sequenceRef.findIndex (a) - 1;\r
-temp[position] = this.sequenceMapping.get (index);\r
-}}\r
-this.annotations = temp;\r
-});\r
-Clazz.defineMethod (c$, "compactAnnotationArray", \r
-function () {\r
-var i = 0;\r
-var iSize = this.annotations.length;\r
-while (i < iSize) {\r
-if (this.annotations[i] == null) {\r
-if (i + 1 < iSize) {\r
-System.arraycopy (this.annotations, i + 1, this.annotations, i, iSize - i - 1);\r
-}iSize--;\r
-} else {\r
-i++;\r
-}}\r
-var ann = this.annotations;\r
-this.annotations =  new Array (i);\r
-System.arraycopy (ann, 0, this.annotations, 0, i);\r
-ann = null;\r
-return iSize;\r
-});\r
-Clazz.defineMethod (c$, "setSequenceRef", \r
-function (sequenceI) {\r
-if (sequenceI != null) {\r
-if (this.sequenceRef != null) {\r
-var rIsDs = this.sequenceRef.getDatasetSequence () == null;\r
-var tIsDs = sequenceI.getDatasetSequence () == null;\r
-if (this.sequenceRef !== sequenceI && (rIsDs && !tIsDs && this.sequenceRef !== sequenceI.getDatasetSequence ()) && (!rIsDs && tIsDs && this.sequenceRef.getDatasetSequence () !== sequenceI) && (!rIsDs && !tIsDs && this.sequenceRef.getDatasetSequence () !== sequenceI.getDatasetSequence ()) && !this.sequenceRef.equals (sequenceI)) {\r
-this.sequenceRef = null;\r
-if (this.sequenceMapping != null) {\r
-this.sequenceMapping = null;\r
-}this.createSequenceMapping (sequenceI, 1, true);\r
-this.adjustForAlignment ();\r
-} else {\r
-this.sequenceRef = sequenceI;\r
-}} else {\r
-this.createSequenceMapping (sequenceI, 1, true);\r
-this.adjustForAlignment ();\r
-}} else {\r
-this.sequenceMapping = null;\r
-this.sequenceRef = null;\r
-}}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "getScore", \r
-function () {\r
-return this.score;\r
-});\r
-Clazz.defineMethod (c$, "setScore", \r
-function (score) {\r
-this.$hasScore = true;\r
-this.score = score;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "hasScore", \r
-function () {\r
-return this.$hasScore || !Double.isNaN (this.score);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (label, description, score) {\r
-this.construct (label, description, null);\r
-this.setScore (score);\r
-}, "~S,~S,~N");\r
-Clazz.makeConstructor (c$, \r
-function (alignmentAnnotation, colSel) {\r
-this.construct (alignmentAnnotation);\r
-if (this.annotations == null) {\r
-return;\r
-}colSel.makeVisibleAnnotation (this);\r
-}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.ColumnSelection");\r
-Clazz.defineMethod (c$, "setPadGaps", \r
-function (padgaps, gapchar) {\r
-this.padGaps = padgaps;\r
-if (padgaps) {\r
-this.hasText = true;\r
-for (var i = 0; i < this.annotations.length; i++) {\r
-if (this.annotations[i] == null) {\r
-this.annotations[i] =  new jalview.datamodel.Annotation (String.valueOf (gapchar), null, ' ', 0, null);\r
-} else if (this.annotations[i].displayCharacter == null || this.annotations[i].displayCharacter.equals (" ")) {\r
-this.annotations[i].displayCharacter = String.valueOf (gapchar);\r
-}}\r
-}}, "~B,~S");\r
-Clazz.defineMethod (c$, "getDescription", \r
-function (seqname) {\r
-if (seqname && this.sequenceRef != null) {\r
-var i = this.description.toLowerCase ().indexOf ("<html>");\r
-if (i > -1) {\r
-return "<html>" + this.sequenceRef.getName () + " : " + this.description.substring (i + 6);\r
-}return this.sequenceRef.getName () + " : " + this.description;\r
-}return this.description;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isValidStruc", \r
-function () {\r
-return this.invalidrnastruc == -1;\r
-});\r
-Clazz.defineMethod (c$, "getInvalidStrucPos", \r
-function () {\r
-return this.invalidrnastruc;\r
-});\r
-Clazz.defineMethod (c$, "getCalcId", \r
-function () {\r
-return this.calcId;\r
-});\r
-Clazz.defineMethod (c$, "setCalcId", \r
-function (calcId) {\r
-this.calcId = calcId;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "isRNA", \r
-function () {\r
-return this.isrna;\r
-});\r
-Clazz.defineMethod (c$, "liftOver", \r
-function (sq, sp2sq) {\r
-if (sp2sq.getMappedWidth () != sp2sq.getWidth ()) {\r
-throw  new Error ("liftOver currently not implemented for transfer of annotation between different types of seqeunce");\r
-}var mapIsTo = (sp2sq != null) ? (sp2sq.getTo () === sq || sp2sq.getTo () === sq.getDatasetSequence ()) : false;\r
-var mapForsq =  new java.util.HashMap ();\r
-if (this.sequenceMapping != null) {\r
-if (sp2sq != null) {\r
-for (var ie, $ie = this.sequenceMapping.entrySet ().iterator (); $ie.hasNext () && ((ie = $ie.next ()) || true);) {\r
-var mpos = Integer.$valueOf (mapIsTo ? sp2sq.getMappedPosition ((ie.getKey ()).intValue ()) : sp2sq.getPosition ((ie.getKey ()).intValue ()));\r
-if ((mpos).intValue () >= sq.getStart () && (mpos).intValue () <= sq.getEnd ()) {\r
-mapForsq.put (mpos, ie.getValue ());\r
-}}\r
-this.sequenceMapping = mapForsq;\r
-this.sequenceRef = sq;\r
-this.adjustForAlignment ();\r
-} else {\r
-}}}, "jalview.datamodel.SequenceI,jalview.datamodel.Mapping");\r
-Clazz.defineMethod (c$, "remap", \r
-function (newref, mapping, from, to, idxoffset) {\r
-if (mapping != null) {\r
-var old = this.sequenceMapping;\r
-var remap =  new java.util.HashMap ();\r
-var index = -1;\r
-for (var mp, $mp = 0, $$mp = mapping; $mp < $$mp.length && ((mp = $$mp[$mp]) || true); $mp++) {\r
-if (index++ < 0) {\r
-continue;\r
-}var ann = null;\r
-if (from == -1) {\r
-ann = this.sequenceMapping.get (Integer.$valueOf (idxoffset + index));\r
-} else {\r
-if (mp != null && mp.length > from) {\r
-ann = this.sequenceMapping.get (Integer.$valueOf (mp[from]));\r
-}}if (ann != null) {\r
-if (to == -1) {\r
-remap.put (Integer.$valueOf (idxoffset + index), ann);\r
-} else {\r
-if (to > -1 && to < mp.length) {\r
-remap.put (Integer.$valueOf (mp[to]), ann);\r
-}}}}\r
-this.sequenceMapping = remap;\r
-old.clear ();\r
-if (newref != null) {\r
-this.sequenceRef = newref;\r
-}this.adjustForAlignment ();\r
-}}, "jalview.datamodel.SequenceI,~A,~N,~N,~N");\r
-Clazz.defineMethod (c$, "getProperty", \r
-function (property) {\r
-if (this.properties == null) {\r
-return null;\r
-}return this.properties.get (property);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setProperty", \r
-function (property, value) {\r
-if (this.properties == null) {\r
-this.properties =  new java.util.HashMap ();\r
-}this.properties.put (property, value);\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "hasProperties", \r
-function () {\r
-return this.properties != null && this.properties.size () > 0;\r
-});\r
-Clazz.defineMethod (c$, "getProperties", \r
-function () {\r
-if (this.properties == null) {\r
-return java.util.Collections.emptyList ();\r
-}return this.properties.keySet ();\r
-});\r
-Clazz.defineMethod (c$, "getAnnotationForPosition", \r
-function (position) {\r
-return this.sequenceMapping == null ? null : this.sequenceMapping.get (new Integer (position));\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setAnnotationId", \r
-function () {\r
-this.annotationId = "ann" + Long.toString (jalview.datamodel.AlignmentAnnotation.nextId ());\r
-});\r
-c$.nextId = Clazz.defineMethod (c$, "nextId", \r
-function () {\r
-return jalview.datamodel.AlignmentAnnotation.counter++;\r
-});\r
-c$.$AlignmentAnnotation$AnnotCharSequence$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.offset = 0;\r
-this.max = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel.AlignmentAnnotation, "AnnotCharSequence", null, CharSequence);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.construct (0, this.b$["jalview.datamodel.AlignmentAnnotation"].annotations.length);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (a, b) {\r
-this.offset = a;\r
-this.max = b;\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "subSequence", \r
-function (a, b) {\r
-return Clazz.innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null, this.offset + a, this.offset + b);\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "length", \r
-function () {\r
-return this.max - this.offset;\r
-});\r
-Clazz.overrideMethod (c$, "charAt", \r
-function (a) {\r
-return ((a + this.offset < 0) || (a + this.offset) >= this.max || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset] == null || (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].secondaryStructure <= ' ') ? ' ' : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter == null || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter.length == 0 ? this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].secondaryStructure : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter.charAt (0));\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var a =  Clazz.newCharArray (this.max - this.offset, '\0');\r
-var b = this.b$["jalview.datamodel.AlignmentAnnotation"].annotations.length;\r
-for (var c = this.offset; c < b; c++) {\r
-a[c] = (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c] == null || ((this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].secondaryStructure).charCodeAt (0) <= 32)) ? ' ' : (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter == null || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter.length == 0 ? this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].secondaryStructure : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter.charAt (0));\r
-}\r
-return  String.instantialize (a);\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"ANNOTATION_ID_PREFIX", "ann",\r
-"SEQUENCE_PROFILE", 0,\r
-"STRUCTURE_PROFILE", 1,\r
-"CDNA_PROFILE", 2,\r
-"counter", 0,\r
-"NO_GRAPH", 0,\r
-"BAR_GRAPH", 1,\r
-"LINE_GRAPH", 2);\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.util.HashMap"], "jalview.datamodel.AlignmentAnnotation", ["jalview.analysis.Rna", "jalview.datamodel.Annotation", "$.GraphLine", "jalview.schemes.ResidueProperties", "java.lang.Double", "$.Error", "$.Long", "$.StringBuffer", "$.StringBuilder", "java.util.Collections"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.autoCalculated = false;
+this.annotationId = null;
+this.sequenceRef = null;
+this.label = null;
+this.description = null;
+this.annotations = null;
+this.bps = null;
+this._rnasecstr = null;
+this.invalidrnastruc = -2;
+this.sequenceMapping = null;
+this.graphMin = 0;
+this.graphMax = 0;
+this.score = NaN;
+this.$hasScore = false;
+this.threshold = null;
+this.editable = false;
+this.hasIcons = false;
+this.hasText = false;
+this.visible = true;
+this.graphGroup = -1;
+this.height = 0;
+this.graph = 0;
+this.graphHeight = 40;
+this.padGaps = false;
+this.belowAlignment = true;
+this.groupRef = null;
+this.showAllColLabels = false;
+this.scaleColLabel = false;
+this.centreColLabels = false;
+this.isrna = false;
+if (!Clazz.isClassDefined ("jalview.datamodel.AlignmentAnnotation.AnnotCharSequence")) {
+jalview.datamodel.AlignmentAnnotation.$AlignmentAnnotation$AnnotCharSequence$ ();
+}
+this._lastrnaannot = -1;
+this.calcId = "";
+this.properties = null;
+this._linecolour = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "AlignmentAnnotation");
+Clazz.prepareFields (c$, function () {
+this.properties =  new java.util.HashMap ();
+});
+Clazz.defineMethod (c$, "_updateRnaSecStr", 
+($fz = function (RNAannot) {
+try {
+this._rnasecstr = jalview.analysis.Rna.GetBasePairs (RNAannot);
+this.bps = jalview.analysis.Rna.GetModeleBP (RNAannot);
+this.invalidrnastruc = -1;
+} catch (px) {
+if (Clazz.exceptionOf (px, jalview.analysis.WUSSParseException)) {
+this.invalidrnastruc = px.getProblemPos ();
+} else {
+throw px;
+}
+}
+if (this.invalidrnastruc > -1) {
+return;
+}jalview.analysis.Rna.HelixMap (this._rnasecstr);
+if (this._rnasecstr != null && this._rnasecstr.length > 0) {
+this.isrna = true;
+this.showAllColLabels = true;
+this.scaleColLabel = true;
+this._markRnaHelices ();
+}}, $fz.isPrivate = true, $fz), "CharSequence");
+Clazz.defineMethod (c$, "_markRnaHelices", 
+($fz = function () {
+var mxval = 0;
+for (var x = 0; x < this._rnasecstr.length; x++) {
+var val = 0;
+try {
+val = (Integer.$valueOf (this._rnasecstr[x].getFeatureGroup ())).intValue ();
+if (mxval < val) {
+mxval = val;
+}} catch (q) {
+if (Clazz.exceptionOf (q, NumberFormatException)) {
+} else {
+throw q;
+}
+}
+;this.annotations[this._rnasecstr[x].getBegin ()].value = val;
+this.annotations[this._rnasecstr[x].getEnd ()].value = val;
+}
+this.setScore (mxval);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "finalize", 
+function () {
+this.sequenceRef = null;
+this.groupRef = null;
+Clazz.superCall (this, jalview.datamodel.AlignmentAnnotation, "finalize", []);
+});
+c$.getGraphValueFromString = Clazz.defineMethod (c$, "getGraphValueFromString", 
+function (string) {
+if (string.equalsIgnoreCase ("BAR_GRAPH")) {
+return 1;
+} else if (string.equalsIgnoreCase ("LINE_GRAPH")) {
+return 2;
+} else {
+return 0;
+}}, "~S");
+Clazz.defineMethod (c$, "ConcenStru", 
+function (RNAannot) {
+this.bps = jalview.analysis.Rna.GetModeleBP (RNAannot);
+}, "CharSequence");
+Clazz.makeConstructor (c$, 
+function (label, description, annotations) {
+this.setAnnotationId ();
+this.editable = true;
+this.label = label;
+this.description = description;
+this.annotations = annotations;
+this.validateRangeAndDisplay ();
+}, "~S,~S,~A");
+Clazz.defineMethod (c$, "areLabelsSecondaryStructure", 
+function () {
+var nonSSLabel = false;
+this.isrna = false;
+var rnastring =  new StringBuffer ();
+var firstChar = String.fromCharCode (0);
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] == null) {
+continue;
+}if (this.annotations[i].secondaryStructure == 'H' || this.annotations[i].secondaryStructure == 'E') {
+this.hasIcons = new Boolean (this.hasIcons | true).valueOf ();
+} else {
+if (this.annotations[i].secondaryStructure == '(' || this.annotations[i].secondaryStructure == '[' || this.annotations[i].secondaryStructure == '<' || this.annotations[i].secondaryStructure == '{' || this.annotations[i].secondaryStructure == 'A' || this.annotations[i].secondaryStructure == 'B' || this.annotations[i].secondaryStructure == 'C' || this.annotations[i].secondaryStructure == 'D' || this.annotations[i].secondaryStructure == 'E' || this.annotations[i].secondaryStructure == 'F' || this.annotations[i].secondaryStructure == 'G' || this.annotations[i].secondaryStructure == 'H' || this.annotations[i].secondaryStructure == 'I' || this.annotations[i].secondaryStructure == 'J' || this.annotations[i].secondaryStructure == 'K' || this.annotations[i].secondaryStructure == 'L' || this.annotations[i].secondaryStructure == 'M' || this.annotations[i].secondaryStructure == 'N' || this.annotations[i].secondaryStructure == 'O' || this.annotations[i].secondaryStructure == 'P' || this.annotations[i].secondaryStructure == 'Q' || this.annotations[i].secondaryStructure == 'R' || this.annotations[i].secondaryStructure == 'S' || this.annotations[i].secondaryStructure == 'T' || this.annotations[i].secondaryStructure == 'U' || this.annotations[i].secondaryStructure == 'V' || this.annotations[i].secondaryStructure == 'W' || this.annotations[i].secondaryStructure == 'X' || this.annotations[i].secondaryStructure == 'Y' || this.annotations[i].secondaryStructure == 'Z') {
+this.hasIcons = new Boolean (this.hasIcons | true).valueOf ();
+this.isrna = new Boolean (this.isrna | true).valueOf ();
+}}if (this.annotations[i].displayCharacter == null || this.annotations[i].displayCharacter.length == 0) {
+rnastring.append ('.');
+continue;
+}if (this.annotations[i].displayCharacter.length == 1) {
+firstChar = this.annotations[i].displayCharacter.charAt (0);
+if (this.annotations[i].secondaryStructure != ' ' && !this.hasIcons && firstChar != ' ' && firstChar != '$' && firstChar.charCodeAt (0) != 0xCE && firstChar != '(' && firstChar != '[' && firstChar != '>' && firstChar != '{' && firstChar != 'A' && firstChar != 'B' && firstChar != 'C' && firstChar != 'D' && firstChar != 'E' && firstChar != 'F' && firstChar != 'G' && firstChar != 'H' && firstChar != 'I' && firstChar != 'J' && firstChar != 'K' && firstChar != 'L' && firstChar != 'M' && firstChar != 'N' && firstChar != 'O' && firstChar != 'P' && firstChar != 'Q' && firstChar != 'R' && firstChar != 'S' && firstChar != 'T' && firstChar != 'U' && firstChar != 'V' && firstChar != 'W' && firstChar != 'X' && firstChar != 'Y' && firstChar != 'Z' && firstChar != '-' && firstChar.charCodeAt (0) < jalview.schemes.ResidueProperties.aaIndex.length) {
+if (jalview.schemes.ResidueProperties.aaIndex[firstChar.charCodeAt (0)] < 23) {
+nonSSLabel = true;
+}}} else {
+rnastring.append (this.annotations[i].displayCharacter.charAt (1));
+}if (this.annotations[i].displayCharacter.length > 0) {
+this.hasText = true;
+}}
+if (nonSSLabel) {
+this.hasIcons = false;
+for (var j = 0; j < this.annotations.length; j++) {
+if (this.annotations[j] != null && this.annotations[j].secondaryStructure != ' ') {
+this.annotations[j].displayCharacter = String.valueOf (this.annotations[j].secondaryStructure);
+this.annotations[j].secondaryStructure = ' ';
+}}
+} else {
+if (this.isrna) {
+this._updateRnaSecStr (Clazz.innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null));
+}}});
+Clazz.defineMethod (c$, "getRNAStruc", 
+function () {
+if (this.isrna) {
+var rnastruc = Clazz.innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null).toString ();
+if (this._lastrnaannot != rnastruc.hashCode ()) {
+this._lastrnaannot = rnastruc.hashCode ();
+this._updateRnaSecStr (rnastruc);
+}return rnastruc;
+}return null;
+});
+Clazz.makeConstructor (c$, 
+function (label, description, annotations, min, max, graphType) {
+this.setAnnotationId ();
+this.editable = graphType == 0;
+this.label = label;
+this.description = description;
+this.annotations = annotations;
+this.graph = graphType;
+this.graphMin = min;
+this.graphMax = max;
+this.validateRangeAndDisplay ();
+}, "~S,~S,~A,~N,~N,~N");
+Clazz.defineMethod (c$, "validateRangeAndDisplay", 
+function () {
+if (this.annotations == null) {
+this.visible = false;
+return;
+}var graphType = this.graph;
+var min = this.graphMin;
+var max = this.graphMax;
+var drawValues = true;
+this._linecolour = null;
+if (min == max) {
+min = 999999999;
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] == null) {
+continue;
+}if (drawValues && this.annotations[i].displayCharacter != null && this.annotations[i].displayCharacter.length > 1) {
+drawValues = false;
+}if (this.annotations[i].value > max) {
+max = this.annotations[i].value;
+}if (this.annotations[i].value < min) {
+min = this.annotations[i].value;
+}if (this._linecolour == null && this.annotations[i].colour != null) {
+this._linecolour = this.annotations[i].colour;
+}}
+if (min > 0) {
+min = 0;
+} else {
+if (max < 0) {
+max = 0;
+}}}this.graphMin = min;
+this.graphMax = max;
+this.areLabelsSecondaryStructure ();
+if (!drawValues && graphType != 0) {
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] != null) {
+this.annotations[i].displayCharacter = "";
+}}
+}});
+Clazz.makeConstructor (c$, 
+function (annotation) {
+this.setAnnotationId ();
+this.label =  String.instantialize (annotation.label);
+if (annotation.description != null) {
+this.description =  String.instantialize (annotation.description);
+}this.graphMin = annotation.graphMin;
+this.graphMax = annotation.graphMax;
+this.graph = annotation.graph;
+this.graphHeight = annotation.graphHeight;
+this.graphGroup = annotation.graphGroup;
+this.groupRef = annotation.groupRef;
+this.editable = annotation.editable;
+this.autoCalculated = annotation.autoCalculated;
+this.hasIcons = annotation.hasIcons;
+this.hasText = annotation.hasText;
+this.height = annotation.height;
+this.label = annotation.label;
+this.padGaps = annotation.padGaps;
+this.visible = annotation.visible;
+this.centreColLabels = annotation.centreColLabels;
+this.scaleColLabel = annotation.scaleColLabel;
+this.showAllColLabels = annotation.showAllColLabels;
+this.calcId = annotation.calcId;
+if (annotation.properties != null) {
+this.properties =  new java.util.HashMap ();
+for (var val, $val = annotation.properties.entrySet ().iterator (); $val.hasNext () && ((val = $val.next ()) || true);) {
+this.properties.put (val.getKey (), val.getValue ());
+}
+}if (this.$hasScore = annotation.$hasScore) {
+this.score = annotation.score;
+}if (annotation.threshold != null) {
+this.threshold =  new jalview.datamodel.GraphLine (annotation.threshold);
+}var ann = annotation.annotations;
+if (annotation.annotations != null) {
+this.annotations =  new Array (ann.length);
+for (var i = 0; i < ann.length; i++) {
+if (ann[i] != null) {
+this.annotations[i] =  new jalview.datamodel.Annotation (ann[i]);
+if (this._linecolour != null) {
+this._linecolour = this.annotations[i].colour;
+}}}
+}if (annotation.sequenceRef != null) {
+this.sequenceRef = annotation.sequenceRef;
+if (annotation.sequenceMapping != null) {
+var p = null;
+this.sequenceMapping =  new java.util.HashMap ();
+var pos = annotation.sequenceMapping.keySet ().iterator ();
+while (pos.hasNext ()) {
+p = pos.next ();
+var a = annotation.sequenceMapping.get (p);
+if (a == null) {
+continue;
+}if (ann != null) {
+for (var i = 0; i < ann.length; i++) {
+if (ann[i] === a) {
+this.sequenceMapping.put (p, this.annotations[i]);
+}}
+}}
+} else {
+this.sequenceMapping = null;
+}}{
+}this.validateRangeAndDisplay ();
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "restrict", 
+function (startRes, endRes) {
+if (this.annotations == null) {
+return;
+}if (startRes < 0) {
+startRes = 0;
+}if (startRes >= this.annotations.length) {
+startRes = this.annotations.length - 1;
+}if (endRes >= this.annotations.length) {
+endRes = this.annotations.length - 1;
+}if (this.annotations == null) {
+return;
+}var temp =  new Array (endRes - startRes + 1);
+if (startRes < this.annotations.length) {
+System.arraycopy (this.annotations, startRes, temp, 0, endRes - startRes + 1);
+}if (this.sequenceRef != null) {
+var spos = this.sequenceRef.findPosition (startRes);
+var epos = this.sequenceRef.findPosition (endRes);
+if (this.sequenceMapping != null) {
+var newmapping =  new java.util.HashMap ();
+var e = this.sequenceMapping.keySet ().iterator ();
+while (e.hasNext ()) {
+var pos = e.next ();
+if (pos.intValue () >= spos && pos.intValue () <= epos) {
+newmapping.put (pos, this.sequenceMapping.get (pos));
+}}
+this.sequenceMapping.clear ();
+this.sequenceMapping = newmapping;
+}}this.annotations = temp;
+}, "~N,~N");
+Clazz.defineMethod (c$, "padAnnotation", 
+function (length) {
+if (this.annotations == null) {
+return true;
+}if (this.annotations.length < length) {
+var na =  new Array (length);
+System.arraycopy (this.annotations, 0, na, 0, this.annotations.length);
+this.annotations = na;
+return true;
+}return this.annotations.length > length;
+}, "~N");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var buffer =  new StringBuilder (256);
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] != null) {
+if (this.graph != 0) {
+buffer.append (this.annotations[i].value);
+} else if (this.hasIcons) {
+buffer.append (this.annotations[i].secondaryStructure);
+} else {
+buffer.append (this.annotations[i].displayCharacter);
+}}buffer.append (", ");
+}
+if (this.label.indexOf ("Consensus") == 0) {
+buffer.append ("\n");
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] != null) {
+buffer.append (this.annotations[i].description);
+}buffer.append (", ");
+}
+}return buffer.toString ();
+});
+Clazz.defineMethod (c$, "setThreshold", 
+function (line) {
+this.threshold = line;
+}, "jalview.datamodel.GraphLine");
+Clazz.defineMethod (c$, "getThreshold", 
+function () {
+return this.threshold;
+});
+Clazz.defineMethod (c$, "createSequenceMapping", 
+function (seqRef, startRes, alreadyMapped) {
+if (seqRef == null) {
+return;
+}this.sequenceRef = seqRef;
+if (this.annotations == null) {
+return;
+}this.sequenceMapping =  new java.util.HashMap ();
+var seqPos;
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] != null) {
+if (alreadyMapped) {
+seqPos = seqRef.findPosition (i);
+} else {
+seqPos = i + startRes;
+}this.sequenceMapping.put ( new Integer (seqPos), this.annotations[i]);
+}}
+}, "jalview.datamodel.SequenceI,~N,~B");
+Clazz.defineMethod (c$, "adjustForAlignment", 
+function () {
+if (this.sequenceRef == null) {
+return;
+}if (this.annotations == null) {
+return;
+}var a = 0;
+var aSize = this.sequenceRef.getLength ();
+if (aSize == 0) {
+return;
+}var position;
+var temp =  new Array (aSize);
+var index;
+for (a = this.sequenceRef.getStart (); a <= this.sequenceRef.getEnd (); a++) {
+index =  new Integer (a);
+if (this.sequenceMapping.containsKey (index)) {
+position = this.sequenceRef.findIndex (a) - 1;
+temp[position] = this.sequenceMapping.get (index);
+}}
+this.annotations = temp;
+});
+Clazz.defineMethod (c$, "compactAnnotationArray", 
+function () {
+var i = 0;
+var iSize = this.annotations.length;
+while (i < iSize) {
+if (this.annotations[i] == null) {
+if (i + 1 < iSize) {
+System.arraycopy (this.annotations, i + 1, this.annotations, i, iSize - i - 1);
+}iSize--;
+} else {
+i++;
+}}
+var ann = this.annotations;
+this.annotations =  new Array (i);
+System.arraycopy (ann, 0, this.annotations, 0, i);
+ann = null;
+return iSize;
+});
+Clazz.defineMethod (c$, "setSequenceRef", 
+function (sequenceI) {
+if (sequenceI != null) {
+if (this.sequenceRef != null) {
+var rIsDs = this.sequenceRef.getDatasetSequence () == null;
+var tIsDs = sequenceI.getDatasetSequence () == null;
+if (this.sequenceRef !== sequenceI && (rIsDs && !tIsDs && this.sequenceRef !== sequenceI.getDatasetSequence ()) && (!rIsDs && tIsDs && this.sequenceRef.getDatasetSequence () !== sequenceI) && (!rIsDs && !tIsDs && this.sequenceRef.getDatasetSequence () !== sequenceI.getDatasetSequence ()) && !this.sequenceRef.equals (sequenceI)) {
+this.sequenceRef = null;
+if (this.sequenceMapping != null) {
+this.sequenceMapping = null;
+}this.createSequenceMapping (sequenceI, 1, true);
+this.adjustForAlignment ();
+} else {
+this.sequenceRef = sequenceI;
+}} else {
+this.createSequenceMapping (sequenceI, 1, true);
+this.adjustForAlignment ();
+}} else {
+this.sequenceMapping = null;
+this.sequenceRef = null;
+}}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getScore", 
+function () {
+return this.score;
+});
+Clazz.defineMethod (c$, "setScore", 
+function (score) {
+this.$hasScore = true;
+this.score = score;
+}, "~N");
+Clazz.defineMethod (c$, "hasScore", 
+function () {
+return this.$hasScore || !Double.isNaN (this.score);
+});
+Clazz.makeConstructor (c$, 
+function (label, description, score) {
+this.construct (label, description, null);
+this.setScore (score);
+}, "~S,~S,~N");
+Clazz.makeConstructor (c$, 
+function (alignmentAnnotation, colSel) {
+this.construct (alignmentAnnotation);
+if (this.annotations == null) {
+return;
+}colSel.makeVisibleAnnotation (this);
+}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.ColumnSelection");
+Clazz.defineMethod (c$, "setPadGaps", 
+function (padgaps, gapchar) {
+this.padGaps = padgaps;
+if (padgaps) {
+this.hasText = true;
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] == null) {
+this.annotations[i] =  new jalview.datamodel.Annotation (String.valueOf (gapchar), null, ' ', 0, null);
+} else if (this.annotations[i].displayCharacter == null || this.annotations[i].displayCharacter.equals (" ")) {
+this.annotations[i].displayCharacter = String.valueOf (gapchar);
+}}
+}}, "~B,~S");
+Clazz.defineMethod (c$, "getDescription", 
+function (seqname) {
+if (seqname && this.sequenceRef != null) {
+var i = this.description.toLowerCase ().indexOf ("<html>");
+if (i > -1) {
+return "<html>" + this.sequenceRef.getName () + " : " + this.description.substring (i + 6);
+}return this.sequenceRef.getName () + " : " + this.description;
+}return this.description;
+}, "~B");
+Clazz.defineMethod (c$, "isValidStruc", 
+function () {
+return this.invalidrnastruc == -1;
+});
+Clazz.defineMethod (c$, "getInvalidStrucPos", 
+function () {
+return this.invalidrnastruc;
+});
+Clazz.defineMethod (c$, "getCalcId", 
+function () {
+return this.calcId;
+});
+Clazz.defineMethod (c$, "setCalcId", 
+function (calcId) {
+this.calcId = calcId;
+}, "~S");
+Clazz.defineMethod (c$, "isRNA", 
+function () {
+return this.isrna;
+});
+Clazz.defineMethod (c$, "liftOver", 
+function (sq, sp2sq) {
+if (sp2sq.getMappedWidth () != sp2sq.getWidth ()) {
+throw  new Error ("liftOver currently not implemented for transfer of annotation between different types of seqeunce");
+}var mapIsTo = (sp2sq != null) ? (sp2sq.getTo () === sq || sp2sq.getTo () === sq.getDatasetSequence ()) : false;
+var mapForsq =  new java.util.HashMap ();
+if (this.sequenceMapping != null) {
+if (sp2sq != null) {
+for (var ie, $ie = this.sequenceMapping.entrySet ().iterator (); $ie.hasNext () && ((ie = $ie.next ()) || true);) {
+var mpos = Integer.$valueOf (mapIsTo ? sp2sq.getMappedPosition ((ie.getKey ()).intValue ()) : sp2sq.getPosition ((ie.getKey ()).intValue ()));
+if ((mpos).intValue () >= sq.getStart () && (mpos).intValue () <= sq.getEnd ()) {
+mapForsq.put (mpos, ie.getValue ());
+}}
+this.sequenceMapping = mapForsq;
+this.sequenceRef = sq;
+this.adjustForAlignment ();
+} else {
+}}}, "jalview.datamodel.SequenceI,jalview.datamodel.Mapping");
+Clazz.defineMethod (c$, "remap", 
+function (newref, mapping, from, to, idxoffset) {
+if (mapping != null) {
+var old = this.sequenceMapping;
+var remap =  new java.util.HashMap ();
+var index = -1;
+for (var mp, $mp = 0, $$mp = mapping; $mp < $$mp.length && ((mp = $$mp[$mp]) || true); $mp++) {
+if (index++ < 0) {
+continue;
+}var ann = null;
+if (from == -1) {
+ann = this.sequenceMapping.get (Integer.$valueOf (idxoffset + index));
+} else {
+if (mp != null && mp.length > from) {
+ann = this.sequenceMapping.get (Integer.$valueOf (mp[from]));
+}}if (ann != null) {
+if (to == -1) {
+remap.put (Integer.$valueOf (idxoffset + index), ann);
+} else {
+if (to > -1 && to < mp.length) {
+remap.put (Integer.$valueOf (mp[to]), ann);
+}}}}
+this.sequenceMapping = remap;
+old.clear ();
+if (newref != null) {
+this.sequenceRef = newref;
+}this.adjustForAlignment ();
+}}, "jalview.datamodel.SequenceI,~A,~N,~N,~N");
+Clazz.defineMethod (c$, "getProperty", 
+function (property) {
+if (this.properties == null) {
+return null;
+}return this.properties.get (property);
+}, "~S");
+Clazz.defineMethod (c$, "setProperty", 
+function (property, value) {
+if (this.properties == null) {
+this.properties =  new java.util.HashMap ();
+}this.properties.put (property, value);
+}, "~S,~S");
+Clazz.defineMethod (c$, "hasProperties", 
+function () {
+return this.properties != null && this.properties.size () > 0;
+});
+Clazz.defineMethod (c$, "getProperties", 
+function () {
+if (this.properties == null) {
+return java.util.Collections.emptyList ();
+}return this.properties.keySet ();
+});
+Clazz.defineMethod (c$, "getAnnotationForPosition", 
+function (position) {
+return this.sequenceMapping == null ? null : this.sequenceMapping.get (new Integer (position));
+}, "~N");
+Clazz.defineMethod (c$, "setAnnotationId", 
+function () {
+this.annotationId = "ann" + Long.toString (jalview.datamodel.AlignmentAnnotation.nextId ());
+});
+c$.nextId = Clazz.defineMethod (c$, "nextId", 
+function () {
+return jalview.datamodel.AlignmentAnnotation.counter++;
+});
+c$.$AlignmentAnnotation$AnnotCharSequence$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.offset = 0;
+this.max = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel.AlignmentAnnotation, "AnnotCharSequence", null, CharSequence);
+Clazz.makeConstructor (c$, 
+function () {
+this.construct (0, this.b$["jalview.datamodel.AlignmentAnnotation"].annotations.length);
+});
+Clazz.makeConstructor (c$, 
+function (a, b) {
+this.offset = a;
+this.max = b;
+}, "~N,~N");
+Clazz.overrideMethod (c$, "subSequence", 
+function (a, b) {
+return Clazz.innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null, this.offset + a, this.offset + b);
+}, "~N,~N");
+Clazz.overrideMethod (c$, "length", 
+function () {
+return this.max - this.offset;
+});
+Clazz.overrideMethod (c$, "charAt", 
+function (a) {
+return ((a + this.offset < 0) || (a + this.offset) >= this.max || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset] == null || (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].secondaryStructure <= ' ') ? ' ' : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter == null || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter.length == 0 ? this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].secondaryStructure : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter.charAt (0));
+}, "~N");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var a =  Clazz.newCharArray (this.max - this.offset, '\0');
+var b = this.b$["jalview.datamodel.AlignmentAnnotation"].annotations.length;
+for (var c = this.offset; c < b; c++) {
+a[c] = (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c] == null || ((this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].secondaryStructure).charCodeAt (0) <= 32)) ? ' ' : (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter == null || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter.length == 0 ? this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].secondaryStructure : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter.charAt (0));
+}
+return  String.instantialize (a);
+});
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"ANNOTATION_ID_PREFIX", "ann",
+"SEQUENCE_PROFILE", 0,
+"STRUCTURE_PROFILE", 1,
+"CDNA_PROFILE", 2,
+"counter", 0,
+"NO_GRAPH", 0,
+"BAR_GRAPH", 1,
+"LINE_GRAPH", 2);
+});
index d1f3174..80e1794 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.AnnotatedCollectionI"], "jalview.datamodel.AlignmentI", null, function () {\r
-Clazz.declareInterface (jalview.datamodel, "AlignmentI", jalview.datamodel.AnnotatedCollectionI);\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.AnnotatedCollectionI"], "jalview.datamodel.AlignmentI", null, function () {
+Clazz.declareInterface (jalview.datamodel, "AlignmentI", jalview.datamodel.AnnotatedCollectionI);
+});
index 281aa17..0fb0cbb 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (null, "jalview.datamodel.AlignmentOrder", ["java.lang.Error", "java.util.ArrayList", "$.Arrays"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.Type = 0;\r
-this.Name = null;\r
-this.Order = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "AlignmentOrder");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (anOrder) {\r
-this.Order = anOrder;\r
-}, "java.util.List");\r
-Clazz.makeConstructor (c$, \r
-function (orderFrom) {\r
-this.Order =  new java.util.ArrayList ();\r
-for (var seq, $seq = orderFrom.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-this.Order.add (seq);\r
-}\r
-}, "jalview.datamodel.AlignmentI");\r
-Clazz.makeConstructor (c$, \r
-function (orderFrom) {\r
-this.Order =  new java.util.ArrayList (java.util.Arrays.asList (orderFrom));\r
-}, "~A");\r
-Clazz.defineMethod (c$, "setType", \r
-function (Type) {\r
-this.Type = Type;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getType", \r
-function () {\r
-return this.Type;\r
-});\r
-Clazz.defineMethod (c$, "setName", \r
-function (Name) {\r
-this.Name = Name;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getName", \r
-function () {\r
-return this.Name;\r
-});\r
-Clazz.defineMethod (c$, "setOrder", \r
-function (Order) {\r
-this.Order = Order;\r
-}, "java.util.List");\r
-Clazz.defineMethod (c$, "getOrder", \r
-function () {\r
-return this.Order;\r
-});\r
-Clazz.defineMethod (c$, "updateSequence", \r
-function (oldref, newref) {\r
-var found = this.Order.indexOf (oldref);\r
-if (found > -1) {\r
-this.Order.set (found, newref);\r
-}return found > -1;\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "equals", \r
-function (o) {\r
-if (o == null || !(Clazz.instanceOf (o, jalview.datamodel.AlignmentOrder))) {\r
-return false;\r
-}return this.equals (o, true);\r
-}, "~O");\r
-Clazz.defineMethod (c$, "equals", \r
-function (o, identity) {\r
-if (o !== this) {\r
-if (o == null) {\r
-return false;\r
-}if (this.Order != null && o.Order != null && this.Order.size () == o.Order.size ()) {\r
-if (!identity) {\r
-throw  new Error ("Weak sequenceI equivalence not yet implemented.");\r
-} else {\r
-for (var i = 0, j = o.Order.size (); i < j; i++) {\r
-if (this.Order.get (i) !== o.Order.get (i)) {\r
-return false;\r
-}}\r
-}} else {\r
-return false;\r
-}}return true;\r
-}, "jalview.datamodel.AlignmentOrder,~B");\r
-Clazz.defineMethod (c$, "isConsistent", \r
-function (o) {\r
-return this.isConsistent (o, true);\r
-}, "jalview.datamodel.AlignmentOrder");\r
-Clazz.defineMethod (c$, "isConsistent", \r
-function (o, identity) {\r
-if (o !== this) {\r
-if (o == null) {\r
-return false;\r
-}if (this.Order != null && o.Order != null) {\r
-var c;\r
-var s;\r
-if (o.Order.size () > this.Order.size ()) {\r
-c = o.Order;\r
-s = this.Order;\r
-} else {\r
-c = this.Order;\r
-s = o.Order;\r
-}if (!identity) {\r
-throw  new Error ("Weak sequenceI equivalence not yet implemented.");\r
-} else {\r
-var last = -1;\r
-for (var i = 0, j = s.size (); i < j; i++) {\r
-var pos = c.indexOf (s.get (i));\r
-if (pos > last) {\r
-last = pos;\r
-} else {\r
-return false;\r
-}}\r
-}} else {\r
-return false;\r
-}}return true;\r
-}, "jalview.datamodel.AlignmentOrder,~B");\r
-Clazz.defineStatics (c$,\r
-"FILE", 0,\r
-"MSA", 1,\r
-"USER", 2);\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.AlignmentOrder", ["java.lang.Error", "java.util.ArrayList", "$.Arrays"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.Type = 0;
+this.Name = null;
+this.Order = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "AlignmentOrder");
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.makeConstructor (c$, 
+function (anOrder) {
+this.Order = anOrder;
+}, "java.util.List");
+Clazz.makeConstructor (c$, 
+function (orderFrom) {
+this.Order =  new java.util.ArrayList ();
+for (var seq, $seq = orderFrom.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+this.Order.add (seq);
+}
+}, "jalview.datamodel.AlignmentI");
+Clazz.makeConstructor (c$, 
+function (orderFrom) {
+this.Order =  new java.util.ArrayList (java.util.Arrays.asList (orderFrom));
+}, "~A");
+Clazz.defineMethod (c$, "setType", 
+function (Type) {
+this.Type = Type;
+}, "~N");
+Clazz.defineMethod (c$, "getType", 
+function () {
+return this.Type;
+});
+Clazz.defineMethod (c$, "setName", 
+function (Name) {
+this.Name = Name;
+}, "~S");
+Clazz.defineMethod (c$, "getName", 
+function () {
+return this.Name;
+});
+Clazz.defineMethod (c$, "setOrder", 
+function (Order) {
+this.Order = Order;
+}, "java.util.List");
+Clazz.defineMethod (c$, "getOrder", 
+function () {
+return this.Order;
+});
+Clazz.defineMethod (c$, "updateSequence", 
+function (oldref, newref) {
+var found = this.Order.indexOf (oldref);
+if (found > -1) {
+this.Order.set (found, newref);
+}return found > -1;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "equals", 
+function (o) {
+if (o == null || !(Clazz.instanceOf (o, jalview.datamodel.AlignmentOrder))) {
+return false;
+}return this.equals (o, true);
+}, "~O");
+Clazz.defineMethod (c$, "equals", 
+function (o, identity) {
+if (o !== this) {
+if (o == null) {
+return false;
+}if (this.Order != null && o.Order != null && this.Order.size () == o.Order.size ()) {
+if (!identity) {
+throw  new Error ("Weak sequenceI equivalence not yet implemented.");
+} else {
+for (var i = 0, j = o.Order.size (); i < j; i++) {
+if (this.Order.get (i) !== o.Order.get (i)) {
+return false;
+}}
+}} else {
+return false;
+}}return true;
+}, "jalview.datamodel.AlignmentOrder,~B");
+Clazz.defineMethod (c$, "isConsistent", 
+function (o) {
+return this.isConsistent (o, true);
+}, "jalview.datamodel.AlignmentOrder");
+Clazz.defineMethod (c$, "isConsistent", 
+function (o, identity) {
+if (o !== this) {
+if (o == null) {
+return false;
+}if (this.Order != null && o.Order != null) {
+var c;
+var s;
+if (o.Order.size () > this.Order.size ()) {
+c = o.Order;
+s = this.Order;
+} else {
+c = this.Order;
+s = o.Order;
+}if (!identity) {
+throw  new Error ("Weak sequenceI equivalence not yet implemented.");
+} else {
+var last = -1;
+for (var i = 0, j = s.size (); i < j; i++) {
+var pos = c.indexOf (s.get (i));
+if (pos > last) {
+last = pos;
+} else {
+return false;
+}}
+}} else {
+return false;
+}}return true;
+}, "jalview.datamodel.AlignmentOrder,~B");
+Clazz.defineStatics (c$,
+"FILE", 0,
+"MSA", 1,
+"USER", 2);
+});
index 122d311..08408b7 100644 (file)
Binary files a/bin/jalview/datamodel/AlignmentView.class and b/bin/jalview/datamodel/AlignmentView.class differ
index e88c405..e559e79 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (null, "jalview.datamodel.AlignmentView", ["jalview.datamodel.Alignment", "$.CigarArray", "$.ColumnSelection", "$.SeqCigar", "$.SequenceGroup", "jalview.util.MessageManager", "$.ShiftList", "java.lang.Error", "java.util.ArrayList", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.sequences = null;\r
-this.contigs = null;\r
-this.width = 0;\r
-this.firstCol = 0;\r
-this.scGroups = null;\r
-this.$isNa = false;\r
-if (!Clazz.isClassDefined ("jalview.datamodel.AlignmentView.ScGroup")) {\r
-jalview.datamodel.AlignmentView.$AlignmentView$ScGroup$ ();\r
-}\r
-this.selected = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "AlignmentView");\r
-Clazz.defineMethod (c$, "isNa", \r
-function () {\r
-return this.$isNa;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (alignment, columnSelection, selection, hasHiddenColumns, selectedRegionOnly, recordGroups) {\r
-this.construct ( new jalview.datamodel.CigarArray (alignment, (hasHiddenColumns ? columnSelection : null), (selectedRegionOnly ? selection : null)), (selectedRegionOnly && selection != null) ? selection.getStartRes () : 0);\r
-this.$isNa = alignment.isNucleotide ();\r
-var selseqs;\r
-if (selection != null && selection.getSize () > 0) {\r
-var sel = selection.getSequences (null);\r
-this.selected =  new java.util.Vector ();\r
-selseqs = selection.getSequencesInOrder (alignment, selectedRegionOnly);\r
-} else {\r
-selseqs = alignment.getSequencesArray ();\r
-}var seqsets =  new java.util.ArrayList ();\r
-var grps =  new java.util.ArrayList ();\r
-var gg = alignment.getGroups ();\r
-grps.addAll (gg);\r
-var sgrps = null;\r
-var addedgps = null;\r
-if (grps != null) {\r
-if (selection != null && selectedRegionOnly) {\r
-var ssel = selection.getStartRes ();\r
-var esel = selection.getEndRes ();\r
-var isg =  new java.util.ArrayList ();\r
-for (var sg, $sg = grps.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-if (!(sg.getStartRes () > esel || sg.getEndRes () < ssel)) {\r
-if (sg.getStartRes () < ssel) {\r
-sg.setStartRes (ssel);\r
-}if (sg.getEndRes () > esel) {\r
-sg.setEndRes (esel);\r
-}sg.setStartRes (sg.getStartRes () - ssel + 1);\r
-sg.setEndRes (sg.getEndRes () - ssel + 1);\r
-isg.add (sg);\r
-}}\r
-grps = isg;\r
-}sgrps =  new Array (grps.size ());\r
-addedgps =  Clazz.newBooleanArray (grps.size (), false);\r
-for (var g = 0; g < sgrps.length; g++) {\r
-var sg = grps.get (g);\r
-sgrps[g] = Clazz.innerTypeInstance (jalview.datamodel.AlignmentView.ScGroup, this, null);\r
-sgrps[g].sg =  new jalview.datamodel.SequenceGroup (sg);\r
-addedgps[g] = false;\r
-seqsets.add (sg.getSequences ());\r
-}\r
-}var csi = 0;\r
-for (var i = 0; i < selseqs.length; i++) {\r
-if (selseqs[i] != null) {\r
-if (selection != null && selection.getSize () > 0 && !selectedRegionOnly) {\r
-this.sequences[csi].setGroupMembership (this.selected);\r
-this.selected.addElement (this.sequences[csi]);\r
-}if (seqsets != null) {\r
-for (var sg = 0; sg < sgrps.length; sg++) {\r
-if ((seqsets.get (sg)).contains (selseqs[i])) {\r
-this.sequences[csi].setGroupMembership (sgrps[sg]);\r
-sgrps[sg].sg.deleteSequence (selseqs[i], false);\r
-sgrps[sg].seqs.addElement (this.sequences[csi]);\r
-if (!addedgps[sg]) {\r
-if (this.scGroups == null) {\r
-this.scGroups =  new java.util.ArrayList ();\r
-}addedgps[sg] = true;\r
-this.scGroups.add (sgrps[sg]);\r
-}}}\r
-}csi++;\r
-}}\r
-for (var sg = 0; sg < sgrps.length; sg++) {\r
-var sqs = sgrps[sg].sg.getSequencesAsArray (null);\r
-for (var si = 0; si < sqs.length; si++) {\r
-sgrps[sg].sg.deleteSequence (sqs[si], false);\r
-}\r
-sgrps[sg] = null;\r
-}\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup,~B,~B,~B");\r
-Clazz.makeConstructor (c$, \r
-function (seqcigararray) {\r
-if (!seqcigararray.isSeqCigarArray ()) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_can_only_make_alignmnet_from_cigararray"));\r
-}this.contigs = seqcigararray.getDeletedRegions ();\r
-this.sequences = seqcigararray.getSeqCigarArray ();\r
-this.width = seqcigararray.getWidth ();\r
-}, "jalview.datamodel.CigarArray");\r
-Clazz.makeConstructor (c$, \r
-function (sdata, firstcol) {\r
-this.construct (sdata);\r
-this.firstCol = firstcol;\r
-}, "jalview.datamodel.CigarArray,~N");\r
-Clazz.defineMethod (c$, "setSequences", \r
-function (sequences) {\r
-this.sequences = sequences;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "setContigs", \r
-function (contigs) {\r
-this.contigs = contigs;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "getSequences", \r
-function () {\r
-return this.sequences;\r
-});\r
-Clazz.defineMethod (c$, "getContigs", \r
-function () {\r
-return this.contigs;\r
-});\r
-Clazz.defineMethod (c$, "getAlignmentAndColumnSelection", \r
-function (gapCharacter) {\r
-var colsel =  new jalview.datamodel.ColumnSelection ();\r
-return  Clazz.newArray (-1, [jalview.datamodel.SeqCigar.createAlignmentSequences (this.sequences, gapCharacter, colsel, this.contigs), colsel]);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getVisibleAlignment", \r
-function (c) {\r
-var aln = this.getVisibleSeqs (c);\r
-var vcal =  new jalview.datamodel.Alignment (aln);\r
-this.addPrunedGroupsInOrder (vcal, -1, -1, true);\r
-return vcal;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "addPrunedGroupsInOrder", \r
-($fz = function (vcal, gstart, gend, viscontigs) {\r
-var r = false;\r
-if (gstart > -1 && gstart <= gend) {\r
-r = true;\r
-}var aln = vcal.getSequencesArray ();\r
-{\r
-{\r
-var nvg = (this.scGroups != null) ? this.scGroups.size () : 0;\r
-if (nvg > 0) {\r
-var nsg =  new Array (nvg);\r
-for (var g = 0; g < nvg; g++) {\r
-var sg = this.scGroups.get (g).sg;\r
-if (r) {\r
-if (sg.getStartRes () > gend || sg.getEndRes () < gstart) {\r
-nsg[g] = null;\r
-continue;\r
-}}nsg[g] =  new jalview.datamodel.SequenceGroup (sg);\r
-if (r && !viscontigs) {\r
-if (nsg[g].getStartRes () < gstart) {\r
-nsg[g].setStartRes (0);\r
-} else {\r
-nsg[g].setStartRes (nsg[g].getStartRes () - gstart);\r
-nsg[g].setEndRes (nsg[g].getEndRes () - gstart);\r
-}if (nsg[g].getEndRes () > (gend - gstart)) {\r
-nsg[g].setEndRes (gend - gstart);\r
-}}}\r
-if (viscontigs) {\r
-if (this.contigs != null) {\r
-var p = 0;\r
-var prune =  new jalview.util.ShiftList ();\r
-if (r) {\r
-prune.addShift (gstart, -gstart);\r
-}for (var h = 0; h < this.contigs.length; h += 3) {\r
-{\r
-prune.addShift (p + this.contigs[h + 1], this.contigs[h + 2] - this.contigs[h + 1]);\r
-}p = this.contigs[h + 1] + this.contigs[h + 2];\r
-}\r
-for (var g = 0; g < nsg.length; g++) {\r
-if (nsg[g] != null) {\r
-var s = nsg[g].getStartRes ();\r
-var t = nsg[g].getEndRes ();\r
-var w = 1 + t - s;\r
-if (r) {\r
-if (s < gstart) {\r
-s = gstart;\r
-}if (t > gend) {\r
-t = gend;\r
-}}s = prune.shift (s);\r
-t = prune.shift (t);\r
-nsg[g].setStartRes (s);\r
-nsg[g].setEndRes (t);\r
-}}\r
-}}for (var nsq = 0; nsq < aln.length; nsq++) {\r
-for (var g = 0; g < nvg; g++) {\r
-if (nsg[g] != null && this.sequences[nsq].isMemberOf (this.scGroups.get (g))) {\r
-nsg[g].addSequence (aln[nsq], false);\r
-}}\r
-}\r
-for (var g = 0; g < nvg; g++) {\r
-if (nsg[g] != null && nsg[g].getSize () > 0) {\r
-vcal.addGroup (nsg[g]);\r
-}nsg[g] = null;\r
-}\r
-}}}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,~N,~N,~B");\r
-Clazz.defineMethod (c$, "getVisibleSeqs", \r
-($fz = function (c) {\r
-var aln =  new Array (this.sequences.length);\r
-for (var i = 0, j = this.sequences.length; i < j; i++) {\r
-aln[i] = this.sequences[i].getSeq ('-');\r
-}\r
-var seqs = this.getSequenceStrings ('-');\r
-for (var i = 0, j = aln.length; i < j; i++) {\r
-aln[i].setSequence (seqs[i]);\r
-}\r
-return aln;\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "getVisibleContigAlignments", \r
-function (c) {\r
-var nvc = 0;\r
-var vcontigs = this.getVisibleContigs ();\r
-var contigviews = this.getVisibleContigs (c);\r
-var vcals =  new Array (contigviews.length);\r
-for (nvc = 0; nvc < contigviews.length; nvc++) {\r
-vcals[nvc] =  new jalview.datamodel.Alignment (contigviews[nvc]);\r
-if (this.scGroups != null && this.scGroups.size () > 0) {\r
-this.addPrunedGroupsInOrder (vcals[nvc], vcontigs[nvc * 2], vcontigs[nvc * 2 + 1], true);\r
-}}\r
-return vcals;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getSequenceStrings", \r
-function (c) {\r
-var seqs =  new Array (this.sequences.length);\r
-for (var n = 0; n < this.sequences.length; n++) {\r
-var fullseq = this.sequences[n].getSequenceString (c);\r
-if (this.contigs != null) {\r
-seqs[n] = "";\r
-var p = 0;\r
-for (var h = 0; h < this.contigs.length; h += 3) {\r
-seqs[n] += fullseq.substring (p, this.contigs[h + 1]);\r
-p = this.contigs[h + 1] + this.contigs[h + 2];\r
-}\r
-seqs[n] += fullseq.substring (p);\r
-} else {\r
-seqs[n] = fullseq;\r
-}}\r
-return seqs;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getWidth", \r
-function () {\r
-return this.width;\r
-});\r
-Clazz.defineMethod (c$, "setWidth", \r
-function (width) {\r
-this.width = width;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getVisibleContigs", \r
-function (gapCharacter) {\r
-var smsa;\r
-var njobs = 1;\r
-if (this.sequences == null || this.width <= 0) {\r
-return null;\r
-}if (this.contigs != null && this.contigs.length > 0) {\r
-var start = 0;\r
-njobs = 0;\r
-var fwidth = this.width;\r
-for (var contig = 0; contig < this.contigs.length; contig += 3) {\r
-if ((this.contigs[contig + 1] - start) > 0) {\r
-njobs++;\r
-}fwidth += this.contigs[contig + 2];\r
-start = this.contigs[contig + 1] + this.contigs[contig + 2];\r
-}\r
-if (start < fwidth) {\r
-njobs++;\r
-}smsa =  new Array (njobs);\r
-start = 0;\r
-var j = 0;\r
-for (var contig = 0; contig < this.contigs.length; contig += 3) {\r
-if (this.contigs[contig + 1] - start > 0) {\r
-var mseq =  new Array (this.sequences.length);\r
-for (var s = 0; s < mseq.length; s++) {\r
-mseq[s] = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, this.contigs[contig + 1]);\r
-}\r
-smsa[j] = mseq;\r
-j++;\r
-}start = this.contigs[contig + 1] + this.contigs[contig + 2];\r
-}\r
-if (start < fwidth) {\r
-var mseq =  new Array (this.sequences.length);\r
-for (var s = 0; s < mseq.length; s++) {\r
-mseq[s] = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, fwidth + 1);\r
-}\r
-smsa[j] = mseq;\r
-j++;\r
-}} else {\r
-smsa =  new Array (1);\r
-smsa[0] =  new Array (this.sequences.length);\r
-for (var s = 0; s < this.sequences.length; s++) {\r
-smsa[0][s] = this.sequences[s].getSeq (gapCharacter);\r
-}\r
-}return smsa;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getUpdatedView", \r
-function (nvismsa, orders, gapCharacter) {\r
-if (this.sequences == null || this.width <= 0) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.empty_view_cannot_be_updated"));\r
-}if (nvismsa == null) {\r
-throw  new Error ("nvismsa==null. use getAlignmentAndColumnSelection() instead.");\r
-}if (this.contigs != null && this.contigs.length > 0) {\r
-var alignment =  new Array (this.sequences.length);\r
-var columnselection =  new jalview.datamodel.ColumnSelection ();\r
-if (this.contigs != null && this.contigs.length > 0) {\r
-var start = 0;\r
-var nwidth = 0;\r
-var owidth = this.width;\r
-var j = 0;\r
-for (var contig = 0; contig < this.contigs.length; contig += 3) {\r
-owidth += this.contigs[contig + 2];\r
-if (this.contigs[contig + 1] - start > 0) {\r
-var swidth = 0;\r
-if (nvismsa[j] != null) {\r
-var mseq = nvismsa[j];\r
-var order = (orders == null) ? null : orders[j];\r
-j++;\r
-if (mseq.length != this.sequences.length) {\r
-throw  new Error (jalview.util.MessageManager.formatMessage ("error.mismatch_between_number_of_sequences_in_block",  Clazz.newArray (-1, [Integer.$valueOf (j).toString (), Integer.$valueOf (mseq.length).toString (), Integer.$valueOf (this.sequences.length).toString ()])));\r
-}swidth = mseq[0].getLength ();\r
-for (var s = 0; s < mseq.length; s++) {\r
-if (alignment[s] == null) {\r
-alignment[s] = mseq[s];\r
-} else {\r
-alignment[s].setSequence (alignment[s].getSequenceAsString () + mseq[s].getSequenceAsString ());\r
-if (mseq[s].getStart () <= mseq[s].getEnd ()) {\r
-alignment[s].setEnd (mseq[s].getEnd ());\r
-}if (order != null) {\r
-order.updateSequence (mseq[s], alignment[s]);\r
-}}}\r
-} else {\r
-if (true) {\r
-for (var s = 0; s < this.sequences.length; s++) {\r
-var oseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, this.contigs[contig + 1]);\r
-if (swidth < oseq.getLength ()) {\r
-swidth = oseq.getLength ();\r
-}if (alignment[s] == null) {\r
-alignment[s] = oseq;\r
-} else {\r
-alignment[s].setSequence (alignment[s].getSequenceAsString () + oseq.getSequenceAsString ());\r
-if (oseq.getEnd () >= oseq.getStart ()) {\r
-alignment[s].setEnd (oseq.getEnd ());\r
-}}}\r
-}j++;\r
-}nwidth += swidth;\r
-}start = this.contigs[contig + 1] + this.contigs[contig + 2];\r
-for (var s = 0; s < this.sequences.length; s++) {\r
-var hseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (this.contigs[contig + 1], start);\r
-if (alignment[s] == null) {\r
-alignment[s] = hseq;\r
-} else {\r
-alignment[s].setSequence (alignment[s].getSequenceAsString () + hseq.getSequenceAsString ());\r
-if (hseq.getEnd () >= hseq.getStart ()) {\r
-alignment[s].setEnd (hseq.getEnd ());\r
-}}}\r
-columnselection.hideColumns (nwidth, nwidth + this.contigs[contig + 2] - 1);\r
-nwidth += this.contigs[contig + 2];\r
-}\r
-if (j < nvismsa.length) {\r
-var swidth = 0;\r
-if (nvismsa[j] != null) {\r
-var mseq = nvismsa[j];\r
-var order = (orders != null) ? orders[j] : null;\r
-swidth = mseq[0].getLength ();\r
-for (var s = 0; s < mseq.length; s++) {\r
-if (alignment[s] == null) {\r
-alignment[s] = mseq[s];\r
-} else {\r
-alignment[s].setSequence (alignment[s].getSequenceAsString () + mseq[s].getSequenceAsString ());\r
-if (mseq[s].getEnd () >= mseq[s].getStart ()) {\r
-alignment[s].setEnd (mseq[s].getEnd ());\r
-}if (order != null) {\r
-order.updateSequence (mseq[s], alignment[s]);\r
-}}}\r
-} else {\r
-if (start < owidth) {\r
-if (true) {\r
-for (var s = 0; s < this.sequences.length; s++) {\r
-var oseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, owidth + 1);\r
-if (swidth < oseq.getLength ()) {\r
-swidth = oseq.getLength ();\r
-}if (alignment[s] == null) {\r
-alignment[s] = oseq;\r
-} else {\r
-alignment[s].setSequence (alignment[s].getSequenceAsString () + oseq.getSequenceAsString ());\r
-if (oseq.getEnd () >= oseq.getStart ()) {\r
-alignment[s].setEnd (oseq.getEnd ());\r
-}}}\r
-nwidth += swidth;\r
-} else {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.padding_not_yet_implemented"));\r
-}}}}}return  Clazz.newArray (-1, [alignment, columnselection]);\r
-} else {\r
-if (nvismsa.length != 1) {\r
-throw  new Error (jalview.util.MessageManager.formatMessage ("error.mismatch_between_visible_blocks_to_update_and_number_of_contigs_in_view",  Clazz.newArray (-1, [Integer.$valueOf (nvismsa.length).toString ()])));\r
-}if (nvismsa[0] != null) {\r
-return  Clazz.newArray (-1, [nvismsa[0],  new jalview.datamodel.ColumnSelection ()]);\r
-} else {\r
-return this.getAlignmentAndColumnSelection (gapCharacter);\r
-}}}, "~A,~A,~S");\r
-Clazz.defineMethod (c$, "getVisibleContigs", \r
-function () {\r
-if (this.contigs != null && this.contigs.length > 0) {\r
-var start = 0;\r
-var nvis = 0;\r
-var fwidth = this.width;\r
-for (var contig = 0; contig < this.contigs.length; contig += 3) {\r
-if ((this.contigs[contig + 1] - start) > 0) {\r
-nvis++;\r
-}fwidth += this.contigs[contig + 2];\r
-start = this.contigs[contig + 1] + this.contigs[contig + 2];\r
-}\r
-if (start < fwidth) {\r
-nvis++;\r
-}var viscontigs =  Clazz.newIntArray (nvis * 2, 0);\r
-nvis = 0;\r
-start = 0;\r
-for (var contig = 0; contig < this.contigs.length; contig += 3) {\r
-if ((this.contigs[contig + 1] - start) > 0) {\r
-viscontigs[nvis] = start;\r
-viscontigs[nvis + 1] = this.contigs[contig + 1] - 1;\r
-nvis += 2;\r
-}start = this.contigs[contig + 1] + this.contigs[contig + 2];\r
-}\r
-if (start < fwidth) {\r
-viscontigs[nvis] = start;\r
-viscontigs[nvis + 1] = fwidth;\r
-nvis += 2;\r
-}return viscontigs;\r
-} else {\r
-return  Clazz.newIntArray (-1, [0, this.width]);\r
-}});\r
-Clazz.defineMethod (c$, "getAlignmentOrigin", \r
-function () {\r
-return this.firstCol;\r
-});\r
-Clazz.defineMethod (c$, "getVisibleContigMapFor", \r
-function (gapMap) {\r
-var delMap = null;\r
-var viscontigs = this.getVisibleContigs ();\r
-var spos = 0;\r
-var i = 0;\r
-if (viscontigs != null) {\r
-delMap =  Clazz.newIntArray (gapMap.length, 0);\r
-for (var contig = 0; contig < viscontigs.length; contig += 2) {\r
-while (spos < gapMap.length && gapMap[spos] < viscontigs[contig]) {\r
-spos++;\r
-}\r
-while (spos < gapMap.length && gapMap[spos] <= viscontigs[contig + 1]) {\r
-delMap[i++] = spos++;\r
-}\r
-}\r
-var tmap =  Clazz.newIntArray (i, 0);\r
-System.arraycopy (delMap, 0, tmap, 0, i);\r
-delMap = tmap;\r
-}return delMap;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "getEditedSequences", \r
-function (gc, $delete) {\r
-var msf = this.getSequences ();\r
-var aln =  new Array (msf.length);\r
-for (var i = 0, j = msf.length; i < j; i++) {\r
-aln[i] = msf[i].getSeq (gc);\r
-}\r
-if ($delete) {\r
-var sqs = this.getSequenceStrings (gc);\r
-for (var i = 0; i < sqs.length; i++) {\r
-aln[i].setSequence (sqs[i]);\r
-sqs[i] = null;\r
-}\r
-}return aln;\r
-}, "~S,~B");\r
-c$.summariseAlignmentView = Clazz.defineMethod (c$, "summariseAlignmentView", \r
-function (view, os) {\r
-os.print ("View has " + view.sequences.length + " of which ");\r
-if (view.selected == null) {\r
-os.print ("None");\r
-} else {\r
-os.print (" " + view.selected.size ());\r
-}os.println (" are selected.");\r
-os.print ("View is " + view.getWidth () + " columns wide");\r
-var viswid = 0;\r
-var contigs = view.getContigs ();\r
-if (contigs != null) {\r
-viswid = view.width;\r
-for (var i = 0; i < contigs.length; i += 3) {\r
-viswid += contigs[i + 2];\r
-}\r
-os.println ("with " + viswid + " visible columns spread over " + Clazz.doubleToInt (contigs.length / 3) + " regions.");\r
-} else {\r
-viswid = view.width;\r
-os.println (".");\r
-}if (view.scGroups != null) {\r
-os.println ("There are " + view.scGroups.size () + " groups defined on the view.");\r
-for (var g = 0; g < view.scGroups.size (); g++) {\r
-var sgr = view.scGroups.get (g);\r
-os.println ("Group " + g + ": Name = " + sgr.sg.getName () + " Contains " + sgr.seqs.size () + " Seqs.");\r
-os.println ("This group runs from " + sgr.sg.getStartRes () + " to " + sgr.sg.getEndRes ());\r
-for (var s = 0; s < sgr.seqs.size (); s++) {\r
-if (!(sgr.seqs.elementAt (s)).isMemberOf (sgr)) {\r
-os.println ("** WARNING: sequence " + (sgr.seqs.elementAt (s)).toString () + " is not marked as member of group.");\r
-}}\r
-}\r
-var visal = view.getVisibleAlignment ('-');\r
-if (visal != null) {\r
-os.println ("Vis. alignment is " + visal.getWidth () + " wide and has " + visal.getHeight () + " seqs.");\r
-if (visal.getGroups () != null && visal.getGroups ().size () > 0) {\r
-var i = 1;\r
-for (var sg, $sg = visal.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-os.println ("Group " + (i++) + " begins at column " + sg.getStartRes () + " and ends at " + sg.getEndRes ());\r
-}\r
-}}}}, "jalview.datamodel.AlignmentView,java.io.PrintStream");\r
-c$.testSelectionViews = Clazz.defineMethod (c$, "testSelectionViews", \r
-function (alignment, csel, selection) {\r
-System.out.println ("Testing standard view creation:\n");\r
-var view = null;\r
-try {\r
-System.out.println ("View with no hidden columns, no limit to selection, no groups to be collected:");\r
-view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, false, false);\r
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-System.err.println ("Failed to generate alignment with selection but no groups marked.");\r
-} else {\r
-throw e;\r
-}\r
-}\r
-try {\r
-System.out.println ("View with no hidden columns, no limit to selection, and all groups to be collected:");\r
-view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, false, true);\r
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-System.err.println ("Failed to generate alignment with selection marked but no groups marked.");\r
-} else {\r
-throw e;\r
-}\r
-}\r
-try {\r
-System.out.println ("View with no hidden columns, limited to selection and no groups to be collected:");\r
-view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, true, false);\r
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-System.err.println ("Failed to generate alignment with selection restricted but no groups marked.");\r
-} else {\r
-throw e;\r
-}\r
-}\r
-try {\r
-System.out.println ("View with no hidden columns, limited to selection, and all groups to be collected:");\r
-view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, true, true);\r
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-System.err.println ("Failed to generate alignment with selection restricted and groups marked.");\r
-} else {\r
-throw e;\r
-}\r
-}\r
-try {\r
-System.out.println ("View *with* hidden columns, no limit to selection, no groups to be collected:");\r
-view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, false, false);\r
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-System.err.println ("Failed to generate alignment with selection but no groups marked.");\r
-} else {\r
-throw e;\r
-}\r
-}\r
-try {\r
-System.out.println ("View *with* hidden columns, no limit to selection, and all groups to be collected:");\r
-view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, false, true);\r
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-System.err.println ("Failed to generate alignment with selection marked but no groups marked.");\r
-} else {\r
-throw e;\r
-}\r
-}\r
-try {\r
-System.out.println ("View *with* hidden columns, limited to selection and no groups to be collected:");\r
-view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, true, false);\r
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-System.err.println ("Failed to generate alignment with selection restricted but no groups marked.");\r
-} else {\r
-throw e;\r
-}\r
-}\r
-try {\r
-System.out.println ("View *with* hidden columns, limited to selection, and all groups to be collected:");\r
-view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, true, true);\r
-jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-System.err.println ("Failed to generate alignment with selection restricted and groups marked.");\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");\r
-c$.$AlignmentView$ScGroup$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.seqs = null;\r
-this.sg = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel.AlignmentView, "ScGroup");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.seqs =  new java.util.Vector ();\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.AlignmentView", ["jalview.datamodel.Alignment", "$.CigarArray", "$.ColumnSelection", "$.SeqCigar", "$.SequenceGroup", "jalview.util.MessageManager", "$.ShiftList", "java.lang.Error", "java.util.ArrayList", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.sequences = null;
+this.contigs = null;
+this.width = 0;
+this.firstCol = 0;
+this.scGroups = null;
+this.$isNa = false;
+if (!Clazz.isClassDefined ("jalview.datamodel.AlignmentView.ScGroup")) {
+jalview.datamodel.AlignmentView.$AlignmentView$ScGroup$ ();
+}
+this.selected = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "AlignmentView");
+Clazz.defineMethod (c$, "isNa", 
+function () {
+return this.$isNa;
+});
+Clazz.makeConstructor (c$, 
+function (alignment, columnSelection, selection, hasHiddenColumns, selectedRegionOnly, recordGroups) {
+this.construct ( new jalview.datamodel.CigarArray (alignment, (hasHiddenColumns ? columnSelection : null), (selectedRegionOnly ? selection : null)), (selectedRegionOnly && selection != null) ? selection.getStartRes () : 0);
+this.$isNa = alignment.isNucleotide ();
+var selseqs;
+if (selection != null && selection.getSize () > 0) {
+var sel = selection.getSequences (null);
+this.selected =  new java.util.Vector ();
+selseqs = selection.getSequencesInOrder (alignment, selectedRegionOnly);
+} else {
+selseqs = alignment.getSequencesArray ();
+}var seqsets =  new java.util.ArrayList ();
+var grps =  new java.util.ArrayList ();
+var gg = alignment.getGroups ();
+grps.addAll (gg);
+var sgrps = null;
+var addedgps = null;
+if (grps != null) {
+if (selection != null && selectedRegionOnly) {
+var ssel = selection.getStartRes ();
+var esel = selection.getEndRes ();
+var isg =  new java.util.ArrayList ();
+for (var sg, $sg = grps.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (!(sg.getStartRes () > esel || sg.getEndRes () < ssel)) {
+if (sg.getStartRes () < ssel) {
+sg.setStartRes (ssel);
+}if (sg.getEndRes () > esel) {
+sg.setEndRes (esel);
+}sg.setStartRes (sg.getStartRes () - ssel + 1);
+sg.setEndRes (sg.getEndRes () - ssel + 1);
+isg.add (sg);
+}}
+grps = isg;
+}sgrps =  new Array (grps.size ());
+addedgps =  Clazz.newBooleanArray (grps.size (), false);
+for (var g = 0; g < sgrps.length; g++) {
+var sg = grps.get (g);
+sgrps[g] = Clazz.innerTypeInstance (jalview.datamodel.AlignmentView.ScGroup, this, null);
+sgrps[g].sg =  new jalview.datamodel.SequenceGroup (sg);
+addedgps[g] = false;
+seqsets.add (sg.getSequences ());
+}
+}var csi = 0;
+for (var i = 0; i < selseqs.length; i++) {
+if (selseqs[i] != null) {
+if (selection != null && selection.getSize () > 0 && !selectedRegionOnly) {
+this.sequences[csi].setGroupMembership (this.selected);
+this.selected.addElement (this.sequences[csi]);
+}if (seqsets != null) {
+for (var sg = 0; sg < sgrps.length; sg++) {
+if ((seqsets.get (sg)).contains (selseqs[i])) {
+this.sequences[csi].setGroupMembership (sgrps[sg]);
+sgrps[sg].sg.deleteSequence (selseqs[i], false);
+sgrps[sg].seqs.addElement (this.sequences[csi]);
+if (!addedgps[sg]) {
+if (this.scGroups == null) {
+this.scGroups =  new java.util.ArrayList ();
+}addedgps[sg] = true;
+this.scGroups.add (sgrps[sg]);
+}}}
+}csi++;
+}}
+for (var sg = 0; sg < sgrps.length; sg++) {
+var sqs = sgrps[sg].sg.getSequencesAsArray (null);
+for (var si = 0; si < sqs.length; si++) {
+sgrps[sg].sg.deleteSequence (sqs[si], false);
+}
+sgrps[sg] = null;
+}
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup,~B,~B,~B");
+Clazz.makeConstructor (c$, 
+function (seqcigararray) {
+if (!seqcigararray.isSeqCigarArray ()) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_can_only_make_alignmnet_from_cigararray"));
+}this.contigs = seqcigararray.getDeletedRegions ();
+this.sequences = seqcigararray.getSeqCigarArray ();
+this.width = seqcigararray.getWidth ();
+}, "jalview.datamodel.CigarArray");
+Clazz.makeConstructor (c$, 
+function (sdata, firstcol) {
+this.construct (sdata);
+this.firstCol = firstcol;
+}, "jalview.datamodel.CigarArray,~N");
+Clazz.defineMethod (c$, "setSequences", 
+function (sequences) {
+this.sequences = sequences;
+}, "~A");
+Clazz.defineMethod (c$, "setContigs", 
+function (contigs) {
+this.contigs = contigs;
+}, "~A");
+Clazz.defineMethod (c$, "getSequences", 
+function () {
+return this.sequences;
+});
+Clazz.defineMethod (c$, "getContigs", 
+function () {
+return this.contigs;
+});
+Clazz.defineMethod (c$, "getAlignmentAndColumnSelection", 
+function (gapCharacter) {
+var colsel =  new jalview.datamodel.ColumnSelection ();
+return  Clazz.newArray (-1, [jalview.datamodel.SeqCigar.createAlignmentSequences (this.sequences, gapCharacter, colsel, this.contigs), colsel]);
+}, "~S");
+Clazz.defineMethod (c$, "getVisibleAlignment", 
+function (c) {
+var aln = this.getVisibleSeqs (c);
+var vcal =  new jalview.datamodel.Alignment (aln);
+this.addPrunedGroupsInOrder (vcal, -1, -1, true);
+return vcal;
+}, "~S");
+Clazz.defineMethod (c$, "addPrunedGroupsInOrder", 
+($fz = function (vcal, gstart, gend, viscontigs) {
+var r = false;
+if (gstart > -1 && gstart <= gend) {
+r = true;
+}var aln = vcal.getSequencesArray ();
+{
+{
+var nvg = (this.scGroups != null) ? this.scGroups.size () : 0;
+if (nvg > 0) {
+var nsg =  new Array (nvg);
+for (var g = 0; g < nvg; g++) {
+var sg = this.scGroups.get (g).sg;
+if (r) {
+if (sg.getStartRes () > gend || sg.getEndRes () < gstart) {
+nsg[g] = null;
+continue;
+}}nsg[g] =  new jalview.datamodel.SequenceGroup (sg);
+if (r && !viscontigs) {
+if (nsg[g].getStartRes () < gstart) {
+nsg[g].setStartRes (0);
+} else {
+nsg[g].setStartRes (nsg[g].getStartRes () - gstart);
+nsg[g].setEndRes (nsg[g].getEndRes () - gstart);
+}if (nsg[g].getEndRes () > (gend - gstart)) {
+nsg[g].setEndRes (gend - gstart);
+}}}
+if (viscontigs) {
+if (this.contigs != null) {
+var p = 0;
+var prune =  new jalview.util.ShiftList ();
+if (r) {
+prune.addShift (gstart, -gstart);
+}for (var h = 0; h < this.contigs.length; h += 3) {
+{
+prune.addShift (p + this.contigs[h + 1], this.contigs[h + 2] - this.contigs[h + 1]);
+}p = this.contigs[h + 1] + this.contigs[h + 2];
+}
+for (var g = 0; g < nsg.length; g++) {
+if (nsg[g] != null) {
+var s = nsg[g].getStartRes ();
+var t = nsg[g].getEndRes ();
+var w = 1 + t - s;
+if (r) {
+if (s < gstart) {
+s = gstart;
+}if (t > gend) {
+t = gend;
+}}s = prune.shift (s);
+t = prune.shift (t);
+nsg[g].setStartRes (s);
+nsg[g].setEndRes (t);
+}}
+}}for (var nsq = 0; nsq < aln.length; nsq++) {
+for (var g = 0; g < nvg; g++) {
+if (nsg[g] != null && this.sequences[nsq].isMemberOf (this.scGroups.get (g))) {
+nsg[g].addSequence (aln[nsq], false);
+}}
+}
+for (var g = 0; g < nvg; g++) {
+if (nsg[g] != null && nsg[g].getSize () > 0) {
+vcal.addGroup (nsg[g]);
+}nsg[g] = null;
+}
+}}}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,~N,~N,~B");
+Clazz.defineMethod (c$, "getVisibleSeqs", 
+($fz = function (c) {
+var aln =  new Array (this.sequences.length);
+for (var i = 0, j = this.sequences.length; i < j; i++) {
+aln[i] = this.sequences[i].getSeq ('-');
+}
+var seqs = this.getSequenceStrings ('-');
+for (var i = 0, j = aln.length; i < j; i++) {
+aln[i].setSequence (seqs[i]);
+}
+return aln;
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "getVisibleContigAlignments", 
+function (c) {
+var nvc = 0;
+var vcontigs = this.getVisibleContigs ();
+var contigviews = this.getVisibleContigs (c);
+var vcals =  new Array (contigviews.length);
+for (nvc = 0; nvc < contigviews.length; nvc++) {
+vcals[nvc] =  new jalview.datamodel.Alignment (contigviews[nvc]);
+if (this.scGroups != null && this.scGroups.size () > 0) {
+this.addPrunedGroupsInOrder (vcals[nvc], vcontigs[nvc * 2], vcontigs[nvc * 2 + 1], true);
+}}
+return vcals;
+}, "~S");
+Clazz.defineMethod (c$, "getSequenceStrings", 
+function (c) {
+var seqs =  new Array (this.sequences.length);
+for (var n = 0; n < this.sequences.length; n++) {
+var fullseq = this.sequences[n].getSequenceString (c);
+if (this.contigs != null) {
+seqs[n] = "";
+var p = 0;
+for (var h = 0; h < this.contigs.length; h += 3) {
+seqs[n] += fullseq.substring (p, this.contigs[h + 1]);
+p = this.contigs[h + 1] + this.contigs[h + 2];
+}
+seqs[n] += fullseq.substring (p);
+} else {
+seqs[n] = fullseq;
+}}
+return seqs;
+}, "~S");
+Clazz.defineMethod (c$, "getWidth", 
+function () {
+return this.width;
+});
+Clazz.defineMethod (c$, "setWidth", 
+function (width) {
+this.width = width;
+}, "~N");
+Clazz.defineMethod (c$, "getVisibleContigs", 
+function (gapCharacter) {
+var smsa;
+var njobs = 1;
+if (this.sequences == null || this.width <= 0) {
+return null;
+}if (this.contigs != null && this.contigs.length > 0) {
+var start = 0;
+njobs = 0;
+var fwidth = this.width;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+if ((this.contigs[contig + 1] - start) > 0) {
+njobs++;
+}fwidth += this.contigs[contig + 2];
+start = this.contigs[contig + 1] + this.contigs[contig + 2];
+}
+if (start < fwidth) {
+njobs++;
+}smsa =  new Array (njobs);
+start = 0;
+var j = 0;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+if (this.contigs[contig + 1] - start > 0) {
+var mseq =  new Array (this.sequences.length);
+for (var s = 0; s < mseq.length; s++) {
+mseq[s] = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, this.contigs[contig + 1]);
+}
+smsa[j] = mseq;
+j++;
+}start = this.contigs[contig + 1] + this.contigs[contig + 2];
+}
+if (start < fwidth) {
+var mseq =  new Array (this.sequences.length);
+for (var s = 0; s < mseq.length; s++) {
+mseq[s] = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, fwidth + 1);
+}
+smsa[j] = mseq;
+j++;
+}} else {
+smsa =  new Array (1);
+smsa[0] =  new Array (this.sequences.length);
+for (var s = 0; s < this.sequences.length; s++) {
+smsa[0][s] = this.sequences[s].getSeq (gapCharacter);
+}
+}return smsa;
+}, "~S");
+Clazz.defineMethod (c$, "getUpdatedView", 
+function (nvismsa, orders, gapCharacter) {
+if (this.sequences == null || this.width <= 0) {
+throw  new Error (jalview.util.MessageManager.getString ("error.empty_view_cannot_be_updated"));
+}if (nvismsa == null) {
+throw  new Error ("nvismsa==null. use getAlignmentAndColumnSelection() instead.");
+}if (this.contigs != null && this.contigs.length > 0) {
+var alignment =  new Array (this.sequences.length);
+var columnselection =  new jalview.datamodel.ColumnSelection ();
+if (this.contigs != null && this.contigs.length > 0) {
+var start = 0;
+var nwidth = 0;
+var owidth = this.width;
+var j = 0;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+owidth += this.contigs[contig + 2];
+if (this.contigs[contig + 1] - start > 0) {
+var swidth = 0;
+if (nvismsa[j] != null) {
+var mseq = nvismsa[j];
+var order = (orders == null) ? null : orders[j];
+j++;
+if (mseq.length != this.sequences.length) {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.mismatch_between_number_of_sequences_in_block",  Clazz.newArray (-1, [Integer.$valueOf (j).toString (), Integer.$valueOf (mseq.length).toString (), Integer.$valueOf (this.sequences.length).toString ()])));
+}swidth = mseq[0].getLength ();
+for (var s = 0; s < mseq.length; s++) {
+if (alignment[s] == null) {
+alignment[s] = mseq[s];
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + mseq[s].getSequenceAsString ());
+if (mseq[s].getStart () <= mseq[s].getEnd ()) {
+alignment[s].setEnd (mseq[s].getEnd ());
+}if (order != null) {
+order.updateSequence (mseq[s], alignment[s]);
+}}}
+} else {
+if (true) {
+for (var s = 0; s < this.sequences.length; s++) {
+var oseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, this.contigs[contig + 1]);
+if (swidth < oseq.getLength ()) {
+swidth = oseq.getLength ();
+}if (alignment[s] == null) {
+alignment[s] = oseq;
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + oseq.getSequenceAsString ());
+if (oseq.getEnd () >= oseq.getStart ()) {
+alignment[s].setEnd (oseq.getEnd ());
+}}}
+}j++;
+}nwidth += swidth;
+}start = this.contigs[contig + 1] + this.contigs[contig + 2];
+for (var s = 0; s < this.sequences.length; s++) {
+var hseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (this.contigs[contig + 1], start);
+if (alignment[s] == null) {
+alignment[s] = hseq;
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + hseq.getSequenceAsString ());
+if (hseq.getEnd () >= hseq.getStart ()) {
+alignment[s].setEnd (hseq.getEnd ());
+}}}
+columnselection.hideColumns (nwidth, nwidth + this.contigs[contig + 2] - 1);
+nwidth += this.contigs[contig + 2];
+}
+if (j < nvismsa.length) {
+var swidth = 0;
+if (nvismsa[j] != null) {
+var mseq = nvismsa[j];
+var order = (orders != null) ? orders[j] : null;
+swidth = mseq[0].getLength ();
+for (var s = 0; s < mseq.length; s++) {
+if (alignment[s] == null) {
+alignment[s] = mseq[s];
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + mseq[s].getSequenceAsString ());
+if (mseq[s].getEnd () >= mseq[s].getStart ()) {
+alignment[s].setEnd (mseq[s].getEnd ());
+}if (order != null) {
+order.updateSequence (mseq[s], alignment[s]);
+}}}
+} else {
+if (start < owidth) {
+if (true) {
+for (var s = 0; s < this.sequences.length; s++) {
+var oseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, owidth + 1);
+if (swidth < oseq.getLength ()) {
+swidth = oseq.getLength ();
+}if (alignment[s] == null) {
+alignment[s] = oseq;
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + oseq.getSequenceAsString ());
+if (oseq.getEnd () >= oseq.getStart ()) {
+alignment[s].setEnd (oseq.getEnd ());
+}}}
+nwidth += swidth;
+} else {
+throw  new Error (jalview.util.MessageManager.getString ("error.padding_not_yet_implemented"));
+}}}}}return  Clazz.newArray (-1, [alignment, columnselection]);
+} else {
+if (nvismsa.length != 1) {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.mismatch_between_visible_blocks_to_update_and_number_of_contigs_in_view",  Clazz.newArray (-1, [Integer.$valueOf (nvismsa.length).toString ()])));
+}if (nvismsa[0] != null) {
+return  Clazz.newArray (-1, [nvismsa[0],  new jalview.datamodel.ColumnSelection ()]);
+} else {
+return this.getAlignmentAndColumnSelection (gapCharacter);
+}}}, "~A,~A,~S");
+Clazz.defineMethod (c$, "getVisibleContigs", 
+function () {
+if (this.contigs != null && this.contigs.length > 0) {
+var start = 0;
+var nvis = 0;
+var fwidth = this.width;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+if ((this.contigs[contig + 1] - start) > 0) {
+nvis++;
+}fwidth += this.contigs[contig + 2];
+start = this.contigs[contig + 1] + this.contigs[contig + 2];
+}
+if (start < fwidth) {
+nvis++;
+}var viscontigs =  Clazz.newIntArray (nvis * 2, 0);
+nvis = 0;
+start = 0;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+if ((this.contigs[contig + 1] - start) > 0) {
+viscontigs[nvis] = start;
+viscontigs[nvis + 1] = this.contigs[contig + 1] - 1;
+nvis += 2;
+}start = this.contigs[contig + 1] + this.contigs[contig + 2];
+}
+if (start < fwidth) {
+viscontigs[nvis] = start;
+viscontigs[nvis + 1] = fwidth;
+nvis += 2;
+}return viscontigs;
+} else {
+return  Clazz.newIntArray (-1, [0, this.width]);
+}});
+Clazz.defineMethod (c$, "getAlignmentOrigin", 
+function () {
+return this.firstCol;
+});
+Clazz.defineMethod (c$, "getVisibleContigMapFor", 
+function (gapMap) {
+var delMap = null;
+var viscontigs = this.getVisibleContigs ();
+var spos = 0;
+var i = 0;
+if (viscontigs != null) {
+delMap =  Clazz.newIntArray (gapMap.length, 0);
+for (var contig = 0; contig < viscontigs.length; contig += 2) {
+while (spos < gapMap.length && gapMap[spos] < viscontigs[contig]) {
+spos++;
+}
+while (spos < gapMap.length && gapMap[spos] <= viscontigs[contig + 1]) {
+delMap[i++] = spos++;
+}
+}
+var tmap =  Clazz.newIntArray (i, 0);
+System.arraycopy (delMap, 0, tmap, 0, i);
+delMap = tmap;
+}return delMap;
+}, "~A");
+Clazz.defineMethod (c$, "getEditedSequences", 
+function (gc, $delete) {
+var msf = this.getSequences ();
+var aln =  new Array (msf.length);
+for (var i = 0, j = msf.length; i < j; i++) {
+aln[i] = msf[i].getSeq (gc);
+}
+if ($delete) {
+var sqs = this.getSequenceStrings (gc);
+for (var i = 0; i < sqs.length; i++) {
+aln[i].setSequence (sqs[i]);
+sqs[i] = null;
+}
+}return aln;
+}, "~S,~B");
+c$.summariseAlignmentView = Clazz.defineMethod (c$, "summariseAlignmentView", 
+function (view, os) {
+os.print ("View has " + view.sequences.length + " of which ");
+if (view.selected == null) {
+os.print ("None");
+} else {
+os.print (" " + view.selected.size ());
+}os.println (" are selected.");
+os.print ("View is " + view.getWidth () + " columns wide");
+var viswid = 0;
+var contigs = view.getContigs ();
+if (contigs != null) {
+viswid = view.width;
+for (var i = 0; i < contigs.length; i += 3) {
+viswid += contigs[i + 2];
+}
+os.println ("with " + viswid + " visible columns spread over " + Clazz.doubleToInt (contigs.length / 3) + " regions.");
+} else {
+viswid = view.width;
+os.println (".");
+}if (view.scGroups != null) {
+os.println ("There are " + view.scGroups.size () + " groups defined on the view.");
+for (var g = 0; g < view.scGroups.size (); g++) {
+var sgr = view.scGroups.get (g);
+os.println ("Group " + g + ": Name = " + sgr.sg.getName () + " Contains " + sgr.seqs.size () + " Seqs.");
+os.println ("This group runs from " + sgr.sg.getStartRes () + " to " + sgr.sg.getEndRes ());
+for (var s = 0; s < sgr.seqs.size (); s++) {
+if (!(sgr.seqs.elementAt (s)).isMemberOf (sgr)) {
+os.println ("** WARNING: sequence " + (sgr.seqs.elementAt (s)).toString () + " is not marked as member of group.");
+}}
+}
+var visal = view.getVisibleAlignment ('-');
+if (visal != null) {
+os.println ("Vis. alignment is " + visal.getWidth () + " wide and has " + visal.getHeight () + " seqs.");
+if (visal.getGroups () != null && visal.getGroups ().size () > 0) {
+var i = 1;
+for (var sg, $sg = visal.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+os.println ("Group " + (i++) + " begins at column " + sg.getStartRes () + " and ends at " + sg.getEndRes ());
+}
+}}}}, "jalview.datamodel.AlignmentView,java.io.PrintStream");
+c$.testSelectionViews = Clazz.defineMethod (c$, "testSelectionViews", 
+function (alignment, csel, selection) {
+System.out.println ("Testing standard view creation:\n");
+var view = null;
+try {
+System.out.println ("View with no hidden columns, no limit to selection, no groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, false, false);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View with no hidden columns, no limit to selection, and all groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, false, true);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection marked but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View with no hidden columns, limited to selection and no groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, true, false);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection restricted but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View with no hidden columns, limited to selection, and all groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, true, true);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection restricted and groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View *with* hidden columns, no limit to selection, no groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, false, false);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View *with* hidden columns, no limit to selection, and all groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, false, true);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection marked but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View *with* hidden columns, limited to selection and no groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, true, false);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection restricted but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View *with* hidden columns, limited to selection, and all groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, true, true);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection restricted and groups marked.");
+} else {
+throw e;
+}
+}
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");
+c$.$AlignmentView$ScGroup$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.seqs = null;
+this.sg = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel.AlignmentView, "ScGroup");
+Clazz.makeConstructor (c$, 
+function () {
+this.seqs =  new java.util.Vector ();
+});
+c$ = Clazz.p0p ();
+};
+});
index 0dda32c..fd7a804 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.SequenceCollectionI"], "jalview.datamodel.AnnotatedCollectionI", null, function () {\r
-Clazz.declareInterface (jalview.datamodel, "AnnotatedCollectionI", jalview.datamodel.SequenceCollectionI);\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.SequenceCollectionI"], "jalview.datamodel.AnnotatedCollectionI", null, function () {
+Clazz.declareInterface (jalview.datamodel, "AnnotatedCollectionI", jalview.datamodel.SequenceCollectionI);
+});
index ad9b0f6..043f330 100644 (file)
Binary files a/bin/jalview/datamodel/Annotation.class and b/bin/jalview/datamodel/Annotation.class differ
index 92e1248..76f42d8 100644 (file)
@@ -1,72 +1,72 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (null, "jalview.datamodel.Annotation", ["java.lang.Float", "$.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.displayCharacter = "";\r
-this.description = "";\r
-this.secondaryStructure = ' ';\r
-this.value = 0;\r
-this.colour = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "Annotation");\r
-Clazz.makeConstructor (c$, \r
-function (displayChar, desc, ss, val) {\r
-this.displayCharacter = displayChar;\r
-this.description = desc;\r
-this.secondaryStructure = ss;\r
-this.value = val;\r
-}, "~S,~S,~S,~N");\r
-Clazz.makeConstructor (c$, \r
-function (displayChar, desc, ss, val, colour) {\r
-this.construct (displayChar, desc, ss, val);\r
-this.colour = colour;\r
-}, "~S,~S,~S,~N,java.awt.Color");\r
-Clazz.makeConstructor (c$, \r
-function (that) {\r
-if (that == null || this === that) {\r
-return;\r
-}if (that.displayCharacter != null) this.displayCharacter =  String.instantialize (that.displayCharacter);\r
-if (that.description != null) this.description =  String.instantialize (that.description);\r
-this.secondaryStructure = that.secondaryStructure;\r
-this.value = that.value;\r
-this.colour = that.colour;\r
-}, "jalview.datamodel.Annotation");\r
-Clazz.makeConstructor (c$, \r
-function (val) {\r
-this.construct (null, null, ' ', val, null);\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var sb =  new StringBuffer ();\r
-if (this.displayCharacter != null) {\r
-sb.append ("\'");\r
-sb.append (this.displayCharacter);\r
-sb.append ("\'");\r
-}{\r
-sb.append (",");\r
-}if (this.secondaryStructure.charCodeAt (0) != 0 && !("" + this.displayCharacter).equals ("" + this.secondaryStructure)) {\r
-sb.append ("\'");\r
-sb.append (this.secondaryStructure);\r
-sb.append ("\'");\r
-}{\r
-sb.append (",");\r
-}if (this.description != null && this.description.length > 0) {\r
-sb.append ("\"");\r
-sb.append (this.description);\r
-sb.append ("\"");\r
-}{\r
-sb.append (",");\r
-}if (!Float.isNaN (this.value)) {\r
-sb.append (this.value);\r
-}if (this.colour != null) {\r
-if (sb.length () > 0) {\r
-sb.append (",");\r
-}sb.append ("[");\r
-sb.append (this.colour.getRed ());\r
-sb.append (",");\r
-sb.append (this.colour.getGreen ());\r
-sb.append (",");\r
-sb.append (this.colour.getBlue ());\r
-sb.append ("]");\r
-}return sb.toString ();\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.Annotation", ["java.lang.Float", "$.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.displayCharacter = "";
+this.description = "";
+this.secondaryStructure = ' ';
+this.value = 0;
+this.colour = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "Annotation");
+Clazz.makeConstructor (c$, 
+function (displayChar, desc, ss, val) {
+this.displayCharacter = displayChar;
+this.description = desc;
+this.secondaryStructure = ss;
+this.value = val;
+}, "~S,~S,~S,~N");
+Clazz.makeConstructor (c$, 
+function (displayChar, desc, ss, val, colour) {
+this.construct (displayChar, desc, ss, val);
+this.colour = colour;
+}, "~S,~S,~S,~N,java.awt.Color");
+Clazz.makeConstructor (c$, 
+function (that) {
+if (that == null || this === that) {
+return;
+}if (that.displayCharacter != null) this.displayCharacter =  String.instantialize (that.displayCharacter);
+if (that.description != null) this.description =  String.instantialize (that.description);
+this.secondaryStructure = that.secondaryStructure;
+this.value = that.value;
+this.colour = that.colour;
+}, "jalview.datamodel.Annotation");
+Clazz.makeConstructor (c$, 
+function (val) {
+this.construct (null, null, ' ', val, null);
+}, "~N");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var sb =  new StringBuffer ();
+if (this.displayCharacter != null) {
+sb.append ("\'");
+sb.append (this.displayCharacter);
+sb.append ("\'");
+}{
+sb.append (",");
+}if (this.secondaryStructure.charCodeAt (0) != 0 && !("" + this.displayCharacter).equals ("" + this.secondaryStructure)) {
+sb.append ("\'");
+sb.append (this.secondaryStructure);
+sb.append ("\'");
+}{
+sb.append (",");
+}if (this.description != null && this.description.length > 0) {
+sb.append ("\"");
+sb.append (this.description);
+sb.append ("\"");
+}{
+sb.append (",");
+}if (!Float.isNaN (this.value)) {
+sb.append (this.value);
+}if (this.colour != null) {
+if (sb.length () > 0) {
+sb.append (",");
+}sb.append ("[");
+sb.append ("" + this.colour.getRed ());
+sb.append (",");
+sb.append ("" + this.colour.getGreen ());
+sb.append (",");
+sb.append ("" + this.colour.getBlue ());
+sb.append ("]");
+}return sb.toString ();
+});
+});
index 64fb764..7575508 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.$element = null;\r
-this.name = null;\r
-this.$left = null;\r
-this.$right = null;\r
-this.$parent = null;\r
-this.bootstrap = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "BinaryNode");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.$left = this.$right = this.$parent = null;\r
-this.bootstrap = 0;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (element, parent, name) {\r
-this.$element = element;\r
-this.$parent = parent;\r
-this.name = name;\r
-this.$left = this.$right = null;\r
-}, "~O,jalview.datamodel.BinaryNode,~S");\r
-Clazz.defineMethod (c$, "element", \r
-function () {\r
-return this.$element;\r
-});\r
-Clazz.defineMethod (c$, "setElement", \r
-function (v) {\r
-return this.$element = v;\r
-}, "~O");\r
-Clazz.defineMethod (c$, "left", \r
-function () {\r
-return this.$left;\r
-});\r
-Clazz.defineMethod (c$, "setLeft", \r
-function (n) {\r
-return this.$left = n;\r
-}, "jalview.datamodel.BinaryNode");\r
-Clazz.defineMethod (c$, "right", \r
-function () {\r
-return this.$right;\r
-});\r
-Clazz.defineMethod (c$, "setRight", \r
-function (n) {\r
-return this.$right = n;\r
-}, "jalview.datamodel.BinaryNode");\r
-Clazz.defineMethod (c$, "parent", \r
-function () {\r
-return this.$parent;\r
-});\r
-Clazz.defineMethod (c$, "setParent", \r
-function (n) {\r
-return this.$parent = n;\r
-}, "jalview.datamodel.BinaryNode");\r
-Clazz.defineMethod (c$, "isLeaf", \r
-function () {\r
-return (this.$left == null) && (this.$right == null);\r
-});\r
-Clazz.defineMethod (c$, "SetChildren", \r
-function (leftchild, rightchild) {\r
-if (leftchild != null) {\r
-this.setLeft (leftchild);\r
-leftchild.detach ();\r
-leftchild.setParent (this);\r
-}if (rightchild != null) {\r
-this.setRight (rightchild);\r
-rightchild.detach ();\r
-rightchild.setParent (this);\r
-}}, "jalview.datamodel.BinaryNode,jalview.datamodel.BinaryNode");\r
-Clazz.defineMethod (c$, "detach", \r
-function () {\r
-if (this.$parent != null) {\r
-if (this.$parent.$left === this) {\r
-this.$parent.$left = null;\r
-} else {\r
-if (this.$parent.$right === this) {\r
-this.$parent.$right = null;\r
-}}}this.$parent = null;\r
-return this;\r
-});\r
-Clazz.defineMethod (c$, "ascendLeft", \r
-function () {\r
-var c = this;\r
-do {\r
-c = c.parent ();\r
-} while ((c != null) && (c.left () != null) && !c.left ().isLeaf ());\r
-return c;\r
-});\r
-Clazz.defineMethod (c$, "ascendRight", \r
-function () {\r
-var c = this;\r
-do {\r
-c = c.parent ();\r
-} while ((c != null) && (c.right () != null) && !c.right ().isLeaf ());\r
-return c;\r
-});\r
-Clazz.defineMethod (c$, "setName", \r
-function (name) {\r
-this.name = name;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getName", \r
-function () {\r
-return this.name;\r
-});\r
-Clazz.defineMethod (c$, "setBootstrap", \r
-function (boot) {\r
-this.bootstrap = boot;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getBootstrap", \r
-function () {\r
-return this.bootstrap;\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.decorateAsClass (function () {
+this.$element = null;
+this.name = null;
+this.$left = null;
+this.$right = null;
+this.$parent = null;
+this.bootstrap = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "BinaryNode");
+Clazz.makeConstructor (c$, 
+function () {
+this.$left = this.$right = this.$parent = null;
+this.bootstrap = 0;
+});
+Clazz.makeConstructor (c$, 
+function (element, parent, name) {
+this.$element = element;
+this.$parent = parent;
+this.name = name;
+this.$left = this.$right = null;
+}, "~O,jalview.datamodel.BinaryNode,~S");
+Clazz.defineMethod (c$, "element", 
+function () {
+return this.$element;
+});
+Clazz.defineMethod (c$, "setElement", 
+function (v) {
+return this.$element = v;
+}, "~O");
+Clazz.defineMethod (c$, "left", 
+function () {
+return this.$left;
+});
+Clazz.defineMethod (c$, "setLeft", 
+function (n) {
+return this.$left = n;
+}, "jalview.datamodel.BinaryNode");
+Clazz.defineMethod (c$, "right", 
+function () {
+return this.$right;
+});
+Clazz.defineMethod (c$, "setRight", 
+function (n) {
+return this.$right = n;
+}, "jalview.datamodel.BinaryNode");
+Clazz.defineMethod (c$, "parent", 
+function () {
+return this.$parent;
+});
+Clazz.defineMethod (c$, "setParent", 
+function (n) {
+return this.$parent = n;
+}, "jalview.datamodel.BinaryNode");
+Clazz.defineMethod (c$, "isLeaf", 
+function () {
+return (this.$left == null) && (this.$right == null);
+});
+Clazz.defineMethod (c$, "SetChildren", 
+function (leftchild, rightchild) {
+if (leftchild != null) {
+this.setLeft (leftchild);
+leftchild.detach ();
+leftchild.setParent (this);
+}if (rightchild != null) {
+this.setRight (rightchild);
+rightchild.detach ();
+rightchild.setParent (this);
+}}, "jalview.datamodel.BinaryNode,jalview.datamodel.BinaryNode");
+Clazz.defineMethod (c$, "detach", 
+function () {
+if (this.$parent != null) {
+if (this.$parent.$left === this) {
+this.$parent.$left = null;
+} else {
+if (this.$parent.$right === this) {
+this.$parent.$right = null;
+}}}this.$parent = null;
+return this;
+});
+Clazz.defineMethod (c$, "ascendLeft", 
+function () {
+var c = this;
+do {
+c = c.parent ();
+} while ((c != null) && (c.left () != null) && !c.left ().isLeaf ());
+return c;
+});
+Clazz.defineMethod (c$, "ascendRight", 
+function () {
+var c = this;
+do {
+c = c.parent ();
+} while ((c != null) && (c.right () != null) && !c.right ().isLeaf ());
+return c;
+});
+Clazz.defineMethod (c$, "setName", 
+function (name) {
+this.name = name;
+}, "~S");
+Clazz.defineMethod (c$, "getName", 
+function () {
+return this.name;
+});
+Clazz.defineMethod (c$, "setBootstrap", 
+function (boot) {
+this.bootstrap = boot;
+}, "~N");
+Clazz.defineMethod (c$, "getBootstrap", 
+function () {
+return this.bootstrap;
+});
index 2285387..90b6b95 100644 (file)
@@ -1,99 +1,99 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.Sequence", "java.lang.Exception"], "jalview.datamodel.BinarySequence", ["jalview.schemes.ResidueProperties"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-if (!Clazz.isClassDefined ("jalview.datamodel.BinarySequence.InvalidSequenceTypeException")) {\r
-jalview.datamodel.BinarySequence.$BinarySequence$InvalidSequenceTypeException$ ();\r
-}\r
-this.binary = null;\r
-this.dbinary = null;\r
-this.isNa = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "BinarySequence", jalview.datamodel.Sequence);\r
-Clazz.makeConstructor (c$, \r
-function (s, isNa) {\r
-Clazz.superConstructor (this, jalview.datamodel.BinarySequence, ["", s, 0, s.length]);\r
-this.isNa = isNa;\r
-}, "~S,~B");\r
-Clazz.defineMethod (c$, "initMatrixGetNoRes", \r
-($fz = function () {\r
-var nores = (this.isNa) ? 10 : 23;\r
-this.dbinary =  Clazz.newDoubleArray (this.getSequence ().length * nores, 0);\r
-for (var i = 0; i < this.dbinary.length; i++) {\r
-this.dbinary[i] = 0.0;\r
-}\r
-return nores;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "getSymbolmatrix", \r
-($fz = function () {\r
-return (this.isNa) ? jalview.schemes.ResidueProperties.nucleotideIndex : jalview.schemes.ResidueProperties.aaIndex;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "encode", \r
-function () {\r
-var nores = this.initMatrixGetNoRes ();\r
-var sindex = this.getSymbolmatrix ();\r
-for (var i = 0; i < this.getSequence ().length; i++) {\r
-var aanum = nores - 1;\r
-try {\r
-aanum = sindex[this.getCharAt (i).charCodeAt (0)];\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, NullPointerException)) {\r
-aanum = nores - 1;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (aanum >= nores) {\r
-aanum = nores - 1;\r
-}this.dbinary[(i * nores) + aanum] = 1.0;\r
-}\r
-});\r
-Clazz.defineMethod (c$, "matrixEncode", \r
-function (matrix) {\r
-if (this.isNa != matrix.isDNA ()) {\r
-throw Clazz.innerTypeInstance (jalview.datamodel.BinarySequence.InvalidSequenceTypeException, this, null, "matrix " + matrix.getClass ().getCanonicalName () + " is not a valid matrix for " + (this.isNa ? "nucleotide" : "protein") + "sequences");\r
-}this.matrixEncode (matrix.isDNA () ? jalview.schemes.ResidueProperties.nucleotideIndex : jalview.schemes.ResidueProperties.aaIndex, matrix.getMatrix ());\r
-}, "jalview.schemes.ScoreMatrix");\r
-Clazz.defineMethod (c$, "matrixEncode", \r
-($fz = function (aaIndex, matrix) {\r
-var nores = this.initMatrixGetNoRes ();\r
-for (var i = 0, iSize = this.getSequence ().length; i < iSize; i++) {\r
-var aanum = nores - 1;\r
-try {\r
-aanum = aaIndex[this.getCharAt (i).charCodeAt (0)];\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, NullPointerException)) {\r
-aanum = nores - 1;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (aanum >= nores) {\r
-aanum = nores - 1;\r
-}for (var j = 0; j < nores; j++) {\r
-this.dbinary[(i * nores) + j] = matrix[aanum][j];\r
-}\r
-}\r
-}, $fz.isPrivate = true, $fz), "~A,~A");\r
-Clazz.defineMethod (c$, "toBinaryString", \r
-function () {\r
-var out = "";\r
-for (var i = 0; i < this.binary.length; i++) {\r
-out += ( new Integer (this.binary[i])).toString ();\r
-if (i < (this.binary.length - 1)) {\r
-out += " ";\r
-}}\r
-return out;\r
-});\r
-Clazz.defineMethod (c$, "getDBinary", \r
-function () {\r
-return this.dbinary;\r
-});\r
-c$.$BinarySequence$InvalidSequenceTypeException$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel.BinarySequence, "InvalidSequenceTypeException", Exception);\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.Sequence", "java.lang.Exception"], "jalview.datamodel.BinarySequence", ["jalview.schemes.ResidueProperties"], function () {
+c$ = Clazz.decorateAsClass (function () {
+if (!Clazz.isClassDefined ("jalview.datamodel.BinarySequence.InvalidSequenceTypeException")) {
+jalview.datamodel.BinarySequence.$BinarySequence$InvalidSequenceTypeException$ ();
+}
+this.binary = null;
+this.dbinary = null;
+this.isNa = false;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "BinarySequence", jalview.datamodel.Sequence);
+Clazz.makeConstructor (c$, 
+function (s, isNa) {
+Clazz.superConstructor (this, jalview.datamodel.BinarySequence, ["", s, 0, s.length]);
+this.isNa = isNa;
+}, "~S,~B");
+Clazz.defineMethod (c$, "initMatrixGetNoRes", 
+($fz = function () {
+var nores = (this.isNa) ? 10 : 23;
+this.dbinary =  Clazz.newDoubleArray (this.getSequence ().length * nores, 0);
+for (var i = 0; i < this.dbinary.length; i++) {
+this.dbinary[i] = 0.0;
+}
+return nores;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getSymbolmatrix", 
+($fz = function () {
+return (this.isNa) ? jalview.schemes.ResidueProperties.nucleotideIndex : jalview.schemes.ResidueProperties.aaIndex;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "encode", 
+function () {
+var nores = this.initMatrixGetNoRes ();
+var sindex = this.getSymbolmatrix ();
+for (var i = 0; i < this.getSequence ().length; i++) {
+var aanum = nores - 1;
+try {
+aanum = sindex[this.getCharAt (i).charCodeAt (0)];
+} catch (e) {
+if (Clazz.exceptionOf (e, NullPointerException)) {
+aanum = nores - 1;
+} else {
+throw e;
+}
+}
+if (aanum >= nores) {
+aanum = nores - 1;
+}this.dbinary[(i * nores) + aanum] = 1.0;
+}
+});
+Clazz.defineMethod (c$, "matrixEncode", 
+function (matrix) {
+if (this.isNa != matrix.isDNA ()) {
+throw Clazz.innerTypeInstance (jalview.datamodel.BinarySequence.InvalidSequenceTypeException, this, null, "matrix " + matrix.getClass ().getCanonicalName () + " is not a valid matrix for " + (this.isNa ? "nucleotide" : "protein") + "sequences");
+}this.matrixEncode (matrix.isDNA () ? jalview.schemes.ResidueProperties.nucleotideIndex : jalview.schemes.ResidueProperties.aaIndex, matrix.getMatrix ());
+}, "jalview.schemes.ScoreMatrix");
+Clazz.defineMethod (c$, "matrixEncode", 
+($fz = function (aaIndex, matrix) {
+var nores = this.initMatrixGetNoRes ();
+for (var i = 0, iSize = this.getSequence ().length; i < iSize; i++) {
+var aanum = nores - 1;
+try {
+aanum = aaIndex[this.getCharAt (i).charCodeAt (0)];
+} catch (e) {
+if (Clazz.exceptionOf (e, NullPointerException)) {
+aanum = nores - 1;
+} else {
+throw e;
+}
+}
+if (aanum >= nores) {
+aanum = nores - 1;
+}for (var j = 0; j < nores; j++) {
+this.dbinary[(i * nores) + j] = matrix[aanum][j];
+}
+}
+}, $fz.isPrivate = true, $fz), "~A,~A");
+Clazz.defineMethod (c$, "toBinaryString", 
+function () {
+var out = "";
+for (var i = 0; i < this.binary.length; i++) {
+out += ( new Integer (this.binary[i])).toString ();
+if (i < (this.binary.length - 1)) {
+out += " ";
+}}
+return out;
+});
+Clazz.defineMethod (c$, "getDBinary", 
+function () {
+return this.dbinary;
+});
+c$.$BinarySequence$InvalidSequenceTypeException$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel.BinarySequence, "InvalidSequenceTypeException", Exception);
+c$ = Clazz.p0p ();
+};
+});
index c31f49e..10b48a9 100644 (file)
Binary files a/bin/jalview/datamodel/CigarArray.class and b/bin/jalview/datamodel/CigarArray.class differ
index b18df9f..7f45aff 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.CigarBase"], "jalview.datamodel.CigarArray", ["jalview.datamodel.CigarCigar", "$.SeqCigar", "java.lang.StringBuffer", "java.util.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.refCigars = null;\r
-this.seqcigararray = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "CigarArray", jalview.datamodel.CigarBase);\r
-Clazz.defineMethod (c$, "isSeqCigarArray", \r
-function () {\r
-return this.seqcigararray;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (cigars) {\r
-Clazz.superConstructor (this, jalview.datamodel.CigarArray);\r
-this.seqcigararray = true;\r
-if (cigars != null && cigars.length > 0) {\r
-this.refCigars =  new Array (cigars.length);\r
-for (var c = 0; c < cigars.length; c++) {\r
-this.refCigars[c] = cigars[c];\r
-if (!((Clazz.instanceOf (cigars[c], jalview.datamodel.SeqCigar)) || Clazz.instanceOf (cigars[c], jalview.datamodel.CigarCigar))) {\r
-this.seqcigararray = false;\r
-}}\r
-}}, "~A");\r
-Clazz.makeConstructor (c$, \r
-function (alignment, columnSelection, selectionGroup) {\r
-this.construct (jalview.datamodel.CigarArray.constructSeqCigarArray (alignment, selectionGroup));\r
-this.constructFromAlignment (alignment, columnSelection != null ? columnSelection.getHiddenColumns () : null, selectionGroup);\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");\r
-c$._calcStartEndBounds = Clazz.defineMethod (c$, "_calcStartEndBounds", \r
-($fz = function (alignment, selectionGroup) {\r
-var startend =  Clazz.newIntArray (-1, [0, 0, 0]);\r
-if (selectionGroup != null) {\r
-startend[0] = selectionGroup.getSize ();\r
-startend[1] = selectionGroup.getStartRes ();\r
-startend[2] = selectionGroup.getEndRes ();\r
-} else {\r
-startend[0] = alignment.getHeight ();\r
-startend[2] = alignment.getWidth () - 1;\r
-}return startend;\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");\r
-c$.constructSeqCigarArray = Clazz.defineMethod (c$, "constructSeqCigarArray", \r
-function (alignment, selectionGroup) {\r
-var seqs = null;\r
-var i;\r
-var iSize;\r
-var _startend = jalview.datamodel.CigarArray._calcStartEndBounds (alignment, selectionGroup);\r
-var start = _startend[1];\r
-var end = _startend[2];\r
-if (selectionGroup != null) {\r
-iSize = selectionGroup.getSize ();\r
-seqs = selectionGroup.getSequencesInOrder (alignment);\r
-start = selectionGroup.getStartRes ();\r
-end = selectionGroup.getEndRes ();\r
-} else {\r
-iSize = alignment.getHeight ();\r
-seqs = alignment.getSequencesArray ();\r
-end = alignment.getWidth () - 1;\r
-}var selseqs =  new Array (iSize);\r
-for (i = 0; i < iSize; i++) {\r
-selseqs[i] =  new jalview.datamodel.SeqCigar (seqs[i], start, end);\r
-}\r
-return selseqs;\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");\r
-Clazz.defineMethod (c$, "constructFromAlignment", \r
-($fz = function (alignment, list, selectionGroup) {\r
-var _startend = jalview.datamodel.CigarArray._calcStartEndBounds (alignment, selectionGroup);\r
-var start = _startend[1];\r
-var end = _startend[2];\r
-if (list != null) {\r
-var region;\r
-var hideStart;\r
-var hideEnd;\r
-var last = start;\r
-for (var j = 0;  new Boolean (last < end & j < list.size ()).valueOf (); j++) {\r
-region = list.get (j);\r
-hideStart = region[0];\r
-hideEnd = region[1];\r
-if (hideStart < last) {\r
-if (hideEnd > last) {\r
-hideStart = last;\r
-} else {\r
-continue;\r
-}}if (hideStart > end) {\r
-break;\r
-}if (hideEnd > end) {\r
-hideEnd = end;\r
-}if (hideStart > hideEnd) {\r
-break;\r
-}if (last < hideStart) {\r
-this.addOperation ('M', hideStart - last);\r
-}this.addOperation ('D', 1 + hideEnd - hideStart);\r
-last = hideEnd + 1;\r
-}\r
-if (last < end) {\r
-this.addOperation ('M', end - last + 1);\r
-}} else {\r
-this.addOperation ('M', end - start + 1);\r
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,java.util.List,jalview.datamodel.SequenceGroup");\r
-Clazz.defineMethod (c$, "getArrayofSequenceAndDeletions", \r
-function (GapChar) {\r
-if (this.refCigars == null || this.refCigars.length == 0 || this.length == 0) {\r
-return null;\r
-}var sqanddels =  new Array (this.refCigars.length);\r
-for (var c = 0; c < this.refCigars.length; c++) {\r
-var refString = this.refCigars[c].getSequenceString (GapChar);\r
-if (refString != null) {\r
-sqanddels[c] = this.getSequenceAndDeletions (refString, GapChar);\r
-} else {\r
-sqanddels[c] = null;\r
-}}\r
-return sqanddels;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getSequenceString", \r
-function (GapChar) {\r
-if (this.length == 0 || this.refCigars == null) {\r
-return "";\r
-}var seqStrings =  new StringBuffer ();\r
-var sqanddels = this.getArrayofSequenceAndDeletions (GapChar);\r
-for (var c = 0; c < this.refCigars.length; c++) {\r
-if (sqanddels[c] != null) {\r
-seqStrings.append (sqanddels[c][0]);\r
-sqanddels[c][0] = null;\r
-}seqStrings.append ('\n');\r
-}\r
-return seqStrings.toString ();\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getSequenceStrings", \r
-function (GapChar) {\r
-if (this.length == 0 || this.refCigars == null || this.refCigars.length == 0) {\r
-return null;\r
-}var sqanddels = this.getArrayofSequenceAndDeletions (GapChar);\r
-var seqs =  new Array (sqanddels.length);\r
-for (var c = 0; c < this.refCigars.length; c++) {\r
-seqs[c] = sqanddels[c][0];\r
-}\r
-return seqs;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "applyDeletions", \r
-function () {\r
-var delpos = null;\r
-if (this.length == 0) {\r
-return null;\r
-}var cursor = 0;\r
-var vcursor = 0;\r
-var offset = 0;\r
-var i = 0;\r
-while (i < this.length) {\r
-if (this.operation[i] != 'D') {\r
-if (this.operation[i] == 'M') {\r
-cursor += this.range[i];\r
-}vcursor += this.range[i++];\r
-} else {\r
-if (delpos == null) {\r
-delpos =  new java.util.Vector ();\r
-}var delstart = cursor;\r
-var delend = cursor + this.range[i] - 1;\r
-delpos.addElement ( Clazz.newIntArray (-1, [vcursor + offset, this.range[i]]));\r
-offset += this.range[i] - 1;\r
-System.arraycopy (this.operation, i + 1, this.operation, i, this.length - i);\r
-System.arraycopy (this.range, i + 1, this.range, i, this.length - i);\r
-this.length--;\r
-for (var s = 0; s < this.refCigars.length; s++) {\r
-var d = this.refCigars[s].deleteRange (delstart, delend);\r
-}\r
-}}\r
-if (delpos != null) {\r
-var pos =  Clazz.newIntArray (delpos.size () * 2, 0);\r
-for (var k = 0, l = delpos.size (); k < l; k++) {\r
-var dr = (delpos.elementAt (k));\r
-pos[k * 2] = dr[0];\r
-pos[k * 2 + 1] = dr[1];\r
-delpos.setElementAt (null, k);\r
-}\r
-delpos = null;\r
-return pos;\r
-}return null;\r
-});\r
-Clazz.defineMethod (c$, "getSeqCigarArray", \r
-function () {\r
-if (!this.isSeqCigarArray ()) {\r
-return null;\r
-}var sa =  new Array (this.refCigars.length);\r
-for (var i = 0; i < this.refCigars.length; i++) {\r
-sa[i] = this.refCigars[i];\r
-}\r
-return sa;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.CigarBase"], "jalview.datamodel.CigarArray", ["jalview.datamodel.CigarCigar", "$.SeqCigar", "java.lang.StringBuffer", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.refCigars = null;
+this.seqcigararray = false;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "CigarArray", jalview.datamodel.CigarBase);
+Clazz.defineMethod (c$, "isSeqCigarArray", 
+function () {
+return this.seqcigararray;
+});
+Clazz.makeConstructor (c$, 
+function (cigars) {
+Clazz.superConstructor (this, jalview.datamodel.CigarArray);
+this.seqcigararray = true;
+if (cigars != null && cigars.length > 0) {
+this.refCigars =  new Array (cigars.length);
+for (var c = 0; c < cigars.length; c++) {
+this.refCigars[c] = cigars[c];
+if (!((Clazz.instanceOf (cigars[c], jalview.datamodel.SeqCigar)) || Clazz.instanceOf (cigars[c], jalview.datamodel.CigarCigar))) {
+this.seqcigararray = false;
+}}
+}}, "~A");
+Clazz.makeConstructor (c$, 
+function (alignment, columnSelection, selectionGroup) {
+this.construct (jalview.datamodel.CigarArray.constructSeqCigarArray (alignment, selectionGroup));
+this.constructFromAlignment (alignment, columnSelection != null ? columnSelection.getHiddenColumns () : null, selectionGroup);
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");
+c$._calcStartEndBounds = Clazz.defineMethod (c$, "_calcStartEndBounds", 
+($fz = function (alignment, selectionGroup) {
+var startend =  Clazz.newIntArray (-1, [0, 0, 0]);
+if (selectionGroup != null) {
+startend[0] = selectionGroup.getSize ();
+startend[1] = selectionGroup.getStartRes ();
+startend[2] = selectionGroup.getEndRes ();
+} else {
+startend[0] = alignment.getHeight ();
+startend[2] = alignment.getWidth () - 1;
+}return startend;
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
+c$.constructSeqCigarArray = Clazz.defineMethod (c$, "constructSeqCigarArray", 
+function (alignment, selectionGroup) {
+var seqs = null;
+var i;
+var iSize;
+var _startend = jalview.datamodel.CigarArray._calcStartEndBounds (alignment, selectionGroup);
+var start = _startend[1];
+var end = _startend[2];
+if (selectionGroup != null) {
+iSize = selectionGroup.getSize ();
+seqs = selectionGroup.getSequencesInOrder (alignment);
+start = selectionGroup.getStartRes ();
+end = selectionGroup.getEndRes ();
+} else {
+iSize = alignment.getHeight ();
+seqs = alignment.getSequencesArray ();
+end = alignment.getWidth () - 1;
+}var selseqs =  new Array (iSize);
+for (i = 0; i < iSize; i++) {
+selseqs[i] =  new jalview.datamodel.SeqCigar (seqs[i], start, end);
+}
+return selseqs;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "constructFromAlignment", 
+($fz = function (alignment, list, selectionGroup) {
+var _startend = jalview.datamodel.CigarArray._calcStartEndBounds (alignment, selectionGroup);
+var start = _startend[1];
+var end = _startend[2];
+if (list != null) {
+var region;
+var hideStart;
+var hideEnd;
+var last = start;
+for (var j = 0;  new Boolean (last < end & j < list.size ()).valueOf (); j++) {
+region = list.get (j);
+hideStart = region[0];
+hideEnd = region[1];
+if (hideStart < last) {
+if (hideEnd > last) {
+hideStart = last;
+} else {
+continue;
+}}if (hideStart > end) {
+break;
+}if (hideEnd > end) {
+hideEnd = end;
+}if (hideStart > hideEnd) {
+break;
+}if (last < hideStart) {
+this.addOperation ('M', hideStart - last);
+}this.addOperation ('D', 1 + hideEnd - hideStart);
+last = hideEnd + 1;
+}
+if (last < end) {
+this.addOperation ('M', end - last + 1);
+}} else {
+this.addOperation ('M', end - start + 1);
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,java.util.List,jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "getArrayofSequenceAndDeletions", 
+function (GapChar) {
+if (this.refCigars == null || this.refCigars.length == 0 || this.length == 0) {
+return null;
+}var sqanddels =  new Array (this.refCigars.length);
+for (var c = 0; c < this.refCigars.length; c++) {
+var refString = this.refCigars[c].getSequenceString (GapChar);
+if (refString != null) {
+sqanddels[c] = this.getSequenceAndDeletions (refString, GapChar);
+} else {
+sqanddels[c] = null;
+}}
+return sqanddels;
+}, "~S");
+Clazz.defineMethod (c$, "getSequenceString", 
+function (GapChar) {
+if (this.length == 0 || this.refCigars == null) {
+return "";
+}var seqStrings =  new StringBuffer ();
+var sqanddels = this.getArrayofSequenceAndDeletions (GapChar);
+for (var c = 0; c < this.refCigars.length; c++) {
+if (sqanddels[c] != null) {
+seqStrings.append (sqanddels[c][0]);
+sqanddels[c][0] = null;
+}seqStrings.append ('\n');
+}
+return seqStrings.toString ();
+}, "~S");
+Clazz.defineMethod (c$, "getSequenceStrings", 
+function (GapChar) {
+if (this.length == 0 || this.refCigars == null || this.refCigars.length == 0) {
+return null;
+}var sqanddels = this.getArrayofSequenceAndDeletions (GapChar);
+var seqs =  new Array (sqanddels.length);
+for (var c = 0; c < this.refCigars.length; c++) {
+seqs[c] = sqanddels[c][0];
+}
+return seqs;
+}, "~S");
+Clazz.defineMethod (c$, "applyDeletions", 
+function () {
+var delpos = null;
+if (this.length == 0) {
+return null;
+}var cursor = 0;
+var vcursor = 0;
+var offset = 0;
+var i = 0;
+while (i < this.length) {
+if (this.operation[i] != 'D') {
+if (this.operation[i] == 'M') {
+cursor += this.range[i];
+}vcursor += this.range[i++];
+} else {
+if (delpos == null) {
+delpos =  new java.util.Vector ();
+}var delstart = cursor;
+var delend = cursor + this.range[i] - 1;
+delpos.addElement ( Clazz.newIntArray (-1, [vcursor + offset, this.range[i]]));
+offset += this.range[i] - 1;
+System.arraycopy (this.operation, i + 1, this.operation, i, this.length - i);
+System.arraycopy (this.range, i + 1, this.range, i, this.length - i);
+this.length--;
+for (var s = 0; s < this.refCigars.length; s++) {
+var d = this.refCigars[s].deleteRange (delstart, delend);
+}
+}}
+if (delpos != null) {
+var pos =  Clazz.newIntArray (delpos.size () * 2, 0);
+for (var k = 0, l = delpos.size (); k < l; k++) {
+var dr = (delpos.elementAt (k));
+pos[k * 2] = dr[0];
+pos[k * 2 + 1] = dr[1];
+delpos.setElementAt (null, k);
+}
+delpos = null;
+return pos;
+}return null;
+});
+Clazz.defineMethod (c$, "getSeqCigarArray", 
+function () {
+if (!this.isSeqCigarArray ()) {
+return null;
+}var sa =  new Array (this.refCigars.length);
+for (var i = 0; i < this.refCigars.length; i++) {
+sa[i] = this.refCigars[i];
+}
+return sa;
+});
+});
index d658368..7417a4d 100644 (file)
Binary files a/bin/jalview/datamodel/CigarBase.class and b/bin/jalview/datamodel/CigarBase.class differ
index bd75085..5b88b3f 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (null, "jalview.datamodel.CigarBase", ["jalview.util.MessageManager", "java.lang.Error", "$.Exception", "$.StringBuffer", "java.util.Vector", "javajs.util.AU"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.length = 0;\r
-this._inc_length = 10;\r
-this.operation = null;\r
-this.range = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "CigarBase");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "getSequenceAndDeletions", \r
-function (reference, GapChar) {\r
-var rlength = 0;\r
-var deletions = javajs.util.AU.newInt2 (this.length);\r
-var trunc_deletions = null;\r
-var sq =  new StringBuffer ();\r
-var cursor = 0;\r
-var alcursor = 0;\r
-var start = 0;\r
-var startpos = 0;\r
-var end = 0;\r
-var endpos = 0;\r
-var delcount = -1;\r
-var consecutive_del = false;\r
-if (this.length == 0) {\r
-return null;\r
-}if (reference != null) {\r
-rlength = reference.length;\r
-}var modstart = true;\r
-for (var i = 0; i < this.length; i++) {\r
-switch (this.operation[i]) {\r
-case 'D':\r
-if (!consecutive_del) {\r
-deletions[++delcount] =  Clazz.newIntArray (-1, [cursor, 0, alcursor]);\r
-}cursor += this.range[i];\r
-deletions[delcount][1] = cursor - 1;\r
-consecutive_del = true;\r
-break;\r
-case 'I':\r
-consecutive_del = false;\r
-for (var r = 0; r < this.range[i]; r++) {\r
-sq.append (GapChar);\r
-alcursor++;\r
-}\r
-break;\r
-case 'M':\r
-consecutive_del = false;\r
-if (modstart) {\r
-start = cursor;\r
-startpos = alcursor;\r
-modstart = false;\r
-}if (reference != null) {\r
-var sbend = cursor + this.range[i];\r
-if (sbend > rlength) {\r
-sq.append (reference.substring (cursor, rlength));\r
-while (sbend-- >= rlength) {\r
-sq.append (GapChar);\r
-}\r
-} else {\r
-sq.append (reference.substring (cursor, sbend));\r
-}}alcursor += this.range[i];\r
-cursor += this.range[i];\r
-end = cursor - 1;\r
-endpos = alcursor;\r
-break;\r
-default:\r
-throw  new Error (jalview.util.MessageManager.formatMessage ("error.unknown_seq_cigar_operation",  Clazz.newArray (-1, [ new StringBuffer (this.operation[i].charCodeAt (0)).toString ()])));\r
-}\r
-}\r
-if (++delcount > 0) {\r
-trunc_deletions =  Clazz.newIntArray (delcount, 0);\r
-System.arraycopy (deletions, 0, trunc_deletions, 0, delcount);\r
-}deletions = null;\r
-return  Clazz.newArray (-1, [((reference != null) ? sq.toString () : null),  Clazz.newIntArray (-1, [start, startpos, end, endpos]), trunc_deletions]);\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "compact_operations", \r
-function () {\r
-var i = 1;\r
-if (this.operation == null) {\r
-return;\r
-}var last = this.operation[0];\r
-while (i < this.length) {\r
-if (last == this.operation[i]) {\r
-this.range[i - 1] += this.range[i];\r
-var r = this.length - i;\r
-if (r > 0) {\r
-System.arraycopy (this.range, i + 1, this.range, i, r);\r
-System.arraycopy (this.operation, i + 1, this.operation, i, r);\r
-}this.length--;\r
-} else {\r
-last = this.operation[i++];\r
-}}\r
-});\r
-c$.parseCigarString = Clazz.defineMethod (c$, "parseCigarString", \r
-function (cigarString) {\r
-var ops = 0;\r
-for (var i = 0, l = cigarString.length; i < l; i++) {\r
-var c = cigarString.charAt (i);\r
-if (c == 'M' || c.charCodeAt (0) == (45) || c == 'I' || c.charCodeAt (0) == (41) || c == 'D' || c.charCodeAt (0) == (36)) {\r
-ops++;\r
-}}\r
-var operation =  Clazz.newCharArray (ops, '\0');\r
-var range =  Clazz.newIntArray (ops, 0);\r
-var op = 0;\r
-var i = 0;\r
-var l = cigarString.length;\r
-while (i < l) {\r
-var c;\r
-var j = i;\r
-do {\r
-c = cigarString.charAt (j++);\r
-} while (c >= '0' && c <= '9' && j < l);\r
-if (j >= l && c >= '0' && c <= '9') {\r
-throw  new Exception (jalview.util.MessageManager.getString ("exception.unterminated_cigar_string"));\r
-}try {\r
-var rangeint = cigarString.substring (i, j - 1);\r
-range[op] = Integer.parseInt (rangeint);\r
-i = j;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_bug_parse_cigar_string"));\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (c >= 'a' && c <= 'z') {\r
-c = String.fromCharCode (c.charCodeAt (0) - 32);\r
-}if ((c == 'M' || c == 'I' || c == 'D')) {\r
-operation[op++] = c;\r
-} else {\r
-throw  new Exception (jalview.util.MessageManager.formatMessage ("exception.unexpected_operation_cigar_string_pos",  Clazz.newArray (-1, [ new StringBuffer (c.charCodeAt (0)).toString (), Integer.$valueOf (i).toString (), cigarString])));\r
-}}\r
-return  Clazz.newArray (-1, [operation, range]);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "addOperation", \r
-function (op, range) {\r
-if (op >= 'a' && op <= 'z') {\r
-op = String.fromCharCode (op.charCodeAt (0) - 32);\r
-}if (op != 'M' && op != 'D' && op != 'I') {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_invalid_operation_string"));\r
-}if (range == 0) {\r
-return;\r
-}if (range < 0) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.invalid_range_string"));\r
-}var lngth = 0;\r
-if (this.operation == null) {\r
-this.operation =  Clazz.newCharArray (this._inc_length, '\0');\r
-this.range =  Clazz.newIntArray (this._inc_length, 0);\r
-}if (this.length + 1 == this.operation.length) {\r
-var ops = this.operation;\r
-this.operation =  Clazz.newCharArray (this.length + 1 + this._inc_length, '\0');\r
-System.arraycopy (ops, 0, this.operation, 0, this.length);\r
-ops = null;\r
-var rng = this.range;\r
-this.range =  Clazz.newIntArray (this.length + 1 + this._inc_length, 0);\r
-System.arraycopy (rng, 0, this.range, 0, this.length);\r
-rng = null;\r
-}if ((this.length > 0) && (this.operation[this.length - 1] == op)) {\r
-this.length--;\r
-} else {\r
-this.range[this.length] = 0;\r
-}this.operation[this.length] = op;\r
-this.range[this.length++] += range;\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "deleteRange", \r
-function (start, end) {\r
-var deleted = 0;\r
-if (this.length == 0) {\r
-return deleted;\r
-}if (start < 0 || start > end) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_delete_range_out_of_bounds"));\r
-}var cursor = 0;\r
-var rlength = 1 + end - start;\r
-var oldlen = this.length;\r
-var o = 0;\r
-var editing = false;\r
-var oldops = this.operation;\r
-var oldrange = this.range;\r
-this.length = 0;\r
-this.operation = null;\r
-this.range = null;\r
-this.compact_operations ();\r
-while (o < oldlen && cursor <= end && rlength > 0) {\r
-if (oldops[o] == 'D') {\r
-this.addDeleted (oldrange[o++]);\r
-continue;\r
-}var remain = oldrange[o];\r
-if (!editing) {\r
-if ((cursor + remain) <= start) {\r
-this.addOperation (oldops[o], oldrange[o]);\r
-cursor += oldrange[o++];\r
-continue;\r
-}editing = true;\r
-if (start - cursor > 0) {\r
-this.addOperation (oldops[o], start - cursor);\r
-remain -= start - cursor;\r
-}}if (o < oldlen && editing && rlength > 0 && remain > 0) {\r
-switch (oldops[o]) {\r
-case 'M':\r
-if (rlength > remain) {\r
-this.addDeleted (remain);\r
-deleted += remain;\r
-} else {\r
-deleted += rlength;\r
-this.addDeleted (rlength);\r
-if (remain - rlength > 0) {\r
-this.addOperation ('M', remain - rlength);\r
-}rlength = 0;\r
-remain = 0;\r
-}break;\r
-case 'I':\r
-if (remain - rlength > 0) {\r
-this.addInsertion (remain - rlength);\r
-rlength = 0;\r
-}break;\r
-case 'D':\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error"));\r
-default:\r
-throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_unknown_operation",  Clazz.newArray (-1, [ new StringBuffer (oldops[o].charCodeAt (0)).toString ()])));\r
-}\r
-rlength -= remain;\r
-remain = oldrange[++o];\r
-}}\r
-while (o < oldlen) {\r
-this.addOperation (oldops[o], oldrange[o++]);\r
-}\r
-return deleted;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "hasDeletedRegions", \r
-function () {\r
-for (var i = 0; i < this.length; i++) {\r
-if (this.operation[i] == 'D') {\r
-return true;\r
-}}\r
-return false;\r
-});\r
-Clazz.defineMethod (c$, "getDeletedRegions", \r
-function () {\r
-if (this.length == 0) {\r
-return null;\r
-}var dr =  new java.util.Vector ();\r
-var cursor = 0;\r
-var vcursor = 0;\r
-for (var i = 0; i < this.length; i++) {\r
-switch (this.operation[i]) {\r
-case 'M':\r
-cursor += this.range[i];\r
-case 'I':\r
-vcursor += this.range[i];\r
-break;\r
-case 'D':\r
-dr.addElement ( Clazz.newIntArray (-1, [vcursor, cursor, this.range[i]]));\r
-cursor += this.range[i];\r
-}\r
-}\r
-if (dr.size () == 0) {\r
-return null;\r
-}var delregions =  Clazz.newIntArray (dr.size () * 3, 0);\r
-for (var i = 0, l = dr.size (); i < l; i++) {\r
-var reg = dr.elementAt (i);\r
-delregions[i * 3] = reg[0];\r
-delregions[i * 3 + 1] = reg[1];\r
-delregions[i * 3 + 2] = reg[2];\r
-}\r
-return delregions;\r
-});\r
-Clazz.defineMethod (c$, "getFullWidth", \r
-function () {\r
-var w = 0;\r
-if (this.range != null) {\r
-for (var i = 0; i < this.length; i++) {\r
-w += this.range[i];\r
-}\r
-}return w;\r
-});\r
-Clazz.defineMethod (c$, "getWidth", \r
-function () {\r
-var w = 0;\r
-if (this.range != null) {\r
-for (var i = 0; i < this.length; i++) {\r
-if (this.operation[i] == 'M' || this.operation[i] == 'I') {\r
-w += this.range[i];\r
-}}\r
-}return w;\r
-});\r
-Clazz.defineMethod (c$, "addInsertion", \r
-function (range) {\r
-this.addOperation ('I', range);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "addDeleted", \r
-function (range) {\r
-this.addOperation ('D', range);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getCigarstring", \r
-function () {\r
-var cigarString =  new StringBuffer ();\r
-for (var i = 0; i < this.length; i++) {\r
-cigarString.append ("" + this.range[i]);\r
-cigarString.append (this.operation[i]);\r
-}\r
-return cigarString.toString ();\r
-});\r
-Clazz.defineStatics (c$,\r
-"D", 'D',\r
-"I", 'I',\r
-"M", 'M',\r
-"_case_shift", String.fromCharCode (32));\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.CigarBase", ["jalview.util.MessageManager", "java.lang.Error", "$.Exception", "$.StringBuffer", "java.util.Vector", "javajs.util.AU"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.length = 0;
+this._inc_length = 10;
+this.operation = null;
+this.range = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "CigarBase");
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.defineMethod (c$, "getSequenceAndDeletions", 
+function (reference, GapChar) {
+var rlength = 0;
+var deletions = javajs.util.AU.newInt2 (this.length);
+var trunc_deletions = null;
+var sq =  new StringBuffer ();
+var cursor = 0;
+var alcursor = 0;
+var start = 0;
+var startpos = 0;
+var end = 0;
+var endpos = 0;
+var delcount = -1;
+var consecutive_del = false;
+if (this.length == 0) {
+return null;
+}if (reference != null) {
+rlength = reference.length;
+}var modstart = true;
+for (var i = 0; i < this.length; i++) {
+switch (this.operation[i]) {
+case 'D':
+if (!consecutive_del) {
+deletions[++delcount] =  Clazz.newIntArray (-1, [cursor, 0, alcursor]);
+}cursor += this.range[i];
+deletions[delcount][1] = cursor - 1;
+consecutive_del = true;
+break;
+case 'I':
+consecutive_del = false;
+for (var r = 0; r < this.range[i]; r++) {
+sq.append (GapChar);
+alcursor++;
+}
+break;
+case 'M':
+consecutive_del = false;
+if (modstart) {
+start = cursor;
+startpos = alcursor;
+modstart = false;
+}if (reference != null) {
+var sbend = cursor + this.range[i];
+if (sbend > rlength) {
+sq.append (reference.substring (cursor, rlength));
+while (sbend-- >= rlength) {
+sq.append (GapChar);
+}
+} else {
+sq.append (reference.substring (cursor, sbend));
+}}alcursor += this.range[i];
+cursor += this.range[i];
+end = cursor - 1;
+endpos = alcursor;
+break;
+default:
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.unknown_seq_cigar_operation",  Clazz.newArray (-1, [ new StringBuffer (this.operation[i].charCodeAt (0)).toString ()])));
+}
+}
+if (++delcount > 0) {
+trunc_deletions =  Clazz.newIntArray (delcount, 0);
+System.arraycopy (deletions, 0, trunc_deletions, 0, delcount);
+}deletions = null;
+return  Clazz.newArray (-1, [((reference != null) ? sq.toString () : null),  Clazz.newIntArray (-1, [start, startpos, end, endpos]), trunc_deletions]);
+}, "~S,~S");
+Clazz.defineMethod (c$, "compact_operations", 
+function () {
+var i = 1;
+if (this.operation == null) {
+return;
+}var last = this.operation[0];
+while (i < this.length) {
+if (last == this.operation[i]) {
+this.range[i - 1] += this.range[i];
+var r = this.length - i;
+if (r > 0) {
+System.arraycopy (this.range, i + 1, this.range, i, r);
+System.arraycopy (this.operation, i + 1, this.operation, i, r);
+}this.length--;
+} else {
+last = this.operation[i++];
+}}
+});
+c$.parseCigarString = Clazz.defineMethod (c$, "parseCigarString", 
+function (cigarString) {
+var ops = 0;
+for (var i = 0, l = cigarString.length; i < l; i++) {
+var c = cigarString.charAt (i);
+if (c == 'M' || c.charCodeAt (0) == (45) || c == 'I' || c.charCodeAt (0) == (41) || c == 'D' || c.charCodeAt (0) == (36)) {
+ops++;
+}}
+var operation =  Clazz.newCharArray (ops, '\0');
+var range =  Clazz.newIntArray (ops, 0);
+var op = 0;
+var i = 0;
+var l = cigarString.length;
+while (i < l) {
+var c;
+var j = i;
+do {
+c = cigarString.charAt (j++);
+} while (c >= '0' && c <= '9' && j < l);
+if (j >= l && c >= '0' && c <= '9') {
+throw  new Exception (jalview.util.MessageManager.getString ("exception.unterminated_cigar_string"));
+}try {
+var rangeint = cigarString.substring (i, j - 1);
+range[op] = Integer.parseInt (rangeint);
+i = j;
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_bug_parse_cigar_string"));
+} else {
+throw e;
+}
+}
+if (c >= 'a' && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) - 32);
+}if ((c == 'M' || c == 'I' || c == 'D')) {
+operation[op++] = c;
+} else {
+throw  new Exception (jalview.util.MessageManager.formatMessage ("exception.unexpected_operation_cigar_string_pos",  Clazz.newArray (-1, [ new StringBuffer (c.charCodeAt (0)).toString (), Integer.$valueOf (i).toString (), cigarString])));
+}}
+return  Clazz.newArray (-1, [operation, range]);
+}, "~S");
+Clazz.defineMethod (c$, "addOperation", 
+function (op, range) {
+if (op >= 'a' && op <= 'z') {
+op = String.fromCharCode (op.charCodeAt (0) - 32);
+}if (op != 'M' && op != 'D' && op != 'I') {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_invalid_operation_string"));
+}if (range == 0) {
+return;
+}if (range < 0) {
+throw  new Error (jalview.util.MessageManager.getString ("error.invalid_range_string"));
+}var lngth = 0;
+if (this.operation == null) {
+this.operation =  Clazz.newCharArray (this._inc_length, '\0');
+this.range =  Clazz.newIntArray (this._inc_length, 0);
+}if (this.length + 1 == this.operation.length) {
+var ops = this.operation;
+this.operation =  Clazz.newCharArray (this.length + 1 + this._inc_length, '\0');
+System.arraycopy (ops, 0, this.operation, 0, this.length);
+ops = null;
+var rng = this.range;
+this.range =  Clazz.newIntArray (this.length + 1 + this._inc_length, 0);
+System.arraycopy (rng, 0, this.range, 0, this.length);
+rng = null;
+}if ((this.length > 0) && (this.operation[this.length - 1] == op)) {
+this.length--;
+} else {
+this.range[this.length] = 0;
+}this.operation[this.length] = op;
+this.range[this.length++] += range;
+}, "~S,~N");
+Clazz.defineMethod (c$, "deleteRange", 
+function (start, end) {
+var deleted = 0;
+if (this.length == 0) {
+return deleted;
+}if (start < 0 || start > end) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_delete_range_out_of_bounds"));
+}var cursor = 0;
+var rlength = 1 + end - start;
+var oldlen = this.length;
+var o = 0;
+var editing = false;
+var oldops = this.operation;
+var oldrange = this.range;
+this.length = 0;
+this.operation = null;
+this.range = null;
+this.compact_operations ();
+while (o < oldlen && cursor <= end && rlength > 0) {
+if (oldops[o] == 'D') {
+this.addDeleted (oldrange[o++]);
+continue;
+}var remain = oldrange[o];
+if (!editing) {
+if ((cursor + remain) <= start) {
+this.addOperation (oldops[o], oldrange[o]);
+cursor += oldrange[o++];
+continue;
+}editing = true;
+if (start - cursor > 0) {
+this.addOperation (oldops[o], start - cursor);
+remain -= start - cursor;
+}}if (o < oldlen && editing && rlength > 0 && remain > 0) {
+switch (oldops[o]) {
+case 'M':
+if (rlength > remain) {
+this.addDeleted (remain);
+deleted += remain;
+} else {
+deleted += rlength;
+this.addDeleted (rlength);
+if (remain - rlength > 0) {
+this.addOperation ('M', remain - rlength);
+}rlength = 0;
+remain = 0;
+}break;
+case 'I':
+if (remain - rlength > 0) {
+this.addInsertion (remain - rlength);
+rlength = 0;
+}break;
+case 'D':
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error"));
+default:
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_unknown_operation",  Clazz.newArray (-1, [ new StringBuffer (oldops[o].charCodeAt (0)).toString ()])));
+}
+rlength -= remain;
+remain = oldrange[++o];
+}}
+while (o < oldlen) {
+this.addOperation (oldops[o], oldrange[o++]);
+}
+return deleted;
+}, "~N,~N");
+Clazz.defineMethod (c$, "hasDeletedRegions", 
+function () {
+for (var i = 0; i < this.length; i++) {
+if (this.operation[i] == 'D') {
+return true;
+}}
+return false;
+});
+Clazz.defineMethod (c$, "getDeletedRegions", 
+function () {
+if (this.length == 0) {
+return null;
+}var dr =  new java.util.Vector ();
+var cursor = 0;
+var vcursor = 0;
+for (var i = 0; i < this.length; i++) {
+switch (this.operation[i]) {
+case 'M':
+cursor += this.range[i];
+case 'I':
+vcursor += this.range[i];
+break;
+case 'D':
+dr.addElement ( Clazz.newIntArray (-1, [vcursor, cursor, this.range[i]]));
+cursor += this.range[i];
+}
+}
+if (dr.size () == 0) {
+return null;
+}var delregions =  Clazz.newIntArray (dr.size () * 3, 0);
+for (var i = 0, l = dr.size (); i < l; i++) {
+var reg = dr.elementAt (i);
+delregions[i * 3] = reg[0];
+delregions[i * 3 + 1] = reg[1];
+delregions[i * 3 + 2] = reg[2];
+}
+return delregions;
+});
+Clazz.defineMethod (c$, "getFullWidth", 
+function () {
+var w = 0;
+if (this.range != null) {
+for (var i = 0; i < this.length; i++) {
+w += this.range[i];
+}
+}return w;
+});
+Clazz.defineMethod (c$, "getWidth", 
+function () {
+var w = 0;
+if (this.range != null) {
+for (var i = 0; i < this.length; i++) {
+if (this.operation[i] == 'M' || this.operation[i] == 'I') {
+w += this.range[i];
+}}
+}return w;
+});
+Clazz.defineMethod (c$, "addInsertion", 
+function (range) {
+this.addOperation ('I', range);
+}, "~N");
+Clazz.defineMethod (c$, "addDeleted", 
+function (range) {
+this.addOperation ('D', range);
+}, "~N");
+Clazz.defineMethod (c$, "getCigarstring", 
+function () {
+var cigarString =  new StringBuffer ();
+for (var i = 0; i < this.length; i++) {
+cigarString.append ("" + this.range[i]);
+cigarString.append (this.operation[i]);
+}
+return cigarString.toString ();
+});
+Clazz.defineStatics (c$,
+"D", 'D',
+"I", 'I',
+"M", 'M',
+"_case_shift", String.fromCharCode (32));
+});
index 12f3e39..9448de4 100644 (file)
@@ -1,22 +1,22 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.CigarSimple"], "jalview.datamodel.CigarCigar", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.refCigar = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "CigarCigar", jalview.datamodel.CigarSimple);\r
-Clazz.makeConstructor (c$, \r
-function (cigar) {\r
-Clazz.superConstructor (this, jalview.datamodel.CigarCigar);\r
-this.refCigar = cigar;\r
-}, "jalview.datamodel.SeqCigar");\r
-Clazz.overrideMethod (c$, "getSequenceString", \r
-function (GapChar) {\r
-if (this.length == 0) {\r
-return "";\r
-}var refString = this.refCigar.getSequenceString (GapChar);\r
-if (refString != null) {\r
-return (this.length == 0) ? "" : this.getSequenceAndDeletions (refString, GapChar)[0];\r
-} else {\r
-return null;\r
-}}, "~S");\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.CigarSimple"], "jalview.datamodel.CigarCigar", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.refCigar = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "CigarCigar", jalview.datamodel.CigarSimple);
+Clazz.makeConstructor (c$, 
+function (cigar) {
+Clazz.superConstructor (this, jalview.datamodel.CigarCigar);
+this.refCigar = cigar;
+}, "jalview.datamodel.SeqCigar");
+Clazz.overrideMethod (c$, "getSequenceString", 
+function (GapChar) {
+if (this.length == 0) {
+return "";
+}var refString = this.refCigar.getSequenceString (GapChar);
+if (refString != null) {
+return (this.length == 0) ? "" : this.getSequenceAndDeletions (refString, GapChar)[0];
+} else {
+return null;
+}}, "~S");
+});
index 776f62a..1f9da1c 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.CigarBase"], "jalview.datamodel.CigarSimple", null, function () {\r
-c$ = Clazz.declareType (jalview.datamodel, "CigarSimple", jalview.datamodel.CigarBase);\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.CigarBase"], "jalview.datamodel.CigarSimple", null, function () {
+c$ = Clazz.declareType (jalview.datamodel, "CigarSimple", jalview.datamodel.CigarBase);
+});
index c770c96..e80a262 100644 (file)
Binary files a/bin/jalview/datamodel/ColumnSelection.class and b/bin/jalview/datamodel/ColumnSelection.class differ
index 6cab54c..b9e3e99 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["java.util.Vector"], "jalview.datamodel.ColumnSelection", ["jalview.util.ShiftList", "jalview.viewmodel.annotationfilter.AnnotationFilterParameter", "java.lang.StringBuffer", "java.util.ArrayList", "$.Collections"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.selected = null;\r
-this.hiddenColumns = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "ColumnSelection");\r
-Clazz.prepareFields (c$, function () {\r
-this.selected =  new java.util.Vector ();\r
-});\r
-Clazz.defineMethod (c$, "addElement", \r
-function (col) {\r
-var column =  new Integer (col);\r
-if (!this.selected.contains (column)) {\r
-this.selected.addElement (column);\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "clear", \r
-function () {\r
-this.selected.removeAllElements ();\r
-});\r
-Clazz.defineMethod (c$, "removeElement", \r
-function (col) {\r
-var colInt =  new Integer (col);\r
-if (this.selected.contains (colInt)) {\r
-this.selected.removeElement (colInt);\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "removeElements", \r
-function (start, end) {\r
-var colInt;\r
-for (var i = start; i < end; i++) {\r
-colInt =  new Integer (i);\r
-if (this.selected.contains (colInt)) {\r
-this.selected.removeElement (colInt);\r
-}}\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getSelected", \r
-function () {\r
-return this.selected;\r
-});\r
-Clazz.defineMethod (c$, "contains", \r
-function (col) {\r
-return this.selected.contains ( new Integer (col));\r
-}, "~N");\r
-Clazz.defineMethod (c$, "columnAt", \r
-function (i) {\r
-return this.selected.elementAt (i).intValue ();\r
-}, "~N");\r
-Clazz.defineMethod (c$, "size", \r
-function () {\r
-return this.selected.size ();\r
-});\r
-Clazz.defineMethod (c$, "getMax", \r
-function () {\r
-var max = -1;\r
-for (var i = 0; i < this.selected.size (); i++) {\r
-if (this.columnAt (i) > max) {\r
-max = this.columnAt (i);\r
-}}\r
-return max;\r
-});\r
-Clazz.defineMethod (c$, "getMin", \r
-function () {\r
-var min = 1000000000;\r
-for (var i = 0; i < this.selected.size (); i++) {\r
-if (this.columnAt (i) < min) {\r
-min = this.columnAt (i);\r
-}}\r
-return min;\r
-});\r
-Clazz.defineMethod (c$, "compensateForEdit", \r
-function (start, change) {\r
-var deletedHiddenColumns = null;\r
-for (var i = 0; i < this.size (); i++) {\r
-var temp = this.columnAt (i);\r
-if (temp >= start) {\r
-this.selected.setElementAt ( new Integer (temp - change), i);\r
-}}\r
-if (this.hiddenColumns != null) {\r
-deletedHiddenColumns =  new java.util.ArrayList ();\r
-var hSize = this.hiddenColumns.size ();\r
-for (var i = 0; i < hSize; i++) {\r
-var region = this.hiddenColumns.elementAt (i);\r
-if (region[0] > start && start + change > region[1]) {\r
-deletedHiddenColumns.add (region);\r
-this.hiddenColumns.removeElementAt (i);\r
-i--;\r
-hSize--;\r
-continue;\r
-}if (region[0] > start) {\r
-region[0] -= change;\r
-region[1] -= change;\r
-}if (region[0] < 0) {\r
-region[0] = 0;\r
-}}\r
-this.revealHiddenColumns (0);\r
-}return deletedHiddenColumns;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "compensateForDelEdits", \r
-($fz = function (start, change) {\r
-for (var i = 0; i < this.size (); i++) {\r
-var temp = this.columnAt (i);\r
-if (temp >= start) {\r
-this.selected.setElementAt ( new Integer (temp - change), i);\r
-}}\r
-if (this.hiddenColumns != null) {\r
-for (var i = 0; i < this.hiddenColumns.size (); i++) {\r
-var region = this.hiddenColumns.elementAt (i);\r
-if (region[0] >= start) {\r
-region[0] -= change;\r
-}if (region[1] >= start) {\r
-region[1] -= change;\r
-}if (region[1] < region[0]) {\r
-this.hiddenColumns.removeElementAt (i--);\r
-}if (region[0] < 0) {\r
-region[0] = 0;\r
-}if (region[1] < 0) {\r
-region[1] = 0;\r
-}}\r
-}}, $fz.isPrivate = true, $fz), "~N,~N");\r
-Clazz.defineMethod (c$, "compensateForEdits", \r
-function (shiftrecord) {\r
-if (shiftrecord != null) {\r
-var shifts = shiftrecord.getShifts ();\r
-if (shifts != null && shifts.size () > 0) {\r
-var shifted = 0;\r
-for (var i = 0, j = shifts.size (); i < j; i++) {\r
-var sh = shifts.get (i);\r
-this.compensateForDelEdits (shifted + sh[0], sh[1]);\r
-shifted -= sh[1];\r
-}\r
-}return shiftrecord.getInverse ();\r
-}return null;\r
-}, "jalview.util.ShiftList");\r
-Clazz.defineMethod (c$, "pruneIntervalVector", \r
-($fz = function (shifts, intervals) {\r
-var pruned = false;\r
-var i = 0;\r
-var j = intervals.size () - 1;\r
-var s = 0;\r
-var t = shifts.size () - 1;\r
-var hr = intervals.elementAt (i);\r
-var sr = shifts.get (s);\r
-while (i <= j && s <= t) {\r
-var trailinghn = hr[1] >= sr[0];\r
-if (!trailinghn) {\r
-if (i < j) {\r
-hr = intervals.elementAt (++i);\r
-} else {\r
-i++;\r
-}continue;\r
-}var endshift = sr[0] + sr[1];\r
-if (endshift < hr[0] || endshift < sr[0]) {\r
-if (s < t) {\r
-sr = shifts.get (++s);\r
-} else {\r
-s++;\r
-}continue;\r
-}var leadinghn = hr[0] >= sr[0];\r
-var leadinghc = hr[0] < endshift;\r
-var trailinghc = hr[1] < endshift;\r
-if (leadinghn) {\r
-if (trailinghc) {\r
-intervals.removeElementAt (i);\r
-pruned = true;\r
-j--;\r
-if (i <= j) {\r
-hr = intervals.elementAt (i);\r
-}continue;\r
-}if (leadinghc) {\r
-hr[0] = endshift;\r
-leadinghn = !leadinghn;\r
-pruned = true;\r
-}}if (!leadinghn) {\r
-if (trailinghc) {\r
-if (trailinghn) {\r
-hr[1] = sr[0] - 1;\r
-pruned = true;\r
-}} else {\r
-if (s < t) {\r
-sr = shifts.get (++s);\r
-} else {\r
-s++;\r
-}continue;\r
-}}}\r
-return pruned;\r
-}, $fz.isPrivate = true, $fz), "java.util.List,java.util.Vector");\r
-Clazz.defineMethod (c$, "pruneColumnList", \r
-($fz = function (shifts, list) {\r
-var s = 0;\r
-var t = shifts.size ();\r
-var sr = shifts.get (s++);\r
-var pruned = false;\r
-var i = 0;\r
-var j = list.size ();\r
-while (i < j && s <= t) {\r
-var c = list.elementAt (i++).intValue ();\r
-if (sr[0] <= c) {\r
-if (sr[1] + sr[0] >= c) {\r
-list.removeElementAt (--i);\r
-j--;\r
-} else {\r
-if (s < t) {\r
-sr = shifts.get (s);\r
-}s++;\r
-}}}\r
-return pruned;\r
-}, $fz.isPrivate = true, $fz), "java.util.List,java.util.Vector");\r
-Clazz.defineMethod (c$, "pruneDeletions", \r
-function (deletions) {\r
-if (deletions != null) {\r
-var shifts = deletions.getShifts ();\r
-if (shifts != null && shifts.size () > 0) {\r
-if (this.hiddenColumns != null) {\r
-this.pruneIntervalVector (shifts, this.hiddenColumns);\r
-if (this.hiddenColumns != null && this.hiddenColumns.size () == 0) {\r
-this.hiddenColumns = null;\r
-}}if (this.selected != null && this.selected.size () > 0) {\r
-this.pruneColumnList (shifts, this.selected);\r
-if (this.selected != null && this.selected.size () == 0) {\r
-this.selected = null;\r
-}}this.compensateForEdits (deletions);\r
-}}}, "jalview.util.ShiftList");\r
-Clazz.defineMethod (c$, "getHiddenColumns", \r
-function () {\r
-return this.hiddenColumns == null ? java.util.Collections.emptyList () : this.hiddenColumns;\r
-});\r
-Clazz.defineMethod (c$, "adjustForHiddenColumns", \r
-function (column) {\r
-var result = column;\r
-if (this.hiddenColumns != null) {\r
-for (var i = 0; i < this.hiddenColumns.size (); i++) {\r
-var region = this.hiddenColumns.elementAt (i);\r
-if (result >= region[0]) {\r
-result += region[1] - region[0] + 1;\r
-}}\r
-}return result;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "findColumnPosition", \r
-function (hiddenColumn) {\r
-var result = hiddenColumn;\r
-if (this.hiddenColumns != null) {\r
-var index = 0;\r
-var region;\r
-do {\r
-region = this.hiddenColumns.elementAt (index++);\r
-if (hiddenColumn > region[1]) {\r
-result -= region[1] + 1 - region[0];\r
-}} while ((hiddenColumn > region[1]) && (index < this.hiddenColumns.size ()));\r
-if (hiddenColumn > region[0] && hiddenColumn < region[1]) {\r
-return region[0] + hiddenColumn - result;\r
-}}return result;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "findHiddenRegionPosition", \r
-function (hiddenRegion) {\r
-var result = 0;\r
-if (this.hiddenColumns != null) {\r
-var index = 0;\r
-var gaps = 0;\r
-do {\r
-var region = this.hiddenColumns.elementAt (index);\r
-if (hiddenRegion == 0) {\r
-return region[0];\r
-}gaps += region[1] + 1 - region[0];\r
-result = region[1] + 1;\r
-index++;\r
-} while (index < hiddenRegion + 1);\r
-result -= gaps;\r
-}return result;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getHiddenBoundaryRight", \r
-function (alPos) {\r
-if (this.hiddenColumns != null) {\r
-var index = 0;\r
-do {\r
-var region = this.hiddenColumns.elementAt (index);\r
-if (alPos < region[0]) {\r
-return region[0];\r
-}index++;\r
-} while (index < this.hiddenColumns.size ());\r
-}return alPos;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getHiddenBoundaryLeft", \r
-function (alPos) {\r
-if (this.hiddenColumns != null) {\r
-var index = this.hiddenColumns.size () - 1;\r
-do {\r
-var region = this.hiddenColumns.elementAt (index);\r
-if (alPos > region[1]) {\r
-return region[1];\r
-}index--;\r
-} while (index > -1);\r
-}return alPos;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "hideSelectedColumns", \r
-function () {\r
-while (this.size () > 0) {\r
-var column = this.getSelected ().firstElement ().intValue ();\r
-this.hideColumns (column);\r
-}\r
-});\r
-Clazz.defineMethod (c$, "hideColumns", \r
-function (start, end) {\r
-if (this.hiddenColumns == null) {\r
-this.hiddenColumns =  new java.util.Vector ();\r
-}var added = false;\r
-var overlap = false;\r
-for (var i = 0; i < this.hiddenColumns.size (); i++) {\r
-var region = this.hiddenColumns.elementAt (i);\r
-if (start <= region[1] && end >= region[0]) {\r
-this.hiddenColumns.removeElementAt (i);\r
-overlap = true;\r
-break;\r
-} else if (end < region[0] && start < region[0]) {\r
-this.hiddenColumns.insertElementAt ( Clazz.newIntArray (-1, [start, end]), i);\r
-added = true;\r
-break;\r
-}}\r
-if (overlap) {\r
-this.hideColumns (start, end);\r
-} else if (!added) {\r
-this.hiddenColumns.addElement ( Clazz.newIntArray (-1, [start, end]));\r
-}}, "~N,~N");\r
-Clazz.defineMethod (c$, "hideColumns", \r
-function (col) {\r
-var min = col;\r
-var max = col + 1;\r
-while (this.contains (min)) {\r
-this.removeElement (min);\r
-min--;\r
-}\r
-while (this.contains (max)) {\r
-this.removeElement (max);\r
-max++;\r
-}\r
-min++;\r
-max--;\r
-if (min > max) {\r
-min = max;\r
-}this.hideColumns (min, max);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "revealAllHiddenColumns", \r
-function () {\r
-if (this.hiddenColumns != null) {\r
-for (var i = 0; i < this.hiddenColumns.size (); i++) {\r
-var region = this.hiddenColumns.elementAt (i);\r
-for (var j = region[0]; j < region[1] + 1; j++) {\r
-this.addElement (j);\r
-}\r
-}\r
-}this.hiddenColumns = null;\r
-});\r
-Clazz.defineMethod (c$, "revealHiddenColumns", \r
-function (res) {\r
-for (var i = 0; i < this.hiddenColumns.size (); i++) {\r
-var region = this.hiddenColumns.elementAt (i);\r
-if (res == region[0]) {\r
-for (var j = region[0]; j < region[1] + 1; j++) {\r
-this.addElement (j);\r
-}\r
-this.hiddenColumns.removeElement (region);\r
-break;\r
-}}\r
-if (this.hiddenColumns.size () == 0) {\r
-this.hiddenColumns = null;\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "isVisible", \r
-function (column) {\r
-if (this.hiddenColumns != null) {\r
-for (var i = 0; i < this.hiddenColumns.size (); i++) {\r
-var region = this.hiddenColumns.elementAt (i);\r
-if (column >= region[0] && column <= region[1]) {\r
-return false;\r
-}}\r
-}return true;\r
-}, "~N");\r
-Clazz.makeConstructor (c$, \r
-function (copy) {\r
-if (copy != null) {\r
-if (copy.selected != null) {\r
-this.selected =  new java.util.Vector ();\r
-for (var i = 0, j = copy.selected.size (); i < j; i++) {\r
-this.selected.addElement (copy.selected.elementAt (i));\r
-}\r
-}if (copy.hiddenColumns != null) {\r
-this.hiddenColumns =  new java.util.Vector (copy.hiddenColumns.size ());\r
-for (var i = 0, j = copy.hiddenColumns.size (); i < j; i++) {\r
-var rh;\r
-var cp;\r
-rh = copy.hiddenColumns.elementAt (i);\r
-if (rh != null) {\r
-cp =  Clazz.newIntArray (rh.length, 0);\r
-System.arraycopy (rh, 0, cp, 0, rh.length);\r
-this.hiddenColumns.addElement (cp);\r
-}}\r
-}}}, "jalview.datamodel.ColumnSelection");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "getVisibleSequenceStrings", \r
-function (start, end, seqs) {\r
-var i;\r
-var iSize = seqs.length;\r
-var selection =  new Array (iSize);\r
-if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {\r
-for (i = 0; i < iSize; i++) {\r
-var visibleSeq =  new StringBuffer ();\r
-var regions = this.getHiddenColumns ();\r
-var blockStart = start;\r
-var blockEnd = end;\r
-var region;\r
-var hideStart;\r
-var hideEnd;\r
-for (var j = 0; j < regions.size (); j++) {\r
-region = regions.get (j);\r
-hideStart = region[0];\r
-hideEnd = region[1];\r
-if (hideStart < start) {\r
-continue;\r
-}blockStart = Math.min (blockStart, hideEnd + 1);\r
-blockEnd = Math.min (blockEnd, hideStart);\r
-if (blockStart > blockEnd) {\r
-break;\r
-}visibleSeq.append (seqs[i].getSequence (blockStart, blockEnd));\r
-blockStart = hideEnd + 1;\r
-blockEnd = end;\r
-}\r
-if (end > blockStart) {\r
-visibleSeq.append (seqs[i].getSequence (blockStart, end));\r
-}selection[i] = visibleSeq.toString ();\r
-}\r
-} else {\r
-for (i = 0; i < iSize; i++) {\r
-selection[i] = seqs[i].getSequenceAsString (start, end);\r
-}\r
-}return selection;\r
-}, "~N,~N,~A");\r
-Clazz.defineMethod (c$, "getVisibleContigs", \r
-function (start, end) {\r
-if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {\r
-var visiblecontigs =  new java.util.ArrayList ();\r
-var regions = this.getHiddenColumns ();\r
-var vstart = start;\r
-var region;\r
-var hideStart;\r
-var hideEnd;\r
-for (var j = 0; vstart < end && j < regions.size (); j++) {\r
-region = regions.get (j);\r
-hideStart = region[0];\r
-hideEnd = region[1];\r
-if (hideEnd < vstart) {\r
-continue;\r
-}if (hideStart > vstart) {\r
-visiblecontigs.add ( Clazz.newIntArray (-1, [vstart, hideStart - 1]));\r
-}vstart = hideEnd + 1;\r
-}\r
-if (vstart < end) {\r
-visiblecontigs.add ( Clazz.newIntArray (-1, [vstart, end - 1]));\r
-}var vcontigs =  Clazz.newIntArray (visiblecontigs.size () * 2, 0);\r
-for (var i = 0, j = visiblecontigs.size (); i < j; i++) {\r
-var vc = visiblecontigs.get (i);\r
-visiblecontigs.set (i, null);\r
-vcontigs[i * 2] = vc[0];\r
-vcontigs[i * 2 + 1] = vc[1];\r
-}\r
-visiblecontigs.clear ();\r
-return vcontigs;\r
-} else {\r
-return  Clazz.newIntArray (-1, [start, end - 1]);\r
-}}, "~N,~N");\r
-Clazz.defineMethod (c$, "makeVisibleAnnotation", \r
-function (alignmentAnnotation) {\r
-this.makeVisibleAnnotation (-1, -1, alignmentAnnotation);\r
-}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.defineMethod (c$, "makeVisibleAnnotation", \r
-function (start, end, alignmentAnnotation) {\r
-if (alignmentAnnotation.annotations == null) {\r
-return;\r
-}if (start == end && end == -1) {\r
-start = 0;\r
-end = alignmentAnnotation.annotations.length;\r
-}if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {\r
-var annels =  new java.util.Vector ();\r
-var els = null;\r
-var regions = this.getHiddenColumns ();\r
-var blockStart = start;\r
-var blockEnd = end;\r
-var region;\r
-var hideStart;\r
-var hideEnd;\r
-var w = 0;\r
-for (var j = 0; j < regions.size (); j++) {\r
-region = regions.get (j);\r
-hideStart = region[0];\r
-hideEnd = region[1];\r
-if (hideStart < start) {\r
-continue;\r
-}blockStart = Math.min (blockStart, hideEnd + 1);\r
-blockEnd = Math.min (blockEnd, hideStart);\r
-if (blockStart > blockEnd) {\r
-break;\r
-}annels.addElement (els =  new Array (blockEnd - blockStart));\r
-System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, els.length);\r
-w += els.length;\r
-blockStart = hideEnd + 1;\r
-blockEnd = end;\r
-}\r
-if (end > blockStart) {\r
-annels.addElement (els =  new Array (end - blockStart + 1));\r
-if ((els.length + blockStart) <= alignmentAnnotation.annotations.length) {\r
-System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, els.length);\r
-} else {\r
-System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, (alignmentAnnotation.annotations.length - blockStart));\r
-}w += els.length;\r
-}if (w == 0) {\r
-return;\r
-}alignmentAnnotation.annotations =  new Array (w);\r
-w = 0;\r
-for (var chnk, $chnk = annels.iterator (); $chnk.hasNext () && ((chnk = $chnk.next ()) || true);) {\r
-System.arraycopy (chnk, 0, alignmentAnnotation.annotations, w, chnk.length);\r
-w += chnk.length;\r
-}\r
-} else {\r
-alignmentAnnotation.restrict (start, end);\r
-}}, "~N,~N,jalview.datamodel.AlignmentAnnotation");\r
-Clazz.defineMethod (c$, "invertColumnSelection", \r
-function (first, width) {\r
-var hasHidden = this.hiddenColumns != null && this.hiddenColumns.size () > 0;\r
-for (var i = first; i < width; i++) {\r
-if (this.contains (i)) {\r
-this.removeElement (i);\r
-} else {\r
-if (!hasHidden || this.isVisible (i)) {\r
-this.addElement (i);\r
-}}}\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "addElementsFrom", \r
-function (colsel) {\r
-if (colsel != null && colsel.size () > 0) {\r
-for (var col, $col = colsel.getSelected ().iterator (); $col.hasNext () && ((col = $col.next ()) || true);) {\r
-if (this.hiddenColumns != null && this.isVisible (col.intValue ())) {\r
-if (!this.selected.contains (col)) {\r
-this.selected.addElement (col);\r
-}}}\r
-}}, "jalview.datamodel.ColumnSelection");\r
-Clazz.defineMethod (c$, "setElementsFrom", \r
-function (colsel) {\r
-this.selected =  new java.util.Vector ();\r
-if (colsel.selected != null && colsel.selected.size () > 0) {\r
-if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {\r
-this.addElementsFrom (colsel);\r
-} else {\r
-for (var col, $col = colsel.getSelected ().iterator (); $col.hasNext () && ((col = $col.next ()) || true);) {\r
-this.addElement ((col).intValue ());\r
-}\r
-}}}, "jalview.datamodel.ColumnSelection");\r
-c$.propagateInsertions = Clazz.defineMethod (c$, "propagateInsertions", \r
-function (profileseq, al, input) {\r
-var profsqpos = 0;\r
-var gc = al.getGapCharacter ();\r
-var alandcolsel = input.getAlignmentAndColumnSelection (gc);\r
-var nview = alandcolsel[1];\r
-var origseq = (alandcolsel[0])[profsqpos];\r
-nview.propagateInsertions (profileseq, al, origseq);\r
-return nview;\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentView");\r
-Clazz.defineMethod (c$, "propagateInsertions", \r
-function (profileseq, al, origseq) {\r
-var gc = al.getGapCharacter ();\r
-this.pruneDeletions (jalview.util.ShiftList.parseMap (origseq.gapMap ()));\r
-var viscontigs = this.getVisibleContigs (0, profileseq.getLength ());\r
-var spos = 0;\r
-var offset = 0;\r
-for (var v = 0; v < viscontigs.length; v += 2) {\r
-if (viscontigs[v] > spos) {\r
-var sb =  new StringBuffer ();\r
-for (var s = 0, ns = viscontigs[v] - spos; s < ns; s++) {\r
-sb.append (gc);\r
-}\r
-for (var s = 0, ns = al.getHeight (); s < ns; s++) {\r
-var sqobj = al.getSequenceAt (s);\r
-if (sqobj !== profileseq) {\r
-var sq = al.getSequenceAt (s).getSequenceAsString ();\r
-if (sq.length <= spos + offset) {\r
-var diff = spos + offset - sq.length - 1;\r
-if (diff > 0) {\r
-sq = sq + sb;\r
-while ((diff = spos + offset - sq.length - 1) > 0) {\r
-if (diff >= sb.length ()) {\r
-sq += sb.toString ();\r
-} else {\r
-var buf =  Clazz.newCharArray (diff, '\0');\r
-sb.getChars (0, diff, buf, 0);\r
-sq += buf.toString ();\r
-}}\r
-}sq += sb.toString ();\r
-} else {\r
-al.getSequenceAt (s).setSequence (sq.substring (0, spos + offset) + sb.toString () + sq.substring (spos + offset));\r
-}}}\r
-}spos = viscontigs[v + 1] + 1;\r
-}\r
-if ((offset + spos) < profileseq.getLength ()) {\r
-var sb =  new StringBuffer ();\r
-for (var s = 0, ns = profileseq.getLength () - spos - offset; s < ns; s++) {\r
-sb.append (gc);\r
-}\r
-for (var s = 0, ns = al.getHeight (); s < ns; s++) {\r
-var sqobj = al.getSequenceAt (s);\r
-if (sqobj === profileseq) {\r
-continue;\r
-}var sq = sqobj.getSequenceAsString ();\r
-var diff = origseq.getLength () - sq.length;\r
-while (diff > 0) {\r
-if (diff >= sb.length ()) {\r
-sq += sb.toString ();\r
-} else {\r
-var buf =  Clazz.newCharArray (diff, '\0');\r
-sb.getChars (0, diff, buf, 0);\r
-sq += buf.toString ();\r
-}diff = origseq.getLength () - sq.length;\r
-}\r
-}\r
-}}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "hasSelectedColumns", \r
-function () {\r
-return (this.selected != null && this.selected.size () > 0);\r
-});\r
-Clazz.defineMethod (c$, "hasHiddenColumns", \r
-function () {\r
-return this.hiddenColumns != null && this.hiddenColumns.size () > 0;\r
-});\r
-Clazz.defineMethod (c$, "hasManyHiddenColumns", \r
-function () {\r
-return this.hiddenColumns != null && this.hiddenColumns.size () > 1;\r
-});\r
-Clazz.defineMethod (c$, "hideInsertionsFor", \r
-function (sr) {\r
-var inserts = sr.getInsertions ();\r
-for (var r, $r = inserts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {\r
-this.hideColumns (r[0], r[1]);\r
-}\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "filterAnnotations", \r
-function (annotations, filterParams) {\r
-this.revealAllHiddenColumns ();\r
-this.clear ();\r
-var count = 0;\r
-do {\r
-if (annotations[count] != null) {\r
-var itemMatched = false;\r
-if (filterParams.getThresholdType () === jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.ABOVE_THRESHOLD && annotations[count].value >= filterParams.getThresholdValue ()) {\r
-itemMatched = true;\r
-}if (filterParams.getThresholdType () === jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.BELOW_THRESHOLD && annotations[count].value <= filterParams.getThresholdValue ()) {\r
-itemMatched = true;\r
-}if (filterParams.isFilterAlphaHelix () && annotations[count].secondaryStructure == 'H') {\r
-itemMatched = true;\r
-}if (filterParams.isFilterBetaSheet () && annotations[count].secondaryStructure == 'E') {\r
-itemMatched = true;\r
-}if (filterParams.isFilterTurn () && annotations[count].secondaryStructure == 'S') {\r
-itemMatched = true;\r
-}var regexSearchString = filterParams.getRegexString ();\r
-if (regexSearchString != null && !filterParams.getRegexSearchFields ().isEmpty ()) {\r
-var fields = filterParams.getRegexSearchFields ();\r
-try {\r
-if (fields.contains (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DISPLAY_STRING) && annotations[count].displayCharacter.matches (regexSearchString)) {\r
-itemMatched = true;\r
-}} catch (pse) {\r
-if (Clazz.exceptionOf (pse, java.util.regex.PatternSyntaxException)) {\r
-if (annotations[count].displayCharacter.equals (regexSearchString)) {\r
-itemMatched = true;\r
-}} else {\r
-throw pse;\r
-}\r
-}\r
-if (fields.contains (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DESCRIPTION) && annotations[count].description != null && annotations[count].description.matches (regexSearchString)) {\r
-itemMatched = true;\r
-}}if (itemMatched) {\r
-this.addElement (count);\r
-}}count++;\r
-} while (count < annotations.length);\r
-return false;\r
-}, "~A,jalview.viewmodel.annotationfilter.AnnotationFilterParameter");\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.util.Vector"], "jalview.datamodel.ColumnSelection", ["jalview.util.ShiftList", "jalview.viewmodel.annotationfilter.AnnotationFilterParameter", "java.lang.StringBuffer", "java.util.ArrayList", "$.Collections"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.selected = null;
+this.hiddenColumns = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "ColumnSelection");
+Clazz.prepareFields (c$, function () {
+this.selected =  new java.util.Vector ();
+});
+Clazz.defineMethod (c$, "addElement", 
+function (col) {
+var column =  new Integer (col);
+if (!this.selected.contains (column)) {
+this.selected.addElement (column);
+}}, "~N");
+Clazz.defineMethod (c$, "clear", 
+function () {
+this.selected.removeAllElements ();
+});
+Clazz.defineMethod (c$, "removeElement", 
+function (col) {
+var colInt =  new Integer (col);
+if (this.selected.contains (colInt)) {
+this.selected.removeElement (colInt);
+}}, "~N");
+Clazz.defineMethod (c$, "removeElements", 
+function (start, end) {
+var colInt;
+for (var i = start; i < end; i++) {
+colInt =  new Integer (i);
+if (this.selected.contains (colInt)) {
+this.selected.removeElement (colInt);
+}}
+}, "~N,~N");
+Clazz.defineMethod (c$, "getSelected", 
+function () {
+return this.selected;
+});
+Clazz.defineMethod (c$, "contains", 
+function (col) {
+return this.selected.contains ( new Integer (col));
+}, "~N");
+Clazz.defineMethod (c$, "columnAt", 
+function (i) {
+return this.selected.elementAt (i).intValue ();
+}, "~N");
+Clazz.defineMethod (c$, "size", 
+function () {
+return this.selected.size ();
+});
+Clazz.defineMethod (c$, "getMax", 
+function () {
+var max = -1;
+for (var i = 0; i < this.selected.size (); i++) {
+if (this.columnAt (i) > max) {
+max = this.columnAt (i);
+}}
+return max;
+});
+Clazz.defineMethod (c$, "getMin", 
+function () {
+var min = 1000000000;
+for (var i = 0; i < this.selected.size (); i++) {
+if (this.columnAt (i) < min) {
+min = this.columnAt (i);
+}}
+return min;
+});
+Clazz.defineMethod (c$, "compensateForEdit", 
+function (start, change) {
+var deletedHiddenColumns = null;
+for (var i = 0; i < this.size (); i++) {
+var temp = this.columnAt (i);
+if (temp >= start) {
+this.selected.setElementAt ( new Integer (temp - change), i);
+}}
+if (this.hiddenColumns != null) {
+deletedHiddenColumns =  new java.util.ArrayList ();
+var hSize = this.hiddenColumns.size ();
+for (var i = 0; i < hSize; i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (region[0] > start && start + change > region[1]) {
+deletedHiddenColumns.add (region);
+this.hiddenColumns.removeElementAt (i);
+i--;
+hSize--;
+continue;
+}if (region[0] > start) {
+region[0] -= change;
+region[1] -= change;
+}if (region[0] < 0) {
+region[0] = 0;
+}}
+this.revealHiddenColumns (0);
+}return deletedHiddenColumns;
+}, "~N,~N");
+Clazz.defineMethod (c$, "compensateForDelEdits", 
+($fz = function (start, change) {
+for (var i = 0; i < this.size (); i++) {
+var temp = this.columnAt (i);
+if (temp >= start) {
+this.selected.setElementAt ( new Integer (temp - change), i);
+}}
+if (this.hiddenColumns != null) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (region[0] >= start) {
+region[0] -= change;
+}if (region[1] >= start) {
+region[1] -= change;
+}if (region[1] < region[0]) {
+this.hiddenColumns.removeElementAt (i--);
+}if (region[0] < 0) {
+region[0] = 0;
+}if (region[1] < 0) {
+region[1] = 0;
+}}
+}}, $fz.isPrivate = true, $fz), "~N,~N");
+Clazz.defineMethod (c$, "compensateForEdits", 
+function (shiftrecord) {
+if (shiftrecord != null) {
+var shifts = shiftrecord.getShifts ();
+if (shifts != null && shifts.size () > 0) {
+var shifted = 0;
+for (var i = 0, j = shifts.size (); i < j; i++) {
+var sh = shifts.get (i);
+this.compensateForDelEdits (shifted + sh[0], sh[1]);
+shifted -= sh[1];
+}
+}return shiftrecord.getInverse ();
+}return null;
+}, "jalview.util.ShiftList");
+Clazz.defineMethod (c$, "pruneIntervalVector", 
+($fz = function (shifts, intervals) {
+var pruned = false;
+var i = 0;
+var j = intervals.size () - 1;
+var s = 0;
+var t = shifts.size () - 1;
+var hr = intervals.elementAt (i);
+var sr = shifts.get (s);
+while (i <= j && s <= t) {
+var trailinghn = hr[1] >= sr[0];
+if (!trailinghn) {
+if (i < j) {
+hr = intervals.elementAt (++i);
+} else {
+i++;
+}continue;
+}var endshift = sr[0] + sr[1];
+if (endshift < hr[0] || endshift < sr[0]) {
+if (s < t) {
+sr = shifts.get (++s);
+} else {
+s++;
+}continue;
+}var leadinghn = hr[0] >= sr[0];
+var leadinghc = hr[0] < endshift;
+var trailinghc = hr[1] < endshift;
+if (leadinghn) {
+if (trailinghc) {
+intervals.removeElementAt (i);
+pruned = true;
+j--;
+if (i <= j) {
+hr = intervals.elementAt (i);
+}continue;
+}if (leadinghc) {
+hr[0] = endshift;
+leadinghn = !leadinghn;
+pruned = true;
+}}if (!leadinghn) {
+if (trailinghc) {
+if (trailinghn) {
+hr[1] = sr[0] - 1;
+pruned = true;
+}} else {
+if (s < t) {
+sr = shifts.get (++s);
+} else {
+s++;
+}continue;
+}}}
+return pruned;
+}, $fz.isPrivate = true, $fz), "java.util.List,java.util.Vector");
+Clazz.defineMethod (c$, "pruneColumnList", 
+($fz = function (shifts, list) {
+var s = 0;
+var t = shifts.size ();
+var sr = shifts.get (s++);
+var pruned = false;
+var i = 0;
+var j = list.size ();
+while (i < j && s <= t) {
+var c = list.elementAt (i++).intValue ();
+if (sr[0] <= c) {
+if (sr[1] + sr[0] >= c) {
+list.removeElementAt (--i);
+j--;
+} else {
+if (s < t) {
+sr = shifts.get (s);
+}s++;
+}}}
+return pruned;
+}, $fz.isPrivate = true, $fz), "java.util.List,java.util.Vector");
+Clazz.defineMethod (c$, "pruneDeletions", 
+function (deletions) {
+if (deletions != null) {
+var shifts = deletions.getShifts ();
+if (shifts != null && shifts.size () > 0) {
+if (this.hiddenColumns != null) {
+this.pruneIntervalVector (shifts, this.hiddenColumns);
+if (this.hiddenColumns != null && this.hiddenColumns.size () == 0) {
+this.hiddenColumns = null;
+}}if (this.selected != null && this.selected.size () > 0) {
+this.pruneColumnList (shifts, this.selected);
+if (this.selected != null && this.selected.size () == 0) {
+this.selected = null;
+}}this.compensateForEdits (deletions);
+}}}, "jalview.util.ShiftList");
+Clazz.defineMethod (c$, "getHiddenColumns", 
+function () {
+return this.hiddenColumns == null ? java.util.Collections.emptyList () : this.hiddenColumns;
+});
+Clazz.defineMethod (c$, "adjustForHiddenColumns", 
+function (column) {
+var result = column;
+if (this.hiddenColumns != null) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (result >= region[0]) {
+result += region[1] - region[0] + 1;
+}}
+}return result;
+}, "~N");
+Clazz.defineMethod (c$, "findColumnPosition", 
+function (hiddenColumn) {
+var result = hiddenColumn;
+if (this.hiddenColumns != null) {
+var index = 0;
+var region;
+do {
+region = this.hiddenColumns.elementAt (index++);
+if (hiddenColumn > region[1]) {
+result -= region[1] + 1 - region[0];
+}} while ((hiddenColumn > region[1]) && (index < this.hiddenColumns.size ()));
+if (hiddenColumn > region[0] && hiddenColumn < region[1]) {
+return region[0] + hiddenColumn - result;
+}}return result;
+}, "~N");
+Clazz.defineMethod (c$, "findHiddenRegionPosition", 
+function (hiddenRegion) {
+var result = 0;
+if (this.hiddenColumns != null) {
+var index = 0;
+var gaps = 0;
+do {
+var region = this.hiddenColumns.elementAt (index);
+if (hiddenRegion == 0) {
+return region[0];
+}gaps += region[1] + 1 - region[0];
+result = region[1] + 1;
+index++;
+} while (index < hiddenRegion + 1);
+result -= gaps;
+}return result;
+}, "~N");
+Clazz.defineMethod (c$, "getHiddenBoundaryRight", 
+function (alPos) {
+if (this.hiddenColumns != null) {
+var index = 0;
+do {
+var region = this.hiddenColumns.elementAt (index);
+if (alPos < region[0]) {
+return region[0];
+}index++;
+} while (index < this.hiddenColumns.size ());
+}return alPos;
+}, "~N");
+Clazz.defineMethod (c$, "getHiddenBoundaryLeft", 
+function (alPos) {
+if (this.hiddenColumns != null) {
+var index = this.hiddenColumns.size () - 1;
+do {
+var region = this.hiddenColumns.elementAt (index);
+if (alPos > region[1]) {
+return region[1];
+}index--;
+} while (index > -1);
+}return alPos;
+}, "~N");
+Clazz.defineMethod (c$, "hideSelectedColumns", 
+function () {
+while (this.size () > 0) {
+var column = this.getSelected ().firstElement ().intValue ();
+this.hideColumns (column);
+}
+});
+Clazz.defineMethod (c$, "hideColumns", 
+function (start, end) {
+if (this.hiddenColumns == null) {
+this.hiddenColumns =  new java.util.Vector ();
+}var added = false;
+var overlap = false;
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (start <= region[1] && end >= region[0]) {
+this.hiddenColumns.removeElementAt (i);
+overlap = true;
+break;
+} else if (end < region[0] && start < region[0]) {
+this.hiddenColumns.insertElementAt ( Clazz.newIntArray (-1, [start, end]), i);
+added = true;
+break;
+}}
+if (overlap) {
+this.hideColumns (start, end);
+} else if (!added) {
+this.hiddenColumns.addElement ( Clazz.newIntArray (-1, [start, end]));
+}}, "~N,~N");
+Clazz.defineMethod (c$, "hideColumns", 
+function (col) {
+var min = col;
+var max = col + 1;
+while (this.contains (min)) {
+this.removeElement (min);
+min--;
+}
+while (this.contains (max)) {
+this.removeElement (max);
+max++;
+}
+min++;
+max--;
+if (min > max) {
+min = max;
+}this.hideColumns (min, max);
+}, "~N");
+Clazz.defineMethod (c$, "revealAllHiddenColumns", 
+function () {
+if (this.hiddenColumns != null) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+for (var j = region[0]; j < region[1] + 1; j++) {
+this.addElement (j);
+}
+}
+}this.hiddenColumns = null;
+});
+Clazz.defineMethod (c$, "revealHiddenColumns", 
+function (res) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (res == region[0]) {
+for (var j = region[0]; j < region[1] + 1; j++) {
+this.addElement (j);
+}
+this.hiddenColumns.removeElement (region);
+break;
+}}
+if (this.hiddenColumns.size () == 0) {
+this.hiddenColumns = null;
+}}, "~N");
+Clazz.defineMethod (c$, "isVisible", 
+function (column) {
+if (this.hiddenColumns != null) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (column >= region[0] && column <= region[1]) {
+return false;
+}}
+}return true;
+}, "~N");
+Clazz.makeConstructor (c$, 
+function (copy) {
+if (copy != null) {
+if (copy.selected != null) {
+this.selected =  new java.util.Vector ();
+for (var i = 0, j = copy.selected.size (); i < j; i++) {
+this.selected.addElement (copy.selected.elementAt (i));
+}
+}if (copy.hiddenColumns != null) {
+this.hiddenColumns =  new java.util.Vector (copy.hiddenColumns.size ());
+for (var i = 0, j = copy.hiddenColumns.size (); i < j; i++) {
+var rh;
+var cp;
+rh = copy.hiddenColumns.elementAt (i);
+if (rh != null) {
+cp =  Clazz.newIntArray (rh.length, 0);
+System.arraycopy (rh, 0, cp, 0, rh.length);
+this.hiddenColumns.addElement (cp);
+}}
+}}}, "jalview.datamodel.ColumnSelection");
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.defineMethod (c$, "getVisibleSequenceStrings", 
+function (start, end, seqs) {
+var i;
+var iSize = seqs.length;
+var selection =  new Array (iSize);
+if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
+for (i = 0; i < iSize; i++) {
+var visibleSeq =  new StringBuffer ();
+var regions = this.getHiddenColumns ();
+var blockStart = start;
+var blockEnd = end;
+var region;
+var hideStart;
+var hideEnd;
+for (var j = 0; j < regions.size (); j++) {
+region = regions.get (j);
+hideStart = region[0];
+hideEnd = region[1];
+if (hideStart < start) {
+continue;
+}blockStart = Math.min (blockStart, hideEnd + 1);
+blockEnd = Math.min (blockEnd, hideStart);
+if (blockStart > blockEnd) {
+break;
+}visibleSeq.append (seqs[i].getSequence (blockStart, blockEnd));
+blockStart = hideEnd + 1;
+blockEnd = end;
+}
+if (end > blockStart) {
+visibleSeq.append (seqs[i].getSequence (blockStart, end));
+}selection[i] = visibleSeq.toString ();
+}
+} else {
+for (i = 0; i < iSize; i++) {
+selection[i] = seqs[i].getSequenceAsString (start, end);
+}
+}return selection;
+}, "~N,~N,~A");
+Clazz.defineMethod (c$, "getVisibleContigs", 
+function (start, end) {
+if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
+var visiblecontigs =  new java.util.ArrayList ();
+var regions = this.getHiddenColumns ();
+var vstart = start;
+var region;
+var hideStart;
+var hideEnd;
+for (var j = 0; vstart < end && j < regions.size (); j++) {
+region = regions.get (j);
+hideStart = region[0];
+hideEnd = region[1];
+if (hideEnd < vstart) {
+continue;
+}if (hideStart > vstart) {
+visiblecontigs.add ( Clazz.newIntArray (-1, [vstart, hideStart - 1]));
+}vstart = hideEnd + 1;
+}
+if (vstart < end) {
+visiblecontigs.add ( Clazz.newIntArray (-1, [vstart, end - 1]));
+}var vcontigs =  Clazz.newIntArray (visiblecontigs.size () * 2, 0);
+for (var i = 0, j = visiblecontigs.size (); i < j; i++) {
+var vc = visiblecontigs.get (i);
+visiblecontigs.set (i, null);
+vcontigs[i * 2] = vc[0];
+vcontigs[i * 2 + 1] = vc[1];
+}
+visiblecontigs.clear ();
+return vcontigs;
+} else {
+return  Clazz.newIntArray (-1, [start, end - 1]);
+}}, "~N,~N");
+Clazz.defineMethod (c$, "makeVisibleAnnotation", 
+function (alignmentAnnotation) {
+this.makeVisibleAnnotation (-1, -1, alignmentAnnotation);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "makeVisibleAnnotation", 
+function (start, end, alignmentAnnotation) {
+if (alignmentAnnotation.annotations == null) {
+return;
+}if (start == end && end == -1) {
+start = 0;
+end = alignmentAnnotation.annotations.length;
+}if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
+var annels =  new java.util.Vector ();
+var els = null;
+var regions = this.getHiddenColumns ();
+var blockStart = start;
+var blockEnd = end;
+var region;
+var hideStart;
+var hideEnd;
+var w = 0;
+for (var j = 0; j < regions.size (); j++) {
+region = regions.get (j);
+hideStart = region[0];
+hideEnd = region[1];
+if (hideStart < start) {
+continue;
+}blockStart = Math.min (blockStart, hideEnd + 1);
+blockEnd = Math.min (blockEnd, hideStart);
+if (blockStart > blockEnd) {
+break;
+}annels.addElement (els =  new Array (blockEnd - blockStart));
+System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, els.length);
+w += els.length;
+blockStart = hideEnd + 1;
+blockEnd = end;
+}
+if (end > blockStart) {
+annels.addElement (els =  new Array (end - blockStart + 1));
+if ((els.length + blockStart) <= alignmentAnnotation.annotations.length) {
+System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, els.length);
+} else {
+System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, (alignmentAnnotation.annotations.length - blockStart));
+}w += els.length;
+}if (w == 0) {
+return;
+}alignmentAnnotation.annotations =  new Array (w);
+w = 0;
+for (var chnk, $chnk = annels.iterator (); $chnk.hasNext () && ((chnk = $chnk.next ()) || true);) {
+System.arraycopy (chnk, 0, alignmentAnnotation.annotations, w, chnk.length);
+w += chnk.length;
+}
+} else {
+alignmentAnnotation.restrict (start, end);
+}}, "~N,~N,jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "invertColumnSelection", 
+function (first, width) {
+var hasHidden = this.hiddenColumns != null && this.hiddenColumns.size () > 0;
+for (var i = first; i < width; i++) {
+if (this.contains (i)) {
+this.removeElement (i);
+} else {
+if (!hasHidden || this.isVisible (i)) {
+this.addElement (i);
+}}}
+}, "~N,~N");
+Clazz.defineMethod (c$, "addElementsFrom", 
+function (colsel) {
+if (colsel != null && colsel.size () > 0) {
+for (var col, $col = colsel.getSelected ().iterator (); $col.hasNext () && ((col = $col.next ()) || true);) {
+if (this.hiddenColumns != null && this.isVisible (col.intValue ())) {
+if (!this.selected.contains (col)) {
+this.selected.addElement (col);
+}}}
+}}, "jalview.datamodel.ColumnSelection");
+Clazz.defineMethod (c$, "setElementsFrom", 
+function (colsel) {
+this.selected =  new java.util.Vector ();
+if (colsel.selected != null && colsel.selected.size () > 0) {
+if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
+this.addElementsFrom (colsel);
+} else {
+for (var col, $col = colsel.getSelected ().iterator (); $col.hasNext () && ((col = $col.next ()) || true);) {
+this.addElement ((col).intValue ());
+}
+}}}, "jalview.datamodel.ColumnSelection");
+c$.propagateInsertions = Clazz.defineMethod (c$, "propagateInsertions", 
+function (profileseq, al, input) {
+var profsqpos = 0;
+var gc = al.getGapCharacter ();
+var alandcolsel = input.getAlignmentAndColumnSelection (gc);
+var nview = alandcolsel[1];
+var origseq = (alandcolsel[0])[profsqpos];
+nview.propagateInsertions (profileseq, al, origseq);
+return nview;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentView");
+Clazz.defineMethod (c$, "propagateInsertions", 
+function (profileseq, al, origseq) {
+var gc = al.getGapCharacter ();
+this.pruneDeletions (jalview.util.ShiftList.parseMap (origseq.gapMap ()));
+var viscontigs = this.getVisibleContigs (0, profileseq.getLength ());
+var spos = 0;
+var offset = 0;
+for (var v = 0; v < viscontigs.length; v += 2) {
+if (viscontigs[v] > spos) {
+var sb =  new StringBuffer ();
+for (var s = 0, ns = viscontigs[v] - spos; s < ns; s++) {
+sb.append (gc);
+}
+for (var s = 0, ns = al.getHeight (); s < ns; s++) {
+var sqobj = al.getSequenceAt (s);
+if (sqobj !== profileseq) {
+var sq = al.getSequenceAt (s).getSequenceAsString ();
+if (sq.length <= spos + offset) {
+var diff = spos + offset - sq.length - 1;
+if (diff > 0) {
+sq = sq + sb;
+while ((diff = spos + offset - sq.length - 1) > 0) {
+if (diff >= sb.length ()) {
+sq += sb.toString ();
+} else {
+var buf =  Clazz.newCharArray (diff, '\0');
+sb.getChars (0, diff, buf, 0);
+sq += buf.toString ();
+}}
+}sq += sb.toString ();
+} else {
+al.getSequenceAt (s).setSequence (sq.substring (0, spos + offset) + sb.toString () + sq.substring (spos + offset));
+}}}
+}spos = viscontigs[v + 1] + 1;
+}
+if ((offset + spos) < profileseq.getLength ()) {
+var sb =  new StringBuffer ();
+for (var s = 0, ns = profileseq.getLength () - spos - offset; s < ns; s++) {
+sb.append (gc);
+}
+for (var s = 0, ns = al.getHeight (); s < ns; s++) {
+var sqobj = al.getSequenceAt (s);
+if (sqobj === profileseq) {
+continue;
+}var sq = sqobj.getSequenceAsString ();
+var diff = origseq.getLength () - sq.length;
+while (diff > 0) {
+if (diff >= sb.length ()) {
+sq += sb.toString ();
+} else {
+var buf =  Clazz.newCharArray (diff, '\0');
+sb.getChars (0, diff, buf, 0);
+sq += buf.toString ();
+}diff = origseq.getLength () - sq.length;
+}
+}
+}}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "hasSelectedColumns", 
+function () {
+return (this.selected != null && this.selected.size () > 0);
+});
+Clazz.defineMethod (c$, "hasHiddenColumns", 
+function () {
+return this.hiddenColumns != null && this.hiddenColumns.size () > 0;
+});
+Clazz.defineMethod (c$, "hasManyHiddenColumns", 
+function () {
+return this.hiddenColumns != null && this.hiddenColumns.size () > 1;
+});
+Clazz.defineMethod (c$, "hideInsertionsFor", 
+function (sr) {
+var inserts = sr.getInsertions ();
+for (var r, $r = inserts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
+this.hideColumns (r[0], r[1]);
+}
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "filterAnnotations", 
+function (annotations, filterParams) {
+this.revealAllHiddenColumns ();
+this.clear ();
+var count = 0;
+do {
+if (annotations[count] != null) {
+var itemMatched = false;
+if (filterParams.getThresholdType () === jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.ABOVE_THRESHOLD && annotations[count].value >= filterParams.getThresholdValue ()) {
+itemMatched = true;
+}if (filterParams.getThresholdType () === jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.BELOW_THRESHOLD && annotations[count].value <= filterParams.getThresholdValue ()) {
+itemMatched = true;
+}if (filterParams.isFilterAlphaHelix () && annotations[count].secondaryStructure == 'H') {
+itemMatched = true;
+}if (filterParams.isFilterBetaSheet () && annotations[count].secondaryStructure == 'E') {
+itemMatched = true;
+}if (filterParams.isFilterTurn () && annotations[count].secondaryStructure == 'S') {
+itemMatched = true;
+}var regexSearchString = filterParams.getRegexString ();
+if (regexSearchString != null && !filterParams.getRegexSearchFields ().isEmpty ()) {
+var fields = filterParams.getRegexSearchFields ();
+try {
+if (fields.contains (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DISPLAY_STRING) && annotations[count].displayCharacter.matches (regexSearchString)) {
+itemMatched = true;
+}} catch (pse) {
+if (Clazz.exceptionOf (pse, java.util.regex.PatternSyntaxException)) {
+if (annotations[count].displayCharacter.equals (regexSearchString)) {
+itemMatched = true;
+}} else {
+throw pse;
+}
+}
+if (fields.contains (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DESCRIPTION) && annotations[count].description != null && annotations[count].description.matches (regexSearchString)) {
+itemMatched = true;
+}}if (itemMatched) {
+this.addElement (count);
+}}count++;
+} while (count < annotations.length);
+return false;
+}, "~A,jalview.viewmodel.annotationfilter.AnnotationFilterParameter");
+});
index da2e0cb..148cf99 100644 (file)
@@ -1,93 +1,93 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (null, "jalview.datamodel.DBRefEntry", ["jalview.datamodel.Mapping"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.source = "";\r
-this.version = "";\r
-this.accessionId = "";\r
-this.map = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "DBRefEntry");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (source, version, accessionId) {\r
-this.construct (source, version, accessionId, null);\r
-}, "~S,~S,~S");\r
-Clazz.makeConstructor (c$, \r
-function (source, version, accessionId, map) {\r
-this.source = source.toUpperCase ();\r
-this.version = version;\r
-this.accessionId = accessionId;\r
-this.map = map;\r
-}, "~S,~S,~S,jalview.datamodel.Mapping");\r
-Clazz.makeConstructor (c$, \r
-function (entry) {\r
-this.construct ((entry.source == null ? "" :  String.instantialize (entry.source)), (entry.version == null ? "" :  String.instantialize (entry.version)), (entry.accessionId == null ? "" :  String.instantialize (entry.accessionId)), (entry.map == null ? null :  new jalview.datamodel.Mapping (entry.map)));\r
-}, "jalview.datamodel.DBRefEntry");\r
-Clazz.overrideMethod (c$, "equals", \r
-function (o) {\r
-if (o == null || !(Clazz.instanceOf (o, jalview.datamodel.DBRefEntry))) {\r
-return false;\r
-}var entry = o;\r
-if (entry === this) {\r
-return true;\r
-}if (this.equalRef (entry) && ((this.map == null && entry.map == null) || (this.map != null && entry.map != null && this.map.equals (entry.map)))) {\r
-return true;\r
-}return false;\r
-}, "~O");\r
-Clazz.defineMethod (c$, "equalRef", \r
-function (entry) {\r
-if (entry == null) {\r
-return false;\r
-}if (entry === this) {\r
-return true;\r
-}if ((this.source != null && entry.source != null && this.source.equalsIgnoreCase (entry.source)) && (this.accessionId != null && entry.accessionId != null && this.accessionId.equalsIgnoreCase (entry.accessionId)) && (this.version != null && entry.version != null && this.version.equalsIgnoreCase (entry.version))) {\r
-return true;\r
-}return false;\r
-}, "jalview.datamodel.DBRefEntry");\r
-Clazz.defineMethod (c$, "getSource", \r
-function () {\r
-return this.source;\r
-});\r
-Clazz.defineMethod (c$, "getVersion", \r
-function () {\r
-return this.version;\r
-});\r
-Clazz.defineMethod (c$, "getAccessionId", \r
-function () {\r
-return this.accessionId;\r
-});\r
-Clazz.defineMethod (c$, "setAccessionId", \r
-function (accessionId) {\r
-this.accessionId = accessionId;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setSource", \r
-function (source) {\r
-this.source = source;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setVersion", \r
-function (version) {\r
-this.version = version;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getMap", \r
-function () {\r
-return this.map;\r
-});\r
-Clazz.defineMethod (c$, "setMap", \r
-function (map) {\r
-this.map = map;\r
-}, "jalview.datamodel.Mapping");\r
-Clazz.defineMethod (c$, "hasMap", \r
-function () {\r
-return this.map != null;\r
-});\r
-Clazz.defineMethod (c$, "getSrcAccString", \r
-function () {\r
-return ((this.source != null) ? this.source : "") + ":" + ((this.accessionId != null) ? this.accessionId : "");\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return this.getSrcAccString ();\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.DBRefEntry", ["jalview.datamodel.Mapping"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.source = "";
+this.version = "";
+this.accessionId = "";
+this.map = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "DBRefEntry");
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.makeConstructor (c$, 
+function (source, version, accessionId) {
+this.construct (source, version, accessionId, null);
+}, "~S,~S,~S");
+Clazz.makeConstructor (c$, 
+function (source, version, accessionId, map) {
+this.source = source.toUpperCase ();
+this.version = version;
+this.accessionId = accessionId;
+this.map = map;
+}, "~S,~S,~S,jalview.datamodel.Mapping");
+Clazz.makeConstructor (c$, 
+function (entry) {
+this.construct ((entry.source == null ? "" :  String.instantialize (entry.source)), (entry.version == null ? "" :  String.instantialize (entry.version)), (entry.accessionId == null ? "" :  String.instantialize (entry.accessionId)), (entry.map == null ? null :  new jalview.datamodel.Mapping (entry.map)));
+}, "jalview.datamodel.DBRefEntry");
+Clazz.overrideMethod (c$, "equals", 
+function (o) {
+if (o == null || !(Clazz.instanceOf (o, jalview.datamodel.DBRefEntry))) {
+return false;
+}var entry = o;
+if (entry === this) {
+return true;
+}if (this.equalRef (entry) && ((this.map == null && entry.map == null) || (this.map != null && entry.map != null && this.map.equals (entry.map)))) {
+return true;
+}return false;
+}, "~O");
+Clazz.defineMethod (c$, "equalRef", 
+function (entry) {
+if (entry == null) {
+return false;
+}if (entry === this) {
+return true;
+}if ((this.source != null && entry.source != null && this.source.equalsIgnoreCase (entry.source)) && (this.accessionId != null && entry.accessionId != null && this.accessionId.equalsIgnoreCase (entry.accessionId)) && (this.version != null && entry.version != null && this.version.equalsIgnoreCase (entry.version))) {
+return true;
+}return false;
+}, "jalview.datamodel.DBRefEntry");
+Clazz.defineMethod (c$, "getSource", 
+function () {
+return this.source;
+});
+Clazz.defineMethod (c$, "getVersion", 
+function () {
+return this.version;
+});
+Clazz.defineMethod (c$, "getAccessionId", 
+function () {
+return this.accessionId;
+});
+Clazz.defineMethod (c$, "setAccessionId", 
+function (accessionId) {
+this.accessionId = accessionId;
+}, "~S");
+Clazz.defineMethod (c$, "setSource", 
+function (source) {
+this.source = source;
+}, "~S");
+Clazz.defineMethod (c$, "setVersion", 
+function (version) {
+this.version = version;
+}, "~S");
+Clazz.defineMethod (c$, "getMap", 
+function () {
+return this.map;
+});
+Clazz.defineMethod (c$, "setMap", 
+function (map) {
+this.map = map;
+}, "jalview.datamodel.Mapping");
+Clazz.defineMethod (c$, "hasMap", 
+function () {
+return this.map != null;
+});
+Clazz.defineMethod (c$, "getSrcAccString", 
+function () {
+return ((this.source != null) ? this.source : "") + ":" + ((this.accessionId != null) ? this.accessionId : "");
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return this.getSrcAccString ();
+});
+});
index 587f6f3..00d7337 100644 (file)
@@ -1,29 +1,29 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-c$ = Clazz.declareType (jalview.datamodel, "DBRefSource");\r
-Clazz.defineStatics (c$,\r
-"UNIPROT", "UNIPROT");\r
-c$.UP_NAME = c$.prototype.UP_NAME = "UNIPROT_NAME".toUpperCase ();\r
-c$.UNIPROTKB = c$.prototype.UNIPROTKB = "UniProtKB/TrEMBL".toUpperCase ();\r
-c$.EMBLCDSProduct = c$.prototype.EMBLCDSProduct = "EMBLCDSProtein".toUpperCase ();\r
-Clazz.defineStatics (c$,\r
-"PDB", "PDB",\r
-"EMBL", "EMBL",\r
-"EMBLCDS", "EMBLCDS",\r
-"PFAM", "PFAM",\r
-"RFAM", "RFAM");\r
-c$.GENEDB = c$.prototype.GENEDB = "GeneDB".toUpperCase ();\r
-c$.DNACODINGDBS = c$.prototype.DNACODINGDBS =  Clazz.newArray (-1, [jalview.datamodel.DBRefSource.EMBL, jalview.datamodel.DBRefSource.EMBLCDS, jalview.datamodel.DBRefSource.GENEDB]);\r
-c$.CODINGDBS = c$.prototype.CODINGDBS =  Clazz.newArray (-1, [jalview.datamodel.DBRefSource.EMBLCDS, jalview.datamodel.DBRefSource.GENEDB]);\r
-c$.PROTEINDBS = c$.prototype.PROTEINDBS =  Clazz.newArray (-1, [jalview.datamodel.DBRefSource.UNIPROT, jalview.datamodel.DBRefSource.PDB, jalview.datamodel.DBRefSource.UNIPROTKB, jalview.datamodel.DBRefSource.EMBLCDSProduct]);\r
-c$.PROTEINSEQ = c$.prototype.PROTEINSEQ =  Clazz.newArray (-1, [jalview.datamodel.DBRefSource.UNIPROT, jalview.datamodel.DBRefSource.UNIPROTKB, jalview.datamodel.DBRefSource.EMBLCDSProduct]);\r
-c$.PROTEINSTR = c$.prototype.PROTEINSTR =  Clazz.newArray (-1, [jalview.datamodel.DBRefSource.PDB]);\r
-c$.DOMAINDBS = c$.prototype.DOMAINDBS =  Clazz.newArray (-1, [jalview.datamodel.DBRefSource.PFAM, jalview.datamodel.DBRefSource.RFAM]);\r
-Clazz.defineStatics (c$,\r
-"SEQDB", "SQ",\r
-"DNASEQDB", "NASQ",\r
-"PROTSEQDB", "PROTSQ",\r
-"CODINGSEQDB", "CODING",\r
-"DNACODINGSEQDB", "XONCODING",\r
-"DOMAINDB", "DOMAIN",\r
-"MULTIACC", "MULTIACC",\r
-"ALIGNMENTDB", "ALIGNMENTS");\r
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.declareType (jalview.datamodel, "DBRefSource");
+Clazz.defineStatics (c$,
+"UNIPROT", "UNIPROT");
+c$.UP_NAME = c$.prototype.UP_NAME = "UNIPROT_NAME".toUpperCase ();
+c$.UNIPROTKB = c$.prototype.UNIPROTKB = "UniProtKB/TrEMBL".toUpperCase ();
+c$.EMBLCDSProduct = c$.prototype.EMBLCDSProduct = "EMBLCDSProtein".toUpperCase ();
+Clazz.defineStatics (c$,
+"PDB", "PDB",
+"EMBL", "EMBL",
+"EMBLCDS", "EMBLCDS",
+"PFAM", "PFAM",
+"RFAM", "RFAM");
+c$.GENEDB = c$.prototype.GENEDB = "GeneDB".toUpperCase ();
+c$.DNACODINGDBS = c$.prototype.DNACODINGDBS =  Clazz.newArray (-1, [jalview.datamodel.DBRefSource.EMBL, jalview.datamodel.DBRefSource.EMBLCDS, jalview.datamodel.DBRefSource.GENEDB]);
+c$.CODINGDBS = c$.prototype.CODINGDBS =  Clazz.newArray (-1, [jalview.datamodel.DBRefSource.EMBLCDS, jalview.datamodel.DBRefSource.GENEDB]);
+c$.PROTEINDBS = c$.prototype.PROTEINDBS =  Clazz.newArray (-1, [jalview.datamodel.DBRefSource.UNIPROT, jalview.datamodel.DBRefSource.PDB, jalview.datamodel.DBRefSource.UNIPROTKB, jalview.datamodel.DBRefSource.EMBLCDSProduct]);
+c$.PROTEINSEQ = c$.prototype.PROTEINSEQ =  Clazz.newArray (-1, [jalview.datamodel.DBRefSource.UNIPROT, jalview.datamodel.DBRefSource.UNIPROTKB, jalview.datamodel.DBRefSource.EMBLCDSProduct]);
+c$.PROTEINSTR = c$.prototype.PROTEINSTR =  Clazz.newArray (-1, [jalview.datamodel.DBRefSource.PDB]);
+c$.DOMAINDBS = c$.prototype.DOMAINDBS =  Clazz.newArray (-1, [jalview.datamodel.DBRefSource.PFAM, jalview.datamodel.DBRefSource.RFAM]);
+Clazz.defineStatics (c$,
+"SEQDB", "SQ",
+"DNASEQDB", "NASQ",
+"PROTSEQDB", "PROTSQ",
+"CODINGSEQDB", "CODING",
+"DNACODINGSEQDB", "XONCODING",
+"DOMAINDB", "DOMAIN",
+"MULTIACC", "MULTIACC",
+"ALIGNMENTDB", "ALIGNMENTS");
index 6df3e2b..350148d 100644 (file)
@@ -1,20 +1,20 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (null, "jalview.datamodel.FeatureProperties", ["jalview.datamodel.DBRefSource"], function () {\r
-c$ = Clazz.declareType (jalview.datamodel, "FeatureProperties");\r
-c$.isCodingFeature = Clazz.defineMethod (c$, "isCodingFeature", \r
-function (dbrefsource, type) {\r
-if (type.equalsIgnoreCase ("CDS")) {\r
-return (dbrefsource == null || dbrefsource.equalsIgnoreCase (jalview.datamodel.DBRefSource.EMBL) || dbrefsource.equalsIgnoreCase (jalview.datamodel.DBRefSource.EMBLCDS));\r
-}return false;\r
-}, "~S,~S");\r
-c$.getCodingFeature = Clazz.defineMethod (c$, "getCodingFeature", \r
-function (dbrefsource) {\r
-if (jalview.datamodel.DBRefSource.EMBL.equalsIgnoreCase (dbrefsource) || jalview.datamodel.DBRefSource.EMBLCDS.equalsIgnoreCase (dbrefsource)) {\r
-return "CDS";\r
-}return null;\r
-}, "~S");\r
-Clazz.defineStatics (c$,\r
-"EMBL_CODING_FEATURE", "CDS",\r
-"EXONPOS", "exon number",\r
-"EXONPRODUCT", "product");\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.FeatureProperties", ["jalview.datamodel.DBRefSource"], function () {
+c$ = Clazz.declareType (jalview.datamodel, "FeatureProperties");
+c$.isCodingFeature = Clazz.defineMethod (c$, "isCodingFeature", 
+function (dbrefsource, type) {
+if (type.equalsIgnoreCase ("CDS")) {
+return (dbrefsource == null || dbrefsource.equalsIgnoreCase (jalview.datamodel.DBRefSource.EMBL) || dbrefsource.equalsIgnoreCase (jalview.datamodel.DBRefSource.EMBLCDS));
+}return false;
+}, "~S,~S");
+c$.getCodingFeature = Clazz.defineMethod (c$, "getCodingFeature", 
+function (dbrefsource) {
+if (jalview.datamodel.DBRefSource.EMBL.equalsIgnoreCase (dbrefsource) || jalview.datamodel.DBRefSource.EMBLCDS.equalsIgnoreCase (dbrefsource)) {
+return "CDS";
+}return null;
+}, "~S");
+Clazz.defineStatics (c$,
+"EMBL_CODING_FEATURE", "CDS",
+"EXONPOS", "exon number",
+"EXONPRODUCT", "product");
+});
index 564e7f4..83ffc69 100644 (file)
@@ -1,36 +1,36 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["java.awt.Color"], "jalview.datamodel.GraphLine", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.value = 0;\r
-this.label = "";\r
-this.colour = null;\r
-this.displayed = true;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "GraphLine");\r
-Clazz.prepareFields (c$, function () {\r
-this.colour = java.awt.Color.black;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (value, label, col) {\r
-this.value = value;\r
-if (label != null) {\r
-this.label = label;\r
-}if (col != null) {\r
-this.colour = col;\r
-}}, "~N,~S,java.awt.Color");\r
-Clazz.makeConstructor (c$, \r
-function (from) {\r
-if (from != null) {\r
-this.value = from.value;\r
-this.label =  String.instantialize (from.label);\r
-this.colour = from.colour;\r
-this.displayed = from.displayed;\r
-}}, "jalview.datamodel.GraphLine");\r
-Clazz.overrideMethod (c$, "equals", \r
-function (obj) {\r
-if (obj != null && Clazz.instanceOf (obj, jalview.datamodel.GraphLine)) {\r
-var other = obj;\r
-return this.displayed == other.displayed && this.value == other.value && (this.colour != null ? (other.colour != null && other.colour.equals (this.colour)) : other.colour == null) && (this.label != null ? (other.label != null && other.label.equals (this.label)) : other.label == null);\r
-}return false;\r
-}, "~O");\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.awt.Color"], "jalview.datamodel.GraphLine", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.value = 0;
+this.label = "";
+this.colour = null;
+this.displayed = true;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "GraphLine");
+Clazz.prepareFields (c$, function () {
+this.colour = java.awt.Color.black;
+});
+Clazz.makeConstructor (c$, 
+function (value, label, col) {
+this.value = value;
+if (label != null) {
+this.label = label;
+}if (col != null) {
+this.colour = col;
+}}, "~N,~S,java.awt.Color");
+Clazz.makeConstructor (c$, 
+function (from) {
+if (from != null) {
+this.value = from.value;
+this.label =  String.instantialize (from.label);
+this.colour = from.colour;
+this.displayed = from.displayed;
+}}, "jalview.datamodel.GraphLine");
+Clazz.overrideMethod (c$, "equals", 
+function (obj) {
+if (obj != null && Clazz.instanceOf (obj, jalview.datamodel.GraphLine)) {
+var other = obj;
+return this.displayed == other.displayed && this.value == other.value && (this.colour != null ? (other.colour != null && other.colour.equals (this.colour)) : other.colour == null) && (this.label != null ? (other.label != null && other.label.equals (this.label)) : other.label == null);
+}return false;
+}, "~O");
+});
index a6524e4..5553ae2 100644 (file)
Binary files a/bin/jalview/datamodel/HiddenSequences.class and b/bin/jalview/datamodel/HiddenSequences.class differ
index 9111dd8..65b1c2b 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (null, "jalview.datamodel.HiddenSequences", ["jalview.datamodel.Alignment", "java.util.ArrayList"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.hiddenSequences = null;\r
-this.alignment = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "HiddenSequences");\r
-Clazz.makeConstructor (c$, \r
-function (al) {\r
-this.alignment = al;\r
-}, "jalview.datamodel.AlignmentI");\r
-Clazz.defineMethod (c$, "getSize", \r
-function () {\r
-if (this.hiddenSequences == null) {\r
-return 0;\r
-}var count = 0;\r
-for (var i = 0; i < this.hiddenSequences.length; i++) {\r
-if (this.hiddenSequences[i] != null) {\r
-count++;\r
-}}\r
-return count;\r
-});\r
-Clazz.defineMethod (c$, "getWidth", \r
-function () {\r
-var width = 0;\r
-for (var i = 0; i < this.hiddenSequences.length; i++) {\r
-if (this.hiddenSequences[i] != null && this.hiddenSequences[i].getLength () > width) {\r
-width = this.hiddenSequences[i].getLength ();\r
-}}\r
-return width;\r
-});\r
-Clazz.defineMethod (c$, "adjustHeightSequenceDeleted", \r
-function (seqIndex) {\r
-if (this.hiddenSequences == null) {\r
-return;\r
-}var alHeight = this.alignment.getHeight ();\r
-var tmp =  new Array (alHeight + this.getSize ());\r
-var deletionIndex = this.adjustForHiddenSeqs (seqIndex);\r
-for (var i = 0; i < this.hiddenSequences.length; i++) {\r
-if (this.hiddenSequences[i] == null) {\r
-continue;\r
-}if (i > deletionIndex) {\r
-tmp[i - 1] = this.hiddenSequences[i];\r
-} else {\r
-tmp[i] = this.hiddenSequences[i];\r
-}}\r
-this.hiddenSequences = tmp;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "adjustHeightSequenceAdded", \r
-function () {\r
-if (this.hiddenSequences == null) {\r
-return;\r
-}var alHeight = this.alignment.getHeight ();\r
-var tmp =  new Array (alHeight + this.getSize ());\r
-System.arraycopy (this.hiddenSequences, 0, tmp, 0, this.hiddenSequences.length);\r
-this.hiddenSequences = tmp;\r
-});\r
-Clazz.defineMethod (c$, "hideSequence", \r
-function (sequence) {\r
-if (this.hiddenSequences == null) {\r
-this.hiddenSequences =  new Array (this.alignment.getHeight ());\r
-}var alignmentIndex = this.alignment.findIndex (sequence);\r
-alignmentIndex = this.adjustForHiddenSeqs (alignmentIndex);\r
-if (this.hiddenSequences[alignmentIndex] != null) {\r
-System.out.println ("ERROR!!!!!!!!!!!");\r
-}this.hiddenSequences[alignmentIndex] = sequence;\r
-this.alignment.deleteSequence (sequence);\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "showAll", \r
-function (hiddenRepSequences) {\r
-var revealedSeqs =  new java.util.ArrayList ();\r
-for (var i = 0; i < this.hiddenSequences.length; i++) {\r
-if (this.hiddenSequences[i] != null) {\r
-var tmp = this.showSequence (i, hiddenRepSequences);\r
-for (var seq, $seq = tmp.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-revealedSeqs.add (seq);\r
-}\r
-}}\r
-return revealedSeqs;\r
-}, "java.util.Map");\r
-Clazz.defineMethod (c$, "showSequence", \r
-function (alignmentIndex, hiddenRepSequences) {\r
-var revealedSeqs =  new java.util.ArrayList ();\r
-var repSequence = this.alignment.getSequenceAt (alignmentIndex);\r
-if (repSequence != null && hiddenRepSequences != null && hiddenRepSequences.containsKey (repSequence)) {\r
-hiddenRepSequences.remove (repSequence);\r
-revealedSeqs.add (repSequence);\r
-}var start = this.adjustForHiddenSeqs (alignmentIndex - 1);\r
-var end = this.adjustForHiddenSeqs (alignmentIndex);\r
-if (end >= this.hiddenSequences.length) {\r
-end = this.hiddenSequences.length - 1;\r
-}var asequences;\r
-{\r
-for (var index = end; index > start; index--) {\r
-var seq = this.hiddenSequences[index];\r
-this.hiddenSequences[index] = null;\r
-if (seq != null) {\r
-if (seq.getLength () > 0) {\r
-revealedSeqs.add (seq);\r
-asequences.add (alignmentIndex, seq);\r
-} else {\r
-System.out.println (seq.getName () + " has been deleted whilst hidden");\r
-}}}\r
-}return revealedSeqs;\r
-}, "~N,java.util.Map");\r
-Clazz.defineMethod (c$, "getHiddenSequence", \r
-function (alignmentIndex) {\r
-return this.hiddenSequences[alignmentIndex];\r
-}, "~N");\r
-Clazz.defineMethod (c$, "findIndexWithoutHiddenSeqs", \r
-function (alignmentIndex) {\r
-var index = 0;\r
-var hiddenSeqs = 0;\r
-if (this.hiddenSequences.length <= alignmentIndex) {\r
-alignmentIndex = this.hiddenSequences.length - 1;\r
-}while (index <= alignmentIndex) {\r
-if (this.hiddenSequences[index] != null) {\r
-hiddenSeqs++;\r
-}index++;\r
-}\r
-;return (alignmentIndex - hiddenSeqs);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "adjustForHiddenSeqs", \r
-function (alignmentIndex) {\r
-var index = 0;\r
-var hSize = this.hiddenSequences.length;\r
-while (index <= alignmentIndex && index < hSize) {\r
-if (this.hiddenSequences[index] != null) {\r
-alignmentIndex++;\r
-}index++;\r
-}\r
-;return alignmentIndex;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getFullAlignment", \r
-function () {\r
-var isize = this.hiddenSequences.length;\r
-var seq =  new Array (isize);\r
-var index = 0;\r
-for (var i = 0; i < this.hiddenSequences.length; i++) {\r
-if (this.hiddenSequences[i] != null) {\r
-seq[i] = this.hiddenSequences[i];\r
-} else {\r
-seq[i] = this.alignment.getSequenceAt (index);\r
-index++;\r
-}}\r
-var fAlignmt =  new jalview.datamodel.Alignment (seq);\r
-fAlignmt.annotations = this.alignment.getAlignmentAnnotation ();\r
-fAlignmt.alignmentProperties = this.alignment.getProperties ();\r
-fAlignmt.groups = this.alignment.getGroups ();\r
-fAlignmt.$hasRNAStructure = this.alignment.hasRNAStructure ();\r
-return fAlignmt;\r
-});\r
-Clazz.defineMethod (c$, "isHidden", \r
-function (seq) {\r
-if (this.hiddenSequences != null) {\r
-for (var i = 0; i < this.hiddenSequences.length; i++) {\r
-if (this.hiddenSequences[i] != null && this.hiddenSequences[i] === seq) {\r
-return true;\r
-}}\r
-}return false;\r
-}, "jalview.datamodel.SequenceI");\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.HiddenSequences", ["jalview.datamodel.Alignment", "java.util.ArrayList"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.hiddenSequences = null;
+this.alignment = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "HiddenSequences");
+Clazz.makeConstructor (c$, 
+function (al) {
+this.alignment = al;
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "getSize", 
+function () {
+if (this.hiddenSequences == null) {
+return 0;
+}var count = 0;
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null) {
+count++;
+}}
+return count;
+});
+Clazz.defineMethod (c$, "getWidth", 
+function () {
+var width = 0;
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null && this.hiddenSequences[i].getLength () > width) {
+width = this.hiddenSequences[i].getLength ();
+}}
+return width;
+});
+Clazz.defineMethod (c$, "adjustHeightSequenceDeleted", 
+function (seqIndex) {
+if (this.hiddenSequences == null) {
+return;
+}var alHeight = this.alignment.getHeight ();
+var tmp =  new Array (alHeight + this.getSize ());
+var deletionIndex = this.adjustForHiddenSeqs (seqIndex);
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] == null) {
+continue;
+}if (i > deletionIndex) {
+tmp[i - 1] = this.hiddenSequences[i];
+} else {
+tmp[i] = this.hiddenSequences[i];
+}}
+this.hiddenSequences = tmp;
+}, "~N");
+Clazz.defineMethod (c$, "adjustHeightSequenceAdded", 
+function () {
+if (this.hiddenSequences == null) {
+return;
+}var alHeight = this.alignment.getHeight ();
+var tmp =  new Array (alHeight + this.getSize ());
+System.arraycopy (this.hiddenSequences, 0, tmp, 0, this.hiddenSequences.length);
+this.hiddenSequences = tmp;
+});
+Clazz.defineMethod (c$, "hideSequence", 
+function (sequence) {
+if (this.hiddenSequences == null) {
+this.hiddenSequences =  new Array (this.alignment.getHeight ());
+}var alignmentIndex = this.alignment.findIndex (sequence);
+alignmentIndex = this.adjustForHiddenSeqs (alignmentIndex);
+if (this.hiddenSequences[alignmentIndex] != null) {
+System.out.println ("ERROR!!!!!!!!!!!");
+}this.hiddenSequences[alignmentIndex] = sequence;
+this.alignment.deleteSequence (sequence);
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "showAll", 
+function (hiddenRepSequences) {
+var revealedSeqs =  new java.util.ArrayList ();
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null) {
+var tmp = this.showSequence (i, hiddenRepSequences);
+for (var seq, $seq = tmp.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+revealedSeqs.add (seq);
+}
+}}
+return revealedSeqs;
+}, "java.util.Map");
+Clazz.defineMethod (c$, "showSequence", 
+function (alignmentIndex, hiddenRepSequences) {
+var revealedSeqs =  new java.util.ArrayList ();
+var repSequence = this.alignment.getSequenceAt (alignmentIndex);
+if (repSequence != null && hiddenRepSequences != null && hiddenRepSequences.containsKey (repSequence)) {
+hiddenRepSequences.remove (repSequence);
+revealedSeqs.add (repSequence);
+}var start = this.adjustForHiddenSeqs (alignmentIndex - 1);
+var end = this.adjustForHiddenSeqs (alignmentIndex);
+if (end >= this.hiddenSequences.length) {
+end = this.hiddenSequences.length - 1;
+}var asequences;
+{
+for (var index = end; index > start; index--) {
+var seq = this.hiddenSequences[index];
+this.hiddenSequences[index] = null;
+if (seq != null) {
+if (seq.getLength () > 0) {
+revealedSeqs.add (seq);
+asequences.add (alignmentIndex, seq);
+} else {
+System.out.println (seq.getName () + " has been deleted whilst hidden");
+}}}
+}return revealedSeqs;
+}, "~N,java.util.Map");
+Clazz.defineMethod (c$, "getHiddenSequence", 
+function (alignmentIndex) {
+return this.hiddenSequences[alignmentIndex];
+}, "~N");
+Clazz.defineMethod (c$, "findIndexWithoutHiddenSeqs", 
+function (alignmentIndex) {
+var index = 0;
+var hiddenSeqs = 0;
+if (this.hiddenSequences.length <= alignmentIndex) {
+alignmentIndex = this.hiddenSequences.length - 1;
+}while (index <= alignmentIndex) {
+if (this.hiddenSequences[index] != null) {
+hiddenSeqs++;
+}index++;
+}
+;return (alignmentIndex - hiddenSeqs);
+}, "~N");
+Clazz.defineMethod (c$, "adjustForHiddenSeqs", 
+function (alignmentIndex) {
+var index = 0;
+var hSize = this.hiddenSequences.length;
+while (index <= alignmentIndex && index < hSize) {
+if (this.hiddenSequences[index] != null) {
+alignmentIndex++;
+}index++;
+}
+;return alignmentIndex;
+}, "~N");
+Clazz.defineMethod (c$, "getFullAlignment", 
+function () {
+var isize = this.hiddenSequences.length;
+var seq =  new Array (isize);
+var index = 0;
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null) {
+seq[i] = this.hiddenSequences[i];
+} else {
+seq[i] = this.alignment.getSequenceAt (index);
+index++;
+}}
+var fAlignmt =  new jalview.datamodel.Alignment (seq);
+fAlignmt.annotations = this.alignment.getAlignmentAnnotation ();
+fAlignmt.alignmentProperties = this.alignment.getProperties ();
+fAlignmt.groups = this.alignment.getGroups ();
+fAlignmt.$hasRNAStructure = this.alignment.hasRNAStructure ();
+return fAlignmt;
+});
+Clazz.defineMethod (c$, "isHidden", 
+function (seq) {
+if (this.hiddenSequences != null) {
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null && this.hiddenSequences[i] === seq) {
+return true;
+}}
+}return false;
+}, "jalview.datamodel.SequenceI");
+});
index 372d9dd..924024c 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["java.lang.RuntimeException"], "jalview.datamodel.IncompleteCodonException", null, function () {\r
-c$ = Clazz.declareType (jalview.datamodel, "IncompleteCodonException", RuntimeException);\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.lang.RuntimeException"], "jalview.datamodel.IncompleteCodonException", null, function () {
+c$ = Clazz.declareType (jalview.datamodel, "IncompleteCodonException", RuntimeException);
+});
index fe06fda..a25222e 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["java.util.Iterator"], "jalview.datamodel.Mapping", ["jalview.datamodel.AlignedCodon", "$.IncompleteCodonException", "$.SequenceFeature", "jalview.util.MapList", "java.util.NoSuchElementException", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-if (!Clazz.isClassDefined ("jalview.datamodel.Mapping.AlignedCodonIterator")) {\r
-jalview.datamodel.Mapping.$Mapping$AlignedCodonIterator$ ();\r
-}\r
-this.map = null;\r
-this.to = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "Mapping");\r
-Clazz.makeConstructor (c$, \r
-function (map) {\r
-this.map = map;\r
-}, "jalview.util.MapList");\r
-Clazz.makeConstructor (c$, \r
-function (to, map) {\r
-this.construct (map);\r
-this.to = to;\r
-}, "jalview.datamodel.SequenceI,jalview.util.MapList");\r
-Clazz.makeConstructor (c$, \r
-function (to, exon, is, i, j) {\r
-this.construct (to,  new jalview.util.MapList (exon, is, i, j));\r
-}, "jalview.datamodel.SequenceI,~A,~A,~N,~N");\r
-Clazz.makeConstructor (c$, \r
-function (map2) {\r
-if (map2 !== this && map2 != null) {\r
-if (map2.map != null) {\r
-this.map =  new jalview.util.MapList (map2.map);\r
-}this.to = map2.to;\r
-}}, "jalview.datamodel.Mapping");\r
-Clazz.defineMethod (c$, "getMap", \r
-function () {\r
-return this.map;\r
-});\r
-Clazz.defineMethod (c$, "setMap", \r
-function (map) {\r
-this.map = map;\r
-}, "jalview.util.MapList");\r
-Clazz.overrideMethod (c$, "equals", \r
-function (o) {\r
-if (o == null || !(Clazz.instanceOf (o, jalview.datamodel.Mapping))) {\r
-return false;\r
-}var other = o;\r
-if (other === this) {\r
-return true;\r
-}if (other.to !== this.to) {\r
-return false;\r
-}if ((this.map != null && other.map == null) || (this.map == null && other.map != null)) {\r
-return false;\r
-}if ((this.map == null && other.map == null) || this.map.equals (other.map)) {\r
-return true;\r
-}return false;\r
-}, "~O");\r
-Clazz.defineMethod (c$, "getPosition", \r
-function (mpos) {\r
-if (this.map != null) {\r
-var mp = this.map.shiftTo (mpos);\r
-if (mp != null) {\r
-return mp[0];\r
-}}return mpos;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getWord", \r
-function (mpos) {\r
-if (this.map != null) {\r
-return this.map.getToWord (mpos);\r
-}return null;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getWidth", \r
-function () {\r
-if (this.map != null) {\r
-return this.map.getFromRatio ();\r
-}return 1;\r
-});\r
-Clazz.defineMethod (c$, "getMappedWidth", \r
-function () {\r
-if (this.map != null) {\r
-return this.map.getToRatio ();\r
-}return 1;\r
-});\r
-Clazz.defineMethod (c$, "getMappedPosition", \r
-function (pos) {\r
-if (this.map != null) {\r
-var mp = this.map.shiftFrom (pos);\r
-if (mp != null) {\r
-return mp[0];\r
-}}return pos;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getMappedWord", \r
-function (pos) {\r
-if (this.map != null) {\r
-var mp = this.map.shiftFrom (pos);\r
-if (mp != null) {\r
-return  Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.map.getToRatio () - 1)]);\r
-}}return null;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "locateFeature", \r
-function (f) {\r
-if (true) {\r
-if (this.map != null) {\r
-var frange = this.map.locateInFrom (f.getBegin (), f.getEnd ());\r
-if (frange == null) {\r
-return null;\r
-}var vf =  new Array (Clazz.doubleToInt (frange.length / 2));\r
-for (var i = 0, v = 0; i < frange.length; i += 2, v++) {\r
-vf[v] =  new jalview.datamodel.SequenceFeature (f);\r
-vf[v].setBegin (frange[i]);\r
-vf[v].setEnd (frange[i + 1]);\r
-if (frange.length > 2) {\r
-vf[v].setDescription (f.getDescription () + "\nPart " + (v + 1));\r
-}}\r
-return vf;\r
-}}if (false) {\r
-var word = this.getWord (f.getBegin ());\r
-if (word[0] < word[1]) {\r
-f.setBegin (word[0]);\r
-} else {\r
-f.setBegin (word[1]);\r
-}word = this.getWord (f.getEnd ());\r
-if (word[0] > word[1]) {\r
-f.setEnd (word[0]);\r
-} else {\r
-f.setEnd (word[1]);\r
-}}return  Clazz.newArray (-1, [f]);\r
-}, "jalview.datamodel.SequenceFeature");\r
-Clazz.defineMethod (c$, "locateRange", \r
-function (from, to) {\r
-if (this.map != null) {\r
-if (from <= to) {\r
-from = (this.map.getToLowest () < from) ? from : this.map.getToLowest ();\r
-to = (this.map.getToHighest () > to) ? to : this.map.getToHighest ();\r
-if (from > to) {\r
-return null;\r
-}} else {\r
-from = (this.map.getToHighest () > from) ? from : this.map.getToHighest ();\r
-to = (this.map.getToLowest () < to) ? to : this.map.getToLowest ();\r
-if (from < to) {\r
-return null;\r
-}}return this.map.locateInFrom (from, to);\r
-}return  Clazz.newIntArray (-1, [from, to]);\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "locateMappedRange", \r
-function (from, to) {\r
-if (this.map != null) {\r
-if (from <= to) {\r
-from = (this.map.getFromLowest () < from) ? from : this.map.getFromLowest ();\r
-to = (this.map.getFromHighest () > to) ? to : this.map.getFromHighest ();\r
-if (from > to) {\r
-return null;\r
-}} else {\r
-from = (this.map.getFromHighest () > from) ? from : this.map.getFromHighest ();\r
-to = (this.map.getFromLowest () < to) ? to : this.map.getFromLowest ();\r
-if (from < to) {\r
-return null;\r
-}}return this.map.locateInTo (from, to);\r
-}return  Clazz.newIntArray (-1, [from, to]);\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "intersectVisContigs", \r
-function (viscontigs) {\r
-var copy =  new jalview.datamodel.Mapping (this);\r
-if (this.map != null) {\r
-var vpos = 0;\r
-var apos = 0;\r
-var toRange =  new java.util.Vector ();\r
-var fromRange =  new java.util.Vector ();\r
-for (var vc = 0; vc < viscontigs.length; vc += 2) {\r
-var mpr = this.locateMappedRange (1 + viscontigs[vc], viscontigs[vc + 1] - 1);\r
-if (mpr != null) {\r
-for (var m = 0; m < mpr.length; m += 2) {\r
-toRange.addElement ( Clazz.newIntArray (-1, [mpr[m], mpr[m + 1]]));\r
-var xpos = this.locateRange (mpr[m], mpr[m + 1]);\r
-for (var x = 0; x < xpos.length; x += 2) {\r
-fromRange.addElement ( Clazz.newIntArray (-1, [xpos[x], xpos[x + 1]]));\r
-}\r
-}\r
-}}\r
-var from =  Clazz.newIntArray (fromRange.size () * 2, 0);\r
-var to =  Clazz.newIntArray (toRange.size () * 2, 0);\r
-var r;\r
-for (var f = 0, fSize = fromRange.size (); f < fSize; f++) {\r
-r = fromRange.elementAt (f);\r
-from[f * 2] = r[0];\r
-from[f * 2 + 1] = r[1];\r
-}\r
-for (var f = 0, fSize = toRange.size (); f < fSize; f++) {\r
-r = toRange.elementAt (f);\r
-to[f * 2] = r[0];\r
-to[f * 2 + 1] = r[1];\r
-}\r
-copy.setMap ( new jalview.util.MapList (from, to, this.map.getFromRatio (), this.map.getToRatio ()));\r
-}return copy;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "getTo", \r
-function () {\r
-return this.to;\r
-});\r
-Clazz.defineMethod (c$, "setTo", \r
-function (tto) {\r
-this.to = tto;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "finalize", \r
-function () {\r
-this.map = null;\r
-this.to = null;\r
-Clazz.superCall (this, jalview.datamodel.Mapping, "finalize", []);\r
-});\r
-Clazz.defineMethod (c$, "getCodonIterator", \r
-function (seq, gapChar) {\r
-return Clazz.innerTypeInstance (jalview.datamodel.Mapping.AlignedCodonIterator, this, null, seq.getSequence (), gapChar);\r
-}, "jalview.datamodel.SequenceI,~S");\r
-c$.$Mapping$AlignedCodonIterator$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.gap = '\0';\r
-this.alignedSeq = null;\r
-this.alignedColumn = 0;\r
-this.alignedBases = 0;\r
-this.fromRanges = null;\r
-this.toRanges = null;\r
-this.currentFromRange = null;\r
-this.currentToRange = null;\r
-this.fromPosition = 0;\r
-this.toPosition = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel.Mapping, "AlignedCodonIterator", null, java.util.Iterator);\r
-Clazz.makeConstructor (c$, \r
-function (a, b) {\r
-this.alignedSeq = a;\r
-this.gap = b;\r
-this.fromRanges = this.b$["jalview.datamodel.Mapping"].map.getFromRanges ().iterator ();\r
-this.toRanges = this.b$["jalview.datamodel.Mapping"].map.getToRanges ().iterator ();\r
-if (this.fromRanges.hasNext ()) {\r
-this.currentFromRange = this.fromRanges.next ();\r
-this.fromPosition = this.currentFromRange[0];\r
-}if (this.toRanges.hasNext ()) {\r
-this.currentToRange = this.toRanges.next ();\r
-this.toPosition = this.currentToRange[0];\r
-}}, "~A,~S");\r
-Clazz.defineMethod (c$, "hasNext", \r
-function () {\r
-if (this.fromRanges.hasNext ()) {\r
-return true;\r
-}if (this.currentFromRange == null || this.fromPosition >= this.currentFromRange[1]) {\r
-return false;\r
-}return true;\r
-});\r
-Clazz.overrideMethod (c$, "next", \r
-function () {\r
-if (!this.hasNext ()) {\r
-throw  new java.util.NoSuchElementException ();\r
-}var a = this.getNextCodon ();\r
-var b = this.getAlignedCodon (a);\r
-var c = this.getPeptide ();\r
-return  new jalview.datamodel.AlignedCodon (b[0], b[1], b[2], c);\r
-});\r
-Clazz.defineMethod (c$, "getPeptide", \r
-($fz = function () {\r
-if (this.toPosition <= this.currentToRange[1]) {\r
-var a = this.b$["jalview.datamodel.Mapping"].to.getSequence ()[this.toPosition - 1];\r
-this.toPosition++;\r
-return String.valueOf (a);\r
-}if (!this.toRanges.hasNext ()) {\r
-throw  new java.util.NoSuchElementException ("Ran out of peptide at position " + this.toPosition);\r
-}this.currentToRange = this.toRanges.next ();\r
-this.toPosition = this.currentToRange[0];\r
-return this.getPeptide ();\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "getNextCodon", \r
-($fz = function () {\r
-var a =  Clazz.newIntArray (3, 0);\r
-var b = 0;\r
-while (b < 3) {\r
-if (this.fromPosition <= this.currentFromRange[1]) {\r
-a[b++] = this.fromPosition++;\r
-} else {\r
-if (!this.fromRanges.hasNext ()) {\r
-throw  new jalview.datamodel.IncompleteCodonException ();\r
-}this.currentFromRange = this.fromRanges.next ();\r
-this.fromPosition = this.currentFromRange[0];\r
-}}\r
-return a;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "getAlignedCodon", \r
-($fz = function (a) {\r
-var b =  Clazz.newIntArray (a.length, 0);\r
-for (var c = 0; c < a.length; c++) {\r
-b[c] = this.getAlignedColumn (a[c]);\r
-}\r
-return b;\r
-}, $fz.isPrivate = true, $fz), "~A");\r
-Clazz.defineMethod (c$, "getAlignedColumn", \r
-($fz = function (a) {\r
-while (this.alignedBases < a && this.alignedColumn < this.alignedSeq.length) {\r
-if (this.alignedSeq[this.alignedColumn++] != this.gap) {\r
-this.alignedBases++;\r
-}}\r
-return this.alignedColumn - 1;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.overrideMethod (c$, "remove", \r
-function () {\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.util.Iterator"], "jalview.datamodel.Mapping", ["jalview.datamodel.AlignedCodon", "$.IncompleteCodonException", "$.SequenceFeature", "jalview.util.MapList", "java.util.NoSuchElementException", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+if (!Clazz.isClassDefined ("jalview.datamodel.Mapping.AlignedCodonIterator")) {
+jalview.datamodel.Mapping.$Mapping$AlignedCodonIterator$ ();
+}
+this.map = null;
+this.to = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "Mapping");
+Clazz.makeConstructor (c$, 
+function (map) {
+this.map = map;
+}, "jalview.util.MapList");
+Clazz.makeConstructor (c$, 
+function (to, map) {
+this.construct (map);
+this.to = to;
+}, "jalview.datamodel.SequenceI,jalview.util.MapList");
+Clazz.makeConstructor (c$, 
+function (to, exon, is, i, j) {
+this.construct (to,  new jalview.util.MapList (exon, is, i, j));
+}, "jalview.datamodel.SequenceI,~A,~A,~N,~N");
+Clazz.makeConstructor (c$, 
+function (map2) {
+if (map2 !== this && map2 != null) {
+if (map2.map != null) {
+this.map =  new jalview.util.MapList (map2.map);
+}this.to = map2.to;
+}}, "jalview.datamodel.Mapping");
+Clazz.defineMethod (c$, "getMap", 
+function () {
+return this.map;
+});
+Clazz.defineMethod (c$, "setMap", 
+function (map) {
+this.map = map;
+}, "jalview.util.MapList");
+Clazz.overrideMethod (c$, "equals", 
+function (o) {
+if (o == null || !(Clazz.instanceOf (o, jalview.datamodel.Mapping))) {
+return false;
+}var other = o;
+if (other === this) {
+return true;
+}if (other.to !== this.to) {
+return false;
+}if ((this.map != null && other.map == null) || (this.map == null && other.map != null)) {
+return false;
+}if ((this.map == null && other.map == null) || this.map.equals (other.map)) {
+return true;
+}return false;
+}, "~O");
+Clazz.defineMethod (c$, "getPosition", 
+function (mpos) {
+if (this.map != null) {
+var mp = this.map.shiftTo (mpos);
+if (mp != null) {
+return mp[0];
+}}return mpos;
+}, "~N");
+Clazz.defineMethod (c$, "getWord", 
+function (mpos) {
+if (this.map != null) {
+return this.map.getToWord (mpos);
+}return null;
+}, "~N");
+Clazz.defineMethod (c$, "getWidth", 
+function () {
+if (this.map != null) {
+return this.map.getFromRatio ();
+}return 1;
+});
+Clazz.defineMethod (c$, "getMappedWidth", 
+function () {
+if (this.map != null) {
+return this.map.getToRatio ();
+}return 1;
+});
+Clazz.defineMethod (c$, "getMappedPosition", 
+function (pos) {
+if (this.map != null) {
+var mp = this.map.shiftFrom (pos);
+if (mp != null) {
+return mp[0];
+}}return pos;
+}, "~N");
+Clazz.defineMethod (c$, "getMappedWord", 
+function (pos) {
+if (this.map != null) {
+var mp = this.map.shiftFrom (pos);
+if (mp != null) {
+return  Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.map.getToRatio () - 1)]);
+}}return null;
+}, "~N");
+Clazz.defineMethod (c$, "locateFeature", 
+function (f) {
+if (true) {
+if (this.map != null) {
+var frange = this.map.locateInFrom (f.getBegin (), f.getEnd ());
+if (frange == null) {
+return null;
+}var vf =  new Array (Clazz.doubleToInt (frange.length / 2));
+for (var i = 0, v = 0; i < frange.length; i += 2, v++) {
+vf[v] =  new jalview.datamodel.SequenceFeature (f);
+vf[v].setBegin (frange[i]);
+vf[v].setEnd (frange[i + 1]);
+if (frange.length > 2) {
+vf[v].setDescription (f.getDescription () + "\nPart " + (v + 1));
+}}
+return vf;
+}}if (false) {
+var word = this.getWord (f.getBegin ());
+if (word[0] < word[1]) {
+f.setBegin (word[0]);
+} else {
+f.setBegin (word[1]);
+}word = this.getWord (f.getEnd ());
+if (word[0] > word[1]) {
+f.setEnd (word[0]);
+} else {
+f.setEnd (word[1]);
+}}return  Clazz.newArray (-1, [f]);
+}, "jalview.datamodel.SequenceFeature");
+Clazz.defineMethod (c$, "locateRange", 
+function (from, to) {
+if (this.map != null) {
+if (from <= to) {
+from = (this.map.getToLowest () < from) ? from : this.map.getToLowest ();
+to = (this.map.getToHighest () > to) ? to : this.map.getToHighest ();
+if (from > to) {
+return null;
+}} else {
+from = (this.map.getToHighest () > from) ? from : this.map.getToHighest ();
+to = (this.map.getToLowest () < to) ? to : this.map.getToLowest ();
+if (from < to) {
+return null;
+}}return this.map.locateInFrom (from, to);
+}return  Clazz.newIntArray (-1, [from, to]);
+}, "~N,~N");
+Clazz.defineMethod (c$, "locateMappedRange", 
+function (from, to) {
+if (this.map != null) {
+if (from <= to) {
+from = (this.map.getFromLowest () < from) ? from : this.map.getFromLowest ();
+to = (this.map.getFromHighest () > to) ? to : this.map.getFromHighest ();
+if (from > to) {
+return null;
+}} else {
+from = (this.map.getFromHighest () > from) ? from : this.map.getFromHighest ();
+to = (this.map.getFromLowest () < to) ? to : this.map.getFromLowest ();
+if (from < to) {
+return null;
+}}return this.map.locateInTo (from, to);
+}return  Clazz.newIntArray (-1, [from, to]);
+}, "~N,~N");
+Clazz.defineMethod (c$, "intersectVisContigs", 
+function (viscontigs) {
+var copy =  new jalview.datamodel.Mapping (this);
+if (this.map != null) {
+var vpos = 0;
+var apos = 0;
+var toRange =  new java.util.Vector ();
+var fromRange =  new java.util.Vector ();
+for (var vc = 0; vc < viscontigs.length; vc += 2) {
+var mpr = this.locateMappedRange (1 + viscontigs[vc], viscontigs[vc + 1] - 1);
+if (mpr != null) {
+for (var m = 0; m < mpr.length; m += 2) {
+toRange.addElement ( Clazz.newIntArray (-1, [mpr[m], mpr[m + 1]]));
+var xpos = this.locateRange (mpr[m], mpr[m + 1]);
+for (var x = 0; x < xpos.length; x += 2) {
+fromRange.addElement ( Clazz.newIntArray (-1, [xpos[x], xpos[x + 1]]));
+}
+}
+}}
+var from =  Clazz.newIntArray (fromRange.size () * 2, 0);
+var to =  Clazz.newIntArray (toRange.size () * 2, 0);
+var r;
+for (var f = 0, fSize = fromRange.size (); f < fSize; f++) {
+r = fromRange.elementAt (f);
+from[f * 2] = r[0];
+from[f * 2 + 1] = r[1];
+}
+for (var f = 0, fSize = toRange.size (); f < fSize; f++) {
+r = toRange.elementAt (f);
+to[f * 2] = r[0];
+to[f * 2 + 1] = r[1];
+}
+copy.setMap ( new jalview.util.MapList (from, to, this.map.getFromRatio (), this.map.getToRatio ()));
+}return copy;
+}, "~A");
+Clazz.defineMethod (c$, "getTo", 
+function () {
+return this.to;
+});
+Clazz.defineMethod (c$, "setTo", 
+function (tto) {
+this.to = tto;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "finalize", 
+function () {
+this.map = null;
+this.to = null;
+Clazz.superCall (this, jalview.datamodel.Mapping, "finalize", []);
+});
+Clazz.defineMethod (c$, "getCodonIterator", 
+function (seq, gapChar) {
+return Clazz.innerTypeInstance (jalview.datamodel.Mapping.AlignedCodonIterator, this, null, seq.getSequence (), gapChar);
+}, "jalview.datamodel.SequenceI,~S");
+c$.$Mapping$AlignedCodonIterator$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.gap = '\0';
+this.alignedSeq = null;
+this.alignedColumn = 0;
+this.alignedBases = 0;
+this.fromRanges = null;
+this.toRanges = null;
+this.currentFromRange = null;
+this.currentToRange = null;
+this.fromPosition = 0;
+this.toPosition = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel.Mapping, "AlignedCodonIterator", null, java.util.Iterator);
+Clazz.makeConstructor (c$, 
+function (a, b) {
+this.alignedSeq = a;
+this.gap = b;
+this.fromRanges = this.b$["jalview.datamodel.Mapping"].map.getFromRanges ().iterator ();
+this.toRanges = this.b$["jalview.datamodel.Mapping"].map.getToRanges ().iterator ();
+if (this.fromRanges.hasNext ()) {
+this.currentFromRange = this.fromRanges.next ();
+this.fromPosition = this.currentFromRange[0];
+}if (this.toRanges.hasNext ()) {
+this.currentToRange = this.toRanges.next ();
+this.toPosition = this.currentToRange[0];
+}}, "~A,~S");
+Clazz.defineMethod (c$, "hasNext", 
+function () {
+if (this.fromRanges.hasNext ()) {
+return true;
+}if (this.currentFromRange == null || this.fromPosition >= this.currentFromRange[1]) {
+return false;
+}return true;
+});
+Clazz.overrideMethod (c$, "next", 
+function () {
+if (!this.hasNext ()) {
+throw  new java.util.NoSuchElementException ();
+}var a = this.getNextCodon ();
+var b = this.getAlignedCodon (a);
+var c = this.getPeptide ();
+return  new jalview.datamodel.AlignedCodon (b[0], b[1], b[2], c);
+});
+Clazz.defineMethod (c$, "getPeptide", 
+($fz = function () {
+if (this.toPosition <= this.currentToRange[1]) {
+var a = this.b$["jalview.datamodel.Mapping"].to.getSequence ()[this.toPosition - 1];
+this.toPosition++;
+return String.valueOf (a);
+}if (!this.toRanges.hasNext ()) {
+throw  new java.util.NoSuchElementException ("Ran out of peptide at position " + this.toPosition);
+}this.currentToRange = this.toRanges.next ();
+this.toPosition = this.currentToRange[0];
+return this.getPeptide ();
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getNextCodon", 
+($fz = function () {
+var a =  Clazz.newIntArray (3, 0);
+var b = 0;
+while (b < 3) {
+if (this.fromPosition <= this.currentFromRange[1]) {
+a[b++] = this.fromPosition++;
+} else {
+if (!this.fromRanges.hasNext ()) {
+throw  new jalview.datamodel.IncompleteCodonException ();
+}this.currentFromRange = this.fromRanges.next ();
+this.fromPosition = this.currentFromRange[0];
+}}
+return a;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getAlignedCodon", 
+($fz = function (a) {
+var b =  Clazz.newIntArray (a.length, 0);
+for (var c = 0; c < a.length; c++) {
+b[c] = this.getAlignedColumn (a[c]);
+}
+return b;
+}, $fz.isPrivate = true, $fz), "~A");
+Clazz.defineMethod (c$, "getAlignedColumn", 
+($fz = function (a) {
+while (this.alignedBases < a && this.alignedColumn < this.alignedSeq.length) {
+if (this.alignedSeq[this.alignedColumn++] != this.gap) {
+this.alignedBases++;
+}}
+return this.alignedColumn - 1;
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.overrideMethod (c$, "remove", 
+function () {
+});
+c$ = Clazz.p0p ();
+};
+});
index 83ace63..0f7a757 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.declareInterface (jalview.datamodel, "NodeTransformI");\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.declareInterface (jalview.datamodel, "NodeTransformI");
index e52f785..e153399 100644 (file)
@@ -1,88 +1,88 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["java.lang.Enum"], "jalview.datamodel.PDBEntry", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.file = null;\r
-this.type = null;\r
-this.id = null;\r
-this.chainCode = null;\r
-this.properties = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "PDBEntry");\r
-Clazz.overrideMethod (c$, "equals", \r
-function (obj) {\r
-if (obj == null || !(Clazz.instanceOf (obj, jalview.datamodel.PDBEntry))) {\r
-return false;\r
-}if (obj === this) {\r
-return true;\r
-}var o = obj;\r
-return (this.type === o.type || (this.type != null && o.type != null && o.type.equals (this.type))) && (this.id === o.id || (this.id != null && o.id != null && o.id.equalsIgnoreCase (this.id))) && (this.chainCode === o.chainCode || (this.chainCode != null && o.chainCode != null && o.chainCode.equalsIgnoreCase (this.chainCode))) && (this.properties === o.properties || (this.properties != null && o.properties != null && this.properties.equals (o.properties)));\r
-}, "~O");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (pdbId, chain, type, filePath) {\r
-this.id = pdbId;\r
-this.chainCode = chain;\r
-this.type = type == null ? null : type.toString ();\r
-this.file = filePath;\r
-}, "~S,~S,jalview.datamodel.PDBEntry.Type,~S");\r
-Clazz.makeConstructor (c$, \r
-function (entry) {\r
-this.file = entry.file;\r
-this.type = entry.type;\r
-this.id = entry.id;\r
-this.chainCode = entry.chainCode;\r
-if (entry.properties != null) {\r
-this.properties = entry.properties.clone ();\r
-}}, "jalview.datamodel.PDBEntry");\r
-Clazz.defineMethod (c$, "setFile", \r
-function (file) {\r
-this.file = file;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getFile", \r
-function () {\r
-return this.file;\r
-});\r
-Clazz.defineMethod (c$, "setType", \r
-function (t) {\r
-this.type = t;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setType", \r
-function (type) {\r
-this.type = type == null ? null : type.toString ();\r
-}, "jalview.datamodel.PDBEntry.Type");\r
-Clazz.defineMethod (c$, "getType", \r
-function () {\r
-return this.type;\r
-});\r
-Clazz.defineMethod (c$, "setId", \r
-function (id) {\r
-this.id = id;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getId", \r
-function () {\r
-return this.id;\r
-});\r
-Clazz.defineMethod (c$, "setProperty", \r
-function (property) {\r
-this.properties = property;\r
-}, "java.util.Hashtable");\r
-Clazz.defineMethod (c$, "getProperty", \r
-function () {\r
-return this.properties;\r
-});\r
-Clazz.defineMethod (c$, "getChainCode", \r
-function () {\r
-return this.chainCode;\r
-});\r
-Clazz.defineMethod (c$, "setChainCode", \r
-function (chainCode) {\r
-this.chainCode = chainCode;\r
-}, "~S");\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareType (jalview.datamodel.PDBEntry, "Type", Enum);\r
-Clazz.defineEnumConstant (c$, "PDB", 0, []);\r
-Clazz.defineEnumConstant (c$, "FILE", 1, []);\r
-c$ = Clazz.p0p ();\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.lang.Enum"], "jalview.datamodel.PDBEntry", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.file = null;
+this.type = null;
+this.id = null;
+this.chainCode = null;
+this.properties = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "PDBEntry");
+Clazz.overrideMethod (c$, "equals", 
+function (obj) {
+if (obj == null || !(Clazz.instanceOf (obj, jalview.datamodel.PDBEntry))) {
+return false;
+}if (obj === this) {
+return true;
+}var o = obj;
+return (this.type === o.type || (this.type != null && o.type != null && o.type.equals (this.type))) && (this.id === o.id || (this.id != null && o.id != null && o.id.equalsIgnoreCase (this.id))) && (this.chainCode === o.chainCode || (this.chainCode != null && o.chainCode != null && o.chainCode.equalsIgnoreCase (this.chainCode))) && (this.properties === o.properties || (this.properties != null && o.properties != null && this.properties.equals (o.properties)));
+}, "~O");
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.makeConstructor (c$, 
+function (pdbId, chain, type, filePath) {
+this.id = pdbId;
+this.chainCode = chain;
+this.type = type == null ? null : type.toString ();
+this.file = filePath;
+}, "~S,~S,jalview.datamodel.PDBEntry.Type,~S");
+Clazz.makeConstructor (c$, 
+function (entry) {
+this.file = entry.file;
+this.type = entry.type;
+this.id = entry.id;
+this.chainCode = entry.chainCode;
+if (entry.properties != null) {
+this.properties = entry.properties.clone ();
+}}, "jalview.datamodel.PDBEntry");
+Clazz.defineMethod (c$, "setFile", 
+function (file) {
+this.file = file;
+}, "~S");
+Clazz.defineMethod (c$, "getFile", 
+function () {
+return this.file;
+});
+Clazz.defineMethod (c$, "setType", 
+function (t) {
+this.type = t;
+}, "~S");
+Clazz.defineMethod (c$, "setType", 
+function (type) {
+this.type = type == null ? null : type.toString ();
+}, "jalview.datamodel.PDBEntry.Type");
+Clazz.defineMethod (c$, "getType", 
+function () {
+return this.type;
+});
+Clazz.defineMethod (c$, "setId", 
+function (id) {
+this.id = id;
+}, "~S");
+Clazz.defineMethod (c$, "getId", 
+function () {
+return this.id;
+});
+Clazz.defineMethod (c$, "setProperty", 
+function (property) {
+this.properties = property;
+}, "java.util.Hashtable");
+Clazz.defineMethod (c$, "getProperty", 
+function () {
+return this.properties;
+});
+Clazz.defineMethod (c$, "getChainCode", 
+function () {
+return this.chainCode;
+});
+Clazz.defineMethod (c$, "setChainCode", 
+function (chainCode) {
+this.chainCode = chainCode;
+}, "~S");
+Clazz.pu$h ();
+c$ = Clazz.declareType (jalview.datamodel.PDBEntry, "Type", Enum);
+Clazz.defineEnumConstant (c$, "PDB", 0, []);
+Clazz.defineEnumConstant (c$, "FILE", 1, []);
+c$ = Clazz.p0p ();
+});
index 04f873e..c0180ea 100644 (file)
@@ -1,25 +1,25 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["java.util.Vector"], "jalview.datamodel.Provenance", ["jalview.datamodel.ProvenanceEntry"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.entries = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "Provenance");\r
-Clazz.prepareFields (c$, function () {\r
-this.entries =  new java.util.Vector ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "getEntries", \r
-function () {\r
-var ret =  new Array (this.entries.size ());\r
-for (var i = 0; i < this.entries.size (); i++) {\r
-ret[i] = this.entries.elementAt (i);\r
-}\r
-return ret;\r
-});\r
-Clazz.defineMethod (c$, "addEntry", \r
-function (user, action, date, id) {\r
-this.entries.addElement ( new jalview.datamodel.ProvenanceEntry (user, action, date, id));\r
-}, "~S,~S,java.util.Date,~S");\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.util.Vector"], "jalview.datamodel.Provenance", ["jalview.datamodel.ProvenanceEntry"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.entries = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "Provenance");
+Clazz.prepareFields (c$, function () {
+this.entries =  new java.util.Vector ();
+});
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.defineMethod (c$, "getEntries", 
+function () {
+var ret =  new Array (this.entries.size ());
+for (var i = 0; i < this.entries.size (); i++) {
+ret[i] = this.entries.elementAt (i);
+}
+return ret;
+});
+Clazz.defineMethod (c$, "addEntry", 
+function (user, action, date, id) {
+this.entries.addElement ( new jalview.datamodel.ProvenanceEntry (user, action, date, id));
+}, "~S,~S,java.util.Date,~S");
+});
index 5077d90..1283717 100644 (file)
@@ -1,31 +1,31 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.user = null;\r
-this.action = null;\r
-this.id = null;\r
-this.date = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "ProvenanceEntry");\r
-Clazz.makeConstructor (c$, \r
-function (u, a, d, i) {\r
-this.user = u;\r
-this.action = a;\r
-this.date = d;\r
-this.id = i;\r
-}, "~S,~S,java.util.Date,~S");\r
-Clazz.defineMethod (c$, "getUser", \r
-function () {\r
-return this.user;\r
-});\r
-Clazz.defineMethod (c$, "getAction", \r
-function () {\r
-return this.action;\r
-});\r
-Clazz.defineMethod (c$, "getDate", \r
-function () {\r
-return this.date;\r
-});\r
-Clazz.defineMethod (c$, "getID", \r
-function () {\r
-return this.id;\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.decorateAsClass (function () {
+this.user = null;
+this.action = null;
+this.id = null;
+this.date = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "ProvenanceEntry");
+Clazz.makeConstructor (c$, 
+function (u, a, d, i) {
+this.user = u;
+this.action = a;
+this.date = d;
+this.id = i;
+}, "~S,~S,java.util.Date,~S");
+Clazz.defineMethod (c$, "getUser", 
+function () {
+return this.user;
+});
+Clazz.defineMethod (c$, "getAction", 
+function () {
+return this.action;
+});
+Clazz.defineMethod (c$, "getDate", 
+function () {
+return this.date;
+});
+Clazz.defineMethod (c$, "getID", 
+function () {
+return this.id;
+});
index 2e64a80..612cdda 100644 (file)
@@ -1,21 +1,21 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.viewId = null;\r
-this.title = null;\r
-this.x = 0;\r
-this.y = 0;\r
-this.width = 0;\r
-this.height = 0;\r
-this.dividerLocation = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "RnaViewerModel");\r
-Clazz.makeConstructor (c$, \r
-function (viewId, title, xpos, ypos, width, height, dividerLocation) {\r
-this.viewId = viewId;\r
-this.title = title;\r
-this.x = xpos;\r
-this.y = ypos;\r
-this.width = width;\r
-this.height = height;\r
-this.dividerLocation = dividerLocation;\r
-}, "~S,~S,~N,~N,~N,~N,~N");\r
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.decorateAsClass (function () {
+this.viewId = null;
+this.title = null;
+this.x = 0;
+this.y = 0;
+this.width = 0;
+this.height = 0;
+this.dividerLocation = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "RnaViewerModel");
+Clazz.makeConstructor (c$, 
+function (viewId, title, xpos, ypos, width, height, dividerLocation) {
+this.viewId = viewId;
+this.title = title;
+this.x = xpos;
+this.y = ypos;
+this.width = width;
+this.height = height;
+this.dividerLocation = dividerLocation;
+}, "~S,~S,~N,~N,~N,~N,~N");
index 74170de..e82bfa5 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["java.util.ArrayList"], "jalview.datamodel.SearchResults", ["java.lang.StringBuilder", "java.util.Arrays"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.matches = null;\r
-if (!Clazz.isClassDefined ("jalview.datamodel.SearchResults.Match")) {\r
-jalview.datamodel.SearchResults.$SearchResults$Match$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "SearchResults");\r
-Clazz.prepareFields (c$, function () {\r
-this.matches =  new java.util.ArrayList ();\r
-});\r
-Clazz.defineMethod (c$, "addResult", \r
-function (seq, start, end) {\r
-this.matches.add (Clazz.innerTypeInstance (jalview.datamodel.SearchResults.Match, this, null, seq, start, end));\r
-}, "jalview.datamodel.SequenceI,~N,~N");\r
-Clazz.defineMethod (c$, "involvesSequence", \r
-function (sequence) {\r
-var ds = sequence.getDatasetSequence ();\r
-for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {\r
-if (m.sequence != null && (m.sequence === sequence || m.sequence === ds)) {\r
-return true;\r
-}}\r
-return false;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "getResults", \r
-function (sequence, start, end) {\r
-if (this.matches.isEmpty ()) {\r
-return null;\r
-}var result = null;\r
-var tmp = null;\r
-var resultLength;\r
-var matchStart = 0;\r
-var matchEnd = 0;\r
-var mfound;\r
-for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {\r
-mfound = false;\r
-if (m.sequence === sequence) {\r
-mfound = true;\r
-matchStart = sequence.findIndex (m.start) - 1;\r
-matchEnd = sequence.findIndex (m.end) - 1;\r
-} else if (m.sequence === sequence.getDatasetSequence ()) {\r
-mfound = true;\r
-matchStart = sequence.findIndex (m.start) - 1;\r
-matchEnd = sequence.findIndex (m.end) - 1;\r
-}if (mfound) {\r
-if (matchStart <= end && matchEnd >= start) {\r
-if (matchStart < start) {\r
-matchStart = start;\r
-}if (matchEnd > end) {\r
-matchEnd = end;\r
-}if (result == null) {\r
-result =  Clazz.newIntArray (-1, [matchStart, matchEnd]);\r
-} else {\r
-resultLength = result.length;\r
-tmp =  Clazz.newIntArray (resultLength + 2, 0);\r
-System.arraycopy (result, 0, tmp, 0, resultLength);\r
-result = tmp;\r
-result[resultLength] = matchStart;\r
-result[resultLength + 1] = matchEnd;\r
-}} else {\r
-}}}\r
-return result;\r
-}, "jalview.datamodel.SequenceI,~N,~N");\r
-Clazz.defineMethod (c$, "getSize", \r
-function () {\r
-return this.matches.size ();\r
-});\r
-Clazz.defineMethod (c$, "getResultSequence", \r
-function (index) {\r
-return this.matches.get (index).sequence;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getResultStart", \r
-function (i) {\r
-return this.matches.get (i).start;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getResultEnd", \r
-function (i) {\r
-return this.matches.get (i).end;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "isEmpty", \r
-function () {\r
-return this.matches.isEmpty ();\r
-});\r
-Clazz.defineMethod (c$, "getResults", \r
-function () {\r
-return this.matches;\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var result =  new StringBuilder (256);\r
-for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {\r
-result.append (m.toString ());\r
-}\r
-return result.toString ();\r
-});\r
-c$.$SearchResults$Match$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.sequence = null;\r
-this.start = 0;\r
-this.end = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel.SearchResults, "Match");\r
-Clazz.makeConstructor (c$, \r
-function (a, b, c) {\r
-this.sequence = a;\r
-this.start = b;\r
-this.end = c;\r
-}, "jalview.datamodel.SequenceI,~N,~N");\r
-Clazz.defineMethod (c$, "getSequence", \r
-function () {\r
-return this.sequence;\r
-});\r
-Clazz.defineMethod (c$, "getStart", \r
-function () {\r
-return this.start;\r
-});\r
-Clazz.defineMethod (c$, "getEnd", \r
-function () {\r
-return this.end;\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var a = this.sequence.getSequence ();\r
-var b = Math.max (this.start - 1, 0);\r
-var c = Math.min (this.end, a.length + 1);\r
-return String.valueOf (java.util.Arrays.copyOfRange (a, b, c));\r
-});\r
-Clazz.defineMethod (c$, "setSequence", \r
-function (a) {\r
-this.sequence = a;\r
-}, "jalview.datamodel.SequenceI");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.util.ArrayList"], "jalview.datamodel.SearchResults", ["java.lang.StringBuilder", "java.util.Arrays"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.matches = null;
+if (!Clazz.isClassDefined ("jalview.datamodel.SearchResults.Match")) {
+jalview.datamodel.SearchResults.$SearchResults$Match$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SearchResults");
+Clazz.prepareFields (c$, function () {
+this.matches =  new java.util.ArrayList ();
+});
+Clazz.defineMethod (c$, "addResult", 
+function (seq, start, end) {
+this.matches.add (Clazz.innerTypeInstance (jalview.datamodel.SearchResults.Match, this, null, seq, start, end));
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz.defineMethod (c$, "involvesSequence", 
+function (sequence) {
+var ds = sequence.getDatasetSequence ();
+for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+if (m.sequence != null && (m.sequence === sequence || m.sequence === ds)) {
+return true;
+}}
+return false;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getResults", 
+function (sequence, start, end) {
+if (this.matches.isEmpty ()) {
+return null;
+}var result = null;
+var tmp = null;
+var resultLength;
+var matchStart = 0;
+var matchEnd = 0;
+var mfound;
+for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+mfound = false;
+if (m.sequence === sequence) {
+mfound = true;
+matchStart = sequence.findIndex (m.start) - 1;
+matchEnd = sequence.findIndex (m.end) - 1;
+} else if (m.sequence === sequence.getDatasetSequence ()) {
+mfound = true;
+matchStart = sequence.findIndex (m.start) - 1;
+matchEnd = sequence.findIndex (m.end) - 1;
+}if (mfound) {
+if (matchStart <= end && matchEnd >= start) {
+if (matchStart < start) {
+matchStart = start;
+}if (matchEnd > end) {
+matchEnd = end;
+}if (result == null) {
+result =  Clazz.newIntArray (-1, [matchStart, matchEnd]);
+} else {
+resultLength = result.length;
+tmp =  Clazz.newIntArray (resultLength + 2, 0);
+System.arraycopy (result, 0, tmp, 0, resultLength);
+result = tmp;
+result[resultLength] = matchStart;
+result[resultLength + 1] = matchEnd;
+}} else {
+}}}
+return result;
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz.defineMethod (c$, "getSize", 
+function () {
+return this.matches.size ();
+});
+Clazz.defineMethod (c$, "getResultSequence", 
+function (index) {
+return this.matches.get (index).sequence;
+}, "~N");
+Clazz.defineMethod (c$, "getResultStart", 
+function (i) {
+return this.matches.get (i).start;
+}, "~N");
+Clazz.defineMethod (c$, "getResultEnd", 
+function (i) {
+return this.matches.get (i).end;
+}, "~N");
+Clazz.defineMethod (c$, "isEmpty", 
+function () {
+return this.matches.isEmpty ();
+});
+Clazz.defineMethod (c$, "getResults", 
+function () {
+return this.matches;
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var result =  new StringBuilder (256);
+for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+result.append (m.toString ());
+}
+return result.toString ();
+});
+c$.$SearchResults$Match$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.sequence = null;
+this.start = 0;
+this.end = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel.SearchResults, "Match");
+Clazz.makeConstructor (c$, 
+function (a, b, c) {
+this.sequence = a;
+this.start = b;
+this.end = c;
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz.defineMethod (c$, "getSequence", 
+function () {
+return this.sequence;
+});
+Clazz.defineMethod (c$, "getStart", 
+function () {
+return this.start;
+});
+Clazz.defineMethod (c$, "getEnd", 
+function () {
+return this.end;
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var a = this.sequence.getSequence ();
+var b = Math.max (this.start - 1, 0);
+var c = Math.min (this.end, a.length + 1);
+return String.valueOf (java.util.Arrays.copyOfRange (a, b, c));
+});
+Clazz.defineMethod (c$, "setSequence", 
+function (a) {
+this.sequence = a;
+}, "jalview.datamodel.SequenceI");
+c$ = Clazz.p0p ();
+};
+});
index 6a35ad3..2d1eb58 100644 (file)
@@ -1,23 +1,23 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.AlignmentAnnotation"], "jalview.datamodel.SecondaryStructureAnnotation", ["jalview.datamodel.Annotation"], function () {\r
-c$ = Clazz.declareType (jalview.datamodel, "SecondaryStructureAnnotation", jalview.datamodel.AlignmentAnnotation);\r
-Clazz.makeConstructor (c$, \r
-function (rna) {\r
-Clazz.superConstructor (this, jalview.datamodel.SecondaryStructureAnnotation, ["Secondary Structure", "Un truc trop cool", jalview.datamodel.SecondaryStructureAnnotation.getAnnotation (rna)]);\r
-jalview.datamodel.SecondaryStructureAnnotation._rna = rna;\r
-}, "fr.orsay.lri.varna.models.rna.RNA");\r
-Clazz.defineMethod (c$, "getRNA", \r
-function () {\r
-return jalview.datamodel.SecondaryStructureAnnotation._rna;\r
-});\r
-c$.getAnnotation = Clazz.defineMethod (c$, "getAnnotation", \r
-function (rna) {\r
-var ann =  new Array (rna.getSize ());\r
-for (var i = 0; i < ann.length; i++) {\r
-ann[i] =  new jalview.datamodel.Annotation (jalview.datamodel.SecondaryStructureAnnotation._rna.getStructDBN (true), "", ' ', 0);\r
-;}\r
-return ann;\r
-}, "fr.orsay.lri.varna.models.rna.RNA");\r
-Clazz.defineStatics (c$,\r
-"_rna", null);\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.AlignmentAnnotation"], "jalview.datamodel.SecondaryStructureAnnotation", ["jalview.datamodel.Annotation"], function () {
+c$ = Clazz.declareType (jalview.datamodel, "SecondaryStructureAnnotation", jalview.datamodel.AlignmentAnnotation);
+Clazz.makeConstructor (c$, 
+function (rna) {
+Clazz.superConstructor (this, jalview.datamodel.SecondaryStructureAnnotation, ["Secondary Structure", "Un truc trop cool", jalview.datamodel.SecondaryStructureAnnotation.getAnnotation (rna)]);
+jalview.datamodel.SecondaryStructureAnnotation._rna = rna;
+}, "fr.orsay.lri.varna.models.rna.RNA");
+Clazz.defineMethod (c$, "getRNA", 
+function () {
+return jalview.datamodel.SecondaryStructureAnnotation._rna;
+});
+c$.getAnnotation = Clazz.defineMethod (c$, "getAnnotation", 
+function (rna) {
+var ann =  new Array (rna.getSize ());
+for (var i = 0; i < ann.length; i++) {
+ann[i] =  new jalview.datamodel.Annotation (jalview.datamodel.SecondaryStructureAnnotation._rna.getStructDBN (true), "", ' ', 0);
+;}
+return ann;
+}, "fr.orsay.lri.varna.models.rna.RNA");
+Clazz.defineStatics (c$,
+"_rna", null);
+});
index 5f54f07..8bb4e15 100644 (file)
Binary files a/bin/jalview/datamodel/SeqCigar.class and b/bin/jalview/datamodel/SeqCigar.class differ
index c9304ac..d35d16f 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.CigarSimple"], "jalview.datamodel.SeqCigar", ["jalview.analysis.AlignSeq", "$.SeqsetUtils", "jalview.datamodel.Sequence", "jalview.util.Comparison", "$.MessageManager", "$.ShiftList", "java.lang.Error", "$.StringBuffer", "java.util.Hashtable"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.start = 0;\r
-this.end = 0;\r
-this.refseq = null;\r
-this.seqProps = null;\r
-this.selGroups = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "SeqCigar", jalview.datamodel.CigarSimple);\r
-Clazz.defineMethod (c$, "getRefSeq", \r
-function () {\r
-return this.refseq;\r
-});\r
-Clazz.defineMethod (c$, "getStart", \r
-function () {\r
-return this.start;\r
-});\r
-Clazz.defineMethod (c$, "getEnd", \r
-function () {\r
-return this.end;\r
-});\r
-Clazz.overrideMethod (c$, "getSequenceString", \r
-function (GapChar) {\r
-return (this.length == 0) ? "" : this.getSequenceAndDeletions (this.refseq.getSequenceAsString (this.start, this.end), GapChar)[0];\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getSeq", \r
-function (GapChar) {\r
-var seq;\r
-if (this.refseq == null || this.length == 0) {\r
-return null;\r
-}var edit_result = this.getSequenceAndDeletions (this.refseq.getSequenceAsString (this.start, this.end), GapChar);\r
-if (edit_result == null) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_unexpected_null_from_get_sequence_and_deletions"));\r
-}var bounds = edit_result[1];\r
-seq =  new jalview.datamodel.Sequence (this.refseq.getName (), edit_result[0], this.refseq.getStart () + this.start + bounds[0], this.refseq.getStart () + this.start + ((bounds[2] == 0) ? -1 : bounds[2]));\r
-seq.setDescription (this.refseq.getDescription ());\r
-var sstart = seq.getStart ();\r
-var send = seq.getEnd ();\r
-if (this.seqProps != null) {\r
-jalview.analysis.SeqsetUtils.SeqCharacterUnhash (seq, this.seqProps);\r
-}seq.setDatasetSequence (this.refseq);\r
-seq.setStart (sstart);\r
-seq.setEnd (send);\r
-return seq;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "_setSeq", \r
-($fz = function (seq, initialDeletion, _s, _e) {\r
-var hasgaps = false;\r
-if (seq == null) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_set_seq_null"));\r
-}if (_s < 0) {\r
-throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_s",  Clazz.newArray (-1, [Integer.$valueOf (_s).toString ()])));\r
-}var seq_string = seq.getSequenceAsString ();\r
-if (_e == 0 || _e < _s || _e > seq_string.length) {\r
-_e = seq_string.length;\r
-}this.start = seq.findPosition (_s) - seq.getStart ();\r
-this.end = seq.findPosition (_e) - seq.getStart ();\r
-var l_ungapped = this.end - this.start;\r
-var ds = seq.getDatasetSequence ();\r
-if (ds == null) {\r
-var ungapped = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (seq_string));\r
-l_ungapped = ungapped.length;\r
-if (l_ungapped == seq.getLength ()) {\r
-ds = seq;\r
-} else {\r
-ds =  new jalview.datamodel.Sequence (seq.getName (), ungapped, seq.getStart (), seq.getStart () + ungapped.length - 1);\r
-}}if (ds.getStart () < seq.getStart ()) {\r
-var offset = seq.getStart () - ds.getStart ();\r
-if (initialDeletion) {\r
-this.addDeleted (_s + offset);\r
-this.start = 0;\r
-this.end += offset;\r
-} else {\r
-this.start += offset;\r
-this.end += offset;\r
-}}if (l_ungapped != (_e - _s)) {\r
-hasgaps = true;\r
-}this.refseq = ds;\r
-this.seqProps = jalview.analysis.SeqsetUtils.SeqCharacterHash (seq);\r
-if (this.end > ds.getLength ()) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_seqcigar_possible"));\r
-}return hasgaps;\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceI,~B,~N,~N");\r
-Clazz.makeConstructor (c$, \r
-function (seq, operation, range) {\r
-Clazz.superConstructor (this, jalview.datamodel.SeqCigar);\r
-if (seq == null) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implmentation_bug_seq_null"));\r
-}if (operation.length != range.length) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_bug_cigar_operation_list_range_list"));\r
-}if (operation != null) {\r
-this.operation =  Clazz.newCharArray (operation.length + this._inc_length, '\0');\r
-this.range =  Clazz.newIntArray (operation.length + this._inc_length, 0);\r
-if (this._setSeq (seq, false, 0, 0)) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented_cigar_object_from_cigar_string"));\r
-}for (var i = this.length, j = 0; j < operation.length; i++, j++) {\r
-var op = operation[j];\r
-if (op != 'M' && op != 'I' && op != 'D') {\r
-throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_bug_cigar_operation",  Clazz.newArray (-1, [Integer.$valueOf (j).toString (), Integer.$valueOf (op.charCodeAt (0)).toString (), Integer.$valueOf ('M'.charCodeAt (0)).toString (), Integer.$valueOf ('I'.charCodeAt (0)).toString (), Integer.$valueOf ('D'.charCodeAt (0)).toString ()])));\r
-}this.operation[i] = op;\r
-this.range[i] = range[j];\r
-}\r
-this.length += operation.length;\r
-} else {\r
-this.operation = null;\r
-this.range = null;\r
-this.length = 0;\r
-if (this._setSeq (seq, false, 0, 0)) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented_cigar_object_from_cigar_string"));\r
-}}}, "jalview.datamodel.SequenceI,~A,~A");\r
-Clazz.defineMethod (c$, "addMatch", \r
-function (range) {\r
-this.addOperation ('M', range);\r
-}, "~N");\r
-c$.addSequenceOps = Clazz.defineMethod (c$, "addSequenceOps", \r
-function (cigar, seq, startpos, endpos, initialDeletions) {\r
-var op = '\u0000';\r
-var range = 0;\r
-var p = 0;\r
-var res = seq.getLength ();\r
-if (!initialDeletions) {\r
-p = startpos;\r
-}while (p <= endpos) {\r
-var isGap = (p < res) ? jalview.util.Comparison.isGap (seq.getCharAt (p)) : true;\r
-if ((startpos <= p) && (p <= endpos)) {\r
-if (isGap) {\r
-if (range > 0 && op != 'I') {\r
-cigar.addOperation (op, range);\r
-range = 0;\r
-}op = 'I';\r
-range++;\r
-} else {\r
-if (range > 0 && op != 'M') {\r
-cigar.addOperation (op, range);\r
-range = 0;\r
-}op = 'M';\r
-range++;\r
-}} else {\r
-if (!isGap) {\r
-if (range > 0 && op != 'D') {\r
-cigar.addOperation (op, range);\r
-range = 0;\r
-}op = 'D';\r
-range++;\r
-} else {\r
-}}p++;\r
-}\r
-if (range > 0) {\r
-cigar.addOperation (op, range);\r
-}}, "jalview.datamodel.CigarBase,jalview.datamodel.SequenceI,~N,~N,~B");\r
-Clazz.makeConstructor (c$, \r
-function (seq) {\r
-Clazz.superConstructor (this, jalview.datamodel.SeqCigar);\r
-if (seq == null) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_for_new_cigar"));\r
-}this._setSeq (seq, false, 0, 0);\r
-jalview.datamodel.SeqCigar.addSequenceOps (this, seq, 0, seq.getLength () - 1, false);\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.makeConstructor (c$, \r
-function (seq, start, end) {\r
-Clazz.superConstructor (this, jalview.datamodel.SeqCigar);\r
-if (seq == null) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_for_new_cigar"));\r
-}this._setSeq (seq, false, start, end + 1);\r
-jalview.datamodel.SeqCigar.addSequenceOps (this, seq, start, end, false);\r
-}, "jalview.datamodel.SequenceI,~N,~N");\r
-c$.parseCigar = Clazz.defineMethod (c$, "parseCigar", \r
-function (seq, cigarString) {\r
-var opsandrange = jalview.datamodel.CigarBase.parseCigarString (cigarString);\r
-return  new jalview.datamodel.SeqCigar (seq, opsandrange[0], opsandrange[1]);\r
-}, "jalview.datamodel.SequenceI,~S");\r
-c$.createAlignmentSequences = Clazz.defineMethod (c$, "createAlignmentSequences", \r
-function (alseqs, gapCharacter, colsel, segments) {\r
-var seqs =  new Array (alseqs.length);\r
-var g_seqs =  new Array (alseqs.length);\r
-var alseqs_string =  new Array (alseqs.length);\r
-var gs_regions =  new Array (alseqs.length);\r
-for (var i = 0; i < alseqs.length; i++) {\r
-alseqs_string[i] = alseqs[i].getRefSeq ().getSequenceAsString (alseqs[i].start, alseqs[i].end);\r
-gs_regions[i] = alseqs[i].getSequenceAndDeletions (alseqs_string[i], gapCharacter);\r
-if (gs_regions[i] == null) {\r
-throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_cigar_seq_no_operations",  Clazz.newArray (-1, [Integer.$valueOf (i).toString ()])));\r
-}g_seqs[i] =  new StringBuffer ((gs_regions[i])[0]);\r
-}\r
-var shifts =  new jalview.util.ShiftList ();\r
-for (var i = 0; i < alseqs.length; i++) {\r
-var gs_region = ((gs_regions[i])[2]);\r
-if (gs_region != null) {\r
-for (var hr = 0; hr < gs_region.length; hr++) {\r
-var region = gs_region[hr];\r
-var insert =  Clazz.newCharArray (region[1] - region[0] + 1, '\0');\r
-for (var s = 0; s < insert.length; s++) {\r
-insert[s] = gapCharacter;\r
-}\r
-var inspos = shifts.shift (region[2]);\r
-for (var s = 0; s < alseqs.length; s++) {\r
-if (s != i) {\r
-if (g_seqs[s].length () <= inspos) {\r
-for (var l = inspos - g_seqs[s].length (); l > 0; l--) {\r
-g_seqs[s].append (gapCharacter);\r
-}\r
-}g_seqs[s].insert (inspos, insert);\r
-} else {\r
-g_seqs[s].insert (inspos, alseqs_string[i].substring (region[0], region[1] + 1));\r
-}}\r
-shifts.addShift (region[2], insert.length);\r
-if (segments == null) {\r
-colsel.hideColumns (inspos, inspos + insert.length - 1);\r
-}}\r
-}}\r
-for (var i = 0; i < alseqs.length; i++) {\r
-var bounds = ((gs_regions[i])[1]);\r
-var ref = alseqs[i].getRefSeq ();\r
-seqs[i] =  new jalview.datamodel.Sequence (ref.getName (), g_seqs[i].toString (), ref.getStart () + alseqs[i].start + bounds[0], ref.getStart () + alseqs[i].start + (bounds[2] == 0 ? -1 : bounds[2]));\r
-seqs[i].setDatasetSequence (ref);\r
-seqs[i].setDescription (ref.getDescription ());\r
-}\r
-if (segments != null) {\r
-for (var i = 0; i < segments.length; i += 3) {\r
-colsel.hideColumns (segments[i + 1], segments[i + 1] + segments[i + 2] - 1);\r
-}\r
-}return seqs;\r
-}, "~A,~S,jalview.datamodel.ColumnSelection,~A");\r
-Clazz.defineMethod (c$, "setGroupMembership", \r
-function (group) {\r
-if (this.selGroups == null) {\r
-this.selGroups =  new java.util.Hashtable ();\r
-}this.selGroups.put (group,  Clazz.newIntArray (0, 0));\r
-}, "~O");\r
-Clazz.defineMethod (c$, "removeGroupMembership", \r
-function (group) {\r
-if (this.selGroups != null && this.selGroups.containsKey (group)) {\r
-this.selGroups.remove (group);\r
-return true;\r
-}return false;\r
-}, "~O");\r
-Clazz.defineMethod (c$, "clearMemberships", \r
-function () {\r
-if (this.selGroups != null) {\r
-this.selGroups.clear ();\r
-}this.selGroups = null;\r
-});\r
-Clazz.defineMethod (c$, "getAllMemberships", \r
-function () {\r
-if (this.selGroups == null) {\r
-return null;\r
-}var mmbs =  new Array (this.selGroups.size ());\r
-var en = this.selGroups.keys ();\r
-for (var i = 0; en.hasMoreElements (); i++) {\r
-mmbs[i] = en.nextElement ();\r
-}\r
-return mmbs;\r
-});\r
-Clazz.defineMethod (c$, "isMemberOf", \r
-function (sgr) {\r
-return (this.selGroups != null) && this.selGroups.get (sgr) != null;\r
-}, "~O");\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.CigarSimple"], "jalview.datamodel.SeqCigar", ["jalview.analysis.AlignSeq", "$.SeqsetUtils", "jalview.datamodel.Sequence", "jalview.util.Comparison", "$.MessageManager", "$.ShiftList", "java.lang.Error", "$.StringBuffer", "java.util.Hashtable"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.start = 0;
+this.end = 0;
+this.refseq = null;
+this.seqProps = null;
+this.selGroups = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SeqCigar", jalview.datamodel.CigarSimple);
+Clazz.defineMethod (c$, "getRefSeq", 
+function () {
+return this.refseq;
+});
+Clazz.defineMethod (c$, "getStart", 
+function () {
+return this.start;
+});
+Clazz.defineMethod (c$, "getEnd", 
+function () {
+return this.end;
+});
+Clazz.overrideMethod (c$, "getSequenceString", 
+function (GapChar) {
+return (this.length == 0) ? "" : this.getSequenceAndDeletions (this.refseq.getSequenceAsString (this.start, this.end), GapChar)[0];
+}, "~S");
+Clazz.defineMethod (c$, "getSeq", 
+function (GapChar) {
+var seq;
+if (this.refseq == null || this.length == 0) {
+return null;
+}var edit_result = this.getSequenceAndDeletions (this.refseq.getSequenceAsString (this.start, this.end), GapChar);
+if (edit_result == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_unexpected_null_from_get_sequence_and_deletions"));
+}var bounds = edit_result[1];
+seq =  new jalview.datamodel.Sequence (this.refseq.getName (), edit_result[0], this.refseq.getStart () + this.start + bounds[0], this.refseq.getStart () + this.start + ((bounds[2] == 0) ? -1 : bounds[2]));
+seq.setDescription (this.refseq.getDescription ());
+var sstart = seq.getStart ();
+var send = seq.getEnd ();
+if (this.seqProps != null) {
+jalview.analysis.SeqsetUtils.SeqCharacterUnhash (seq, this.seqProps);
+}seq.setDatasetSequence (this.refseq);
+seq.setStart (sstart);
+seq.setEnd (send);
+return seq;
+}, "~S");
+Clazz.defineMethod (c$, "_setSeq", 
+($fz = function (seq, initialDeletion, _s, _e) {
+var hasgaps = false;
+if (seq == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_set_seq_null"));
+}if (_s < 0) {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_s",  Clazz.newArray (-1, [Integer.$valueOf (_s).toString ()])));
+}var seq_string = seq.getSequenceAsString ();
+if (_e == 0 || _e < _s || _e > seq_string.length) {
+_e = seq_string.length;
+}this.start = seq.findPosition (_s) - seq.getStart ();
+this.end = seq.findPosition (_e) - seq.getStart ();
+var l_ungapped = this.end - this.start;
+var ds = seq.getDatasetSequence ();
+if (ds == null) {
+var ungapped = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (seq_string));
+l_ungapped = ungapped.length;
+if (l_ungapped == seq.getLength ()) {
+ds = seq;
+} else {
+ds =  new jalview.datamodel.Sequence (seq.getName (), ungapped, seq.getStart (), seq.getStart () + ungapped.length - 1);
+}}if (ds.getStart () < seq.getStart ()) {
+var offset = seq.getStart () - ds.getStart ();
+if (initialDeletion) {
+this.addDeleted (_s + offset);
+this.start = 0;
+this.end += offset;
+} else {
+this.start += offset;
+this.end += offset;
+}}if (l_ungapped != (_e - _s)) {
+hasgaps = true;
+}this.refseq = ds;
+this.seqProps = jalview.analysis.SeqsetUtils.SeqCharacterHash (seq);
+if (this.end > ds.getLength ()) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_seqcigar_possible"));
+}return hasgaps;
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceI,~B,~N,~N");
+Clazz.makeConstructor (c$, 
+function (seq, operation, range) {
+Clazz.superConstructor (this, jalview.datamodel.SeqCigar);
+if (seq == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implmentation_bug_seq_null"));
+}if (operation.length != range.length) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_bug_cigar_operation_list_range_list"));
+}if (operation != null) {
+this.operation =  Clazz.newCharArray (operation.length + this._inc_length, '\0');
+this.range =  Clazz.newIntArray (operation.length + this._inc_length, 0);
+if (this._setSeq (seq, false, 0, 0)) {
+throw  new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented_cigar_object_from_cigar_string"));
+}for (var i = this.length, j = 0; j < operation.length; i++, j++) {
+var op = operation[j];
+if (op != 'M' && op != 'I' && op != 'D') {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_bug_cigar_operation",  Clazz.newArray (-1, [Integer.$valueOf (j).toString (), Integer.$valueOf (op.charCodeAt (0)).toString (), Integer.$valueOf ('M'.charCodeAt (0)).toString (), Integer.$valueOf ('I'.charCodeAt (0)).toString (), Integer.$valueOf ('D'.charCodeAt (0)).toString ()])));
+}this.operation[i] = op;
+this.range[i] = range[j];
+}
+this.length += operation.length;
+} else {
+this.operation = null;
+this.range = null;
+this.length = 0;
+if (this._setSeq (seq, false, 0, 0)) {
+throw  new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented_cigar_object_from_cigar_string"));
+}}}, "jalview.datamodel.SequenceI,~A,~A");
+Clazz.defineMethod (c$, "addMatch", 
+function (range) {
+this.addOperation ('M', range);
+}, "~N");
+c$.addSequenceOps = Clazz.defineMethod (c$, "addSequenceOps", 
+function (cigar, seq, startpos, endpos, initialDeletions) {
+var op = '\u0000';
+var range = 0;
+var p = 0;
+var res = seq.getLength ();
+if (!initialDeletions) {
+p = startpos;
+}while (p <= endpos) {
+var isGap = (p < res) ? jalview.util.Comparison.isGap (seq.getCharAt (p)) : true;
+if ((startpos <= p) && (p <= endpos)) {
+if (isGap) {
+if (range > 0 && op != 'I') {
+cigar.addOperation (op, range);
+range = 0;
+}op = 'I';
+range++;
+} else {
+if (range > 0 && op != 'M') {
+cigar.addOperation (op, range);
+range = 0;
+}op = 'M';
+range++;
+}} else {
+if (!isGap) {
+if (range > 0 && op != 'D') {
+cigar.addOperation (op, range);
+range = 0;
+}op = 'D';
+range++;
+} else {
+}}p++;
+}
+if (range > 0) {
+cigar.addOperation (op, range);
+}}, "jalview.datamodel.CigarBase,jalview.datamodel.SequenceI,~N,~N,~B");
+Clazz.makeConstructor (c$, 
+function (seq) {
+Clazz.superConstructor (this, jalview.datamodel.SeqCigar);
+if (seq == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_for_new_cigar"));
+}this._setSeq (seq, false, 0, 0);
+jalview.datamodel.SeqCigar.addSequenceOps (this, seq, 0, seq.getLength () - 1, false);
+}, "jalview.datamodel.SequenceI");
+Clazz.makeConstructor (c$, 
+function (seq, start, end) {
+Clazz.superConstructor (this, jalview.datamodel.SeqCigar);
+if (seq == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_for_new_cigar"));
+}this._setSeq (seq, false, start, end + 1);
+jalview.datamodel.SeqCigar.addSequenceOps (this, seq, start, end, false);
+}, "jalview.datamodel.SequenceI,~N,~N");
+c$.parseCigar = Clazz.defineMethod (c$, "parseCigar", 
+function (seq, cigarString) {
+var opsandrange = jalview.datamodel.CigarBase.parseCigarString (cigarString);
+return  new jalview.datamodel.SeqCigar (seq, opsandrange[0], opsandrange[1]);
+}, "jalview.datamodel.SequenceI,~S");
+c$.createAlignmentSequences = Clazz.defineMethod (c$, "createAlignmentSequences", 
+function (alseqs, gapCharacter, colsel, segments) {
+var seqs =  new Array (alseqs.length);
+var g_seqs =  new Array (alseqs.length);
+var alseqs_string =  new Array (alseqs.length);
+var gs_regions =  new Array (alseqs.length);
+for (var i = 0; i < alseqs.length; i++) {
+alseqs_string[i] = alseqs[i].getRefSeq ().getSequenceAsString (alseqs[i].start, alseqs[i].end);
+gs_regions[i] = alseqs[i].getSequenceAndDeletions (alseqs_string[i], gapCharacter);
+if (gs_regions[i] == null) {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_cigar_seq_no_operations",  Clazz.newArray (-1, [Integer.$valueOf (i).toString ()])));
+}g_seqs[i] =  new StringBuffer ((gs_regions[i])[0]);
+}
+var shifts =  new jalview.util.ShiftList ();
+for (var i = 0; i < alseqs.length; i++) {
+var gs_region = ((gs_regions[i])[2]);
+if (gs_region != null) {
+for (var hr = 0; hr < gs_region.length; hr++) {
+var region = gs_region[hr];
+var insert =  Clazz.newCharArray (region[1] - region[0] + 1, '\0');
+for (var s = 0; s < insert.length; s++) {
+insert[s] = gapCharacter;
+}
+var inspos = shifts.shift (region[2]);
+for (var s = 0; s < alseqs.length; s++) {
+if (s != i) {
+if (g_seqs[s].length () <= inspos) {
+for (var l = inspos - g_seqs[s].length (); l > 0; l--) {
+g_seqs[s].append (gapCharacter);
+}
+}g_seqs[s].insert (inspos, insert);
+} else {
+g_seqs[s].insert (inspos, alseqs_string[i].substring (region[0], region[1] + 1));
+}}
+shifts.addShift (region[2], insert.length);
+if (segments == null) {
+colsel.hideColumns (inspos, inspos + insert.length - 1);
+}}
+}}
+for (var i = 0; i < alseqs.length; i++) {
+var bounds = ((gs_regions[i])[1]);
+var ref = alseqs[i].getRefSeq ();
+seqs[i] =  new jalview.datamodel.Sequence (ref.getName (), g_seqs[i].toString (), ref.getStart () + alseqs[i].start + bounds[0], ref.getStart () + alseqs[i].start + (bounds[2] == 0 ? -1 : bounds[2]));
+seqs[i].setDatasetSequence (ref);
+seqs[i].setDescription (ref.getDescription ());
+}
+if (segments != null) {
+for (var i = 0; i < segments.length; i += 3) {
+colsel.hideColumns (segments[i + 1], segments[i + 1] + segments[i + 2] - 1);
+}
+}return seqs;
+}, "~A,~S,jalview.datamodel.ColumnSelection,~A");
+Clazz.defineMethod (c$, "setGroupMembership", 
+function (group) {
+if (this.selGroups == null) {
+this.selGroups =  new java.util.Hashtable ();
+}this.selGroups.put (group,  Clazz.newIntArray (0, 0));
+}, "~O");
+Clazz.defineMethod (c$, "removeGroupMembership", 
+function (group) {
+if (this.selGroups != null && this.selGroups.containsKey (group)) {
+this.selGroups.remove (group);
+return true;
+}return false;
+}, "~O");
+Clazz.defineMethod (c$, "clearMemberships", 
+function () {
+if (this.selGroups != null) {
+this.selGroups.clear ();
+}this.selGroups = null;
+});
+Clazz.defineMethod (c$, "getAllMemberships", 
+function () {
+if (this.selGroups == null) {
+return null;
+}var mmbs =  new Array (this.selGroups.size ());
+var en = this.selGroups.keys ();
+for (var i = 0; en.hasMoreElements (); i++) {
+mmbs[i] = en.nextElement ();
+}
+return mmbs;
+});
+Clazz.defineMethod (c$, "isMemberOf", 
+function (sgr) {
+return (this.selGroups != null) && this.selGroups.get (sgr) != null;
+}, "~O");
+});
index 87bb9e3..f406e42 100644 (file)
Binary files a/bin/jalview/datamodel/Sequence.class and b/bin/jalview/datamodel/Sequence.class differ
index 6a15091..06c8329 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.ASequence", "$.SequenceI", "jalview.jsdev.RegExp"], "jalview.datamodel.Sequence", ["jalview.analysis.AlignSeq", "jalview.datamodel.AlignmentAnnotation", "$.DBRefEntry", "$.DBRefSource", "$.PDBEntry", "$.SequenceFeature", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "$.StringUtils", "java.lang.StringBuffer", "java.util.ArrayList", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.datasetSequence = null;\r
-this.name = null;\r
-this.sequence = null;\r
-this.description = null;\r
-this.start = 0;\r
-this.end = 0;\r
-this.pdbIds = null;\r
-this.vamsasId = null;\r
-this.dbrefs = null;\r
-this.rna = null;\r
-this.annotation = null;\r
-this.index = -1;\r
-this.sequenceFeatures = null;\r
-this.limitrx = null;\r
-this.endrx = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "Sequence", jalview.datamodel.ASequence, jalview.datamodel.SequenceI);\r
-Clazz.prepareFields (c$, function () {\r
-this.limitrx = jalview.jsdev.RegExp.newRegex (["[/][0-9]{1,}[-][0-9]{1,}$"]);\r
-this.endrx = jalview.jsdev.RegExp.newRegex (["[0-9]{1,}$"]);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (name, sequence, start, end) {\r
-Clazz.superConstructor (this, jalview.datamodel.Sequence, []);\r
-this.initSeqAndName (name, sequence.toCharArray (), start, end);\r
-}, "~S,~S,~N,~N");\r
-Clazz.makeConstructor (c$, \r
-function (name, sequence, start, end) {\r
-Clazz.superConstructor (this, jalview.datamodel.Sequence, []);\r
-this.initSeqAndName (name, sequence, start, end);\r
-}, "~S,~A,~N,~N");\r
-Clazz.defineMethod (c$, "initSeqAndName", \r
-function (name2, sequence2, start2, end2) {\r
-this.name = name2;\r
-this.sequence = sequence2;\r
-this.start = start2;\r
-this.end = end2;\r
-this.parseId ();\r
-this.checkValidRange ();\r
-}, "~S,~A,~N,~N");\r
-Clazz.defineMethod (c$, "parseId", \r
-function () {\r
-if (this.name == null) {\r
-System.err.println ("POSSIBLE IMPLEMENTATION ERROR: null sequence name passed to constructor.");\r
-this.name = "";\r
-}if (this.limitrx.search (this.name)) {\r
-this.name = this.limitrx.left ();\r
-this.endrx.search (this.limitrx.stringMatched ());\r
-this.setStart (Integer.parseInt (this.limitrx.stringMatched ().substring (1, this.endrx.matchedFrom () - 1)));\r
-this.setEnd (Integer.parseInt (this.endrx.stringMatched ()));\r
-}});\r
-Clazz.defineMethod (c$, "checkValidRange", \r
-function () {\r
-{\r
-var endRes = 0;\r
-for (var j = 0; j < this.sequence.length; j++) {\r
-if (!jalview.util.Comparison.isGap (this.sequence[j])) {\r
-endRes++;\r
-}}\r
-if (endRes > 0) {\r
-endRes += this.start - 1;\r
-}if (this.end < endRes) {\r
-this.end = endRes;\r
-}}});\r
-Clazz.makeConstructor (c$, \r
-function (name, sequence) {\r
-this.construct (name, sequence, 1, -1);\r
-}, "~S,~S");\r
-Clazz.makeConstructor (c$, \r
-function (seq) {\r
-this.construct (seq, seq.getAnnotation ());\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.makeConstructor (c$, \r
-function (seq, alAnnotation) {\r
-Clazz.superConstructor (this, jalview.datamodel.Sequence, []);\r
-this.initSeqFrom (seq, alAnnotation);\r
-}, "jalview.datamodel.SequenceI,~A");\r
-Clazz.defineMethod (c$, "initSeqFrom", \r
-function (seq, alAnnotation) {\r
-this.initSeqAndName (seq.getName (), seq.getSequence (), seq.getStart (), seq.getEnd ());\r
-this.description = seq.getDescription ();\r
-if (seq.getSequenceFeatures () != null) {\r
-var sf = seq.getSequenceFeatures ();\r
-for (var i = 0; i < sf.length; i++) {\r
-this.addSequenceFeature ( new jalview.datamodel.SequenceFeature (sf[i]));\r
-}\r
-}this.setDatasetSequence (seq.getDatasetSequence ());\r
-if (this.datasetSequence == null && seq.getDBRef () != null) {\r
-var dbr = seq.getDBRef ();\r
-for (var i = 0; i < dbr.length; i++) {\r
-this.addDBRef ( new jalview.datamodel.DBRefEntry (dbr[i]));\r
-}\r
-}if (seq.getAnnotation () != null) {\r
-var sqann = seq.getAnnotation ();\r
-for (var i = 0; i < sqann.length; i++) {\r
-if (sqann[i] == null) {\r
-continue;\r
-}var found = (alAnnotation == null);\r
-if (!found) {\r
-for (var apos = 0; !found && apos < alAnnotation.length; apos++) {\r
-found = (alAnnotation[apos] === sqann[i]);\r
-}\r
-}if (found) {\r
-var newann =  new jalview.datamodel.AlignmentAnnotation (sqann[i]);\r
-this.addAlignmentAnnotation (newann);\r
-}}\r
-}if (seq.getPDBId () != null) {\r
-var ids = seq.getPDBId ();\r
-var e = ids.elements ();\r
-while (e.hasMoreElements ()) {\r
-this.addPDBId ( new jalview.datamodel.PDBEntry (e.nextElement ()));\r
-}\r
-}}, "jalview.datamodel.SequenceI,~A");\r
-Clazz.defineMethod (c$, "setSequenceFeatures", \r
-function (features) {\r
-this.sequenceFeatures = features;\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "addSequenceFeature", \r
-function (sf) {\r
-if (this.sequenceFeatures == null) {\r
-this.sequenceFeatures =  new Array (0);\r
-}for (var i = 0; i < this.sequenceFeatures.length; i++) {\r
-if (this.sequenceFeatures[i].equals (sf)) {\r
-return;\r
-}}\r
-var temp =  new Array (this.sequenceFeatures.length + 1);\r
-System.arraycopy (this.sequenceFeatures, 0, temp, 0, this.sequenceFeatures.length);\r
-temp[this.sequenceFeatures.length] = sf;\r
-this.sequenceFeatures = temp;\r
-}, "jalview.datamodel.SequenceFeature");\r
-Clazz.overrideMethod (c$, "deleteFeature", \r
-function (sf) {\r
-if (this.sequenceFeatures == null) {\r
-return;\r
-}var index = 0;\r
-for (index = 0; index < this.sequenceFeatures.length; index++) {\r
-if (this.sequenceFeatures[index].equals (sf)) {\r
-break;\r
-}}\r
-if (index == this.sequenceFeatures.length) {\r
-return;\r
-}var sfLength = this.sequenceFeatures.length;\r
-if (sfLength < 2) {\r
-this.sequenceFeatures = null;\r
-} else {\r
-var temp =  new Array (sfLength - 1);\r
-System.arraycopy (this.sequenceFeatures, 0, temp, 0, index);\r
-if (index < sfLength) {\r
-System.arraycopy (this.sequenceFeatures, index + 1, temp, index, this.sequenceFeatures.length - index - 1);\r
-}this.sequenceFeatures = temp;\r
-}}, "jalview.datamodel.SequenceFeature");\r
-Clazz.defineMethod (c$, "getSequenceFeatures", \r
-function () {\r
-var features = this.sequenceFeatures;\r
-var seq = this;\r
-var count = 0;\r
-while (features == null && seq.getDatasetSequence () != null && count++ < 10) {\r
-seq = seq.getDatasetSequence ();\r
-features = (seq).sequenceFeatures;\r
-}\r
-return features;\r
-});\r
-Clazz.overrideMethod (c$, "addPDBId", \r
-function (entry) {\r
-if (this.pdbIds == null) {\r
-this.pdbIds =  new java.util.Vector ();\r
-}if (this.pdbIds.contains (entry)) {\r
-jalview.datamodel.Sequence.updatePDBEntry (this.pdbIds.get (this.pdbIds.indexOf (entry)), entry);\r
-} else {\r
-this.pdbIds.addElement (entry);\r
-}}, "jalview.datamodel.PDBEntry");\r
-c$.updatePDBEntry = Clazz.defineMethod (c$, "updatePDBEntry", \r
-($fz = function (oldEntry, newEntry) {\r
-if (newEntry.getFile () != null) {\r
-oldEntry.setFile (newEntry.getFile ());\r
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.PDBEntry,jalview.datamodel.PDBEntry");\r
-Clazz.defineMethod (c$, "setPDBId", \r
-function (id) {\r
-this.pdbIds = id;\r
-}, "java.util.Vector");\r
-Clazz.defineMethod (c$, "getPDBId", \r
-function () {\r
-return this.pdbIds;\r
-});\r
-Clazz.overrideMethod (c$, "getDisplayId", \r
-function (jvsuffix) {\r
-var result =  new StringBuffer (this.name);\r
-if (jvsuffix) {\r
-result.append ("/" + this.start + "-" + this.end);\r
-}return result.toString ();\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setName", \r
-function (name) {\r
-this.name = name;\r
-this.parseId ();\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getName", \r
-function () {\r
-return this.name;\r
-});\r
-Clazz.overrideMethod (c$, "setStart", \r
-function (start) {\r
-this.start = start;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getStart", \r
-function () {\r
-return this.start;\r
-});\r
-Clazz.overrideMethod (c$, "setEnd", \r
-function (end) {\r
-this.end = end;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getEnd", \r
-function () {\r
-return this.end;\r
-});\r
-Clazz.overrideMethod (c$, "getLength", \r
-function () {\r
-return this.sequence.length;\r
-});\r
-Clazz.defineMethod (c$, "setSequence", \r
-function (seq) {\r
-this.sequence = seq.toCharArray ();\r
-this.checkValidRange ();\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getSequenceAsString", \r
-function () {\r
-return  String.instantialize (this.sequence);\r
-});\r
-Clazz.defineMethod (c$, "getSequenceAsString", \r
-function (start, end) {\r
-return  String.instantialize (this.getSequence (start, end));\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getSequence", \r
-function () {\r
-return this.sequence;\r
-});\r
-Clazz.defineMethod (c$, "getSequence", \r
-function (start, end) {\r
-if (start < 0) {\r
-start = 0;\r
-}if (start >= this.sequence.length) {\r
-return  Clazz.newCharArray (0, '\0');\r
-}if (end >= this.sequence.length) {\r
-end = this.sequence.length;\r
-}var reply =  Clazz.newCharArray (end - start, '\0');\r
-System.arraycopy (this.sequence, start, reply, 0, end - start);\r
-return reply;\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "getSubSequence", \r
-function (start, end) {\r
-if (start < 0) {\r
-start = 0;\r
-}var seq = this.getSequence (start, end);\r
-if (seq.length == 0) {\r
-return null;\r
-}var nstart = this.findPosition (start);\r
-var nend = this.findPosition (end) - 1;\r
-var nseq =  new jalview.datamodel.Sequence (this.getName (), seq, nstart, nend);\r
-nseq.setDescription (this.description);\r
-if (this.datasetSequence != null) {\r
-nseq.setDatasetSequence (this.datasetSequence);\r
-} else {\r
-nseq.setDatasetSequence (this);\r
-}return nseq;\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "getCharAt", \r
-function (i) {\r
-if (i < this.sequence.length) {\r
-return this.sequence[i];\r
-} else {\r
-return ' ';\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "setDescription", \r
-function (desc) {\r
-this.description = desc;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getDescription", \r
-function () {\r
-return this.description;\r
-});\r
-Clazz.overrideMethod (c$, "findIndex", \r
-function (pos) {\r
-var j = this.start;\r
-var i = 0;\r
-while ((i < this.sequence.length) && (j <= this.end) && (j <= pos)) {\r
-if (!jalview.util.Comparison.isGap (this.sequence[i])) {\r
-j++;\r
-}i++;\r
-}\r
-if ((j == this.end) && (j < pos)) {\r
-return this.end + 1;\r
-} else {\r
-return i;\r
-}}, "~N");\r
-Clazz.overrideMethod (c$, "findPosition", \r
-function (i) {\r
-var j = 0;\r
-var pos = this.start;\r
-var seqlen = this.sequence.length;\r
-while ((j < i) && (j < seqlen)) {\r
-if (!jalview.util.Comparison.isGap (this.sequence[j])) {\r
-pos++;\r
-}j++;\r
-}\r
-return pos;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "gapMap", \r
-function () {\r
-var seq = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (this.sequence));\r
-var map =  Clazz.newIntArray (seq.length, 0);\r
-var j = 0;\r
-var p = 0;\r
-while (j < this.sequence.length) {\r
-if (!jalview.util.Comparison.isGap (this.sequence[j])) {\r
-map[p++] = j;\r
-}j++;\r
-}\r
-return map;\r
-});\r
-Clazz.overrideMethod (c$, "findPositionMap", \r
-function () {\r
-var map =  Clazz.newIntArray (this.sequence.length, 0);\r
-var j = 0;\r
-var pos = this.start;\r
-var seqlen = this.sequence.length;\r
-while ((j < seqlen)) {\r
-map[j] = pos;\r
-if (!jalview.util.Comparison.isGap (this.sequence[j])) {\r
-pos++;\r
-}j++;\r
-}\r
-return map;\r
-});\r
-Clazz.overrideMethod (c$, "getInsertions", \r
-function () {\r
-var map =  new java.util.ArrayList ();\r
-var lastj = -1;\r
-var j = 0;\r
-var pos = this.start;\r
-var seqlen = this.sequence.length;\r
-while ((j < seqlen)) {\r
-if (jalview.util.Comparison.isGap (this.sequence[j])) {\r
-if (lastj == -1) {\r
-lastj = j;\r
-}} else {\r
-if (lastj != -1) {\r
-map.add ( Clazz.newIntArray (-1, [lastj, j - 1]));\r
-lastj = -1;\r
-}}j++;\r
-}\r
-if (lastj != -1) {\r
-map.add ( Clazz.newIntArray (-1, [lastj, j - 1]));\r
-lastj = -1;\r
-}return map;\r
-});\r
-Clazz.overrideMethod (c$, "deleteChars", \r
-function (i, j) {\r
-var newstart = this.start;\r
-var newend = this.end;\r
-if (i >= this.sequence.length || i < 0) {\r
-return;\r
-}var tmp = jalview.util.StringUtils.deleteChars (this.sequence, i, j);\r
-var createNewDs = false;\r
-var eindex = -1;\r
-var sindex = -1;\r
-var ecalc = false;\r
-var scalc = false;\r
-for (var s = i; s < j; s++) {\r
-if (jalview.schemes.ResidueProperties.aaIndex[this.sequence[s].charCodeAt (0)] != 23) {\r
-if (createNewDs) {\r
-newend--;\r
-} else {\r
-if (!scalc) {\r
-sindex = this.findIndex (this.start) - 1;\r
-scalc = true;\r
-}if (sindex == s) {\r
-newstart = this.findPosition (j);\r
-break;\r
-} else {\r
-if (!ecalc) {\r
-eindex = this.findIndex (this.end) - 1;\r
-ecalc = true;\r
-}if (eindex < j) {\r
-newend = this.findPosition (i - 1);\r
-break;\r
-} else {\r
-createNewDs = true;\r
-newend--;\r
-}}}}}\r
-if (createNewDs && this.datasetSequence != null) {\r
-var ds =  new jalview.datamodel.Sequence (this.datasetSequence);\r
-ds.deleteChars (i, j);\r
-this.datasetSequence = ds;\r
-}this.start = newstart;\r
-this.end = newend;\r
-this.sequence = tmp;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "insertCharAt", \r
-function (i, length, c) {\r
-var tmp =  Clazz.newCharArray (this.sequence.length + length, '\0');\r
-if (i >= this.sequence.length) {\r
-System.arraycopy (this.sequence, 0, tmp, 0, this.sequence.length);\r
-i = this.sequence.length;\r
-} else {\r
-System.arraycopy (this.sequence, 0, tmp, 0, i);\r
-}var index = i;\r
-while (length > 0) {\r
-tmp[index++] = c;\r
-length--;\r
-}\r
-if (i < this.sequence.length) {\r
-System.arraycopy (this.sequence, i, tmp, index, this.sequence.length - i);\r
-}this.sequence = tmp;\r
-}, "~N,~N,~S");\r
-Clazz.defineMethod (c$, "insertCharAt", \r
-function (i, c) {\r
-this.insertCharAt (i, 1, c);\r
-}, "~N,~S");\r
-Clazz.overrideMethod (c$, "getVamsasId", \r
-function () {\r
-return this.vamsasId;\r
-});\r
-Clazz.overrideMethod (c$, "setVamsasId", \r
-function (id) {\r
-this.vamsasId = id;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setDBRef", \r
-function (dbref) {\r
-this.dbrefs = dbref;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "getDBRef", \r
-function () {\r
-if (this.dbrefs == null && this.datasetSequence != null && this !== this.datasetSequence) {\r
-return this.datasetSequence.getDBRef ();\r
-}return this.dbrefs;\r
-});\r
-Clazz.overrideMethod (c$, "addDBRef", \r
-function (entry) {\r
-if (this.dbrefs == null) {\r
-this.dbrefs =  new Array (0);\r
-}var i;\r
-var iSize = this.dbrefs.length;\r
-for (i = 0; i < iSize; i++) {\r
-if (this.dbrefs[i].equalRef (entry)) {\r
-if (entry.getMap () != null) {\r
-if (this.dbrefs[i].getMap () == null) {\r
-this.dbrefs[i] = entry;\r
-}}return;\r
-}}\r
-var temp =  new Array (iSize + 1);\r
-System.arraycopy (this.dbrefs, 0, temp, 0, iSize);\r
-temp[temp.length - 1] = entry;\r
-this.dbrefs = temp;\r
-}, "jalview.datamodel.DBRefEntry");\r
-Clazz.defineMethod (c$, "setDatasetSequence", \r
-function (seq) {\r
-this.datasetSequence = seq;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "getDatasetSequence", \r
-function () {\r
-return this.datasetSequence;\r
-});\r
-Clazz.defineMethod (c$, "getAnnotation", \r
-function () {\r
-return this.annotation == null ? null : this.annotation.toArray ( new Array (this.annotation.size ()));\r
-});\r
-Clazz.overrideMethod (c$, "hasAnnotation", \r
-function (ann) {\r
-return this.annotation == null ? false : this.annotation.contains (ann);\r
-}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.defineMethod (c$, "addAlignmentAnnotation", \r
-function (annotation) {\r
-if (this.annotation == null) {\r
-this.annotation =  new java.util.Vector ();\r
-}if (!this.annotation.contains (annotation)) {\r
-this.annotation.addElement (annotation);\r
-}annotation.setSequenceRef (this);\r
-}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.overrideMethod (c$, "removeAlignmentAnnotation", \r
-function (annotation) {\r
-if (this.annotation != null) {\r
-this.annotation.removeElement (annotation);\r
-if (this.annotation.size () == 0) {\r
-this.annotation = null;\r
-}}}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.defineMethod (c$, "isValidDatasetSequence", \r
-($fz = function () {\r
-if (this.datasetSequence != null) {\r
-return false;\r
-}for (var i = 0; i < this.sequence.length; i++) {\r
-if (jalview.util.Comparison.isGap (this.sequence[i])) {\r
-return false;\r
-}}\r
-return true;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "deriveSequence", \r
-function () {\r
-var seq =  new jalview.datamodel.Sequence (this);\r
-if (this.datasetSequence != null) {\r
-seq.setDatasetSequence (this.datasetSequence);\r
-} else {\r
-if (this.isValidDatasetSequence ()) {\r
-seq.setDatasetSequence (this);\r
-} else {\r
-var ds = seq;\r
-ds.setSequence (jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (this.sequence)));\r
-this.setDatasetSequence (ds);\r
-ds.setSequenceFeatures (this.getSequenceFeatures ());\r
-seq = this;\r
-}}return seq;\r
-});\r
-Clazz.overrideMethod (c$, "createDatasetSequence", \r
-function () {\r
-if (this.datasetSequence == null) {\r
-this.datasetSequence =  new jalview.datamodel.Sequence (this.getName (), jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, this.getSequenceAsString ()), this.getStart (), this.getEnd ());\r
-this.datasetSequence.setSequenceFeatures (this.getSequenceFeatures ());\r
-this.datasetSequence.setDescription (this.getDescription ());\r
-this.setSequenceFeatures (null);\r
-this.datasetSequence.setDBRef (this.getDBRef ());\r
-this.setDBRef (null);\r
-this.datasetSequence.setPDBId (this.getPDBId ());\r
-this.setPDBId (null);\r
-this.datasetSequence.updatePDBIds ();\r
-if (this.annotation != null) {\r
-for (var aa, $aa = this.annotation.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {\r
-var _aa =  new jalview.datamodel.AlignmentAnnotation (aa);\r
-_aa.sequenceRef = this.datasetSequence;\r
-_aa.adjustForAlignment ();\r
-this.datasetSequence.addAlignmentAnnotation (_aa);\r
-}\r
-}}return this.datasetSequence;\r
-});\r
-Clazz.overrideMethod (c$, "setAlignmentAnnotation", \r
-function (annotations) {\r
-if (this.annotation != null) {\r
-this.annotation.removeAllElements ();\r
-}if (annotations != null) {\r
-for (var i = 0; i < annotations.length; i++) {\r
-if (annotations[i] != null) {\r
-this.addAlignmentAnnotation (annotations[i]);\r
-}}\r
-}}, "~A");\r
-Clazz.defineMethod (c$, "getAnnotation", \r
-function (label) {\r
-if (this.annotation == null || this.annotation.size () == 0) {\r
-return null;\r
-}var subset =  new java.util.Vector ();\r
-var e = this.annotation.elements ();\r
-while (e.hasMoreElements ()) {\r
-var ann = e.nextElement ();\r
-if (ann.label != null && ann.label.equals (label)) {\r
-subset.addElement (ann);\r
-}}\r
-if (subset.size () == 0) {\r
-return null;\r
-}var anns =  new Array (subset.size ());\r
-var i = 0;\r
-e = subset.elements ();\r
-while (e.hasMoreElements ()) {\r
-anns[i++] = e.nextElement ();\r
-}\r
-subset.removeAllElements ();\r
-return anns;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "updatePDBIds", \r
-function () {\r
-if (this.datasetSequence != null) {\r
-return this.datasetSequence.updatePDBIds ();\r
-}if (this.dbrefs == null || this.dbrefs.length == 0) {\r
-return false;\r
-}var newpdb =  new java.util.Vector ();\r
-for (var i = 0; i < this.dbrefs.length; i++) {\r
-if (jalview.datamodel.DBRefSource.PDB.equals (this.dbrefs[i].getSource ())) {\r
-var pdbe =  new jalview.datamodel.PDBEntry ();\r
-pdbe.setId (this.dbrefs[i].getAccessionId ());\r
-if (this.pdbIds == null || this.pdbIds.size () == 0) {\r
-newpdb.addElement (pdbe);\r
-} else {\r
-var en = this.pdbIds.elements ();\r
-var matched = false;\r
-while (!matched && en.hasMoreElements ()) {\r
-var anentry = en.nextElement ();\r
-if (anentry.getId ().equals (pdbe.getId ())) {\r
-matched = true;\r
-}}\r
-if (!matched) {\r
-newpdb.addElement (pdbe);\r
-}}}}\r
-if (newpdb.size () > 0) {\r
-var en = newpdb.elements ();\r
-while (en.hasMoreElements ()) {\r
-this.addPDBId (en.nextElement ());\r
-}\r
-return true;\r
-}return false;\r
-});\r
-Clazz.defineMethod (c$, "transferAnnotation", \r
-function (entry, mp) {\r
-if (this.datasetSequence != null) {\r
-this.datasetSequence.transferAnnotation (entry, mp);\r
-return;\r
-}if (entry.getDatasetSequence () != null) {\r
-this.transferAnnotation (entry.getDatasetSequence (), mp);\r
-return;\r
-}if (entry.getSequenceFeatures () != null) {\r
-var sfs = entry.getSequenceFeatures ();\r
-for (var si = 0; si < sfs.length; si++) {\r
-var sf = (mp != null) ? mp.locateFeature (sfs[si]) :  Clazz.newArray (-1, [ new jalview.datamodel.SequenceFeature (sfs[si])]);\r
-if (sf != null && sf.length > 0) {\r
-for (var sfi = 0; sfi < sf.length; sfi++) {\r
-this.addSequenceFeature (sf[sfi]);\r
-}\r
-}}\r
-}if (entry.getPDBId () != null) {\r
-var e = entry.getPDBId ().elements ();\r
-while (e.hasMoreElements ()) {\r
-var pdb = e.nextElement ();\r
-this.addPDBId (pdb);\r
-}\r
-}var entryRefs = entry.getDBRef ();\r
-if (entryRefs != null) {\r
-for (var r = 0; r < entryRefs.length; r++) {\r
-var newref =  new jalview.datamodel.DBRefEntry (entryRefs[r]);\r
-if (newref.getMap () != null && mp != null) {\r
-}this.addDBRef (newref);\r
-}\r
-}}, "jalview.datamodel.SequenceI,jalview.datamodel.Mapping");\r
-Clazz.overrideMethod (c$, "getIndex", \r
-function () {\r
-return this.index;\r
-});\r
-Clazz.overrideMethod (c$, "setIndex", \r
-function (value) {\r
-this.index = value;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "setRNA", \r
-function (r) {\r
-this.rna = r;\r
-}, "jalview.jsdev.api.VarnaRNA");\r
-Clazz.overrideMethod (c$, "getRNA", \r
-function () {\r
-return this.rna;\r
-});\r
-Clazz.overrideMethod (c$, "getAlignmentAnnotations", \r
-function (calcId, label) {\r
-var result =  new java.util.ArrayList ();\r
-if (this.annotation != null) {\r
-for (var ann, $ann = this.annotation.iterator (); $ann.hasNext () && ((ann = $ann.next ()) || true);) {\r
-if (ann.calcId != null && ann.calcId.equals (calcId) && ann.label != null && ann.label.equals (label)) {\r
-result.add (ann);\r
-}}\r
-}return result;\r
-}, "~S,~S");\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.ASequence", "$.SequenceI", "jalview.jsdev.RegExp"], "jalview.datamodel.Sequence", ["jalview.analysis.AlignSeq", "jalview.datamodel.AlignmentAnnotation", "$.DBRefEntry", "$.DBRefSource", "$.PDBEntry", "$.SequenceFeature", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "$.StringUtils", "java.lang.StringBuffer", "java.util.ArrayList", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.datasetSequence = null;
+this.name = null;
+this.sequence = null;
+this.description = null;
+this.start = 0;
+this.end = 0;
+this.pdbIds = null;
+this.vamsasId = null;
+this.dbrefs = null;
+this.rna = null;
+this.annotation = null;
+this.index = -1;
+this.sequenceFeatures = null;
+this.limitrx = null;
+this.endrx = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "Sequence", jalview.datamodel.ASequence, jalview.datamodel.SequenceI);
+Clazz.prepareFields (c$, function () {
+this.limitrx = jalview.jsdev.RegExp.newRegex (["[/][0-9]{1,}[-][0-9]{1,}$"]);
+this.endrx = jalview.jsdev.RegExp.newRegex (["[0-9]{1,}$"]);
+});
+Clazz.makeConstructor (c$, 
+function (name, sequence, start, end) {
+Clazz.superConstructor (this, jalview.datamodel.Sequence, []);
+this.initSeqAndName (name, sequence.toCharArray (), start, end);
+}, "~S,~S,~N,~N");
+Clazz.makeConstructor (c$, 
+function (name, sequence, start, end) {
+Clazz.superConstructor (this, jalview.datamodel.Sequence, []);
+this.initSeqAndName (name, sequence, start, end);
+}, "~S,~A,~N,~N");
+Clazz.defineMethod (c$, "initSeqAndName", 
+function (name2, sequence2, start2, end2) {
+this.name = name2;
+this.sequence = sequence2;
+this.start = start2;
+this.end = end2;
+this.parseId ();
+this.checkValidRange ();
+}, "~S,~A,~N,~N");
+Clazz.defineMethod (c$, "parseId", 
+function () {
+if (this.name == null) {
+System.err.println ("POSSIBLE IMPLEMENTATION ERROR: null sequence name passed to constructor.");
+this.name = "";
+}if (this.limitrx.search (this.name)) {
+this.name = this.limitrx.left ();
+this.endrx.search (this.limitrx.stringMatched ());
+this.setStart (Integer.parseInt (this.limitrx.stringMatched ().substring (1, this.endrx.matchedFrom () - 1)));
+this.setEnd (Integer.parseInt (this.endrx.stringMatched ()));
+}});
+Clazz.defineMethod (c$, "checkValidRange", 
+function () {
+{
+var endRes = 0;
+for (var j = 0; j < this.sequence.length; j++) {
+if (!jalview.util.Comparison.isGap (this.sequence[j])) {
+endRes++;
+}}
+if (endRes > 0) {
+endRes += this.start - 1;
+}if (this.end < endRes) {
+this.end = endRes;
+}}});
+Clazz.makeConstructor (c$, 
+function (name, sequence) {
+this.construct (name, sequence, 1, -1);
+}, "~S,~S");
+Clazz.makeConstructor (c$, 
+function (seq) {
+this.construct (seq, seq.getAnnotation ());
+}, "jalview.datamodel.SequenceI");
+Clazz.makeConstructor (c$, 
+function (seq, alAnnotation) {
+Clazz.superConstructor (this, jalview.datamodel.Sequence, []);
+this.initSeqFrom (seq, alAnnotation);
+}, "jalview.datamodel.SequenceI,~A");
+Clazz.defineMethod (c$, "initSeqFrom", 
+function (seq, alAnnotation) {
+this.initSeqAndName (seq.getName (), seq.getSequence (), seq.getStart (), seq.getEnd ());
+this.description = seq.getDescription ();
+if (seq.getSequenceFeatures () != null) {
+var sf = seq.getSequenceFeatures ();
+for (var i = 0; i < sf.length; i++) {
+this.addSequenceFeature ( new jalview.datamodel.SequenceFeature (sf[i]));
+}
+}this.setDatasetSequence (seq.getDatasetSequence ());
+if (this.datasetSequence == null && seq.getDBRef () != null) {
+var dbr = seq.getDBRef ();
+for (var i = 0; i < dbr.length; i++) {
+this.addDBRef ( new jalview.datamodel.DBRefEntry (dbr[i]));
+}
+}if (seq.getAnnotation () != null) {
+var sqann = seq.getAnnotation ();
+for (var i = 0; i < sqann.length; i++) {
+if (sqann[i] == null) {
+continue;
+}var found = (alAnnotation == null);
+if (!found) {
+for (var apos = 0; !found && apos < alAnnotation.length; apos++) {
+found = (alAnnotation[apos] === sqann[i]);
+}
+}if (found) {
+var newann =  new jalview.datamodel.AlignmentAnnotation (sqann[i]);
+this.addAlignmentAnnotation (newann);
+}}
+}if (seq.getPDBId () != null) {
+var ids = seq.getPDBId ();
+var e = ids.elements ();
+while (e.hasMoreElements ()) {
+this.addPDBId ( new jalview.datamodel.PDBEntry (e.nextElement ()));
+}
+}}, "jalview.datamodel.SequenceI,~A");
+Clazz.defineMethod (c$, "setSequenceFeatures", 
+function (features) {
+this.sequenceFeatures = features;
+}, "~A");
+Clazz.overrideMethod (c$, "addSequenceFeature", 
+function (sf) {
+if (this.sequenceFeatures == null) {
+this.sequenceFeatures =  new Array (0);
+}for (var i = 0; i < this.sequenceFeatures.length; i++) {
+if (this.sequenceFeatures[i].equals (sf)) {
+return;
+}}
+var temp =  new Array (this.sequenceFeatures.length + 1);
+System.arraycopy (this.sequenceFeatures, 0, temp, 0, this.sequenceFeatures.length);
+temp[this.sequenceFeatures.length] = sf;
+this.sequenceFeatures = temp;
+}, "jalview.datamodel.SequenceFeature");
+Clazz.overrideMethod (c$, "deleteFeature", 
+function (sf) {
+if (this.sequenceFeatures == null) {
+return;
+}var index = 0;
+for (index = 0; index < this.sequenceFeatures.length; index++) {
+if (this.sequenceFeatures[index].equals (sf)) {
+break;
+}}
+if (index == this.sequenceFeatures.length) {
+return;
+}var sfLength = this.sequenceFeatures.length;
+if (sfLength < 2) {
+this.sequenceFeatures = null;
+} else {
+var temp =  new Array (sfLength - 1);
+System.arraycopy (this.sequenceFeatures, 0, temp, 0, index);
+if (index < sfLength) {
+System.arraycopy (this.sequenceFeatures, index + 1, temp, index, this.sequenceFeatures.length - index - 1);
+}this.sequenceFeatures = temp;
+}}, "jalview.datamodel.SequenceFeature");
+Clazz.defineMethod (c$, "getSequenceFeatures", 
+function () {
+var features = this.sequenceFeatures;
+var seq = this;
+var count = 0;
+while (features == null && seq.getDatasetSequence () != null && count++ < 10) {
+seq = seq.getDatasetSequence ();
+features = (seq).sequenceFeatures;
+}
+return features;
+});
+Clazz.overrideMethod (c$, "addPDBId", 
+function (entry) {
+if (this.pdbIds == null) {
+this.pdbIds =  new java.util.Vector ();
+}if (this.pdbIds.contains (entry)) {
+jalview.datamodel.Sequence.updatePDBEntry (this.pdbIds.get (this.pdbIds.indexOf (entry)), entry);
+} else {
+this.pdbIds.addElement (entry);
+}}, "jalview.datamodel.PDBEntry");
+c$.updatePDBEntry = Clazz.defineMethod (c$, "updatePDBEntry", 
+($fz = function (oldEntry, newEntry) {
+if (newEntry.getFile () != null) {
+oldEntry.setFile (newEntry.getFile ());
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.PDBEntry,jalview.datamodel.PDBEntry");
+Clazz.defineMethod (c$, "setPDBId", 
+function (id) {
+this.pdbIds = id;
+}, "java.util.Vector");
+Clazz.defineMethod (c$, "getPDBId", 
+function () {
+return this.pdbIds;
+});
+Clazz.overrideMethod (c$, "getDisplayId", 
+function (jvsuffix) {
+var result =  new StringBuffer (this.name);
+if (jvsuffix) {
+result.append ("/" + this.start + "-" + this.end);
+}return result.toString ();
+}, "~B");
+Clazz.overrideMethod (c$, "setName", 
+function (name) {
+this.name = name;
+this.parseId ();
+}, "~S");
+Clazz.defineMethod (c$, "getName", 
+function () {
+return this.name;
+});
+Clazz.overrideMethod (c$, "setStart", 
+function (start) {
+this.start = start;
+}, "~N");
+Clazz.defineMethod (c$, "getStart", 
+function () {
+return this.start;
+});
+Clazz.overrideMethod (c$, "setEnd", 
+function (end) {
+this.end = end;
+}, "~N");
+Clazz.defineMethod (c$, "getEnd", 
+function () {
+return this.end;
+});
+Clazz.overrideMethod (c$, "getLength", 
+function () {
+return this.sequence.length;
+});
+Clazz.defineMethod (c$, "setSequence", 
+function (seq) {
+this.sequence = seq.toCharArray ();
+this.checkValidRange ();
+}, "~S");
+Clazz.defineMethod (c$, "getSequenceAsString", 
+function () {
+return  String.instantialize (this.sequence);
+});
+Clazz.defineMethod (c$, "getSequenceAsString", 
+function (start, end) {
+return  String.instantialize (this.getSequence (start, end));
+}, "~N,~N");
+Clazz.defineMethod (c$, "getSequence", 
+function () {
+return this.sequence;
+});
+Clazz.defineMethod (c$, "getSequence", 
+function (start, end) {
+if (start < 0) {
+start = 0;
+}if (start >= this.sequence.length) {
+return  Clazz.newCharArray (0, '\0');
+}if (end >= this.sequence.length) {
+end = this.sequence.length;
+}var reply =  Clazz.newCharArray (end - start, '\0');
+System.arraycopy (this.sequence, start, reply, 0, end - start);
+return reply;
+}, "~N,~N");
+Clazz.overrideMethod (c$, "getSubSequence", 
+function (start, end) {
+if (start < 0) {
+start = 0;
+}var seq = this.getSequence (start, end);
+if (seq.length == 0) {
+return null;
+}var nstart = this.findPosition (start);
+var nend = this.findPosition (end) - 1;
+var nseq =  new jalview.datamodel.Sequence (this.getName (), seq, nstart, nend);
+nseq.setDescription (this.description);
+if (this.datasetSequence != null) {
+nseq.setDatasetSequence (this.datasetSequence);
+} else {
+nseq.setDatasetSequence (this);
+}return nseq;
+}, "~N,~N");
+Clazz.overrideMethod (c$, "getCharAt", 
+function (i) {
+if (i < this.sequence.length) {
+return this.sequence[i];
+} else {
+return ' ';
+}}, "~N");
+Clazz.defineMethod (c$, "setDescription", 
+function (desc) {
+this.description = desc;
+}, "~S");
+Clazz.defineMethod (c$, "getDescription", 
+function () {
+return this.description;
+});
+Clazz.overrideMethod (c$, "findIndex", 
+function (pos) {
+var j = this.start;
+var i = 0;
+while ((i < this.sequence.length) && (j <= this.end) && (j <= pos)) {
+if (!jalview.util.Comparison.isGap (this.sequence[i])) {
+j++;
+}i++;
+}
+if ((j == this.end) && (j < pos)) {
+return this.end + 1;
+} else {
+return i;
+}}, "~N");
+Clazz.overrideMethod (c$, "findPosition", 
+function (i) {
+var j = 0;
+var pos = this.start;
+var seqlen = this.sequence.length;
+while ((j < i) && (j < seqlen)) {
+if (!jalview.util.Comparison.isGap (this.sequence[j])) {
+pos++;
+}j++;
+}
+return pos;
+}, "~N");
+Clazz.overrideMethod (c$, "gapMap", 
+function () {
+var seq = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (this.sequence));
+var map =  Clazz.newIntArray (seq.length, 0);
+var j = 0;
+var p = 0;
+while (j < this.sequence.length) {
+if (!jalview.util.Comparison.isGap (this.sequence[j])) {
+map[p++] = j;
+}j++;
+}
+return map;
+});
+Clazz.overrideMethod (c$, "findPositionMap", 
+function () {
+var map =  Clazz.newIntArray (this.sequence.length, 0);
+var j = 0;
+var pos = this.start;
+var seqlen = this.sequence.length;
+while ((j < seqlen)) {
+map[j] = pos;
+if (!jalview.util.Comparison.isGap (this.sequence[j])) {
+pos++;
+}j++;
+}
+return map;
+});
+Clazz.overrideMethod (c$, "getInsertions", 
+function () {
+var map =  new java.util.ArrayList ();
+var lastj = -1;
+var j = 0;
+var pos = this.start;
+var seqlen = this.sequence.length;
+while ((j < seqlen)) {
+if (jalview.util.Comparison.isGap (this.sequence[j])) {
+if (lastj == -1) {
+lastj = j;
+}} else {
+if (lastj != -1) {
+map.add ( Clazz.newIntArray (-1, [lastj, j - 1]));
+lastj = -1;
+}}j++;
+}
+if (lastj != -1) {
+map.add ( Clazz.newIntArray (-1, [lastj, j - 1]));
+lastj = -1;
+}return map;
+});
+Clazz.overrideMethod (c$, "deleteChars", 
+function (i, j) {
+var newstart = this.start;
+var newend = this.end;
+if (i >= this.sequence.length || i < 0) {
+return;
+}var tmp = jalview.util.StringUtils.deleteChars (this.sequence, i, j);
+var createNewDs = false;
+var eindex = -1;
+var sindex = -1;
+var ecalc = false;
+var scalc = false;
+for (var s = i; s < j; s++) {
+if (jalview.schemes.ResidueProperties.aaIndex[this.sequence[s].charCodeAt (0)] != 23) {
+if (createNewDs) {
+newend--;
+} else {
+if (!scalc) {
+sindex = this.findIndex (this.start) - 1;
+scalc = true;
+}if (sindex == s) {
+newstart = this.findPosition (j);
+break;
+} else {
+if (!ecalc) {
+eindex = this.findIndex (this.end) - 1;
+ecalc = true;
+}if (eindex < j) {
+newend = this.findPosition (i - 1);
+break;
+} else {
+createNewDs = true;
+newend--;
+}}}}}
+if (createNewDs && this.datasetSequence != null) {
+var ds =  new jalview.datamodel.Sequence (this.datasetSequence);
+ds.deleteChars (i, j);
+this.datasetSequence = ds;
+}this.start = newstart;
+this.end = newend;
+this.sequence = tmp;
+}, "~N,~N");
+Clazz.defineMethod (c$, "insertCharAt", 
+function (i, length, c) {
+var tmp =  Clazz.newCharArray (this.sequence.length + length, '\0');
+if (i >= this.sequence.length) {
+System.arraycopy (this.sequence, 0, tmp, 0, this.sequence.length);
+i = this.sequence.length;
+} else {
+System.arraycopy (this.sequence, 0, tmp, 0, i);
+}var index = i;
+while (length > 0) {
+tmp[index++] = c;
+length--;
+}
+if (i < this.sequence.length) {
+System.arraycopy (this.sequence, i, tmp, index, this.sequence.length - i);
+}this.sequence = tmp;
+}, "~N,~N,~S");
+Clazz.defineMethod (c$, "insertCharAt", 
+function (i, c) {
+this.insertCharAt (i, 1, c);
+}, "~N,~S");
+Clazz.overrideMethod (c$, "getVamsasId", 
+function () {
+return this.vamsasId;
+});
+Clazz.overrideMethod (c$, "setVamsasId", 
+function (id) {
+this.vamsasId = id;
+}, "~S");
+Clazz.defineMethod (c$, "setDBRef", 
+function (dbref) {
+this.dbrefs = dbref;
+}, "~A");
+Clazz.defineMethod (c$, "getDBRef", 
+function () {
+if (this.dbrefs == null && this.datasetSequence != null && this !== this.datasetSequence) {
+return this.datasetSequence.getDBRef ();
+}return this.dbrefs;
+});
+Clazz.overrideMethod (c$, "addDBRef", 
+function (entry) {
+if (this.dbrefs == null) {
+this.dbrefs =  new Array (0);
+}var i;
+var iSize = this.dbrefs.length;
+for (i = 0; i < iSize; i++) {
+if (this.dbrefs[i].equalRef (entry)) {
+if (entry.getMap () != null) {
+if (this.dbrefs[i].getMap () == null) {
+this.dbrefs[i] = entry;
+}}return;
+}}
+var temp =  new Array (iSize + 1);
+System.arraycopy (this.dbrefs, 0, temp, 0, iSize);
+temp[temp.length - 1] = entry;
+this.dbrefs = temp;
+}, "jalview.datamodel.DBRefEntry");
+Clazz.defineMethod (c$, "setDatasetSequence", 
+function (seq) {
+this.datasetSequence = seq;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getDatasetSequence", 
+function () {
+return this.datasetSequence;
+});
+Clazz.defineMethod (c$, "getAnnotation", 
+function () {
+return this.annotation == null ? null : this.annotation.toArray ( new Array (this.annotation.size ()));
+});
+Clazz.overrideMethod (c$, "hasAnnotation", 
+function (ann) {
+return this.annotation == null ? false : this.annotation.contains (ann);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "addAlignmentAnnotation", 
+function (annotation) {
+if (this.annotation == null) {
+this.annotation =  new java.util.Vector ();
+}if (!this.annotation.contains (annotation)) {
+this.annotation.addElement (annotation);
+}annotation.setSequenceRef (this);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.overrideMethod (c$, "removeAlignmentAnnotation", 
+function (annotation) {
+if (this.annotation != null) {
+this.annotation.removeElement (annotation);
+if (this.annotation.size () == 0) {
+this.annotation = null;
+}}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "isValidDatasetSequence", 
+($fz = function () {
+if (this.datasetSequence != null) {
+return false;
+}for (var i = 0; i < this.sequence.length; i++) {
+if (jalview.util.Comparison.isGap (this.sequence[i])) {
+return false;
+}}
+return true;
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "deriveSequence", 
+function () {
+var seq =  new jalview.datamodel.Sequence (this);
+if (this.datasetSequence != null) {
+seq.setDatasetSequence (this.datasetSequence);
+} else {
+if (this.isValidDatasetSequence ()) {
+seq.setDatasetSequence (this);
+} else {
+var ds = seq;
+ds.setSequence (jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (this.sequence)));
+this.setDatasetSequence (ds);
+ds.setSequenceFeatures (this.getSequenceFeatures ());
+seq = this;
+}}return seq;
+});
+Clazz.overrideMethod (c$, "createDatasetSequence", 
+function () {
+if (this.datasetSequence == null) {
+this.datasetSequence =  new jalview.datamodel.Sequence (this.getName (), jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, this.getSequenceAsString ()), this.getStart (), this.getEnd ());
+this.datasetSequence.setSequenceFeatures (this.getSequenceFeatures ());
+this.datasetSequence.setDescription (this.getDescription ());
+this.setSequenceFeatures (null);
+this.datasetSequence.setDBRef (this.getDBRef ());
+this.setDBRef (null);
+this.datasetSequence.setPDBId (this.getPDBId ());
+this.setPDBId (null);
+this.datasetSequence.updatePDBIds ();
+if (this.annotation != null) {
+for (var aa, $aa = this.annotation.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {
+var _aa =  new jalview.datamodel.AlignmentAnnotation (aa);
+_aa.sequenceRef = this.datasetSequence;
+_aa.adjustForAlignment ();
+this.datasetSequence.addAlignmentAnnotation (_aa);
+}
+}}return this.datasetSequence;
+});
+Clazz.overrideMethod (c$, "setAlignmentAnnotation", 
+function (annotations) {
+if (this.annotation != null) {
+this.annotation.removeAllElements ();
+}if (annotations != null) {
+for (var i = 0; i < annotations.length; i++) {
+if (annotations[i] != null) {
+this.addAlignmentAnnotation (annotations[i]);
+}}
+}}, "~A");
+Clazz.defineMethod (c$, "getAnnotation", 
+function (label) {
+if (this.annotation == null || this.annotation.size () == 0) {
+return null;
+}var subset =  new java.util.Vector ();
+var e = this.annotation.elements ();
+while (e.hasMoreElements ()) {
+var ann = e.nextElement ();
+if (ann.label != null && ann.label.equals (label)) {
+subset.addElement (ann);
+}}
+if (subset.size () == 0) {
+return null;
+}var anns =  new Array (subset.size ());
+var i = 0;
+e = subset.elements ();
+while (e.hasMoreElements ()) {
+anns[i++] = e.nextElement ();
+}
+subset.removeAllElements ();
+return anns;
+}, "~S");
+Clazz.defineMethod (c$, "updatePDBIds", 
+function () {
+if (this.datasetSequence != null) {
+return this.datasetSequence.updatePDBIds ();
+}if (this.dbrefs == null || this.dbrefs.length == 0) {
+return false;
+}var newpdb =  new java.util.Vector ();
+for (var i = 0; i < this.dbrefs.length; i++) {
+if (jalview.datamodel.DBRefSource.PDB.equals (this.dbrefs[i].getSource ())) {
+var pdbe =  new jalview.datamodel.PDBEntry ();
+pdbe.setId (this.dbrefs[i].getAccessionId ());
+if (this.pdbIds == null || this.pdbIds.size () == 0) {
+newpdb.addElement (pdbe);
+} else {
+var en = this.pdbIds.elements ();
+var matched = false;
+while (!matched && en.hasMoreElements ()) {
+var anentry = en.nextElement ();
+if (anentry.getId ().equals (pdbe.getId ())) {
+matched = true;
+}}
+if (!matched) {
+newpdb.addElement (pdbe);
+}}}}
+if (newpdb.size () > 0) {
+var en = newpdb.elements ();
+while (en.hasMoreElements ()) {
+this.addPDBId (en.nextElement ());
+}
+return true;
+}return false;
+});
+Clazz.defineMethod (c$, "transferAnnotation", 
+function (entry, mp) {
+if (this.datasetSequence != null) {
+this.datasetSequence.transferAnnotation (entry, mp);
+return;
+}if (entry.getDatasetSequence () != null) {
+this.transferAnnotation (entry.getDatasetSequence (), mp);
+return;
+}if (entry.getSequenceFeatures () != null) {
+var sfs = entry.getSequenceFeatures ();
+for (var si = 0; si < sfs.length; si++) {
+var sf = (mp != null) ? mp.locateFeature (sfs[si]) :  Clazz.newArray (-1, [ new jalview.datamodel.SequenceFeature (sfs[si])]);
+if (sf != null && sf.length > 0) {
+for (var sfi = 0; sfi < sf.length; sfi++) {
+this.addSequenceFeature (sf[sfi]);
+}
+}}
+}if (entry.getPDBId () != null) {
+var e = entry.getPDBId ().elements ();
+while (e.hasMoreElements ()) {
+var pdb = e.nextElement ();
+this.addPDBId (pdb);
+}
+}var entryRefs = entry.getDBRef ();
+if (entryRefs != null) {
+for (var r = 0; r < entryRefs.length; r++) {
+var newref =  new jalview.datamodel.DBRefEntry (entryRefs[r]);
+if (newref.getMap () != null && mp != null) {
+}this.addDBRef (newref);
+}
+}}, "jalview.datamodel.SequenceI,jalview.datamodel.Mapping");
+Clazz.overrideMethod (c$, "getIndex", 
+function () {
+return this.index;
+});
+Clazz.overrideMethod (c$, "setIndex", 
+function (value) {
+this.index = value;
+}, "~N");
+Clazz.overrideMethod (c$, "setRNA", 
+function (r) {
+this.rna = r;
+}, "jalview.jsdev.api.VarnaRNA");
+Clazz.overrideMethod (c$, "getRNA", 
+function () {
+return this.rna;
+});
+Clazz.overrideMethod (c$, "getAlignmentAnnotations", 
+function (calcId, label) {
+var result =  new java.util.ArrayList ();
+if (this.annotation != null) {
+for (var ann, $ann = this.annotation.iterator (); $ann.hasNext () && ((ann = $ann.next ()) || true);) {
+if (ann.calcId != null && ann.calcId.equals (calcId) && ann.label != null && ann.label.equals (label)) {
+result.add (ann);
+}}
+}return result;
+}, "~S,~S");
+});
index b0849db..6f0107b 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.declareInterface (jalview.datamodel, "SequenceCollectionI");\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.declareInterface (jalview.datamodel, "SequenceCollectionI");
index 38b0a3c..d5a179c 100644 (file)
@@ -1,20 +1,20 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.Sequence", "$.SequenceI"], "jalview.datamodel.SequenceDummy", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.dummy = true;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "SequenceDummy", jalview.datamodel.Sequence, jalview.datamodel.SequenceI);\r
-Clazz.makeConstructor (c$, \r
-function (sequenceId) {\r
-Clazz.superConstructor (this, jalview.datamodel.SequenceDummy, [sequenceId, "THISAPLACEHOLDER"]);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "become", \r
-function (mseq) {\r
-this.initSeqFrom (mseq, null);\r
-this.dummy = false;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "isDummy", \r
-function () {\r
-return this.dummy;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.Sequence", "$.SequenceI"], "jalview.datamodel.SequenceDummy", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.dummy = true;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SequenceDummy", jalview.datamodel.Sequence, jalview.datamodel.SequenceI);
+Clazz.makeConstructor (c$, 
+function (sequenceId) {
+Clazz.superConstructor (this, jalview.datamodel.SequenceDummy, [sequenceId, "THISAPLACEHOLDER"]);
+}, "~S");
+Clazz.defineMethod (c$, "become", 
+function (mseq) {
+this.initSeqFrom (mseq, null);
+this.dummy = false;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "isDummy", 
+function () {
+return this.dummy;
+});
+});
index f8ce548..d2f14a8 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (null, "jalview.datamodel.SequenceFeature", ["java.util.Hashtable", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.begin = 0;\r
-this.end = 0;\r
-this.score = 0;\r
-this.type = null;\r
-this.description = null;\r
-this.otherDetails = null;\r
-this.links = null;\r
-this.featureGroup = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "SequenceFeature");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (cpy) {\r
-if (cpy != null) {\r
-this.begin = cpy.begin;\r
-this.end = cpy.end;\r
-this.score = cpy.score;\r
-if (cpy.type != null) {\r
-this.type =  String.instantialize (cpy.type);\r
-}if (cpy.description != null) {\r
-this.description =  String.instantialize (cpy.description);\r
-}if (cpy.featureGroup != null) {\r
-this.featureGroup =  String.instantialize (cpy.featureGroup);\r
-}if (cpy.otherDetails != null) {\r
-try {\r
-this.otherDetails = cpy.otherDetails.clone ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}if (cpy.links != null && cpy.links.size () > 0) {\r
-this.links =  new java.util.Vector ();\r
-for (var i = 0, iSize = cpy.links.size (); i < iSize; i++) {\r
-this.links.addElement (cpy.links.elementAt (i));\r
-}\r
-}}}, "jalview.datamodel.SequenceFeature");\r
-Clazz.makeConstructor (c$, \r
-function (type, desc, status, begin, end, featureGroup) {\r
-this.type = type;\r
-this.description = desc;\r
-this.setValue ("status", status);\r
-this.begin = begin;\r
-this.end = end;\r
-this.featureGroup = featureGroup;\r
-}, "~S,~S,~S,~N,~N,~S");\r
-Clazz.makeConstructor (c$, \r
-function (type, desc, begin, end, score, featureGroup) {\r
-this.type = type;\r
-this.description = desc;\r
-this.begin = begin;\r
-this.end = end;\r
-this.score = score;\r
-this.featureGroup = featureGroup;\r
-}, "~S,~S,~N,~N,~N,~S");\r
-Clazz.defineMethod (c$, "equals", \r
-function (sf) {\r
-if (this.begin != sf.begin || this.end != sf.end || this.score != sf.score) {\r
-return false;\r
-}if (!(this.type + this.description + this.featureGroup).equals (sf.type + sf.description + sf.featureGroup)) {\r
-return false;\r
-}return true;\r
-}, "jalview.datamodel.SequenceFeature");\r
-Clazz.defineMethod (c$, "getBegin", \r
-function () {\r
-return this.begin;\r
-});\r
-Clazz.defineMethod (c$, "setBegin", \r
-function (start) {\r
-this.begin = start;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getEnd", \r
-function () {\r
-return this.end;\r
-});\r
-Clazz.defineMethod (c$, "setEnd", \r
-function (end) {\r
-this.end = end;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getType", \r
-function () {\r
-return this.type;\r
-});\r
-Clazz.defineMethod (c$, "setType", \r
-function (type) {\r
-this.type = type;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getDescription", \r
-function () {\r
-return this.description;\r
-});\r
-Clazz.defineMethod (c$, "setDescription", \r
-function (desc) {\r
-this.description = desc;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getFeatureGroup", \r
-function () {\r
-return this.featureGroup;\r
-});\r
-Clazz.defineMethod (c$, "setFeatureGroup", \r
-function (featureGroup) {\r
-this.featureGroup = featureGroup;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "addLink", \r
-function (labelLink) {\r
-if (this.links == null) {\r
-this.links =  new java.util.Vector ();\r
-}this.links.insertElementAt (labelLink, 0);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getScore", \r
-function () {\r
-return this.score;\r
-});\r
-Clazz.defineMethod (c$, "setScore", \r
-function (value) {\r
-this.score = value;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getValue", \r
-function (key) {\r
-if (this.otherDetails == null) {\r
-return null;\r
-} else {\r
-return this.otherDetails.get (key);\r
-}}, "~S");\r
-Clazz.defineMethod (c$, "setValue", \r
-function (key, value) {\r
-if (value != null) {\r
-if (this.otherDetails == null) {\r
-this.otherDetails =  new java.util.Hashtable ();\r
-}this.otherDetails.put (key, value);\r
-}}, "~S,~O");\r
-Clazz.defineMethod (c$, "setStatus", \r
-function (status) {\r
-this.setValue ("status", status);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getStatus", \r
-function () {\r
-if (this.otherDetails != null) {\r
-var stat = this.otherDetails.get ("status");\r
-if (stat != null) {\r
-return  String.instantialize (stat);\r
-}}return null;\r
-});\r
-Clazz.defineMethod (c$, "setPosition", \r
-function (pos) {\r
-this.begin = pos;\r
-this.end = pos;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getPosition", \r
-function () {\r
-return this.begin;\r
-});\r
-Clazz.defineMethod (c$, "getStrand", \r
-function () {\r
-var str;\r
-if (this.otherDetails == null || (str = this.otherDetails.get ("STRAND").toString ()) == null) {\r
-return 0;\r
-}if (str.equals ("-")) {\r
-return -1;\r
-}if (str.equals ("+")) {\r
-return 1;\r
-}return 0;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.SequenceFeature", ["java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.begin = 0;
+this.end = 0;
+this.score = 0;
+this.type = null;
+this.description = null;
+this.otherDetails = null;
+this.links = null;
+this.featureGroup = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SequenceFeature");
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.makeConstructor (c$, 
+function (cpy) {
+if (cpy != null) {
+this.begin = cpy.begin;
+this.end = cpy.end;
+this.score = cpy.score;
+if (cpy.type != null) {
+this.type =  String.instantialize (cpy.type);
+}if (cpy.description != null) {
+this.description =  String.instantialize (cpy.description);
+}if (cpy.featureGroup != null) {
+this.featureGroup =  String.instantialize (cpy.featureGroup);
+}if (cpy.otherDetails != null) {
+try {
+this.otherDetails = cpy.otherDetails.clone ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+}if (cpy.links != null && cpy.links.size () > 0) {
+this.links =  new java.util.Vector ();
+for (var i = 0, iSize = cpy.links.size (); i < iSize; i++) {
+this.links.addElement (cpy.links.elementAt (i));
+}
+}}}, "jalview.datamodel.SequenceFeature");
+Clazz.makeConstructor (c$, 
+function (type, desc, status, begin, end, featureGroup) {
+this.type = type;
+this.description = desc;
+this.setValue ("status", status);
+this.begin = begin;
+this.end = end;
+this.featureGroup = featureGroup;
+}, "~S,~S,~S,~N,~N,~S");
+Clazz.makeConstructor (c$, 
+function (type, desc, begin, end, score, featureGroup) {
+this.type = type;
+this.description = desc;
+this.begin = begin;
+this.end = end;
+this.score = score;
+this.featureGroup = featureGroup;
+}, "~S,~S,~N,~N,~N,~S");
+Clazz.defineMethod (c$, "equals", 
+function (sf) {
+if (this.begin != sf.begin || this.end != sf.end || this.score != sf.score) {
+return false;
+}if (!(this.type + this.description + this.featureGroup).equals (sf.type + sf.description + sf.featureGroup)) {
+return false;
+}return true;
+}, "jalview.datamodel.SequenceFeature");
+Clazz.defineMethod (c$, "getBegin", 
+function () {
+return this.begin;
+});
+Clazz.defineMethod (c$, "setBegin", 
+function (start) {
+this.begin = start;
+}, "~N");
+Clazz.defineMethod (c$, "getEnd", 
+function () {
+return this.end;
+});
+Clazz.defineMethod (c$, "setEnd", 
+function (end) {
+this.end = end;
+}, "~N");
+Clazz.defineMethod (c$, "getType", 
+function () {
+return this.type;
+});
+Clazz.defineMethod (c$, "setType", 
+function (type) {
+this.type = type;
+}, "~S");
+Clazz.defineMethod (c$, "getDescription", 
+function () {
+return this.description;
+});
+Clazz.defineMethod (c$, "setDescription", 
+function (desc) {
+this.description = desc;
+}, "~S");
+Clazz.defineMethod (c$, "getFeatureGroup", 
+function () {
+return this.featureGroup;
+});
+Clazz.defineMethod (c$, "setFeatureGroup", 
+function (featureGroup) {
+this.featureGroup = featureGroup;
+}, "~S");
+Clazz.defineMethod (c$, "addLink", 
+function (labelLink) {
+if (this.links == null) {
+this.links =  new java.util.Vector ();
+}this.links.insertElementAt (labelLink, 0);
+}, "~S");
+Clazz.defineMethod (c$, "getScore", 
+function () {
+return this.score;
+});
+Clazz.defineMethod (c$, "setScore", 
+function (value) {
+this.score = value;
+}, "~N");
+Clazz.defineMethod (c$, "getValue", 
+function (key) {
+if (this.otherDetails == null) {
+return null;
+} else {
+return this.otherDetails.get (key);
+}}, "~S");
+Clazz.defineMethod (c$, "setValue", 
+function (key, value) {
+if (value != null) {
+if (this.otherDetails == null) {
+this.otherDetails =  new java.util.Hashtable ();
+}this.otherDetails.put (key, value);
+}}, "~S,~O");
+Clazz.defineMethod (c$, "setStatus", 
+function (status) {
+this.setValue ("status", status);
+}, "~S");
+Clazz.defineMethod (c$, "getStatus", 
+function () {
+if (this.otherDetails != null) {
+var stat = this.otherDetails.get ("status");
+if (stat != null) {
+return  String.instantialize (stat);
+}}return null;
+});
+Clazz.defineMethod (c$, "setPosition", 
+function (pos) {
+this.begin = pos;
+this.end = pos;
+}, "~N");
+Clazz.defineMethod (c$, "getPosition", 
+function () {
+return this.begin;
+});
+Clazz.defineMethod (c$, "getStrand", 
+function () {
+var str;
+if (this.otherDetails == null || (str = this.otherDetails.get ("STRAND").toString ()) == null) {
+return 0;
+}if (str.equals ("-")) {
+return -1;
+}if (str.equals ("+")) {
+return 1;
+}return 0;
+});
+});
index f773fbc..d962521 100644 (file)
Binary files a/bin/jalview/datamodel/SequenceGroup.class and b/bin/jalview/datamodel/SequenceGroup.class differ
index 0e59a62..b8ea520 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.AnnotatedCollectionI", "java.awt.Color", "java.util.ArrayList"], "jalview.datamodel.SequenceGroup", ["jalview.analysis.AAFrequency", "$.Conservation", "jalview.datamodel.AlignmentAnnotation", "$.Sequence", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.lang.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.groupName = null;\r
-this.description = null;\r
-this.conserve = null;\r
-this.aaFrequency = null;\r
-this.displayBoxes = true;\r
-this.displayText = true;\r
-this.colourText = false;\r
-this.showNonconserved = false;\r
-this.sequences = null;\r
-this.seqrep = null;\r
-this.width = -1;\r
-this.cs = null;\r
-this.startRes = 0;\r
-this.endRes = 0;\r
-this.outlineColour = null;\r
-this.idColour = null;\r
-this.thresholdTextColour = 0;\r
-this.textColour = null;\r
-this.textColour2 = null;\r
-this.ignoreGapsInConsensus = true;\r
-this.showSequenceLogo = false;\r
-this.normaliseSequenceLogo = false;\r
-this.consPercGaps = 25;\r
-this.consensusData = null;\r
-this.hidereps = false;\r
-this.hidecols = false;\r
-this.consensus = null;\r
-this.conservation = null;\r
-this.showConsensusHistogram = false;\r
-this.context = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "SequenceGroup", null, jalview.datamodel.AnnotatedCollectionI);\r
-Clazz.prepareFields (c$, function () {\r
-this.sequences =  new java.util.ArrayList ();\r
-this.outlineColour = java.awt.Color.black;\r
-this.textColour = java.awt.Color.black;\r
-this.textColour2 = java.awt.Color.white;\r
-});\r
-Clazz.defineMethod (c$, "isShowSequenceLogo", \r
-function () {\r
-return this.showSequenceLogo;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.groupName = "JGroup:" + this.hashCode ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (sequences, groupName, scheme, displayBoxes, displayText, colourText, start, end) {\r
-this.sequences = sequences;\r
-this.groupName = groupName;\r
-this.displayBoxes = displayBoxes;\r
-this.displayText = displayText;\r
-this.colourText = colourText;\r
-this.cs = scheme;\r
-this.startRes = start;\r
-this.endRes = end;\r
-this.recalcConservation ();\r
-}, "java.util.List,~S,jalview.schemes.ColourSchemeI,~B,~B,~B,~N,~N");\r
-Clazz.makeConstructor (c$, \r
-function (seqsel) {\r
-if (seqsel != null) {\r
-this.sequences =  new java.util.ArrayList ();\r
-this.sequences.addAll (seqsel.sequences);\r
-if (seqsel.groupName != null) {\r
-this.groupName =  String.instantialize (seqsel.groupName);\r
-}this.displayBoxes = seqsel.displayBoxes;\r
-this.displayText = seqsel.displayText;\r
-this.colourText = seqsel.colourText;\r
-this.startRes = seqsel.startRes;\r
-this.endRes = seqsel.endRes;\r
-this.cs = seqsel.cs;\r
-if (seqsel.description != null) {\r
-this.description =  String.instantialize (seqsel.description);\r
-}this.hidecols = seqsel.hidecols;\r
-this.hidereps = seqsel.hidereps;\r
-this.idColour = seqsel.idColour;\r
-this.outlineColour = seqsel.outlineColour;\r
-this.seqrep = seqsel.seqrep;\r
-this.textColour = seqsel.textColour;\r
-this.textColour2 = seqsel.textColour2;\r
-this.thresholdTextColour = seqsel.thresholdTextColour;\r
-this.width = seqsel.width;\r
-this.ignoreGapsInConsensus = seqsel.ignoreGapsInConsensus;\r
-if (seqsel.conserve != null) {\r
-this.recalcConservation ();\r
-}}}, "jalview.datamodel.SequenceGroup");\r
-Clazz.defineMethod (c$, "getSelectionAsNewSequences", \r
-function (align) {\r
-var iSize = this.sequences.size ();\r
-var seqs =  new Array (iSize);\r
-var inorder = this.getSequencesInOrder (align);\r
-for (var i = 0, ipos = 0; i < inorder.length; i++) {\r
-var seq = inorder[i];\r
-seqs[ipos] = seq.getSubSequence (this.startRes, this.endRes + 1);\r
-if (seqs[ipos] != null) {\r
-seqs[ipos].setDescription (seq.getDescription ());\r
-seqs[ipos].setDBRef (seq.getDBRef ());\r
-seqs[ipos].setSequenceFeatures (seq.getSequenceFeatures ());\r
-if (seq.getDatasetSequence () != null) {\r
-seqs[ipos].setDatasetSequence (seq.getDatasetSequence ());\r
-}if (seq.getAnnotation () != null) {\r
-var alann = align.getAlignmentAnnotation ();\r
-for (var a = 0; a < seq.getAnnotation ().length; a++) {\r
-var tocopy = seq.getAnnotation ()[a];\r
-if (alann != null) {\r
-var found = false;\r
-for (var pos = 0; pos < alann.length; pos++) {\r
-if (alann[pos] === tocopy) {\r
-found = true;\r
-break;\r
-}}\r
-if (!found) {\r
-continue;\r
-}}var newannot =  new jalview.datamodel.AlignmentAnnotation (seq.getAnnotation ()[a]);\r
-newannot.restrict (this.startRes, this.endRes);\r
-newannot.setSequenceRef (seqs[ipos]);\r
-newannot.adjustForAlignment ();\r
-seqs[ipos].addAlignmentAnnotation (newannot);\r
-}\r
-}ipos++;\r
-} else {\r
-iSize--;\r
-}}\r
-if (iSize != inorder.length) {\r
-var nseqs =  new Array (iSize);\r
-System.arraycopy (seqs, 0, nseqs, 0, iSize);\r
-seqs = nseqs;\r
-}return seqs;\r
-}, "jalview.datamodel.AlignmentI");\r
-Clazz.defineMethod (c$, "findEndRes", \r
-function (seq) {\r
-var eres = 0;\r
-var ch;\r
-for (var j = 0; j < this.endRes + 1 && j < seq.getLength (); j++) {\r
-ch = seq.getCharAt (j);\r
-if (!jalview.util.Comparison.isGap ((ch))) {\r
-eres++;\r
-}}\r
-if (eres > 0) {\r
-eres += seq.getStart () - 1;\r
-}return eres;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "getSequences", \r
-function () {\r
-return this.sequences;\r
-});\r
-Clazz.defineMethod (c$, "getSequences", \r
-function (hiddenReps) {\r
-if (hiddenReps == null) {\r
-return this.sequences;\r
-} else {\r
-var allSequences =  new java.util.ArrayList ();\r
-for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-allSequences.add (seq);\r
-if (hiddenReps.containsKey (seq)) {\r
-var hsg = hiddenReps.get (seq);\r
-for (var seq2, $seq2 = hsg.getSequences ().iterator (); $seq2.hasNext () && ((seq2 = $seq2.next ()) || true);) {\r
-if (seq2 !== seq && !allSequences.contains (seq2)) {\r
-allSequences.add (seq2);\r
-}}\r
-}}\r
-return allSequences;\r
-}}, "java.util.Map");\r
-Clazz.defineMethod (c$, "getSequencesAsArray", \r
-function (map) {\r
-var tmp = this.getSequences (map);\r
-if (tmp == null) {\r
-return null;\r
-}return tmp.toArray ( new Array (tmp.size ()));\r
-}, "java.util.Map");\r
-Clazz.defineMethod (c$, "adjustForRemoveLeft", \r
-function (col) {\r
-if (this.startRes >= col) {\r
-this.startRes = this.startRes - col;\r
-}if (this.endRes >= col) {\r
-this.endRes = this.endRes - col;\r
-if (this.startRes > this.endRes) {\r
-this.startRes = 0;\r
-}} else {\r
-return false;\r
-}return true;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "adjustForRemoveRight", \r
-function (col) {\r
-if (this.startRes > col) {\r
-return false;\r
-}if (this.endRes >= col) {\r
-this.endRes = col;\r
-}return true;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getName", \r
-function () {\r
-return this.groupName;\r
-});\r
-Clazz.defineMethod (c$, "getDescription", \r
-function () {\r
-return this.description;\r
-});\r
-Clazz.defineMethod (c$, "setName", \r
-function (name) {\r
-this.groupName = name;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setDescription", \r
-function (desc) {\r
-this.description = desc;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getConservation", \r
-function () {\r
-return this.conserve;\r
-});\r
-Clazz.defineMethod (c$, "setConservation", \r
-function (c) {\r
-this.conserve = c;\r
-}, "jalview.analysis.Conservation");\r
-Clazz.defineMethod (c$, "addSequence", \r
-function (s, recalc) {\r
-{\r
-if (s != null && !this.sequences.contains (s)) {\r
-this.sequences.add (s);\r
-}if (recalc) {\r
-this.recalcConservation ();\r
-}}}, "jalview.datamodel.SequenceI,~B");\r
-Clazz.defineMethod (c$, "getConsPercGaps", \r
-function () {\r
-return this.consPercGaps;\r
-});\r
-Clazz.defineMethod (c$, "setConsPercGaps", \r
-function (consPercGaps) {\r
-this.consPercGaps = consPercGaps;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "recalcConservation", \r
-function () {\r
-if (this.cs == null && this.consensus == null && this.conservation == null) {\r
-return;\r
-}try {\r
-var cnsns = jalview.analysis.AAFrequency.calculate (this.sequences, this.startRes, this.endRes + 1, this.showSequenceLogo);\r
-if (this.consensus != null) {\r
-this._updateConsensusRow (cnsns, this.sequences.size ());\r
-}if (this.cs != null) {\r
-this.cs.setConsensus (cnsns);\r
-}if ((this.conservation != null) || (this.cs != null && this.cs.conservationApplied ())) {\r
-var c =  new jalview.analysis.Conservation (this.groupName, jalview.schemes.ResidueProperties.propHash, 3, this.sequences, this.startRes, this.endRes + 1);\r
-c.calculate ();\r
-c.verdict (false, this.consPercGaps);\r
-if (this.conservation != null) {\r
-this._updateConservationRow (c);\r
-}if (this.cs != null) {\r
-if (this.cs.conservationApplied ()) {\r
-this.cs.setConservation (c);\r
-}}}if (this.cs != null) {\r
-this.cs.alignmentChanged (this.context != null ? this.context : this, null);\r
-}} catch (err) {\r
-if (Clazz.exceptionOf (err, OutOfMemoryError)) {\r
-System.out.println ("Out of memory loading groups: " + err);\r
-} else {\r
-throw err;\r
-}\r
-}\r
-});\r
-Clazz.defineMethod (c$, "_updateConservationRow", \r
-($fz = function (c) {\r
-if (this.conservation == null) {\r
-this.getConservation ();\r
-}this.conservation.label = "Conservation for " + this.getName ();\r
-this.conservation.description = "Conservation for group " + this.getName () + " less than " + this.consPercGaps + "% gaps";\r
-var aWidth = (this.conservation.annotations != null) ? (this.endRes < this.conservation.annotations.length ? this.conservation.annotations.length : this.endRes + 1) : this.endRes + 1;\r
-this.conservation.annotations = null;\r
-this.conservation.annotations =  new Array (aWidth);\r
-c.completeAnnotations (this.conservation, null, this.startRes, this.endRes + 1);\r
-}, $fz.isPrivate = true, $fz), "jalview.analysis.Conservation");\r
-Clazz.defineMethod (c$, "_updateConsensusRow", \r
-($fz = function (cnsns, nseq) {\r
-if (this.consensus == null) {\r
-this.getConsensus ();\r
-}this.consensus.label = "Consensus for " + this.getName ();\r
-this.consensus.description = "Percent Identity";\r
-this.consensusData = cnsns;\r
-var aWidth = (this.consensus.annotations != null) ? (this.endRes < this.consensus.annotations.length ? this.consensus.annotations.length : this.endRes + 1) : this.endRes + 1;\r
-this.consensus.annotations = null;\r
-this.consensus.annotations =  new Array (aWidth);\r
-jalview.analysis.AAFrequency.completeConsensus (this.consensus, cnsns, this.startRes, this.endRes + 1, this.ignoreGapsInConsensus, this.showSequenceLogo, nseq);\r
-}, $fz.isPrivate = true, $fz), "~A,~N");\r
-Clazz.defineMethod (c$, "addOrRemove", \r
-function (s, recalc) {\r
-{\r
-if (this.sequences.contains (s)) {\r
-this.deleteSequence (s, recalc);\r
-} else {\r
-this.addSequence (s, recalc);\r
-}}}, "jalview.datamodel.SequenceI,~B");\r
-Clazz.defineMethod (c$, "deleteSequence", \r
-function (s, recalc) {\r
-{\r
-this.sequences.remove (s);\r
-if (recalc) {\r
-this.recalcConservation ();\r
-}}}, "jalview.datamodel.SequenceI,~B");\r
-Clazz.overrideMethod (c$, "getStartRes", \r
-function () {\r
-return this.startRes;\r
-});\r
-Clazz.overrideMethod (c$, "getEndRes", \r
-function () {\r
-return this.endRes;\r
-});\r
-Clazz.defineMethod (c$, "setStartRes", \r
-function (i) {\r
-this.startRes = i;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setEndRes", \r
-function (i) {\r
-this.endRes = i;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getSize", \r
-function () {\r
-return this.sequences.size ();\r
-});\r
-Clazz.defineMethod (c$, "getSequenceAt", \r
-function (i) {\r
-return this.sequences.get (i);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setColourText", \r
-function (state) {\r
-this.colourText = state;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getColourText", \r
-function () {\r
-return this.colourText;\r
-});\r
-Clazz.defineMethod (c$, "setDisplayText", \r
-function (state) {\r
-this.displayText = state;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getDisplayText", \r
-function () {\r
-return this.displayText;\r
-});\r
-Clazz.defineMethod (c$, "setDisplayBoxes", \r
-function (state) {\r
-this.displayBoxes = state;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getDisplayBoxes", \r
-function () {\r
-return this.displayBoxes;\r
-});\r
-Clazz.overrideMethod (c$, "getWidth", \r
-function () {\r
-{\r
-var first = true;\r
-for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-if (first || seq.getLength () > this.width) {\r
-this.width = seq.getLength ();\r
-first = false;\r
-}}\r
-return this.width;\r
-}});\r
-Clazz.defineMethod (c$, "setOutlineColour", \r
-function (c) {\r
-this.outlineColour = c;\r
-}, "java.awt.Color");\r
-Clazz.defineMethod (c$, "getOutlineColour", \r
-function () {\r
-return this.outlineColour;\r
-});\r
-Clazz.defineMethod (c$, "getSequencesInOrder", \r
-function (al) {\r
-return this.getSequencesInOrder (al, true);\r
-}, "jalview.datamodel.AlignmentI");\r
-Clazz.defineMethod (c$, "getSequencesInOrder", \r
-function (al, trim) {\r
-{\r
-var sSize = this.sequences.size ();\r
-var alHeight = al.getHeight ();\r
-var seqs =  new Array ((trim) ? sSize : alHeight);\r
-var index = 0;\r
-for (var i = 0; i < alHeight && index < sSize; i++) {\r
-if (this.sequences.contains (al.getSequenceAt (i))) {\r
-seqs[(trim) ? index : i] = al.getSequenceAt (i);\r
-index++;\r
-}}\r
-if (index == 0) {\r
-return null;\r
-}if (!trim) {\r
-return seqs;\r
-}if (index < seqs.length) {\r
-var dummy = seqs;\r
-seqs =  new Array (index);\r
-while (--index >= 0) {\r
-seqs[index] = dummy[index];\r
-dummy[index] = null;\r
-}\r
-}return seqs;\r
-}}, "jalview.datamodel.AlignmentI,~B");\r
-Clazz.defineMethod (c$, "getIdColour", \r
-function () {\r
-return this.idColour;\r
-});\r
-Clazz.defineMethod (c$, "setIdColour", \r
-function (idColour) {\r
-this.idColour = idColour;\r
-}, "java.awt.Color");\r
-Clazz.overrideMethod (c$, "getSeqrep", \r
-function () {\r
-return this.seqrep;\r
-});\r
-Clazz.overrideMethod (c$, "setSeqrep", \r
-function (seqrep) {\r
-this.seqrep = seqrep;\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.overrideMethod (c$, "hasSeqrep", \r
-function () {\r
-return this.seqrep != null;\r
-});\r
-Clazz.defineMethod (c$, "setHidereps", \r
-function (visibility) {\r
-this.hidereps = visibility;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isHidereps", \r
-function () {\r
-return this.hidereps;\r
-});\r
-Clazz.defineMethod (c$, "setHideCols", \r
-function (visibility) {\r
-this.hidecols = visibility;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isHideCols", \r
-function () {\r
-return this.hidecols;\r
-});\r
-Clazz.defineMethod (c$, "intersect", \r
-function (alignment, map) {\r
-var sgroup =  new jalview.datamodel.SequenceGroup (this);\r
-var insect = this.getSequencesInOrder (alignment);\r
-sgroup.sequences =  new java.util.ArrayList ();\r
-for (var s = 0; insect != null && s < insect.length; s++) {\r
-if (map == null || map.containsKey (insect[s])) {\r
-sgroup.sequences.add (insect[s]);\r
-}}\r
-return sgroup;\r
-}, "jalview.datamodel.AlignmentI,java.util.Map");\r
-Clazz.defineMethod (c$, "getShowNonconserved", \r
-function () {\r
-return this.showNonconserved;\r
-});\r
-Clazz.defineMethod (c$, "setShowNonconserved", \r
-function (displayNonconserved) {\r
-this.showNonconserved = displayNonconserved;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setConsensus", \r
-function (aan) {\r
-if (this.consensus == null) {\r
-this.consensus = aan;\r
-}}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.defineMethod (c$, "getConsensus", \r
-function () {\r
-var aWidth = this.getWidth ();\r
-if (aWidth < 0) {\r
-return null;\r
-}if (this.consensus == null) {\r
-this.consensus =  new jalview.datamodel.AlignmentAnnotation ("", "",  new Array (1), 0, 100, 1);\r
-this.consensus.hasText = true;\r
-this.consensus.autoCalculated = true;\r
-this.consensus.groupRef = this;\r
-this.consensus.label = "Consensus for " + this.getName ();\r
-this.consensus.description = "Percent Identity";\r
-}return this.consensus;\r
-});\r
-Clazz.defineMethod (c$, "setConservationRow", \r
-function (aan) {\r
-if (this.conservation == null) {\r
-this.conservation = aan;\r
-}}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.defineMethod (c$, "getConservationRow", \r
-function () {\r
-if (this.conservation == null) {\r
-this.conservation =  new jalview.datamodel.AlignmentAnnotation ("", "",  new Array (1), 0, 11, 1);\r
-}this.conservation.hasText = true;\r
-this.conservation.autoCalculated = true;\r
-this.conservation.groupRef = this;\r
-this.conservation.label = "Conservation for " + this.getName ();\r
-this.conservation.description = "Conservation for group " + this.getName () + " less than " + this.consPercGaps + "% gaps";\r
-return this.conservation;\r
-});\r
-Clazz.defineMethod (c$, "hasAnnotationRows", \r
-function () {\r
-return this.consensus != null || this.conservation != null;\r
-});\r
-Clazz.defineMethod (c$, "getConsensusSeq", \r
-function () {\r
-this.getConsensus ();\r
-var seqs =  new StringBuffer ();\r
-for (var i = 0; i < this.consensus.annotations.length; i++) {\r
-if (this.consensus.annotations[i] != null) {\r
-if (this.consensus.annotations[i].description.charAt (0) == '[') {\r
-seqs.append (this.consensus.annotations[i].description.charAt (1));\r
-} else {\r
-seqs.append (this.consensus.annotations[i].displayCharacter);\r
-}}}\r
-var sq =  new jalview.datamodel.Sequence ("Group" + this.getName () + " Consensus", seqs.toString ());\r
-sq.setDescription ("Percentage Identity Consensus " + ((this.ignoreGapsInConsensus) ? " without gaps" : ""));\r
-return sq;\r
-});\r
-Clazz.defineMethod (c$, "setIgnoreGapsConsensus", \r
-function (state) {\r
-if (this.ignoreGapsInConsensus != state && this.consensus != null) {\r
-this.ignoreGapsInConsensus = state;\r
-this.recalcConservation ();\r
-}this.ignoreGapsInConsensus = state;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getIgnoreGapsConsensus", \r
-function () {\r
-return this.ignoreGapsInConsensus;\r
-});\r
-Clazz.defineMethod (c$, "setshowSequenceLogo", \r
-function (showSequenceLogo) {\r
-if (this.showSequenceLogo != showSequenceLogo && this.consensus != null) {\r
-this.showSequenceLogo = showSequenceLogo;\r
-this.recalcConservation ();\r
-}this.showSequenceLogo = showSequenceLogo;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setShowConsensusHistogram", \r
-function (showConsHist) {\r
-if (this.showConsensusHistogram != showConsHist && this.consensus != null) {\r
-this.showConsensusHistogram = showConsHist;\r
-this.recalcConservation ();\r
-}this.showConsensusHistogram = showConsHist;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isShowConsensusHistogram", \r
-function () {\r
-return this.showConsensusHistogram;\r
-});\r
-Clazz.defineMethod (c$, "setNormaliseSequenceLogo", \r
-function (norm) {\r
-this.normaliseSequenceLogo = norm;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isNormaliseSequenceLogo", \r
-function () {\r
-return this.normaliseSequenceLogo;\r
-});\r
-Clazz.overrideMethod (c$, "getAlignmentAnnotation", \r
-function () {\r
-var annot =  new java.util.ArrayList ();\r
-{\r
-for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-var aa = seq.getAnnotation ();\r
-if (aa != null) {\r
-for (var al, $al = 0, $$al = aa; $al < $$al.length && ((al = $$al[$al]) || true); $al++) {\r
-if (al.groupRef === this) {\r
-annot.add (al);\r
-}}\r
-}}\r
-if (this.consensus != null) {\r
-annot.add (this.consensus);\r
-}if (this.conservation != null) {\r
-annot.add (this.conservation);\r
-}}return annot.toArray ( new Array (0));\r
-});\r
-Clazz.overrideMethod (c$, "findAnnotation", \r
-function (calcId) {\r
-var aa =  new java.util.ArrayList ();\r
-for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {\r
-if (a.getCalcId () === calcId) {\r
-aa.add (a);\r
-}}\r
-return aa;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "findAnnotations", \r
-function (seq, calcId, label) {\r
-var aa =  new java.util.ArrayList ();\r
-for (var ann, $ann = 0, $$ann = this.getAlignmentAnnotation (); $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {\r
-if (ann.getCalcId () != null && ann.getCalcId ().equals (calcId) && ann.sequenceRef != null && ann.sequenceRef === seq && ann.label != null && ann.label.equals (label)) {\r
-aa.add (ann);\r
-}}\r
-return aa;\r
-}, "jalview.datamodel.SequenceI,~S,~S");\r
-Clazz.defineMethod (c$, "hasAnnotation", \r
-function (calcId) {\r
-if (calcId != null && !"".equals (calcId)) {\r
-for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {\r
-if (a.getCalcId () === calcId) {\r
-return true;\r
-}}\r
-}return false;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "clear", \r
-function () {\r
-{\r
-this.sequences.clear ();\r
-}});\r
-Clazz.defineMethod (c$, "setContext", \r
-function (context) {\r
-this.context = context;\r
-}, "jalview.datamodel.AnnotatedCollectionI");\r
-Clazz.overrideMethod (c$, "getContext", \r
-function () {\r
-return this.context;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.AnnotatedCollectionI", "java.awt.Color", "java.util.ArrayList"], "jalview.datamodel.SequenceGroup", ["jalview.analysis.AAFrequency", "$.Conservation", "jalview.datamodel.AlignmentAnnotation", "$.Sequence", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.groupName = null;
+this.description = null;
+this.conserve = null;
+this.aaFrequency = null;
+this.displayBoxes = true;
+this.displayText = true;
+this.colourText = false;
+this.showNonconserved = false;
+this.sequences = null;
+this.seqrep = null;
+this.width = -1;
+this.cs = null;
+this.startRes = 0;
+this.endRes = 0;
+this.outlineColour = null;
+this.idColour = null;
+this.thresholdTextColour = 0;
+this.textColour = null;
+this.textColour2 = null;
+this.ignoreGapsInConsensus = true;
+this.showSequenceLogo = false;
+this.normaliseSequenceLogo = false;
+this.consPercGaps = 25;
+this.consensusData = null;
+this.hidereps = false;
+this.hidecols = false;
+this.consensus = null;
+this.conservation = null;
+this.showConsensusHistogram = false;
+this.context = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SequenceGroup", null, jalview.datamodel.AnnotatedCollectionI);
+Clazz.prepareFields (c$, function () {
+this.sequences =  new java.util.ArrayList ();
+this.outlineColour = java.awt.Color.black;
+this.textColour = java.awt.Color.black;
+this.textColour2 = java.awt.Color.white;
+});
+Clazz.defineMethod (c$, "isShowSequenceLogo", 
+function () {
+return this.showSequenceLogo;
+});
+Clazz.makeConstructor (c$, 
+function () {
+this.groupName = "JGroup:" + this.hashCode ();
+});
+Clazz.makeConstructor (c$, 
+function (sequences, groupName, scheme, displayBoxes, displayText, colourText, start, end) {
+this.sequences = sequences;
+this.groupName = groupName;
+this.displayBoxes = displayBoxes;
+this.displayText = displayText;
+this.colourText = colourText;
+this.cs = scheme;
+this.startRes = start;
+this.endRes = end;
+this.recalcConservation ();
+}, "java.util.List,~S,jalview.schemes.ColourSchemeI,~B,~B,~B,~N,~N");
+Clazz.makeConstructor (c$, 
+function (seqsel) {
+if (seqsel != null) {
+this.sequences =  new java.util.ArrayList ();
+this.sequences.addAll (seqsel.sequences);
+if (seqsel.groupName != null) {
+this.groupName =  String.instantialize (seqsel.groupName);
+}this.displayBoxes = seqsel.displayBoxes;
+this.displayText = seqsel.displayText;
+this.colourText = seqsel.colourText;
+this.startRes = seqsel.startRes;
+this.endRes = seqsel.endRes;
+this.cs = seqsel.cs;
+if (seqsel.description != null) {
+this.description =  String.instantialize (seqsel.description);
+}this.hidecols = seqsel.hidecols;
+this.hidereps = seqsel.hidereps;
+this.idColour = seqsel.idColour;
+this.outlineColour = seqsel.outlineColour;
+this.seqrep = seqsel.seqrep;
+this.textColour = seqsel.textColour;
+this.textColour2 = seqsel.textColour2;
+this.thresholdTextColour = seqsel.thresholdTextColour;
+this.width = seqsel.width;
+this.ignoreGapsInConsensus = seqsel.ignoreGapsInConsensus;
+if (seqsel.conserve != null) {
+this.recalcConservation ();
+}}}, "jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "getSelectionAsNewSequences", 
+function (align) {
+var iSize = this.sequences.size ();
+var seqs =  new Array (iSize);
+var inorder = this.getSequencesInOrder (align);
+for (var i = 0, ipos = 0; i < inorder.length; i++) {
+var seq = inorder[i];
+seqs[ipos] = seq.getSubSequence (this.startRes, this.endRes + 1);
+if (seqs[ipos] != null) {
+seqs[ipos].setDescription (seq.getDescription ());
+seqs[ipos].setDBRef (seq.getDBRef ());
+seqs[ipos].setSequenceFeatures (seq.getSequenceFeatures ());
+if (seq.getDatasetSequence () != null) {
+seqs[ipos].setDatasetSequence (seq.getDatasetSequence ());
+}if (seq.getAnnotation () != null) {
+var alann = align.getAlignmentAnnotation ();
+for (var a = 0; a < seq.getAnnotation ().length; a++) {
+var tocopy = seq.getAnnotation ()[a];
+if (alann != null) {
+var found = false;
+for (var pos = 0; pos < alann.length; pos++) {
+if (alann[pos] === tocopy) {
+found = true;
+break;
+}}
+if (!found) {
+continue;
+}}var newannot =  new jalview.datamodel.AlignmentAnnotation (seq.getAnnotation ()[a]);
+newannot.restrict (this.startRes, this.endRes);
+newannot.setSequenceRef (seqs[ipos]);
+newannot.adjustForAlignment ();
+seqs[ipos].addAlignmentAnnotation (newannot);
+}
+}ipos++;
+} else {
+iSize--;
+}}
+if (iSize != inorder.length) {
+var nseqs =  new Array (iSize);
+System.arraycopy (seqs, 0, nseqs, 0, iSize);
+seqs = nseqs;
+}return seqs;
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "findEndRes", 
+function (seq) {
+var eres = 0;
+var ch;
+for (var j = 0; j < this.endRes + 1 && j < seq.getLength (); j++) {
+ch = seq.getCharAt (j);
+if (!jalview.util.Comparison.isGap ((ch))) {
+eres++;
+}}
+if (eres > 0) {
+eres += seq.getStart () - 1;
+}return eres;
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getSequences", 
+function () {
+return this.sequences;
+});
+Clazz.defineMethod (c$, "getSequences", 
+function (hiddenReps) {
+if (hiddenReps == null) {
+return this.sequences;
+} else {
+var allSequences =  new java.util.ArrayList ();
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+allSequences.add (seq);
+if (hiddenReps.containsKey (seq)) {
+var hsg = hiddenReps.get (seq);
+for (var seq2, $seq2 = hsg.getSequences ().iterator (); $seq2.hasNext () && ((seq2 = $seq2.next ()) || true);) {
+if (seq2 !== seq && !allSequences.contains (seq2)) {
+allSequences.add (seq2);
+}}
+}}
+return allSequences;
+}}, "java.util.Map");
+Clazz.defineMethod (c$, "getSequencesAsArray", 
+function (map) {
+var tmp = this.getSequences (map);
+if (tmp == null) {
+return null;
+}return tmp.toArray ( new Array (tmp.size ()));
+}, "java.util.Map");
+Clazz.defineMethod (c$, "adjustForRemoveLeft", 
+function (col) {
+if (this.startRes >= col) {
+this.startRes = this.startRes - col;
+}if (this.endRes >= col) {
+this.endRes = this.endRes - col;
+if (this.startRes > this.endRes) {
+this.startRes = 0;
+}} else {
+return false;
+}return true;
+}, "~N");
+Clazz.defineMethod (c$, "adjustForRemoveRight", 
+function (col) {
+if (this.startRes > col) {
+return false;
+}if (this.endRes >= col) {
+this.endRes = col;
+}return true;
+}, "~N");
+Clazz.defineMethod (c$, "getName", 
+function () {
+return this.groupName;
+});
+Clazz.defineMethod (c$, "getDescription", 
+function () {
+return this.description;
+});
+Clazz.defineMethod (c$, "setName", 
+function (name) {
+this.groupName = name;
+}, "~S");
+Clazz.defineMethod (c$, "setDescription", 
+function (desc) {
+this.description = desc;
+}, "~S");
+Clazz.defineMethod (c$, "getConservation", 
+function () {
+return this.conserve;
+});
+Clazz.defineMethod (c$, "setConservation", 
+function (c) {
+this.conserve = c;
+}, "jalview.analysis.Conservation");
+Clazz.defineMethod (c$, "addSequence", 
+function (s, recalc) {
+{
+if (s != null && !this.sequences.contains (s)) {
+this.sequences.add (s);
+}if (recalc) {
+this.recalcConservation ();
+}}}, "jalview.datamodel.SequenceI,~B");
+Clazz.defineMethod (c$, "getConsPercGaps", 
+function () {
+return this.consPercGaps;
+});
+Clazz.defineMethod (c$, "setConsPercGaps", 
+function (consPercGaps) {
+this.consPercGaps = consPercGaps;
+}, "~N");
+Clazz.defineMethod (c$, "recalcConservation", 
+function () {
+if (this.cs == null && this.consensus == null && this.conservation == null) {
+return;
+}try {
+var cnsns = jalview.analysis.AAFrequency.calculate (this.sequences, this.startRes, this.endRes + 1, this.showSequenceLogo);
+if (this.consensus != null) {
+this._updateConsensusRow (cnsns, this.sequences.size ());
+}if (this.cs != null) {
+this.cs.setConsensus (cnsns);
+}if ((this.conservation != null) || (this.cs != null && this.cs.conservationApplied ())) {
+var c =  new jalview.analysis.Conservation (this.groupName, jalview.schemes.ResidueProperties.propHash, 3, this.sequences, this.startRes, this.endRes + 1);
+c.calculate ();
+c.verdict (false, this.consPercGaps);
+if (this.conservation != null) {
+this._updateConservationRow (c);
+}if (this.cs != null) {
+if (this.cs.conservationApplied ()) {
+this.cs.setConservation (c);
+}}}if (this.cs != null) {
+this.cs.alignmentChanged (this.context != null ? this.context : this, null);
+}} catch (err) {
+if (Clazz.exceptionOf (err, OutOfMemoryError)) {
+System.out.println ("Out of memory loading groups: " + err);
+} else {
+throw err;
+}
+}
+});
+Clazz.defineMethod (c$, "_updateConservationRow", 
+($fz = function (c) {
+if (this.conservation == null) {
+this.getConservation ();
+}this.conservation.label = "Conservation for " + this.getName ();
+this.conservation.description = "Conservation for group " + this.getName () + " less than " + this.consPercGaps + "% gaps";
+var aWidth = (this.conservation.annotations != null) ? (this.endRes < this.conservation.annotations.length ? this.conservation.annotations.length : this.endRes + 1) : this.endRes + 1;
+this.conservation.annotations = null;
+this.conservation.annotations =  new Array (aWidth);
+c.completeAnnotations (this.conservation, null, this.startRes, this.endRes + 1);
+}, $fz.isPrivate = true, $fz), "jalview.analysis.Conservation");
+Clazz.defineMethod (c$, "_updateConsensusRow", 
+($fz = function (cnsns, nseq) {
+if (this.consensus == null) {
+this.getConsensus ();
+}this.consensus.label = "Consensus for " + this.getName ();
+this.consensus.description = "Percent Identity";
+this.consensusData = cnsns;
+var aWidth = (this.consensus.annotations != null) ? (this.endRes < this.consensus.annotations.length ? this.consensus.annotations.length : this.endRes + 1) : this.endRes + 1;
+this.consensus.annotations = null;
+this.consensus.annotations =  new Array (aWidth);
+jalview.analysis.AAFrequency.completeConsensus (this.consensus, cnsns, this.startRes, this.endRes + 1, this.ignoreGapsInConsensus, this.showSequenceLogo, nseq);
+}, $fz.isPrivate = true, $fz), "~A,~N");
+Clazz.defineMethod (c$, "addOrRemove", 
+function (s, recalc) {
+{
+if (this.sequences.contains (s)) {
+this.deleteSequence (s, recalc);
+} else {
+this.addSequence (s, recalc);
+}}}, "jalview.datamodel.SequenceI,~B");
+Clazz.defineMethod (c$, "deleteSequence", 
+function (s, recalc) {
+{
+this.sequences.remove (s);
+if (recalc) {
+this.recalcConservation ();
+}}}, "jalview.datamodel.SequenceI,~B");
+Clazz.overrideMethod (c$, "getStartRes", 
+function () {
+return this.startRes;
+});
+Clazz.overrideMethod (c$, "getEndRes", 
+function () {
+return this.endRes;
+});
+Clazz.defineMethod (c$, "setStartRes", 
+function (i) {
+this.startRes = i;
+}, "~N");
+Clazz.defineMethod (c$, "setEndRes", 
+function (i) {
+this.endRes = i;
+}, "~N");
+Clazz.defineMethod (c$, "getSize", 
+function () {
+return this.sequences.size ();
+});
+Clazz.defineMethod (c$, "getSequenceAt", 
+function (i) {
+return this.sequences.get (i);
+}, "~N");
+Clazz.defineMethod (c$, "setColourText", 
+function (state) {
+this.colourText = state;
+}, "~B");
+Clazz.defineMethod (c$, "getColourText", 
+function () {
+return this.colourText;
+});
+Clazz.defineMethod (c$, "setDisplayText", 
+function (state) {
+this.displayText = state;
+}, "~B");
+Clazz.defineMethod (c$, "getDisplayText", 
+function () {
+return this.displayText;
+});
+Clazz.defineMethod (c$, "setDisplayBoxes", 
+function (state) {
+this.displayBoxes = state;
+}, "~B");
+Clazz.defineMethod (c$, "getDisplayBoxes", 
+function () {
+return this.displayBoxes;
+});
+Clazz.overrideMethod (c$, "getWidth", 
+function () {
+{
+var first = true;
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+if (first || seq.getLength () > this.width) {
+this.width = seq.getLength ();
+first = false;
+}}
+return this.width;
+}});
+Clazz.defineMethod (c$, "setOutlineColour", 
+function (c) {
+this.outlineColour = c;
+}, "java.awt.Color");
+Clazz.defineMethod (c$, "getOutlineColour", 
+function () {
+return this.outlineColour;
+});
+Clazz.defineMethod (c$, "getSequencesInOrder", 
+function (al) {
+return this.getSequencesInOrder (al, true);
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "getSequencesInOrder", 
+function (al, trim) {
+{
+var sSize = this.sequences.size ();
+var alHeight = al.getHeight ();
+var seqs =  new Array ((trim) ? sSize : alHeight);
+var index = 0;
+for (var i = 0; i < alHeight && index < sSize; i++) {
+if (this.sequences.contains (al.getSequenceAt (i))) {
+seqs[(trim) ? index : i] = al.getSequenceAt (i);
+index++;
+}}
+if (index == 0) {
+return null;
+}if (!trim) {
+return seqs;
+}if (index < seqs.length) {
+var dummy = seqs;
+seqs =  new Array (index);
+while (--index >= 0) {
+seqs[index] = dummy[index];
+dummy[index] = null;
+}
+}return seqs;
+}}, "jalview.datamodel.AlignmentI,~B");
+Clazz.defineMethod (c$, "getIdColour", 
+function () {
+return this.idColour;
+});
+Clazz.defineMethod (c$, "setIdColour", 
+function (idColour) {
+this.idColour = idColour;
+}, "java.awt.Color");
+Clazz.overrideMethod (c$, "getSeqrep", 
+function () {
+return this.seqrep;
+});
+Clazz.overrideMethod (c$, "setSeqrep", 
+function (seqrep) {
+this.seqrep = seqrep;
+}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "hasSeqrep", 
+function () {
+return this.seqrep != null;
+});
+Clazz.defineMethod (c$, "setHidereps", 
+function (visibility) {
+this.hidereps = visibility;
+}, "~B");
+Clazz.defineMethod (c$, "isHidereps", 
+function () {
+return this.hidereps;
+});
+Clazz.defineMethod (c$, "setHideCols", 
+function (visibility) {
+this.hidecols = visibility;
+}, "~B");
+Clazz.defineMethod (c$, "isHideCols", 
+function () {
+return this.hidecols;
+});
+Clazz.defineMethod (c$, "intersect", 
+function (alignment, map) {
+var sgroup =  new jalview.datamodel.SequenceGroup (this);
+var insect = this.getSequencesInOrder (alignment);
+sgroup.sequences =  new java.util.ArrayList ();
+for (var s = 0; insect != null && s < insect.length; s++) {
+if (map == null || map.containsKey (insect[s])) {
+sgroup.sequences.add (insect[s]);
+}}
+return sgroup;
+}, "jalview.datamodel.AlignmentI,java.util.Map");
+Clazz.defineMethod (c$, "getShowNonconserved", 
+function () {
+return this.showNonconserved;
+});
+Clazz.defineMethod (c$, "setShowNonconserved", 
+function (displayNonconserved) {
+this.showNonconserved = displayNonconserved;
+}, "~B");
+Clazz.defineMethod (c$, "setConsensus", 
+function (aan) {
+if (this.consensus == null) {
+this.consensus = aan;
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "getConsensus", 
+function () {
+var aWidth = this.getWidth ();
+if (aWidth < 0) {
+return null;
+}if (this.consensus == null) {
+this.consensus =  new jalview.datamodel.AlignmentAnnotation ("", "",  new Array (1), 0, 100, 1);
+this.consensus.hasText = true;
+this.consensus.autoCalculated = true;
+this.consensus.groupRef = this;
+this.consensus.label = "Consensus for " + this.getName ();
+this.consensus.description = "Percent Identity";
+}return this.consensus;
+});
+Clazz.defineMethod (c$, "setConservationRow", 
+function (aan) {
+if (this.conservation == null) {
+this.conservation = aan;
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "getConservationRow", 
+function () {
+if (this.conservation == null) {
+this.conservation =  new jalview.datamodel.AlignmentAnnotation ("", "",  new Array (1), 0, 11, 1);
+}this.conservation.hasText = true;
+this.conservation.autoCalculated = true;
+this.conservation.groupRef = this;
+this.conservation.label = "Conservation for " + this.getName ();
+this.conservation.description = "Conservation for group " + this.getName () + " less than " + this.consPercGaps + "% gaps";
+return this.conservation;
+});
+Clazz.defineMethod (c$, "hasAnnotationRows", 
+function () {
+return this.consensus != null || this.conservation != null;
+});
+Clazz.defineMethod (c$, "getConsensusSeq", 
+function () {
+this.getConsensus ();
+var seqs =  new StringBuffer ();
+for (var i = 0; i < this.consensus.annotations.length; i++) {
+if (this.consensus.annotations[i] != null) {
+if (this.consensus.annotations[i].description.charAt (0) == '[') {
+seqs.append (this.consensus.annotations[i].description.charAt (1));
+} else {
+seqs.append (this.consensus.annotations[i].displayCharacter);
+}}}
+var sq =  new jalview.datamodel.Sequence ("Group" + this.getName () + " Consensus", seqs.toString ());
+sq.setDescription ("Percentage Identity Consensus " + ((this.ignoreGapsInConsensus) ? " without gaps" : ""));
+return sq;
+});
+Clazz.defineMethod (c$, "setIgnoreGapsConsensus", 
+function (state) {
+if (this.ignoreGapsInConsensus != state && this.consensus != null) {
+this.ignoreGapsInConsensus = state;
+this.recalcConservation ();
+}this.ignoreGapsInConsensus = state;
+}, "~B");
+Clazz.defineMethod (c$, "getIgnoreGapsConsensus", 
+function () {
+return this.ignoreGapsInConsensus;
+});
+Clazz.defineMethod (c$, "setshowSequenceLogo", 
+function (showSequenceLogo) {
+if (this.showSequenceLogo != showSequenceLogo && this.consensus != null) {
+this.showSequenceLogo = showSequenceLogo;
+this.recalcConservation ();
+}this.showSequenceLogo = showSequenceLogo;
+}, "~B");
+Clazz.defineMethod (c$, "setShowConsensusHistogram", 
+function (showConsHist) {
+if (this.showConsensusHistogram != showConsHist && this.consensus != null) {
+this.showConsensusHistogram = showConsHist;
+this.recalcConservation ();
+}this.showConsensusHistogram = showConsHist;
+}, "~B");
+Clazz.defineMethod (c$, "isShowConsensusHistogram", 
+function () {
+return this.showConsensusHistogram;
+});
+Clazz.defineMethod (c$, "setNormaliseSequenceLogo", 
+function (norm) {
+this.normaliseSequenceLogo = norm;
+}, "~B");
+Clazz.defineMethod (c$, "isNormaliseSequenceLogo", 
+function () {
+return this.normaliseSequenceLogo;
+});
+Clazz.overrideMethod (c$, "getAlignmentAnnotation", 
+function () {
+var annot =  new java.util.ArrayList ();
+{
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+var aa = seq.getAnnotation ();
+if (aa != null) {
+for (var al, $al = 0, $$al = aa; $al < $$al.length && ((al = $$al[$al]) || true); $al++) {
+if (al.groupRef === this) {
+annot.add (al);
+}}
+}}
+if (this.consensus != null) {
+annot.add (this.consensus);
+}if (this.conservation != null) {
+annot.add (this.conservation);
+}}return annot.toArray ( new Array (0));
+});
+Clazz.overrideMethod (c$, "findAnnotation", 
+function (calcId) {
+var aa =  new java.util.ArrayList ();
+for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {
+if (a.getCalcId () === calcId) {
+aa.add (a);
+}}
+return aa;
+}, "~S");
+Clazz.overrideMethod (c$, "findAnnotations", 
+function (seq, calcId, label) {
+var aa =  new java.util.ArrayList ();
+for (var ann, $ann = 0, $$ann = this.getAlignmentAnnotation (); $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {
+if (ann.getCalcId () != null && ann.getCalcId ().equals (calcId) && ann.sequenceRef != null && ann.sequenceRef === seq && ann.label != null && ann.label.equals (label)) {
+aa.add (ann);
+}}
+return aa;
+}, "jalview.datamodel.SequenceI,~S,~S");
+Clazz.defineMethod (c$, "hasAnnotation", 
+function (calcId) {
+if (calcId != null && !"".equals (calcId)) {
+for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {
+if (a.getCalcId () === calcId) {
+return true;
+}}
+}return false;
+}, "~S");
+Clazz.defineMethod (c$, "clear", 
+function () {
+{
+this.sequences.clear ();
+}});
+Clazz.defineMethod (c$, "setContext", 
+function (context) {
+this.context = context;
+}, "jalview.datamodel.AnnotatedCollectionI");
+Clazz.overrideMethod (c$, "getContext", 
+function () {
+return this.context;
+});
+});
index 242d5a5..dcf0724 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.ASequenceI"], "jalview.datamodel.SequenceI", null, function () {\r
-Clazz.declareInterface (jalview.datamodel, "SequenceI", jalview.datamodel.ASequenceI);\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.ASequenceI"], "jalview.datamodel.SequenceI", null, function () {
+Clazz.declareInterface (jalview.datamodel, "SequenceI", jalview.datamodel.ASequenceI);
+});
index 54cb491..2069471 100644 (file)
@@ -1,64 +1,64 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["jalview.datamodel.BinaryNode", "java.awt.Color"], "jalview.datamodel.SequenceNode", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.dist = 0;\r
-this.count = 0;\r
-this.height = 0;\r
-this.ycount = 0;\r
-this.color = null;\r
-this.dummy = false;\r
-this.placeholder = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "SequenceNode", jalview.datamodel.BinaryNode);\r
-Clazz.prepareFields (c$, function () {\r
-this.color = java.awt.Color.black;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (val, parent, dist, name) {\r
-Clazz.superConstructor (this, jalview.datamodel.SequenceNode, [val, parent, name]);\r
-this.dist = dist;\r
-}, "~O,jalview.datamodel.SequenceNode,~N,~S");\r
-Clazz.makeConstructor (c$, \r
-function (val, parent, name, dist, bootstrap, dummy) {\r
-Clazz.superConstructor (this, jalview.datamodel.SequenceNode, [val, parent, name]);\r
-this.dist = dist;\r
-this.bootstrap = bootstrap;\r
-this.dummy = dummy;\r
-}, "~O,jalview.datamodel.SequenceNode,~S,~N,~N,~B");\r
-Clazz.defineMethod (c$, "isDummy", \r
-function () {\r
-return this.dummy;\r
-});\r
-Clazz.defineMethod (c$, "isPlaceholder", \r
-function () {\r
-return this.placeholder;\r
-});\r
-Clazz.defineMethod (c$, "setDummy", \r
-function (newstate) {\r
-var oldstate = this.dummy;\r
-this.dummy = newstate;\r
-return oldstate;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setPlaceholder", \r
-function (Placeholder) {\r
-this.placeholder = Placeholder;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "AscendTree", \r
-function () {\r
-var c = this;\r
-do {\r
-c = c.parent ();\r
-} while ((c != null) && c.dummy);\r
-return c;\r
-});\r
-Clazz.defineMethod (c$, "isSequenceLabel", \r
-function () {\r
-if (this.name != null && this.name.length > 0) {\r
-for (var c = 0, s = this.name.length; c < s; c++) {\r
-var q = this.name.charAt (c);\r
-if ('0' <= q && q <= '9') continue;\r
-return true;\r
-}\r
-}return false;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["jalview.datamodel.BinaryNode", "java.awt.Color"], "jalview.datamodel.SequenceNode", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.dist = 0;
+this.count = 0;
+this.height = 0;
+this.ycount = 0;
+this.color = null;
+this.dummy = false;
+this.placeholder = false;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SequenceNode", jalview.datamodel.BinaryNode);
+Clazz.prepareFields (c$, function () {
+this.color = java.awt.Color.black;
+});
+Clazz.makeConstructor (c$, 
+function (val, parent, dist, name) {
+Clazz.superConstructor (this, jalview.datamodel.SequenceNode, [val, parent, name]);
+this.dist = dist;
+}, "~O,jalview.datamodel.SequenceNode,~N,~S");
+Clazz.makeConstructor (c$, 
+function (val, parent, name, dist, bootstrap, dummy) {
+Clazz.superConstructor (this, jalview.datamodel.SequenceNode, [val, parent, name]);
+this.dist = dist;
+this.bootstrap = bootstrap;
+this.dummy = dummy;
+}, "~O,jalview.datamodel.SequenceNode,~S,~N,~N,~B");
+Clazz.defineMethod (c$, "isDummy", 
+function () {
+return this.dummy;
+});
+Clazz.defineMethod (c$, "isPlaceholder", 
+function () {
+return this.placeholder;
+});
+Clazz.defineMethod (c$, "setDummy", 
+function (newstate) {
+var oldstate = this.dummy;
+this.dummy = newstate;
+return oldstate;
+}, "~B");
+Clazz.defineMethod (c$, "setPlaceholder", 
+function (Placeholder) {
+this.placeholder = Placeholder;
+}, "~B");
+Clazz.defineMethod (c$, "AscendTree", 
+function () {
+var c = this;
+do {
+c = c.parent ();
+} while ((c != null) && c.dummy);
+return c;
+});
+Clazz.defineMethod (c$, "isSequenceLabel", 
+function () {
+if (this.name != null && this.name.length > 0) {
+for (var c = 0, s = this.name.length; c < s; c++) {
+var q = this.name.charAt (c);
+if ('0' <= q && q <= '9') continue;
+return true;
+}
+}return false;
+});
+});
index 0616692..549eae1 100644 (file)
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.isPlaceholder = false;\r
-this.sequence = null;\r
-this.coord = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "SequencePoint");\r
-Clazz.makeConstructor (c$, \r
-function (sequence, coord) {\r
-this.sequence = sequence;\r
-this.coord = coord;\r
-}, "jalview.datamodel.SequenceI,~A");\r
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.decorateAsClass (function () {
+this.isPlaceholder = false;
+this.sequence = null;
+this.coord = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "SequencePoint");
+Clazz.makeConstructor (c$, 
+function (sequence, coord) {
+this.sequence = sequence;
+this.coord = coord;
+}, "jalview.datamodel.SequenceI,~A");
index e21d3fc..cc11e43 100644 (file)
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (["java.util.HashMap"], "jalview.datamodel.StructureViewerModel", ["java.util.ArrayList"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.x = 0;\r
-this.y = 0;\r
-this.width = 0;\r
-this.height = 0;\r
-this.alignWithPanel = false;\r
-this.colourWithAlignPanel = false;\r
-this.colourByViewer = false;\r
-this.stateData = "";\r
-this.viewId = null;\r
-this.type = null;\r
-this.fileData = null;\r
-if (!Clazz.isClassDefined ("jalview.datamodel.StructureViewerModel.StructureData")) {\r
-jalview.datamodel.StructureViewerModel.$StructureViewerModel$StructureData$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "StructureViewerModel");\r
-Clazz.prepareFields (c$, function () {\r
-this.fileData =  new java.util.HashMap ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (x, y, width, height, alignWithPanel, colourWithAlignPanel, colourByViewer, viewId, type) {\r
-this.x = x;\r
-this.y = y;\r
-this.width = width;\r
-this.height = height;\r
-this.alignWithPanel = alignWithPanel;\r
-this.colourWithAlignPanel = colourWithAlignPanel;\r
-this.colourByViewer = colourByViewer;\r
-this.viewId = viewId;\r
-this.type = type;\r
-}, "~N,~N,~N,~N,~B,~B,~B,~S,~S");\r
-Clazz.defineMethod (c$, "getX", \r
-function () {\r
-return this.x;\r
-});\r
-Clazz.defineMethod (c$, "setX", \r
-function (x) {\r
-this.x = x;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getY", \r
-function () {\r
-return this.y;\r
-});\r
-Clazz.defineMethod (c$, "setY", \r
-function (y) {\r
-this.y = y;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getWidth", \r
-function () {\r
-return this.width;\r
-});\r
-Clazz.defineMethod (c$, "setWidth", \r
-function (width) {\r
-this.width = width;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getHeight", \r
-function () {\r
-return this.height;\r
-});\r
-Clazz.defineMethod (c$, "setHeight", \r
-function (height) {\r
-this.height = height;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "isAlignWithPanel", \r
-function () {\r
-return this.alignWithPanel;\r
-});\r
-Clazz.defineMethod (c$, "setAlignWithPanel", \r
-function (alignWithPanel) {\r
-this.alignWithPanel = alignWithPanel;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isColourWithAlignPanel", \r
-function () {\r
-return this.colourWithAlignPanel;\r
-});\r
-Clazz.defineMethod (c$, "setColourWithAlignPanel", \r
-function (colourWithAlignPanel) {\r
-this.colourWithAlignPanel = colourWithAlignPanel;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isColourByViewer", \r
-function () {\r
-return this.colourByViewer;\r
-});\r
-Clazz.defineMethod (c$, "setColourByViewer", \r
-function (colourByViewer) {\r
-this.colourByViewer = colourByViewer;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getStateData", \r
-function () {\r
-return this.stateData;\r
-});\r
-Clazz.defineMethod (c$, "setStateData", \r
-function (stateData) {\r
-this.stateData = stateData;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getFileData", \r
-function () {\r
-return this.fileData;\r
-});\r
-Clazz.defineMethod (c$, "setFileData", \r
-function (fileData) {\r
-this.fileData = fileData;\r
-}, "java.util.Map");\r
-Clazz.defineMethod (c$, "getViewId", \r
-function () {\r
-return this.viewId;\r
-});\r
-Clazz.defineMethod (c$, "getType", \r
-function () {\r
-return this.type;\r
-});\r
-c$.$StructureViewerModel$StructureData$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.filePath = null;\r
-this.pdbId = null;\r
-this.seqList = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel.StructureViewerModel, "StructureData");\r
-Clazz.makeConstructor (c$, \r
-function (a, b) {\r
-this.filePath = a;\r
-this.pdbId = b;\r
-this.seqList =  new java.util.ArrayList ();\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "getFilePath", \r
-function () {\r
-return this.filePath;\r
-});\r
-Clazz.defineMethod (c$, "setFilePath", \r
-function (a) {\r
-this.filePath = a;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getPdbId", \r
-function () {\r
-return this.pdbId;\r
-});\r
-Clazz.defineMethod (c$, "setPdbId", \r
-function (a) {\r
-this.pdbId = a;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getSeqList", \r
-function () {\r
-return this.seqList;\r
-});\r
-Clazz.defineMethod (c$, "setSeqList", \r
-function (a) {\r
-this.seqList = a;\r
-}, "java.util.List");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (["java.util.HashMap"], "jalview.datamodel.StructureViewerModel", ["java.util.ArrayList"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.x = 0;
+this.y = 0;
+this.width = 0;
+this.height = 0;
+this.alignWithPanel = false;
+this.colourWithAlignPanel = false;
+this.colourByViewer = false;
+this.stateData = "";
+this.viewId = null;
+this.type = null;
+this.fileData = null;
+if (!Clazz.isClassDefined ("jalview.datamodel.StructureViewerModel.StructureData")) {
+jalview.datamodel.StructureViewerModel.$StructureViewerModel$StructureData$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "StructureViewerModel");
+Clazz.prepareFields (c$, function () {
+this.fileData =  new java.util.HashMap ();
+});
+Clazz.makeConstructor (c$, 
+function (x, y, width, height, alignWithPanel, colourWithAlignPanel, colourByViewer, viewId, type) {
+this.x = x;
+this.y = y;
+this.width = width;
+this.height = height;
+this.alignWithPanel = alignWithPanel;
+this.colourWithAlignPanel = colourWithAlignPanel;
+this.colourByViewer = colourByViewer;
+this.viewId = viewId;
+this.type = type;
+}, "~N,~N,~N,~N,~B,~B,~B,~S,~S");
+Clazz.defineMethod (c$, "getX", 
+function () {
+return this.x;
+});
+Clazz.defineMethod (c$, "setX", 
+function (x) {
+this.x = x;
+}, "~N");
+Clazz.defineMethod (c$, "getY", 
+function () {
+return this.y;
+});
+Clazz.defineMethod (c$, "setY", 
+function (y) {
+this.y = y;
+}, "~N");
+Clazz.defineMethod (c$, "getWidth", 
+function () {
+return this.width;
+});
+Clazz.defineMethod (c$, "setWidth", 
+function (width) {
+this.width = width;
+}, "~N");
+Clazz.defineMethod (c$, "getHeight", 
+function () {
+return this.height;
+});
+Clazz.defineMethod (c$, "setHeight", 
+function (height) {
+this.height = height;
+}, "~N");
+Clazz.defineMethod (c$, "isAlignWithPanel", 
+function () {
+return this.alignWithPanel;
+});
+Clazz.defineMethod (c$, "setAlignWithPanel", 
+function (alignWithPanel) {
+this.alignWithPanel = alignWithPanel;
+}, "~B");
+Clazz.defineMethod (c$, "isColourWithAlignPanel", 
+function () {
+return this.colourWithAlignPanel;
+});
+Clazz.defineMethod (c$, "setColourWithAlignPanel", 
+function (colourWithAlignPanel) {
+this.colourWithAlignPanel = colourWithAlignPanel;
+}, "~B");
+Clazz.defineMethod (c$, "isColourByViewer", 
+function () {
+return this.colourByViewer;
+});
+Clazz.defineMethod (c$, "setColourByViewer", 
+function (colourByViewer) {
+this.colourByViewer = colourByViewer;
+}, "~B");
+Clazz.defineMethod (c$, "getStateData", 
+function () {
+return this.stateData;
+});
+Clazz.defineMethod (c$, "setStateData", 
+function (stateData) {
+this.stateData = stateData;
+}, "~S");
+Clazz.defineMethod (c$, "getFileData", 
+function () {
+return this.fileData;
+});
+Clazz.defineMethod (c$, "setFileData", 
+function (fileData) {
+this.fileData = fileData;
+}, "java.util.Map");
+Clazz.defineMethod (c$, "getViewId", 
+function () {
+return this.viewId;
+});
+Clazz.defineMethod (c$, "getType", 
+function () {
+return this.type;
+});
+c$.$StructureViewerModel$StructureData$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.filePath = null;
+this.pdbId = null;
+this.seqList = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel.StructureViewerModel, "StructureData");
+Clazz.makeConstructor (c$, 
+function (a, b) {
+this.filePath = a;
+this.pdbId = b;
+this.seqList =  new java.util.ArrayList ();
+}, "~S,~S");
+Clazz.defineMethod (c$, "getFilePath", 
+function () {
+return this.filePath;
+});
+Clazz.defineMethod (c$, "setFilePath", 
+function (a) {
+this.filePath = a;
+}, "~S");
+Clazz.defineMethod (c$, "getPdbId", 
+function () {
+return this.pdbId;
+});
+Clazz.defineMethod (c$, "setPdbId", 
+function (a) {
+this.pdbId = a;
+}, "~S");
+Clazz.defineMethod (c$, "getSeqList", 
+function () {
+return this.seqList;
+});
+Clazz.defineMethod (c$, "setSeqList", 
+function (a) {
+this.seqList = a;
+}, "java.util.List");
+c$ = Clazz.p0p ();
+};
+});
index 24b3ce2..5b80f48 100644 (file)
@@ -1,58 +1,58 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.sequence = null;\r
-this.name = null;\r
-this.accession = null;\r
-this.feature = null;\r
-this.dbrefs = null;\r
-this.protName = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "UniprotEntry");\r
-Clazz.defineMethod (c$, "setAccession", \r
-function (items) {\r
-this.accession = items;\r
-}, "java.util.Vector");\r
-Clazz.defineMethod (c$, "setFeature", \r
-function (items) {\r
-this.feature = items;\r
-}, "java.util.Vector");\r
-Clazz.defineMethod (c$, "getFeature", \r
-function () {\r
-return this.feature;\r
-});\r
-Clazz.defineMethod (c$, "getAccession", \r
-function () {\r
-return this.accession;\r
-});\r
-Clazz.defineMethod (c$, "setProtein", \r
-function (names) {\r
-this.protName = names;\r
-}, "jalview.datamodel.UniprotProteinName");\r
-Clazz.defineMethod (c$, "getProtein", \r
-function () {\r
-return this.protName;\r
-});\r
-Clazz.defineMethod (c$, "setName", \r
-function (na) {\r
-this.name = na;\r
-}, "java.util.Vector");\r
-Clazz.defineMethod (c$, "getName", \r
-function () {\r
-return this.name;\r
-});\r
-Clazz.defineMethod (c$, "getUniprotSequence", \r
-function () {\r
-return this.sequence;\r
-});\r
-Clazz.defineMethod (c$, "setUniprotSequence", \r
-function (seq) {\r
-this.sequence = seq;\r
-}, "jalview.datamodel.UniprotSequence");\r
-Clazz.defineMethod (c$, "getDbReference", \r
-function () {\r
-return this.dbrefs;\r
-});\r
-Clazz.defineMethod (c$, "setDbReference", \r
-function (dbref) {\r
-this.dbrefs = dbref;\r
-}, "java.util.Vector");\r
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.decorateAsClass (function () {
+this.sequence = null;
+this.name = null;
+this.accession = null;
+this.feature = null;
+this.dbrefs = null;
+this.protName = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "UniprotEntry");
+Clazz.defineMethod (c$, "setAccession", 
+function (items) {
+this.accession = items;
+}, "java.util.Vector");
+Clazz.defineMethod (c$, "setFeature", 
+function (items) {
+this.feature = items;
+}, "java.util.Vector");
+Clazz.defineMethod (c$, "getFeature", 
+function () {
+return this.feature;
+});
+Clazz.defineMethod (c$, "getAccession", 
+function () {
+return this.accession;
+});
+Clazz.defineMethod (c$, "setProtein", 
+function (names) {
+this.protName = names;
+}, "jalview.datamodel.UniprotProteinName");
+Clazz.defineMethod (c$, "getProtein", 
+function () {
+return this.protName;
+});
+Clazz.defineMethod (c$, "setName", 
+function (na) {
+this.name = na;
+}, "java.util.Vector");
+Clazz.defineMethod (c$, "getName", 
+function () {
+return this.name;
+});
+Clazz.defineMethod (c$, "getUniprotSequence", 
+function () {
+return this.sequence;
+});
+Clazz.defineMethod (c$, "setUniprotSequence", 
+function (seq) {
+this.sequence = seq;
+}, "jalview.datamodel.UniprotSequence");
+Clazz.defineMethod (c$, "getDbReference", 
+function () {
+return this.dbrefs;
+});
+Clazz.defineMethod (c$, "setDbReference", 
+function (dbref) {
+this.dbrefs = dbref;
+}, "java.util.Vector");
index f779f79..e0f80f8 100644 (file)
@@ -1,13 +1,13 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this._items = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "UniprotFile");\r
-Clazz.defineMethod (c$, "setUniprotEntries", \r
-function (items) {\r
-this._items = items;\r
-}, "java.util.Vector");\r
-Clazz.defineMethod (c$, "getUniprotEntries", \r
-function () {\r
-return this._items;\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.decorateAsClass (function () {
+this._items = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "UniprotFile");
+Clazz.defineMethod (c$, "setUniprotEntries", 
+function (items) {
+this._items = items;
+}, "java.util.Vector");
+Clazz.defineMethod (c$, "getUniprotEntries", 
+function () {
+return this._items;
+});
index fd4ce5b..931e26c 100644 (file)
@@ -1,13 +1,13 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.names = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "UniprotProteinName");\r
-Clazz.defineMethod (c$, "setName", \r
-function (names) {\r
-this.names = names;\r
-}, "java.util.Vector");\r
-Clazz.defineMethod (c$, "getName", \r
-function () {\r
-return this.names;\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+c$ = Clazz.decorateAsClass (function () {
+this.names = null;
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "UniprotProteinName");
+Clazz.defineMethod (c$, "setName", 
+function (names) {
+this.names = names;
+}, "java.util.Vector");
+Clazz.defineMethod (c$, "getName", 
+function () {
+return this.names;
+});
index 039f1db..d6ae549 100644 (file)
@@ -1,21 +1,21 @@
-Clazz.declarePackage ("jalview.datamodel");\r
-Clazz.load (null, "jalview.datamodel.UniprotSequence", ["java.lang.StringBuilder"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this._content = "";\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.datamodel, "UniprotSequence");\r
-Clazz.defineMethod (c$, "setContent", \r
-function (seq) {\r
-if (seq != null) {\r
-var sb =  new StringBuilder (seq.length);\r
-for (var i = 0; i < seq.length; i++) {\r
-if (seq.charAt (i) != ' ') {\r
-sb.append (seq.charAt (i));\r
-}}\r
-this._content = sb.toString ();\r
-}}, "~S");\r
-Clazz.defineMethod (c$, "getContent", \r
-function () {\r
-return this._content;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.datamodel");
+Clazz.load (null, "jalview.datamodel.UniprotSequence", ["java.lang.StringBuilder"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this._content = "";
+Clazz.instantialize (this, arguments);
+}, jalview.datamodel, "UniprotSequence");
+Clazz.defineMethod (c$, "setContent", 
+function (seq) {
+if (seq != null) {
+var sb =  new StringBuilder (seq.length);
+for (var i = 0; i < seq.length; i++) {
+if (seq.charAt (i) != ' ') {
+sb.append (seq.charAt (i));
+}}
+this._content = sb.toString ();
+}}, "~S");
+Clazz.defineMethod (c$, "getContent", 
+function () {
+return this._content;
+});
+});
index 5debe8d..36f4b3f 100644 (file)
Binary files a/bin/jalview/ext/jmol/JmolCommands.class and b/bin/jalview/ext/jmol/JmolCommands.class differ
index 495572c..b08a4e3 100644 (file)
@@ -1,69 +1,69 @@
-Clazz.declarePackage ("jalview.ext.jmol");\r
-Clazz.load (null, "jalview.ext.jmol.JmolCommands", ["jalview.structure.StructureMappingcommandSet", "jalview.util.Comparison", "java.lang.StringBuffer", "java.util.ArrayList"], function () {\r
-c$ = Clazz.declareType (jalview.ext.jmol, "JmolCommands");\r
-c$.getColourBySequenceCommand = Clazz.defineMethod (c$, "getColourBySequenceCommand", \r
-function (ssm, files, sequence, sr, fr, alignment) {\r
-var cset =  new java.util.ArrayList ();\r
-for (var pdbfnum = 0; pdbfnum < files.length; pdbfnum++) {\r
-var mapping = ssm.getMapping (files[pdbfnum]);\r
-var command =  new StringBuffer ();\r
-var smc;\r
-var str =  new java.util.ArrayList ();\r
-if (mapping == null || mapping.length < 1) {\r
-continue;\r
-}var lastPos = -1;\r
-for (var s = 0; s < sequence[pdbfnum].length; s++) {\r
-for (var sp, m = 0; m < mapping.length; m++) {\r
-if (mapping[m].getSequence () === sequence[pdbfnum][s] && (sp = alignment.findIndex (sequence[pdbfnum][s])) > -1) {\r
-var asp = alignment.getSequenceAt (sp);\r
-for (var r = 0; r < asp.getLength (); r++) {\r
-if (jalview.util.Comparison.isGap (asp.getCharAt (r))) {\r
-continue;\r
-}var pos = mapping[m].getPDBResNum (asp.findPosition (r));\r
-if (pos < 1 || pos == lastPos) {\r
-continue;\r
-}lastPos = pos;\r
-var col = sr.getResidueBoxColour (sequence[pdbfnum][s], r);\r
-if (fr != null) {\r
-col = fr.findFeatureColour (col, sequence[pdbfnum][s], r);\r
-}var newSelcom = (mapping[m].getChain () !== " " ? ":" + mapping[m].getChain () : "") + "/" + (pdbfnum + 1) + ".1" + ";color[" + col.getRed () + "," + col.getGreen () + "," + col.getBlue () + "]";\r
-if (command.length () > newSelcom.length && command.substring (command.length () - newSelcom.length).equals (newSelcom)) {\r
-command = jalview.ext.jmol.JmolCommands.condenseCommand (command, pos);\r
-continue;\r
-}command.append (";");\r
-if (command.length () > 51200) {\r
-str.add (command.toString ());\r
-command.setLength (0);\r
-}command.append ("select " + pos);\r
-command.append (newSelcom);\r
-}\r
-break;\r
-}}\r
-}\r
-{\r
-str.add (command.toString ());\r
-command.setLength (0);\r
-}cset.add ( new jalview.structure.StructureMappingcommandSet (jalview.ext.jmol.JmolCommands, files[pdbfnum], str.toArray ( new Array (str.size ()))));\r
-}\r
-return cset.toArray ( new Array (cset.size ()));\r
-}, "jalview.structure.StructureSelectionManager,~A,~A,jalview.api.SequenceRenderer,jalview.api.FeatureRenderer,jalview.datamodel.AlignmentI");\r
-c$.condenseCommand = Clazz.defineMethod (c$, "condenseCommand", \r
-function (command, pos) {\r
-var p = command.length ();\r
-var q = p;\r
-do {\r
-p -= 6;\r
-if (p < 1) {\r
-p = 0;\r
-};} while ((q = command.indexOf ("select", p)) == -1 && p > 0);\r
-var sb =  new StringBuffer (command.substring (0, q + 7));\r
-command = command.$delete (0, q + 7);\r
-var start;\r
-if (command.indexOf ("-") > -1) {\r
-start = command.substring (0, command.indexOf ("-"));\r
-} else {\r
-start = command.substring (0, command.indexOf (":"));\r
-}sb.append (start + "-" + pos + command.substring (command.indexOf (":")));\r
-return sb;\r
-}, "StringBuffer,~N");\r
-});\r
+Clazz.declarePackage ("jalview.ext.jmol");
+Clazz.load (null, "jalview.ext.jmol.JmolCommands", ["jalview.structure.StructureMappingcommandSet", "jalview.util.Comparison", "java.lang.StringBuffer", "java.util.ArrayList"], function () {
+c$ = Clazz.declareType (jalview.ext.jmol, "JmolCommands");
+c$.getColourBySequenceCommand = Clazz.defineMethod (c$, "getColourBySequenceCommand", 
+function (ssm, files, sequence, sr, fr, alignment) {
+var cset =  new java.util.ArrayList ();
+for (var pdbfnum = 0; pdbfnum < files.length; pdbfnum++) {
+var mapping = ssm.getMapping (files[pdbfnum]);
+var command =  new StringBuffer ();
+var smc;
+var str =  new java.util.ArrayList ();
+if (mapping == null || mapping.length < 1) {
+continue;
+}var lastPos = -1;
+for (var s = 0; s < sequence[pdbfnum].length; s++) {
+for (var sp, m = 0; m < mapping.length; m++) {
+if (mapping[m].getSequence () === sequence[pdbfnum][s] && (sp = alignment.findIndex (sequence[pdbfnum][s])) > -1) {
+var asp = alignment.getSequenceAt (sp);
+for (var r = 0; r < asp.getLength (); r++) {
+if (jalview.util.Comparison.isGap (asp.getCharAt (r))) {
+continue;
+}var pos = mapping[m].getPDBResNum (asp.findPosition (r));
+if (pos < 1 || pos == lastPos) {
+continue;
+}lastPos = pos;
+var col = sr.getResidueBoxColour (sequence[pdbfnum][s], r);
+if (fr != null) {
+col = fr.findFeatureColour (col, sequence[pdbfnum][s], r);
+}var newSelcom = (mapping[m].getChain () !== " " ? ":" + mapping[m].getChain () : "") + "/" + (pdbfnum + 1) + ".1" + ";color[" + col.getRed () + "," + col.getGreen () + "," + col.getBlue () + "]";
+if (command.length () > newSelcom.length && command.substring (command.length () - newSelcom.length).equals (newSelcom)) {
+command = jalview.ext.jmol.JmolCommands.condenseCommand (command, pos);
+continue;
+}command.append (";");
+if (command.length () > 51200) {
+str.add (command.toString ());
+command.setLength (0);
+}command.append ("select " + pos);
+command.append (newSelcom);
+}
+break;
+}}
+}
+{
+str.add (command.toString ());
+command.setLength (0);
+}cset.add ( new jalview.structure.StructureMappingcommandSet (jalview.ext.jmol.JmolCommands, files[pdbfnum], str.toArray ( new Array (str.size ()))));
+}
+return cset.toArray ( new Array (cset.size ()));
+}, "jalview.structure.StructureSelectionManager,~A,~A,jalview.api.SequenceRenderer,jalview.api.FeatureRenderer,jalview.datamodel.AlignmentI");
+c$.condenseCommand = Clazz.defineMethod (c$, "condenseCommand", 
+function (command, pos) {
+var p = command.length ();
+var q = p;
+do {
+p -= 6;
+if (p < 1) {
+p = 0;
+};} while ((q = command.indexOf ("select", p)) == -1 && p > 0);
+var sb =  new StringBuffer (command.substring (0, q + 7));
+command = command.$delete (0, q + 7);
+var start;
+if (command.indexOf ("-") > -1) {
+start = command.substring (0, command.indexOf ("-"));
+} else {
+start = command.substring (0, command.indexOf (":"));
+}sb.append (start + "-" + pos + command.substring (command.indexOf (":")));
+return sb;
+}, "StringBuffer,~N");
+});
index f8bdf18..61bd3e7 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.ext.varna");\r
-Clazz.load (["jalview.api.StructureSelectionManagerProvider", "jalview.structure.StructureListener", "jalview.structures.models.SequenceStructureBindingModel", "java.awt.event.ComponentListener"], "jalview.ext.varna.JalviewVarnaBinding", null, function () {\r
-c$ = Clazz.declareType (jalview.ext.varna, "JalviewVarnaBinding", jalview.structures.models.SequenceStructureBindingModel, [jalview.structure.StructureListener, java.awt.event.ComponentListener, jalview.api.StructureSelectionManagerProvider]);\r
-});\r
+Clazz.declarePackage ("jalview.ext.varna");
+Clazz.load (["jalview.api.StructureSelectionManagerProvider", "jalview.structure.StructureListener", "jalview.structures.models.SequenceStructureBindingModel", "java.awt.event.ComponentListener"], "jalview.ext.varna.JalviewVarnaBinding", null, function () {
+c$ = Clazz.declareType (jalview.ext.varna, "JalviewVarnaBinding", jalview.structures.models.SequenceStructureBindingModel, [jalview.structure.StructureListener, java.awt.event.ComponentListener, jalview.api.StructureSelectionManagerProvider]);
+});
index 9916e8e..f125256 100644 (file)
@@ -1,17 +1,17 @@
-Clazz.declarePackage ("jalview.ext.varna");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.title = null;\r
-this.ann = null;\r
-this.seq = null;\r
-this.gapped = false;\r
-this.rna = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.ext.varna, "RnaModel");\r
-Clazz.makeConstructor (c$, \r
-function (t, aa, s, r, g) {\r
-this.title = t;\r
-this.ann = aa;\r
-this.seq = s;\r
-this.rna = r;\r
-this.gapped = g;\r
-}, "~S,jalview.datamodel.AlignmentAnnotation,jalview.datamodel.SequenceI,fr.orsay.lri.varna.models.rna.RNA,~B");\r
+Clazz.declarePackage ("jalview.ext.varna");
+c$ = Clazz.decorateAsClass (function () {
+this.title = null;
+this.ann = null;
+this.seq = null;
+this.gapped = false;
+this.rna = null;
+Clazz.instantialize (this, arguments);
+}, jalview.ext.varna, "RnaModel");
+Clazz.makeConstructor (c$, 
+function (t, aa, s, r, g) {
+this.title = t;
+this.ann = aa;
+this.seq = s;
+this.rna = r;
+this.gapped = g;
+}, "~S,jalview.datamodel.AlignmentAnnotation,jalview.datamodel.SequenceI,fr.orsay.lri.varna.models.rna.RNA,~B");
index 7a0d88f..27a2330 100644 (file)
Binary files a/bin/jalview/ext/varna/VarnaCommands.class and b/bin/jalview/ext/varna/VarnaCommands.class differ
index b609d09..6562f80 100644 (file)
@@ -1,66 +1,66 @@
-Clazz.declarePackage ("jalview.ext.varna");\r
-Clazz.load (null, "jalview.ext.varna.VarnaCommands", ["jalview.util.Comparison", "java.lang.StringBuffer", "java.util.ArrayList"], function () {\r
-c$ = Clazz.declareType (jalview.ext.varna, "VarnaCommands");\r
-c$.getColourBySequenceCommand = Clazz.defineMethod (c$, "getColourBySequenceCommand", \r
-function (ssm, files, sequence, sr, fr, alignment) {\r
-var str =  new java.util.ArrayList ();\r
-var command =  new StringBuffer ();\r
-for (var pdbfnum = 0; pdbfnum < files.length; pdbfnum++) {\r
-var mapping = ssm.getMapping (files[pdbfnum]);\r
-if (mapping == null || mapping.length < 1) {\r
-continue;\r
-}var lastPos = -1;\r
-for (var s = 0; s < sequence[pdbfnum].length; s++) {\r
-for (var sp, m = 0; m < mapping.length; m++) {\r
-if (mapping[m].getSequence () === sequence[pdbfnum][s] && (sp = alignment.findIndex (sequence[pdbfnum][s])) > -1) {\r
-var asp = alignment.getSequenceAt (sp);\r
-for (var r = 0; r < asp.getLength (); r++) {\r
-if (jalview.util.Comparison.isGap (asp.getCharAt (r))) {\r
-continue;\r
-}var pos = mapping[m].getPDBResNum (asp.findPosition (r));\r
-if (pos < 1 || pos == lastPos) {\r
-continue;\r
-}lastPos = pos;\r
-var col = sr.getResidueBoxColour (sequence[pdbfnum][s], r);\r
-if (fr != null) {\r
-col = fr.findFeatureColour (col, sequence[pdbfnum][s], r);\r
-}var newSelcom = (mapping[m].getChain () !== " " ? ":" + mapping[m].getChain () : "") + "/" + (pdbfnum + 1) + ".1" + ";color[" + col.getRed () + "," + col.getGreen () + "," + col.getBlue () + "]";\r
-if (command.length () > newSelcom.length && command.substring (command.length () - newSelcom.length).equals (newSelcom)) {\r
-command = jalview.ext.varna.VarnaCommands.condenseCommand (command, pos);\r
-continue;\r
-}command.append (";");\r
-if (command.length () > 51200) {\r
-str.add (command.toString ());\r
-command.setLength (0);\r
-}command.append ("select " + pos);\r
-command.append (newSelcom);\r
-}\r
-break;\r
-}}\r
-}\r
-}\r
-{\r
-str.add (command.toString ());\r
-command.setLength (0);\r
-}return str.toArray ( new Array (str.size ()));\r
-}, "jalview.structure.StructureSelectionManager,~A,~A,jalview.api.SequenceRenderer,jalview.api.FeatureRenderer,jalview.datamodel.AlignmentI");\r
-c$.condenseCommand = Clazz.defineMethod (c$, "condenseCommand", \r
-function (command, pos) {\r
-var p = command.length ();\r
-var q = p;\r
-do {\r
-p -= 6;\r
-if (p < 1) {\r
-p = 0;\r
-};} while ((q = command.indexOf ("select", p)) == -1 && p > 0);\r
-var sb =  new StringBuffer (command.substring (0, q + 7));\r
-command = command.$delete (0, q + 7);\r
-var start;\r
-if (command.indexOf ("-") > -1) {\r
-start = command.substring (0, command.indexOf ("-"));\r
-} else {\r
-start = command.substring (0, command.indexOf (":"));\r
-}sb.append (start + "-" + pos + command.substring (command.indexOf (":")));\r
-return sb;\r
-}, "StringBuffer,~N");\r
-});\r
+Clazz.declarePackage ("jalview.ext.varna");
+Clazz.load (null, "jalview.ext.varna.VarnaCommands", ["jalview.util.Comparison", "java.lang.StringBuffer", "java.util.ArrayList"], function () {
+c$ = Clazz.declareType (jalview.ext.varna, "VarnaCommands");
+c$.getColourBySequenceCommand = Clazz.defineMethod (c$, "getColourBySequenceCommand", 
+function (ssm, files, sequence, sr, fr, alignment) {
+var str =  new java.util.ArrayList ();
+var command =  new StringBuffer ();
+for (var pdbfnum = 0; pdbfnum < files.length; pdbfnum++) {
+var mapping = ssm.getMapping (files[pdbfnum]);
+if (mapping == null || mapping.length < 1) {
+continue;
+}var lastPos = -1;
+for (var s = 0; s < sequence[pdbfnum].length; s++) {
+for (var sp, m = 0; m < mapping.length; m++) {
+if (mapping[m].getSequence () === sequence[pdbfnum][s] && (sp = alignment.findIndex (sequence[pdbfnum][s])) > -1) {
+var asp = alignment.getSequenceAt (sp);
+for (var r = 0; r < asp.getLength (); r++) {
+if (jalview.util.Comparison.isGap (asp.getCharAt (r))) {
+continue;
+}var pos = mapping[m].getPDBResNum (asp.findPosition (r));
+if (pos < 1 || pos == lastPos) {
+continue;
+}lastPos = pos;
+var col = sr.getResidueBoxColour (sequence[pdbfnum][s], r);
+if (fr != null) {
+col = fr.findFeatureColour (col, sequence[pdbfnum][s], r);
+}var newSelcom = (mapping[m].getChain () !== " " ? ":" + mapping[m].getChain () : "") + "/" + (pdbfnum + 1) + ".1" + ";color[" + col.getRed () + "," + col.getGreen () + "," + col.getBlue () + "]";
+if (command.length () > newSelcom.length && command.substring (command.length () - newSelcom.length).equals (newSelcom)) {
+command = jalview.ext.varna.VarnaCommands.condenseCommand (command, pos);
+continue;
+}command.append (";");
+if (command.length () > 51200) {
+str.add (command.toString ());
+command.setLength (0);
+}command.append ("select " + pos);
+command.append (newSelcom);
+}
+break;
+}}
+}
+}
+{
+str.add (command.toString ());
+command.setLength (0);
+}return str.toArray ( new Array (str.size ()));
+}, "jalview.structure.StructureSelectionManager,~A,~A,jalview.api.SequenceRenderer,jalview.api.FeatureRenderer,jalview.datamodel.AlignmentI");
+c$.condenseCommand = Clazz.defineMethod (c$, "condenseCommand", 
+function (command, pos) {
+var p = command.length ();
+var q = p;
+do {
+p -= 6;
+if (p < 1) {
+p = 0;
+};} while ((q = command.indexOf ("select", p)) == -1 && p > 0);
+var sb =  new StringBuffer (command.substring (0, q + 7));
+command = command.$delete (0, q + 7);
+var start;
+if (command.indexOf ("-") > -1) {
+start = command.substring (0, command.indexOf ("-"));
+} else {
+start = command.substring (0, command.indexOf (":"));
+}sb.append (start + "-" + pos + command.substring (command.indexOf (":")));
+return sb;
+}, "StringBuffer,~N");
+});
index f3247de..142c507 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (["jalview.io.FileParse"], "jalview.io.AlignFile", ["jalview.datamodel.Sequence", "jalview.util.MessageManager", "java.io.IOException", "java.lang.Error", "java.util.ArrayList", "$.Hashtable", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.noSeqs = 0;\r
-this.maxLength = 0;\r
-this.seqs = null;\r
-this.annotations = null;\r
-this.seqGroups = null;\r
-this.properties = null;\r
-this.start = 0;\r
-this.end = 0;\r
-this.jvSuffix = true;\r
-this.parseCalled = false;\r
-this.newickStrings = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io, "AlignFile", jalview.io.FileParse);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.io.AlignFile, []);\r
-this.initData ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (inFile, type) {\r
-this.construct (true, inFile, type);\r
-}, "~S,~S");\r
-Clazz.makeConstructor (c$, \r
-function (parseImmediately, inFile, type) {\r
-Clazz.superConstructor (this, jalview.io.AlignFile, [inFile, type]);\r
-this.initData ();\r
-if (parseImmediately) {\r
-this.doParse ();\r
-}}, "~B,~S,~S");\r
-Clazz.makeConstructor (c$, \r
-function (source) {\r
-this.construct (true, source);\r
-}, "jalview.io.FileParse");\r
-Clazz.makeConstructor (c$, \r
-function (parseImmediately, source) {\r
-Clazz.superConstructor (this, jalview.io.AlignFile, [source]);\r
-this.initData ();\r
-if (parseImmediately) {\r
-this.doParse ();\r
-}}, "~B,jalview.io.FileParse");\r
-Clazz.defineMethod (c$, "doParse", \r
-function () {\r
-if (this.parseCalled) {\r
-throw  new java.io.IOException ("Implementation error: Parser called twice for same data.\nNeed to call initData() again before parsing can be reattempted.");\r
-}this.parseCalled = true;\r
-this.parse ();\r
-for (var i = 0, c = this.seqs.size (); i < c; i++) {\r
-this.seqs.get (i).setIndex (i);\r
-}\r
-});\r
-Clazz.defineMethod (c$, "getSeqs", \r
-function () {\r
-return this.seqs;\r
-});\r
-Clazz.defineMethod (c$, "getSeqGroups", \r
-function () {\r
-return this.seqGroups;\r
-});\r
-Clazz.defineMethod (c$, "getSeqsAsArray", \r
-function () {\r
-var s =  new Array (this.seqs.size ());\r
-for (var i = 0; i < this.seqs.size (); i++) {\r
-s[i] = this.seqs.elementAt (i);\r
-}\r
-return s;\r
-});\r
-Clazz.defineMethod (c$, "addAnnotations", \r
-function (al) {\r
-this.addProperties (al);\r
-for (var i = 0; i < this.annotations.size (); i++) {\r
-var an = this.annotations.elementAt (i);\r
-an.validateRangeAndDisplay ();\r
-al.addAnnotation (an);\r
-}\r
-}, "jalview.datamodel.AlignmentI");\r
-Clazz.defineMethod (c$, "addSeqGroups", \r
-function (al) {\r
-this.seqGroups = al.getGroups ();\r
-}, "jalview.datamodel.AlignmentI");\r
-Clazz.defineMethod (c$, "addProperties", \r
-function (al) {\r
-if (this.properties != null && this.properties.size () > 0) {\r
-var keys = this.properties.keys ();\r
-var vals = this.properties.elements ();\r
-while (keys.hasMoreElements ()) {\r
-al.setProperty (keys.nextElement (), vals.nextElement ());\r
-}\r
-}}, "jalview.datamodel.AlignmentI");\r
-Clazz.defineMethod (c$, "setAlignmentProperty", \r
-function (key, value) {\r
-if (key == null) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_cannot_have_null_alignment"));\r
-}if (value == null) {\r
-return;\r
-}if (this.properties == null) {\r
-this.properties =  new java.util.Hashtable ();\r
-}this.properties.put (key, value);\r
-}, "~O,~O");\r
-Clazz.defineMethod (c$, "getAlignmentProperty", \r
-function (key) {\r
-if (this.properties != null && key != null) {\r
-return this.properties.get (key);\r
-}return null;\r
-}, "~O");\r
-Clazz.defineMethod (c$, "initData", \r
-function () {\r
-this.seqs =  new java.util.Vector ();\r
-this.annotations =  new java.util.Vector ();\r
-this.seqGroups =  new java.util.ArrayList ();\r
-this.parseCalled = false;\r
-});\r
-Clazz.defineMethod (c$, "setSeqs", \r
-function (s) {\r
-this.seqs =  new java.util.Vector ();\r
-for (var i = 0; i < s.length; i++) {\r
-this.seqs.addElement (s[i]);\r
-}\r
-}, "~A");\r
-Clazz.defineMethod (c$, "addJVSuffix", \r
-function (b) {\r
-this.jvSuffix = b;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "parseId", \r
-function (id) {\r
-var seq = null;\r
-id = id.trim ();\r
-var space = id.indexOf (" ");\r
-if (space > -1) {\r
-seq =  new jalview.datamodel.Sequence (id.substring (0, space), "");\r
-seq.setDescription (id.substring (space + 1));\r
-} else {\r
-seq =  new jalview.datamodel.Sequence (id, "");\r
-}return seq;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "printId", \r
-function (seq) {\r
-return seq.getDisplayId (this.jvSuffix);\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "addNewickTree", \r
-function (treeName, newickString) {\r
-if (this.newickStrings == null) {\r
-this.newickStrings =  new java.util.Vector ();\r
-}this.newickStrings.addElement ( Clazz.newArray (-1, [treeName, newickString]));\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "getTreeCount", \r
-function () {\r
-return this.newickStrings == null ? 0 : this.newickStrings.size ();\r
-});\r
-Clazz.defineMethod (c$, "addGroups", \r
-function (al) {\r
-for (var sg, $sg = this.getSeqGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-al.addGroup (sg);\r
-}\r
-}, "jalview.datamodel.AlignmentI");\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (["jalview.io.FileParse"], "jalview.io.AlignFile", ["jalview.datamodel.Sequence", "jalview.util.MessageManager", "java.io.IOException", "java.lang.Error", "java.util.ArrayList", "$.Hashtable", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.noSeqs = 0;
+this.maxLength = 0;
+this.seqs = null;
+this.annotations = null;
+this.seqGroups = null;
+this.properties = null;
+this.start = 0;
+this.end = 0;
+this.jvSuffix = true;
+this.parseCalled = false;
+this.newickStrings = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io, "AlignFile", jalview.io.FileParse);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.io.AlignFile, []);
+this.initData ();
+});
+Clazz.makeConstructor (c$, 
+function (inFile, type) {
+this.construct (true, inFile, type);
+}, "~S,~S");
+Clazz.makeConstructor (c$, 
+function (parseImmediately, inFile, type) {
+Clazz.superConstructor (this, jalview.io.AlignFile, [inFile, type]);
+this.initData ();
+if (parseImmediately) {
+this.doParse ();
+}}, "~B,~S,~S");
+Clazz.makeConstructor (c$, 
+function (source) {
+this.construct (true, source);
+}, "jalview.io.FileParse");
+Clazz.makeConstructor (c$, 
+function (parseImmediately, source) {
+Clazz.superConstructor (this, jalview.io.AlignFile, [source]);
+this.initData ();
+if (parseImmediately) {
+this.doParse ();
+}}, "~B,jalview.io.FileParse");
+Clazz.defineMethod (c$, "doParse", 
+function () {
+if (this.parseCalled) {
+throw  new java.io.IOException ("Implementation error: Parser called twice for same data.\nNeed to call initData() again before parsing can be reattempted.");
+}this.parseCalled = true;
+this.parse ();
+for (var i = 0, c = this.seqs.size (); i < c; i++) {
+this.seqs.get (i).setIndex (i);
+}
+});
+Clazz.defineMethod (c$, "getSeqs", 
+function () {
+return this.seqs;
+});
+Clazz.defineMethod (c$, "getSeqGroups", 
+function () {
+return this.seqGroups;
+});
+Clazz.defineMethod (c$, "getSeqsAsArray", 
+function () {
+var s =  new Array (this.seqs.size ());
+for (var i = 0; i < this.seqs.size (); i++) {
+s[i] = this.seqs.elementAt (i);
+}
+return s;
+});
+Clazz.defineMethod (c$, "addAnnotations", 
+function (al) {
+this.addProperties (al);
+for (var i = 0; i < this.annotations.size (); i++) {
+var an = this.annotations.elementAt (i);
+an.validateRangeAndDisplay ();
+al.addAnnotation (an);
+}
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "addSeqGroups", 
+function (al) {
+this.seqGroups = al.getGroups ();
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "addProperties", 
+function (al) {
+if (this.properties != null && this.properties.size () > 0) {
+var keys = this.properties.keys ();
+var vals = this.properties.elements ();
+while (keys.hasMoreElements ()) {
+al.setProperty (keys.nextElement (), vals.nextElement ());
+}
+}}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "setAlignmentProperty", 
+function (key, value) {
+if (key == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_cannot_have_null_alignment"));
+}if (value == null) {
+return;
+}if (this.properties == null) {
+this.properties =  new java.util.Hashtable ();
+}this.properties.put (key, value);
+}, "~O,~O");
+Clazz.defineMethod (c$, "getAlignmentProperty", 
+function (key) {
+if (this.properties != null && key != null) {
+return this.properties.get (key);
+}return null;
+}, "~O");
+Clazz.defineMethod (c$, "initData", 
+function () {
+this.seqs =  new java.util.Vector ();
+this.annotations =  new java.util.Vector ();
+this.seqGroups =  new java.util.ArrayList ();
+this.parseCalled = false;
+});
+Clazz.defineMethod (c$, "setSeqs", 
+function (s) {
+this.seqs =  new java.util.Vector ();
+for (var i = 0; i < s.length; i++) {
+this.seqs.addElement (s[i]);
+}
+}, "~A");
+Clazz.defineMethod (c$, "addJVSuffix", 
+function (b) {
+this.jvSuffix = b;
+}, "~B");
+Clazz.defineMethod (c$, "parseId", 
+function (id) {
+var seq = null;
+id = id.trim ();
+var space = id.indexOf (" ");
+if (space > -1) {
+seq =  new jalview.datamodel.Sequence (id.substring (0, space), "");
+seq.setDescription (id.substring (space + 1));
+} else {
+seq =  new jalview.datamodel.Sequence (id, "");
+}return seq;
+}, "~S");
+Clazz.defineMethod (c$, "printId", 
+function (seq) {
+return seq.getDisplayId (this.jvSuffix);
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "addNewickTree", 
+function (treeName, newickString) {
+if (this.newickStrings == null) {
+this.newickStrings =  new java.util.Vector ();
+}this.newickStrings.addElement ( Clazz.newArray (-1, [treeName, newickString]));
+}, "~S,~S");
+Clazz.defineMethod (c$, "getTreeCount", 
+function () {
+return this.newickStrings == null ? 0 : this.newickStrings.size ();
+});
+Clazz.defineMethod (c$, "addGroups", 
+function (al) {
+for (var sg, $sg = this.getSeqGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+al.addGroup (sg);
+}
+}, "jalview.datamodel.AlignmentI");
+});
index 0092589..6030bea 100644 (file)
@@ -1,78 +1,78 @@
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (null, "jalview.io.AlignmentProperties", ["java.lang.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.alignment = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io, "AlignmentProperties");\r
-Clazz.makeConstructor (c$, \r
-function (alignment) {\r
-this.alignment = alignment;\r
-}, "jalview.datamodel.AlignmentI");\r
-Clazz.defineMethod (c$, "writeProperties", \r
-function (sb, html) {\r
-var nl = html ? "<br>" : System.getProperty ("line.separator");\r
-var avg = 0;\r
-var min = 2147483647;\r
-var max = 0;\r
-for (var i = 0; i < this.alignment.getHeight (); i++) {\r
-var size = 1 + this.alignment.getSequenceAt (i).getEnd () - this.alignment.getSequenceAt (i).getStart ();\r
-avg += size;\r
-if (size > max) {\r
-max = size;\r
-}if (size < min) {\r
-min = size;\r
-}}\r
-avg = avg / this.alignment.getHeight ();\r
-sb.append (nl);\r
-sb.append ("Sequences: " + this.alignment.getHeight ());\r
-sb.append (nl);\r
-sb.append ("Minimum Sequence Length: " + min);\r
-sb.append (nl);\r
-sb.append ("Maximum Sequence Length: " + max);\r
-sb.append (nl);\r
-sb.append ("Average Length: " + Clazz.floatToInt (avg));\r
-if ((this.alignment).alignmentProperties != null) {\r
-sb.append (nl);\r
-sb.append (nl);\r
-if (html) {\r
-sb.append ("<table border=\"1\">");\r
-}var props = (this.alignment).alignmentProperties;\r
-var en = props.keys ();\r
-while (en.hasMoreElements ()) {\r
-var key = en.nextElement ().toString ();\r
-var vals = props.get (key).toString ();\r
-if (html) {\r
-var val =  new StringBuffer ();\r
-var pos = 0;\r
-var npos;\r
-do {\r
-npos = vals.indexOf ("\n", pos);\r
-if (npos == -1) {\r
-val.append (vals.substring (pos));\r
-} else {\r
-val.append (vals.substring (pos, npos));\r
-val.append ("<br>");\r
-}pos = npos + 1;\r
-} while (npos != -1);\r
-sb.append ("<tr><td>" + key + "</td><td>" + val + "</td></tr>");\r
-} else {\r
-sb.append (nl + key + "\t" + vals);\r
-}}\r
-if (html) {\r
-sb.append ("</table>");\r
-}}}, "StringBuffer,~B");\r
-Clazz.defineMethod (c$, "formatAsString", \r
-function () {\r
-return this.formatReport (false);\r
-});\r
-Clazz.defineMethod (c$, "formatReport", \r
-function (html) {\r
-var sb =  new StringBuffer ();\r
-this.writeProperties (sb, html);\r
-return sb;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "formatAsHtml", \r
-function () {\r
-return this.formatReport (true);\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (null, "jalview.io.AlignmentProperties", ["java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.alignment = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io, "AlignmentProperties");
+Clazz.makeConstructor (c$, 
+function (alignment) {
+this.alignment = alignment;
+}, "jalview.datamodel.AlignmentI");
+Clazz.defineMethod (c$, "writeProperties", 
+function (sb, html) {
+var nl = html ? "<br>" : System.getProperty ("line.separator");
+var avg = 0;
+var min = 2147483647;
+var max = 0;
+for (var i = 0; i < this.alignment.getHeight (); i++) {
+var size = 1 + this.alignment.getSequenceAt (i).getEnd () - this.alignment.getSequenceAt (i).getStart ();
+avg += size;
+if (size > max) {
+max = size;
+}if (size < min) {
+min = size;
+}}
+avg = avg / this.alignment.getHeight ();
+sb.append (nl);
+sb.append ("Sequences: " + this.alignment.getHeight ());
+sb.append (nl);
+sb.append ("Minimum Sequence Length: " + min);
+sb.append (nl);
+sb.append ("Maximum Sequence Length: " + max);
+sb.append (nl);
+sb.append ("Average Length: " + Clazz.floatToInt (avg));
+if ((this.alignment).alignmentProperties != null) {
+sb.append (nl);
+sb.append (nl);
+if (html) {
+sb.append ("<table border=\"1\">");
+}var props = (this.alignment).alignmentProperties;
+var en = props.keys ();
+while (en.hasMoreElements ()) {
+var key = en.nextElement ().toString ();
+var vals = props.get (key).toString ();
+if (html) {
+var val =  new StringBuffer ();
+var pos = 0;
+var npos;
+do {
+npos = vals.indexOf ("\n", pos);
+if (npos == -1) {
+val.append (vals.substring (pos));
+} else {
+val.append (vals.substring (pos, npos));
+val.append ("<br>");
+}pos = npos + 1;
+} while (npos != -1);
+sb.append ("<tr><td>" + key + "</td><td>" + val + "</td></tr>");
+} else {
+sb.append (nl + key + "\t" + vals);
+}}
+if (html) {
+sb.append ("</table>");
+}}}, "StringBuffer,~B");
+Clazz.defineMethod (c$, "formatAsString", 
+function () {
+return this.formatReport (false);
+});
+Clazz.defineMethod (c$, "formatReport", 
+function (html) {
+var sb =  new StringBuffer ();
+this.writeProperties (sb, html);
+return sb;
+}, "~B");
+Clazz.defineMethod (c$, "formatAsHtml", 
+function () {
+return this.formatReport (true);
+});
+});
index 4aea77a..fd5b729 100644 (file)
Binary files a/bin/jalview/io/AnnotationFile.class and b/bin/jalview/io/AnnotationFile.class differ
index 2aaf007..4c4c01e 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (null, "jalview.io.AnnotationFile", ["jalview.analysis.Conservation", "jalview.datamodel.AlignmentAnnotation", "$.Annotation", "$.ColumnSelection", "$.GraphLine", "$.SequenceGroup", "jalview.io.AppletFormatAdapter", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.ColourSchemeProperty", "$.ResidueProperties", "$.UserColourScheme", "jalview.util.Comparison", "$.Format", "java.awt.Color", "java.io.BufferedReader", "$.InputStreamReader", "$.StringReader", "java.lang.Boolean", "$.Float", "$.StringBuffer", "java.util.ArrayList", "$.BitSet", "$.Date", "$.Hashtable", "$.StringTokenizer", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.newline = null;\r
-this.text = null;\r
-if (!Clazz.isClassDefined ("jalview.io.AnnotationFile.ViewDef")) {\r
-jalview.io.AnnotationFile.$AnnotationFile$ViewDef$ ();\r
-}\r
-this.refSeq = null;\r
-this.refSeqId = null;\r
-this.nlinesread = 0;\r
-this.lastread = "";\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io, "AnnotationFile");\r
-Clazz.prepareFields (c$, function () {\r
-this.newline = System.getProperty ("line.separator");\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.init ();\r
-});\r
-Clazz.defineMethod (c$, "setNewlineString", \r
-function (nl) {\r
-this.newline = nl;\r
-this.init ();\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getNewlineString", \r
-function () {\r
-return this.newline;\r
-});\r
-Clazz.defineMethod (c$, "init", \r
-($fz = function () {\r
-this.text =  new StringBuffer ("JALVIEW_ANNOTATION" + this.newline + "# Created: " +  new java.util.Date () + this.newline + this.newline);\r
-this.refSeq = null;\r
-this.refSeqId = null;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "printAnnotations", \r
-function (annotations, list, properties) {\r
-return this.printAnnotations (annotations, list, properties, null, null, null);\r
-}, "~A,java.util.List,java.util.Hashtable");\r
-Clazz.defineMethod (c$, "printAnnotations", \r
-function (annotations, list, properties, cs, al, view) {\r
-if (view != null) {\r
-if (view.viewname != null) {\r
-this.text.append ("VIEW_DEF\t" + view.viewname + "\n");\r
-}if (list == null) {\r
-list = view.visibleGroups;\r
-}if (cs == null) {\r
-cs = view.hiddencols;\r
-}if (al == null) {\r
-}}if (al != null && al.hasSeqrep ()) {\r
-this.text.append ("VIEW_SETREF\t" + al.getSeqrep ().getName () + "\n");\r
-}if (cs != null && cs.hasHiddenColumns ()) {\r
-this.text.append ("VIEW_HIDECOLS\t");\r
-var hc = cs.getHiddenColumns ();\r
-var comma = false;\r
-for (var r, $r = hc.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {\r
-if (!comma) {\r
-comma = true;\r
-} else {\r
-this.text.append (",");\r
-}this.text.append (r[0]);\r
-this.text.append ("-");\r
-this.text.append (r[1]);\r
-}\r
-this.text.append ("\n");\r
-}if (annotations != null) {\r
-var oneColour = true;\r
-var row;\r
-var comma;\r
-var refSeq = null;\r
-var refGroup = null;\r
-var colours =  new StringBuffer ();\r
-var graphLine =  new StringBuffer ();\r
-var rowprops =  new StringBuffer ();\r
-var graphGroup =  new java.util.Hashtable ();\r
-var graphGroup_refs =  new java.util.Hashtable ();\r
-var graphGroupSeen =  new java.util.BitSet ();\r
-var color;\r
-for (var i = 0; i < annotations.length; i++) {\r
-row = annotations[i];\r
-if (!row.visible && !row.hasScore () && !(row.graphGroup > -1 && graphGroupSeen.get (row.graphGroup))) {\r
-continue;\r
-}color = null;\r
-oneColour = true;\r
-this.writeSequence_Ref (refSeq, row.sequenceRef);\r
-refSeq = row.sequenceRef;\r
-this.writeGroup_Ref (refGroup, row.groupRef);\r
-refGroup = row.groupRef;\r
-var hasGlyphs = row.hasIcons;\r
-var hasLabels = row.hasText;\r
-var hasValues = row.$hasScore;\r
-var hasText = false;\r
-for (var j = 0; row.annotations != null && j < row.annotations.length && (!hasGlyphs || !hasLabels || !hasValues); j++) {\r
-if (row.annotations[j] != null) {\r
-hasLabels = new Boolean (hasLabels | (row.annotations[j].displayCharacter != null && row.annotations[j].displayCharacter.length > 0 && !row.annotations[j].displayCharacter.equals (" "))).valueOf ();\r
-hasGlyphs = new Boolean (hasGlyphs | ((row.annotations[j].secondaryStructure).charCodeAt (0) != 0 && row.annotations[j].secondaryStructure != ' ')).valueOf ();\r
-hasValues = new Boolean (hasValues | (!Float.isNaN (row.annotations[j].value))).valueOf ();\r
-hasText = new Boolean (hasText | (row.annotations[j].description != null && row.annotations[j].description.length > 0)).valueOf ();\r
-}}\r
-if (row.graph == 0) {\r
-this.text.append ("NO_GRAPH\t");\r
-hasValues = false;\r
-} else {\r
-if (row.graph == 1) {\r
-this.text.append ("BAR_GRAPH\t");\r
-hasGlyphs = false;\r
-} else if (row.graph == 2) {\r
-hasGlyphs = false;\r
-this.text.append ("LINE_GRAPH\t");\r
-}if (row.getThreshold () != null) {\r
-graphLine.append ("GRAPHLINE\t");\r
-graphLine.append (row.label);\r
-graphLine.append ("\t");\r
-graphLine.append (row.getThreshold ().value);\r
-graphLine.append ("\t");\r
-graphLine.append (row.getThreshold ().label);\r
-graphLine.append ("\t");\r
-graphLine.append (jalview.util.Format.getHexString (row.getThreshold ().colour));\r
-graphLine.append (this.newline);\r
-}if (row.graphGroup > -1) {\r
-graphGroupSeen.set (row.graphGroup);\r
-var key =  new Integer (row.graphGroup);\r
-if (graphGroup.containsKey (key)) {\r
-graphGroup.put (key, graphGroup.get (key) + "\t" + row.label);\r
-} else {\r
-graphGroup_refs.put (key,  Clazz.newArray (-1, [refSeq, refGroup]));\r
-graphGroup.put (key, row.label);\r
-}}}this.text.append (row.label + "\t");\r
-if (row.description != null) {\r
-this.text.append (row.description + "\t");\r
-}for (var j = 0; row.annotations != null && j < row.annotations.length; j++) {\r
-if (refSeq != null && jalview.util.Comparison.isGap (refSeq.getCharAt (j))) {\r
-continue;\r
-}if (row.annotations[j] != null) {\r
-comma = "";\r
-if (hasGlyphs) {\r
-this.text.append (comma);\r
-if (row.annotations[j].secondaryStructure != ' ') {\r
-this.text.append (row.annotations[j].secondaryStructure);\r
-}comma = ",";\r
-}if (hasValues) {\r
-if (!Float.isNaN (row.annotations[j].value)) {\r
-this.text.append (comma + row.annotations[j].value);\r
-} else {\r
-System.err.println ("Skipping NaN - not valid value.");\r
-this.text.append (comma + 0);\r
-}comma = ",";\r
-}if (hasLabels) {\r
-if (row.annotations[j].displayCharacter != null && row.annotations[j].displayCharacter.length > 0 && !row.annotations[j].displayCharacter.equals (" ")) {\r
-this.text.append (comma + row.annotations[j].displayCharacter);\r
-comma = ",";\r
-}}if (hasText) {\r
-if (row.annotations[j].description != null && row.annotations[j].description.length > 0 && !row.annotations[j].description.equals (row.annotations[j].displayCharacter)) {\r
-this.text.append (comma + row.annotations[j].description);\r
-comma = ",";\r
-}}if (color != null && !color.equals (row.annotations[j].colour)) {\r
-oneColour = false;\r
-}color = row.annotations[j].colour;\r
-if (row.annotations[j].colour != null && row.annotations[j].colour !== java.awt.Color.black) {\r
-this.text.append (comma + "[" + jalview.util.Format.getHexString (row.annotations[j].colour) + "]");\r
-comma = ",";\r
-}}this.text.append ("|");\r
-}\r
-if (row.hasScore ()) {\r
-this.text.append ("\t" + row.score);\r
-}this.text.append (this.newline);\r
-if (color != null && color !== java.awt.Color.black && oneColour) {\r
-colours.append ("COLOUR\t");\r
-colours.append (row.label);\r
-colours.append ("\t");\r
-colours.append (jalview.util.Format.getHexString (color));\r
-colours.append (this.newline);\r
-}if (row.scaleColLabel || row.showAllColLabels || row.centreColLabels) {\r
-rowprops.append ("ROWPROPERTIES\t");\r
-rowprops.append (row.label);\r
-rowprops.append ("\tscaletofit=");\r
-rowprops.append (row.scaleColLabel);\r
-rowprops.append ("\tshowalllabs=");\r
-rowprops.append (row.showAllColLabels);\r
-rowprops.append ("\tcentrelabs=");\r
-rowprops.append (row.centreColLabels);\r
-rowprops.append (this.newline);\r
-}if (graphLine.length () > 0) {\r
-this.text.append (graphLine.toString ());\r
-graphLine.setLength (0);\r
-}}\r
-this.text.append (this.newline);\r
-this.text.append (colours.toString ());\r
-if (graphGroup.size () > 0) {\r
-var oldRefSeq = refSeq;\r
-var oldRefGroup = refGroup;\r
-for (var combine_statement, $combine_statement = graphGroup.entrySet ().iterator (); $combine_statement.hasNext () && ((combine_statement = $combine_statement.next ()) || true);) {\r
-var seqRefAndGroup = graphGroup_refs.get (combine_statement.getKey ());\r
-this.writeSequence_Ref (refSeq, seqRefAndGroup[0]);\r
-refSeq = seqRefAndGroup[0];\r
-this.writeGroup_Ref (refGroup, seqRefAndGroup[1]);\r
-refGroup = seqRefAndGroup[1];\r
-this.text.append ("COMBINE\t");\r
-this.text.append (combine_statement.getValue ());\r
-this.text.append (this.newline);\r
-}\r
-this.writeSequence_Ref (refSeq, oldRefSeq);\r
-refSeq = oldRefSeq;\r
-this.writeGroup_Ref (refGroup, oldRefGroup);\r
-refGroup = oldRefGroup;\r
-}this.text.append (rowprops.toString ());\r
-}if (list != null) {\r
-this.printGroups (list);\r
-}if (properties != null) {\r
-this.text.append (this.newline);\r
-this.text.append (this.newline);\r
-this.text.append ("ALIGNMENT");\r
-var en = properties.keys ();\r
-while (en.hasMoreElements ()) {\r
-var key = en.nextElement ().toString ();\r
-this.text.append ("\t");\r
-this.text.append (key);\r
-this.text.append ("=");\r
-this.text.append (properties.get (key));\r
-}\r
-}return this.text.toString ();\r
-}, "~A,java.util.List,java.util.Hashtable,jalview.datamodel.ColumnSelection,jalview.datamodel.AlignmentI,jalview.io.AnnotationFile.ViewDef");\r
-Clazz.defineMethod (c$, "writeGroup_Ref", \r
-($fz = function (refGroup, next_refGroup) {\r
-if (next_refGroup == null) {\r
-if (refGroup != null) {\r
-this.text.append (this.newline);\r
-this.text.append ("GROUP_REF\t");\r
-this.text.append ("ALIGNMENT");\r
-this.text.append (this.newline);\r
-}return true;\r
-} else {\r
-if (refGroup == null || refGroup !== next_refGroup) {\r
-this.text.append (this.newline);\r
-this.text.append ("GROUP_REF\t");\r
-this.text.append (next_refGroup.getName ());\r
-this.text.append (this.newline);\r
-return true;\r
-}}return false;\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceGroup,jalview.datamodel.SequenceGroup");\r
-Clazz.defineMethod (c$, "writeSequence_Ref", \r
-($fz = function (refSeq, next_refSeq) {\r
-if (next_refSeq == null) {\r
-if (refSeq != null) {\r
-this.text.append (this.newline);\r
-this.text.append ("SEQUENCE_REF\t");\r
-this.text.append ("ALIGNMENT");\r
-this.text.append (this.newline);\r
-return true;\r
-}} else {\r
-if (refSeq == null || refSeq !== next_refSeq) {\r
-this.text.append (this.newline);\r
-this.text.append ("SEQUENCE_REF\t");\r
-this.text.append (next_refSeq.getName ());\r
-this.text.append (this.newline);\r
-return true;\r
-}}return false;\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "printGroups", \r
-function (list) {\r
-var seqrep = null;\r
-for (var sg, $sg = list.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-if (!sg.hasSeqrep ()) {\r
-this.text.append ("SEQUENCE_GROUP\t" + sg.getName () + "\t" + (sg.getStartRes () + 1) + "\t" + (sg.getEndRes () + 1) + "\t" + "-1\t");\r
-seqrep = null;\r
-} else {\r
-seqrep = sg.getSeqrep ();\r
-this.text.append ("SEQUENCE_REF\t");\r
-this.text.append (seqrep.getName ());\r
-this.text.append (this.newline);\r
-this.text.append ("SEQUENCE_GROUP\t");\r
-this.text.append (sg.getName ());\r
-this.text.append ("\t");\r
-this.text.append ((seqrep.findPosition (sg.getStartRes ())));\r
-this.text.append ("\t");\r
-this.text.append ((seqrep.findPosition (sg.getEndRes ())));\r
-this.text.append ("\t");\r
-this.text.append ("-1\t");\r
-}for (var s = 0; s < sg.getSize (); s++) {\r
-this.text.append (sg.getSequenceAt (s).getName ());\r
-this.text.append ("\t");\r
-}\r
-this.text.append (this.newline);\r
-this.text.append ("PROPERTIES\t");\r
-this.text.append (sg.getName ());\r
-this.text.append ("\t");\r
-if (sg.getDescription () != null) {\r
-this.text.append ("description=");\r
-this.text.append (sg.getDescription ());\r
-this.text.append ("\t");\r
-}if (sg.cs != null) {\r
-this.text.append ("colour=");\r
-this.text.append (jalview.schemes.ColourSchemeProperty.getColourName (sg.cs));\r
-this.text.append ("\t");\r
-if (sg.cs.getThreshold () != 0) {\r
-this.text.append ("pidThreshold=");\r
-this.text.append (sg.cs.getThreshold ());\r
-}if (sg.cs.conservationApplied ()) {\r
-this.text.append ("consThreshold=");\r
-this.text.append (sg.cs.getConservationInc ());\r
-this.text.append ("\t");\r
-}}this.text.append ("outlineColour=");\r
-this.text.append (jalview.util.Format.getHexString (sg.getOutlineColour ()));\r
-this.text.append ("\t");\r
-this.text.append ("displayBoxes=");\r
-this.text.append (sg.getDisplayBoxes ());\r
-this.text.append ("\t");\r
-this.text.append ("displayText=");\r
-this.text.append (sg.getDisplayText ());\r
-this.text.append ("\t");\r
-this.text.append ("colourText=");\r
-this.text.append (sg.getColourText ());\r
-this.text.append ("\t");\r
-this.text.append ("showUnconserved=");\r
-this.text.append (sg.getShowNonconserved ());\r
-this.text.append ("\t");\r
-if (sg.textColour !== java.awt.Color.black) {\r
-this.text.append ("textCol1=");\r
-this.text.append (jalview.util.Format.getHexString (sg.textColour));\r
-this.text.append ("\t");\r
-}if (sg.textColour2 !== java.awt.Color.white) {\r
-this.text.append ("textCol2=");\r
-this.text.append (jalview.util.Format.getHexString (sg.textColour2));\r
-this.text.append ("\t");\r
-}if (sg.thresholdTextColour != 0) {\r
-this.text.append ("textColThreshold=");\r
-this.text.append (sg.thresholdTextColour);\r
-this.text.append ("\t");\r
-}if (sg.idColour != null) {\r
-this.text.append ("idColour=");\r
-this.text.append (jalview.util.Format.getHexString (sg.idColour));\r
-this.text.append ("\t");\r
-}if (sg.isHidereps ()) {\r
-this.text.append ("hide=true\t");\r
-}if (sg.isHideCols ()) {\r
-this.text.append ("hidecols=true\t");\r
-}if (seqrep != null) {\r
-this.text.append (this.newline);\r
-this.text.append ("SEQUENCE_REF");\r
-}this.text.append (this.newline);\r
-this.text.append (this.newline);\r
-}\r
-}, "java.util.List");\r
-Clazz.defineMethod (c$, "annotateAlignmentView", \r
-function (viewport, file, protocol) {\r
-var colSel = viewport.getColumnSelection ();\r
-if (colSel == null) {\r
-colSel =  new jalview.datamodel.ColumnSelection ();\r
-}var rslt = this.readAnnotationFile (viewport.getAlignment (), colSel, file, protocol);\r
-if (rslt && (colSel.hasSelectedColumns () || colSel.hasHiddenColumns ())) {\r
-viewport.setColumnSelection (colSel);\r
-}return rslt;\r
-}, "jalview.api.AlignViewportI,~S,~S");\r
-Clazz.defineMethod (c$, "readAnnotationFile", \r
-function (al, file, protocol) {\r
-return this.readAnnotationFile (al, null, file, protocol);\r
-}, "jalview.datamodel.AlignmentI,~S,~S");\r
-Clazz.defineMethod (c$, "readAnnotationFile", \r
-function (al, colSel, file, protocol) {\r
-var $in = null;\r
-try {\r
-if (protocol.equals (jalview.io.AppletFormatAdapter.FILE)) {\r
-$in = jalview.jsdev.GenericFileAdapter.getReader (file, false);\r
-} else if (protocol.equals (jalview.io.AppletFormatAdapter.URL)) {\r
-$in = jalview.jsdev.GenericFileAdapter.getReader (file, true);\r
-} else if (protocol.equals (jalview.io.AppletFormatAdapter.PASTE)) {\r
-$in =  new java.io.BufferedReader ( new java.io.StringReader (file));\r
-} else if (protocol.equals (jalview.io.AppletFormatAdapter.CLASSLOADER)) {\r
-var is = this.getClass ().getResourceAsStream ("/" + file);\r
-if (is != null) {\r
-$in =  new java.io.BufferedReader ( new java.io.InputStreamReader (is));\r
-}}if ($in != null) {\r
-return this.parseAnnotationFrom (al, colSel, $in);\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-System.out.println ("Problem reading annotation file: " + ex);\r
-if (this.nlinesread > 0) {\r
-System.out.println ("Last read line " + this.nlinesread + ": '" + this.lastread + "' (first 80 chars) ...");\r
-}return false;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-return false;\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,~S,~S");\r
-Clazz.defineMethod (c$, "parseAnnotationFrom", \r
-function (al, colSel, $in) {\r
-this.nlinesread = 0;\r
-var combineAnnotation_calls =  new java.util.ArrayList ();\r
-var deferredAnnotation_calls =  new java.util.ArrayList ();\r
-var modified = false;\r
-var groupRef = null;\r
-var groupRefRows =  new java.util.Hashtable ();\r
-var autoAnnots =  new java.util.Hashtable ();\r
-{\r
-var line;\r
-var label;\r
-var description;\r
-var token;\r
-var graphStyle;\r
-var index;\r
-var refSeqIndex = 1;\r
-var existingAnnotations = 0;\r
-var overrideAutoAnnot = false;\r
-if (al.getAlignmentAnnotation () != null) {\r
-existingAnnotations = al.getAlignmentAnnotation ().length;\r
-if (existingAnnotations > 0) {\r
-var aa = al.getAlignmentAnnotation ();\r
-for (var aai = 0; aai < aa.length; aai++) {\r
-if (aa[aai].autoCalculated) {\r
-autoAnnots.put (this.autoAnnotsKey (aa[aai], aa[aai].sequenceRef, (aa[aai].groupRef == null ? null : aa[aai].groupRef.getName ())),  new Integer (1));\r
-}}\r
-}}var alWidth = al.getWidth ();\r
-var st;\r
-var annotations;\r
-var annotation = null;\r
-var jvAnnotationFile = false;\r
-while ((line = $in.readLine ()) != null) {\r
-this.nlinesread++;\r
-this.lastread =  String.instantialize (line);\r
-if (line.indexOf ("#") == 0) {\r
-continue;\r
-}if (line.indexOf ("JALVIEW_ANNOTATION") > -1) {\r
-jvAnnotationFile = true;\r
-break;\r
-}}\r
-if (!jvAnnotationFile) {\r
-$in.close ();\r
-return false;\r
-}while ((line = $in.readLine ()) != null) {\r
-this.nlinesread++;\r
-this.lastread =  String.instantialize (line);\r
-if (line.indexOf ("#") == 0 || line.indexOf ("JALVIEW_ANNOTATION") > -1 || line.length == 0) {\r
-continue;\r
-}st =  new java.util.StringTokenizer (line, "\t");\r
-token = st.nextToken ();\r
-if (token.equalsIgnoreCase ("COLOUR")) {\r
-this.colourAnnotations (al, st.nextToken (), st.nextToken ());\r
-modified = true;\r
-continue;\r
-} else if (token.equalsIgnoreCase (jalview.io.AnnotationFile.COMBINE)) {\r
-combineAnnotation_calls.add ( Clazz.newArray (-1, [st, this.refSeq, groupRef]));\r
-modified = true;\r
-continue;\r
-} else if (token.equalsIgnoreCase ("ROWPROPERTIES")) {\r
-this.addRowProperties (al, st);\r
-modified = true;\r
-continue;\r
-} else if (token.equalsIgnoreCase (jalview.io.AnnotationFile.GRAPHLINE)) {\r
-deferredAnnotation_calls.add ( Clazz.newArray (-1, [jalview.io.AnnotationFile.GRAPHLINE, st, this.refSeq, groupRef]));\r
-modified = true;\r
-continue;\r
-} else if (token.equalsIgnoreCase ("SEQUENCE_REF")) {\r
-if (st.hasMoreTokens ()) {\r
-this.refSeq = al.findName (this.refSeqId = st.nextToken ());\r
-if (this.refSeq == null) {\r
-this.refSeqId = null;\r
-}try {\r
-refSeqIndex = Integer.parseInt (st.nextToken ());\r
-if (refSeqIndex < 1) {\r
-refSeqIndex = 1;\r
-System.out.println ("WARNING: SEQUENCE_REF index must be > 0 in AnnotationFile");\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-refSeqIndex = 1;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-} else {\r
-this.refSeq = null;\r
-this.refSeqId = null;\r
-}continue;\r
-} else if (token.equalsIgnoreCase ("GROUP_REF")) {\r
-groupRef = null;\r
-if (st.hasMoreTokens ()) {\r
-groupRef = st.nextToken ();\r
-if (groupRef.length < 1) {\r
-groupRef = null;\r
-} else {\r
-if (groupRefRows.get (groupRef) == null) {\r
-groupRefRows.put (groupRef,  new java.util.Vector ());\r
-}}}continue;\r
-} else if (token.equalsIgnoreCase ("SEQUENCE_GROUP")) {\r
-this.addGroup (al, st);\r
-modified = true;\r
-continue;\r
-} else if (token.equalsIgnoreCase ("PROPERTIES")) {\r
-this.addProperties (al, st);\r
-modified = true;\r
-continue;\r
-} else if (token.equalsIgnoreCase ("BELOW_ALIGNMENT")) {\r
-this.setBelowAlignment (al, st);\r
-modified = true;\r
-continue;\r
-} else if (token.equalsIgnoreCase ("ALIGNMENT")) {\r
-this.addAlignmentDetails (al, st);\r
-modified = true;\r
-continue;\r
-} else if (token.equalsIgnoreCase ("VIEW_SETREF")) {\r
-if (this.refSeq != null) {\r
-al.setSeqrep (this.refSeq);\r
-}modified = true;\r
-continue;\r
-} else if (token.equalsIgnoreCase ("VIEW_HIDECOLS")) {\r
-if (st.hasMoreTokens ()) {\r
-if (colSel == null) {\r
-colSel =  new jalview.datamodel.ColumnSelection ();\r
-}this.parseHideCols (colSel, st.nextToken ());\r
-}modified = true;\r
-continue;\r
-} else if (token.equalsIgnoreCase ("HIDE_INSERTIONS")) {\r
-var sr = this.refSeq == null ? al.getSeqrep () : this.refSeq;\r
-if (sr == null) {\r
-sr = al.getSequenceAt (0);\r
-}if (sr != null) {\r
-if (colSel == null) {\r
-System.err.println ("Cannot process HIDE_INSERTIONS without an alignment view: Ignoring line: " + line);\r
-} else {\r
-colSel.hideInsertionsFor (sr);\r
-}}modified = true;\r
-continue;\r
-}graphStyle = jalview.datamodel.AlignmentAnnotation.getGraphValueFromString (token);\r
-label = st.nextToken ();\r
-index = 0;\r
-annotations =  new Array (alWidth);\r
-description = null;\r
-var score = NaN;\r
-if (st.hasMoreTokens ()) {\r
-line = st.nextToken ();\r
-if (line.indexOf ("|") == -1) {\r
-description = line;\r
-if (st.hasMoreTokens ()) {\r
-line = st.nextToken ();\r
-}}if (st.hasMoreTokens ()) {\r
-score = Float.$valueOf (st.nextToken ()).floatValue ();\r
-}st =  new java.util.StringTokenizer (line, "|", true);\r
-var emptyColumn = true;\r
-var onlyOneElement = (st.countTokens () == 1);\r
-while (st.hasMoreElements () && index < alWidth) {\r
-token = st.nextToken ().trim ();\r
-if (onlyOneElement) {\r
-try {\r
-score = Float.$valueOf (token).floatValue ();\r
-break;\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}if (token.equals ("|")) {\r
-if (emptyColumn) {\r
-index++;\r
-}emptyColumn = true;\r
-} else {\r
-annotations[index++] = this.parseAnnotation (token, graphStyle);\r
-emptyColumn = false;\r
-}}\r
-}annotation =  new jalview.datamodel.AlignmentAnnotation (label, description, (index == 0) ? null : annotations, 0, 0, graphStyle);\r
-annotation.score = score;\r
-if (!overrideAutoAnnot && autoAnnots.containsKey (this.autoAnnotsKey (annotation, this.refSeq, groupRef))) {\r
-continue;\r
-}if (this.refSeq != null) {\r
-annotation.belowAlignment = false;\r
-var referedSeq = this.refSeq;\r
-do {\r
-var ann =  new jalview.datamodel.AlignmentAnnotation (annotation);\r
-annotation.createSequenceMapping (referedSeq, refSeqIndex, false);\r
-annotation.adjustForAlignment ();\r
-referedSeq.addAlignmentAnnotation (annotation);\r
-al.addAnnotation (annotation);\r
-al.setAnnotationIndex (annotation, al.getAlignmentAnnotation ().length - existingAnnotations - 1);\r
-if (groupRef != null) {\r
-(groupRefRows.get (groupRef)).addElement (annotation);\r
-}annotation = ann;\r
-} while (this.refSeqId != null && (referedSeq = al.findName (referedSeq, this.refSeqId, true)) != null);\r
-} else {\r
-al.addAnnotation (annotation);\r
-al.setAnnotationIndex (annotation, al.getAlignmentAnnotation ().length - existingAnnotations - 1);\r
-if (groupRef != null) {\r
-(groupRefRows.get (groupRef)).addElement (annotation);\r
-}}modified = true;\r
-}\r
-var groupRefLookup =  new java.util.Hashtable ();\r
-var en = groupRefRows.keys ();\r
-while (en.hasMoreElements ()) {\r
-groupRef = en.nextElement ();\r
-var matched = false;\r
-for (var theGroup, $theGroup = al.getGroups ().iterator (); $theGroup.hasNext () && ((theGroup = $theGroup.next ()) || true);) {\r
-if (theGroup.getName ().equals (groupRef)) {\r
-if (matched) {\r
-System.err.println ("Ignoring 1:many group reference mappings for group name '" + groupRef + "'");\r
-} else {\r
-matched = true;\r
-var rowset = groupRefRows.get (groupRef);\r
-groupRefLookup.put (groupRef, theGroup);\r
-if (rowset != null && rowset.size () > 0) {\r
-var alan = null;\r
-for (var elm = 0, elmSize = rowset.size (); elm < elmSize; elm++) {\r
-alan = rowset.elementAt (elm);\r
-alan.groupRef = theGroup;\r
-}\r
-}}}}\r
-(groupRefRows.get (groupRef)).removeAllElements ();\r
-}\r
-for (var _deferred_args, $_deferred_args = deferredAnnotation_calls.iterator (); $_deferred_args.hasNext () && ((_deferred_args = $_deferred_args.next ()) || true);) {\r
-if (_deferred_args[0] === jalview.io.AnnotationFile.GRAPHLINE) {\r
-this.addLine (al, _deferred_args[1], _deferred_args[2], (_deferred_args[3] == null) ? null : groupRefLookup.get (_deferred_args[3]));\r
-}}\r
-var combinecount = 0;\r
-for (var _combine_args, $_combine_args = combineAnnotation_calls.iterator (); $_combine_args.hasNext () && ((_combine_args = $_combine_args.next ()) || true);) {\r
-this.combineAnnotations (al, ++combinecount, _combine_args[0], _combine_args[1], (_combine_args[2] == null) ? null : groupRefLookup.get (_combine_args[2]));\r
-}\r
-}return modified;\r
-}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,java.io.BufferedReader");\r
-Clazz.defineMethod (c$, "parseHideCols", \r
-($fz = function (colSel, nextToken) {\r
-var inval =  new java.util.StringTokenizer (nextToken, ",");\r
-while (inval.hasMoreTokens ()) {\r
-var range = inval.nextToken ().trim ();\r
-var from;\r
-var to = range.indexOf ("-");\r
-if (to == -1) {\r
-from = to = Integer.parseInt (range);\r
-if (from >= 0) {\r
-colSel.hideColumns (from, to);\r
-}} else {\r
-from = Integer.parseInt (range.substring (0, to));\r
-if (to < range.length - 1) {\r
-to = Integer.parseInt (range.substring (to + 1));\r
-} else {\r
-to = from;\r
-}if (from > 0 && to >= from) {\r
-colSel.hideColumns (from, to);\r
-}}}\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.ColumnSelection,~S");\r
-Clazz.defineMethod (c$, "autoAnnotsKey", \r
-($fz = function (annotation, refSeq, groupRef) {\r
-return annotation.graph + "\t" + annotation.label + "\t" + annotation.description + "\t" + (refSeq != null ? refSeq.getDisplayId (true) : "");\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.SequenceI,~S");\r
-Clazz.defineMethod (c$, "parseAnnotation", \r
-function (string, graphStyle) {\r
-var hasSymbols = (graphStyle == 0);\r
-var desc = null;\r
-var displayChar = null;\r
-var ss = ' ';\r
-var value = 0;\r
-var parsedValue = false;\r
-var dcset = false;\r
-var colour = null;\r
-var i = string.indexOf ("[");\r
-var j = string.indexOf ("]");\r
-if (i > -1 && j > -1) {\r
-var ucs =  new jalview.schemes.UserColourScheme ();\r
-colour = ucs.getColourFromString (string.substring (i + 1, j));\r
-if (i > 0 && string.charAt (i - 1) == ',') {\r
-i--;\r
-}string = string.substring (0, i) + string.substring (j + 1);\r
-}var st =  new java.util.StringTokenizer (string, ",", true);\r
-var token;\r
-var seenContent = false;\r
-var pass = 0;\r
-while (st.hasMoreTokens ()) {\r
-pass++;\r
-token = st.nextToken ().trim ();\r
-if (token.equals (",")) {\r
-if (!seenContent && parsedValue && !dcset) {\r
-dcset = true;\r
-displayChar = " ";\r
-}seenContent = false;\r
-continue;\r
-} else {\r
-seenContent = true;\r
-}if (!parsedValue) {\r
-try {\r
-displayChar = token;\r
-value =  new Float (token).floatValue ();\r
-parsedValue = true;\r
-continue;\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-} else {\r
-if (token.length == 1) {\r
-displayChar = token;\r
-}}if (hasSymbols && (token.equals ("H") || token.equals ("E") || token.equals ("S") || token.equals (" "))) {\r
-ss = token.charAt (0);\r
-if (displayChar.equals (token.substring (0, 1))) {\r
-displayChar = "";\r
-}} else if (desc == null || (parsedValue && pass > 2)) {\r
-desc = token;\r
-}}\r
-if (displayChar != null && desc != null && desc.length == 1) {\r
-if (displayChar.length > 1) {\r
-var tmp = displayChar;\r
-displayChar = desc;\r
-desc = tmp;\r
-} else {\r
-if (displayChar.equals (desc)) {\r
-desc = null;\r
-}}}var anot =  new jalview.datamodel.Annotation (displayChar, desc, ss, value);\r
-anot.colour = colour;\r
-return anot;\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "colourAnnotations", \r
-function (al, label, colour) {\r
-var ucs =  new jalview.schemes.UserColourScheme (colour);\r
-var annotations;\r
-for (var i = 0; i < al.getAlignmentAnnotation ().length; i++) {\r
-if (al.getAlignmentAnnotation ()[i].label.equalsIgnoreCase (label)) {\r
-annotations = al.getAlignmentAnnotation ()[i].annotations;\r
-for (var j = 0; j < annotations.length; j++) {\r
-if (annotations[j] != null) {\r
-annotations[j].colour = ucs.findColour ('A');\r
-}}\r
-}}\r
-}, "jalview.datamodel.AlignmentI,~S,~S");\r
-Clazz.defineMethod (c$, "combineAnnotations", \r
-function (al, combineCount, st, seqRef, groupRef) {\r
-var group = st.nextToken ();\r
-var graphGroup = 0;\r
-if (al.getAlignmentAnnotation () != null) {\r
-for (var i = 0; i < al.getAlignmentAnnotation ().length; i++) {\r
-var aa = al.getAlignmentAnnotation ()[i];\r
-if (aa.graphGroup > graphGroup) {\r
-graphGroup = aa.graphGroup + 1;\r
-}if (aa.sequenceRef === seqRef && aa.groupRef === groupRef && aa.label.equalsIgnoreCase (group)) {\r
-if (aa.graphGroup > -1) {\r
-graphGroup = aa.graphGroup;\r
-} else {\r
-if (graphGroup <= combineCount) {\r
-graphGroup = combineCount + 1;\r
-}aa.graphGroup = graphGroup;\r
-}break;\r
-}}\r
-while (st.hasMoreTokens ()) {\r
-group = st.nextToken ();\r
-for (var i = 0; i < al.getAlignmentAnnotation ().length; i++) {\r
-var aa = al.getAlignmentAnnotation ()[i];\r
-if (aa.sequenceRef === seqRef && aa.groupRef === groupRef && aa.label.equalsIgnoreCase (group)) {\r
-aa.graphGroup = graphGroup;\r
-break;\r
-}}\r
-}\r
-} else {\r
-System.err.println ("Couldn't combine annotations. None are added to alignment yet!");\r
-}}, "jalview.datamodel.AlignmentI,~N,java.util.StringTokenizer,jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");\r
-Clazz.defineMethod (c$, "addLine", \r
-function (al, st, seqRef, groupRef) {\r
-var group = st.nextToken ();\r
-var annotation = null;\r
-var alannot = al.getAlignmentAnnotation ();\r
-var value =  new Float (st.nextToken ()).floatValue ();\r
-var label = st.hasMoreTokens () ? st.nextToken () : null;\r
-var colour = null;\r
-if (st.hasMoreTokens ()) {\r
-var ucs =  new jalview.schemes.UserColourScheme (st.nextToken ());\r
-colour = ucs.findColour ('A');\r
-}if (alannot != null) {\r
-for (var i = 0; i < alannot.length; i++) {\r
-if (alannot[i].label.equalsIgnoreCase (group) && (seqRef == null || alannot[i].sequenceRef === seqRef) && (groupRef == null || alannot[i].groupRef === groupRef)) {\r
-alannot[i].setThreshold ( new jalview.datamodel.GraphLine (value, label, colour));\r
-}}\r
-}if (annotation == null) {\r
-return;\r
-}}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer,jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");\r
-Clazz.defineMethod (c$, "addGroup", \r
-function (al, st) {\r
-var sg =  new jalview.datamodel.SequenceGroup ();\r
-sg.setName (st.nextToken ());\r
-var rng = "";\r
-try {\r
-rng = st.nextToken ();\r
-if (rng.length > 0 && !rng.startsWith ("*")) {\r
-sg.setStartRes (Integer.parseInt (rng) - 1);\r
-} else {\r
-sg.setStartRes (0);\r
-}rng = st.nextToken ();\r
-if (rng.length > 0 && !rng.startsWith ("*")) {\r
-sg.setEndRes (Integer.parseInt (rng) - 1);\r
-} else {\r
-sg.setEndRes (al.getWidth () - 1);\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Couldn't parse Group Start or End Field as '*' or a valid column or sequence index: '" + rng + "' - assuming alignment width for group.");\r
-sg.setStartRes (0);\r
-sg.setEndRes (al.getWidth () - 1);\r
-} else {\r
-throw e;\r
-}\r
-}\r
-var index = st.nextToken ();\r
-if (index.equals ("-1")) {\r
-while (st.hasMoreElements ()) {\r
-sg.addSequence (al.findName (st.nextToken ()), false);\r
-}\r
-} else {\r
-var st2 =  new java.util.StringTokenizer (index, ",");\r
-while (st2.hasMoreTokens ()) {\r
-var tmp = st2.nextToken ();\r
-if (tmp.equals ("*")) {\r
-for (var i = 0; i < al.getHeight (); i++) {\r
-sg.addSequence (al.getSequenceAt (i), false);\r
-}\r
-} else if (tmp.indexOf ("-") >= 0) {\r
-var st3 =  new java.util.StringTokenizer (tmp, "-");\r
-var start = (Integer.parseInt (st3.nextToken ()));\r
-var end = (Integer.parseInt (st3.nextToken ()));\r
-if (end > start) {\r
-for (var i = start; i <= end; i++) {\r
-sg.addSequence (al.getSequenceAt (i - 1), false);\r
-}\r
-}} else {\r
-sg.addSequence (al.getSequenceAt (Integer.parseInt (tmp) - 1), false);\r
-}}\r
-}if (this.refSeq != null) {\r
-sg.setStartRes (this.refSeq.findIndex (sg.getStartRes () + 1) - 1);\r
-sg.setEndRes (this.refSeq.findIndex (sg.getEndRes () + 1) - 1);\r
-sg.setSeqrep (this.refSeq);\r
-}if (sg.getSize () > 0) {\r
-al.addGroup (sg);\r
-}}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");\r
-Clazz.defineMethod (c$, "addRowProperties", \r
-function (al, st) {\r
-var label = st.nextToken ();\r
-var keyValue;\r
-var key;\r
-var value;\r
-var scaletofit = false;\r
-var centerlab = false;\r
-var showalllabs = false;\r
-while (st.hasMoreTokens ()) {\r
-keyValue = st.nextToken ();\r
-key = keyValue.substring (0, keyValue.indexOf ("="));\r
-value = keyValue.substring (keyValue.indexOf ("=") + 1);\r
-if (key.equalsIgnoreCase ("scaletofit")) {\r
-scaletofit = Boolean.$valueOf (value).booleanValue ();\r
-}if (key.equalsIgnoreCase ("showalllabs")) {\r
-showalllabs = Boolean.$valueOf (value).booleanValue ();\r
-}if (key.equalsIgnoreCase ("centrelabs")) {\r
-centerlab = Boolean.$valueOf (value).booleanValue ();\r
-}var alr = al.getAlignmentAnnotation ();\r
-if (alr != null) {\r
-for (var i = 0; i < alr.length; i++) {\r
-if (alr[i].label.equalsIgnoreCase (label)) {\r
-alr[i].centreColLabels = centerlab;\r
-alr[i].scaleColLabel = scaletofit;\r
-alr[i].showAllColLabels = showalllabs;\r
-}}\r
-}}\r
-}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");\r
-Clazz.defineMethod (c$, "addProperties", \r
-function (al, st) {\r
-if (al.getGroups () == null) {\r
-return;\r
-}var name = st.nextToken ();\r
-var sg = null;\r
-for (var _sg, $_sg = al.getGroups ().iterator (); $_sg.hasNext () && ((_sg = $_sg.next ()) || true);) {\r
-if ((sg = _sg).getName ().equals (name)) {\r
-break;\r
-} else {\r
-sg = null;\r
-}}\r
-if (sg != null) {\r
-var keyValue;\r
-var key;\r
-var value;\r
-var def = sg.cs;\r
-sg.cs = null;\r
-while (st.hasMoreTokens ()) {\r
-keyValue = st.nextToken ();\r
-key = keyValue.substring (0, keyValue.indexOf ("="));\r
-value = keyValue.substring (keyValue.indexOf ("=") + 1);\r
-if (key.equalsIgnoreCase ("description")) {\r
-sg.setDescription (value);\r
-} else if (key.equalsIgnoreCase ("colour")) {\r
-sg.cs = jalview.schemes.ColourSchemeProperty.getColour (al, value);\r
-} else if (key.equalsIgnoreCase ("pidThreshold")) {\r
-sg.cs.setThreshold (Integer.parseInt (value), true);\r
-} else if (key.equalsIgnoreCase ("consThreshold")) {\r
-sg.cs.setConservationInc (Integer.parseInt (value));\r
-var c =  new jalview.analysis.Conservation ("Group", jalview.schemes.ResidueProperties.propHash, 3, sg.getSequences (null), sg.getStartRes (), sg.getEndRes () + 1);\r
-c.calculate ();\r
-c.verdict (false, 25);\r
-sg.cs.setConservation (c);\r
-} else if (key.equalsIgnoreCase ("outlineColour")) {\r
-sg.setOutlineColour ( new jalview.schemes.UserColourScheme (value).findColour ('A'));\r
-} else if (key.equalsIgnoreCase ("displayBoxes")) {\r
-sg.setDisplayBoxes (Boolean.$valueOf (value).booleanValue ());\r
-} else if (key.equalsIgnoreCase ("showUnconserved")) {\r
-sg.setShowNonconserved (Boolean.$valueOf (value).booleanValue ());\r
-} else if (key.equalsIgnoreCase ("displayText")) {\r
-sg.setDisplayText (Boolean.$valueOf (value).booleanValue ());\r
-} else if (key.equalsIgnoreCase ("colourText")) {\r
-sg.setColourText (Boolean.$valueOf (value).booleanValue ());\r
-} else if (key.equalsIgnoreCase ("textCol1")) {\r
-sg.textColour =  new jalview.schemes.UserColourScheme (value).findColour ('A');\r
-} else if (key.equalsIgnoreCase ("textCol2")) {\r
-sg.textColour2 =  new jalview.schemes.UserColourScheme (value).findColour ('A');\r
-} else if (key.equalsIgnoreCase ("textColThreshold")) {\r
-sg.thresholdTextColour = Integer.parseInt (value);\r
-} else if (key.equalsIgnoreCase ("idColour")) {\r
-sg.setIdColour ((def =  new jalview.schemes.UserColourScheme (value)).findColour ('A'));\r
-} else if (key.equalsIgnoreCase ("hide")) {\r
-sg.setHidereps (true);\r
-} else if (key.equalsIgnoreCase ("hidecols")) {\r
-sg.setHideCols (true);\r
-}sg.recalcConservation ();\r
-}\r
-if (sg.cs == null) {\r
-sg.cs = def;\r
-}}}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");\r
-Clazz.defineMethod (c$, "setBelowAlignment", \r
-function (al, st) {\r
-var token;\r
-var aa;\r
-var ala = al.getAlignmentAnnotation ();\r
-if (ala == null) {\r
-System.err.print ("Warning - no annotation to set below for sequence associated annotation:");\r
-}while (st.hasMoreTokens ()) {\r
-token = st.nextToken ();\r
-if (ala == null) {\r
-System.err.print (" " + token);\r
-} else {\r
-for (var i = 0; i < al.getAlignmentAnnotation ().length; i++) {\r
-aa = al.getAlignmentAnnotation ()[i];\r
-if (aa.sequenceRef === this.refSeq && aa.label.equals (token)) {\r
-aa.belowAlignment = true;\r
-}}\r
-}}\r
-if (ala == null) {\r
-System.err.print ("\n");\r
-}}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");\r
-Clazz.defineMethod (c$, "addAlignmentDetails", \r
-function (al, st) {\r
-var keyValue;\r
-var key;\r
-var value;\r
-while (st.hasMoreTokens ()) {\r
-keyValue = st.nextToken ();\r
-key = keyValue.substring (0, keyValue.indexOf ("="));\r
-value = keyValue.substring (keyValue.indexOf ("=") + 1);\r
-al.setProperty (key, value);\r
-}\r
-}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");\r
-Clazz.defineMethod (c$, "printCSVAnnotations", \r
-function (annotations) {\r
-var sp =  new StringBuffer ();\r
-for (var i = 0; i < annotations.length; i++) {\r
-var atos = annotations[i].toString ();\r
-var p = 0;\r
-do {\r
-var cp = atos.indexOf ("\n", p);\r
-sp.append (annotations[i].label);\r
-sp.append (",");\r
-if (cp > p) {\r
-sp.append (atos.substring (p, cp + 1));\r
-} else {\r
-sp.append (atos.substring (p));\r
-sp.append (this.newline);\r
-}p = cp + 1;\r
-} while (p > 0);\r
-}\r
-return sp.toString ();\r
-}, "~A");\r
-Clazz.defineMethod (c$, "printAnnotationsForView", \r
-function (viewport) {\r
-return this.printAnnotations (viewport.isShowAnnotation () ? viewport.getAlignment ().getAlignmentAnnotation () : null, viewport.getAlignment ().getGroups (), viewport.getAlignment ().getProperties (), viewport.getColumnSelection (), viewport.getAlignment (), null);\r
-}, "jalview.api.AlignViewportI");\r
-Clazz.defineMethod (c$, "printAnnotationsForAlignment", \r
-function (al) {\r
-return this.printAnnotations (al.getAlignmentAnnotation (), al.getGroups (), al.getProperties (), null, al, null);\r
-}, "jalview.datamodel.AlignmentI");\r
-c$.$AnnotationFile$ViewDef$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.viewname = null;\r
-this.hidseqs = null;\r
-this.hiddencols = null;\r
-this.visibleGroups = null;\r
-this.hiddenRepSeqs = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io.AnnotationFile, "ViewDef");\r
-Clazz.makeConstructor (c$, \r
-function (a, b, c, d) {\r
-this.viewname = a;\r
-this.hidseqs = b;\r
-this.hiddencols = c;\r
-this.hiddenRepSeqs = d;\r
-}, "~S,jalview.datamodel.HiddenSequences,jalview.datamodel.ColumnSelection,java.util.Hashtable");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"GRAPHLINE", "GRAPHLINE",\r
-"COMBINE", "COMBINE");\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (null, "jalview.io.AnnotationFile", ["jalview.analysis.Conservation", "jalview.datamodel.AlignmentAnnotation", "$.Annotation", "$.ColumnSelection", "$.GraphLine", "$.SequenceGroup", "jalview.io.AppletFormatAdapter", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.ColourSchemeProperty", "$.ResidueProperties", "$.UserColourScheme", "jalview.util.Comparison", "$.Format", "java.awt.Color", "java.io.BufferedReader", "$.InputStreamReader", "$.StringReader", "java.lang.Boolean", "$.Float", "$.StringBuffer", "java.util.ArrayList", "$.BitSet", "$.Date", "$.Hashtable", "$.StringTokenizer", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.newline = null;
+this.text = null;
+if (!Clazz.isClassDefined ("jalview.io.AnnotationFile.ViewDef")) {
+jalview.io.AnnotationFile.$AnnotationFile$ViewDef$ ();
+}
+this.refSeq = null;
+this.refSeqId = null;
+this.nlinesread = 0;
+this.lastread = "";
+Clazz.instantialize (this, arguments);
+}, jalview.io, "AnnotationFile");
+Clazz.prepareFields (c$, function () {
+this.newline = System.getProperty ("line.separator");
+});
+Clazz.makeConstructor (c$, 
+function () {
+this.init ();
+});
+Clazz.defineMethod (c$, "setNewlineString", 
+function (nl) {
+this.newline = nl;
+this.init ();
+}, "~S");
+Clazz.defineMethod (c$, "getNewlineString", 
+function () {
+return this.newline;
+});
+Clazz.defineMethod (c$, "init", 
+($fz = function () {
+this.text =  new StringBuffer ("JALVIEW_ANNOTATION" + this.newline + "# Created: " +  new java.util.Date () + this.newline + this.newline);
+this.refSeq = null;
+this.refSeqId = null;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "printAnnotations", 
+function (annotations, list, properties) {
+return this.printAnnotations (annotations, list, properties, null, null, null);
+}, "~A,java.util.List,java.util.Hashtable");
+Clazz.defineMethod (c$, "printAnnotations", 
+function (annotations, list, properties, cs, al, view) {
+if (view != null) {
+if (view.viewname != null) {
+this.text.append ("VIEW_DEF\t" + view.viewname + "\n");
+}if (list == null) {
+list = view.visibleGroups;
+}if (cs == null) {
+cs = view.hiddencols;
+}if (al == null) {
+}}if (al != null && al.hasSeqrep ()) {
+this.text.append ("VIEW_SETREF\t" + al.getSeqrep ().getName () + "\n");
+}if (cs != null && cs.hasHiddenColumns ()) {
+this.text.append ("VIEW_HIDECOLS\t");
+var hc = cs.getHiddenColumns ();
+var comma = false;
+for (var r, $r = hc.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
+if (!comma) {
+comma = true;
+} else {
+this.text.append (",");
+}this.text.append ("" + r[0]);
+this.text.append ("-");
+this.text.append ("" + r[1]);
+}
+this.text.append ("\n");
+}if (annotations != null) {
+var oneColour = true;
+var row;
+var comma;
+var refSeq = null;
+var refGroup = null;
+var colours =  new StringBuffer ();
+var graphLine =  new StringBuffer ();
+var rowprops =  new StringBuffer ();
+var graphGroup =  new java.util.Hashtable ();
+var graphGroup_refs =  new java.util.Hashtable ();
+var graphGroupSeen =  new java.util.BitSet ();
+var color;
+for (var i = 0; i < annotations.length; i++) {
+row = annotations[i];
+if (!row.visible && !row.hasScore () && !(row.graphGroup > -1 && graphGroupSeen.get (row.graphGroup))) {
+continue;
+}color = null;
+oneColour = true;
+this.writeSequence_Ref (refSeq, row.sequenceRef);
+refSeq = row.sequenceRef;
+this.writeGroup_Ref (refGroup, row.groupRef);
+refGroup = row.groupRef;
+var hasGlyphs = row.hasIcons;
+var hasLabels = row.hasText;
+var hasValues = row.$hasScore;
+var hasText = false;
+for (var j = 0; row.annotations != null && j < row.annotations.length && (!hasGlyphs || !hasLabels || !hasValues); j++) {
+if (row.annotations[j] != null) {
+hasLabels = new Boolean (hasLabels | (row.annotations[j].displayCharacter != null && row.annotations[j].displayCharacter.length > 0 && !row.annotations[j].displayCharacter.equals (" "))).valueOf ();
+hasGlyphs = new Boolean (hasGlyphs | ((row.annotations[j].secondaryStructure).charCodeAt (0) != 0 && row.annotations[j].secondaryStructure != ' ')).valueOf ();
+hasValues = new Boolean (hasValues | (!Float.isNaN (row.annotations[j].value))).valueOf ();
+hasText = new Boolean (hasText | (row.annotations[j].description != null && row.annotations[j].description.length > 0)).valueOf ();
+}}
+if (row.graph == 0) {
+this.text.append ("NO_GRAPH\t");
+hasValues = false;
+} else {
+if (row.graph == 1) {
+this.text.append ("BAR_GRAPH\t");
+hasGlyphs = false;
+} else if (row.graph == 2) {
+hasGlyphs = false;
+this.text.append ("LINE_GRAPH\t");
+}if (row.getThreshold () != null) {
+graphLine.append ("GRAPHLINE\t");
+graphLine.append (row.label);
+graphLine.append ("\t");
+graphLine.append (row.getThreshold ().value);
+graphLine.append ("\t");
+graphLine.append (row.getThreshold ().label);
+graphLine.append ("\t");
+graphLine.append (jalview.util.Format.getHexString (row.getThreshold ().colour));
+graphLine.append (this.newline);
+}if (row.graphGroup > -1) {
+graphGroupSeen.set (row.graphGroup);
+var key =  new Integer (row.graphGroup);
+if (graphGroup.containsKey (key)) {
+graphGroup.put (key, graphGroup.get (key) + "\t" + row.label);
+} else {
+graphGroup_refs.put (key,  Clazz.newArray (-1, [refSeq, refGroup]));
+graphGroup.put (key, row.label);
+}}}this.text.append (row.label + "\t");
+if (row.description != null) {
+this.text.append (row.description + "\t");
+}for (var j = 0; row.annotations != null && j < row.annotations.length; j++) {
+if (refSeq != null && jalview.util.Comparison.isGap (refSeq.getCharAt (j))) {
+continue;
+}if (row.annotations[j] != null) {
+comma = "";
+if (hasGlyphs) {
+this.text.append (comma);
+if (row.annotations[j].secondaryStructure != ' ') {
+this.text.append (row.annotations[j].secondaryStructure);
+}comma = ",";
+}if (hasValues) {
+if (!Float.isNaN (row.annotations[j].value)) {
+this.text.append (comma + row.annotations[j].value);
+} else {
+System.err.println ("Skipping NaN - not valid value.");
+this.text.append (comma + 0);
+}comma = ",";
+}if (hasLabels) {
+if (row.annotations[j].displayCharacter != null && row.annotations[j].displayCharacter.length > 0 && !row.annotations[j].displayCharacter.equals (" ")) {
+this.text.append (comma + row.annotations[j].displayCharacter);
+comma = ",";
+}}if (hasText) {
+if (row.annotations[j].description != null && row.annotations[j].description.length > 0 && !row.annotations[j].description.equals (row.annotations[j].displayCharacter)) {
+this.text.append (comma + row.annotations[j].description);
+comma = ",";
+}}if (color != null && !color.equals (row.annotations[j].colour)) {
+oneColour = false;
+}color = row.annotations[j].colour;
+if (row.annotations[j].colour != null && row.annotations[j].colour !== java.awt.Color.black) {
+this.text.append (comma + "[" + jalview.util.Format.getHexString (row.annotations[j].colour) + "]");
+comma = ",";
+}}this.text.append ("|");
+}
+if (row.hasScore ()) {
+this.text.append ("\t" + row.score);
+}this.text.append (this.newline);
+if (color != null && color !== java.awt.Color.black && oneColour) {
+colours.append ("COLOUR\t");
+colours.append (row.label);
+colours.append ("\t");
+colours.append (jalview.util.Format.getHexString (color));
+colours.append (this.newline);
+}if (row.scaleColLabel || row.showAllColLabels || row.centreColLabels) {
+rowprops.append ("ROWPROPERTIES\t");
+rowprops.append (row.label);
+rowprops.append ("\tscaletofit=");
+rowprops.append (row.scaleColLabel);
+rowprops.append ("\tshowalllabs=");
+rowprops.append (row.showAllColLabels);
+rowprops.append ("\tcentrelabs=");
+rowprops.append (row.centreColLabels);
+rowprops.append (this.newline);
+}if (graphLine.length () > 0) {
+this.text.append (graphLine.toString ());
+graphLine.setLength (0);
+}}
+this.text.append (this.newline);
+this.text.append (colours.toString ());
+if (graphGroup.size () > 0) {
+var oldRefSeq = refSeq;
+var oldRefGroup = refGroup;
+for (var combine_statement, $combine_statement = graphGroup.entrySet ().iterator (); $combine_statement.hasNext () && ((combine_statement = $combine_statement.next ()) || true);) {
+var seqRefAndGroup = graphGroup_refs.get (combine_statement.getKey ());
+this.writeSequence_Ref (refSeq, seqRefAndGroup[0]);
+refSeq = seqRefAndGroup[0];
+this.writeGroup_Ref (refGroup, seqRefAndGroup[1]);
+refGroup = seqRefAndGroup[1];
+this.text.append ("COMBINE\t");
+this.text.append (combine_statement.getValue ());
+this.text.append (this.newline);
+}
+this.writeSequence_Ref (refSeq, oldRefSeq);
+refSeq = oldRefSeq;
+this.writeGroup_Ref (refGroup, oldRefGroup);
+refGroup = oldRefGroup;
+}this.text.append (rowprops.toString ());
+}if (list != null) {
+this.printGroups (list);
+}if (properties != null) {
+this.text.append (this.newline);
+this.text.append (this.newline);
+this.text.append ("ALIGNMENT");
+var en = properties.keys ();
+while (en.hasMoreElements ()) {
+var key = en.nextElement ().toString ();
+this.text.append ("\t");
+this.text.append (key);
+this.text.append ("=");
+this.text.append (properties.get (key));
+}
+}return this.text.toString ();
+}, "~A,java.util.List,java.util.Hashtable,jalview.datamodel.ColumnSelection,jalview.datamodel.AlignmentI,jalview.io.AnnotationFile.ViewDef");
+Clazz.defineMethod (c$, "writeGroup_Ref", 
+($fz = function (refGroup, next_refGroup) {
+if (next_refGroup == null) {
+if (refGroup != null) {
+this.text.append (this.newline);
+this.text.append ("GROUP_REF\t");
+this.text.append ("ALIGNMENT");
+this.text.append (this.newline);
+}return true;
+} else {
+if (refGroup == null || refGroup !== next_refGroup) {
+this.text.append (this.newline);
+this.text.append ("GROUP_REF\t");
+this.text.append (next_refGroup.getName ());
+this.text.append (this.newline);
+return true;
+}}return false;
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceGroup,jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "writeSequence_Ref", 
+($fz = function (refSeq, next_refSeq) {
+if (next_refSeq == null) {
+if (refSeq != null) {
+this.text.append (this.newline);
+this.text.append ("SEQUENCE_REF\t");
+this.text.append ("ALIGNMENT");
+this.text.append (this.newline);
+return true;
+}} else {
+if (refSeq == null || refSeq !== next_refSeq) {
+this.text.append (this.newline);
+this.text.append ("SEQUENCE_REF\t");
+this.text.append (next_refSeq.getName ());
+this.text.append (this.newline);
+return true;
+}}return false;
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "printGroups", 
+function (list) {
+var seqrep = null;
+for (var sg, $sg = list.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (!sg.hasSeqrep ()) {
+this.text.append ("SEQUENCE_GROUP\t" + sg.getName () + "\t" + (sg.getStartRes () + 1) + "\t" + (sg.getEndRes () + 1) + "\t" + "-1\t");
+seqrep = null;
+} else {
+seqrep = sg.getSeqrep ();
+this.text.append ("SEQUENCE_REF\t");
+this.text.append (seqrep.getName ());
+this.text.append (this.newline);
+this.text.append ("SEQUENCE_GROUP\t");
+this.text.append (sg.getName ());
+this.text.append ("\t");
+this.text.append ("" + (seqrep.findPosition (sg.getStartRes ())));
+this.text.append ("\t");
+this.text.append ((seqrep.findPosition (sg.getEndRes ())));
+this.text.append ("\t");
+this.text.append ("-1\t");
+}for (var s = 0; s < sg.getSize (); s++) {
+this.text.append (sg.getSequenceAt (s).getName ());
+this.text.append ("\t");
+}
+this.text.append (this.newline);
+this.text.append ("PROPERTIES\t");
+this.text.append (sg.getName ());
+this.text.append ("\t");
+if (sg.getDescription () != null) {
+this.text.append ("description=");
+this.text.append (sg.getDescription ());
+this.text.append ("\t");
+}if (sg.cs != null) {
+this.text.append ("colour=");
+this.text.append (jalview.schemes.ColourSchemeProperty.getColourName (sg.cs));
+this.text.append ("\t");
+if (sg.cs.getThreshold () != 0) {
+this.text.append ("pidThreshold=");
+this.text.append (sg.cs.getThreshold ());
+}if (sg.cs.conservationApplied ()) {
+this.text.append ("consThreshold=");
+this.text.append (sg.cs.getConservationInc ());
+this.text.append ("\t");
+}}this.text.append ("outlineColour=");
+this.text.append (jalview.util.Format.getHexString (sg.getOutlineColour ()));
+this.text.append ("\t");
+this.text.append ("displayBoxes=");
+this.text.append (sg.getDisplayBoxes ());
+this.text.append ("\t");
+this.text.append ("displayText=");
+this.text.append (sg.getDisplayText ());
+this.text.append ("\t");
+this.text.append ("colourText=");
+this.text.append (sg.getColourText ());
+this.text.append ("\t");
+this.text.append ("showUnconserved=");
+this.text.append (sg.getShowNonconserved ());
+this.text.append ("\t");
+if (sg.textColour !== java.awt.Color.black) {
+this.text.append ("textCol1=");
+this.text.append (jalview.util.Format.getHexString (sg.textColour));
+this.text.append ("\t");
+}if (sg.textColour2 !== java.awt.Color.white) {
+this.text.append ("textCol2=");
+this.text.append (jalview.util.Format.getHexString (sg.textColour2));
+this.text.append ("\t");
+}if (sg.thresholdTextColour != 0) {
+this.text.append ("textColThreshold=");
+this.text.append (sg.thresholdTextColour);
+this.text.append ("\t");
+}if (sg.idColour != null) {
+this.text.append ("idColour=");
+this.text.append (jalview.util.Format.getHexString (sg.idColour));
+this.text.append ("\t");
+}if (sg.isHidereps ()) {
+this.text.append ("hide=true\t");
+}if (sg.isHideCols ()) {
+this.text.append ("hidecols=true\t");
+}if (seqrep != null) {
+this.text.append (this.newline);
+this.text.append ("SEQUENCE_REF");
+}this.text.append (this.newline);
+this.text.append (this.newline);
+}
+}, "java.util.List");
+Clazz.defineMethod (c$, "annotateAlignmentView", 
+function (viewport, file, protocol) {
+var colSel = viewport.getColumnSelection ();
+if (colSel == null) {
+colSel =  new jalview.datamodel.ColumnSelection ();
+}var rslt = this.readAnnotationFile (viewport.getAlignment (), colSel, file, protocol);
+if (rslt && (colSel.hasSelectedColumns () || colSel.hasHiddenColumns ())) {
+viewport.setColumnSelection (colSel);
+}return rslt;
+}, "jalview.api.AlignViewportI,~S,~S");
+Clazz.defineMethod (c$, "readAnnotationFile", 
+function (al, file, protocol) {
+return this.readAnnotationFile (al, null, file, protocol);
+}, "jalview.datamodel.AlignmentI,~S,~S");
+Clazz.defineMethod (c$, "readAnnotationFile", 
+function (al, colSel, file, protocol) {
+var $in = null;
+try {
+if (protocol.equals (jalview.io.AppletFormatAdapter.FILE)) {
+$in = jalview.jsdev.GenericFileAdapter.getReader (file, false);
+} else if (protocol.equals (jalview.io.AppletFormatAdapter.URL)) {
+$in = jalview.jsdev.GenericFileAdapter.getReader (file, true);
+} else if (protocol.equals (jalview.io.AppletFormatAdapter.PASTE)) {
+$in =  new java.io.BufferedReader ( new java.io.StringReader (file));
+} else if (protocol.equals (jalview.io.AppletFormatAdapter.CLASSLOADER)) {
+var is = this.getClass ().getResourceAsStream ("/" + file);
+if (is != null) {
+$in =  new java.io.BufferedReader ( new java.io.InputStreamReader (is));
+}}if ($in != null) {
+return this.parseAnnotationFrom (al, colSel, $in);
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+System.out.println ("Problem reading annotation file: " + ex);
+if (this.nlinesread > 0) {
+System.out.println ("Last read line " + this.nlinesread + ": '" + this.lastread + "' (first 80 chars) ...");
+}return false;
+} else {
+throw ex;
+}
+}
+return false;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,~S,~S");
+Clazz.defineMethod (c$, "parseAnnotationFrom", 
+function (al, colSel, $in) {
+this.nlinesread = 0;
+var combineAnnotation_calls =  new java.util.ArrayList ();
+var deferredAnnotation_calls =  new java.util.ArrayList ();
+var modified = false;
+var groupRef = null;
+var groupRefRows =  new java.util.Hashtable ();
+var autoAnnots =  new java.util.Hashtable ();
+{
+var line;
+var label;
+var description;
+var token;
+var graphStyle;
+var index;
+var refSeqIndex = 1;
+var existingAnnotations = 0;
+var overrideAutoAnnot = false;
+if (al.getAlignmentAnnotation () != null) {
+existingAnnotations = al.getAlignmentAnnotation ().length;
+if (existingAnnotations > 0) {
+var aa = al.getAlignmentAnnotation ();
+for (var aai = 0; aai < aa.length; aai++) {
+if (aa[aai].autoCalculated) {
+autoAnnots.put (this.autoAnnotsKey (aa[aai], aa[aai].sequenceRef, (aa[aai].groupRef == null ? null : aa[aai].groupRef.getName ())),  new Integer (1));
+}}
+}}var alWidth = al.getWidth ();
+var st;
+var annotations;
+var annotation = null;
+var jvAnnotationFile = false;
+while ((line = $in.readLine ()) != null) {
+this.nlinesread++;
+this.lastread =  String.instantialize (line);
+if (line.indexOf ("#") == 0) {
+continue;
+}if (line.indexOf ("JALVIEW_ANNOTATION") > -1) {
+jvAnnotationFile = true;
+break;
+}}
+if (!jvAnnotationFile) {
+$in.close ();
+return false;
+}while ((line = $in.readLine ()) != null) {
+this.nlinesread++;
+this.lastread =  String.instantialize (line);
+if (line.indexOf ("#") == 0 || line.indexOf ("JALVIEW_ANNOTATION") > -1 || line.length == 0) {
+continue;
+}st =  new java.util.StringTokenizer (line, "\t");
+token = st.nextToken ();
+if (token.equalsIgnoreCase ("COLOUR")) {
+this.colourAnnotations (al, st.nextToken (), st.nextToken ());
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase (jalview.io.AnnotationFile.COMBINE)) {
+combineAnnotation_calls.add ( Clazz.newArray (-1, [st, this.refSeq, groupRef]));
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("ROWPROPERTIES")) {
+this.addRowProperties (al, st);
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase (jalview.io.AnnotationFile.GRAPHLINE)) {
+deferredAnnotation_calls.add ( Clazz.newArray (-1, [jalview.io.AnnotationFile.GRAPHLINE, st, this.refSeq, groupRef]));
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("SEQUENCE_REF")) {
+if (st.hasMoreTokens ()) {
+this.refSeq = al.findName (this.refSeqId = st.nextToken ());
+if (this.refSeq == null) {
+this.refSeqId = null;
+}try {
+refSeqIndex = Integer.parseInt (st.nextToken ());
+if (refSeqIndex < 1) {
+refSeqIndex = 1;
+System.out.println ("WARNING: SEQUENCE_REF index must be > 0 in AnnotationFile");
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+refSeqIndex = 1;
+} else {
+throw ex;
+}
+}
+} else {
+this.refSeq = null;
+this.refSeqId = null;
+}continue;
+} else if (token.equalsIgnoreCase ("GROUP_REF")) {
+groupRef = null;
+if (st.hasMoreTokens ()) {
+groupRef = st.nextToken ();
+if (groupRef.length < 1) {
+groupRef = null;
+} else {
+if (groupRefRows.get (groupRef) == null) {
+groupRefRows.put (groupRef,  new java.util.Vector ());
+}}}continue;
+} else if (token.equalsIgnoreCase ("SEQUENCE_GROUP")) {
+this.addGroup (al, st);
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("PROPERTIES")) {
+this.addProperties (al, st);
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("BELOW_ALIGNMENT")) {
+this.setBelowAlignment (al, st);
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("ALIGNMENT")) {
+this.addAlignmentDetails (al, st);
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("VIEW_SETREF")) {
+if (this.refSeq != null) {
+al.setSeqrep (this.refSeq);
+}modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("VIEW_HIDECOLS")) {
+if (st.hasMoreTokens ()) {
+if (colSel == null) {
+colSel =  new jalview.datamodel.ColumnSelection ();
+}this.parseHideCols (colSel, st.nextToken ());
+}modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("HIDE_INSERTIONS")) {
+var sr = this.refSeq == null ? al.getSeqrep () : this.refSeq;
+if (sr == null) {
+sr = al.getSequenceAt (0);
+}if (sr != null) {
+if (colSel == null) {
+System.err.println ("Cannot process HIDE_INSERTIONS without an alignment view: Ignoring line: " + line);
+} else {
+colSel.hideInsertionsFor (sr);
+}}modified = true;
+continue;
+}graphStyle = jalview.datamodel.AlignmentAnnotation.getGraphValueFromString (token);
+label = st.nextToken ();
+index = 0;
+annotations =  new Array (alWidth);
+description = null;
+var score = NaN;
+if (st.hasMoreTokens ()) {
+line = st.nextToken ();
+if (line.indexOf ("|") == -1) {
+description = line;
+if (st.hasMoreTokens ()) {
+line = st.nextToken ();
+}}if (st.hasMoreTokens ()) {
+score = Float.$valueOf (st.nextToken ()).floatValue ();
+}st =  new java.util.StringTokenizer (line, "|", true);
+var emptyColumn = true;
+var onlyOneElement = (st.countTokens () == 1);
+while (st.hasMoreElements () && index < alWidth) {
+token = st.nextToken ().trim ();
+if (onlyOneElement) {
+try {
+score = Float.$valueOf (token).floatValue ();
+break;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+}if (token.equals ("|")) {
+if (emptyColumn) {
+index++;
+}emptyColumn = true;
+} else {
+annotations[index++] = this.parseAnnotation (token, graphStyle);
+emptyColumn = false;
+}}
+}annotation =  new jalview.datamodel.AlignmentAnnotation (label, description, (index == 0) ? null : annotations, 0, 0, graphStyle);
+annotation.score = score;
+if (!overrideAutoAnnot && autoAnnots.containsKey (this.autoAnnotsKey (annotation, this.refSeq, groupRef))) {
+continue;
+}if (this.refSeq != null) {
+annotation.belowAlignment = false;
+var referedSeq = this.refSeq;
+do {
+var ann =  new jalview.datamodel.AlignmentAnnotation (annotation);
+annotation.createSequenceMapping (referedSeq, refSeqIndex, false);
+annotation.adjustForAlignment ();
+referedSeq.addAlignmentAnnotation (annotation);
+al.addAnnotation (annotation);
+al.setAnnotationIndex (annotation, al.getAlignmentAnnotation ().length - existingAnnotations - 1);
+if (groupRef != null) {
+(groupRefRows.get (groupRef)).addElement (annotation);
+}annotation = ann;
+} while (this.refSeqId != null && (referedSeq = al.findName (referedSeq, this.refSeqId, true)) != null);
+} else {
+al.addAnnotation (annotation);
+al.setAnnotationIndex (annotation, al.getAlignmentAnnotation ().length - existingAnnotations - 1);
+if (groupRef != null) {
+(groupRefRows.get (groupRef)).addElement (annotation);
+}}modified = true;
+}
+var groupRefLookup =  new java.util.Hashtable ();
+var en = groupRefRows.keys ();
+while (en.hasMoreElements ()) {
+groupRef = en.nextElement ();
+var matched = false;
+for (var theGroup, $theGroup = al.getGroups ().iterator (); $theGroup.hasNext () && ((theGroup = $theGroup.next ()) || true);) {
+if (theGroup.getName ().equals (groupRef)) {
+if (matched) {
+System.err.println ("Ignoring 1:many group reference mappings for group name '" + groupRef + "'");
+} else {
+matched = true;
+var rowset = groupRefRows.get (groupRef);
+groupRefLookup.put (groupRef, theGroup);
+if (rowset != null && rowset.size () > 0) {
+var alan = null;
+for (var elm = 0, elmSize = rowset.size (); elm < elmSize; elm++) {
+alan = rowset.elementAt (elm);
+alan.groupRef = theGroup;
+}
+}}}}
+(groupRefRows.get (groupRef)).removeAllElements ();
+}
+for (var _deferred_args, $_deferred_args = deferredAnnotation_calls.iterator (); $_deferred_args.hasNext () && ((_deferred_args = $_deferred_args.next ()) || true);) {
+if (_deferred_args[0] === jalview.io.AnnotationFile.GRAPHLINE) {
+this.addLine (al, _deferred_args[1], _deferred_args[2], (_deferred_args[3] == null) ? null : groupRefLookup.get (_deferred_args[3]));
+}}
+var combinecount = 0;
+for (var _combine_args, $_combine_args = combineAnnotation_calls.iterator (); $_combine_args.hasNext () && ((_combine_args = $_combine_args.next ()) || true);) {
+this.combineAnnotations (al, ++combinecount, _combine_args[0], _combine_args[1], (_combine_args[2] == null) ? null : groupRefLookup.get (_combine_args[2]));
+}
+}return modified;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,java.io.BufferedReader");
+Clazz.defineMethod (c$, "parseHideCols", 
+($fz = function (colSel, nextToken) {
+var inval =  new java.util.StringTokenizer (nextToken, ",");
+while (inval.hasMoreTokens ()) {
+var range = inval.nextToken ().trim ();
+var from;
+var to = range.indexOf ("-");
+if (to == -1) {
+from = to = Integer.parseInt (range);
+if (from >= 0) {
+colSel.hideColumns (from, to);
+}} else {
+from = Integer.parseInt (range.substring (0, to));
+if (to < range.length - 1) {
+to = Integer.parseInt (range.substring (to + 1));
+} else {
+to = from;
+}if (from > 0 && to >= from) {
+colSel.hideColumns (from, to);
+}}}
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.ColumnSelection,~S");
+Clazz.defineMethod (c$, "autoAnnotsKey", 
+($fz = function (annotation, refSeq, groupRef) {
+return annotation.graph + "\t" + annotation.label + "\t" + annotation.description + "\t" + (refSeq != null ? refSeq.getDisplayId (true) : "");
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.SequenceI,~S");
+Clazz.defineMethod (c$, "parseAnnotation", 
+function (string, graphStyle) {
+var hasSymbols = (graphStyle == 0);
+var desc = null;
+var displayChar = null;
+var ss = ' ';
+var value = 0;
+var parsedValue = false;
+var dcset = false;
+var colour = null;
+var i = string.indexOf ("[");
+var j = string.indexOf ("]");
+if (i > -1 && j > -1) {
+var ucs =  new jalview.schemes.UserColourScheme ();
+colour = ucs.getColourFromString (string.substring (i + 1, j));
+if (i > 0 && string.charAt (i - 1) == ',') {
+i--;
+}string = string.substring (0, i) + string.substring (j + 1);
+}var st =  new java.util.StringTokenizer (string, ",", true);
+var token;
+var seenContent = false;
+var pass = 0;
+while (st.hasMoreTokens ()) {
+pass++;
+token = st.nextToken ().trim ();
+if (token.equals (",")) {
+if (!seenContent && parsedValue && !dcset) {
+dcset = true;
+displayChar = " ";
+}seenContent = false;
+continue;
+} else {
+seenContent = true;
+}if (!parsedValue) {
+try {
+displayChar = token;
+value =  new Float (token).floatValue ();
+parsedValue = true;
+continue;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+} else {
+if (token.length == 1) {
+displayChar = token;
+}}if (hasSymbols && (token.equals ("H") || token.equals ("E") || token.equals ("S") || token.equals (" "))) {
+ss = token.charAt (0);
+if (displayChar.equals (token.substring (0, 1))) {
+displayChar = "";
+}} else if (desc == null || (parsedValue && pass > 2)) {
+desc = token;
+}}
+if (displayChar != null && desc != null && desc.length == 1) {
+if (displayChar.length > 1) {
+var tmp = displayChar;
+displayChar = desc;
+desc = tmp;
+} else {
+if (displayChar.equals (desc)) {
+desc = null;
+}}}var anot =  new jalview.datamodel.Annotation (displayChar, desc, ss, value);
+anot.colour = colour;
+return anot;
+}, "~S,~N");
+Clazz.defineMethod (c$, "colourAnnotations", 
+function (al, label, colour) {
+var ucs =  new jalview.schemes.UserColourScheme (colour);
+var annotations;
+for (var i = 0; i < al.getAlignmentAnnotation ().length; i++) {
+if (al.getAlignmentAnnotation ()[i].label.equalsIgnoreCase (label)) {
+annotations = al.getAlignmentAnnotation ()[i].annotations;
+for (var j = 0; j < annotations.length; j++) {
+if (annotations[j] != null) {
+annotations[j].colour = ucs.findColour ('A');
+}}
+}}
+}, "jalview.datamodel.AlignmentI,~S,~S");
+Clazz.defineMethod (c$, "combineAnnotations", 
+function (al, combineCount, st, seqRef, groupRef) {
+var group = st.nextToken ();
+var graphGroup = 0;
+if (al.getAlignmentAnnotation () != null) {
+for (var i = 0; i < al.getAlignmentAnnotation ().length; i++) {
+var aa = al.getAlignmentAnnotation ()[i];
+if (aa.graphGroup > graphGroup) {
+graphGroup = aa.graphGroup + 1;
+}if (aa.sequenceRef === seqRef && aa.groupRef === groupRef && aa.label.equalsIgnoreCase (group)) {
+if (aa.graphGroup > -1) {
+graphGroup = aa.graphGroup;
+} else {
+if (graphGroup <= combineCount) {
+graphGroup = combineCount + 1;
+}aa.graphGroup = graphGroup;
+}break;
+}}
+while (st.hasMoreTokens ()) {
+group = st.nextToken ();
+for (var i = 0; i < al.getAlignmentAnnotation ().length; i++) {
+var aa = al.getAlignmentAnnotation ()[i];
+if (aa.sequenceRef === seqRef && aa.groupRef === groupRef && aa.label.equalsIgnoreCase (group)) {
+aa.graphGroup = graphGroup;
+break;
+}}
+}
+} else {
+System.err.println ("Couldn't combine annotations. None are added to alignment yet!");
+}}, "jalview.datamodel.AlignmentI,~N,java.util.StringTokenizer,jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "addLine", 
+function (al, st, seqRef, groupRef) {
+var group = st.nextToken ();
+var annotation = null;
+var alannot = al.getAlignmentAnnotation ();
+var value =  new Float (st.nextToken ()).floatValue ();
+var label = st.hasMoreTokens () ? st.nextToken () : null;
+var colour = null;
+if (st.hasMoreTokens ()) {
+var ucs =  new jalview.schemes.UserColourScheme (st.nextToken ());
+colour = ucs.findColour ('A');
+}if (alannot != null) {
+for (var i = 0; i < alannot.length; i++) {
+if (alannot[i].label.equalsIgnoreCase (group) && (seqRef == null || alannot[i].sequenceRef === seqRef) && (groupRef == null || alannot[i].groupRef === groupRef)) {
+alannot[i].setThreshold ( new jalview.datamodel.GraphLine (value, label, colour));
+}}
+}if (annotation == null) {
+return;
+}}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer,jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "addGroup", 
+function (al, st) {
+var sg =  new jalview.datamodel.SequenceGroup ();
+sg.setName (st.nextToken ());
+var rng = "";
+try {
+rng = st.nextToken ();
+if (rng.length > 0 && !rng.startsWith ("*")) {
+sg.setStartRes (Integer.parseInt (rng) - 1);
+} else {
+sg.setStartRes (0);
+}rng = st.nextToken ();
+if (rng.length > 0 && !rng.startsWith ("*")) {
+sg.setEndRes (Integer.parseInt (rng) - 1);
+} else {
+sg.setEndRes (al.getWidth () - 1);
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Couldn't parse Group Start or End Field as '*' or a valid column or sequence index: '" + rng + "' - assuming alignment width for group.");
+sg.setStartRes (0);
+sg.setEndRes (al.getWidth () - 1);
+} else {
+throw e;
+}
+}
+var index = st.nextToken ();
+if (index.equals ("-1")) {
+while (st.hasMoreElements ()) {
+sg.addSequence (al.findName (st.nextToken ()), false);
+}
+} else {
+var st2 =  new java.util.StringTokenizer (index, ",");
+while (st2.hasMoreTokens ()) {
+var tmp = st2.nextToken ();
+if (tmp.equals ("*")) {
+for (var i = 0; i < al.getHeight (); i++) {
+sg.addSequence (al.getSequenceAt (i), false);
+}
+} else if (tmp.indexOf ("-") >= 0) {
+var st3 =  new java.util.StringTokenizer (tmp, "-");
+var start = (Integer.parseInt (st3.nextToken ()));
+var end = (Integer.parseInt (st3.nextToken ()));
+if (end > start) {
+for (var i = start; i <= end; i++) {
+sg.addSequence (al.getSequenceAt (i - 1), false);
+}
+}} else {
+sg.addSequence (al.getSequenceAt (Integer.parseInt (tmp) - 1), false);
+}}
+}if (this.refSeq != null) {
+sg.setStartRes (this.refSeq.findIndex (sg.getStartRes () + 1) - 1);
+sg.setEndRes (this.refSeq.findIndex (sg.getEndRes () + 1) - 1);
+sg.setSeqrep (this.refSeq);
+}if (sg.getSize () > 0) {
+al.addGroup (sg);
+}}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");
+Clazz.defineMethod (c$, "addRowProperties", 
+function (al, st) {
+var label = st.nextToken ();
+var keyValue;
+var key;
+var value;
+var scaletofit = false;
+var centerlab = false;
+var showalllabs = false;
+while (st.hasMoreTokens ()) {
+keyValue = st.nextToken ();
+key = keyValue.substring (0, keyValue.indexOf ("="));
+value = keyValue.substring (keyValue.indexOf ("=") + 1);
+if (key.equalsIgnoreCase ("scaletofit")) {
+scaletofit = Boolean.$valueOf (value).booleanValue ();
+}if (key.equalsIgnoreCase ("showalllabs")) {
+showalllabs = Boolean.$valueOf (value).booleanValue ();
+}if (key.equalsIgnoreCase ("centrelabs")) {
+centerlab = Boolean.$valueOf (value).booleanValue ();
+}var alr = al.getAlignmentAnnotation ();
+if (alr != null) {
+for (var i = 0; i < alr.length; i++) {
+if (alr[i].label.equalsIgnoreCase (label)) {
+alr[i].centreColLabels = centerlab;
+alr[i].scaleColLabel = scaletofit;
+alr[i].showAllColLabels = showalllabs;
+}}
+}}
+}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");
+Clazz.defineMethod (c$, "addProperties", 
+function (al, st) {
+if (al.getGroups () == null) {
+return;
+}var name = st.nextToken ();
+var sg = null;
+for (var _sg, $_sg = al.getGroups ().iterator (); $_sg.hasNext () && ((_sg = $_sg.next ()) || true);) {
+if ((sg = _sg).getName ().equals (name)) {
+break;
+} else {
+sg = null;
+}}
+if (sg != null) {
+var keyValue;
+var key;
+var value;
+var def = sg.cs;
+sg.cs = null;
+while (st.hasMoreTokens ()) {
+keyValue = st.nextToken ();
+key = keyValue.substring (0, keyValue.indexOf ("="));
+value = keyValue.substring (keyValue.indexOf ("=") + 1);
+if (key.equalsIgnoreCase ("description")) {
+sg.setDescription (value);
+} else if (key.equalsIgnoreCase ("colour")) {
+sg.cs = jalview.schemes.ColourSchemeProperty.getColour (al, value);
+} else if (key.equalsIgnoreCase ("pidThreshold")) {
+sg.cs.setThreshold (Integer.parseInt (value), true);
+} else if (key.equalsIgnoreCase ("consThreshold")) {
+sg.cs.setConservationInc (Integer.parseInt (value));
+var c =  new jalview.analysis.Conservation ("Group", jalview.schemes.ResidueProperties.propHash, 3, sg.getSequences (null), sg.getStartRes (), sg.getEndRes () + 1);
+c.calculate ();
+c.verdict (false, 25);
+sg.cs.setConservation (c);
+} else if (key.equalsIgnoreCase ("outlineColour")) {
+sg.setOutlineColour ( new jalview.schemes.UserColourScheme (value).findColour ('A'));
+} else if (key.equalsIgnoreCase ("displayBoxes")) {
+sg.setDisplayBoxes (Boolean.$valueOf (value).booleanValue ());
+} else if (key.equalsIgnoreCase ("showUnconserved")) {
+sg.setShowNonconserved (Boolean.$valueOf (value).booleanValue ());
+} else if (key.equalsIgnoreCase ("displayText")) {
+sg.setDisplayText (Boolean.$valueOf (value).booleanValue ());
+} else if (key.equalsIgnoreCase ("colourText")) {
+sg.setColourText (Boolean.$valueOf (value).booleanValue ());
+} else if (key.equalsIgnoreCase ("textCol1")) {
+sg.textColour =  new jalview.schemes.UserColourScheme (value).findColour ('A');
+} else if (key.equalsIgnoreCase ("textCol2")) {
+sg.textColour2 =  new jalview.schemes.UserColourScheme (value).findColour ('A');
+} else if (key.equalsIgnoreCase ("textColThreshold")) {
+sg.thresholdTextColour = Integer.parseInt (value);
+} else if (key.equalsIgnoreCase ("idColour")) {
+sg.setIdColour ((def =  new jalview.schemes.UserColourScheme (value)).findColour ('A'));
+} else if (key.equalsIgnoreCase ("hide")) {
+sg.setHidereps (true);
+} else if (key.equalsIgnoreCase ("hidecols")) {
+sg.setHideCols (true);
+}sg.recalcConservation ();
+}
+if (sg.cs == null) {
+sg.cs = def;
+}}}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");
+Clazz.defineMethod (c$, "setBelowAlignment", 
+function (al, st) {
+var token;
+var aa;
+var ala = al.getAlignmentAnnotation ();
+if (ala == null) {
+System.err.print ("Warning - no annotation to set below for sequence associated annotation:");
+}while (st.hasMoreTokens ()) {
+token = st.nextToken ();
+if (ala == null) {
+System.err.print (" " + token);
+} else {
+for (var i = 0; i < al.getAlignmentAnnotation ().length; i++) {
+aa = al.getAlignmentAnnotation ()[i];
+if (aa.sequenceRef === this.refSeq && aa.label.equals (token)) {
+aa.belowAlignment = true;
+}}
+}}
+if (ala == null) {
+System.err.print ("\n");
+}}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");
+Clazz.defineMethod (c$, "addAlignmentDetails", 
+function (al, st) {
+var keyValue;
+var key;
+var value;
+while (st.hasMoreTokens ()) {
+keyValue = st.nextToken ();
+key = keyValue.substring (0, keyValue.indexOf ("="));
+value = keyValue.substring (keyValue.indexOf ("=") + 1);
+al.setProperty (key, value);
+}
+}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");
+Clazz.defineMethod (c$, "printCSVAnnotations", 
+function (annotations) {
+var sp =  new StringBuffer ();
+for (var i = 0; i < annotations.length; i++) {
+var atos = annotations[i].toString ();
+var p = 0;
+do {
+var cp = atos.indexOf ("\n", p);
+sp.append (annotations[i].label);
+sp.append (",");
+if (cp > p) {
+sp.append (atos.substring (p, cp + 1));
+} else {
+sp.append (atos.substring (p));
+sp.append (this.newline);
+}p = cp + 1;
+} while (p > 0);
+}
+return sp.toString ();
+}, "~A");
+Clazz.defineMethod (c$, "printAnnotationsForView", 
+function (viewport) {
+return this.printAnnotations (viewport.isShowAnnotation () ? viewport.getAlignment ().getAlignmentAnnotation () : null, viewport.getAlignment ().getGroups (), viewport.getAlignment ().getProperties (), viewport.getColumnSelection (), viewport.getAlignment (), null);
+}, "jalview.api.AlignViewportI");
+Clazz.defineMethod (c$, "printAnnotationsForAlignment", 
+function (al) {
+return this.printAnnotations (al.getAlignmentAnnotation (), al.getGroups (), al.getProperties (), null, al, null);
+}, "jalview.datamodel.AlignmentI");
+c$.$AnnotationFile$ViewDef$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.viewname = null;
+this.hidseqs = null;
+this.hiddencols = null;
+this.visibleGroups = null;
+this.hiddenRepSeqs = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io.AnnotationFile, "ViewDef");
+Clazz.makeConstructor (c$, 
+function (a, b, c, d) {
+this.viewname = a;
+this.hidseqs = b;
+this.hiddencols = c;
+this.hiddenRepSeqs = d;
+}, "~S,jalview.datamodel.HiddenSequences,jalview.datamodel.ColumnSelection,java.util.Hashtable");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"GRAPHLINE", "GRAPHLINE",
+"COMBINE", "COMBINE");
+});
index 6c39b9d..2c63ec8 100644 (file)
Binary files a/bin/jalview/io/AppletFormatAdapter.class and b/bin/jalview/io/AppletFormatAdapter.class differ
index 681a44d..f4dab9f 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (null, "jalview.io.AppletFormatAdapter", ["MCview.PDBfile", "jalview.datamodel.Alignment", "jalview.io.FileParse", "$.IdentifyFile", "jalview.jsdev.GenericFileAdapter", "jalview.util.MessageManager", "java.io.IOException", "java.lang.Exception", "$.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.viewpanel = null;\r
-this.annotFromStructure = false;\r
-this.localSecondaryStruct = false;\r
-this.serviceSecondaryStruct = false;\r
-this.alignFile = null;\r
-this.inFile = null;\r
-this.newline = null;\r
-this.exportSettings = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io, "AppletFormatAdapter");\r
-Clazz.prepareFields (c$, function () {\r
-this.newline = System.getProperty ("line.separator");\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (viewpanel) {\r
-this.viewpanel = viewpanel;\r
-}, "jalview.api.AlignmentViewPanel");\r
-Clazz.makeConstructor (c$, \r
-function (alignPanel, settings) {\r
-this.viewpanel = alignPanel;\r
-this.exportSettings = settings;\r
-}, "jalview.api.AlignmentViewPanel,jalview.api.AlignExportSettingI");\r
-c$.prettyPrint = Clazz.defineMethod (c$, "prettyPrint", \r
-function (els) {\r
-var list =  new StringBuffer ();\r
-for (var i = 0, iSize = els.length - 1; i < iSize; i++) {\r
-list.append (els[i]);\r
-list.append (", ");\r
-}\r
-list.append (" and " + els[els.length - 1] + ".");\r
-return list.toString ();\r
-}, "~A");\r
-Clazz.defineMethod (c$, "setNewlineString", \r
-function (nl) {\r
-this.newline = nl;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getNewlineString", \r
-function () {\r
-return this.newline;\r
-});\r
-c$.isValidFormat = Clazz.defineMethod (c$, "isValidFormat", \r
-function (format) {\r
-return jalview.io.AppletFormatAdapter.isValidFormat (format, false);\r
-}, "~S");\r
-c$.isValidFormat = Clazz.defineMethod (c$, "isValidFormat", \r
-function (format, forwriting) {\r
-var valid = false;\r
-var format_list = (forwriting) ? jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS : jalview.io.AppletFormatAdapter.READABLE_FORMATS;\r
-for (var element, $element = 0, $$element = format_list; $element < $$element.length && ((element = $$element[$element]) || true); $element++) {\r
-if (element.equalsIgnoreCase (format)) {\r
-return true;\r
-}}\r
-return valid;\r
-}, "~S,~B");\r
-Clazz.defineMethod (c$, "readFile", \r
-function (inFile, type, format) {\r
-this.inFile = inFile;\r
-try {\r
-if (format.equals ("FASTA")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [inFile, type]);\r
-} else if (format.equals ("MSF")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", [inFile, type]);\r
-} else if (format.equals ("PileUp")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", [inFile, type]);\r
-} else if (format.equals ("CLUSTAL")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", [inFile, type]);\r
-} else if (format.equals ("BLC")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", [inFile, type]);\r
-} else if (format.equals ("PIR")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", [inFile, type]);\r
-} else if (format.equals ("PFAM")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", [inFile, type]);\r
-} else if (format.equals ("JnetFile")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [inFile, type]);\r
-(this.alignFile).removeNonSequences ();\r
-} else if (format.equals ("PDB")) {\r
-this.alignFile =  new MCview.PDBfile (this.annotFromStructure, this.localSecondaryStruct, this.serviceSecondaryStruct, inFile, type);\r
-} else if (format.equals ("STH")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [inFile, type]);\r
-} else if (format.equals ("SimpleBLAST")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("SimpleBlastFile", [inFile, type]);\r
-} else if (format.equals ("PHYLIP")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", [inFile, type]);\r
-} else if (format.equals ("JSON")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", [inFile, type]);\r
-} else if (format.equals ("HTML")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("HtmlFile", [inFile, type]);\r
-} else if (format.equals ("RNAML")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", [inFile, type]);\r
-} else if (format.equals ("GFF v2 or v3")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("Gff3File", [inFile, type]);\r
-}return this.buildAlignmentFrom (this.alignFile);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-System.err.println ("Failed to read alignment using the '" + format + "' reader.\n" + e);\r
-if (e.getMessage () != null && e.getMessage ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {\r
-throw  new java.io.IOException (e.getMessage ());\r
-}if (type.equalsIgnoreCase ("Paste")) {\r
-try {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [">UNKNOWN\n" + inFile, "Paste"]);\r
-return this.buildAlignmentFrom (this.alignFile);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-if (ex.toString ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {\r
-throw  new java.io.IOException (e.getMessage ());\r
-}ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}throw  new java.io.IOException (jalview.io.AppletFormatAdapter.SUPPORTED_FORMATS);\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "~S,~S,~S");\r
-Clazz.defineMethod (c$, "readFromFile", \r
-function (source, format) {\r
-this.inFile = source.getInFile ();\r
-var type = source.type;\r
-try {\r
-if (format.equals ("FASTA")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [source]);\r
-} else if (format.equals ("MSF")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", [source]);\r
-} else if (format.equals ("PileUp")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", [source]);\r
-} else if (format.equals ("CLUSTAL")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", [source]);\r
-} else if (format.equals ("BLC")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", [source]);\r
-} else if (format.equals ("PIR")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", [source]);\r
-} else if (format.equals ("PFAM")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", [source]);\r
-} else if (format.equals ("JnetFile")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [source]);\r
-(this.alignFile).removeNonSequences ();\r
-} else if (format.equals ("PDB")) {\r
-this.alignFile =  new MCview.PDBfile (this.annotFromStructure, this.localSecondaryStruct, this.serviceSecondaryStruct, source);\r
-} else if (format.equals ("STH")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [source]);\r
-} else if (format.equals ("RNAML")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", [source]);\r
-} else if (format.equals ("SimpleBLAST")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("SimpleBlastFile", [source]);\r
-} else if (format.equals ("PHYLIP")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", [source]);\r
-} else if (format.equals ("GFF v2 or v3")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("Gff3File", [this.inFile, type]);\r
-} else if (format.equals ("JSON")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", [source]);\r
-} else if (format.equals ("HTML")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("HtmlFile", [source]);\r
-}return this.buildAlignmentFrom (this.alignFile);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-System.err.println ("Failed to read alignment using the '" + format + "' reader.\n" + e);\r
-if (e.getMessage () != null && e.getMessage ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {\r
-throw  new java.io.IOException (e.getMessage ());\r
-}if (type.equalsIgnoreCase ("Paste")) {\r
-try {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [">UNKNOWN\n" + this.inFile, "Paste"]);\r
-return this.buildAlignmentFrom (this.alignFile);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-if (ex.toString ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {\r
-throw  new java.io.IOException (e.getMessage ());\r
-}ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}throw  new java.io.IOException (jalview.io.AppletFormatAdapter.SUPPORTED_FORMATS);\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "jalview.io.FileParse,~S");\r
-Clazz.defineMethod (c$, "buildAlignmentFrom", \r
-($fz = function (alignFile2) {\r
-var al =  new jalview.datamodel.Alignment (this.alignFile.getSeqsAsArray ());\r
-this.alignFile.addAnnotations (al);\r
-this.alignFile.addGroups (al);\r
-return al;\r
-}, $fz.isPrivate = true, $fz), "jalview.io.AlignFile");\r
-Clazz.defineMethod (c$, "formatSequences", \r
-function (format, jvsuffix, ap, selectedOnly) {\r
-var selvew = ap.getAlignViewport ().getAlignmentView (selectedOnly, false);\r
-var aselview = selvew.getVisibleAlignment (ap.getAlignViewport ().getGapCharacter ());\r
-var ala = (ap.getAlignViewport ().getVisibleAlignmentAnnotation (selectedOnly));\r
-if (ala != null) {\r
-for (var aa, $aa = ala.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {\r
-aselview.addAnnotation (aa);\r
-}\r
-}this.viewpanel = ap;\r
-return this.formatSequences (format, aselview, jvsuffix);\r
-}, "~S,~B,jalview.api.AlignmentViewPanel,~B");\r
-Clazz.defineMethod (c$, "formatSequences", \r
-function (format, alignment, jvsuffix) {\r
-try {\r
-var afile = null;\r
-if (format.equalsIgnoreCase ("FASTA")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", []);\r
-} else if (format.equalsIgnoreCase ("MSF")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", []);\r
-} else if (format.equalsIgnoreCase ("PileUp")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", []);\r
-} else if (format.equalsIgnoreCase ("CLUSTAL")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", []);\r
-} else if (format.equalsIgnoreCase ("BLC")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", []);\r
-} else if (format.equalsIgnoreCase ("PIR")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", []);\r
-} else if (format.equalsIgnoreCase ("PFAM")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", []);\r
-} else if (format.equalsIgnoreCase ("STH")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [alignment]);\r
-} else if (format.equalsIgnoreCase ("AMSA")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("AMSAFile", [alignment]);\r
-} else if (format.equalsIgnoreCase ("PHYLIP")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", []);\r
-} else if (format.equalsIgnoreCase ("JSON")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", []);\r
-} else if (format.equalsIgnoreCase ("RNAML")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", []);\r
-} else {\r
-throw  new Exception (jalview.util.MessageManager.getString ("error.implementation_error_unknown_file_format_string"));\r
-}afile.setNewlineString (this.newline);\r
-afile.addJVSuffix (jvsuffix);\r
-afile.setExportSettings (this.exportSettings);\r
-afile.configureForView (this.viewpanel);\r
-if (this.viewpanel == null || this.viewpanel.getAlignment () == null || this.viewpanel.getAlignment () !== alignment) {\r
-afile.setSeqs (alignment.getSequencesArray ());\r
-} else {\r
-afile.setSeqs (this.viewpanel.getAlignment ().getSequencesArray ());\r
-}var afileresp = afile.print ();\r
-if (afile.hasWarningMessage ()) {\r
-System.err.println ("Warning raised when writing as " + format + " : " + afile.getWarningMessage ());\r
-}return afileresp;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Failed to write alignment as a '" + format + "' file\n");\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return null;\r
-}, "~S,jalview.datamodel.AlignmentI,~B");\r
-c$.checkProtocol = Clazz.defineMethod (c$, "checkProtocol", \r
-function (file) {\r
-var protocol = jalview.io.AppletFormatAdapter.FILE;\r
-var ft = file.toLowerCase ().trim ();\r
-if (ft.indexOf ("http:") == 0 || ft.indexOf ("https:") == 0 || ft.indexOf ("file:") == 0) {\r
-protocol = jalview.io.AppletFormatAdapter.URL;\r
-}return protocol;\r
-}, "~S");\r
-c$.resolveProtocol = Clazz.defineMethod (c$, "resolveProtocol", \r
-function (file, format) {\r
-return jalview.io.AppletFormatAdapter.resolveProtocol (file, format, false);\r
-}, "~S,~S");\r
-c$.resolveProtocol = Clazz.defineMethod (c$, "resolveProtocol", \r
-function (file, format, debug) {\r
-var protocol = null;\r
-if (debug) {\r
-System.out.println ("resolving datasource started with:\n>>file\n" + file + ">>endfile");\r
-}try {\r
-var rtn = false;\r
-var is = System.getSecurityManager ().getClass ().getResourceAsStream ("/" + file);\r
-if (is != null) {\r
-rtn = true;\r
-is.close ();\r
-}if (debug) {\r
-System.err.println ("Resource '" + file + "' was " + (rtn ? "" : "not") + " located by classloader.");\r
-};if (rtn) {\r
-protocol = jalview.io.AppletFormatAdapter.CLASSLOADER;\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.err.println ("Exception checking resources: " + file + " " + ex);\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-if (file.indexOf ("://") > -1) {\r
-protocol = jalview.io.AppletFormatAdapter.URL;\r
-} else {\r
-protocol = jalview.io.AppletFormatAdapter.FILE;\r
-}var fp = null;\r
-try {\r
-if (debug) {\r
-System.out.println ("Trying to get contents of resource as " + protocol + ":");\r
-}fp =  new jalview.io.FileParse (file, protocol);\r
-if (!fp.isValid ()) {\r
-fp = null;\r
-} else {\r
-if (debug) {\r
-System.out.println ("Successful.");\r
-}}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-if (debug) {\r
-System.err.println ("Exception when accessing content: " + e);\r
-}fp = null;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (fp == null) {\r
-if (debug) {\r
-System.out.println ("Accessing as paste.");\r
-}protocol = jalview.io.AppletFormatAdapter.PASTE;\r
-fp = null;\r
-try {\r
-fp =  new jalview.io.FileParse (file, protocol);\r
-if (!fp.isValid ()) {\r
-fp = null;\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Failed to access content as paste!");\r
-e.printStackTrace ();\r
-fp = null;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}if (fp == null) {\r
-return null;\r
-}if (format == null || format.length == 0) {\r
-return protocol;\r
-} else {\r
-try {\r
-var idformat =  new jalview.io.IdentifyFile ().Identify (file, protocol);\r
-if (idformat == null) {\r
-if (debug) {\r
-System.out.println ("Format not identified. Inaccessible file.");\r
-}return null;\r
-}if (debug) {\r
-System.out.println ("Format identified as " + idformat + "and expected as " + format);\r
-}if (idformat.equals (format)) {\r
-if (debug) {\r
-System.out.println ("Protocol identified as " + protocol);\r
-}return protocol;\r
-} else {\r
-if (debug) {\r
-System.out.println ("File deemed not accessible via " + protocol);\r
-}fp.close ();\r
-return null;\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-if (debug) {\r
-System.err.println ("File deemed not accessible via " + protocol);\r
-e.printStackTrace ();\r
-};} else {\r
-throw e;\r
-}\r
-}\r
-}return null;\r
-}, "~S,~S,~B");\r
-Clazz.defineMethod (c$, "getAlignFile", \r
-function () {\r
-return this.alignFile;\r
-});\r
-Clazz.defineMethod (c$, "setAlignFile", \r
-function (alignFile) {\r
-this.alignFile = alignFile;\r
-}, "jalview.io.AlignFile");\r
-Clazz.defineStatics (c$,\r
-"FILE", "File",\r
-"URL", "URL",\r
-"PASTE", "Paste",\r
-"CLASSLOADER", "ClassLoader");\r
-c$.READABLE_FORMATS = c$.prototype.READABLE_FORMATS =  Clazz.newArray (-1, ["BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "STH", "PDB", "JnetFile", "RNAML", "PHYLIP", "JSON", "GFF v2 or v3", "HTML"]);\r
-c$.READABLE_EXTENSIONS = c$.prototype.READABLE_EXTENSIONS =  Clazz.newArray (-1, ["fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa", "sto,stk", "xml,rnaml", "phy", "json", ".gff2,gff3", "jar,jvp", "html"]);\r
-c$.READABLE_FNAMES = c$.prototype.READABLE_FNAMES =  Clazz.newArray (-1, ["Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "Stockholm", "RNAML", "PHYLIP", "JSON", "GFF v2 or v3", "Jalview", "HTML"]);\r
-c$.WRITEABLE_FORMATS = c$.prototype.WRITEABLE_FORMATS =  Clazz.newArray (-1, ["BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "AMSA", "STH", "PHYLIP", "JSON"]);\r
-c$.WRITABLE_EXTENSIONS = c$.prototype.WRITABLE_EXTENSIONS =  Clazz.newArray (-1, ["fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa", "sto,stk", "phy", "json", "jvp"]);\r
-c$.WRITABLE_FNAMES = c$.prototype.WRITABLE_FNAMES =  Clazz.newArray (-1, ["Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "STH", "PHYLIP", "JSON", "Jalview"]);\r
-Clazz.defineStatics (c$,\r
-"INVALID_CHARACTERS", "Contains invalid characters");\r
-c$.SUPPORTED_FORMATS = c$.prototype.SUPPORTED_FORMATS = "Formats currently supported are\n" + jalview.io.AppletFormatAdapter.prettyPrint (jalview.io.AppletFormatAdapter.READABLE_FORMATS);\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (null, "jalview.io.AppletFormatAdapter", ["MCview.PDBfile", "jalview.datamodel.Alignment", "jalview.io.FileParse", "$.IdentifyFile", "jalview.jsdev.GenericFileAdapter", "jalview.util.MessageManager", "java.io.IOException", "java.lang.Exception", "$.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.viewpanel = null;
+this.annotFromStructure = false;
+this.localSecondaryStruct = false;
+this.serviceSecondaryStruct = false;
+this.alignFile = null;
+this.inFile = null;
+this.newline = null;
+this.exportSettings = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io, "AppletFormatAdapter");
+Clazz.prepareFields (c$, function () {
+this.newline = System.getProperty ("line.separator");
+});
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.makeConstructor (c$, 
+function (viewpanel) {
+this.viewpanel = viewpanel;
+}, "jalview.api.AlignmentViewPanel");
+Clazz.makeConstructor (c$, 
+function (alignPanel, settings) {
+this.viewpanel = alignPanel;
+this.exportSettings = settings;
+}, "jalview.api.AlignmentViewPanel,jalview.api.AlignExportSettingI");
+c$.prettyPrint = Clazz.defineMethod (c$, "prettyPrint", 
+function (els) {
+var list =  new StringBuffer ();
+for (var i = 0, iSize = els.length - 1; i < iSize; i++) {
+list.append (els[i]);
+list.append (", ");
+}
+list.append (" and " + els[els.length - 1] + ".");
+return list.toString ();
+}, "~A");
+Clazz.defineMethod (c$, "setNewlineString", 
+function (nl) {
+this.newline = nl;
+}, "~S");
+Clazz.defineMethod (c$, "getNewlineString", 
+function () {
+return this.newline;
+});
+c$.isValidFormat = Clazz.defineMethod (c$, "isValidFormat", 
+function (format) {
+return jalview.io.AppletFormatAdapter.isValidFormat (format, false);
+}, "~S");
+c$.isValidFormat = Clazz.defineMethod (c$, "isValidFormat", 
+function (format, forwriting) {
+var valid = false;
+var format_list = (forwriting) ? jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS : jalview.io.AppletFormatAdapter.READABLE_FORMATS;
+for (var element, $element = 0, $$element = format_list; $element < $$element.length && ((element = $$element[$element]) || true); $element++) {
+if (element.equalsIgnoreCase (format)) {
+return true;
+}}
+return valid;
+}, "~S,~B");
+Clazz.defineMethod (c$, "readFile", 
+function (inFile, type, format) {
+this.inFile = inFile;
+try {
+if (format.equals ("FASTA")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [inFile, type]);
+} else if (format.equals ("MSF")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", [inFile, type]);
+} else if (format.equals ("PileUp")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", [inFile, type]);
+} else if (format.equals ("CLUSTAL")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", [inFile, type]);
+} else if (format.equals ("BLC")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", [inFile, type]);
+} else if (format.equals ("PIR")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", [inFile, type]);
+} else if (format.equals ("PFAM")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", [inFile, type]);
+} else if (format.equals ("JnetFile")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [inFile, type]);
+(this.alignFile).removeNonSequences ();
+} else if (format.equals ("PDB")) {
+this.alignFile =  new MCview.PDBfile (this.annotFromStructure, this.localSecondaryStruct, this.serviceSecondaryStruct, inFile, type);
+} else if (format.equals ("STH")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [inFile, type]);
+} else if (format.equals ("SimpleBLAST")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("SimpleBlastFile", [inFile, type]);
+} else if (format.equals ("PHYLIP")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", [inFile, type]);
+} else if (format.equals ("JSON")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", [inFile, type]);
+} else if (format.equals ("HTML")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("HtmlFile", [inFile, type]);
+} else if (format.equals ("RNAML")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", [inFile, type]);
+} else if (format.equals ("GFF v2 or v3")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("Gff3File", [inFile, type]);
+}return this.buildAlignmentFrom (this.alignFile);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to read alignment using the '" + format + "' reader.\n" + e);
+if (e.getMessage () != null && e.getMessage ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
+throw  new java.io.IOException (e.getMessage ());
+}if (type.equalsIgnoreCase ("Paste")) {
+try {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [">UNKNOWN\n" + inFile, "Paste"]);
+return this.buildAlignmentFrom (this.alignFile);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+if (ex.toString ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
+throw  new java.io.IOException (e.getMessage ());
+}ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}throw  new java.io.IOException (jalview.io.AppletFormatAdapter.SUPPORTED_FORMATS);
+} else {
+throw e;
+}
+}
+}, "~S,~S,~S");
+Clazz.defineMethod (c$, "readFromFile", 
+function (source, format) {
+this.inFile = source.getInFile ();
+var type = source.type;
+try {
+if (format.equals ("FASTA")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [source]);
+} else if (format.equals ("MSF")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", [source]);
+} else if (format.equals ("PileUp")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", [source]);
+} else if (format.equals ("CLUSTAL")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", [source]);
+} else if (format.equals ("BLC")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", [source]);
+} else if (format.equals ("PIR")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", [source]);
+} else if (format.equals ("PFAM")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", [source]);
+} else if (format.equals ("JnetFile")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [source]);
+(this.alignFile).removeNonSequences ();
+} else if (format.equals ("PDB")) {
+this.alignFile =  new MCview.PDBfile (this.annotFromStructure, this.localSecondaryStruct, this.serviceSecondaryStruct, source);
+} else if (format.equals ("STH")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [source]);
+} else if (format.equals ("RNAML")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", [source]);
+} else if (format.equals ("SimpleBLAST")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("SimpleBlastFile", [source]);
+} else if (format.equals ("PHYLIP")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", [source]);
+} else if (format.equals ("GFF v2 or v3")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("Gff3File", [this.inFile, type]);
+} else if (format.equals ("JSON")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", [source]);
+} else if (format.equals ("HTML")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("HtmlFile", [source]);
+}return this.buildAlignmentFrom (this.alignFile);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to read alignment using the '" + format + "' reader.\n" + e);
+if (e.getMessage () != null && e.getMessage ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
+throw  new java.io.IOException (e.getMessage ());
+}if (type.equalsIgnoreCase ("Paste")) {
+try {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [">UNKNOWN\n" + this.inFile, "Paste"]);
+return this.buildAlignmentFrom (this.alignFile);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+if (ex.toString ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
+throw  new java.io.IOException (e.getMessage ());
+}ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}throw  new java.io.IOException (jalview.io.AppletFormatAdapter.SUPPORTED_FORMATS);
+} else {
+throw e;
+}
+}
+}, "jalview.io.FileParse,~S");
+Clazz.defineMethod (c$, "buildAlignmentFrom", 
+($fz = function (alignFile2) {
+var al =  new jalview.datamodel.Alignment (this.alignFile.getSeqsAsArray ());
+this.alignFile.addAnnotations (al);
+this.alignFile.addGroups (al);
+return al;
+}, $fz.isPrivate = true, $fz), "jalview.io.AlignFile");
+Clazz.defineMethod (c$, "formatSequences", 
+function (format, jvsuffix, ap, selectedOnly) {
+var selvew = ap.getAlignViewport ().getAlignmentView (selectedOnly, false);
+var aselview = selvew.getVisibleAlignment (ap.getAlignViewport ().getGapCharacter ());
+var ala = (ap.getAlignViewport ().getVisibleAlignmentAnnotation (selectedOnly));
+if (ala != null) {
+for (var aa, $aa = ala.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {
+aselview.addAnnotation (aa);
+}
+}this.viewpanel = ap;
+return this.formatSequences (format, aselview, jvsuffix);
+}, "~S,~B,jalview.api.AlignmentViewPanel,~B");
+Clazz.defineMethod (c$, "formatSequences", 
+function (format, alignment, jvsuffix) {
+try {
+var afile = null;
+if (format.equalsIgnoreCase ("FASTA")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", []);
+} else if (format.equalsIgnoreCase ("MSF")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", []);
+} else if (format.equalsIgnoreCase ("PileUp")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", []);
+} else if (format.equalsIgnoreCase ("CLUSTAL")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", []);
+} else if (format.equalsIgnoreCase ("BLC")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", []);
+} else if (format.equalsIgnoreCase ("PIR")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", []);
+} else if (format.equalsIgnoreCase ("PFAM")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", []);
+} else if (format.equalsIgnoreCase ("STH")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [alignment]);
+} else if (format.equalsIgnoreCase ("AMSA")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("AMSAFile", [alignment]);
+} else if (format.equalsIgnoreCase ("PHYLIP")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", []);
+} else if (format.equalsIgnoreCase ("JSON")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", []);
+} else if (format.equalsIgnoreCase ("RNAML")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", []);
+} else {
+throw  new Exception (jalview.util.MessageManager.getString ("error.implementation_error_unknown_file_format_string"));
+}afile.setNewlineString (this.newline);
+afile.addJVSuffix (jvsuffix);
+afile.setExportSettings (this.exportSettings);
+afile.configureForView (this.viewpanel);
+if (this.viewpanel == null || this.viewpanel.getAlignment () == null || this.viewpanel.getAlignment () !== alignment) {
+afile.setSeqs (alignment.getSequencesArray ());
+} else {
+afile.setSeqs (this.viewpanel.getAlignment ().getSequencesArray ());
+}var afileresp = afile.print ();
+if (afile.hasWarningMessage ()) {
+System.err.println ("Warning raised when writing as " + format + " : " + afile.getWarningMessage ());
+}return afileresp;
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Failed to write alignment as a '" + format + "' file\n");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+return null;
+}, "~S,jalview.datamodel.AlignmentI,~B");
+c$.checkProtocol = Clazz.defineMethod (c$, "checkProtocol", 
+function (file) {
+var protocol = jalview.io.AppletFormatAdapter.FILE;
+var ft = file.toLowerCase ().trim ();
+if (ft.indexOf ("http:") == 0 || ft.indexOf ("https:") == 0 || ft.indexOf ("file:") == 0) {
+protocol = jalview.io.AppletFormatAdapter.URL;
+}return protocol;
+}, "~S");
+c$.resolveProtocol = Clazz.defineMethod (c$, "resolveProtocol", 
+function (file, format) {
+return jalview.io.AppletFormatAdapter.resolveProtocol (file, format, false);
+}, "~S,~S");
+c$.resolveProtocol = Clazz.defineMethod (c$, "resolveProtocol", 
+function (file, format, debug) {
+var protocol = null;
+if (debug) {
+System.out.println ("resolving datasource started with:\n>>file\n" + file + ">>endfile");
+}try {
+var rtn = false;
+var is = System.getSecurityManager ().getClass ().getResourceAsStream ("/" + file);
+if (is != null) {
+rtn = true;
+is.close ();
+}if (debug) {
+System.err.println ("Resource '" + file + "' was " + (rtn ? "" : "not") + " located by classloader.");
+};if (rtn) {
+protocol = jalview.io.AppletFormatAdapter.CLASSLOADER;
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Exception checking resources: " + file + " " + ex);
+} else {
+throw ex;
+}
+}
+if (file.indexOf ("://") > -1) {
+protocol = jalview.io.AppletFormatAdapter.URL;
+} else {
+protocol = jalview.io.AppletFormatAdapter.FILE;
+}var fp = null;
+try {
+if (debug) {
+System.out.println ("Trying to get contents of resource as " + protocol + ":");
+}fp =  new jalview.io.FileParse (file, protocol);
+if (!fp.isValid ()) {
+fp = null;
+} else {
+if (debug) {
+System.out.println ("Successful.");
+}}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+if (debug) {
+System.err.println ("Exception when accessing content: " + e);
+}fp = null;
+} else {
+throw e;
+}
+}
+if (fp == null) {
+if (debug) {
+System.out.println ("Accessing as paste.");
+}protocol = jalview.io.AppletFormatAdapter.PASTE;
+fp = null;
+try {
+fp =  new jalview.io.FileParse (file, protocol);
+if (!fp.isValid ()) {
+fp = null;
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Failed to access content as paste!");
+e.printStackTrace ();
+fp = null;
+} else {
+throw e;
+}
+}
+}if (fp == null) {
+return null;
+}if (format == null || format.length == 0) {
+return protocol;
+} else {
+try {
+var idformat =  new jalview.io.IdentifyFile ().Identify (file, protocol);
+if (idformat == null) {
+if (debug) {
+System.out.println ("Format not identified. Inaccessible file.");
+}return null;
+}if (debug) {
+System.out.println ("Format identified as " + idformat + "and expected as " + format);
+}if (idformat.equals (format)) {
+if (debug) {
+System.out.println ("Protocol identified as " + protocol);
+}return protocol;
+} else {
+if (debug) {
+System.out.println ("File deemed not accessible via " + protocol);
+}fp.close ();
+return null;
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+if (debug) {
+System.err.println ("File deemed not accessible via " + protocol);
+e.printStackTrace ();
+};} else {
+throw e;
+}
+}
+}return null;
+}, "~S,~S,~B");
+Clazz.defineMethod (c$, "getAlignFile", 
+function () {
+return this.alignFile;
+});
+Clazz.defineMethod (c$, "setAlignFile", 
+function (alignFile) {
+this.alignFile = alignFile;
+}, "jalview.io.AlignFile");
+Clazz.defineStatics (c$,
+"FILE", "File",
+"URL", "URL",
+"PASTE", "Paste",
+"CLASSLOADER", "ClassLoader");
+c$.READABLE_FORMATS = c$.prototype.READABLE_FORMATS =  Clazz.newArray (-1, ["BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "STH", "PDB", "JnetFile", "RNAML", "PHYLIP", "JSON", "GFF v2 or v3", "HTML"]);
+c$.READABLE_EXTENSIONS = c$.prototype.READABLE_EXTENSIONS =  Clazz.newArray (-1, ["fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa", "sto,stk", "xml,rnaml", "phy", "json", ".gff2,gff3", "jar,jvp", "html"]);
+c$.READABLE_FNAMES = c$.prototype.READABLE_FNAMES =  Clazz.newArray (-1, ["Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "Stockholm", "RNAML", "PHYLIP", "JSON", "GFF v2 or v3", "Jalview", "HTML"]);
+c$.WRITEABLE_FORMATS = c$.prototype.WRITEABLE_FORMATS =  Clazz.newArray (-1, ["BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "AMSA", "STH", "PHYLIP", "JSON"]);
+c$.WRITABLE_EXTENSIONS = c$.prototype.WRITABLE_EXTENSIONS =  Clazz.newArray (-1, ["fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa", "sto,stk", "phy", "json", "jvp"]);
+c$.WRITABLE_FNAMES = c$.prototype.WRITABLE_FNAMES =  Clazz.newArray (-1, ["Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "STH", "PHYLIP", "JSON", "Jalview"]);
+Clazz.defineStatics (c$,
+"INVALID_CHARACTERS", "Contains invalid characters");
+c$.SUPPORTED_FORMATS = c$.prototype.SUPPORTED_FORMATS = "Formats currently supported are\n" + jalview.io.AppletFormatAdapter.prettyPrint (jalview.io.AppletFormatAdapter.READABLE_FORMATS);
+});
index 8111432..d7fe1ef 100644 (file)
Binary files a/bin/jalview/io/FastaFile.class and b/bin/jalview/io/FastaFile.class differ
index 38f827f..5dc3155 100644 (file)
@@ -1,94 +1,94 @@
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (["jalview.io.AlignFile"], "jalview.io.FastaFile", ["jalview.datamodel.AlignmentAnnotation", "$.Annotation", "java.lang.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.len = 72;\r
-this.out = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io, "FastaFile", jalview.io.AlignFile);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.io.FastaFile, []);\r
-});\r
-Clazz.overrideMethod (c$, "parse", \r
-function () {\r
-var sb =  new StringBuffer ();\r
-var firstLine = true;\r
-var line;\r
-var uline;\r
-var seq = null;\r
-var annotation = false;\r
-while ((uline = this.nextLine ()) != null) {\r
-line = uline.trim ();\r
-if (line.length > 0) {\r
-if (line.charAt (0) == '>') {\r
-if (line.startsWith (">#_")) {\r
-if (annotation) {\r
-this.annotations.addElement (this.makeAnnotation (seq, sb));\r
-}} else {\r
-annotation = false;\r
-}if (!firstLine) {\r
-seq.setSequence (sb.toString ());\r
-if (!annotation) {\r
-this.seqs.addElement (seq);\r
-}}seq = this.parseId (line.substring (1));\r
-firstLine = false;\r
-sb =  new StringBuffer ();\r
-if (line.startsWith (">#_")) {\r
-annotation = true;\r
-}} else {\r
-sb.append (annotation ? uline : line);\r
-}}}\r
-if (annotation) {\r
-this.annotations.addElement (this.makeAnnotation (seq, sb));\r
-} else if (!firstLine) {\r
-seq.setSequence (sb.toString ());\r
-this.seqs.addElement (seq);\r
-}});\r
-Clazz.defineMethod (c$, "makeAnnotation", \r
-($fz = function (seq, sb) {\r
-var anots =  new Array (sb.length ());\r
-var cb;\r
-for (var i = 0; i < anots.length; i++) {\r
-var cn = sb.charAt (i);\r
-if (cn != ' ') {\r
-anots[i] =  new jalview.datamodel.Annotation ("" + cn, null, ' ', NaN);\r
-}}\r
-var aa =  new jalview.datamodel.AlignmentAnnotation (seq.getName ().substring (2), seq.getDescription (), anots);\r
-return aa;\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceI,StringBuffer");\r
-Clazz.defineMethod (c$, "addAnnotations", \r
-function (al) {\r
-this.addProperties (al);\r
-for (var i = 0; i < this.annotations.size (); i++) {\r
-var aa = this.annotations.elementAt (i);\r
-aa.setPadGaps (true, al.getGapCharacter ());\r
-al.addAnnotation (aa);\r
-}\r
-}, "jalview.datamodel.Alignment");\r
-Clazz.defineMethod (c$, "print", \r
-function (s) {\r
-this.out =  new StringBuffer ();\r
-var i = 0;\r
-while ((i < s.length) && (s[i] != null)) {\r
-this.out.append (">" + this.printId (s[i]));\r
-if (s[i].getDescription () != null) {\r
-this.out.append (" " + s[i].getDescription ());\r
-}this.out.append (this.newline);\r
-var nochunks = (Clazz.doubleToInt (s[i].getLength () / this.len)) + 1;\r
-for (var j = 0; j < nochunks; j++) {\r
-var start = j * this.len;\r
-var end = start + this.len;\r
-if (end < s[i].getLength ()) {\r
-this.out.append (s[i].getSequenceAsString (start, end) + this.newline);\r
-} else if (start < s[i].getLength ()) {\r
-this.out.append (s[i].getSequenceAsString (start, s[i].getLength ()) + this.newline);\r
-}}\r
-i++;\r
-}\r
-return this.out.toString ();\r
-}, "~A");\r
-Clazz.defineMethod (c$, "print", \r
-function () {\r
-return this.print (this.getSeqsAsArray ());\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (["jalview.io.AlignFile"], "jalview.io.FastaFile", ["jalview.datamodel.AlignmentAnnotation", "$.Annotation", "java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.len = 72;
+this.out = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io, "FastaFile", jalview.io.AlignFile);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.io.FastaFile, []);
+});
+Clazz.overrideMethod (c$, "parse", 
+function () {
+var sb =  new StringBuffer ();
+var firstLine = true;
+var line;
+var uline;
+var seq = null;
+var annotation = false;
+while ((uline = this.nextLine ()) != null) {
+line = uline.trim ();
+if (line.length > 0) {
+if (line.charAt (0) == '>') {
+if (line.startsWith (">#_")) {
+if (annotation) {
+this.annotations.addElement (this.makeAnnotation (seq, sb));
+}} else {
+annotation = false;
+}if (!firstLine) {
+seq.setSequence (sb.toString ());
+if (!annotation) {
+this.seqs.addElement (seq);
+}}seq = this.parseId (line.substring (1));
+firstLine = false;
+sb =  new StringBuffer ();
+if (line.startsWith (">#_")) {
+annotation = true;
+}} else {
+sb.append (annotation ? uline : line);
+}}}
+if (annotation) {
+this.annotations.addElement (this.makeAnnotation (seq, sb));
+} else if (!firstLine) {
+seq.setSequence (sb.toString ());
+this.seqs.addElement (seq);
+}});
+Clazz.defineMethod (c$, "makeAnnotation", 
+($fz = function (seq, sb) {
+var anots =  new Array (sb.length ());
+var cb;
+for (var i = 0; i < anots.length; i++) {
+var cn = sb.charAt (i);
+if (cn != ' ') {
+anots[i] =  new jalview.datamodel.Annotation ("" + cn, null, ' ', NaN);
+}}
+var aa =  new jalview.datamodel.AlignmentAnnotation (seq.getName ().substring (2), seq.getDescription (), anots);
+return aa;
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceI,StringBuffer");
+Clazz.defineMethod (c$, "addAnnotations", 
+function (al) {
+this.addProperties (al);
+for (var i = 0; i < this.annotations.size (); i++) {
+var aa = this.annotations.elementAt (i);
+aa.setPadGaps (true, al.getGapCharacter ());
+al.addAnnotation (aa);
+}
+}, "jalview.datamodel.Alignment");
+Clazz.defineMethod (c$, "print", 
+function (s) {
+this.out =  new StringBuffer ();
+var i = 0;
+while ((i < s.length) && (s[i] != null)) {
+this.out.append (">" + this.printId (s[i]));
+if (s[i].getDescription () != null) {
+this.out.append (" " + s[i].getDescription ());
+}this.out.append (this.newline);
+var nochunks = (Clazz.doubleToInt (s[i].getLength () / this.len)) + 1;
+for (var j = 0; j < nochunks; j++) {
+var start = j * this.len;
+var end = start + this.len;
+if (end < s[i].getLength ()) {
+this.out.append (s[i].getSequenceAsString (start, end) + this.newline);
+} else if (start < s[i].getLength ()) {
+this.out.append (s[i].getSequenceAsString (start, s[i].getLength ()) + this.newline);
+}}
+i++;
+}
+return this.out.toString ();
+}, "~A");
+Clazz.defineMethod (c$, "print", 
+function () {
+return this.print (this.getSeqsAsArray ());
+});
+});
index 1efc2f6..2d37a41 100644 (file)
Binary files a/bin/jalview/io/FeaturesFile.class and b/bin/jalview/io/FeaturesFile.class differ
index 7bdc9f9..458787b 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (["jalview.io.AlignFile", "java.lang.Enum", "$.Exception"], "jalview.io.FeaturesFile", ["jalview.analysis.SequenceIdMatcher", "jalview.datamodel.AlignedCodonFrame", "$.SequenceDummy", "$.SequenceFeature", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.GraduatedColor", "$.UserColourScheme", "jalview.util.Format", "$.MapList", "$.ParseHtmlBodyAndLinks", "java.awt.Color", "java.lang.Float", "$.StringBuffer", "java.util.ArrayList", "$.Arrays", "$.HashMap", "$.Hashtable", "$.StringTokenizer", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.doGffSource = true;\r
-this.gffversion = 0;\r
-if (!Clazz.isClassDefined ("jalview.io.FeaturesFile.InvalidGFF3FieldException")) {\r
-jalview.io.FeaturesFile.$FeaturesFile$InvalidGFF3FieldException$ ();\r
-}\r
-this.lastmatchedAl = null;\r
-this.matcher = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io, "FeaturesFile", jalview.io.AlignFile);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.io.FeaturesFile, []);\r
-});\r
-Clazz.defineMethod (c$, "parse", \r
-function (align, colours, removeHTML) {\r
-return this.parse (align, colours, null, removeHTML, false);\r
-}, "jalview.datamodel.AlignmentI,java.util.Hashtable,~B");\r
-Clazz.defineMethod (c$, "parse", \r
-function (align, colours, removeHTML, relaxedIdMatching) {\r
-return this.parse (align, colours, null, removeHTML, relaxedIdMatching);\r
-}, "jalview.datamodel.AlignmentI,java.util.Map,~B,~B");\r
-Clazz.defineMethod (c$, "parse", \r
-function (align, colours, featureLink, removeHTML) {\r
-return this.parse (align, colours, featureLink, removeHTML, false);\r
-}, "jalview.datamodel.AlignmentI,java.util.Map,java.util.Map,~B");\r
-Clazz.defineMethod (c$, "parse", \r
-function (align, colours, featureLink, removeHTML, relaxedIdmatching) {\r
-var line = null;\r
-try {\r
-var seq = null;\r
-var newseqs =  new java.util.ArrayList ();\r
-var type;\r
-var desc;\r
-var token = null;\r
-var index;\r
-var start;\r
-var end;\r
-var score;\r
-var st;\r
-var sf;\r
-var featureGroup = null;\r
-var groupLink = null;\r
-var typeLink =  new java.util.Hashtable ();\r
-var GFFFile = true;\r
-var gffProps =  new java.util.HashMap ();\r
-while ((line = this.nextLine ()) != null) {\r
-if (line.startsWith ("#")) {\r
-if (line.startsWith ("##")) {\r
-this.processGffPragma (line, gffProps, align, newseqs);\r
-line = "";\r
-}continue;\r
-}st =  new java.util.StringTokenizer (line, "\t");\r
-if (st.countTokens () == 1) {\r
-if (line.trim ().equalsIgnoreCase ("GFF")) {\r
-GFFFile = true;\r
-continue;\r
-}}if (st.countTokens () > 1 && st.countTokens () < 4) {\r
-GFFFile = false;\r
-type = st.nextToken ();\r
-if (type.equalsIgnoreCase ("startgroup")) {\r
-featureGroup = st.nextToken ();\r
-if (st.hasMoreElements ()) {\r
-groupLink = st.nextToken ();\r
-featureLink.put (featureGroup, groupLink);\r
-}} else if (type.equalsIgnoreCase ("endgroup")) {\r
-st.nextToken ();\r
-featureGroup = null;\r
-groupLink = null;\r
-} else {\r
-var colour = null;\r
-var colscheme = st.nextToken ();\r
-if (colscheme.indexOf ("|") > -1 || colscheme.trim ().equalsIgnoreCase ("label")) {\r
-var gcol =  new java.util.StringTokenizer (colscheme, "|", true);\r
-var threshtype = -1;\r
-var min = 1.4E-45;\r
-var max = 3.4028235E38;\r
-var threshval = NaN;\r
-var labelCol = false;\r
-var mincol = gcol.nextToken ();\r
-if (mincol === "|") {\r
-System.err.println ("Expected either 'label' or a colour specification in the line: " + line);\r
-continue;\r
-}var maxcol = null;\r
-if (mincol.toLowerCase ().indexOf ("label") == 0) {\r
-labelCol = true;\r
-mincol = (gcol.hasMoreTokens () ? gcol.nextToken () : null);\r
-mincol = (gcol.hasMoreTokens () ? gcol.nextToken () : null);\r
-}var abso = null;\r
-var minval;\r
-var maxval;\r
-if (mincol != null) {\r
-if (mincol.equals ("|")) {\r
-mincol = "";\r
-} else {\r
-gcol.nextToken ();\r
-}maxcol = gcol.nextToken ();\r
-if (maxcol.equals ("|")) {\r
-maxcol = "";\r
-} else {\r
-gcol.nextToken ();\r
-}abso = gcol.nextToken ();\r
-gcol.nextToken ();\r
-if (abso.toLowerCase ().indexOf ("abso") != 0) {\r
-minval = abso;\r
-abso = null;\r
-} else {\r
-minval = gcol.nextToken ();\r
-gcol.nextToken ();\r
-}maxval = gcol.nextToken ();\r
-if (gcol.hasMoreTokens ()) {\r
-gcol.nextToken ();\r
-}try {\r
-if (minval.length > 0) {\r
-min =  new Float (minval).floatValue ();\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Couldn't parse the minimum value for graduated colour for type (" + colscheme + ") - did you misspell 'auto' for the optional automatic colour switch ?");\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-try {\r
-if (maxval.length > 0) {\r
-max =  new Float (maxval).floatValue ();\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Couldn't parse the maximum value for graduated colour for type (" + colscheme + ")");\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-} else {\r
-mincol = "FFFFFF";\r
-maxcol = "000000";\r
-}try {\r
-colour =  new jalview.schemes.GraduatedColor ( new jalview.schemes.UserColourScheme (mincol).findColour ('A'),  new jalview.schemes.UserColourScheme (maxcol).findColour ('A'), min, max);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Couldn't parse the graduated colour scheme (" + colscheme + ")");\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (colour != null) {\r
-(colour).setColourByLabel (labelCol);\r
-(colour).setAutoScaled (abso == null);\r
-var ttype = null;\r
-var tval = null;\r
-if (gcol.hasMoreTokens ()) {\r
-ttype = gcol.nextToken ();\r
-if (ttype.toLowerCase ().startsWith ("below")) {\r
-(colour).setThreshType (0);\r
-} else if (ttype.toLowerCase ().startsWith ("above")) {\r
-(colour).setThreshType (1);\r
-} else {\r
-(colour).setThreshType (-1);\r
-if (!ttype.toLowerCase ().startsWith ("no")) {\r
-System.err.println ("Ignoring unrecognised threshold type : " + ttype);\r
-}}}if ((colour).getThreshType () != -1) {\r
-try {\r
-gcol.nextToken ();\r
-tval = gcol.nextToken ();\r
-(colour).setThresh ( new Float (tval).floatValue ());\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Couldn't parse threshold value as a float: (" + tval + ")");\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}if (gcol.hasMoreTokens ()) {\r
-System.err.println ("Ignoring additional tokens in parameters in graduated colour specification\n");\r
-while (gcol.hasMoreTokens ()) {\r
-System.err.println ("|" + gcol.nextToken ());\r
-}\r
-System.err.println ("\n");\r
-}}} else {\r
-var ucs =  new jalview.schemes.UserColourScheme (colscheme);\r
-colour = ucs.findColour ('A');\r
-}if (colour != null) {\r
-colours.put (type, colour);\r
-}if (st.hasMoreElements ()) {\r
-var link = st.nextToken ();\r
-typeLink.put (type, link);\r
-if (featureLink == null) {\r
-featureLink =  new java.util.Hashtable ();\r
-}featureLink.put (type, link);\r
-}}continue;\r
-}var seqId = "";\r
-while (st.hasMoreElements ()) {\r
-if (GFFFile) {\r
-seqId = token = st.nextToken ();\r
-seq = this.findName (align, seqId, relaxedIdmatching, newseqs);\r
-if (seq != null) {\r
-desc = st.nextToken ();\r
-var group = null;\r
-if (this.doGffSource && desc.indexOf (' ') == -1) {\r
-group =  String.instantialize (desc);\r
-}type = st.nextToken ();\r
-try {\r
-var stt = st.nextToken ();\r
-if (stt.length == 0 || stt.equals ("-")) {\r
-start = 0;\r
-} else {\r
-start = Integer.parseInt (stt);\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-start = 0;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-try {\r
-var stt = st.nextToken ();\r
-if (stt.length == 0 || stt.equals ("-")) {\r
-end = 0;\r
-} else {\r
-end = Integer.parseInt (stt);\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-end = 0;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-if (end == 0) {\r
-start = 0;\r
-}try {\r
-score =  new Float (st.nextToken ()).floatValue ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-score = 0;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-sf =  new jalview.datamodel.SequenceFeature (type, desc, start, end, score, group);\r
-try {\r
-sf.setValue ("STRAND", st.nextToken ());\r
-sf.setValue ("FRAME", st.nextToken ());\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-if (st.hasMoreTokens ()) {\r
-var attributes =  new StringBuffer ();\r
-var sep = false;\r
-while (st.hasMoreTokens ()) {\r
-attributes.append ((sep ? "\t" : "") + st.nextElement ());\r
-sep = true;\r
-}\r
-sf.setValue ("ATTRIBUTES", attributes.toString ());\r
-}if (this.processOrAddSeqFeature (align, newseqs, seq, sf, GFFFile, relaxedIdmatching)) {\r
-while ((seq = align.findName (seq, seqId, true)) != null) {\r
-seq.addSequenceFeature ( new jalview.datamodel.SequenceFeature (sf));\r
-}\r
-}break;\r
-}}if (GFFFile && seq == null) {\r
-desc = token;\r
-} else {\r
-desc = st.nextToken ();\r
-}if (!st.hasMoreTokens ()) {\r
-System.err.println ("DEBUG: Run out of tokens when trying to identify the destination for the feature.. giving up.");\r
-return false;\r
-}token = st.nextToken ();\r
-if (!token.equals ("ID_NOT_SPECIFIED")) {\r
-seq = this.findName (align, seqId = token, relaxedIdmatching, null);\r
-st.nextToken ();\r
-} else {\r
-seqId = null;\r
-try {\r
-index = Integer.parseInt (st.nextToken ());\r
-seq = align.getSequenceAt (index);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-seq = null;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}if (seq == null) {\r
-System.out.println ("Sequence not found: " + line);\r
-break;\r
-}start = Integer.parseInt (st.nextToken ());\r
-end = Integer.parseInt (st.nextToken ());\r
-type = st.nextToken ();\r
-if (!colours.containsKey (type)) {\r
-var ucs =  new jalview.schemes.UserColourScheme (type);\r
-colours.put (type, ucs.findColour ('A'));\r
-}sf =  new jalview.datamodel.SequenceFeature (type, desc, "", start, end, featureGroup);\r
-if (st.hasMoreTokens ()) {\r
-try {\r
-score =  new Float (st.nextToken ()).floatValue ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-score = 0;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-sf.setScore (score);\r
-}if (groupLink != null && removeHTML) {\r
-sf.addLink (groupLink);\r
-sf.description += "%LINK%";\r
-}if (typeLink.containsKey (type) && removeHTML) {\r
-sf.addLink (typeLink.get (type).toString ());\r
-sf.description += "%LINK%";\r
-}this.parseDescriptionHTML (sf, removeHTML);\r
-seq.addSequenceFeature (sf);\r
-while (seqId != null && (seq = align.findName (seq, seqId, false)) != null) {\r
-seq.addSequenceFeature ( new jalview.datamodel.SequenceFeature (sf));\r
-}\r
-GFFFile = false;\r
-}\r
-}\r
-this.resetMatcher ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-this.warningMessage = ((this.warningMessage == null) ? "" : this.warningMessage) + "Parsing error at\n" + line;\r
-System.out.println ("Error parsing feature file: " + ex + "\n" + line);\r
-ex.printStackTrace (System.err);\r
-this.resetMatcher ();\r
-return false;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-return true;\r
-}, "jalview.datamodel.AlignmentI,java.util.Map,java.util.Map,~B,~B");\r
-Clazz.defineMethod (c$, "processGffPragma", \r
-($fz = function (line, gffProps, align, newseqs) {\r
-var spacepos = line.indexOf (' ');\r
-var pragma = spacepos == -1 ? line.substring (2).trim () : line.substring (2, spacepos);\r
-var gffpragma = jalview.io.FeaturesFile.GFFPRAGMA.get (pragma.toLowerCase ());\r
-if (gffpragma == null) {\r
-return;\r
-}switch (gffpragma) {\r
-case jalview.io.FeaturesFile.GffPragmas.gff_version:\r
-try {\r
-this.gffversion = Integer.parseInt (line.substring (spacepos + 1));\r
-} finally {\r
-}\r
-break;\r
-case jalview.io.FeaturesFile.GffPragmas.feature_ontology:\r
-break;\r
-case jalview.io.FeaturesFile.GffPragmas.attribute_ontology:\r
-break;\r
-case jalview.io.FeaturesFile.GffPragmas.source_ontology:\r
-break;\r
-case jalview.io.FeaturesFile.GffPragmas.species_build:\r
-break;\r
-case jalview.io.FeaturesFile.GffPragmas.hash:\r
-break;\r
-case jalview.io.FeaturesFile.GffPragmas.fasta:\r
-this.process_as_fasta (align, newseqs);\r
-break;\r
-default:\r
-System.err.println ("Ignoring unknown pragma:\n" + line);\r
-}\r
-}, $fz.isPrivate = true, $fz), "~S,java.util.Map,jalview.datamodel.AlignmentI,java.util.ArrayList");\r
-Clazz.defineMethod (c$, "process_as_fasta", \r
-($fz = function (align, newseqs) {\r
-try {\r
-this.mark ();\r
-} catch (q) {\r
-if (Clazz.exceptionOf (q, java.io.IOException)) {\r
-} else {\r
-throw q;\r
-}\r
-}\r
-var parser = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", []);\r
-var includedseqs = parser.getSeqs ();\r
-var smatcher =  new jalview.analysis.SequenceIdMatcher (newseqs);\r
-for (var p = 0, pSize = includedseqs.size (); p < pSize; p++) {\r
-var dummyseq = smatcher.findIdMatch (includedseqs.get (p));\r
-if (dummyseq != null) {\r
-var mseq = includedseqs.get (p);\r
-if (Clazz.instanceOf (dummyseq, jalview.datamodel.SequenceDummy)) {\r
-(dummyseq).become (mseq);\r
-includedseqs.set (p, dummyseq);\r
-}}}\r
-for (var seq, $seq = includedseqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-align.addSequence (seq);\r
-}\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,java.util.List");\r
-Clazz.defineMethod (c$, "processOrAddSeqFeature", \r
-function (align, newseqs, seq, sf, gFFFile, relaxedIdMatching) {\r
-var attr = sf.getValue ("ATTRIBUTES");\r
-var add = true;\r
-if (gFFFile && attr != null) {\r
-var nattr = 8;\r
-for (var attset, $attset = 0, $$attset = attr.$plit ("\t"); $attset < $$attset.length && ((attset = $$attset[$attset]) || true); $attset++) {\r
-if (attset == null || attset.trim ().length == 0) {\r
-continue;\r
-}nattr++;\r
-var set =  new java.util.HashMap ();\r
-for (var pair, $pair = 0, $$pair = attset.trim ().$plit (";"); $pair < $$pair.length && ((pair = $$pair[$pair]) || true); $pair++) {\r
-pair = pair.trim ();\r
-if (pair.length == 0) {\r
-continue;\r
-}var eqpos = pair.indexOf ('=');\r
-var sppos = pair.indexOf (' ');\r
-var key = null;\r
-var value = null;\r
-if (sppos > -1 && (eqpos == -1 || sppos < eqpos)) {\r
-key = pair.substring (0, sppos);\r
-value = pair.substring (sppos + 1);\r
-} else {\r
-if (eqpos > -1 && (sppos == -1 || eqpos < sppos)) {\r
-key = pair.substring (0, eqpos);\r
-value = pair.substring (eqpos + 1);\r
-} else {\r
-key = pair;\r
-}}if (key != null) {\r
-var vals = set.get (key);\r
-if (vals == null) {\r
-vals =  new java.util.ArrayList ();\r
-set.put (key, vals);\r
-}if (value != null) {\r
-vals.add (value.trim ());\r
-}}}\r
-try {\r
-add = new Boolean (add & this.processGffKey (set, nattr, seq, sf, align, newseqs, relaxedIdMatching)).valueOf ();\r
-} catch (ivfe) {\r
-if (Clazz.exceptionOf (ivfe, jalview.io.FeaturesFile.InvalidGFF3FieldException)) {\r
-System.err.println (ivfe);\r
-} else {\r
-throw ivfe;\r
-}\r
-}\r
-}\r
-}if (add) {\r
-seq.addSequenceFeature (sf);\r
-}return add;\r
-}, "jalview.datamodel.AlignmentI,java.util.List,jalview.datamodel.SequenceI,jalview.datamodel.SequenceFeature,~B,~B");\r
-Clazz.defineMethod (c$, "processGffKey", \r
-function (set, nattr, seq, sf, align, newseqs, relaxedIdMatching) {\r
-var attr;\r
-if (sf.getType ().equals ("similarity")) {\r
-var strand = sf.getStrand ();\r
-var querySeq = this.findNames (align, newseqs, relaxedIdMatching, set.get (attr = "Query"));\r
-if (querySeq == null || querySeq.size () != 1) {\r
-throw Clazz.innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Expecting exactly one sequence in Query field (got " + set.get (attr) + ")");\r
-}if (set.containsKey (attr = "Align")) {\r
-var alco =  new jalview.datamodel.AlignedCodonFrame ();\r
-var codonmapping = this.constructCodonMappingFromAlign (set, attr, strand);\r
-alco.addMap (seq, querySeq.get (0), codonmapping);\r
-align.addCodonFrame (alco);\r
-return false;\r
-}}return true;\r
-}, "java.util.Map,~N,jalview.datamodel.SequenceI,jalview.datamodel.SequenceFeature,jalview.datamodel.AlignmentI,java.util.List,~B");\r
-Clazz.defineMethod (c$, "constructCodonMappingFromAlign", \r
-($fz = function (set, attr, strand) {\r
-if (strand == 0) {\r
-throw Clazz.innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Invalid strand for a codon mapping (cannot be 0)");\r
-}var fromrange =  new java.util.ArrayList ();\r
-var torange =  new java.util.ArrayList ();\r
-var lastppos = 0;\r
-var lastpframe = 0;\r
-for (var range, $range = set.get (attr).iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {\r
-var ints =  new java.util.ArrayList ();\r
-var st =  new java.util.StringTokenizer (range, " ");\r
-while (st.hasMoreTokens ()) {\r
-var num = st.nextToken ();\r
-try {\r
-ints.add ( new Integer (num));\r
-} catch (nfe) {\r
-if (Clazz.exceptionOf (nfe, NumberFormatException)) {\r
-throw Clazz.innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Invalid number in field " + num);\r
-} else {\r
-throw nfe;\r
-}\r
-}\r
-}\r
-if (ints.size () != 3) {\r
-throw Clazz.innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Invalid number of fields for this attribute (" + ints.size () + ")");\r
-}fromrange.add ( new Integer (ints.get (0).intValue ()));\r
-fromrange.add ( new Integer (ints.get (0).intValue () + strand * ints.get (2).intValue ()));\r
-if (ints.get (1).equals (new Integer (lastppos)) && lastpframe > 0) {\r
-lastppos += (ints.get (2)).intValue () / 3;\r
-lastpframe = (ints.get (2)).intValue () % 3;\r
-torange.set (torange.size () - 1,  new Integer (lastppos));\r
-} else {\r
-torange.add (ints.get (1));\r
-lastppos = (ints.get (1)).intValue () + (ints.get (2)).intValue () / 3;\r
-lastpframe = (ints.get (2)).intValue () % 3;\r
-torange.add ( new Integer (lastppos));\r
-}}\r
-if (fromrange.size () % 2 == 1) {\r
-throw Clazz.innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Couldn't parse the DNA alignment range correctly");\r
-}if (torange.size () % 2 == 1) {\r
-throw Clazz.innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Couldn't parse the protein alignment range correctly");\r
-}var frommap =  Clazz.newIntArray (fromrange.size (), 0);\r
-var tomap =  Clazz.newIntArray (torange.size (), 0);\r
-var p = 0;\r
-for (var ip, $ip = fromrange.iterator (); $ip.hasNext () && ((ip = $ip.next ()) || true);) {\r
-frommap[p++] = ip.intValue ();\r
-}\r
-p = 0;\r
-for (var ip, $ip = torange.iterator (); $ip.hasNext () && ((ip = $ip.next ()) || true);) {\r
-tomap[p++] = ip.intValue ();\r
-}\r
-return  new jalview.util.MapList (frommap, tomap, 3, 1);\r
-}, $fz.isPrivate = true, $fz), "java.util.Map,~S,~N");\r
-Clazz.defineMethod (c$, "findNames", \r
-($fz = function (align, newseqs, relaxedIdMatching, list) {\r
-var found =  new java.util.ArrayList ();\r
-for (var seqId, $seqId = list.iterator (); $seqId.hasNext () && ((seqId = $seqId.next ()) || true);) {\r
-var seq = this.findName (align, seqId, relaxedIdMatching, newseqs);\r
-if (seq != null) {\r
-found.add (seq);\r
-}}\r
-return found;\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,java.util.List,~B,java.util.List");\r
-Clazz.defineMethod (c$, "resetMatcher", \r
-($fz = function () {\r
-this.lastmatchedAl = null;\r
-this.matcher = null;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "findName", \r
-($fz = function (align, seqId, relaxedIdMatching, newseqs) {\r
-var match = null;\r
-if (relaxedIdMatching) {\r
-if (this.lastmatchedAl !== align) {\r
-this.matcher =  new jalview.analysis.SequenceIdMatcher ((this.lastmatchedAl = align).getSequencesArray ());\r
-if (newseqs != null) {\r
-this.matcher.addAll (newseqs);\r
-}}match = this.matcher.findIdMatch (seqId);\r
-} else {\r
-match = align.findName (seqId, true);\r
-if (match == null && newseqs != null) {\r
-for (var m, $m = newseqs.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {\r
-if (seqId.equals (m.getName ())) {\r
-return m;\r
-}}\r
-}}if (match == null && newseqs != null) {\r
-match =  new jalview.datamodel.SequenceDummy (seqId);\r
-if (relaxedIdMatching) {\r
-this.matcher.addAll (java.util.Arrays.asList ( Clazz.newArray (-1, [match])));\r
-}newseqs.add (match);\r
-}return match;\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,~S,~B,java.util.List");\r
-Clazz.defineMethod (c$, "parseDescriptionHTML", \r
-function (sf, removeHTML) {\r
-if (sf.getDescription () == null) {\r
-return;\r
-}var parsed =  new jalview.util.ParseHtmlBodyAndLinks (sf.getDescription (), removeHTML, this.newline);\r
-sf.description = (removeHTML) ? parsed.getNonHtmlContent () : sf.description;\r
-for (var link, $link = parsed.getLinks ().iterator (); $link.hasNext () && ((link = $link.next ()) || true);) {\r
-sf.addLink (link);\r
-}\r
-}, "jalview.datamodel.SequenceFeature,~B");\r
-Clazz.defineMethod (c$, "printJalviewFormat", \r
-function (seqs, visible) {\r
-return this.printJalviewFormat (seqs, visible, true, true);\r
-}, "~A,java.util.Map");\r
-Clazz.defineMethod (c$, "printJalviewFormat", \r
-function (seqs, visible, visOnly, nonpos) {\r
-var out =  new StringBuffer ();\r
-var next;\r
-var featuresGen = false;\r
-if (visOnly && !nonpos && (visible == null || visible.size () < 1)) {\r
-return "No Features Visible";\r
-}if (visible != null && visOnly) {\r
-var en = visible.keySet ().iterator ();\r
-var type;\r
-var color;\r
-while (en.hasNext ()) {\r
-type = en.next ().toString ();\r
-if (Clazz.instanceOf (visible.get (type), jalview.schemes.GraduatedColor)) {\r
-var gc = visible.get (type);\r
-color = (gc.isColourByLabel () ? "label|" : "") + jalview.util.Format.getHexString (gc.getMinColor ()) + "|" + jalview.util.Format.getHexString (gc.getMaxColor ()) + (gc.isAutoScale () ? "|" : "|abso|") + gc.getMin () + "|" + gc.getMax () + "|";\r
-if (gc.getThreshType () != -1) {\r
-if (gc.getThreshType () == 0) {\r
-color += "below";\r
-} else {\r
-if (gc.getThreshType () != 1) {\r
-System.err.println ("WARNING: Unsupported threshold type (" + gc.getThreshType () + ") : Assuming 'above'");\r
-}color += "above";\r
-}color += "|" + gc.getThresh ();\r
-} else {\r
-color += "none";\r
-}} else if (Clazz.instanceOf (visible.get (type), java.awt.Color)) {\r
-color = jalview.util.Format.getHexString (visible.get (type));\r
-} else {\r
-color = jalview.util.Format.getHexString ( new java.awt.Color (Integer.parseInt (visible.get (type).toString ())));\r
-}out.append (type);\r
-out.append ("\t");\r
-out.append (color);\r
-out.append (this.newline);\r
-}\r
-}var groups =  new java.util.Vector ();\r
-var groupIndex = 0;\r
-var isnonpos = false;\r
-for (var i = 0; i < seqs.length; i++) {\r
-next = seqs[i].getSequenceFeatures ();\r
-if (next != null) {\r
-for (var j = 0; j < next.length; j++) {\r
-isnonpos = next[j].begin == 0 && next[j].end == 0;\r
-if ((!nonpos && isnonpos) || (!isnonpos && visOnly && !visible.containsKey (next[j].type))) {\r
-continue;\r
-}if (next[j].featureGroup != null && !groups.contains (next[j].featureGroup)) {\r
-groups.addElement (next[j].featureGroup);\r
-}}\r
-}}\r
-var group = null;\r
-do {\r
-if (groups.size () > 0 && groupIndex < groups.size ()) {\r
-group = groups.elementAt (groupIndex).toString ();\r
-out.append (this.newline);\r
-out.append ("STARTGROUP\t");\r
-out.append (group);\r
-out.append (this.newline);\r
-} else {\r
-group = null;\r
-}for (var i = 0; i < seqs.length; i++) {\r
-next = seqs[i].getSequenceFeatures ();\r
-if (next != null) {\r
-for (var j = 0; j < next.length; j++) {\r
-isnonpos = next[j].begin == 0 && next[j].end == 0;\r
-if ((!nonpos && isnonpos) || (!isnonpos && visOnly && !visible.containsKey (next[j].type))) {\r
-continue;\r
-}if (group != null && (next[j].featureGroup == null || !next[j].featureGroup.equals (group))) {\r
-continue;\r
-}if (group == null && next[j].featureGroup != null) {\r
-continue;\r
-}featuresGen = true;\r
-if (next[j].description == null || next[j].description.equals ("")) {\r
-out.append (next[j].type + "\t");\r
-} else {\r
-if (next[j].links != null && next[j].getDescription ().indexOf ("<html>") == -1) {\r
-out.append ("<html>");\r
-}out.append (next[j].description + " ");\r
-if (next[j].links != null) {\r
-for (var l = 0; l < next[j].links.size (); l++) {\r
-var label = next[j].links.elementAt (l).toString ();\r
-var href = label.substring (label.indexOf ("|") + 1);\r
-label = label.substring (0, label.indexOf ("|"));\r
-if (next[j].description.indexOf (href) == -1) {\r
-out.append ("<a href=\"" + href + "\">" + label + "</a>");\r
-}}\r
-if (next[j].getDescription ().indexOf ("</html>") == -1) {\r
-out.append ("</html>");\r
-}}out.append ("\t");\r
-}out.append (seqs[i].getName ());\r
-out.append ("\t-1\t");\r
-out.append (next[j].begin);\r
-out.append ("\t");\r
-out.append (next[j].end);\r
-out.append ("\t");\r
-out.append (next[j].type);\r
-if (!Float.isNaN (next[j].score)) {\r
-out.append ("\t");\r
-out.append (next[j].score);\r
-}out.append (this.newline);\r
-}\r
-}}\r
-if (group != null) {\r
-out.append ("ENDGROUP\t");\r
-out.append (group);\r
-out.append (this.newline);\r
-groupIndex++;\r
-} else {\r
-break;\r
-}} while (groupIndex < groups.size () + 1);\r
-if (!featuresGen) {\r
-return "No Features Visible";\r
-}return out.toString ();\r
-}, "~A,java.util.Map,~B,~B");\r
-Clazz.defineMethod (c$, "printGFFFormat", \r
-function (seqs, visible) {\r
-return this.printGFFFormat (seqs, visible, true, true);\r
-}, "~A,java.util.Map");\r
-Clazz.defineMethod (c$, "printGFFFormat", \r
-function (seqs, visible, visOnly, nonpos) {\r
-var out =  new StringBuffer ();\r
-var next;\r
-var source;\r
-var isnonpos;\r
-for (var i = 0; i < seqs.length; i++) {\r
-if (seqs[i].getSequenceFeatures () != null) {\r
-next = seqs[i].getSequenceFeatures ();\r
-for (var j = 0; j < next.length; j++) {\r
-isnonpos = next[j].begin == 0 && next[j].end == 0;\r
-if ((!nonpos && isnonpos) || (!isnonpos && visOnly && !visible.containsKey (next[j].type))) {\r
-continue;\r
-}source = next[j].featureGroup;\r
-if (source == null) {\r
-source = next[j].getDescription ();\r
-}out.append (seqs[i].getName ());\r
-out.append ("\t");\r
-out.append (source);\r
-out.append ("\t");\r
-out.append (next[j].type);\r
-out.append ("\t");\r
-out.append (next[j].begin);\r
-out.append ("\t");\r
-out.append (next[j].end);\r
-out.append ("\t");\r
-out.append (next[j].score);\r
-out.append ("\t");\r
-if (next[j].getValue ("STRAND") != null) {\r
-out.append (next[j].getValue ("STRAND"));\r
-out.append ("\t");\r
-} else {\r
-out.append (".\t");\r
-}if (next[j].getValue ("FRAME") != null) {\r
-out.append (next[j].getValue ("FRAME"));\r
-} else {\r
-out.append (".");\r
-}if (next[j].getValue ("ATTRIBUTES") != null) {\r
-out.append (next[j].getValue ("ATTRIBUTES"));\r
-}out.append (this.newline);\r
-}\r
-}}\r
-return out.toString ();\r
-}, "~A,java.util.Map,~B,~B");\r
-Clazz.defineMethod (c$, "parse", \r
-function () {\r
-});\r
-Clazz.overrideMethod (c$, "print", \r
-function () {\r
-return "USE printGFFFormat() or printJalviewFormat()";\r
-});\r
-c$.$FeaturesFile$InvalidGFF3FieldException$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.field = null;\r
-this.value = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io.FeaturesFile, "InvalidGFF3FieldException", Exception);\r
-Clazz.makeConstructor (c$, \r
-function (a, b, c) {\r
-Clazz.superConstructor (this, jalview.io.FeaturesFile.InvalidGFF3FieldException, [c + " (Field was " + a + " and value was " + b.get (a).toString ()]);\r
-this.field = a;\r
-this.value = b.get (a).toString ();\r
-}, "~S,java.util.Map,~S");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareType (jalview.io.FeaturesFile, "GffPragmas", Enum);\r
-Clazz.defineEnumConstant (c$, "gff_version", 0, []);\r
-Clazz.defineEnumConstant (c$, "sequence_region", 1, []);\r
-Clazz.defineEnumConstant (c$, "feature_ontology", 2, []);\r
-Clazz.defineEnumConstant (c$, "attribute_ontology", 3, []);\r
-Clazz.defineEnumConstant (c$, "source_ontology", 4, []);\r
-Clazz.defineEnumConstant (c$, "species_build", 5, []);\r
-Clazz.defineEnumConstant (c$, "fasta", 6, []);\r
-Clazz.defineEnumConstant (c$, "hash", 7, []);\r
-c$ = Clazz.p0p ();\r
-Clazz.defineStatics (c$,\r
-"GFFPRAGMA", null);\r
-{\r
-jalview.io.FeaturesFile.GFFPRAGMA =  new java.util.HashMap ();\r
-jalview.io.FeaturesFile.GFFPRAGMA.put ("sequence-region", jalview.io.FeaturesFile.GffPragmas.sequence_region);\r
-jalview.io.FeaturesFile.GFFPRAGMA.put ("feature-ontology", jalview.io.FeaturesFile.GffPragmas.feature_ontology);\r
-jalview.io.FeaturesFile.GFFPRAGMA.put ("#", jalview.io.FeaturesFile.GffPragmas.hash);\r
-jalview.io.FeaturesFile.GFFPRAGMA.put ("fasta", jalview.io.FeaturesFile.GffPragmas.fasta);\r
-jalview.io.FeaturesFile.GFFPRAGMA.put ("species-build", jalview.io.FeaturesFile.GffPragmas.species_build);\r
-jalview.io.FeaturesFile.GFFPRAGMA.put ("source-ontology", jalview.io.FeaturesFile.GffPragmas.source_ontology);\r
-jalview.io.FeaturesFile.GFFPRAGMA.put ("attribute-ontology", jalview.io.FeaturesFile.GffPragmas.attribute_ontology);\r
-}});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (["jalview.io.AlignFile", "java.lang.Enum", "$.Exception"], "jalview.io.FeaturesFile", ["jalview.analysis.SequenceIdMatcher", "jalview.datamodel.AlignedCodonFrame", "$.SequenceDummy", "$.SequenceFeature", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.GraduatedColor", "$.UserColourScheme", "jalview.util.Format", "$.MapList", "$.ParseHtmlBodyAndLinks", "java.awt.Color", "java.lang.Float", "$.StringBuffer", "java.util.ArrayList", "$.Arrays", "$.HashMap", "$.Hashtable", "$.StringTokenizer", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.doGffSource = true;
+this.gffversion = 0;
+if (!Clazz.isClassDefined ("jalview.io.FeaturesFile.InvalidGFF3FieldException")) {
+jalview.io.FeaturesFile.$FeaturesFile$InvalidGFF3FieldException$ ();
+}
+this.lastmatchedAl = null;
+this.matcher = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io, "FeaturesFile", jalview.io.AlignFile);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.io.FeaturesFile, []);
+});
+Clazz.defineMethod (c$, "parse", 
+function (align, colours, removeHTML) {
+return this.parse (align, colours, null, removeHTML, false);
+}, "jalview.datamodel.AlignmentI,java.util.Hashtable,~B");
+Clazz.defineMethod (c$, "parse", 
+function (align, colours, removeHTML, relaxedIdMatching) {
+return this.parse (align, colours, null, removeHTML, relaxedIdMatching);
+}, "jalview.datamodel.AlignmentI,java.util.Map,~B,~B");
+Clazz.defineMethod (c$, "parse", 
+function (align, colours, featureLink, removeHTML) {
+return this.parse (align, colours, featureLink, removeHTML, false);
+}, "jalview.datamodel.AlignmentI,java.util.Map,java.util.Map,~B");
+Clazz.defineMethod (c$, "parse", 
+function (align, colours, featureLink, removeHTML, relaxedIdmatching) {
+var line = null;
+try {
+var seq = null;
+var newseqs =  new java.util.ArrayList ();
+var type;
+var desc;
+var token = null;
+var index;
+var start;
+var end;
+var score;
+var st;
+var sf;
+var featureGroup = null;
+var groupLink = null;
+var typeLink =  new java.util.Hashtable ();
+var GFFFile = true;
+var gffProps =  new java.util.HashMap ();
+while ((line = this.nextLine ()) != null) {
+if (line.startsWith ("#")) {
+if (line.startsWith ("##")) {
+this.processGffPragma (line, gffProps, align, newseqs);
+line = "";
+}continue;
+}st =  new java.util.StringTokenizer (line, "\t");
+if (st.countTokens () == 1) {
+if (line.trim ().equalsIgnoreCase ("GFF")) {
+GFFFile = true;
+continue;
+}}if (st.countTokens () > 1 && st.countTokens () < 4) {
+GFFFile = false;
+type = st.nextToken ();
+if (type.equalsIgnoreCase ("startgroup")) {
+featureGroup = st.nextToken ();
+if (st.hasMoreElements ()) {
+groupLink = st.nextToken ();
+featureLink.put (featureGroup, groupLink);
+}} else if (type.equalsIgnoreCase ("endgroup")) {
+st.nextToken ();
+featureGroup = null;
+groupLink = null;
+} else {
+var colour = null;
+var colscheme = st.nextToken ();
+if (colscheme.indexOf ("|") > -1 || colscheme.trim ().equalsIgnoreCase ("label")) {
+var gcol =  new java.util.StringTokenizer (colscheme, "|", true);
+var threshtype = -1;
+var min = 1.4E-45;
+var max = 3.4028235E38;
+var threshval = NaN;
+var labelCol = false;
+var mincol = gcol.nextToken ();
+if (mincol === "|") {
+System.err.println ("Expected either 'label' or a colour specification in the line: " + line);
+continue;
+}var maxcol = null;
+if (mincol.toLowerCase ().indexOf ("label") == 0) {
+labelCol = true;
+mincol = (gcol.hasMoreTokens () ? gcol.nextToken () : null);
+mincol = (gcol.hasMoreTokens () ? gcol.nextToken () : null);
+}var abso = null;
+var minval;
+var maxval;
+if (mincol != null) {
+if (mincol.equals ("|")) {
+mincol = "";
+} else {
+gcol.nextToken ();
+}maxcol = gcol.nextToken ();
+if (maxcol.equals ("|")) {
+maxcol = "";
+} else {
+gcol.nextToken ();
+}abso = gcol.nextToken ();
+gcol.nextToken ();
+if (abso.toLowerCase ().indexOf ("abso") != 0) {
+minval = abso;
+abso = null;
+} else {
+minval = gcol.nextToken ();
+gcol.nextToken ();
+}maxval = gcol.nextToken ();
+if (gcol.hasMoreTokens ()) {
+gcol.nextToken ();
+}try {
+if (minval.length > 0) {
+min =  new Float (minval).floatValue ();
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Couldn't parse the minimum value for graduated colour for type (" + colscheme + ") - did you misspell 'auto' for the optional automatic colour switch ?");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+try {
+if (maxval.length > 0) {
+max =  new Float (maxval).floatValue ();
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Couldn't parse the maximum value for graduated colour for type (" + colscheme + ")");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+} else {
+mincol = "FFFFFF";
+maxcol = "000000";
+}try {
+colour =  new jalview.schemes.GraduatedColor ( new jalview.schemes.UserColourScheme (mincol).findColour ('A'),  new jalview.schemes.UserColourScheme (maxcol).findColour ('A'), min, max);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Couldn't parse the graduated colour scheme (" + colscheme + ")");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+if (colour != null) {
+(colour).setColourByLabel (labelCol);
+(colour).setAutoScaled (abso == null);
+var ttype = null;
+var tval = null;
+if (gcol.hasMoreTokens ()) {
+ttype = gcol.nextToken ();
+if (ttype.toLowerCase ().startsWith ("below")) {
+(colour).setThreshType (0);
+} else if (ttype.toLowerCase ().startsWith ("above")) {
+(colour).setThreshType (1);
+} else {
+(colour).setThreshType (-1);
+if (!ttype.toLowerCase ().startsWith ("no")) {
+System.err.println ("Ignoring unrecognised threshold type : " + ttype);
+}}}if ((colour).getThreshType () != -1) {
+try {
+gcol.nextToken ();
+tval = gcol.nextToken ();
+(colour).setThresh ( new Float (tval).floatValue ());
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Couldn't parse threshold value as a float: (" + tval + ")");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+}if (gcol.hasMoreTokens ()) {
+System.err.println ("Ignoring additional tokens in parameters in graduated colour specification\n");
+while (gcol.hasMoreTokens ()) {
+System.err.println ("|" + gcol.nextToken ());
+}
+System.err.println ("\n");
+}}} else {
+var ucs =  new jalview.schemes.UserColourScheme (colscheme);
+colour = ucs.findColour ('A');
+}if (colour != null) {
+colours.put (type, colour);
+}if (st.hasMoreElements ()) {
+var link = st.nextToken ();
+typeLink.put (type, link);
+if (featureLink == null) {
+featureLink =  new java.util.Hashtable ();
+}featureLink.put (type, link);
+}}continue;
+}var seqId = "";
+while (st.hasMoreElements ()) {
+if (GFFFile) {
+seqId = token = st.nextToken ();
+seq = this.findName (align, seqId, relaxedIdmatching, newseqs);
+if (seq != null) {
+desc = st.nextToken ();
+var group = null;
+if (this.doGffSource && desc.indexOf (' ') == -1) {
+group =  String.instantialize (desc);
+}type = st.nextToken ();
+try {
+var stt = st.nextToken ();
+if (stt.length == 0 || stt.equals ("-")) {
+start = 0;
+} else {
+start = Integer.parseInt (stt);
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+start = 0;
+} else {
+throw ex;
+}
+}
+try {
+var stt = st.nextToken ();
+if (stt.length == 0 || stt.equals ("-")) {
+end = 0;
+} else {
+end = Integer.parseInt (stt);
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+end = 0;
+} else {
+throw ex;
+}
+}
+if (end == 0) {
+start = 0;
+}try {
+score =  new Float (st.nextToken ()).floatValue ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+score = 0;
+} else {
+throw ex;
+}
+}
+sf =  new jalview.datamodel.SequenceFeature (type, desc, start, end, score, group);
+try {
+sf.setValue ("STRAND", st.nextToken ());
+sf.setValue ("FRAME", st.nextToken ());
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+if (st.hasMoreTokens ()) {
+var attributes =  new StringBuffer ();
+var sep = false;
+while (st.hasMoreTokens ()) {
+attributes.append ((sep ? "\t" : "") + st.nextElement ());
+sep = true;
+}
+sf.setValue ("ATTRIBUTES", attributes.toString ());
+}if (this.processOrAddSeqFeature (align, newseqs, seq, sf, GFFFile, relaxedIdmatching)) {
+while ((seq = align.findName (seq, seqId, true)) != null) {
+seq.addSequenceFeature ( new jalview.datamodel.SequenceFeature (sf));
+}
+}break;
+}}if (GFFFile && seq == null) {
+desc = token;
+} else {
+desc = st.nextToken ();
+}if (!st.hasMoreTokens ()) {
+System.err.println ("DEBUG: Run out of tokens when trying to identify the destination for the feature.. giving up.");
+return false;
+}token = st.nextToken ();
+if (!token.equals ("ID_NOT_SPECIFIED")) {
+seq = this.findName (align, seqId = token, relaxedIdmatching, null);
+st.nextToken ();
+} else {
+seqId = null;
+try {
+index = Integer.parseInt (st.nextToken ());
+seq = align.getSequenceAt (index);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+seq = null;
+} else {
+throw ex;
+}
+}
+}if (seq == null) {
+System.out.println ("Sequence not found: " + line);
+break;
+}start = Integer.parseInt (st.nextToken ());
+end = Integer.parseInt (st.nextToken ());
+type = st.nextToken ();
+if (!colours.containsKey (type)) {
+var ucs =  new jalview.schemes.UserColourScheme (type);
+colours.put (type, ucs.findColour ('A'));
+}sf =  new jalview.datamodel.SequenceFeature (type, desc, "", start, end, featureGroup);
+if (st.hasMoreTokens ()) {
+try {
+score =  new Float (st.nextToken ()).floatValue ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+score = 0;
+} else {
+throw ex;
+}
+}
+sf.setScore (score);
+}if (groupLink != null && removeHTML) {
+sf.addLink (groupLink);
+sf.description += "%LINK%";
+}if (typeLink.containsKey (type) && removeHTML) {
+sf.addLink (typeLink.get (type).toString ());
+sf.description += "%LINK%";
+}this.parseDescriptionHTML (sf, removeHTML);
+seq.addSequenceFeature (sf);
+while (seqId != null && (seq = align.findName (seq, seqId, false)) != null) {
+seq.addSequenceFeature ( new jalview.datamodel.SequenceFeature (sf));
+}
+GFFFile = false;
+}
+}
+this.resetMatcher ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+this.warningMessage = ((this.warningMessage == null) ? "" : this.warningMessage) + "Parsing error at\n" + line;
+System.out.println ("Error parsing feature file: " + ex + "\n" + line);
+ex.printStackTrace (System.err);
+this.resetMatcher ();
+return false;
+} else {
+throw ex;
+}
+}
+return true;
+}, "jalview.datamodel.AlignmentI,java.util.Map,java.util.Map,~B,~B");
+Clazz.defineMethod (c$, "processGffPragma", 
+($fz = function (line, gffProps, align, newseqs) {
+var spacepos = line.indexOf (' ');
+var pragma = spacepos == -1 ? line.substring (2).trim () : line.substring (2, spacepos);
+var gffpragma = jalview.io.FeaturesFile.GFFPRAGMA.get (pragma.toLowerCase ());
+if (gffpragma == null) {
+return;
+}switch (gffpragma) {
+case jalview.io.FeaturesFile.GffPragmas.gff_version:
+try {
+this.gffversion = Integer.parseInt (line.substring (spacepos + 1));
+} finally {
+}
+break;
+case jalview.io.FeaturesFile.GffPragmas.feature_ontology:
+break;
+case jalview.io.FeaturesFile.GffPragmas.attribute_ontology:
+break;
+case jalview.io.FeaturesFile.GffPragmas.source_ontology:
+break;
+case jalview.io.FeaturesFile.GffPragmas.species_build:
+break;
+case jalview.io.FeaturesFile.GffPragmas.hash:
+break;
+case jalview.io.FeaturesFile.GffPragmas.fasta:
+this.process_as_fasta (align, newseqs);
+break;
+default:
+System.err.println ("Ignoring unknown pragma:\n" + line);
+}
+}, $fz.isPrivate = true, $fz), "~S,java.util.Map,jalview.datamodel.AlignmentI,java.util.ArrayList");
+Clazz.defineMethod (c$, "process_as_fasta", 
+($fz = function (align, newseqs) {
+try {
+this.mark ();
+} catch (q) {
+if (Clazz.exceptionOf (q, java.io.IOException)) {
+} else {
+throw q;
+}
+}
+var parser = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", []);
+var includedseqs = parser.getSeqs ();
+var smatcher =  new jalview.analysis.SequenceIdMatcher (newseqs);
+for (var p = 0, pSize = includedseqs.size (); p < pSize; p++) {
+var dummyseq = smatcher.findIdMatch (includedseqs.get (p));
+if (dummyseq != null) {
+var mseq = includedseqs.get (p);
+if (Clazz.instanceOf (dummyseq, jalview.datamodel.SequenceDummy)) {
+(dummyseq).become (mseq);
+includedseqs.set (p, dummyseq);
+}}}
+for (var seq, $seq = includedseqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+align.addSequence (seq);
+}
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,java.util.List");
+Clazz.defineMethod (c$, "processOrAddSeqFeature", 
+function (align, newseqs, seq, sf, gFFFile, relaxedIdMatching) {
+var attr = sf.getValue ("ATTRIBUTES");
+var add = true;
+if (gFFFile && attr != null) {
+var nattr = 8;
+for (var attset, $attset = 0, $$attset = attr.$plit ("\t"); $attset < $$attset.length && ((attset = $$attset[$attset]) || true); $attset++) {
+if (attset == null || attset.trim ().length == 0) {
+continue;
+}nattr++;
+var set =  new java.util.HashMap ();
+for (var pair, $pair = 0, $$pair = attset.trim ().$plit (";"); $pair < $$pair.length && ((pair = $$pair[$pair]) || true); $pair++) {
+pair = pair.trim ();
+if (pair.length == 0) {
+continue;
+}var eqpos = pair.indexOf ('=');
+var sppos = pair.indexOf (' ');
+var key = null;
+var value = null;
+if (sppos > -1 && (eqpos == -1 || sppos < eqpos)) {
+key = pair.substring (0, sppos);
+value = pair.substring (sppos + 1);
+} else {
+if (eqpos > -1 && (sppos == -1 || eqpos < sppos)) {
+key = pair.substring (0, eqpos);
+value = pair.substring (eqpos + 1);
+} else {
+key = pair;
+}}if (key != null) {
+var vals = set.get (key);
+if (vals == null) {
+vals =  new java.util.ArrayList ();
+set.put (key, vals);
+}if (value != null) {
+vals.add (value.trim ());
+}}}
+try {
+add = new Boolean (add & this.processGffKey (set, nattr, seq, sf, align, newseqs, relaxedIdMatching)).valueOf ();
+} catch (ivfe) {
+if (Clazz.exceptionOf (ivfe, jalview.io.FeaturesFile.InvalidGFF3FieldException)) {
+System.err.println (ivfe);
+} else {
+throw ivfe;
+}
+}
+}
+}if (add) {
+seq.addSequenceFeature (sf);
+}return add;
+}, "jalview.datamodel.AlignmentI,java.util.List,jalview.datamodel.SequenceI,jalview.datamodel.SequenceFeature,~B,~B");
+Clazz.defineMethod (c$, "processGffKey", 
+function (set, nattr, seq, sf, align, newseqs, relaxedIdMatching) {
+var attr;
+if (sf.getType ().equals ("similarity")) {
+var strand = sf.getStrand ();
+var querySeq = this.findNames (align, newseqs, relaxedIdMatching, set.get (attr = "Query"));
+if (querySeq == null || querySeq.size () != 1) {
+throw Clazz.innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Expecting exactly one sequence in Query field (got " + set.get (attr) + ")");
+}if (set.containsKey (attr = "Align")) {
+var alco =  new jalview.datamodel.AlignedCodonFrame ();
+var codonmapping = this.constructCodonMappingFromAlign (set, attr, strand);
+alco.addMap (seq, querySeq.get (0), codonmapping);
+align.addCodonFrame (alco);
+return false;
+}}return true;
+}, "java.util.Map,~N,jalview.datamodel.SequenceI,jalview.datamodel.SequenceFeature,jalview.datamodel.AlignmentI,java.util.List,~B");
+Clazz.defineMethod (c$, "constructCodonMappingFromAlign", 
+($fz = function (set, attr, strand) {
+if (strand == 0) {
+throw Clazz.innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Invalid strand for a codon mapping (cannot be 0)");
+}var fromrange =  new java.util.ArrayList ();
+var torange =  new java.util.ArrayList ();
+var lastppos = 0;
+var lastpframe = 0;
+for (var range, $range = set.get (attr).iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {
+var ints =  new java.util.ArrayList ();
+var st =  new java.util.StringTokenizer (range, " ");
+while (st.hasMoreTokens ()) {
+var num = st.nextToken ();
+try {
+ints.add ( new Integer (num));
+} catch (nfe) {
+if (Clazz.exceptionOf (nfe, NumberFormatException)) {
+throw Clazz.innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Invalid number in field " + num);
+} else {
+throw nfe;
+}
+}
+}
+if (ints.size () != 3) {
+throw Clazz.innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Invalid number of fields for this attribute (" + ints.size () + ")");
+}fromrange.add ( new Integer (ints.get (0).intValue ()));
+fromrange.add ( new Integer (ints.get (0).intValue () + strand * ints.get (2).intValue ()));
+if (ints.get (1).equals (new Integer (lastppos)) && lastpframe > 0) {
+lastppos += (ints.get (2)).intValue () / 3;
+lastpframe = (ints.get (2)).intValue () % 3;
+torange.set (torange.size () - 1,  new Integer (lastppos));
+} else {
+torange.add (ints.get (1));
+lastppos = (ints.get (1)).intValue () + (ints.get (2)).intValue () / 3;
+lastpframe = (ints.get (2)).intValue () % 3;
+torange.add ( new Integer (lastppos));
+}}
+if (fromrange.size () % 2 == 1) {
+throw Clazz.innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Couldn't parse the DNA alignment range correctly");
+}if (torange.size () % 2 == 1) {
+throw Clazz.innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Couldn't parse the protein alignment range correctly");
+}var frommap =  Clazz.newIntArray (fromrange.size (), 0);
+var tomap =  Clazz.newIntArray (torange.size (), 0);
+var p = 0;
+for (var ip, $ip = fromrange.iterator (); $ip.hasNext () && ((ip = $ip.next ()) || true);) {
+frommap[p++] = ip.intValue ();
+}
+p = 0;
+for (var ip, $ip = torange.iterator (); $ip.hasNext () && ((ip = $ip.next ()) || true);) {
+tomap[p++] = ip.intValue ();
+}
+return  new jalview.util.MapList (frommap, tomap, 3, 1);
+}, $fz.isPrivate = true, $fz), "java.util.Map,~S,~N");
+Clazz.defineMethod (c$, "findNames", 
+($fz = function (align, newseqs, relaxedIdMatching, list) {
+var found =  new java.util.ArrayList ();
+for (var seqId, $seqId = list.iterator (); $seqId.hasNext () && ((seqId = $seqId.next ()) || true);) {
+var seq = this.findName (align, seqId, relaxedIdMatching, newseqs);
+if (seq != null) {
+found.add (seq);
+}}
+return found;
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,java.util.List,~B,java.util.List");
+Clazz.defineMethod (c$, "resetMatcher", 
+($fz = function () {
+this.lastmatchedAl = null;
+this.matcher = null;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "findName", 
+($fz = function (align, seqId, relaxedIdMatching, newseqs) {
+var match = null;
+if (relaxedIdMatching) {
+if (this.lastmatchedAl !== align) {
+this.matcher =  new jalview.analysis.SequenceIdMatcher ((this.lastmatchedAl = align).getSequencesArray ());
+if (newseqs != null) {
+this.matcher.addAll (newseqs);
+}}match = this.matcher.findIdMatch (seqId);
+} else {
+match = align.findName (seqId, true);
+if (match == null && newseqs != null) {
+for (var m, $m = newseqs.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+if (seqId.equals (m.getName ())) {
+return m;
+}}
+}}if (match == null && newseqs != null) {
+match =  new jalview.datamodel.SequenceDummy (seqId);
+if (relaxedIdMatching) {
+this.matcher.addAll (java.util.Arrays.asList ( Clazz.newArray (-1, [match])));
+}newseqs.add (match);
+}return match;
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentI,~S,~B,java.util.List");
+Clazz.defineMethod (c$, "parseDescriptionHTML", 
+function (sf, removeHTML) {
+if (sf.getDescription () == null) {
+return;
+}var parsed =  new jalview.util.ParseHtmlBodyAndLinks (sf.getDescription (), removeHTML, this.newline);
+sf.description = (removeHTML) ? parsed.getNonHtmlContent () : sf.description;
+for (var link, $link = parsed.getLinks ().iterator (); $link.hasNext () && ((link = $link.next ()) || true);) {
+sf.addLink (link);
+}
+}, "jalview.datamodel.SequenceFeature,~B");
+Clazz.defineMethod (c$, "printJalviewFormat", 
+function (seqs, visible) {
+return this.printJalviewFormat (seqs, visible, true, true);
+}, "~A,java.util.Map");
+Clazz.defineMethod (c$, "printJalviewFormat", 
+function (seqs, visible, visOnly, nonpos) {
+var out =  new StringBuffer ();
+var next;
+var featuresGen = false;
+if (visOnly && !nonpos && (visible == null || visible.size () < 1)) {
+return "No Features Visible";
+}if (visible != null && visOnly) {
+var en = visible.keySet ().iterator ();
+var type;
+var color;
+while (en.hasNext ()) {
+type = en.next ().toString ();
+if (Clazz.instanceOf (visible.get (type), jalview.schemes.GraduatedColor)) {
+var gc = visible.get (type);
+color = (gc.isColourByLabel () ? "label|" : "") + jalview.util.Format.getHexString (gc.getMinColor ()) + "|" + jalview.util.Format.getHexString (gc.getMaxColor ()) + (gc.isAutoScale () ? "|" : "|abso|") + gc.getMin () + "|" + gc.getMax () + "|";
+if (gc.getThreshType () != -1) {
+if (gc.getThreshType () == 0) {
+color += "below";
+} else {
+if (gc.getThreshType () != 1) {
+System.err.println ("WARNING: Unsupported threshold type (" + gc.getThreshType () + ") : Assuming 'above'");
+}color += "above";
+}color += "|" + gc.getThresh ();
+} else {
+color += "none";
+}} else if (Clazz.instanceOf (visible.get (type), java.awt.Color)) {
+color = jalview.util.Format.getHexString (visible.get (type));
+} else {
+color = jalview.util.Format.getHexString ( new java.awt.Color (Integer.parseInt (visible.get (type).toString ())));
+}out.append (type);
+out.append ("\t");
+out.append (color);
+out.append (this.newline);
+}
+}var groups =  new java.util.Vector ();
+var groupIndex = 0;
+var isnonpos = false;
+for (var i = 0; i < seqs.length; i++) {
+next = seqs[i].getSequenceFeatures ();
+if (next != null) {
+for (var j = 0; j < next.length; j++) {
+isnonpos = next[j].begin == 0 && next[j].end == 0;
+if ((!nonpos && isnonpos) || (!isnonpos && visOnly && !visible.containsKey (next[j].type))) {
+continue;
+}if (next[j].featureGroup != null && !groups.contains (next[j].featureGroup)) {
+groups.addElement (next[j].featureGroup);
+}}
+}}
+var group = null;
+do {
+if (groups.size () > 0 && groupIndex < groups.size ()) {
+group = groups.elementAt (groupIndex).toString ();
+out.append (this.newline);
+out.append ("STARTGROUP\t");
+out.append (group);
+out.append (this.newline);
+} else {
+group = null;
+}for (var i = 0; i < seqs.length; i++) {
+next = seqs[i].getSequenceFeatures ();
+if (next != null) {
+for (var j = 0; j < next.length; j++) {
+isnonpos = next[j].begin == 0 && next[j].end == 0;
+if ((!nonpos && isnonpos) || (!isnonpos && visOnly && !visible.containsKey (next[j].type))) {
+continue;
+}if (group != null && (next[j].featureGroup == null || !next[j].featureGroup.equals (group))) {
+continue;
+}if (group == null && next[j].featureGroup != null) {
+continue;
+}featuresGen = true;
+if (next[j].description == null || next[j].description.equals ("")) {
+out.append (next[j].type + "\t");
+} else {
+if (next[j].links != null && next[j].getDescription ().indexOf ("<html>") == -1) {
+out.append ("<html>");
+}out.append (next[j].description + " ");
+if (next[j].links != null) {
+for (var l = 0; l < next[j].links.size (); l++) {
+var label = next[j].links.elementAt (l).toString ();
+var href = label.substring (label.indexOf ("|") + 1);
+label = label.substring (0, label.indexOf ("|"));
+if (next[j].description.indexOf (href) == -1) {
+out.append ("<a href=\"" + href + "\">" + label + "</a>");
+}}
+if (next[j].getDescription ().indexOf ("</html>") == -1) {
+out.append ("</html>");
+}}out.append ("\t");
+}out.append (seqs[i].getName ());
+out.append ("\t-1\t");
+out.append ("" + next[j].begin);
+out.append ("\t");
+out.append ("" + next[j].end);
+out.append ("\t");
+out.append (next[j].type);
+if (!Float.isNaN (next[j].score)) {
+out.append ("\t");
+out.append (next[j].score);
+}out.append (this.newline);
+}
+}}
+if (group != null) {
+out.append ("ENDGROUP\t");
+out.append (group);
+out.append (this.newline);
+groupIndex++;
+} else {
+break;
+}} while (groupIndex < groups.size () + 1);
+if (!featuresGen) {
+return "No Features Visible";
+}return out.toString ();
+}, "~A,java.util.Map,~B,~B");
+Clazz.defineMethod (c$, "printGFFFormat", 
+function (seqs, visible) {
+return this.printGFFFormat (seqs, visible, true, true);
+}, "~A,java.util.Map");
+Clazz.defineMethod (c$, "printGFFFormat", 
+function (seqs, visible, visOnly, nonpos) {
+var out =  new StringBuffer ();
+var next;
+var source;
+var isnonpos;
+for (var i = 0; i < seqs.length; i++) {
+if (seqs[i].getSequenceFeatures () != null) {
+next = seqs[i].getSequenceFeatures ();
+for (var j = 0; j < next.length; j++) {
+isnonpos = next[j].begin == 0 && next[j].end == 0;
+if ((!nonpos && isnonpos) || (!isnonpos && visOnly && !visible.containsKey (next[j].type))) {
+continue;
+}source = next[j].featureGroup;
+if (source == null) {
+source = next[j].getDescription ();
+}out.append (seqs[i].getName ());
+out.append ("\t");
+out.append (source);
+out.append ("\t");
+out.append (next[j].type);
+out.append ("\t");
+out.append ("" + next[j].begin);
+out.append ("\t");
+out.append ("" + next[j].end);
+out.append ("\t");
+out.append (next[j].score);
+out.append ("\t");
+if (next[j].getValue ("STRAND") != null) {
+out.append (next[j].getValue ("STRAND"));
+out.append ("\t");
+} else {
+out.append (".\t");
+}if (next[j].getValue ("FRAME") != null) {
+out.append (next[j].getValue ("FRAME"));
+} else {
+out.append (".");
+}if (next[j].getValue ("ATTRIBUTES") != null) {
+out.append (next[j].getValue ("ATTRIBUTES"));
+}out.append (this.newline);
+}
+}}
+return out.toString ();
+}, "~A,java.util.Map,~B,~B");
+Clazz.defineMethod (c$, "parse", 
+function () {
+});
+Clazz.overrideMethod (c$, "print", 
+function () {
+return "USE printGFFFormat() or printJalviewFormat()";
+});
+c$.$FeaturesFile$InvalidGFF3FieldException$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.field = null;
+this.value = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io.FeaturesFile, "InvalidGFF3FieldException", Exception);
+Clazz.makeConstructor (c$, 
+function (a, b, c) {
+Clazz.superConstructor (this, jalview.io.FeaturesFile.InvalidGFF3FieldException, [c + " (Field was " + a + " and value was " + b.get (a).toString ()]);
+this.field = a;
+this.value = b.get (a).toString ();
+}, "~S,java.util.Map,~S");
+c$ = Clazz.p0p ();
+};
+Clazz.pu$h ();
+c$ = Clazz.declareType (jalview.io.FeaturesFile, "GffPragmas", Enum);
+Clazz.defineEnumConstant (c$, "gff_version", 0, []);
+Clazz.defineEnumConstant (c$, "sequence_region", 1, []);
+Clazz.defineEnumConstant (c$, "feature_ontology", 2, []);
+Clazz.defineEnumConstant (c$, "attribute_ontology", 3, []);
+Clazz.defineEnumConstant (c$, "source_ontology", 4, []);
+Clazz.defineEnumConstant (c$, "species_build", 5, []);
+Clazz.defineEnumConstant (c$, "fasta", 6, []);
+Clazz.defineEnumConstant (c$, "hash", 7, []);
+c$ = Clazz.p0p ();
+Clazz.defineStatics (c$,
+"GFFPRAGMA", null);
+{
+jalview.io.FeaturesFile.GFFPRAGMA =  new java.util.HashMap ();
+jalview.io.FeaturesFile.GFFPRAGMA.put ("sequence-region", jalview.io.FeaturesFile.GffPragmas.sequence_region);
+jalview.io.FeaturesFile.GFFPRAGMA.put ("feature-ontology", jalview.io.FeaturesFile.GffPragmas.feature_ontology);
+jalview.io.FeaturesFile.GFFPRAGMA.put ("#", jalview.io.FeaturesFile.GffPragmas.hash);
+jalview.io.FeaturesFile.GFFPRAGMA.put ("fasta", jalview.io.FeaturesFile.GffPragmas.fasta);
+jalview.io.FeaturesFile.GFFPRAGMA.put ("species-build", jalview.io.FeaturesFile.GffPragmas.species_build);
+jalview.io.FeaturesFile.GFFPRAGMA.put ("source-ontology", jalview.io.FeaturesFile.GffPragmas.source_ontology);
+jalview.io.FeaturesFile.GFFPRAGMA.put ("attribute-ontology", jalview.io.FeaturesFile.GffPragmas.attribute_ontology);
+}});
index 86fbc3c..e2448f1 100644 (file)
Binary files a/bin/jalview/io/FileParse.class and b/bin/jalview/io/FileParse.class differ
index 51d1e87..a16b90a 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (null, "jalview.io.FileParse", ["jalview.io.AppletFormatAdapter", "jalview.util.MessageManager", "java.io.BufferedReader", "$.IOException", "$.InputStreamReader", "$.StringReader", "java.lang.Error", "java.net.URL", "java.util.zip.GZIPInputStream"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.dataName = "unknown source";\r
-this.inFile = null;\r
-this.viewport = null;\r
-this.exportSettings = null;\r
-this.index = 1;\r
-this.suffixSeparator = '#';\r
-this.newline = null;\r
-this.suffix = null;\r
-this.type = null;\r
-this.dataIn = null;\r
-this.errormessage = "UNITIALISED SOURCE";\r
-this.error = true;\r
-this.warningMessage = null;\r
-this.READAHEAD_LIMIT = 2048;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io, "FileParse");\r
-Clazz.prepareFields (c$, function () {\r
-this.newline = System.getProperty ("line.separator");\r
-});\r
-Clazz.defineMethod (c$, "setNewlineString", \r
-function (nl) {\r
-this.newline = nl;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getNewlineString", \r
-function () {\r
-return this.newline;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (from) {\r
-if (from == null) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_null_fileparse"));\r
-}if (from === this) {\r
-return;\r
-}this.index = ++from.index;\r
-this.inFile = from.inFile;\r
-this.suffixSeparator = from.suffixSeparator;\r
-this.suffix = from.suffix;\r
-this.errormessage = from.errormessage;\r
-this.error = false;\r
-this.type = from.type;\r
-this.dataIn = from.dataIn;\r
-if (this.dataIn != null) {\r
-this.mark ();\r
-}this.dataName = from.dataName;\r
-}, "jalview.io.FileParse");\r
-Clazz.defineMethod (c$, "tryAsGzipSource", \r
-($fz = function (inputStream) {\r
-var inData =  new java.io.BufferedReader ( new java.io.InputStreamReader ( new java.util.zip.GZIPInputStream (inputStream)));\r
-inData.mark (2048);\r
-inData.read ();\r
-inData.reset ();\r
-return inData;\r
-}, $fz.isPrivate = true, $fz), "java.io.InputStream");\r
-Clazz.defineMethod (c$, "checkURLSource", \r
-($fz = function (fileStr) {\r
-this.errormessage = "URL NOT FOUND";\r
-var url =  new java.net.URL (fileStr);\r
-var e = null;\r
-if (fileStr.toLowerCase ().endsWith (".gz")) {\r
-try {\r
-var inputStream = url.openStream ();\r
-this.dataIn = this.tryAsGzipSource (inputStream);\r
-this.dataName = fileStr;\r
-return false;\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-e = ex;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}try {\r
-this.dataIn =  new java.io.BufferedReader ( new java.io.InputStreamReader (url.openStream ()));\r
-} catch (q) {\r
-if (Clazz.exceptionOf (q, java.io.IOException)) {\r
-if (e != null) {\r
-throw  new java.io.IOException (jalview.util.MessageManager.getString ("exception.failed_to_resolve_gzip_stream"), e);\r
-}throw q;\r
-} else {\r
-throw q;\r
-}\r
-}\r
-this.dataName = fileStr;\r
-return false;\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "extractSuffix", \r
-($fz = function (fileStr) {\r
-var sfpos = fileStr.lastIndexOf (this.suffixSeparator);\r
-if (sfpos > -1 && sfpos < fileStr.length - 1) {\r
-this.suffix = fileStr.substring (sfpos + 1);\r
-return fileStr.substring (0, sfpos);\r
-}return null;\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.makeConstructor (c$, \r
-function (fileStr, type) {\r
-this.type = type;\r
-this.error = false;\r
-if (type.equals (jalview.io.AppletFormatAdapter.FILE)) {\r
-{\r
-}} else if (type.equals (jalview.io.AppletFormatAdapter.URL)) {\r
-try {\r
-try {\r
-this.checkURLSource (fileStr);\r
-if (this.suffixSeparator == '#') {\r
-this.extractSuffix (fileStr);\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-var suffixLess = this.extractSuffix (fileStr);\r
-if (suffixLess == null) {\r
-throw (e);\r
-} else {\r
-try {\r
-this.checkURLSource (suffixLess);\r
-} catch (e2) {\r
-if (Clazz.exceptionOf (e2, java.io.IOException)) {\r
-this.errormessage = "BAD URL WITH OR WITHOUT SUFFIX";\r
-throw (e);\r
-} else {\r
-throw e2;\r
-}\r
-}\r
-}} else {\r
-throw e;\r
-}\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-this.errormessage = "CANNOT ACCESS DATA AT URL '" + fileStr + "' (" + e.getMessage () + ")";\r
-this.error = true;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-} else if (type.equals (jalview.io.AppletFormatAdapter.PASTE)) {\r
-this.errormessage = "PASTE INACCESSIBLE!";\r
-this.dataIn =  new java.io.BufferedReader ( new java.io.StringReader (fileStr));\r
-this.dataName = "Paste";\r
-} else if (type.equals (jalview.io.AppletFormatAdapter.CLASSLOADER)) {\r
-this.errormessage = "RESOURCE CANNOT BE LOCATED";\r
-var is = this.getClass ().getResourceAsStream ("/" + fileStr);\r
-if (is == null) {\r
-var suffixLess = this.extractSuffix (fileStr);\r
-if (suffixLess != null) {\r
-is = this.getClass ().getResourceAsStream ("/" + suffixLess);\r
-}}if (is != null) {\r
-this.dataIn =  new java.io.BufferedReader ( new java.io.InputStreamReader (is));\r
-this.dataName = fileStr;\r
-} else {\r
-this.error = true;\r
-}} else {\r
-this.errormessage = "PROBABLE IMPLEMENTATION ERROR : Datasource Type given as '" + (type != null ? type : "null") + "'";\r
-this.error = true;\r
-}if (this.dataIn == null || this.error) {\r
-throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.failed_to_read_data_from_source",  Clazz.newArray (-1, [this.errormessage])));\r
-}this.error = false;\r
-this.dataIn.mark (2048);\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "mark", \r
-function () {\r
-if (this.dataIn != null) {\r
-this.dataIn.mark (2048);\r
-} else {\r
-throw  new java.io.IOException (jalview.util.MessageManager.getString ("exception.no_init_source_stream"));\r
-}});\r
-Clazz.defineMethod (c$, "nextLine", \r
-function () {\r
-if (!this.error) {\r
-return this.dataIn.readLine ();\r
-}throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.invalid_source_stream",  Clazz.newArray (-1, [this.errormessage])));\r
-});\r
-Clazz.defineMethod (c$, "isExporting", \r
-function () {\r
-return !this.error && this.dataIn == null;\r
-});\r
-Clazz.defineMethod (c$, "isValid", \r
-function () {\r
-return !this.error;\r
-});\r
-Clazz.defineMethod (c$, "close", \r
-function () {\r
-this.errormessage = "EXCEPTION ON CLOSE";\r
-this.error = true;\r
-this.dataIn.close ();\r
-this.dataIn = null;\r
-this.errormessage = "SOURCE IS CLOSED";\r
-});\r
-Clazz.defineMethod (c$, "reset", \r
-function () {\r
-if (this.dataIn != null && !this.error) {\r
-this.dataIn.reset ();\r
-} else {\r
-throw  new java.io.IOException (jalview.util.MessageManager.getString ("error.implementation_error_reset_called_for_invalid_source"));\r
-}});\r
-Clazz.defineMethod (c$, "hasWarningMessage", \r
-function () {\r
-return (this.warningMessage != null && this.warningMessage.length > 0);\r
-});\r
-Clazz.defineMethod (c$, "getWarningMessage", \r
-function () {\r
-return this.warningMessage;\r
-});\r
-Clazz.defineMethod (c$, "getInFile", \r
-function () {\r
-if (this.inFile != null) {\r
-return this.inFile.getAbsolutePath () + " (" + this.index + ")";\r
-} else {\r
-return "From Paste + (" + this.index + ")";\r
-}});\r
-Clazz.defineMethod (c$, "getDataName", \r
-function () {\r
-return this.dataName;\r
-});\r
-Clazz.defineMethod (c$, "setDataName", \r
-function (dataname) {\r
-this.dataName = dataname;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getReader", \r
-function () {\r
-if (this.dataIn != null) {\r
-return this.dataIn;\r
-}return null;\r
-});\r
-Clazz.defineMethod (c$, "getViewport", \r
-function () {\r
-return this.viewport;\r
-});\r
-Clazz.defineMethod (c$, "setViewport", \r
-function (viewport) {\r
-this.viewport = viewport;\r
-}, "jalview.api.AlignViewportI");\r
-Clazz.defineMethod (c$, "getExportSettings", \r
-function () {\r
-return this.exportSettings;\r
-});\r
-Clazz.defineMethod (c$, "setExportSettings", \r
-function (exportSettings) {\r
-this.exportSettings = exportSettings;\r
-}, "jalview.api.AlignExportSettingI");\r
-Clazz.defineMethod (c$, "configureForView", \r
-function (avpanel) {\r
-if (avpanel != null) {\r
-this.setViewport (avpanel.getAlignViewport ());\r
-}}, "jalview.api.AlignmentViewPanel");\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (null, "jalview.io.FileParse", ["jalview.io.AppletFormatAdapter", "jalview.util.MessageManager", "java.io.BufferedReader", "$.IOException", "$.InputStreamReader", "$.StringReader", "java.lang.Error", "java.net.URL", "java.util.zip.GZIPInputStream"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.dataName = "unknown source";
+this.inFile = null;
+this.viewport = null;
+this.exportSettings = null;
+this.index = 1;
+this.suffixSeparator = '#';
+this.newline = null;
+this.suffix = null;
+this.type = null;
+this.dataIn = null;
+this.errormessage = "UNITIALISED SOURCE";
+this.error = true;
+this.warningMessage = null;
+this.READAHEAD_LIMIT = 2048;
+Clazz.instantialize (this, arguments);
+}, jalview.io, "FileParse");
+Clazz.prepareFields (c$, function () {
+this.newline = System.getProperty ("line.separator");
+});
+Clazz.defineMethod (c$, "setNewlineString", 
+function (nl) {
+this.newline = nl;
+}, "~S");
+Clazz.defineMethod (c$, "getNewlineString", 
+function () {
+return this.newline;
+});
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.makeConstructor (c$, 
+function (from) {
+if (from == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_null_fileparse"));
+}if (from === this) {
+return;
+}this.index = ++from.index;
+this.inFile = from.inFile;
+this.suffixSeparator = from.suffixSeparator;
+this.suffix = from.suffix;
+this.errormessage = from.errormessage;
+this.error = false;
+this.type = from.type;
+this.dataIn = from.dataIn;
+if (this.dataIn != null) {
+this.mark ();
+}this.dataName = from.dataName;
+}, "jalview.io.FileParse");
+Clazz.defineMethod (c$, "tryAsGzipSource", 
+($fz = function (inputStream) {
+var inData =  new java.io.BufferedReader ( new java.io.InputStreamReader ( new java.util.zip.GZIPInputStream (inputStream)));
+inData.mark (2048);
+inData.read ();
+inData.reset ();
+return inData;
+}, $fz.isPrivate = true, $fz), "java.io.InputStream");
+Clazz.defineMethod (c$, "checkURLSource", 
+($fz = function (fileStr) {
+this.errormessage = "URL NOT FOUND";
+var url =  new java.net.URL (fileStr);
+var e = null;
+if (fileStr.toLowerCase ().endsWith (".gz")) {
+try {
+var inputStream = url.openStream ();
+this.dataIn = this.tryAsGzipSource (inputStream);
+this.dataName = fileStr;
+return false;
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+e = ex;
+} else {
+throw ex;
+}
+}
+}try {
+this.dataIn =  new java.io.BufferedReader ( new java.io.InputStreamReader (url.openStream ()));
+} catch (q) {
+if (Clazz.exceptionOf (q, java.io.IOException)) {
+if (e != null) {
+throw  new java.io.IOException (jalview.util.MessageManager.getString ("exception.failed_to_resolve_gzip_stream"), e);
+}throw q;
+} else {
+throw q;
+}
+}
+this.dataName = fileStr;
+return false;
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "extractSuffix", 
+($fz = function (fileStr) {
+var sfpos = fileStr.lastIndexOf (this.suffixSeparator);
+if (sfpos > -1 && sfpos < fileStr.length - 1) {
+this.suffix = fileStr.substring (sfpos + 1);
+return fileStr.substring (0, sfpos);
+}return null;
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.makeConstructor (c$, 
+function (fileStr, type) {
+this.type = type;
+this.error = false;
+if (type.equals (jalview.io.AppletFormatAdapter.FILE)) {
+{
+}} else if (type.equals (jalview.io.AppletFormatAdapter.URL)) {
+try {
+try {
+this.checkURLSource (fileStr);
+if (this.suffixSeparator == '#') {
+this.extractSuffix (fileStr);
+}} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+var suffixLess = this.extractSuffix (fileStr);
+if (suffixLess == null) {
+throw (e);
+} else {
+try {
+this.checkURLSource (suffixLess);
+} catch (e2) {
+if (Clazz.exceptionOf (e2, java.io.IOException)) {
+this.errormessage = "BAD URL WITH OR WITHOUT SUFFIX";
+throw (e);
+} else {
+throw e2;
+}
+}
+}} else {
+throw e;
+}
+}
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+this.errormessage = "CANNOT ACCESS DATA AT URL '" + fileStr + "' (" + e.getMessage () + ")";
+this.error = true;
+} else {
+throw e;
+}
+}
+} else if (type.equals (jalview.io.AppletFormatAdapter.PASTE)) {
+this.errormessage = "PASTE INACCESSIBLE!";
+this.dataIn =  new java.io.BufferedReader ( new java.io.StringReader (fileStr));
+this.dataName = "Paste";
+} else if (type.equals (jalview.io.AppletFormatAdapter.CLASSLOADER)) {
+this.errormessage = "RESOURCE CANNOT BE LOCATED";
+var is = this.getClass ().getResourceAsStream ("/" + fileStr);
+if (is == null) {
+var suffixLess = this.extractSuffix (fileStr);
+if (suffixLess != null) {
+is = this.getClass ().getResourceAsStream ("/" + suffixLess);
+}}if (is != null) {
+this.dataIn =  new java.io.BufferedReader ( new java.io.InputStreamReader (is));
+this.dataName = fileStr;
+} else {
+this.error = true;
+}} else {
+this.errormessage = "PROBABLE IMPLEMENTATION ERROR : Datasource Type given as '" + (type != null ? type : "null") + "'";
+this.error = true;
+}if (this.dataIn == null || this.error) {
+throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.failed_to_read_data_from_source",  Clazz.newArray (-1, [this.errormessage])));
+}this.error = false;
+this.dataIn.mark (2048);
+}, "~S,~S");
+Clazz.defineMethod (c$, "mark", 
+function () {
+if (this.dataIn != null) {
+this.dataIn.mark (2048);
+} else {
+throw  new java.io.IOException (jalview.util.MessageManager.getString ("exception.no_init_source_stream"));
+}});
+Clazz.defineMethod (c$, "nextLine", 
+function () {
+if (!this.error) {
+return this.dataIn.readLine ();
+}throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.invalid_source_stream",  Clazz.newArray (-1, [this.errormessage])));
+});
+Clazz.defineMethod (c$, "isExporting", 
+function () {
+return !this.error && this.dataIn == null;
+});
+Clazz.defineMethod (c$, "isValid", 
+function () {
+return !this.error;
+});
+Clazz.defineMethod (c$, "close", 
+function () {
+this.errormessage = "EXCEPTION ON CLOSE";
+this.error = true;
+this.dataIn.close ();
+this.dataIn = null;
+this.errormessage = "SOURCE IS CLOSED";
+});
+Clazz.defineMethod (c$, "reset", 
+function () {
+if (this.dataIn != null && !this.error) {
+this.dataIn.reset ();
+} else {
+throw  new java.io.IOException (jalview.util.MessageManager.getString ("error.implementation_error_reset_called_for_invalid_source"));
+}});
+Clazz.defineMethod (c$, "hasWarningMessage", 
+function () {
+return (this.warningMessage != null && this.warningMessage.length > 0);
+});
+Clazz.defineMethod (c$, "getWarningMessage", 
+function () {
+return this.warningMessage;
+});
+Clazz.defineMethod (c$, "getInFile", 
+function () {
+if (this.inFile != null) {
+return this.inFile.getAbsolutePath () + " (" + this.index + ")";
+} else {
+return "From Paste + (" + this.index + ")";
+}});
+Clazz.defineMethod (c$, "getDataName", 
+function () {
+return this.dataName;
+});
+Clazz.defineMethod (c$, "setDataName", 
+function (dataname) {
+this.dataName = dataname;
+}, "~S");
+Clazz.defineMethod (c$, "getReader", 
+function () {
+if (this.dataIn != null) {
+return this.dataIn;
+}return null;
+});
+Clazz.defineMethod (c$, "getViewport", 
+function () {
+return this.viewport;
+});
+Clazz.defineMethod (c$, "setViewport", 
+function (viewport) {
+this.viewport = viewport;
+}, "jalview.api.AlignViewportI");
+Clazz.defineMethod (c$, "getExportSettings", 
+function () {
+return this.exportSettings;
+});
+Clazz.defineMethod (c$, "setExportSettings", 
+function (exportSettings) {
+this.exportSettings = exportSettings;
+}, "jalview.api.AlignExportSettingI");
+Clazz.defineMethod (c$, "configureForView", 
+function (avpanel) {
+if (avpanel != null) {
+this.setViewport (avpanel.getAlignViewport ());
+}}, "jalview.api.AlignmentViewPanel");
+});
index 7acd351..2b3d5d4 100644 (file)
Binary files a/bin/jalview/io/IdentifyFile.class and b/bin/jalview/io/IdentifyFile.class differ
index 4d88cdd..cf35241 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (null, "jalview.io.IdentifyFile", ["jalview.io.FileParse"], function () {\r
-c$ = Clazz.declareType (jalview.io, "IdentifyFile");\r
-Clazz.defineMethod (c$, "Identify", \r
-function (file, protocol) {\r
-var emessage = "UNIDENTIFIED FILE PARSING ERROR";\r
-var parser = null;\r
-try {\r
-parser =  new jalview.io.FileParse (file, protocol);\r
-if (parser.isValid ()) {\r
-return this.Identify (parser);\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Error whilst identifying");\r
-e.printStackTrace (System.err);\r
-emessage = e.getMessage ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (parser != null) {\r
-return parser.errormessage;\r
-}return emessage;\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "Identify", \r
-function (source) {\r
-return this.Identify (source, true);\r
-}, "jalview.io.FileParse");\r
-Clazz.defineMethod (c$, "Identify", \r
-function (source, closeSource) {\r
-var reply = "PFAM";\r
-var data;\r
-var length = 0;\r
-var lineswereskipped = false;\r
-var isBinary = false;\r
-try {\r
-if (!closeSource) {\r
-source.mark ();\r
-}while ((data = source.nextLine ()) != null) {\r
-length += data.trim ().length;\r
-if (!lineswereskipped) {\r
-for (var i = 0; !isBinary && i < data.length; i++) {\r
-var c = data.charAt (i);\r
-isBinary = (c.charCodeAt (0) < 32 && c != '\t' && c != '\n' && c != '\r' && c.charCodeAt (0) != 5 && c.charCodeAt (0) != 27);\r
-}\r
-}if (isBinary) {\r
-if (source.inFile != null) {\r
-var fileStr = source.inFile.getName ();\r
-if (fileStr.lastIndexOf (".jar") > -1 || fileStr.lastIndexOf (".zip") > -1) {\r
-reply = "Jalview";\r
-}}if (!lineswereskipped && data.startsWith ("PK")) {\r
-reply = "Jalview";\r
-break;\r
-}}data = data.toUpperCase ();\r
-if (data.startsWith ("##GFF-VERSION")) {\r
-reply = "GFF v2 or v3";\r
-break;\r
-}if (data.indexOf ("# STOCKHOLM") > -1) {\r
-reply = "STH";\r
-break;\r
-}if (data.matches ("<HTML(\"[^\"]*\"|'[^']*'|[^'\">])*>")) {\r
-reply = "HTML";\r
-break;\r
-}if (data.matches ("<RNAML (\"[^\"]*\"|'[^']*'|[^'\">])*>")) {\r
-reply = "RNAML";\r
-break;\r
-}if (data.indexOf ("{\"") > -1) {\r
-reply = "JSON";\r
-break;\r
-}if ((data.length < 1) || (data.indexOf ("#") == 0)) {\r
-lineswereskipped = true;\r
-continue;\r
-}if (data.indexOf ("PILEUP") > -1) {\r
-reply = "PileUp";\r
-break;\r
-}if ((data.indexOf ("//") == 0) || ((data.indexOf ("!!") > -1) && (data.indexOf ("!!") < data.indexOf ("_MULTIPLE_ALIGNMENT ")))) {\r
-reply = "MSF";\r
-break;\r
-} else if (data.indexOf ("CLUSTAL") > -1) {\r
-reply = "CLUSTAL";\r
-break;\r
-} else if (data.indexOf (">") > -1) {\r
-var checkPIR = false;\r
-var starterm = false;\r
-if ((data.indexOf (">P1;") > -1) || (data.indexOf (">DL;") > -1)) {\r
-checkPIR = true;\r
-reply = "PIR";\r
-}data = source.nextLine ();\r
-if (data.indexOf (">") > -1) {\r
-reply = "BLC";\r
-} else {\r
-var data1 = source.nextLine ();\r
-var data2 = source.nextLine ();\r
-var c1;\r
-if (checkPIR) {\r
-starterm = (data1 != null && data1.indexOf ("*") > -1) || (data2 != null && data2.indexOf ("*") > -1);\r
-}if (data2 != null && (c1 = data.indexOf ("*")) > -1) {\r
-if (c1 == 0 && c1 == data2.indexOf ("*")) {\r
-reply = "BLC";\r
-} else {\r
-reply = "FASTA";\r
-}} else {\r
-reply = "FASTA";\r
-if (!checkPIR) {\r
-break;\r
-}}}if (checkPIR) {\r
-var dta = null;\r
-if (!starterm) {\r
-do {\r
-try {\r
-dta = source.nextLine ();\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, java.io.IOException)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-;if (dta != null && dta.indexOf ("*") > -1) {\r
-starterm = true;\r
-}} while (dta != null && !starterm);\r
-}if (starterm) {\r
-reply = "PIR";\r
-break;\r
-} else {\r
-reply = "FASTA";\r
-}}break;\r
-} else if (data.indexOf ("HEADER") == 0 || data.indexOf ("ATOM") == 0) {\r
-reply = "PDB";\r
-break;\r
-} else if (data.matches ("\\s*\\d+\\s+\\d+\\s*")) {\r
-reply = "PHYLIP";\r
-break;\r
-} else if (!lineswereskipped && data.charAt (0) != '*' && data.charAt (0) != ' ' && data.indexOf (":") < data.indexOf (",")) {\r
-reply = "JnetFile";\r
-break;\r
-}lineswereskipped = true;\r
-}\r
-if (closeSource) {\r
-source.close ();\r
-} else {\r
-source.reset ();\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.err.println ("File Identification failed!\n" + ex);\r
-return source.errormessage;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-if (length == 0) {\r
-System.err.println ("File Identification failed! - Empty file was read.");\r
-return "EMPTY DATA FILE";\r
-}return reply;\r
-}, "jalview.io.FileParse,~B");\r
-Clazz.defineStatics (c$,\r
-"GFF3File", "GFF v2 or v3");\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (null, "jalview.io.IdentifyFile", ["jalview.io.FileParse"], function () {
+c$ = Clazz.declareType (jalview.io, "IdentifyFile");
+Clazz.defineMethod (c$, "Identify", 
+function (file, protocol) {
+var emessage = "UNIDENTIFIED FILE PARSING ERROR";
+var parser = null;
+try {
+parser =  new jalview.io.FileParse (file, protocol);
+if (parser.isValid ()) {
+return this.Identify (parser);
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Error whilst identifying");
+e.printStackTrace (System.err);
+emessage = e.getMessage ();
+} else {
+throw e;
+}
+}
+if (parser != null) {
+return parser.errormessage;
+}return emessage;
+}, "~S,~S");
+Clazz.defineMethod (c$, "Identify", 
+function (source) {
+return this.Identify (source, true);
+}, "jalview.io.FileParse");
+Clazz.defineMethod (c$, "Identify", 
+function (source, closeSource) {
+var reply = "PFAM";
+var data;
+var length = 0;
+var lineswereskipped = false;
+var isBinary = false;
+try {
+if (!closeSource) {
+source.mark ();
+}while ((data = source.nextLine ()) != null) {
+length += data.trim ().length;
+if (!lineswereskipped) {
+for (var i = 0; !isBinary && i < data.length; i++) {
+var c = data.charAt (i);
+isBinary = (c.charCodeAt (0) < 32 && c != '\t' && c != '\n' && c != '\r' && c.charCodeAt (0) != 5 && c.charCodeAt (0) != 27);
+}
+}if (isBinary) {
+if (source.inFile != null) {
+var fileStr = source.inFile.getName ();
+if (fileStr.lastIndexOf (".jar") > -1 || fileStr.lastIndexOf (".zip") > -1) {
+reply = "Jalview";
+}}if (!lineswereskipped && data.startsWith ("PK")) {
+reply = "Jalview";
+break;
+}}data = data.toUpperCase ();
+if (data.startsWith ("##GFF-VERSION")) {
+reply = "GFF v2 or v3";
+break;
+}if (data.indexOf ("# STOCKHOLM") > -1) {
+reply = "STH";
+break;
+}if (data.matches ("<HTML(\"[^\"]*\"|'[^']*'|[^'\">])*>")) {
+reply = "HTML";
+break;
+}if (data.matches ("<RNAML (\"[^\"]*\"|'[^']*'|[^'\">])*>")) {
+reply = "RNAML";
+break;
+}if (data.indexOf ("{\"") > -1) {
+reply = "JSON";
+break;
+}if ((data.length < 1) || (data.indexOf ("#") == 0)) {
+lineswereskipped = true;
+continue;
+}if (data.indexOf ("PILEUP") > -1) {
+reply = "PileUp";
+break;
+}if ((data.indexOf ("//") == 0) || ((data.indexOf ("!!") > -1) && (data.indexOf ("!!") < data.indexOf ("_MULTIPLE_ALIGNMENT ")))) {
+reply = "MSF";
+break;
+} else if (data.indexOf ("CLUSTAL") > -1) {
+reply = "CLUSTAL";
+break;
+} else if (data.indexOf (">") > -1) {
+var checkPIR = false;
+var starterm = false;
+if ((data.indexOf (">P1;") > -1) || (data.indexOf (">DL;") > -1)) {
+checkPIR = true;
+reply = "PIR";
+}data = source.nextLine ();
+if (data.indexOf (">") > -1) {
+reply = "BLC";
+} else {
+var data1 = source.nextLine ();
+var data2 = source.nextLine ();
+var c1;
+if (checkPIR) {
+starterm = (data1 != null && data1.indexOf ("*") > -1) || (data2 != null && data2.indexOf ("*") > -1);
+}if (data2 != null && (c1 = data.indexOf ("*")) > -1) {
+if (c1 == 0 && c1 == data2.indexOf ("*")) {
+reply = "BLC";
+} else {
+reply = "FASTA";
+}} else {
+reply = "FASTA";
+if (!checkPIR) {
+break;
+}}}if (checkPIR) {
+var dta = null;
+if (!starterm) {
+do {
+try {
+dta = source.nextLine ();
+} catch (ex) {
+if (Clazz.exceptionOf (ex, java.io.IOException)) {
+} else {
+throw ex;
+}
+}
+;if (dta != null && dta.indexOf ("*") > -1) {
+starterm = true;
+}} while (dta != null && !starterm);
+}if (starterm) {
+reply = "PIR";
+break;
+} else {
+reply = "FASTA";
+}}break;
+} else if (data.indexOf ("HEADER") == 0 || data.indexOf ("ATOM") == 0) {
+reply = "PDB";
+break;
+} else if (data.matches ("\\s*\\d+\\s+\\d+\\s*")) {
+reply = "PHYLIP";
+break;
+} else if (!lineswereskipped && data.charAt (0) != '*' && data.charAt (0) != ' ' && data.indexOf (":") < data.indexOf (",")) {
+reply = "JnetFile";
+break;
+}lineswereskipped = true;
+}
+if (closeSource) {
+source.close ();
+} else {
+source.reset ();
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("File Identification failed!\n" + ex);
+return source.errormessage;
+} else {
+throw ex;
+}
+}
+if (length == 0) {
+System.err.println ("File Identification failed! - Empty file was read.");
+return "EMPTY DATA FILE";
+}return reply;
+}, "jalview.io.FileParse,~B");
+Clazz.defineStatics (c$,
+"GFF3File", "GFF v2 or v3");
+});
index d668d00..a3812ce 100644 (file)
Binary files a/bin/jalview/io/JPredFile.class and b/bin/jalview/io/JPredFile.class differ
index 9dc5044..1975edb 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (["jalview.io.AlignFile"], "jalview.io.JPredFile", ["jalview.datamodel.Alignment", "$.Sequence", "jalview.io.JnetAnnotationMaker", "jalview.util.MessageManager", "java.io.IOException", "java.lang.Float", "$.StringBuffer", "java.util.Hashtable", "$.StringTokenizer", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.ids = null;\r
-this.conf = null;\r
-this.Scores = null;\r
-this.Symscores = null;\r
-this.QuerySeqPosition = 0;\r
-this.annotSeqs = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io, "JPredFile", jalview.io.AlignFile);\r
-Clazz.defineMethod (c$, "setQuerySeqPosition", \r
-function (QuerySeqPosition) {\r
-this.QuerySeqPosition = QuerySeqPosition;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getQuerySeqPosition", \r
-function () {\r
-return this.QuerySeqPosition;\r
-});\r
-Clazz.defineMethod (c$, "getScores", \r
-function () {\r
-return this.Scores;\r
-});\r
-Clazz.defineMethod (c$, "getSymscores", \r
-function () {\r
-return this.Symscores;\r
-});\r
-Clazz.defineMethod (c$, "initData", \r
-function () {\r
-Clazz.superCall (this, jalview.io.JPredFile, "initData", []);\r
-this.Scores =  new java.util.Hashtable ();\r
-this.ids = null;\r
-this.conf = null;\r
-});\r
-Clazz.overrideMethod (c$, "parse", \r
-function () {\r
-var line;\r
-this.QuerySeqPosition = -1;\r
-this.noSeqs = 0;\r
-var seq_entries =  new java.util.Vector ();\r
-var ids =  new java.util.Vector ();\r
-var Symscores =  new java.util.Hashtable ();\r
-while ((line = this.nextLine ()) != null) {\r
-var str =  new java.util.StringTokenizer (line, ":");\r
-var id = "";\r
-if (!str.hasMoreTokens ()) {\r
-continue;\r
-}id = str.nextToken ();\r
-var seqsym = str.nextToken ();\r
-var symbols =  new java.util.StringTokenizer (seqsym, ",");\r
-var numSymbols = symbols.countTokens ();\r
-if (numSymbols == 0) {\r
-continue;\r
-}if (seqsym.length != (2 * numSymbols)) {\r
-if (this.Scores.containsKey (id)) {\r
-var i = 1;\r
-while (this.Scores.containsKey (id + "_" + i)) {\r
-i++;\r
-}\r
-id = id + "_" + i;\r
-}var scores =  new java.util.Vector ();\r
-var i = 0;\r
-var ascore = "dead";\r
-try {\r
-while (symbols.hasMoreTokens ()) {\r
-ascore = symbols.nextToken ();\r
-var score =  new Float (ascore);\r
-scores.addElement (score);\r
-}\r
-this.Scores.put (id, scores);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-i = scores.size ();\r
-for (var j = 0; j < i; j++) {\r
-scores.setElementAt ((scores.elementAt (j)).toString (), j);\r
-}\r
-scores.addElement (ascore);\r
-while (symbols.hasMoreTokens ()) {\r
-ascore = symbols.nextToken ();\r
-scores.addElement (ascore);\r
-}\r
-this.Scores.put (id, scores);\r
-} else {\r
-throw e;\r
-}\r
-}\r
-} else if (id.equals ("jnetconf")) {\r
-id = "Prediction Confidence";\r
-this.conf =  new java.util.Vector (numSymbols);\r
-for (var i = 0; i < numSymbols; i++) {\r
-this.conf.setElementAt (symbols.nextToken (), i);\r
-}\r
-} else {\r
-var newseq =  new StringBuffer ();\r
-for (var i = 0; i < numSymbols; i++) {\r
-newseq.append (symbols.nextToken ());\r
-}\r
-if (id.indexOf (";") > -1) {\r
-seq_entries.addElement (newseq);\r
-var i = 1;\r
-var name = id.substring (id.indexOf (";") + 1);\r
-while (ids.lastIndexOf (name) > -1) {\r
-name = id.substring (id.indexOf (";") + 1) + "_" + ++i;\r
-}\r
-if (this.QuerySeqPosition == -1) this.QuerySeqPosition = ids.size ();\r
-ids.addElement (name);\r
-this.noSeqs++;\r
-} else {\r
-if (id.equals ("JNETPRED")) {\r
-id = "Predicted Secondary Structure";\r
-}seq_entries.addElement (newseq.toString ());\r
-ids.addElement (id);\r
-Symscores.put (id,  new Integer (ids.size () - 1));\r
-}}}\r
-this.maxLength = seq_entries.elementAt (0).toString ().length;\r
-for (var i = 0; i < ids.size (); i++) {\r
-var newSeq =  new jalview.datamodel.Sequence (ids.elementAt (i).toString (), seq_entries.elementAt (i).toString (), 1, seq_entries.elementAt (i).toString ().length);\r
-if (this.maxLength != seq_entries.elementAt (i).toString ().length) {\r
-throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.jpredconcide_entry_has_unexpected_number_of_columns",  Clazz.newArray (-1, [ids.elementAt (i).toString ()])));\r
-}if ((newSeq.getName ().startsWith ("QUERY") || newSeq.getName ().startsWith ("align;")) && (this.QuerySeqPosition == -1)) {\r
-this.QuerySeqPosition = this.seqs.size ();\r
-}this.seqs.addElement (newSeq);\r
-}\r
-if (this.seqs.size () > 0 && this.QuerySeqPosition > -1) {\r
-var tal =  new jalview.datamodel.Alignment (this.getSeqsAsArray ());\r
-try {\r
-jalview.io.JnetAnnotationMaker.add_annotation (this, tal, this.QuerySeqPosition, true);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-tal = null;\r
-var ex =  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.couldnt_parse_concise_annotation_for_prediction",  Clazz.newArray (-1, [e.getMessage ()])));\r
-e.printStackTrace ();\r
-throw ex;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.annotations =  new java.util.Vector ();\r
-var aan = tal.getAlignmentAnnotation ();\r
-for (var aai = 0; aan != null && aai < aan.length; aai++) {\r
-this.annotations.addElement (aan[aai]);\r
-}\r
-}});\r
-Clazz.overrideMethod (c$, "print", \r
-function () {\r
-return "Not Supported";\r
-});\r
-c$.main = Clazz.defineMethod (c$, "main", \r
-function (args) {\r
-try {\r
-var blc =  new jalview.io.JPredFile (args[0], "File");\r
-for (var i = 0; i < blc.seqs.size (); i++) {\r
-System.out.println ((blc.seqs.elementAt (i)).getName () + "\n" + (blc.seqs.elementAt (i)).getSequenceAsString () + "\n");\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-System.err.println ("Exception " + e);\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "~A");\r
-Clazz.defineMethod (c$, "removeNonSequences", \r
-function () {\r
-if (this.annotSeqs != null) {\r
-return;\r
-}this.annotSeqs =  new java.util.Vector ();\r
-var newseqs =  new java.util.Vector ();\r
-var i = 0;\r
-var j = this.seqs.size ();\r
-for (; i < this.QuerySeqPosition; i++) {\r
-this.annotSeqs.addElement (this.seqs.elementAt (i));\r
-}\r
-{\r
-var sq = this.seqs.elementAt (j - 1);\r
-if (sq.getName ().toUpperCase ().startsWith ("JPRED")) {\r
-this.annotSeqs.addElement (sq);\r
-this.seqs.removeElementAt (--j);\r
-}}for (; i < j; i++) {\r
-newseqs.addElement (this.seqs.elementAt (i));\r
-}\r
-this.seqs.removeAllElements ();\r
-this.seqs = newseqs;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (["jalview.io.AlignFile"], "jalview.io.JPredFile", ["jalview.datamodel.Alignment", "$.Sequence", "jalview.io.JnetAnnotationMaker", "jalview.util.MessageManager", "java.io.IOException", "java.lang.Float", "$.StringBuffer", "java.util.Hashtable", "$.StringTokenizer", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.ids = null;
+this.conf = null;
+this.Scores = null;
+this.Symscores = null;
+this.QuerySeqPosition = 0;
+this.annotSeqs = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io, "JPredFile", jalview.io.AlignFile);
+Clazz.defineMethod (c$, "setQuerySeqPosition", 
+function (QuerySeqPosition) {
+this.QuerySeqPosition = QuerySeqPosition;
+}, "~N");
+Clazz.defineMethod (c$, "getQuerySeqPosition", 
+function () {
+return this.QuerySeqPosition;
+});
+Clazz.defineMethod (c$, "getScores", 
+function () {
+return this.Scores;
+});
+Clazz.defineMethod (c$, "getSymscores", 
+function () {
+return this.Symscores;
+});
+Clazz.defineMethod (c$, "initData", 
+function () {
+Clazz.superCall (this, jalview.io.JPredFile, "initData", []);
+this.Scores =  new java.util.Hashtable ();
+this.ids = null;
+this.conf = null;
+});
+Clazz.overrideMethod (c$, "parse", 
+function () {
+var line;
+this.QuerySeqPosition = -1;
+this.noSeqs = 0;
+var seq_entries =  new java.util.Vector ();
+var ids =  new java.util.Vector ();
+var Symscores =  new java.util.Hashtable ();
+while ((line = this.nextLine ()) != null) {
+var str =  new java.util.StringTokenizer (line, ":");
+var id = "";
+if (!str.hasMoreTokens ()) {
+continue;
+}id = str.nextToken ();
+var seqsym = str.nextToken ();
+var symbols =  new java.util.StringTokenizer (seqsym, ",");
+var numSymbols = symbols.countTokens ();
+if (numSymbols == 0) {
+continue;
+}if (seqsym.length != (2 * numSymbols)) {
+if (this.Scores.containsKey (id)) {
+var i = 1;
+while (this.Scores.containsKey (id + "_" + i)) {
+i++;
+}
+id = id + "_" + i;
+}var scores =  new java.util.Vector ();
+var i = 0;
+var ascore = "dead";
+try {
+while (symbols.hasMoreTokens ()) {
+ascore = symbols.nextToken ();
+var score =  new Float (ascore);
+scores.addElement (score);
+}
+this.Scores.put (id, scores);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+i = scores.size ();
+for (var j = 0; j < i; j++) {
+scores.setElementAt ((scores.elementAt (j)).toString (), j);
+}
+scores.addElement (ascore);
+while (symbols.hasMoreTokens ()) {
+ascore = symbols.nextToken ();
+scores.addElement (ascore);
+}
+this.Scores.put (id, scores);
+} else {
+throw e;
+}
+}
+} else if (id.equals ("jnetconf")) {
+id = "Prediction Confidence";
+this.conf =  new java.util.Vector (numSymbols);
+for (var i = 0; i < numSymbols; i++) {
+this.conf.setElementAt (symbols.nextToken (), i);
+}
+} else {
+var newseq =  new StringBuffer ();
+for (var i = 0; i < numSymbols; i++) {
+newseq.append (symbols.nextToken ());
+}
+if (id.indexOf (";") > -1) {
+seq_entries.addElement (newseq);
+var i = 1;
+var name = id.substring (id.indexOf (";") + 1);
+while (ids.lastIndexOf (name) > -1) {
+name = id.substring (id.indexOf (";") + 1) + "_" + ++i;
+}
+if (this.QuerySeqPosition == -1) this.QuerySeqPosition = ids.size ();
+ids.addElement (name);
+this.noSeqs++;
+} else {
+if (id.equals ("JNETPRED")) {
+id = "Predicted Secondary Structure";
+}seq_entries.addElement (newseq.toString ());
+ids.addElement (id);
+Symscores.put (id,  new Integer (ids.size () - 1));
+}}}
+this.maxLength = seq_entries.elementAt (0).toString ().length;
+for (var i = 0; i < ids.size (); i++) {
+var newSeq =  new jalview.datamodel.Sequence (ids.elementAt (i).toString (), seq_entries.elementAt (i).toString (), 1, seq_entries.elementAt (i).toString ().length);
+if (this.maxLength != seq_entries.elementAt (i).toString ().length) {
+throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.jpredconcide_entry_has_unexpected_number_of_columns",  Clazz.newArray (-1, [ids.elementAt (i).toString ()])));
+}if ((newSeq.getName ().startsWith ("QUERY") || newSeq.getName ().startsWith ("align;")) && (this.QuerySeqPosition == -1)) {
+this.QuerySeqPosition = this.seqs.size ();
+}this.seqs.addElement (newSeq);
+}
+if (this.seqs.size () > 0 && this.QuerySeqPosition > -1) {
+var tal =  new jalview.datamodel.Alignment (this.getSeqsAsArray ());
+try {
+jalview.io.JnetAnnotationMaker.add_annotation (this, tal, this.QuerySeqPosition, true);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+tal = null;
+var ex =  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.couldnt_parse_concise_annotation_for_prediction",  Clazz.newArray (-1, [e.getMessage ()])));
+e.printStackTrace ();
+throw ex;
+} else {
+throw e;
+}
+}
+this.annotations =  new java.util.Vector ();
+var aan = tal.getAlignmentAnnotation ();
+for (var aai = 0; aan != null && aai < aan.length; aai++) {
+this.annotations.addElement (aan[aai]);
+}
+}});
+Clazz.overrideMethod (c$, "print", 
+function () {
+return "Not Supported";
+});
+c$.main = Clazz.defineMethod (c$, "main", 
+function (args) {
+try {
+var blc =  new jalview.io.JPredFile (args[0], "File");
+for (var i = 0; i < blc.seqs.size (); i++) {
+System.out.println ((blc.seqs.elementAt (i)).getName () + "\n" + (blc.seqs.elementAt (i)).getSequenceAsString () + "\n");
+}
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+System.err.println ("Exception " + e);
+} else {
+throw e;
+}
+}
+}, "~A");
+Clazz.defineMethod (c$, "removeNonSequences", 
+function () {
+if (this.annotSeqs != null) {
+return;
+}this.annotSeqs =  new java.util.Vector ();
+var newseqs =  new java.util.Vector ();
+var i = 0;
+var j = this.seqs.size ();
+for (; i < this.QuerySeqPosition; i++) {
+this.annotSeqs.addElement (this.seqs.elementAt (i));
+}
+{
+var sq = this.seqs.elementAt (j - 1);
+if (sq.getName ().toUpperCase ().startsWith ("JPRED")) {
+this.annotSeqs.addElement (sq);
+this.seqs.removeElementAt (--j);
+}}for (; i < j; i++) {
+newseqs.addElement (this.seqs.elementAt (i));
+}
+this.seqs.removeAllElements ();
+this.seqs = newseqs;
+});
+});
index 9724528..38b1701 100644 (file)
Binary files a/bin/jalview/io/JnetAnnotationMaker.class and b/bin/jalview/io/JnetAnnotationMaker.class differ
index f39d55b..e2f51a5 100644 (file)
@@ -1,90 +1,90 @@
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (null, "jalview.io.JnetAnnotationMaker", ["jalview.datamodel.AlignmentAnnotation", "$.Annotation", "jalview.util.MessageManager", "java.lang.Exception", "$.Float"], function () {\r
-c$ = Clazz.declareType (jalview.io, "JnetAnnotationMaker");\r
-c$.add_annotation = Clazz.defineMethod (c$, "add_annotation", \r
-function (prediction, al, firstSeq, noMsa) {\r
-jalview.io.JnetAnnotationMaker.add_annotation (prediction, al, firstSeq, noMsa, Clazz.castNullAs ("Array"));\r
-}, "jalview.io.AlignFile,jalview.datamodel.AlignmentI,~N,~B");\r
-c$.add_annotation = Clazz.defineMethod (c$, "add_annotation", \r
-function (prediction, al, firstSeq, noMsa, delMap) {\r
-var i = 0;\r
-var preds = prediction.getSeqsAsArray ();\r
-var seqRef = al.getSequenceAt (firstSeq);\r
-var width = preds[0].getSequence ().length;\r
-var gapmap = al.getSequenceAt (firstSeq).gapMap ();\r
-if ((delMap != null && delMap.length > width) || (delMap == null && gapmap.length != width)) {\r
-throw ( new Exception (jalview.util.MessageManager.formatMessage ("exception.number_of_residues_in_query_sequence_differ_from_prediction",  Clazz.newArray (-1, [(delMap == null ? "" : jalview.util.MessageManager.getString ("label.mapped")), al.getSequenceAt (firstSeq).getName (), al.getSequenceAt (firstSeq).getSequenceAsString (), Integer.$valueOf (width).toString ()]))));\r
-}var annot;\r
-var annotations = null;\r
-var existingAnnotations = 0;\r
-if (al.getAlignmentAnnotation () != null) {\r
-existingAnnotations = al.getAlignmentAnnotation ().length;\r
-}var sol =  new Array (al.getWidth ());\r
-var firstsol = true;\r
-while (i < preds.length) {\r
-var id = preds[i].getName ().toUpperCase ();\r
-if (id.startsWith ("LUPAS") || id.startsWith ("JNET") || id.startsWith ("JPRED")) {\r
-if (id.startsWith ("JNETSOL")) {\r
-var amnt = (id.endsWith ("25") ? 3 : id.endsWith ("5") ? 6 : 9);\r
-for (var spos = 0; spos < width; spos++) {\r
-var sposw = (delMap == null) ? gapmap[spos] : gapmap[delMap[spos]];\r
-if (firstsol) {\r
-sol[sposw] =  new jalview.datamodel.Annotation (0);\r
-}if (preds[i].getCharAt (spos) == 'B' && (sol[sposw].value == 0 || sol[sposw].value < amnt)) {\r
-sol[sposw].value = amnt;\r
-}}\r
-firstsol = false;\r
-} else {\r
-annotations =  new Array (al.getWidth ());\r
-if (id.equals ("JNETPRED") || id.equals ("JNETPSSM") || id.equals ("JNETFREQ") || id.equals ("JNETHMM") || id.equals ("JNETALIGN") || id.equals ("JPRED")) {\r
-if (delMap == null) {\r
-for (var j = 0; j < width; j++) {\r
-annotations[gapmap[j]] =  new jalview.datamodel.Annotation ("", "", preds[i].getCharAt (j), 0);\r
-}\r
-} else {\r
-for (var j = 0; j < width; j++) {\r
-annotations[gapmap[delMap[j]]] =  new jalview.datamodel.Annotation ("", "", preds[i].getCharAt (j), 0);\r
-}\r
-}} else if (id.equals ("JNETCONF")) {\r
-if (delMap == null) {\r
-for (var j = 0; j < width; j++) {\r
-var value =  new Float (preds[i].getCharAt (j) + "").floatValue ();\r
-annotations[gapmap[j]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", preds[i].getCharAt (j), value);\r
-}\r
-} else {\r
-for (var j = 0; j < width; j++) {\r
-var value =  new Float (preds[i].getCharAt (j) + "").floatValue ();\r
-annotations[gapmap[delMap[j]]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", preds[i].getCharAt (j), value);\r
-}\r
-}} else {\r
-if (delMap == null) {\r
-for (var j = 0; j < width; j++) {\r
-annotations[gapmap[j]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", ' ', 0);\r
-}\r
-} else {\r
-for (var j = 0; j < width; j++) {\r
-annotations[gapmap[delMap[j]]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", ' ', 0);\r
-}\r
-}}if (id.equals ("JNETCONF")) {\r
-annot =  new jalview.datamodel.AlignmentAnnotation (preds[i].getName (), "JNet Output", annotations, 0, 10, 1);\r
-} else {\r
-annot =  new jalview.datamodel.AlignmentAnnotation (preds[i].getName (), "JNet Output", annotations);\r
-}if (seqRef != null) {\r
-annot.createSequenceMapping (seqRef, 1, true);\r
-seqRef.addAlignmentAnnotation (annot);\r
-}al.addAnnotation (annot);\r
-al.setAnnotationIndex (annot, al.getAlignmentAnnotation ().length - existingAnnotations - 1);\r
-}if (noMsa) {\r
-al.deleteSequence (preds[i]);\r
-}}i++;\r
-}\r
-if (!firstsol) {\r
-annot =  new jalview.datamodel.AlignmentAnnotation ("Jnet Burial", "<html>Prediction of Solvent Accessibility<br/>levels are<ul><li>0 - Exposed</li><li>3 - 25% or more S.A. accessible</li><li>6 - 5% or more S.A. accessible</li><li>9 - Buried (<5% exposed)</li></ul>", sol, 0, 9, 1);\r
-annot.validateRangeAndDisplay ();\r
-if (seqRef != null) {\r
-annot.createSequenceMapping (seqRef, 1, true);\r
-seqRef.addAlignmentAnnotation (annot);\r
-}al.addAnnotation (annot);\r
-al.setAnnotationIndex (annot, al.getAlignmentAnnotation ().length - existingAnnotations - 1);\r
-}}, "jalview.io.AlignFile,jalview.datamodel.AlignmentI,~N,~B,~A");\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (null, "jalview.io.JnetAnnotationMaker", ["jalview.datamodel.AlignmentAnnotation", "$.Annotation", "jalview.util.MessageManager", "java.lang.Exception", "$.Float"], function () {
+c$ = Clazz.declareType (jalview.io, "JnetAnnotationMaker");
+c$.add_annotation = Clazz.defineMethod (c$, "add_annotation", 
+function (prediction, al, firstSeq, noMsa) {
+jalview.io.JnetAnnotationMaker.add_annotation (prediction, al, firstSeq, noMsa, Clazz.castNullAs ("Array"));
+}, "jalview.io.AlignFile,jalview.datamodel.AlignmentI,~N,~B");
+c$.add_annotation = Clazz.defineMethod (c$, "add_annotation", 
+function (prediction, al, firstSeq, noMsa, delMap) {
+var i = 0;
+var preds = prediction.getSeqsAsArray ();
+var seqRef = al.getSequenceAt (firstSeq);
+var width = preds[0].getSequence ().length;
+var gapmap = al.getSequenceAt (firstSeq).gapMap ();
+if ((delMap != null && delMap.length > width) || (delMap == null && gapmap.length != width)) {
+throw ( new Exception (jalview.util.MessageManager.formatMessage ("exception.number_of_residues_in_query_sequence_differ_from_prediction",  Clazz.newArray (-1, [(delMap == null ? "" : jalview.util.MessageManager.getString ("label.mapped")), al.getSequenceAt (firstSeq).getName (), al.getSequenceAt (firstSeq).getSequenceAsString (), Integer.$valueOf (width).toString ()]))));
+}var annot;
+var annotations = null;
+var existingAnnotations = 0;
+if (al.getAlignmentAnnotation () != null) {
+existingAnnotations = al.getAlignmentAnnotation ().length;
+}var sol =  new Array (al.getWidth ());
+var firstsol = true;
+while (i < preds.length) {
+var id = preds[i].getName ().toUpperCase ();
+if (id.startsWith ("LUPAS") || id.startsWith ("JNET") || id.startsWith ("JPRED")) {
+if (id.startsWith ("JNETSOL")) {
+var amnt = (id.endsWith ("25") ? 3 : id.endsWith ("5") ? 6 : 9);
+for (var spos = 0; spos < width; spos++) {
+var sposw = (delMap == null) ? gapmap[spos] : gapmap[delMap[spos]];
+if (firstsol) {
+sol[sposw] =  new jalview.datamodel.Annotation (0);
+}if (preds[i].getCharAt (spos) == 'B' && (sol[sposw].value == 0 || sol[sposw].value < amnt)) {
+sol[sposw].value = amnt;
+}}
+firstsol = false;
+} else {
+annotations =  new Array (al.getWidth ());
+if (id.equals ("JNETPRED") || id.equals ("JNETPSSM") || id.equals ("JNETFREQ") || id.equals ("JNETHMM") || id.equals ("JNETALIGN") || id.equals ("JPRED")) {
+if (delMap == null) {
+for (var j = 0; j < width; j++) {
+annotations[gapmap[j]] =  new jalview.datamodel.Annotation ("", "", preds[i].getCharAt (j), 0);
+}
+} else {
+for (var j = 0; j < width; j++) {
+annotations[gapmap[delMap[j]]] =  new jalview.datamodel.Annotation ("", "", preds[i].getCharAt (j), 0);
+}
+}} else if (id.equals ("JNETCONF")) {
+if (delMap == null) {
+for (var j = 0; j < width; j++) {
+var value =  new Float (preds[i].getCharAt (j) + "").floatValue ();
+annotations[gapmap[j]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", preds[i].getCharAt (j), value);
+}
+} else {
+for (var j = 0; j < width; j++) {
+var value =  new Float (preds[i].getCharAt (j) + "").floatValue ();
+annotations[gapmap[delMap[j]]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", preds[i].getCharAt (j), value);
+}
+}} else {
+if (delMap == null) {
+for (var j = 0; j < width; j++) {
+annotations[gapmap[j]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", ' ', 0);
+}
+} else {
+for (var j = 0; j < width; j++) {
+annotations[gapmap[delMap[j]]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", ' ', 0);
+}
+}}if (id.equals ("JNETCONF")) {
+annot =  new jalview.datamodel.AlignmentAnnotation (preds[i].getName (), "JNet Output", annotations, 0, 10, 1);
+} else {
+annot =  new jalview.datamodel.AlignmentAnnotation (preds[i].getName (), "JNet Output", annotations);
+}if (seqRef != null) {
+annot.createSequenceMapping (seqRef, 1, true);
+seqRef.addAlignmentAnnotation (annot);
+}al.addAnnotation (annot);
+al.setAnnotationIndex (annot, al.getAlignmentAnnotation ().length - existingAnnotations - 1);
+}if (noMsa) {
+al.deleteSequence (preds[i]);
+}}i++;
+}
+if (!firstsol) {
+annot =  new jalview.datamodel.AlignmentAnnotation ("Jnet Burial", "<html>Prediction of Solvent Accessibility<br/>levels are<ul><li>0 - Exposed</li><li>3 - 25% or more S.A. accessible</li><li>6 - 5% or more S.A. accessible</li><li>9 - Buried (<5% exposed)</li></ul>", sol, 0, 9, 1);
+annot.validateRangeAndDisplay ();
+if (seqRef != null) {
+annot.createSequenceMapping (seqRef, 1, true);
+seqRef.addAlignmentAnnotation (annot);
+}al.addAnnotation (annot);
+al.setAnnotationIndex (annot, al.getAlignmentAnnotation ().length - existingAnnotations - 1);
+}}, "jalview.io.AlignFile,jalview.datamodel.AlignmentI,~N,~B,~A");
+});
index 264fda6..5173c4c 100644 (file)
Binary files a/bin/jalview/io/MSFfile.class and b/bin/jalview/io/MSFfile.class differ
index d80fbdc..ee2e3af 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (["jalview.io.AlignFile"], "jalview.io.MSFfile", ["jalview.datamodel.Sequence", "jalview.util.Comparison", "$.Format", "java.lang.StringBuffer", "java.util.Hashtable", "$.StringTokenizer", "$.Vector"], function () {\r
-c$ = Clazz.declareType (jalview.io, "MSFfile", jalview.io.AlignFile);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.io.MSFfile, []);\r
-});\r
-Clazz.overrideMethod (c$, "parse", \r
-function () {\r
-var i = 0;\r
-var seqFlag = false;\r
-var key =  String.instantialize ();\r
-var headers =  new java.util.Vector ();\r
-var seqhash =  new java.util.Hashtable ();\r
-var line;\r
-try {\r
-while ((line = this.nextLine ()) != null) {\r
-var str =  new java.util.StringTokenizer (line);\r
-while (str.hasMoreTokens ()) {\r
-var inStr = str.nextToken ();\r
-if (inStr.indexOf ("Name:") != -1) {\r
-key = str.nextToken ();\r
-headers.addElement (key);\r
-}if (inStr.indexOf ("//") != -1) {\r
-seqFlag = true;\r
-}if ((inStr.indexOf ("//") == -1) && (seqFlag == true)) {\r
-key = inStr;\r
-var tempseq;\r
-if (seqhash.containsKey (key)) {\r
-tempseq = seqhash.get (key);\r
-} else {\r
-tempseq =  new StringBuffer ();\r
-seqhash.put (key, tempseq);\r
-}while (str.hasMoreTokens ()) {\r
-tempseq.append (str.nextToken ());\r
-}\r
-}}\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-System.err.println ("Exception parsing MSFFile " + e);\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.noSeqs = headers.size ();\r
-for (i = 0; i < headers.size (); i++) {\r
-if (seqhash.get (headers.elementAt (i)) != null) {\r
-var head = headers.elementAt (i).toString ();\r
-var seq = seqhash.get (head).toString ();\r
-if (this.maxLength < head.length) {\r
-this.maxLength = head.length;\r
-}seq = seq.$replace ('~', '-');\r
-var newSeq = this.parseId (head);\r
-newSeq.setSequence (seq);\r
-this.seqs.addElement (newSeq);\r
-} else {\r
-System.err.println ("MSFFile Parser: Can't find sequence for " + headers.elementAt (i));\r
-}}\r
-});\r
-Clazz.defineMethod (c$, "checkSum", \r
-function (seq) {\r
-var check = 0;\r
-var sequence = seq.toUpperCase ();\r
-for (var i = 0; i < sequence.length; i++) {\r
-try {\r
-var value = sequence.charCodeAt (i);\r
-if (value != -1) {\r
-check += (i % 57 + 1) * value;\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Exception during MSF Checksum calculation");\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}\r
-return check % 10000;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "print", \r
-function (seqs) {\r
-var is_NA = jalview.util.Comparison.isNucleotide (seqs);\r
-var s =  new Array (seqs.length);\r
-var out =  new StringBuffer ("!!" + (is_NA ? "NA" : "AA") + "_MULTIPLE_ALIGNMENT 1.0");\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-var max = 0;\r
-var maxid = 0;\r
-var i = 0;\r
-while ((i < seqs.length) && (seqs[i] != null)) {\r
-s[i] =  new jalview.datamodel.Sequence (seqs[i].getName (), seqs[i].getSequenceAsString ().$replace ('-', '.'), seqs[i].getStart (), seqs[i].getEnd ());\r
-var sb =  new StringBuffer ();\r
-sb.append (s[i].getSequence ());\r
-for (var ii = 0; ii < sb.length (); ii++) {\r
-if (sb.charAt (ii) == '.') {\r
-sb.setCharAt (ii, '~');\r
-} else {\r
-break;\r
-}}\r
-for (var ii = sb.length () - 1; ii > 0; ii--) {\r
-if (sb.charAt (ii) == '.') {\r
-sb.setCharAt (ii, '~');\r
-} else {\r
-break;\r
-}}\r
-s[i].setSequence (sb.toString ());\r
-if (s[i].getSequence ().length > max) {\r
-max = s[i].getSequence ().length;\r
-}i++;\r
-}\r
-var maxLenpad =  new jalview.util.Format ("%" + ( String.instantialize ("" + max)).length + "d");\r
-var maxChkpad =  new jalview.util.Format ("%" + ( String.instantialize ("1" + max)).length + "d");\r
-i = 0;\r
-var bigChecksum = 0;\r
-var checksums =  Clazz.newIntArray (s.length, 0);\r
-while (i < s.length) {\r
-checksums[i] = this.checkSum (s[i].getSequenceAsString ());\r
-bigChecksum += checksums[i];\r
-i++;\r
-}\r
-var maxNB = 0;\r
-out.append ("   MSF: " + s[0].getSequence ().length + "   Type: " + (is_NA ? "N" : "P") + "    Check:  " + (bigChecksum % 10000) + "   ..");\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-var nameBlock =  new Array (s.length);\r
-var idBlock =  new Array (s.length);\r
-i = 0;\r
-while ((i < s.length) && (s[i] != null)) {\r
-nameBlock[i] =  String.instantialize ("  Name: " + this.printId (s[i]) + " ");\r
-idBlock[i] =  String.instantialize ("Len: " + maxLenpad.formLong (s[i].getSequence ().length) + "  Check: " + maxChkpad.formLong (checksums[i]) + "  Weight: 1.00" + this.newline);\r
-if (s[i].getName ().length > maxid) {\r
-maxid = s[i].getName ().length;\r
-}if (nameBlock[i].length > maxNB) {\r
-maxNB = nameBlock[i].length;\r
-}i++;\r
-}\r
-if (maxid < 10) {\r
-maxid = 10;\r
-}if (maxNB < 15) {\r
-maxNB = 15;\r
-}var nbFormat =  new jalview.util.Format ("%-" + maxNB + "s");\r
-for (i = 0; (i < s.length) && (s[i] != null); i++) {\r
-out.append (nbFormat.form (nameBlock[i]) + idBlock[i]);\r
-}\r
-maxid++;\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-out.append ("//");\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-var len = 50;\r
-var nochunks = (Clazz.doubleToInt (max / len)) + 1;\r
-if ((max % len) == 0) {\r
-nochunks--;\r
-}for (i = 0; i < nochunks; i++) {\r
-var j = 0;\r
-while ((j < s.length) && (s[j] != null)) {\r
-var name = this.printId (s[j]);\r
-out.append ( new jalview.util.Format ("%-" + maxid + "s").form (name + " "));\r
-for (var k = 0; k < 5; k++) {\r
-var start = (i * 50) + (k * 10);\r
-var end = start + 10;\r
-if ((end < s[j].getSequence ().length) && (start < s[j].getSequence ().length)) {\r
-out.append (s[j].getSequence (start, end));\r
-if (k < 4) {\r
-out.append (" ");\r
-} else {\r
-out.append (this.newline);\r
-}} else {\r
-if (start < s[j].getSequence ().length) {\r
-out.append (s[j].getSequenceAsString ().substring (start));\r
-out.append (this.newline);\r
-} else {\r
-if (k == 0) {\r
-out.append (this.newline);\r
-}}}}\r
-j++;\r
-}\r
-out.append (this.newline);\r
-}\r
-return out.toString ();\r
-}, "~A");\r
-Clazz.defineMethod (c$, "print", \r
-function () {\r
-return this.print (this.getSeqsAsArray ());\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (["jalview.io.AlignFile"], "jalview.io.MSFfile", ["jalview.datamodel.Sequence", "jalview.util.Comparison", "$.Format", "java.lang.StringBuffer", "java.util.Hashtable", "$.StringTokenizer", "$.Vector"], function () {
+c$ = Clazz.declareType (jalview.io, "MSFfile", jalview.io.AlignFile);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.io.MSFfile, []);
+});
+Clazz.overrideMethod (c$, "parse", 
+function () {
+var i = 0;
+var seqFlag = false;
+var key =  String.instantialize ();
+var headers =  new java.util.Vector ();
+var seqhash =  new java.util.Hashtable ();
+var line;
+try {
+while ((line = this.nextLine ()) != null) {
+var str =  new java.util.StringTokenizer (line);
+while (str.hasMoreTokens ()) {
+var inStr = str.nextToken ();
+if (inStr.indexOf ("Name:") != -1) {
+key = str.nextToken ();
+headers.addElement (key);
+}if (inStr.indexOf ("//") != -1) {
+seqFlag = true;
+}if ((inStr.indexOf ("//") == -1) && (seqFlag == true)) {
+key = inStr;
+var tempseq;
+if (seqhash.containsKey (key)) {
+tempseq = seqhash.get (key);
+} else {
+tempseq =  new StringBuffer ();
+seqhash.put (key, tempseq);
+}while (str.hasMoreTokens ()) {
+tempseq.append (str.nextToken ());
+}
+}}
+}
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+System.err.println ("Exception parsing MSFFile " + e);
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.noSeqs = headers.size ();
+for (i = 0; i < headers.size (); i++) {
+if (seqhash.get (headers.elementAt (i)) != null) {
+var head = headers.elementAt (i).toString ();
+var seq = seqhash.get (head).toString ();
+if (this.maxLength < head.length) {
+this.maxLength = head.length;
+}seq = seq.$replace ('~', '-');
+var newSeq = this.parseId (head);
+newSeq.setSequence (seq);
+this.seqs.addElement (newSeq);
+} else {
+System.err.println ("MSFFile Parser: Can't find sequence for " + headers.elementAt (i));
+}}
+});
+Clazz.defineMethod (c$, "checkSum", 
+function (seq) {
+var check = 0;
+var sequence = seq.toUpperCase ();
+for (var i = 0; i < sequence.length; i++) {
+try {
+var value = sequence.charCodeAt (i);
+if (value != -1) {
+check += (i % 57 + 1) * value;
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Exception during MSF Checksum calculation");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+}
+return check % 10000;
+}, "~S");
+Clazz.defineMethod (c$, "print", 
+function (seqs) {
+var is_NA = jalview.util.Comparison.isNucleotide (seqs);
+var s =  new Array (seqs.length);
+var out =  new StringBuffer ("!!" + (is_NA ? "NA" : "AA") + "_MULTIPLE_ALIGNMENT 1.0");
+out.append (this.newline);
+out.append (this.newline);
+var max = 0;
+var maxid = 0;
+var i = 0;
+while ((i < seqs.length) && (seqs[i] != null)) {
+s[i] =  new jalview.datamodel.Sequence (seqs[i].getName (), seqs[i].getSequenceAsString ().$replace ('-', '.'), seqs[i].getStart (), seqs[i].getEnd ());
+var sb =  new StringBuffer ();
+sb.append (s[i].getSequence ());
+for (var ii = 0; ii < sb.length (); ii++) {
+if (sb.charAt (ii) == '.') {
+sb.setCharAt (ii, '~');
+} else {
+break;
+}}
+for (var ii = sb.length () - 1; ii > 0; ii--) {
+if (sb.charAt (ii) == '.') {
+sb.setCharAt (ii, '~');
+} else {
+break;
+}}
+s[i].setSequence (sb.toString ());
+if (s[i].getSequence ().length > max) {
+max = s[i].getSequence ().length;
+}i++;
+}
+var maxLenpad =  new jalview.util.Format ("%" + ( String.instantialize ("" + max)).length + "d");
+var maxChkpad =  new jalview.util.Format ("%" + ( String.instantialize ("1" + max)).length + "d");
+i = 0;
+var bigChecksum = 0;
+var checksums =  Clazz.newIntArray (s.length, 0);
+while (i < s.length) {
+checksums[i] = this.checkSum (s[i].getSequenceAsString ());
+bigChecksum += checksums[i];
+i++;
+}
+var maxNB = 0;
+out.append ("   MSF: " + s[0].getSequence ().length + "   Type: " + (is_NA ? "N" : "P") + "    Check:  " + (bigChecksum % 10000) + "   ..");
+out.append (this.newline);
+out.append (this.newline);
+out.append (this.newline);
+var nameBlock =  new Array (s.length);
+var idBlock =  new Array (s.length);
+i = 0;
+while ((i < s.length) && (s[i] != null)) {
+nameBlock[i] =  String.instantialize ("  Name: " + this.printId (s[i]) + " ");
+idBlock[i] =  String.instantialize ("Len: " + maxLenpad.formLong (s[i].getSequence ().length) + "  Check: " + maxChkpad.formLong (checksums[i]) + "  Weight: 1.00" + this.newline);
+if (s[i].getName ().length > maxid) {
+maxid = s[i].getName ().length;
+}if (nameBlock[i].length > maxNB) {
+maxNB = nameBlock[i].length;
+}i++;
+}
+if (maxid < 10) {
+maxid = 10;
+}if (maxNB < 15) {
+maxNB = 15;
+}var nbFormat =  new jalview.util.Format ("%-" + maxNB + "s");
+for (i = 0; (i < s.length) && (s[i] != null); i++) {
+out.append (nbFormat.form (nameBlock[i]) + idBlock[i]);
+}
+maxid++;
+out.append (this.newline);
+out.append (this.newline);
+out.append ("//");
+out.append (this.newline);
+out.append (this.newline);
+var len = 50;
+var nochunks = (Clazz.doubleToInt (max / len)) + 1;
+if ((max % len) == 0) {
+nochunks--;
+}for (i = 0; i < nochunks; i++) {
+var j = 0;
+while ((j < s.length) && (s[j] != null)) {
+var name = this.printId (s[j]);
+out.append ( new jalview.util.Format ("%-" + maxid + "s").form (name + " "));
+for (var k = 0; k < 5; k++) {
+var start = (i * 50) + (k * 10);
+var end = start + 10;
+if ((end < s[j].getSequence ().length) && (start < s[j].getSequence ().length)) {
+out.append (s[j].getSequence (start, end));
+if (k < 4) {
+out.append (" ");
+} else {
+out.append (this.newline);
+}} else {
+if (start < s[j].getSequence ().length) {
+out.append (s[j].getSequenceAsString ().substring (start));
+out.append (this.newline);
+} else {
+if (k == 0) {
+out.append (this.newline);
+}}}}
+j++;
+}
+out.append (this.newline);
+}
+return out.toString ();
+}, "~A");
+Clazz.defineMethod (c$, "print", 
+function () {
+return this.print (this.getSeqsAsArray ());
+});
+});
index 9465d75..16bff0d 100644 (file)
Binary files a/bin/jalview/io/ModellerDescription.class and b/bin/jalview/io/ModellerDescription.class differ
index 1232c05..c08736d 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (["java.util.Hashtable"], "jalview.io.ModellerDescription", ["jalview.datamodel.DBRefSource", "jalview.jsdev.RegExp", "java.util.StringTokenizer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.seqTypes = null;\r
-this.Fields = null;\r
-this.TYPE = 0;\r
-this.LOCALID = 1;\r
-this.START = 2;\r
-this.START_CHAIN = 3;\r
-this.END = 4;\r
-this.END_CHAIN = 5;\r
-this.DESCRIPTION1 = 6;\r
-this.DESCRIPTION2 = 7;\r
-this.RESOLUTION = 8;\r
-this.TAIL = 9;\r
-this.Types = null;\r
-this.Padding = null;\r
-this.fields = null;\r
-if (!Clazz.isClassDefined ("jalview.io.ModellerDescription.resCode")) {\r
-jalview.io.ModellerDescription.$ModellerDescription$resCode$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io, "ModellerDescription");\r
-Clazz.prepareFields (c$, function () {\r
-this.seqTypes =  Clazz.newArray (-1, ["sequence", "structure", "structureX", "structureN"]);\r
-this.Fields =  Clazz.newArray (-1, ["objectType", "objectId", "startField", "startCode", "endField", "endCode", "description1", "description2", "resolutionField", "tailField"]);\r
-this.Types =  Clazz.newIntArray (-1, [0, 0, 1, 0, 1, 0, 0, 0, 0, 0]);\r
-this.Padding =  Clazz.newCharArray (-1, [' ', ' ', ' ', '.', ' ', '.', '.', '.', '.', '.']);\r
-this.fields =  new java.util.Hashtable ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.fields.put (this.Fields[9], "");\r
-});\r
-Clazz.defineMethod (c$, "validResidueCode", \r
-($fz = function (field) {\r
-var val = null;\r
-var r = jalview.jsdev.RegExp.newRegex (["\\s*((([-0-9]+).?)|FIRST|LAST|@)"]);\r
-if (!r.search (field)) {\r
-return null;\r
-}var value = r.stringMatchedI (3);\r
-if (value == null) {\r
-value = r.stringMatchedI (1);\r
-}try {\r
-val = Integer.$valueOf (value);\r
-return Clazz.innerTypeInstance (jalview.io.ModellerDescription.resCode, this, null, field, val);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return Clazz.innerTypeInstance (jalview.io.ModellerDescription.resCode, this, null, field, null);\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "parseDescription", \r
-($fz = function (desc) {\r
-var fields =  new java.util.Hashtable ();\r
-var st =  new java.util.StringTokenizer (desc, ":", true);\r
-var field;\r
-var type = -1;\r
-if (st.countTokens () > 0) {\r
-var i = 0;\r
-field = st.nextToken (":");\r
-do {\r
-if (this.seqTypes[i].equalsIgnoreCase (field)) {\r
-break;\r
-}} while (++i < this.seqTypes.length);\r
-if (i < this.seqTypes.length) {\r
-st.nextToken ();\r
-type = i;\r
-i = 1;\r
-while (i < 9 && st.hasMoreTokens ()) {\r
-if ((field = st.nextToken (":")) != null) {\r
-if (!field.equals (":")) {\r
-if (this.Types[i] == 1) {\r
-var val = this.validResidueCode (field);\r
-if (val != null) {\r
-fields.put ( String.instantialize (this.Fields[i] + "num"), val);\r
-} else {\r
-type = -1;\r
-};}fields.put (this.Fields[i++], field);\r
-if (st.hasMoreTokens ()) {\r
-st.nextToken ();\r
-}} else {\r
-i++;\r
-}}}\r
-if (i == 9) {\r
-while (st.hasMoreTokens ()) {\r
-var tl = st.nextToken (":");\r
-field += tl.equals (":") ? tl : (":" + tl);\r
-}\r
-fields.put (this.Fields[9], field);\r
-}}}if (type == -1) {\r
-fields =  new java.util.Hashtable ();\r
-fields.put (this.Fields[9],  String.instantialize (desc));\r
-} else {\r
-fields.put (this.Fields[0], this.seqTypes[type]);\r
-}return fields;\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.makeConstructor (c$, \r
-function (desc) {\r
-if (desc == null) {\r
-desc = "";\r
-}this.fields = this.parseDescription (desc);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setStartCode", \r
-function (v) {\r
-var r;\r
-this.fields.put (this.Fields[2] + "num", r = Clazz.innerTypeInstance (jalview.io.ModellerDescription.resCode, this, null, v));\r
-this.fields.put (this.Fields[2], r.field);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setEndCode", \r
-function (v) {\r
-var r;\r
-this.fields.put (this.Fields[4] + "num", r = Clazz.innerTypeInstance (jalview.io.ModellerDescription.resCode, this, null, v));\r
-this.fields.put (this.Fields[4], r.field);\r
-}, "~N");\r
-Clazz.makeConstructor (c$, \r
-function (seq) {\r
-if (seq.getDescription () != null) {\r
-this.fields = this.parseDescription (seq.getDescription ());\r
-}if (this.isModellerFieldset ()) {\r
-if (this.getStartCode () == null || (this.getStartNum () != seq.getStart () && this.getStartCode ().val != null)) {\r
-this.setStartCode (seq.getStart ());\r
-}if (this.getEndCode () == null || (this.getEndNum () != seq.getEnd () && this.getStartCode () != null && this.getStartCode ().val != null)) {\r
-this.setEndCode (seq.getEnd ());\r
-}} else {\r
-this.setStartCode (seq.getStart ());\r
-this.setEndCode (seq.getEnd ());\r
-this.fields.put (this.Fields[1], seq.getName ());\r
-var t = 0;\r
-if (seq.getDatasetSequence () != null && seq.getDatasetSequence ().getDBRef () != null) {\r
-var dbr = seq.getDatasetSequence ().getDBRef ();\r
-var i;\r
-var j;\r
-for (i = 0, j = dbr.length; i < j; i++) {\r
-if (dbr[i] != null) {\r
-if (dbr[i].getSource ().equals (jalview.datamodel.DBRefSource.PDB)) {\r
-this.fields.put (this.Fields[1], dbr[i].getAccessionId ());\r
-t = 2;\r
-break;\r
-}}}\r
-}this.fields.put (this.Fields[0], this.seqTypes[t]);\r
-}}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "isModellerFieldset", \r
-function () {\r
-return (this.fields.containsKey (this.Fields[0]));\r
-});\r
-Clazz.defineMethod (c$, "getDescriptionLine", \r
-function () {\r
-var desc = "";\r
-var lastfield = this.Fields.length - 1;\r
-if (this.isModellerFieldset ()) {\r
-var value;\r
-for (; lastfield > 6; lastfield--) {\r
-if (this.fields.containsKey (this.Fields[lastfield])) {\r
-break;\r
-}}\r
-for (var i = 0; i < lastfield; i++) {\r
-value = this.fields.get (this.Fields[i]);\r
-if (value != null && value.length > 0) {\r
-desc += (this.fields.get (this.Fields[i])) + ":";\r
-} else {\r
-desc += this.Padding[i] + ":";\r
-}}\r
-}if (this.fields.containsKey (this.Fields[lastfield])) {\r
-desc += this.fields.get (this.Fields[lastfield]);\r
-} else {\r
-desc += ".";\r
-}return desc;\r
-});\r
-Clazz.defineMethod (c$, "getStartNum", \r
-function () {\r
-var start = 0;\r
-var val = this.getStartCode ();\r
-if (val != null && val.val != null) {\r
-return val.val.intValue ();\r
-}return start;\r
-});\r
-Clazz.defineMethod (c$, "getStartCode", \r
-function () {\r
-if (this.isModellerFieldset () && this.fields.containsKey (this.Fields[2] + "num")) {\r
-return this.fields.get (this.Fields[2] + "num");\r
-}return null;\r
-});\r
-Clazz.defineMethod (c$, "getEndCode", \r
-function () {\r
-if (this.isModellerFieldset () && this.fields.containsKey (this.Fields[4] + "num")) {\r
-return this.fields.get (this.Fields[4] + "num");\r
-}return null;\r
-});\r
-Clazz.defineMethod (c$, "getEndNum", \r
-function () {\r
-var end = 0;\r
-var val = this.getEndCode ();\r
-if (val != null && val.val != null) {\r
-return val.val.intValue ();\r
-}return end;\r
-});\r
-Clazz.defineMethod (c$, "updateSequenceI", \r
-function (newSeq) {\r
-if (this.isModellerFieldset ()) {\r
-var rc = this.getStartCode ();\r
-if (rc != null && rc.val != null) {\r
-newSeq.setStart (this.getStartNum ());\r
-} else {\r
-newSeq.setStart (1);\r
-}rc = this.getEndCode ();\r
-if (rc != null && rc.val != null) {\r
-newSeq.setEnd (this.getEndNum ());\r
-} else {\r
-newSeq.setEnd (newSeq.getStart () + newSeq.getLength ());\r
-}return true;\r
-}return false;\r
-}, "jalview.datamodel.SequenceI");\r
-c$.$ModellerDescription$resCode$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.val = null;\r
-this.field = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io.ModellerDescription, "resCode");\r
-Clazz.makeConstructor (c$, \r
-function (a, b) {\r
-this.val = b;\r
-this.field = a;\r
-}, "~S,Integer");\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-this.val =  new Integer (a);\r
-this.field = this.val.toString ();\r
-}, "~N");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (["java.util.Hashtable"], "jalview.io.ModellerDescription", ["jalview.datamodel.DBRefSource", "jalview.jsdev.RegExp", "java.util.StringTokenizer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.seqTypes = null;
+this.Fields = null;
+this.TYPE = 0;
+this.LOCALID = 1;
+this.START = 2;
+this.START_CHAIN = 3;
+this.END = 4;
+this.END_CHAIN = 5;
+this.DESCRIPTION1 = 6;
+this.DESCRIPTION2 = 7;
+this.RESOLUTION = 8;
+this.TAIL = 9;
+this.Types = null;
+this.Padding = null;
+this.fields = null;
+if (!Clazz.isClassDefined ("jalview.io.ModellerDescription.resCode")) {
+jalview.io.ModellerDescription.$ModellerDescription$resCode$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.io, "ModellerDescription");
+Clazz.prepareFields (c$, function () {
+this.seqTypes =  Clazz.newArray (-1, ["sequence", "structure", "structureX", "structureN"]);
+this.Fields =  Clazz.newArray (-1, ["objectType", "objectId", "startField", "startCode", "endField", "endCode", "description1", "description2", "resolutionField", "tailField"]);
+this.Types =  Clazz.newIntArray (-1, [0, 0, 1, 0, 1, 0, 0, 0, 0, 0]);
+this.Padding =  Clazz.newCharArray (-1, [' ', ' ', ' ', '.', ' ', '.', '.', '.', '.', '.']);
+this.fields =  new java.util.Hashtable ();
+});
+Clazz.makeConstructor (c$, 
+function () {
+this.fields.put (this.Fields[9], "");
+});
+Clazz.defineMethod (c$, "validResidueCode", 
+($fz = function (field) {
+var val = null;
+var r = jalview.jsdev.RegExp.newRegex (["\\s*((([-0-9]+).?)|FIRST|LAST|@)"]);
+if (!r.search (field)) {
+return null;
+}var value = r.stringMatchedI (3);
+if (value == null) {
+value = r.stringMatchedI (1);
+}try {
+val = Integer.$valueOf (value);
+return Clazz.innerTypeInstance (jalview.io.ModellerDescription.resCode, this, null, field, val);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+return Clazz.innerTypeInstance (jalview.io.ModellerDescription.resCode, this, null, field, null);
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "parseDescription", 
+($fz = function (desc) {
+var fields =  new java.util.Hashtable ();
+var st =  new java.util.StringTokenizer (desc, ":", true);
+var field;
+var type = -1;
+if (st.countTokens () > 0) {
+var i = 0;
+field = st.nextToken (":");
+do {
+if (this.seqTypes[i].equalsIgnoreCase (field)) {
+break;
+}} while (++i < this.seqTypes.length);
+if (i < this.seqTypes.length) {
+st.nextToken ();
+type = i;
+i = 1;
+while (i < 9 && st.hasMoreTokens ()) {
+if ((field = st.nextToken (":")) != null) {
+if (!field.equals (":")) {
+if (this.Types[i] == 1) {
+var val = this.validResidueCode (field);
+if (val != null) {
+fields.put ( String.instantialize (this.Fields[i] + "num"), val);
+} else {
+type = -1;
+};}fields.put (this.Fields[i++], field);
+if (st.hasMoreTokens ()) {
+st.nextToken ();
+}} else {
+i++;
+}}}
+if (i == 9) {
+while (st.hasMoreTokens ()) {
+var tl = st.nextToken (":");
+field += tl.equals (":") ? tl : (":" + tl);
+}
+fields.put (this.Fields[9], field);
+}}}if (type == -1) {
+fields =  new java.util.Hashtable ();
+fields.put (this.Fields[9],  String.instantialize (desc));
+} else {
+fields.put (this.Fields[0], this.seqTypes[type]);
+}return fields;
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.makeConstructor (c$, 
+function (desc) {
+if (desc == null) {
+desc = "";
+}this.fields = this.parseDescription (desc);
+}, "~S");
+Clazz.defineMethod (c$, "setStartCode", 
+function (v) {
+var r;
+this.fields.put (this.Fields[2] + "num", r = Clazz.innerTypeInstance (jalview.io.ModellerDescription.resCode, this, null, v));
+this.fields.put (this.Fields[2], r.field);
+}, "~N");
+Clazz.defineMethod (c$, "setEndCode", 
+function (v) {
+var r;
+this.fields.put (this.Fields[4] + "num", r = Clazz.innerTypeInstance (jalview.io.ModellerDescription.resCode, this, null, v));
+this.fields.put (this.Fields[4], r.field);
+}, "~N");
+Clazz.makeConstructor (c$, 
+function (seq) {
+if (seq.getDescription () != null) {
+this.fields = this.parseDescription (seq.getDescription ());
+}if (this.isModellerFieldset ()) {
+if (this.getStartCode () == null || (this.getStartNum () != seq.getStart () && this.getStartCode ().val != null)) {
+this.setStartCode (seq.getStart ());
+}if (this.getEndCode () == null || (this.getEndNum () != seq.getEnd () && this.getStartCode () != null && this.getStartCode ().val != null)) {
+this.setEndCode (seq.getEnd ());
+}} else {
+this.setStartCode (seq.getStart ());
+this.setEndCode (seq.getEnd ());
+this.fields.put (this.Fields[1], seq.getName ());
+var t = 0;
+if (seq.getDatasetSequence () != null && seq.getDatasetSequence ().getDBRef () != null) {
+var dbr = seq.getDatasetSequence ().getDBRef ();
+var i;
+var j;
+for (i = 0, j = dbr.length; i < j; i++) {
+if (dbr[i] != null) {
+if (dbr[i].getSource ().equals (jalview.datamodel.DBRefSource.PDB)) {
+this.fields.put (this.Fields[1], dbr[i].getAccessionId ());
+t = 2;
+break;
+}}}
+}this.fields.put (this.Fields[0], this.seqTypes[t]);
+}}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "isModellerFieldset", 
+function () {
+return (this.fields.containsKey (this.Fields[0]));
+});
+Clazz.defineMethod (c$, "getDescriptionLine", 
+function () {
+var desc = "";
+var lastfield = this.Fields.length - 1;
+if (this.isModellerFieldset ()) {
+var value;
+for (; lastfield > 6; lastfield--) {
+if (this.fields.containsKey (this.Fields[lastfield])) {
+break;
+}}
+for (var i = 0; i < lastfield; i++) {
+value = this.fields.get (this.Fields[i]);
+if (value != null && value.length > 0) {
+desc += (this.fields.get (this.Fields[i])) + ":";
+} else {
+desc += this.Padding[i] + ":";
+}}
+}if (this.fields.containsKey (this.Fields[lastfield])) {
+desc += this.fields.get (this.Fields[lastfield]);
+} else {
+desc += ".";
+}return desc;
+});
+Clazz.defineMethod (c$, "getStartNum", 
+function () {
+var start = 0;
+var val = this.getStartCode ();
+if (val != null && val.val != null) {
+return val.val.intValue ();
+}return start;
+});
+Clazz.defineMethod (c$, "getStartCode", 
+function () {
+if (this.isModellerFieldset () && this.fields.containsKey (this.Fields[2] + "num")) {
+return this.fields.get (this.Fields[2] + "num");
+}return null;
+});
+Clazz.defineMethod (c$, "getEndCode", 
+function () {
+if (this.isModellerFieldset () && this.fields.containsKey (this.Fields[4] + "num")) {
+return this.fields.get (this.Fields[4] + "num");
+}return null;
+});
+Clazz.defineMethod (c$, "getEndNum", 
+function () {
+var end = 0;
+var val = this.getEndCode ();
+if (val != null && val.val != null) {
+return val.val.intValue ();
+}return end;
+});
+Clazz.defineMethod (c$, "updateSequenceI", 
+function (newSeq) {
+if (this.isModellerFieldset ()) {
+var rc = this.getStartCode ();
+if (rc != null && rc.val != null) {
+newSeq.setStart (this.getStartNum ());
+} else {
+newSeq.setStart (1);
+}rc = this.getEndCode ();
+if (rc != null && rc.val != null) {
+newSeq.setEnd (this.getEndNum ());
+} else {
+newSeq.setEnd (newSeq.getStart () + newSeq.getLength ());
+}return true;
+}return false;
+}, "jalview.datamodel.SequenceI");
+c$.$ModellerDescription$resCode$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.val = null;
+this.field = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io.ModellerDescription, "resCode");
+Clazz.makeConstructor (c$, 
+function (a, b) {
+this.val = b;
+this.field = a;
+}, "~S,Integer");
+Clazz.makeConstructor (c$, 
+function (a) {
+this.val =  new Integer (a);
+this.field = this.val.toString ();
+}, "~N");
+c$ = Clazz.p0p ();
+};
+});
index 59a2362..2b1359c 100644 (file)
Binary files a/bin/jalview/io/NewickFile.class and b/bin/jalview/io/NewickFile.class differ
index 886a07b..2975319 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (["jalview.io.FileParse", "jalview.jsdev.RegExp"], "jalview.io.NewickFile", ["jalview.datamodel.SequenceNode", "jalview.util.MessageManager", "java.io.BufferedReader", "$.IOException", "java.lang.Float", "$.StringBuffer", "java.util.StringTokenizer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.root = null;\r
-this.$HasBootstrap = false;\r
-this.$HasDistances = false;\r
-this.RootHasDistance = false;\r
-this.ReplaceUnderscores = false;\r
-this.printRootInfo = true;\r
-this.NodeSafeName = null;\r
-this.QuoteChar = '\'';\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io, "NewickFile", jalview.io.FileParse);\r
-Clazz.prepareFields (c$, function () {\r
-this.NodeSafeName =  Clazz.newArray (-1, [jalview.jsdev.RegExp.perlCode ("m/[\\[,:'()]/"), jalview.jsdev.RegExp.perlCode ("s/'/''/"), jalview.jsdev.RegExp.perlCode ("s/\\/w/_/")]);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (inStr) {\r
-Clazz.superConstructor (this, jalview.io.NewickFile, [inStr, "Paste"]);\r
-}, "~S");\r
-Clazz.makeConstructor (c$, \r
-function (newtree) {\r
-Clazz.superConstructor (this, jalview.io.NewickFile, []);\r
-this.root = newtree;\r
-}, "jalview.datamodel.SequenceNode");\r
-Clazz.makeConstructor (c$, \r
-function (newtree, bootstrap) {\r
-Clazz.superConstructor (this, jalview.io.NewickFile, []);\r
-this.$HasBootstrap = bootstrap;\r
-this.root = newtree;\r
-}, "jalview.datamodel.SequenceNode,~B");\r
-Clazz.makeConstructor (c$, \r
-function (newtree, bootstrap, distances) {\r
-Clazz.superConstructor (this, jalview.io.NewickFile, []);\r
-this.root = newtree;\r
-this.$HasBootstrap = bootstrap;\r
-this.$HasDistances = distances;\r
-}, "jalview.datamodel.SequenceNode,~B,~B");\r
-Clazz.makeConstructor (c$, \r
-function (newtree, bootstrap, distances, rootdistance) {\r
-Clazz.superConstructor (this, jalview.io.NewickFile, []);\r
-this.root = newtree;\r
-this.$HasBootstrap = bootstrap;\r
-this.$HasDistances = distances;\r
-this.RootHasDistance = rootdistance;\r
-}, "jalview.datamodel.SequenceNode,~B,~B,~B");\r
-Clazz.defineMethod (c$, "ErrorStringrange", \r
-($fz = function (Error, Er, r, p, s) {\r
-return ((Error == null) ? "" : Error) + Er + " at position " + p + " ( " + s.substring (((p - r) < 0) ? 0 : (p - r), ((p + r) > s.length) ? s.length : (p + r)) + " )\n";\r
-}, $fz.isPrivate = true, $fz), "~S,~S,~N,~N,~S");\r
-Clazz.defineMethod (c$, "HasBootstrap", \r
-function () {\r
-return this.$HasBootstrap;\r
-});\r
-Clazz.defineMethod (c$, "HasDistances", \r
-function () {\r
-return this.$HasDistances;\r
-});\r
-Clazz.defineMethod (c$, "HasRootDistance", \r
-function () {\r
-return this.RootHasDistance;\r
-});\r
-Clazz.defineMethod (c$, "parse", \r
-function () {\r
-var nf;\r
-{\r
-var file =  new StringBuffer ();\r
-while ((nf = this.nextLine ()) != null) {\r
-file.append (nf);\r
-}\r
-nf = file.toString ();\r
-}this.root =  new jalview.datamodel.SequenceNode ();\r
-var realroot = null;\r
-var c = this.root;\r
-var d = -1;\r
-var cp = 0;\r
-var Error = null;\r
-var nodename = null;\r
-var commentString2 = null;\r
-var DefDistance = 0.001;\r
-var DefBootstrap = -1;\r
-var distance = DefDistance;\r
-var bootstrap = DefBootstrap;\r
-var ascending = false;\r
-var majorsyms = jalview.jsdev.RegExp.newRegex (["[(\\['),;]"]);\r
-var nextcp = 0;\r
-var ncp = cp;\r
-var parsednodename = false;\r
-while (majorsyms.searchFrom (nf, cp) && (Error == null)) {\r
-var fcp = majorsyms.matchedFrom ();\r
-var schar;\r
-switch (schar = nf.charAt (fcp)) {\r
-case '(':\r
-if (ascending) {\r
-Error = this.ErrorStringrange (Error, "Unexpected '('", 7, fcp, nf);\r
-continue;\r
-};d++;\r
-if (c.right () == null) {\r
-c.setRight ( new jalview.datamodel.SequenceNode (null, c, null, DefDistance, DefBootstrap, false));\r
-c = c.right ();\r
-} else {\r
-if (c.left () != null) {\r
-var tmpn =  new jalview.datamodel.SequenceNode (null, c, null, 0, 0, true);\r
-tmpn.SetChildren (c.left (), c.right ());\r
-c.setRight (tmpn);\r
-}c.setLeft ( new jalview.datamodel.SequenceNode (null, c, null, DefDistance, DefBootstrap, false));\r
-c = c.left ();\r
-}if (realroot == null) {\r
-realroot = c;\r
-}nodename = null;\r
-distance = DefDistance;\r
-bootstrap = DefBootstrap;\r
-cp = fcp + 1;\r
-break;\r
-case '\'':\r
-var qnodename = jalview.jsdev.RegExp.newRegex (["'([^']|'')+'"]);\r
-if (qnodename.searchFrom (nf, fcp)) {\r
-var nl = qnodename.stringMatched ().length;\r
-nodename =  String.instantialize (qnodename.stringMatched ().substring (1, nl - 1));\r
-var xpandquotes = jalview.jsdev.RegExp.perlCode ("s/''/'/");\r
-var widernodename = xpandquotes.replaceAll (nodename);\r
-nodename = widernodename;\r
-nextcp = fcp + nl + 1;\r
-parsednodename = true;\r
-} else {\r
-Error = this.ErrorStringrange (Error, "Unterminated quotes for nodename", 7, fcp, nf);\r
-}break;\r
-default:\r
-if (schar == ';') {\r
-if (d != -1) {\r
-Error = this.ErrorStringrange (Error, "Wayward semicolon (depth=" + d + ")", 7, fcp, nf);\r
-}}if (schar == '[') {\r
-var comment = jalview.jsdev.RegExp.newRegex (["]"]);\r
-if (comment.searchFrom (nf, fcp)) {\r
-nextcp = comment.matchedFrom () + 1;\r
-this.warningMessage = "Tree file contained comments which may confuse input algorithm.";\r
-break;\r
-} else {\r
-Error = this.ErrorStringrange (Error, "Unterminated comment", 3, fcp, nf);\r
-};}var fstring = nf.substring (ncp, fcp);\r
-while (fstring.indexOf (']') > -1) {\r
-var cstart = fstring.indexOf ('[');\r
-var cend = fstring.indexOf (']');\r
-commentString2 = fstring.substring (cstart + 1, cend);\r
-fstring = fstring.substring (0, cstart) + fstring.substring (cend + 1);\r
-}\r
-var uqnodename = jalview.jsdev.RegExp.newRegex (["\\b([^' :;\\](),]+)"]);\r
-var nbootstrap = jalview.jsdev.RegExp.newRegex (["\\s*([0-9+]+)\\s*:"]);\r
-var ndist = jalview.jsdev.RegExp.newRegex ([":([-0-9Ee.+]+)"]);\r
-if (!parsednodename && uqnodename.search (fstring) && ((uqnodename.matchedFromI (1) == 0) || (fstring.charAt (uqnodename.matchedFromI (1) - 1) != ':'))) {\r
-if (nodename == null) {\r
-if (this.ReplaceUnderscores) {\r
-nodename = uqnodename.stringMatchedI (1).$replace ('_', ' ');\r
-} else {\r
-nodename = uqnodename.stringMatchedI (1);\r
-}} else {\r
-Error = this.ErrorStringrange (Error, "File has broken algorithm - overwritten nodename", 10, fcp, nf);\r
-}}if (nbootstrap.search (fstring)) {\r
-if (nbootstrap.stringMatchedI (1).equals (uqnodename.stringMatchedI (1))) {\r
-nodename = null;\r
-}if (nodename == null || nodename.length == 0 || nbootstrap.matchedFromI (1) > (uqnodename.matchedFromI (1) + uqnodename.stringMatched ().length)) {\r
-try {\r
-bootstrap = ( new Integer (nbootstrap.stringMatchedI (1))).intValue ();\r
-this.$HasBootstrap = true;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-Error = this.ErrorStringrange (Error, "Can't parse bootstrap value", 4, ncp + nbootstrap.matchedFrom (), nf);\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}}var nodehasdistance = false;\r
-if (ndist.search (fstring)) {\r
-try {\r
-distance = ( new Float (ndist.stringMatchedI (1))).floatValue ();\r
-this.$HasDistances = true;\r
-nodehasdistance = true;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-Error = this.ErrorStringrange (Error, "Can't parse node distance value", 7, ncp + ndist.matchedFrom (), nf);\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}if (ascending) {\r
-c.setName (nodename);\r
-c.dist = (this.$HasDistances) ? distance : DefDistance;\r
-c.setBootstrap ((this.$HasBootstrap) ? bootstrap : DefBootstrap);\r
-if (c === realroot) {\r
-this.RootHasDistance = nodehasdistance;\r
-}this.parseNHXNodeProps (c, commentString2);\r
-commentString2 = null;\r
-} else {\r
-var newnode =  new jalview.datamodel.SequenceNode (null, c, nodename, (this.$HasDistances) ? distance : DefDistance, (this.$HasBootstrap) ? bootstrap : DefBootstrap, false);\r
-this.parseNHXNodeProps (c, commentString2);\r
-commentString2 = null;\r
-if (c.right () == null) {\r
-c.setRight (newnode);\r
-} else {\r
-if (c.left () == null) {\r
-c.setLeft (newnode);\r
-} else {\r
-var newdummy =  new jalview.datamodel.SequenceNode (null, c, null, (this.$HasDistances ? 0 : DefDistance), 0, true);\r
-newdummy.SetChildren (c.left (), newnode);\r
-c.setLeft (newdummy);\r
-}}}if (ascending) {\r
-c = c.AscendTree ();\r
-if ((d > -1) && (c == null)) {\r
-Error = this.ErrorStringrange (Error, "File broke algorithm: Lost place in tree (is there an extra ')' ?)", 7, fcp, nf);\r
-}}if (nf.charAt (fcp) == ')') {\r
-d--;\r
-ascending = true;\r
-} else {\r
-if (nf.charAt (fcp) == ',') {\r
-if (ascending) {\r
-ascending = false;\r
-} else {\r
-if ((c.left () != null) && (!c.left ().isLeaf ())) {\r
-c = c.left ();\r
-}}}}nodename = null;\r
-distance = DefDistance;\r
-bootstrap = DefBootstrap;\r
-commentString2 = null;\r
-parsednodename = false;\r
-}\r
-if (nextcp == 0) {\r
-ncp = cp = fcp + 1;\r
-} else {\r
-cp = nextcp;\r
-nextcp = 0;\r
-}}\r
-if (Error != null) {\r
-throw ( new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.newfile",  Clazz.newArray (-1, [Error.toString ()]))));\r
-}if (this.root == null) {\r
-throw ( new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.newfile",  Clazz.newArray (-1, [jalview.util.MessageManager.getString ("label.no_tree_read_in")]))));\r
-}this.root = this.root.right ().detach ();\r
-if (!this.RootHasDistance) {\r
-this.root.dist = (this.$HasDistances) ? 0 : DefDistance;\r
-}});\r
-Clazz.defineMethod (c$, "parseNHXNodeProps", \r
-($fz = function (c, commentString) {\r
-if (commentString != null && commentString.startsWith ("&&NHX")) {\r
-var st =  new java.util.StringTokenizer (commentString.substring (5), ":");\r
-while (st.hasMoreTokens ()) {\r
-var tok = st.nextToken ();\r
-var colpos = tok.indexOf ("=");\r
-if (colpos > -1) {\r
-var code = tok.substring (0, colpos);\r
-var value = tok.substring (colpos + 1);\r
-try {\r
-if (code.toLowerCase ().equals ("b")) {\r
-var v = -1;\r
-var iv =  new Float (value);\r
-v = iv.intValue ();\r
-c.setBootstrap (v);\r
-this.$HasBootstrap = true;\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Couldn't parse code '" + code + "' = '" + value + "'");\r
-e.printStackTrace (System.err);\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}}\r
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceNode,~S");\r
-Clazz.defineMethod (c$, "getTree", \r
-function () {\r
-return this.root;\r
-});\r
-Clazz.defineMethod (c$, "print", \r
-function () {\r
-{\r
-var tf =  new StringBuffer ();\r
-this.print (tf, this.root);\r
-return (tf.append (";").toString ());\r
-}});\r
-Clazz.defineMethod (c$, "print", \r
-function (withbootstraps) {\r
-{\r
-var boots = this.$HasBootstrap;\r
-this.$HasBootstrap = withbootstraps;\r
-var rv = this.print ();\r
-this.$HasBootstrap = boots;\r
-return rv;\r
-}}, "~B");\r
-Clazz.defineMethod (c$, "print", \r
-function (withbootstraps, withdists) {\r
-{\r
-var dists = this.$HasDistances;\r
-this.$HasDistances = withdists;\r
-var rv = this.print (withbootstraps);\r
-this.$HasDistances = dists;\r
-return rv;\r
-}}, "~B,~B");\r
-Clazz.defineMethod (c$, "print", \r
-function (withbootstraps, withdists, printRootInfo) {\r
-{\r
-var rootinfo = printRootInfo;\r
-this.printRootInfo = printRootInfo;\r
-var rv = this.print (withbootstraps, withdists);\r
-this.printRootInfo = rootinfo;\r
-return rv;\r
-}}, "~B,~B,~B");\r
-Clazz.defineMethod (c$, "getQuoteChar", \r
-function () {\r
-return this.QuoteChar;\r
-});\r
-Clazz.defineMethod (c$, "setQuoteChar", \r
-function (c) {\r
-var old = this.QuoteChar;\r
-this.QuoteChar = c;\r
-return old;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "nodeName", \r
-($fz = function (name) {\r
-if (this.NodeSafeName[0].search (name)) {\r
-return this.QuoteChar + this.NodeSafeName[1].replaceAll (name) + this.QuoteChar;\r
-} else {\r
-return this.NodeSafeName[2].replaceAll (name);\r
-}}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "printNodeField", \r
-($fz = function (c) {\r
-return ((c.getName () == null) ? "" : this.nodeName (c.getName ())) + ((this.$HasBootstrap) ? ((c.getBootstrap () > -1) ? ((c.getName () != null ? " " : "") + c.getBootstrap ()) : "") : "") + ((this.$HasDistances) ? (":" + c.dist) : "");\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceNode");\r
-Clazz.defineMethod (c$, "printRootField", \r
-($fz = function (root) {\r
-return (this.printRootInfo) ? (((root.getName () == null) ? "" : this.nodeName (root.getName ())) + ((this.$HasBootstrap) ? ((root.getBootstrap () > -1) ? ((root.getName () != null ? " " : "") + +root.getBootstrap ()) : "") : "") + ((this.RootHasDistance) ? (":" + root.dist) : "")) : "";\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceNode");\r
-Clazz.defineMethod (c$, "print", \r
-function (tf, root) {\r
-if (root != null) {\r
-if (root.isLeaf () && this.printRootInfo) {\r
-tf.append (this.printRootField (root));\r
-} else {\r
-if (root.isDummy ()) {\r
-this._print (tf, root.right ());\r
-this._print (tf, root.left ());\r
-} else {\r
-tf.append ("(");\r
-this._print (tf, root.right ());\r
-if (root.left () != null) {\r
-tf.append (",");\r
-}this._print (tf, root.left ());\r
-tf.append (")" + this.printRootField (root));\r
-}}}}, "StringBuffer,jalview.datamodel.SequenceNode");\r
-Clazz.defineMethod (c$, "_print", \r
-function (tf, c) {\r
-if (c != null) {\r
-if (c.isLeaf ()) {\r
-tf.append (this.printNodeField (c));\r
-} else {\r
-if (c.isDummy ()) {\r
-this._print (tf, c.left ());\r
-if (c.left () != null) {\r
-tf.append (",");\r
-}this._print (tf, c.right ());\r
-} else {\r
-tf.append ("(");\r
-this._print (tf, c.right ());\r
-if (c.left () != null) {\r
-tf.append (",");\r
-}this._print (tf, c.left ());\r
-tf.append (")" + this.printNodeField (c));\r
-}}}}, "StringBuffer,jalview.datamodel.SequenceNode");\r
-c$.main = Clazz.defineMethod (c$, "main", \r
-function (args) {\r
-try {\r
-if (args == null || args.length != 1) {\r
-System.err.println ("Takes one argument - file name of a newick tree file.");\r
-System.exit (0);\r
-}var fn =  new java.io.File (args[0]);\r
-var newickfile =  new StringBuffer ();\r
-var treefile =  new java.io.BufferedReader ( new java.io.FileReader (fn));\r
-var l;\r
-while ((l = treefile.readLine ()) != null) {\r
-newickfile.append (l);\r
-}\r
-treefile.close ();\r
-System.out.println ("Read file :\n");\r
-var trf =  new jalview.io.NewickFile (args[0], "File");\r
-trf.parse ();\r
-System.out.println ("Original file :\n");\r
-var nonl = jalview.jsdev.RegExp.newRegex (["\n+", ""]);\r
-System.out.println (nonl.replaceAll (newickfile.toString ()) + "\n");\r
-System.out.println ("Parsed file.\n");\r
-System.out.println ("Default output type for original input.\n");\r
-System.out.println (trf.print ());\r
-System.out.println ("Without bootstraps.\n");\r
-System.out.println (trf.print (false));\r
-System.out.println ("Without distances.\n");\r
-System.out.println (trf.print (true, false));\r
-System.out.println ("Without bootstraps but with distanecs.\n");\r
-System.out.println (trf.print (false, true));\r
-System.out.println ("Without bootstraps or distanecs.\n");\r
-System.out.println (trf.print (false, false));\r
-System.out.println ("With bootstraps and with distances.\n");\r
-System.out.println (trf.print (true, true));\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-System.err.println ("Exception\n" + e);\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "~A");\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (["jalview.io.FileParse", "jalview.jsdev.RegExp"], "jalview.io.NewickFile", ["jalview.datamodel.SequenceNode", "jalview.util.MessageManager", "java.io.BufferedReader", "$.IOException", "java.lang.Float", "$.StringBuffer", "java.util.StringTokenizer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.root = null;
+this.$HasBootstrap = false;
+this.$HasDistances = false;
+this.RootHasDistance = false;
+this.ReplaceUnderscores = false;
+this.printRootInfo = true;
+this.NodeSafeName = null;
+this.QuoteChar = '\'';
+Clazz.instantialize (this, arguments);
+}, jalview.io, "NewickFile", jalview.io.FileParse);
+Clazz.prepareFields (c$, function () {
+this.NodeSafeName =  Clazz.newArray (-1, [jalview.jsdev.RegExp.perlCode ("m/[\\[,:'()]/"), jalview.jsdev.RegExp.perlCode ("s/'/''/"), jalview.jsdev.RegExp.perlCode ("s/\\/w/_/")]);
+});
+Clazz.makeConstructor (c$, 
+function (inStr) {
+Clazz.superConstructor (this, jalview.io.NewickFile, [inStr, "Paste"]);
+}, "~S");
+Clazz.makeConstructor (c$, 
+function (newtree) {
+Clazz.superConstructor (this, jalview.io.NewickFile, []);
+this.root = newtree;
+}, "jalview.datamodel.SequenceNode");
+Clazz.makeConstructor (c$, 
+function (newtree, bootstrap) {
+Clazz.superConstructor (this, jalview.io.NewickFile, []);
+this.$HasBootstrap = bootstrap;
+this.root = newtree;
+}, "jalview.datamodel.SequenceNode,~B");
+Clazz.makeConstructor (c$, 
+function (newtree, bootstrap, distances) {
+Clazz.superConstructor (this, jalview.io.NewickFile, []);
+this.root = newtree;
+this.$HasBootstrap = bootstrap;
+this.$HasDistances = distances;
+}, "jalview.datamodel.SequenceNode,~B,~B");
+Clazz.makeConstructor (c$, 
+function (newtree, bootstrap, distances, rootdistance) {
+Clazz.superConstructor (this, jalview.io.NewickFile, []);
+this.root = newtree;
+this.$HasBootstrap = bootstrap;
+this.$HasDistances = distances;
+this.RootHasDistance = rootdistance;
+}, "jalview.datamodel.SequenceNode,~B,~B,~B");
+Clazz.defineMethod (c$, "ErrorStringrange", 
+($fz = function (Error, Er, r, p, s) {
+return ((Error == null) ? "" : Error) + Er + " at position " + p + " ( " + s.substring (((p - r) < 0) ? 0 : (p - r), ((p + r) > s.length) ? s.length : (p + r)) + " )\n";
+}, $fz.isPrivate = true, $fz), "~S,~S,~N,~N,~S");
+Clazz.defineMethod (c$, "HasBootstrap", 
+function () {
+return this.$HasBootstrap;
+});
+Clazz.defineMethod (c$, "HasDistances", 
+function () {
+return this.$HasDistances;
+});
+Clazz.defineMethod (c$, "HasRootDistance", 
+function () {
+return this.RootHasDistance;
+});
+Clazz.defineMethod (c$, "parse", 
+function () {
+var nf;
+{
+var file =  new StringBuffer ();
+while ((nf = this.nextLine ()) != null) {
+file.append (nf);
+}
+nf = file.toString ();
+}this.root =  new jalview.datamodel.SequenceNode ();
+var realroot = null;
+var c = this.root;
+var d = -1;
+var cp = 0;
+var Error = null;
+var nodename = null;
+var commentString2 = null;
+var DefDistance = 0.001;
+var DefBootstrap = -1;
+var distance = DefDistance;
+var bootstrap = DefBootstrap;
+var ascending = false;
+var majorsyms = jalview.jsdev.RegExp.newRegex (["[(\\['),;]"]);
+var nextcp = 0;
+var ncp = cp;
+var parsednodename = false;
+while (majorsyms.searchFrom (nf, cp) && (Error == null)) {
+var fcp = majorsyms.matchedFrom ();
+var schar;
+switch (schar = nf.charAt (fcp)) {
+case '(':
+if (ascending) {
+Error = this.ErrorStringrange (Error, "Unexpected '('", 7, fcp, nf);
+continue;
+};d++;
+if (c.right () == null) {
+c.setRight ( new jalview.datamodel.SequenceNode (null, c, null, DefDistance, DefBootstrap, false));
+c = c.right ();
+} else {
+if (c.left () != null) {
+var tmpn =  new jalview.datamodel.SequenceNode (null, c, null, 0, 0, true);
+tmpn.SetChildren (c.left (), c.right ());
+c.setRight (tmpn);
+}c.setLeft ( new jalview.datamodel.SequenceNode (null, c, null, DefDistance, DefBootstrap, false));
+c = c.left ();
+}if (realroot == null) {
+realroot = c;
+}nodename = null;
+distance = DefDistance;
+bootstrap = DefBootstrap;
+cp = fcp + 1;
+break;
+case '\'':
+var qnodename = jalview.jsdev.RegExp.newRegex (["'([^']|'')+'"]);
+if (qnodename.searchFrom (nf, fcp)) {
+var nl = qnodename.stringMatched ().length;
+nodename =  String.instantialize (qnodename.stringMatched ().substring (1, nl - 1));
+var xpandquotes = jalview.jsdev.RegExp.perlCode ("s/''/'/");
+var widernodename = xpandquotes.replaceAll (nodename);
+nodename = widernodename;
+nextcp = fcp + nl + 1;
+parsednodename = true;
+} else {
+Error = this.ErrorStringrange (Error, "Unterminated quotes for nodename", 7, fcp, nf);
+}break;
+default:
+if (schar == ';') {
+if (d != -1) {
+Error = this.ErrorStringrange (Error, "Wayward semicolon (depth=" + d + ")", 7, fcp, nf);
+}}if (schar == '[') {
+var comment = jalview.jsdev.RegExp.newRegex (["]"]);
+if (comment.searchFrom (nf, fcp)) {
+nextcp = comment.matchedFrom () + 1;
+this.warningMessage = "Tree file contained comments which may confuse input algorithm.";
+break;
+} else {
+Error = this.ErrorStringrange (Error, "Unterminated comment", 3, fcp, nf);
+};}var fstring = nf.substring (ncp, fcp);
+while (fstring.indexOf (']') > -1) {
+var cstart = fstring.indexOf ('[');
+var cend = fstring.indexOf (']');
+commentString2 = fstring.substring (cstart + 1, cend);
+fstring = fstring.substring (0, cstart) + fstring.substring (cend + 1);
+}
+var uqnodename = jalview.jsdev.RegExp.newRegex (["\\b([^' :;\\](),]+)"]);
+var nbootstrap = jalview.jsdev.RegExp.newRegex (["\\s*([0-9+]+)\\s*:"]);
+var ndist = jalview.jsdev.RegExp.newRegex ([":([-0-9Ee.+]+)"]);
+if (!parsednodename && uqnodename.search (fstring) && ((uqnodename.matchedFromI (1) == 0) || (fstring.charAt (uqnodename.matchedFromI (1) - 1) != ':'))) {
+if (nodename == null) {
+if (this.ReplaceUnderscores) {
+nodename = uqnodename.stringMatchedI (1).$replace ('_', ' ');
+} else {
+nodename = uqnodename.stringMatchedI (1);
+}} else {
+Error = this.ErrorStringrange (Error, "File has broken algorithm - overwritten nodename", 10, fcp, nf);
+}}if (nbootstrap.search (fstring)) {
+if (nbootstrap.stringMatchedI (1).equals (uqnodename.stringMatchedI (1))) {
+nodename = null;
+}if (nodename == null || nodename.length == 0 || nbootstrap.matchedFromI (1) > (uqnodename.matchedFromI (1) + uqnodename.stringMatched ().length)) {
+try {
+bootstrap = ( new Integer (nbootstrap.stringMatchedI (1))).intValue ();
+this.$HasBootstrap = true;
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+Error = this.ErrorStringrange (Error, "Can't parse bootstrap value", 4, ncp + nbootstrap.matchedFrom (), nf);
+} else {
+throw e;
+}
+}
+}}var nodehasdistance = false;
+if (ndist.search (fstring)) {
+try {
+distance = ( new Float (ndist.stringMatchedI (1))).floatValue ();
+this.$HasDistances = true;
+nodehasdistance = true;
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+Error = this.ErrorStringrange (Error, "Can't parse node distance value", 7, ncp + ndist.matchedFrom (), nf);
+} else {
+throw e;
+}
+}
+}if (ascending) {
+c.setName (nodename);
+c.dist = (this.$HasDistances) ? distance : DefDistance;
+c.setBootstrap ((this.$HasBootstrap) ? bootstrap : DefBootstrap);
+if (c === realroot) {
+this.RootHasDistance = nodehasdistance;
+}this.parseNHXNodeProps (c, commentString2);
+commentString2 = null;
+} else {
+var newnode =  new jalview.datamodel.SequenceNode (null, c, nodename, (this.$HasDistances) ? distance : DefDistance, (this.$HasBootstrap) ? bootstrap : DefBootstrap, false);
+this.parseNHXNodeProps (c, commentString2);
+commentString2 = null;
+if (c.right () == null) {
+c.setRight (newnode);
+} else {
+if (c.left () == null) {
+c.setLeft (newnode);
+} else {
+var newdummy =  new jalview.datamodel.SequenceNode (null, c, null, (this.$HasDistances ? 0 : DefDistance), 0, true);
+newdummy.SetChildren (c.left (), newnode);
+c.setLeft (newdummy);
+}}}if (ascending) {
+c = c.AscendTree ();
+if ((d > -1) && (c == null)) {
+Error = this.ErrorStringrange (Error, "File broke algorithm: Lost place in tree (is there an extra ')' ?)", 7, fcp, nf);
+}}if (nf.charAt (fcp) == ')') {
+d--;
+ascending = true;
+} else {
+if (nf.charAt (fcp) == ',') {
+if (ascending) {
+ascending = false;
+} else {
+if ((c.left () != null) && (!c.left ().isLeaf ())) {
+c = c.left ();
+}}}}nodename = null;
+distance = DefDistance;
+bootstrap = DefBootstrap;
+commentString2 = null;
+parsednodename = false;
+}
+if (nextcp == 0) {
+ncp = cp = fcp + 1;
+} else {
+cp = nextcp;
+nextcp = 0;
+}}
+if (Error != null) {
+throw ( new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.newfile",  Clazz.newArray (-1, [Error.toString ()]))));
+}if (this.root == null) {
+throw ( new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.newfile",  Clazz.newArray (-1, [jalview.util.MessageManager.getString ("label.no_tree_read_in")]))));
+}this.root = this.root.right ().detach ();
+if (!this.RootHasDistance) {
+this.root.dist = (this.$HasDistances) ? 0 : DefDistance;
+}});
+Clazz.defineMethod (c$, "parseNHXNodeProps", 
+($fz = function (c, commentString) {
+if (commentString != null && commentString.startsWith ("&&NHX")) {
+var st =  new java.util.StringTokenizer (commentString.substring (5), ":");
+while (st.hasMoreTokens ()) {
+var tok = st.nextToken ();
+var colpos = tok.indexOf ("=");
+if (colpos > -1) {
+var code = tok.substring (0, colpos);
+var value = tok.substring (colpos + 1);
+try {
+if (code.toLowerCase ().equals ("b")) {
+var v = -1;
+var iv =  new Float (value);
+v = iv.intValue ();
+c.setBootstrap (v);
+this.$HasBootstrap = true;
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Couldn't parse code '" + code + "' = '" + value + "'");
+e.printStackTrace (System.err);
+} else {
+throw e;
+}
+}
+}}
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceNode,~S");
+Clazz.defineMethod (c$, "getTree", 
+function () {
+return this.root;
+});
+Clazz.defineMethod (c$, "print", 
+function () {
+{
+var tf =  new StringBuffer ();
+this.print (tf, this.root);
+return (tf.append (";").toString ());
+}});
+Clazz.defineMethod (c$, "print", 
+function (withbootstraps) {
+{
+var boots = this.$HasBootstrap;
+this.$HasBootstrap = withbootstraps;
+var rv = this.print ();
+this.$HasBootstrap = boots;
+return rv;
+}}, "~B");
+Clazz.defineMethod (c$, "print", 
+function (withbootstraps, withdists) {
+{
+var dists = this.$HasDistances;
+this.$HasDistances = withdists;
+var rv = this.print (withbootstraps);
+this.$HasDistances = dists;
+return rv;
+}}, "~B,~B");
+Clazz.defineMethod (c$, "print", 
+function (withbootstraps, withdists, printRootInfo) {
+{
+var rootinfo = printRootInfo;
+this.printRootInfo = printRootInfo;
+var rv = this.print (withbootstraps, withdists);
+this.printRootInfo = rootinfo;
+return rv;
+}}, "~B,~B,~B");
+Clazz.defineMethod (c$, "getQuoteChar", 
+function () {
+return this.QuoteChar;
+});
+Clazz.defineMethod (c$, "setQuoteChar", 
+function (c) {
+var old = this.QuoteChar;
+this.QuoteChar = c;
+return old;
+}, "~S");
+Clazz.defineMethod (c$, "nodeName", 
+($fz = function (name) {
+if (this.NodeSafeName[0].search (name)) {
+return this.QuoteChar + this.NodeSafeName[1].replaceAll (name) + this.QuoteChar;
+} else {
+return this.NodeSafeName[2].replaceAll (name);
+}}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "printNodeField", 
+($fz = function (c) {
+return ((c.getName () == null) ? "" : this.nodeName (c.getName ())) + ((this.$HasBootstrap) ? ((c.getBootstrap () > -1) ? ((c.getName () != null ? " " : "") + c.getBootstrap ()) : "") : "") + ((this.$HasDistances) ? (":" + c.dist) : "");
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceNode");
+Clazz.defineMethod (c$, "printRootField", 
+($fz = function (root) {
+return (this.printRootInfo) ? (((root.getName () == null) ? "" : this.nodeName (root.getName ())) + ((this.$HasBootstrap) ? ((root.getBootstrap () > -1) ? ((root.getName () != null ? " " : "") + +root.getBootstrap ()) : "") : "") + ((this.RootHasDistance) ? (":" + root.dist) : "")) : "";
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.SequenceNode");
+Clazz.defineMethod (c$, "print", 
+function (tf, root) {
+if (root != null) {
+if (root.isLeaf () && this.printRootInfo) {
+tf.append (this.printRootField (root));
+} else {
+if (root.isDummy ()) {
+this._print (tf, root.right ());
+this._print (tf, root.left ());
+} else {
+tf.append ("(");
+this._print (tf, root.right ());
+if (root.left () != null) {
+tf.append (",");
+}this._print (tf, root.left ());
+tf.append (")" + this.printRootField (root));
+}}}}, "StringBuffer,jalview.datamodel.SequenceNode");
+Clazz.defineMethod (c$, "_print", 
+function (tf, c) {
+if (c != null) {
+if (c.isLeaf ()) {
+tf.append (this.printNodeField (c));
+} else {
+if (c.isDummy ()) {
+this._print (tf, c.left ());
+if (c.left () != null) {
+tf.append (",");
+}this._print (tf, c.right ());
+} else {
+tf.append ("(");
+this._print (tf, c.right ());
+if (c.left () != null) {
+tf.append (",");
+}this._print (tf, c.left ());
+tf.append (")" + this.printNodeField (c));
+}}}}, "StringBuffer,jalview.datamodel.SequenceNode");
+c$.main = Clazz.defineMethod (c$, "main", 
+function (args) {
+try {
+if (args == null || args.length != 1) {
+System.err.println ("Takes one argument - file name of a newick tree file.");
+System.exit (0);
+}var fn =  new java.io.File (args[0]);
+var newickfile =  new StringBuffer ();
+var treefile =  new java.io.BufferedReader ( new java.io.FileReader (fn));
+var l;
+while ((l = treefile.readLine ()) != null) {
+newickfile.append (l);
+}
+treefile.close ();
+System.out.println ("Read file :\n");
+var trf =  new jalview.io.NewickFile (args[0], "File");
+trf.parse ();
+System.out.println ("Original file :\n");
+var nonl = jalview.jsdev.RegExp.newRegex (["\n+", ""]);
+System.out.println (nonl.replaceAll (newickfile.toString ()) + "\n");
+System.out.println ("Parsed file.\n");
+System.out.println ("Default output type for original input.\n");
+System.out.println (trf.print ());
+System.out.println ("Without bootstraps.\n");
+System.out.println (trf.print (false));
+System.out.println ("Without distances.\n");
+System.out.println (trf.print (true, false));
+System.out.println ("Without bootstraps but with distanecs.\n");
+System.out.println (trf.print (false, true));
+System.out.println ("Without bootstraps or distanecs.\n");
+System.out.println (trf.print (false, false));
+System.out.println ("With bootstraps and with distances.\n");
+System.out.println (trf.print (true, true));
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+System.err.println ("Exception\n" + e);
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+}, "~A");
+});
index 939524f..6d17207 100644 (file)
Binary files a/bin/jalview/io/PIRFile.class and b/bin/jalview/io/PIRFile.class differ
index fe50c34..f14a6ea 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (["jalview.io.AlignFile", "java.util.Vector"], "jalview.io.PIRFile", ["jalview.io.ModellerDescription", "jalview.util.Comparison", "java.lang.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.words = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io, "PIRFile", jalview.io.AlignFile);\r
-Clazz.prepareFields (c$, function () {\r
-this.words =  new java.util.Vector ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.io.PIRFile, []);\r
-});\r
-Clazz.overrideMethod (c$, "parse", \r
-function () {\r
-var sequence;\r
-var line = null;\r
-var md;\r
-while ((line = this.nextLine ()) != null) {\r
-if (line.length == 0) {\r
-continue;\r
-}if (line.indexOf ("C;") == 0 || line.indexOf ("#") == 0) {\r
-continue;\r
-}var newSeq = this.parseId (line.substring (line.indexOf (";") + 1));\r
-sequence =  new StringBuffer ();\r
-newSeq.setDescription (this.nextLine ());\r
-var starFound = false;\r
-while (!starFound) {\r
-line = this.nextLine ();\r
-sequence.append (line);\r
-if (line == null) {\r
-break;\r
-}if (line.indexOf ("*") > -1) {\r
-starFound = true;\r
-}}\r
-if (sequence.length () > 0) {\r
-sequence.setLength (sequence.length () - 1);\r
-newSeq.setSequence (sequence.toString ());\r
-this.seqs.addElement (newSeq);\r
-md =  new jalview.io.ModellerDescription (newSeq.getDescription ());\r
-md.updateSequenceI (newSeq);\r
-}}\r
-});\r
-Clazz.defineMethod (c$, "print", \r
-function () {\r
-return this.print (this.getSeqsAsArray ());\r
-});\r
-Clazz.defineMethod (c$, "print", \r
-function (s) {\r
-var is_NA = jalview.util.Comparison.isNucleotide (s);\r
-var len = 72;\r
-var out =  new StringBuffer ();\r
-var i = 0;\r
-var md;\r
-while ((i < s.length) && (s[i] != null)) {\r
-var seq = s[i].getSequenceAsString ();\r
-seq = seq + "*";\r
-if (is_NA) {\r
-out.append (">N1;" + s[i].getName ());\r
-out.append (this.newline);\r
-if (s[i].getDescription () == null) {\r
-out.append (s[i].getName () + " " + (s[i].getEnd () - s[i].getStart () + 1));\r
-out.append (is_NA ? " bases" : " residues");\r
-out.append (this.newline);\r
-} else {\r
-out.append (s[i].getDescription ());\r
-out.append (this.newline);\r
-}} else {\r
-if (jalview.io.PIRFile.useModellerOutput) {\r
-out.append (">P1;" + s[i].getName ());\r
-out.append (this.newline);\r
-md =  new jalview.io.ModellerDescription (s[i]);\r
-out.append (md.getDescriptionLine ());\r
-out.append (this.newline);\r
-} else {\r
-out.append (">P1;" + this.printId (s[i]));\r
-out.append (this.newline);\r
-if (s[i].getDescription () != null) {\r
-out.append (s[i].getDescription ());\r
-out.append (this.newline);\r
-} else {\r
-out.append (s[i].getName () + " " + (s[i].getEnd () - s[i].getStart () + 1) + " residues");\r
-out.append (this.newline);\r
-}}}var nochunks = (Clazz.doubleToInt (seq.length / len)) + 1;\r
-for (var j = 0; j < nochunks; j++) {\r
-var start = j * len;\r
-var end = start + len;\r
-if (end < seq.length) {\r
-out.append (seq.substring (start, end));\r
-out.append (this.newline);\r
-} else if (start < seq.length) {\r
-out.append (seq.substring (start));\r
-out.append (this.newline);\r
-}}\r
-i++;\r
-}\r
-return out.toString ();\r
-}, "~A");\r
-Clazz.defineStatics (c$,\r
-"useModellerOutput", false);\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (["jalview.io.AlignFile", "java.util.Vector"], "jalview.io.PIRFile", ["jalview.io.ModellerDescription", "jalview.util.Comparison", "java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.words = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io, "PIRFile", jalview.io.AlignFile);
+Clazz.prepareFields (c$, function () {
+this.words =  new java.util.Vector ();
+});
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.io.PIRFile, []);
+});
+Clazz.overrideMethod (c$, "parse", 
+function () {
+var sequence;
+var line = null;
+var md;
+while ((line = this.nextLine ()) != null) {
+if (line.length == 0) {
+continue;
+}if (line.indexOf ("C;") == 0 || line.indexOf ("#") == 0) {
+continue;
+}var newSeq = this.parseId (line.substring (line.indexOf (";") + 1));
+sequence =  new StringBuffer ();
+newSeq.setDescription (this.nextLine ());
+var starFound = false;
+while (!starFound) {
+line = this.nextLine ();
+sequence.append (line);
+if (line == null) {
+break;
+}if (line.indexOf ("*") > -1) {
+starFound = true;
+}}
+if (sequence.length () > 0) {
+sequence.setLength (sequence.length () - 1);
+newSeq.setSequence (sequence.toString ());
+this.seqs.addElement (newSeq);
+md =  new jalview.io.ModellerDescription (newSeq.getDescription ());
+md.updateSequenceI (newSeq);
+}}
+});
+Clazz.defineMethod (c$, "print", 
+function () {
+return this.print (this.getSeqsAsArray ());
+});
+Clazz.defineMethod (c$, "print", 
+function (s) {
+var is_NA = jalview.util.Comparison.isNucleotide (s);
+var len = 72;
+var out =  new StringBuffer ();
+var i = 0;
+var md;
+while ((i < s.length) && (s[i] != null)) {
+var seq = s[i].getSequenceAsString ();
+seq = seq + "*";
+if (is_NA) {
+out.append (">N1;" + s[i].getName ());
+out.append (this.newline);
+if (s[i].getDescription () == null) {
+out.append (s[i].getName () + " " + (s[i].getEnd () - s[i].getStart () + 1));
+out.append (is_NA ? " bases" : " residues");
+out.append (this.newline);
+} else {
+out.append (s[i].getDescription ());
+out.append (this.newline);
+}} else {
+if (jalview.io.PIRFile.useModellerOutput) {
+out.append (">P1;" + s[i].getName ());
+out.append (this.newline);
+md =  new jalview.io.ModellerDescription (s[i]);
+out.append (md.getDescriptionLine ());
+out.append (this.newline);
+} else {
+out.append (">P1;" + this.printId (s[i]));
+out.append (this.newline);
+if (s[i].getDescription () != null) {
+out.append (s[i].getDescription ());
+out.append (this.newline);
+} else {
+out.append (s[i].getName () + " " + (s[i].getEnd () - s[i].getStart () + 1) + " residues");
+out.append (this.newline);
+}}}var nochunks = (Clazz.doubleToInt (seq.length / len)) + 1;
+for (var j = 0; j < nochunks; j++) {
+var start = j * len;
+var end = start + len;
+if (end < seq.length) {
+out.append (seq.substring (start, end));
+out.append (this.newline);
+} else if (start < seq.length) {
+out.append (seq.substring (start));
+out.append (this.newline);
+}}
+i++;
+}
+return out.toString ();
+}, "~A");
+Clazz.defineStatics (c$,
+"useModellerOutput", false);
+});
index c094356..47e9cc1 100644 (file)
@@ -1,76 +1,76 @@
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (["jalview.io.AlignFile"], "jalview.io.PfamFile", ["jalview.util.Format", "$.MessageManager", "java.io.IOException", "java.lang.StringBuffer", "java.util.Hashtable", "$.StringTokenizer", "$.Vector"], function () {\r
-c$ = Clazz.declareType (jalview.io, "PfamFile", jalview.io.AlignFile);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.io.PfamFile, []);\r
-});\r
-Clazz.overrideMethod (c$, "parse", \r
-function () {\r
-var i = 0;\r
-var line;\r
-var seqhash =  new java.util.Hashtable ();\r
-var headers =  new java.util.Vector ();\r
-while ((line = this.nextLine ()) != null) {\r
-if (line.indexOf (" ") != 0) {\r
-if (line.indexOf ("#") != 0) {\r
-var str =  new java.util.StringTokenizer (line, " ");\r
-var id = "";\r
-if (str.hasMoreTokens ()) {\r
-id = str.nextToken ();\r
-var tempseq;\r
-if (seqhash.containsKey (id)) {\r
-tempseq = seqhash.get (id);\r
-} else {\r
-tempseq =  new StringBuffer ();\r
-seqhash.put (id, tempseq);\r
-}if (!(headers.contains (id))) {\r
-headers.addElement (id);\r
-}if (str.hasMoreTokens ()) {\r
-tempseq.append (str.nextToken ());\r
-}}}}}\r
-this.noSeqs = headers.size ();\r
-if (this.noSeqs < 1) {\r
-throw  new java.io.IOException (jalview.util.MessageManager.getString ("exception.pfam_no_sequences_found"));\r
-}for (i = 0; i < headers.size (); i++) {\r
-if (seqhash.get (headers.elementAt (i)) != null) {\r
-if (this.maxLength < seqhash.get (headers.elementAt (i)).toString ().length) {\r
-this.maxLength = seqhash.get (headers.elementAt (i)).toString ().length;\r
-}var newSeq = this.parseId (headers.elementAt (i).toString ());\r
-newSeq.setSequence (seqhash.get (headers.elementAt (i).toString ()).toString ());\r
-this.seqs.addElement (newSeq);\r
-} else {\r
-System.err.println ("PFAM File reader: Can't find sequence for " + headers.elementAt (i));\r
-}}\r
-});\r
-Clazz.defineMethod (c$, "print", \r
-function (s) {\r
-var out =  new StringBuffer ("");\r
-var max = 0;\r
-var maxid = 0;\r
-var i = 0;\r
-while ((i < s.length) && (s[i] != null)) {\r
-var tmp = this.printId (s[i]);\r
-if (s[i].getSequence ().length > max) {\r
-max = s[i].getSequence ().length;\r
-}if (tmp.length > maxid) {\r
-maxid = tmp.length;\r
-}i++;\r
-}\r
-if (maxid < 15) {\r
-maxid = 15;\r
-}var j = 0;\r
-while ((j < s.length) && (s[j] != null)) {\r
-out.append ( new jalview.util.Format ("%-" + maxid + "s").form (this.printId (s[j]) + " "));\r
-out.append (s[j].getSequenceAsString ());\r
-out.append (this.newline);\r
-j++;\r
-}\r
-out.append (this.newline);\r
-return out.toString ();\r
-}, "~A");\r
-Clazz.defineMethod (c$, "print", \r
-function () {\r
-return this.print (this.getSeqsAsArray ());\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (["jalview.io.AlignFile"], "jalview.io.PfamFile", ["jalview.util.Format", "$.MessageManager", "java.io.IOException", "java.lang.StringBuffer", "java.util.Hashtable", "$.StringTokenizer", "$.Vector"], function () {
+c$ = Clazz.declareType (jalview.io, "PfamFile", jalview.io.AlignFile);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.io.PfamFile, []);
+});
+Clazz.overrideMethod (c$, "parse", 
+function () {
+var i = 0;
+var line;
+var seqhash =  new java.util.Hashtable ();
+var headers =  new java.util.Vector ();
+while ((line = this.nextLine ()) != null) {
+if (line.indexOf (" ") != 0) {
+if (line.indexOf ("#") != 0) {
+var str =  new java.util.StringTokenizer (line, " ");
+var id = "";
+if (str.hasMoreTokens ()) {
+id = str.nextToken ();
+var tempseq;
+if (seqhash.containsKey (id)) {
+tempseq = seqhash.get (id);
+} else {
+tempseq =  new StringBuffer ();
+seqhash.put (id, tempseq);
+}if (!(headers.contains (id))) {
+headers.addElement (id);
+}if (str.hasMoreTokens ()) {
+tempseq.append (str.nextToken ());
+}}}}}
+this.noSeqs = headers.size ();
+if (this.noSeqs < 1) {
+throw  new java.io.IOException (jalview.util.MessageManager.getString ("exception.pfam_no_sequences_found"));
+}for (i = 0; i < headers.size (); i++) {
+if (seqhash.get (headers.elementAt (i)) != null) {
+if (this.maxLength < seqhash.get (headers.elementAt (i)).toString ().length) {
+this.maxLength = seqhash.get (headers.elementAt (i)).toString ().length;
+}var newSeq = this.parseId (headers.elementAt (i).toString ());
+newSeq.setSequence (seqhash.get (headers.elementAt (i).toString ()).toString ());
+this.seqs.addElement (newSeq);
+} else {
+System.err.println ("PFAM File reader: Can't find sequence for " + headers.elementAt (i));
+}}
+});
+Clazz.defineMethod (c$, "print", 
+function (s) {
+var out =  new StringBuffer ("");
+var max = 0;
+var maxid = 0;
+var i = 0;
+while ((i < s.length) && (s[i] != null)) {
+var tmp = this.printId (s[i]);
+if (s[i].getSequence ().length > max) {
+max = s[i].getSequence ().length;
+}if (tmp.length > maxid) {
+maxid = tmp.length;
+}i++;
+}
+if (maxid < 15) {
+maxid = 15;
+}var j = 0;
+while ((j < s.length) && (s[j] != null)) {
+out.append ( new jalview.util.Format ("%-" + maxid + "s").form (this.printId (s[j]) + " "));
+out.append (s[j].getSequenceAsString ());
+out.append (this.newline);
+j++;
+}
+out.append (this.newline);
+return out.toString ();
+}, "~A");
+Clazz.defineMethod (c$, "print", 
+function () {
+return this.print (this.getSeqsAsArray ());
+});
+});
index 74e851f..0cd22ea 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (["jalview.io.AlignFile"], "jalview.io.PhylipFile", ["java.io.IOException", "java.lang.StringBuffer"], function () {\r
-c$ = Clazz.declareType (jalview.io, "PhylipFile", jalview.io.AlignFile);\r
-Clazz.overrideMethod (c$, "parse", \r
-function () {\r
-try {\r
-var line = this.nextLine ();\r
-var lineElements = line.trim ().$plit ("\\s+");\r
-if (lineElements.length < 2) {\r
-throw  new java.io.IOException ("First line must contain the number of specifies and number of characters");\r
-}var numberSpecies = Integer.parseInt (lineElements[0]);\r
-var numberCharacters = Integer.parseInt (lineElements[1]);\r
-if (numberSpecies <= 0) {\r
-return;\r
-}var sequenceElements =  new Array (numberSpecies);\r
-var sequences =  new Array (numberSpecies);\r
-for (var i = 0; i < numberSpecies; i++) {\r
-line = this.nextLine ();\r
-var potentialName = line.substring (0, 10);\r
-var tabIndex = potentialName.indexOf ('\t');\r
-if (tabIndex == -1) {\r
-sequenceElements[i] = this.parseId (this.validateName (potentialName));\r
-sequences[i] =  new StringBuffer (this.removeWhitespace (line.substring (10)));\r
-} else {\r
-sequenceElements[i] = this.parseId (this.validateName (potentialName.substring (0, tabIndex)));\r
-sequences[i] =  new StringBuffer (this.removeWhitespace (line.substring (tabIndex)));\r
-}}\r
-if ((sequences[0]).length () != numberCharacters) {\r
-var i = 0;\r
-for (line = this.nextLine (); line != null; line = this.nextLine ()) {\r
-if (line.length > 0) {\r
-sequences[i++].append (this.removeWhitespace (line));\r
-}if (i == sequences.length) {\r
-i = 0;\r
-}}\r
-}for (var i = 0; i < numberSpecies; i++) {\r
-if (sequences[i].length () != numberCharacters) {\r
-throw  new java.io.IOException (sequenceElements[i].getName () + " sequence is incorrect length - should be " + numberCharacters + " but is " + sequences[i].length ());\r
-}sequenceElements[i].setSequence (sequences[i].toString ());\r
-this.seqs.add (sequenceElements[i]);\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-System.err.println ("Exception parsing PHYLIP file " + e);\r
-e.printStackTrace (System.err);\r
-throw e;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-});\r
-Clazz.defineMethod (c$, "removeWhitespace", \r
-($fz = function (txt) {\r
-return txt.replaceAll ("\\s*", "");\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "validateName", \r
-($fz = function (name) {\r
-var invalidCharacters =  Clazz.newCharArray (-1, ['(', ')', '[', ']', ':', ';', ',']);\r
-for (var c, $c = 0, $$c = invalidCharacters; $c < $$c.length && ((c = $$c[$c]) || true); $c++) {\r
-if (name.indexOf (c) > -1) {\r
-throw  new java.io.IOException ("Species name contains illegal character " + c);\r
-}}\r
-return name;\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.overrideMethod (c$, "print", \r
-function () {\r
-var sb =  new StringBuffer (Integer.toString (this.seqs.size ()));\r
-sb.append (" ");\r
-sb.append ((this.seqs.size () > 0) ? Integer.toString (this.seqs.get (0).getSequence ().length) : "0").append (this.newline);\r
-var sequential = false;\r
-var numInterleavedColumns = 60;\r
-var sequenceLength = 0;\r
-for (var s, $s = this.seqs.iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {\r
-var name = s.getName ();\r
-if (name.length > 10) {\r
-name = name.substring (0, 10);\r
-} else {\r
-name = String.format ("%1$-10s", [s.getName ()]);\r
-}sb.append (name);\r
-if (sequential) {\r
-sb.append (s.getSequence ());\r
-} else {\r
-sequenceLength = s.getSequence ().length;\r
-sb.append (s.getSequence (0, Math.min (numInterleavedColumns, sequenceLength)));\r
-}sb.append (this.newline);\r
-}\r
-if (!sequential && sequenceLength > numInterleavedColumns) {\r
-var numMatrics = Clazz.doubleToInt (sequenceLength / numInterleavedColumns);\r
-if ((sequenceLength % numInterleavedColumns) > 0) {\r
-numMatrics++;\r
-}for (var i = 1; i < numMatrics; i++) {\r
-sb.append (this.newline);\r
-var start = i * numInterleavedColumns;\r
-for (var s, $s = this.seqs.iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {\r
-sb.append (s.getSequence (start, Math.min (start + numInterleavedColumns, sequenceLength))).append (this.newline);\r
-}\r
-}\r
-}return sb.toString ();\r
-});\r
-Clazz.defineStatics (c$,\r
-"FILE_EXT", "phy",\r
-"FILE_DESC", "PHYLIP");\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (["jalview.io.AlignFile"], "jalview.io.PhylipFile", ["java.io.IOException", "java.lang.StringBuffer"], function () {
+c$ = Clazz.declareType (jalview.io, "PhylipFile", jalview.io.AlignFile);
+Clazz.overrideMethod (c$, "parse", 
+function () {
+try {
+var line = this.nextLine ();
+var lineElements = line.trim ().$plit ("\\s+");
+if (lineElements.length < 2) {
+throw  new java.io.IOException ("First line must contain the number of specifies and number of characters");
+}var numberSpecies = Integer.parseInt (lineElements[0]);
+var numberCharacters = Integer.parseInt (lineElements[1]);
+if (numberSpecies <= 0) {
+return;
+}var sequenceElements =  new Array (numberSpecies);
+var sequences =  new Array (numberSpecies);
+for (var i = 0; i < numberSpecies; i++) {
+line = this.nextLine ();
+var potentialName = line.substring (0, 10);
+var tabIndex = potentialName.indexOf ('\t');
+if (tabIndex == -1) {
+sequenceElements[i] = this.parseId (this.validateName (potentialName));
+sequences[i] =  new StringBuffer (this.removeWhitespace (line.substring (10)));
+} else {
+sequenceElements[i] = this.parseId (this.validateName (potentialName.substring (0, tabIndex)));
+sequences[i] =  new StringBuffer (this.removeWhitespace (line.substring (tabIndex)));
+}}
+if ((sequences[0]).length () != numberCharacters) {
+var i = 0;
+for (line = this.nextLine (); line != null; line = this.nextLine ()) {
+if (line.length > 0) {
+sequences[i++].append (this.removeWhitespace (line));
+}if (i == sequences.length) {
+i = 0;
+}}
+}for (var i = 0; i < numberSpecies; i++) {
+if (sequences[i].length () != numberCharacters) {
+throw  new java.io.IOException (sequenceElements[i].getName () + " sequence is incorrect length - should be " + numberCharacters + " but is " + sequences[i].length ());
+}sequenceElements[i].setSequence (sequences[i].toString ());
+this.seqs.add (sequenceElements[i]);
+}
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+System.err.println ("Exception parsing PHYLIP file " + e);
+e.printStackTrace (System.err);
+throw e;
+} else {
+throw e;
+}
+}
+});
+Clazz.defineMethod (c$, "removeWhitespace", 
+($fz = function (txt) {
+return txt.replaceAll ("\\s*", "");
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "validateName", 
+($fz = function (name) {
+var invalidCharacters =  Clazz.newCharArray (-1, ['(', ')', '[', ']', ':', ';', ',']);
+for (var c, $c = 0, $$c = invalidCharacters; $c < $$c.length && ((c = $$c[$c]) || true); $c++) {
+if (name.indexOf (c) > -1) {
+throw  new java.io.IOException ("Species name contains illegal character " + c);
+}}
+return name;
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.overrideMethod (c$, "print", 
+function () {
+var sb =  new StringBuffer (Integer.toString (this.seqs.size ()));
+sb.append (" ");
+sb.append ((this.seqs.size () > 0) ? Integer.toString (this.seqs.get (0).getSequence ().length) : "0").append (this.newline);
+var sequential = false;
+var numInterleavedColumns = 60;
+var sequenceLength = 0;
+for (var s, $s = this.seqs.iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {
+var name = s.getName ();
+if (name.length > 10) {
+name = name.substring (0, 10);
+} else {
+name = String.format ("%1$-10s", [s.getName ()]);
+}sb.append (name);
+if (sequential) {
+sb.append (s.getSequence ());
+} else {
+sequenceLength = s.getSequence ().length;
+sb.append (s.getSequence (0, Math.min (numInterleavedColumns, sequenceLength)));
+}sb.append (this.newline);
+}
+if (!sequential && sequenceLength > numInterleavedColumns) {
+var numMatrics = Clazz.doubleToInt (sequenceLength / numInterleavedColumns);
+if ((sequenceLength % numInterleavedColumns) > 0) {
+numMatrics++;
+}for (var i = 1; i < numMatrics; i++) {
+sb.append (this.newline);
+var start = i * numInterleavedColumns;
+for (var s, $s = this.seqs.iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {
+sb.append (s.getSequence (start, Math.min (start + numInterleavedColumns, sequenceLength))).append (this.newline);
+}
+}
+}return sb.toString ();
+});
+Clazz.defineStatics (c$,
+"FILE_EXT", "phy",
+"FILE_DESC", "PHYLIP");
+});
index 690574c..d75d06b 100644 (file)
Binary files a/bin/jalview/io/PileUpfile.class and b/bin/jalview/io/PileUpfile.class differ
index b8bb68c..a6effa1 100644 (file)
@@ -1,82 +1,82 @@
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (["jalview.io.MSFfile"], "jalview.io.PileUpfile", ["jalview.util.Format", "java.lang.StringBuffer"], function () {\r
-c$ = Clazz.declareType (jalview.io, "PileUpfile", jalview.io.MSFfile);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.io.PileUpfile, []);\r
-});\r
-Clazz.defineMethod (c$, "print", \r
-function () {\r
-return this.print (this.getSeqsAsArray ());\r
-});\r
-Clazz.defineMethod (c$, "print", \r
-function (s) {\r
-var out =  new StringBuffer ("PileUp");\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-var max = 0;\r
-var maxid = 0;\r
-var i = 0;\r
-var bigChecksum = 0;\r
-var checksums =  Clazz.newIntArray (s.length, 0);\r
-while (i < s.length) {\r
-checksums[i] = this.checkSum (s[i].getSequenceAsString ());\r
-bigChecksum += checksums[i];\r
-i++;\r
-}\r
-out.append ("   MSF: " + s[0].getSequence ().length + "   Type: P    Check:  " + bigChecksum % 10000 + "   ..");\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-i = 0;\r
-while ((i < s.length) && (s[i] != null)) {\r
-var seq = s[i].getSequenceAsString ();\r
-out.append (" Name: " + this.printId (s[i]) + " oo  Len:  " + seq.length + "  Check:  " + checksums[i] + "  Weight:  1.00");\r
-out.append (this.newline);\r
-if (seq.length > max) {\r
-max = seq.length;\r
-}if (s[i].getName ().length > maxid) {\r
-maxid = s[i].getName ().length;\r
-}i++;\r
-}\r
-if (maxid < 10) {\r
-maxid = 10;\r
-}maxid++;\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-out.append ("//");\r
-out.append (this.newline);\r
-out.append (this.newline);\r
-var len = 50;\r
-var nochunks = (Clazz.doubleToInt (max / len)) + 1;\r
-if ((max % len) == 0) {\r
-nochunks--;\r
-}for (i = 0; i < nochunks; i++) {\r
-var j = 0;\r
-while ((j < s.length) && (s[j] != null)) {\r
-var name = this.printId (s[j]);\r
-out.append ( new jalview.util.Format ("%-" + maxid + "s").form (name + " "));\r
-for (var k = 0; k < 5; k++) {\r
-var start = (i * 50) + (k * 10);\r
-var end = start + 10;\r
-if ((end < s[j].getSequence ().length) && (start < s[j].getSequence ().length)) {\r
-out.append (s[j].getSequence (start, end));\r
-if (k < 4) {\r
-out.append (" ");\r
-} else {\r
-out.append (this.newline);\r
-}} else {\r
-if (start < s[j].getSequence ().length) {\r
-out.append (s[j].getSequenceAsString ().substring (start));\r
-out.append (this.newline);\r
-} else {\r
-if (k == 0) {\r
-out.append (this.newline);\r
-}}}}\r
-j++;\r
-}\r
-out.append (this.newline);\r
-}\r
-return out.toString ();\r
-}, "~A");\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (["jalview.io.MSFfile"], "jalview.io.PileUpfile", ["jalview.util.Format", "java.lang.StringBuffer"], function () {
+c$ = Clazz.declareType (jalview.io, "PileUpfile", jalview.io.MSFfile);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.io.PileUpfile, []);
+});
+Clazz.defineMethod (c$, "print", 
+function () {
+return this.print (this.getSeqsAsArray ());
+});
+Clazz.defineMethod (c$, "print", 
+function (s) {
+var out =  new StringBuffer ("PileUp");
+out.append (this.newline);
+out.append (this.newline);
+var max = 0;
+var maxid = 0;
+var i = 0;
+var bigChecksum = 0;
+var checksums =  Clazz.newIntArray (s.length, 0);
+while (i < s.length) {
+checksums[i] = this.checkSum (s[i].getSequenceAsString ());
+bigChecksum += checksums[i];
+i++;
+}
+out.append ("   MSF: " + s[0].getSequence ().length + "   Type: P    Check:  " + bigChecksum % 10000 + "   ..");
+out.append (this.newline);
+out.append (this.newline);
+out.append (this.newline);
+i = 0;
+while ((i < s.length) && (s[i] != null)) {
+var seq = s[i].getSequenceAsString ();
+out.append (" Name: " + this.printId (s[i]) + " oo  Len:  " + seq.length + "  Check:  " + checksums[i] + "  Weight:  1.00");
+out.append (this.newline);
+if (seq.length > max) {
+max = seq.length;
+}if (s[i].getName ().length > maxid) {
+maxid = s[i].getName ().length;
+}i++;
+}
+if (maxid < 10) {
+maxid = 10;
+}maxid++;
+out.append (this.newline);
+out.append (this.newline);
+out.append ("//");
+out.append (this.newline);
+out.append (this.newline);
+var len = 50;
+var nochunks = (Clazz.doubleToInt (max / len)) + 1;
+if ((max % len) == 0) {
+nochunks--;
+}for (i = 0; i < nochunks; i++) {
+var j = 0;
+while ((j < s.length) && (s[j] != null)) {
+var name = this.printId (s[j]);
+out.append ( new jalview.util.Format ("%-" + maxid + "s").form (name + " "));
+for (var k = 0; k < 5; k++) {
+var start = (i * 50) + (k * 10);
+var end = start + 10;
+if ((end < s[j].getSequence ().length) && (start < s[j].getSequence ().length)) {
+out.append (s[j].getSequence (start, end));
+if (k < 4) {
+out.append (" ");
+} else {
+out.append (this.newline);
+}} else {
+if (start < s[j].getSequence ().length) {
+out.append (s[j].getSequenceAsString ().substring (start));
+out.append (this.newline);
+} else {
+if (k == 0) {
+out.append (this.newline);
+}}}}
+j++;
+}
+out.append (this.newline);
+}
+return out.toString ();
+}, "~A");
+});
index c84960c..53c67b0 100644 (file)
Binary files a/bin/jalview/io/SequenceAnnotationReport.class and b/bin/jalview/io/SequenceAnnotationReport.class differ
index 4ab2aa6..889211b 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (null, "jalview.io.SequenceAnnotationReport", ["jalview.util.DBRefUtils", "$.UrlLink", "java.lang.Float", "java.util.ArrayList"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.linkImageURL = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io, "SequenceAnnotationReport");\r
-Clazz.makeConstructor (c$, \r
-function (linkImageURL) {\r
-this.linkImageURL = linkImageURL;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "appendFeatures", \r
-function (tooltipText2, rpos, features) {\r
-this.appendFeatures (tooltipText2, rpos, features, null);\r
-}, "StringBuffer,~N,java.util.List");\r
-Clazz.defineMethod (c$, "appendFeatures", \r
-function (tooltipText2, rpos, features, minmax) {\r
-var tmpString;\r
-if (features != null) {\r
-for (var feature, $feature = features.iterator (); $feature.hasNext () && ((feature = $feature.next ()) || true);) {\r
-if (feature.getType ().equals ("disulfide bond")) {\r
-if (feature.getBegin () == rpos || feature.getEnd () == rpos) {\r
-if (tooltipText2.length () > 6) {\r
-tooltipText2.append ("<br>");\r
-}tooltipText2.append ("disulfide bond " + feature.getBegin () + ":" + feature.getEnd ());\r
-}} else {\r
-if (tooltipText2.length () > 6) {\r
-tooltipText2.append ("<br>");\r
-}var linkOnly = feature.getValue ("linkonly") != null;\r
-if (!linkOnly) {\r
-tooltipText2.append (feature.getType () + " ");\r
-if (rpos != 0) {\r
-tooltipText2.append (feature.begin);\r
-}if (feature.begin != feature.end) {\r
-tooltipText2.append (" " + feature.end);\r
-}if (feature.getDescription () != null && !feature.description.equals (feature.getType ())) {\r
-tmpString = feature.getDescription ();\r
-var tmp2up = tmpString.toUpperCase ();\r
-var startTag = tmp2up.indexOf ("<HTML>");\r
-if (startTag > -1) {\r
-tmpString = tmpString.substring (startTag + 6);\r
-tmp2up = tmp2up.substring (startTag + 6);\r
-}var endTag = tmp2up.indexOf ("</BODY>");\r
-if (endTag > -1) {\r
-tmpString = tmpString.substring (0, endTag);\r
-tmp2up = tmp2up.substring (0, endTag);\r
-}endTag = tmp2up.indexOf ("</HTML>");\r
-if (endTag > -1) {\r
-tmpString = tmpString.substring (0, endTag);\r
-}if (startTag > -1) {\r
-tooltipText2.append ("; " + tmpString);\r
-} else {\r
-if (tmpString.indexOf ("<") > -1 || tmpString.indexOf (">") > -1) {\r
-tmpString = tmpString.replaceAll ("<", "&lt;");\r
-tmpString = tmpString.replaceAll (">", "&gt;");\r
-tooltipText2.append ("; ");\r
-tooltipText2.append (tmpString);\r
-} else {\r
-tooltipText2.append ("; " + tmpString);\r
-}}}if (!Float.isNaN (feature.getScore ())) {\r
-var rng = (minmax == null) ? null : (minmax.get (feature.getType ()));\r
-if (rng != null && rng[0] != null && rng[0][0] != rng[0][1]) {\r
-tooltipText2.append (" Score=" + feature.getScore ());\r
-}}if (feature.getValue ("status") != null) {\r
-var status = feature.getValue ("status").toString ();\r
-if (status.length > 0) {\r
-tooltipText2.append ("; (" + feature.getValue ("status") + ")");\r
-}}}}if (feature.links != null) {\r
-if (this.linkImageURL != null) {\r
-tooltipText2.append (" <img src=\"" + this.linkImageURL + "\">");\r
-} else {\r
-for (var urlstring, $urlstring = feature.links.iterator (); $urlstring.hasNext () && ((urlstring = $urlstring.next ()) || true);) {\r
-try {\r
-for (var urllink, $urllink = 0, $$urllink = this.createLinksFrom (null, urlstring); $urllink < $$urllink.length && ((urllink = $$urllink[$urllink]) || true); $urllink++) {\r
-tooltipText2.append ("<br/> <a href=\"" + urllink[3] + "\" target=\"" + urllink[0] + "\">" + (urllink[0].toLowerCase ().equals (urllink[1].toLowerCase ()) ? urllink[0] : (urllink[0] + ":" + urllink[1])) + "</a></br>");\r
-}\r
-} catch (x) {\r
-if (Clazz.exceptionOf (x, Exception)) {\r
-System.err.println ("problem when creating links from " + urlstring);\r
-x.printStackTrace ();\r
-} else {\r
-throw x;\r
-}\r
-}\r
-}\r
-}}}\r
-}}, "StringBuffer,~N,java.util.List,java.util.Hashtable");\r
-Clazz.defineMethod (c$, "createLinksFrom", \r
-function (seq, link) {\r
-var urlSets =  new java.util.ArrayList ();\r
-var uniques =  new java.util.ArrayList ();\r
-var urlLink =  new jalview.util.UrlLink (link);\r
-if (!urlLink.isValid ()) {\r
-System.err.println (urlLink.getInvalidMessage ());\r
-return null;\r
-}var target = urlLink.getTarget ();\r
-var label = urlLink.getLabel ();\r
-if (seq != null && urlLink.isDynamic ()) {\r
-var dbr = jalview.util.DBRefUtils.selectRefs (seq.getDBRef (),  Clazz.newArray (-1, [target]));\r
-var id = seq.getName ();\r
-var descr = seq.getDescription ();\r
-if (descr != null && descr.length < 1) {\r
-descr = null;\r
-}if (dbr != null) {\r
-for (var r = 0; r < dbr.length; r++) {\r
-if (id != null && dbr[r].getAccessionId ().equals (id)) {\r
-id = null;\r
-}var urls = urlLink.makeUrls (dbr[r].getAccessionId (), true);\r
-if (urls != null) {\r
-for (var u = 0; u < urls.length; u += 2) {\r
-var unq = urls[u] + "|" + urls[u + 1];\r
-if (!uniques.contains (unq)) {\r
-urlSets.add ( Clazz.newArray (-1, [target, label, urls[u], urls[u + 1]]));\r
-uniques.add (unq);\r
-}}\r
-}}\r
-}if (id != null) {\r
-var urls = urlLink.makeUrls (id, true);\r
-if (urls != null) {\r
-for (var u = 0; u < urls.length; u += 2) {\r
-var unq = urls[u] + "|" + urls[u + 1];\r
-if (!uniques.contains (unq)) {\r
-urlSets.add ( Clazz.newArray (-1, [target, label, urls[u], urls[u + 1]]));\r
-uniques.add (unq);\r
-}}\r
-}}if (descr != null && urlLink.getRegexReplace () != null) {\r
-var urls = urlLink.makeUrls (descr, true);\r
-if (urls != null) {\r
-for (var u = 0; u < urls.length; u += 2) {\r
-var unq = urls[u] + "|" + urls[u + 1];\r
-if (!uniques.contains (unq)) {\r
-urlSets.add ( Clazz.newArray (-1, [target, label, urls[u], urls[u + 1]]));\r
-uniques.add (unq);\r
-}}\r
-}}} else {\r
-var unq = label + "|" + urlLink.getUrl_prefix ();\r
-if (!uniques.contains (unq)) {\r
-uniques.add (unq);\r
-urlSets.add ( Clazz.newArray (-1, [target, label, null, urlLink.getUrl_prefix ()]));\r
-}}return urlSets.toArray ( Clazz.newArray (-1, []));\r
-}, "jalview.datamodel.SequenceI,~S");\r
-Clazz.defineMethod (c$, "createSequenceAnnotationReport", \r
-function (tip, sequence, showDbRefs, showNpFeats, minmax) {\r
-this.createSequenceAnnotationReport (tip, sequence, showDbRefs, showNpFeats, true, minmax);\r
-}, "StringBuffer,jalview.datamodel.SequenceI,~B,~B,java.util.Hashtable");\r
-Clazz.defineMethod (c$, "createSequenceAnnotationReport", \r
-function (tip, sequence, showDbRefs, showNpFeats, tableWrap, minmax) {\r
-var tmp;\r
-tip.append ("<i>");\r
-var maxWidth = 0;\r
-if (sequence.getDescription () != null) {\r
-tmp = sequence.getDescription ();\r
-tip.append ("<br>" + tmp);\r
-maxWidth = Math.max (maxWidth, tmp.length);\r
-}var ds = sequence;\r
-while (ds.getDatasetSequence () != null) {\r
-ds = ds.getDatasetSequence ();\r
-}\r
-var dbrefs = ds.getDBRef ();\r
-if (showDbRefs && dbrefs != null) {\r
-for (var i = 0; i < dbrefs.length; i++) {\r
-tip.append ("<br>");\r
-tmp = dbrefs[i].getSource () + " " + dbrefs[i].getAccessionId ();\r
-tip.append (tmp);\r
-maxWidth = Math.max (maxWidth, tmp.length);\r
-}\r
-}var features = sequence.getSequenceFeatures ();\r
-if (showNpFeats && features != null) {\r
-for (var i = 0; i < features.length; i++) {\r
-if (features[i].begin == 0 && features[i].end == 0) {\r
-var sz = -tip.length ();\r
-var tfeat =  new java.util.ArrayList ();\r
-tfeat.add (features[i]);\r
-this.appendFeatures (tip, 0, tfeat, minmax);\r
-sz += tip.length ();\r
-maxWidth = Math.max (maxWidth, sz);\r
-}}\r
-}if (tableWrap && maxWidth > 60) {\r
-tip.insert (0, "<table width=350 border=0><tr><td><i>");\r
-tip.append ("</i></td></tr></table>");\r
-}}, "StringBuffer,jalview.datamodel.SequenceI,~B,~B,~B,java.util.Hashtable");\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (null, "jalview.io.SequenceAnnotationReport", ["jalview.util.DBRefUtils", "$.UrlLink", "java.lang.Float", "java.util.ArrayList"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.linkImageURL = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io, "SequenceAnnotationReport");
+Clazz.makeConstructor (c$, 
+function (linkImageURL) {
+this.linkImageURL = linkImageURL;
+}, "~S");
+Clazz.defineMethod (c$, "appendFeatures", 
+function (tooltipText2, rpos, features) {
+this.appendFeatures (tooltipText2, rpos, features, null);
+}, "StringBuffer,~N,java.util.List");
+Clazz.defineMethod (c$, "appendFeatures", 
+function (tooltipText2, rpos, features, minmax) {
+var tmpString;
+if (features != null) {
+for (var feature, $feature = features.iterator (); $feature.hasNext () && ((feature = $feature.next ()) || true);) {
+if (feature.getType ().equals ("disulfide bond")) {
+if (feature.getBegin () == rpos || feature.getEnd () == rpos) {
+if (tooltipText2.length () > 6) {
+tooltipText2.append ("<br>");
+}tooltipText2.append ("disulfide bond " + feature.getBegin () + ":" + feature.getEnd ());
+}} else {
+if (tooltipText2.length () > 6) {
+tooltipText2.append ("<br>");
+}var linkOnly = feature.getValue ("linkonly") != null;
+if (!linkOnly) {
+tooltipText2.append (feature.getType () + " ");
+if (rpos != 0) {
+tooltipText2.append ("" + feature.begin);
+}if (feature.begin != feature.end) {
+tooltipText2.append (" " + feature.end);
+}if (feature.getDescription () != null && !feature.description.equals (feature.getType ())) {
+tmpString = feature.getDescription ();
+var tmp2up = tmpString.toUpperCase ();
+var startTag = tmp2up.indexOf ("<HTML>");
+if (startTag > -1) {
+tmpString = tmpString.substring (startTag + 6);
+tmp2up = tmp2up.substring (startTag + 6);
+}var endTag = tmp2up.indexOf ("</BODY>");
+if (endTag > -1) {
+tmpString = tmpString.substring (0, endTag);
+tmp2up = tmp2up.substring (0, endTag);
+}endTag = tmp2up.indexOf ("</HTML>");
+if (endTag > -1) {
+tmpString = tmpString.substring (0, endTag);
+}if (startTag > -1) {
+tooltipText2.append ("; " + tmpString);
+} else {
+if (tmpString.indexOf ("<") > -1 || tmpString.indexOf (">") > -1) {
+tmpString = tmpString.replaceAll ("<", "&lt;");
+tmpString = tmpString.replaceAll (">", "&gt;");
+tooltipText2.append ("; ");
+tooltipText2.append (tmpString);
+} else {
+tooltipText2.append ("; " + tmpString);
+}}}if (!Float.isNaN (feature.getScore ())) {
+var rng = (minmax == null) ? null : (minmax.get (feature.getType ()));
+if (rng != null && rng[0] != null && rng[0][0] != rng[0][1]) {
+tooltipText2.append (" Score=" + feature.getScore ());
+}}if (feature.getValue ("status") != null) {
+var status = feature.getValue ("status").toString ();
+if (status.length > 0) {
+tooltipText2.append ("; (" + feature.getValue ("status") + ")");
+}}}}if (feature.links != null) {
+if (this.linkImageURL != null) {
+tooltipText2.append (" <img src=\"" + this.linkImageURL + "\">");
+} else {
+for (var urlstring, $urlstring = feature.links.iterator (); $urlstring.hasNext () && ((urlstring = $urlstring.next ()) || true);) {
+try {
+for (var urllink, $urllink = 0, $$urllink = this.createLinksFrom (null, urlstring); $urllink < $$urllink.length && ((urllink = $$urllink[$urllink]) || true); $urllink++) {
+tooltipText2.append ("<br/> <a href=\"" + urllink[3] + "\" target=\"" + urllink[0] + "\">" + (urllink[0].toLowerCase ().equals (urllink[1].toLowerCase ()) ? urllink[0] : (urllink[0] + ":" + urllink[1])) + "</a></br>");
+}
+} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+System.err.println ("problem when creating links from " + urlstring);
+x.printStackTrace ();
+} else {
+throw x;
+}
+}
+}
+}}}
+}}, "StringBuffer,~N,java.util.List,java.util.Hashtable");
+Clazz.defineMethod (c$, "createLinksFrom", 
+function (seq, link) {
+var urlSets =  new java.util.ArrayList ();
+var uniques =  new java.util.ArrayList ();
+var urlLink =  new jalview.util.UrlLink (link);
+if (!urlLink.isValid ()) {
+System.err.println (urlLink.getInvalidMessage ());
+return null;
+}var target = urlLink.getTarget ();
+var label = urlLink.getLabel ();
+if (seq != null && urlLink.isDynamic ()) {
+var dbr = jalview.util.DBRefUtils.selectRefs (seq.getDBRef (),  Clazz.newArray (-1, [target]));
+var id = seq.getName ();
+var descr = seq.getDescription ();
+if (descr != null && descr.length < 1) {
+descr = null;
+}if (dbr != null) {
+for (var r = 0; r < dbr.length; r++) {
+if (id != null && dbr[r].getAccessionId ().equals (id)) {
+id = null;
+}var urls = urlLink.makeUrls (dbr[r].getAccessionId (), true);
+if (urls != null) {
+for (var u = 0; u < urls.length; u += 2) {
+var unq = urls[u] + "|" + urls[u + 1];
+if (!uniques.contains (unq)) {
+urlSets.add ( Clazz.newArray (-1, [target, label, urls[u], urls[u + 1]]));
+uniques.add (unq);
+}}
+}}
+}if (id != null) {
+var urls = urlLink.makeUrls (id, true);
+if (urls != null) {
+for (var u = 0; u < urls.length; u += 2) {
+var unq = urls[u] + "|" + urls[u + 1];
+if (!uniques.contains (unq)) {
+urlSets.add ( Clazz.newArray (-1, [target, label, urls[u], urls[u + 1]]));
+uniques.add (unq);
+}}
+}}if (descr != null && urlLink.getRegexReplace () != null) {
+var urls = urlLink.makeUrls (descr, true);
+if (urls != null) {
+for (var u = 0; u < urls.length; u += 2) {
+var unq = urls[u] + "|" + urls[u + 1];
+if (!uniques.contains (unq)) {
+urlSets.add ( Clazz.newArray (-1, [target, label, urls[u], urls[u + 1]]));
+uniques.add (unq);
+}}
+}}} else {
+var unq = label + "|" + urlLink.getUrl_prefix ();
+if (!uniques.contains (unq)) {
+uniques.add (unq);
+urlSets.add ( Clazz.newArray (-1, [target, label, null, urlLink.getUrl_prefix ()]));
+}}return urlSets.toArray ( Clazz.newArray (-1, []));
+}, "jalview.datamodel.SequenceI,~S");
+Clazz.defineMethod (c$, "createSequenceAnnotationReport", 
+function (tip, sequence, showDbRefs, showNpFeats, minmax) {
+this.createSequenceAnnotationReport (tip, sequence, showDbRefs, showNpFeats, true, minmax);
+}, "StringBuffer,jalview.datamodel.SequenceI,~B,~B,java.util.Hashtable");
+Clazz.defineMethod (c$, "createSequenceAnnotationReport", 
+function (tip, sequence, showDbRefs, showNpFeats, tableWrap, minmax) {
+var tmp;
+tip.append ("<i>");
+var maxWidth = 0;
+if (sequence.getDescription () != null) {
+tmp = sequence.getDescription ();
+tip.append ("<br>" + tmp);
+maxWidth = Math.max (maxWidth, tmp.length);
+}var ds = sequence;
+while (ds.getDatasetSequence () != null) {
+ds = ds.getDatasetSequence ();
+}
+var dbrefs = ds.getDBRef ();
+if (showDbRefs && dbrefs != null) {
+for (var i = 0; i < dbrefs.length; i++) {
+tip.append ("<br>");
+tmp = dbrefs[i].getSource () + " " + dbrefs[i].getAccessionId ();
+tip.append (tmp);
+maxWidth = Math.max (maxWidth, tmp.length);
+}
+}var features = sequence.getSequenceFeatures ();
+if (showNpFeats && features != null) {
+for (var i = 0; i < features.length; i++) {
+if (features[i].begin == 0 && features[i].end == 0) {
+var sz = -tip.length ();
+var tfeat =  new java.util.ArrayList ();
+tfeat.add (features[i]);
+this.appendFeatures (tip, 0, tfeat, minmax);
+sz += tip.length ();
+maxWidth = Math.max (maxWidth, sz);
+}}
+}if (tableWrap && maxWidth > 60) {
+tip.insert (0, "<table width=350 border=0><tr><td><i>");
+tip.append ("</i></td></tr></table>");
+}}, "StringBuffer,jalview.datamodel.SequenceI,~B,~B,~B,java.util.Hashtable");
+});
index 71e39b1..6e9db73 100644 (file)
Binary files a/bin/jalview/io/TCoffeeScoreFile.class and b/bin/jalview/io/TCoffeeScoreFile.class differ
index 1036432..7f2d629 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (["jalview.io.AlignFile", "java.awt.Color", "java.util.LinkedHashMap", "java.util.regex.Pattern"], "jalview.io.TCoffeeScoreFile", ["jalview.analysis.SequenceIdMatcher", "jalview.datamodel.Annotation", "jalview.util.Comparison", "java.lang.StringBuilder", "java.util.ArrayList", "$.HashMap"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.header = null;\r
-this.scores = null;\r
-this.fWidth = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io, "TCoffeeScoreFile", jalview.io.AlignFile);\r
-Clazz.defineMethod (c$, "getHeight", \r
-function () {\r
-return this.scores != null && this.scores.size () > 0 ? this.scores.size () - 1 : 0;\r
-});\r
-Clazz.defineMethod (c$, "getWidth", \r
-function () {\r
-return this.fWidth != null ? this.fWidth : 0;\r
-});\r
-Clazz.defineMethod (c$, "getScoresFor", \r
-function (id) {\r
-return this.scores != null && this.scores.containsKey (id) ? this.scores.get (id).toString () : "";\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getScoresList", \r
-function () {\r
-if (this.scores == null) {\r
-return null;\r
-}var result =  new java.util.ArrayList (this.scores.size ());\r
-for (var it, $it = this.scores.entrySet ().iterator (); $it.hasNext () && ((it = $it.next ()) || true);) {\r
-result.add (it.getValue ().toString ());\r
-}\r
-return result;\r
-});\r
-Clazz.defineMethod (c$, "getScoresArray", \r
-function () {\r
-if (this.scores == null) {\r
-return null;\r
-}var result =  Clazz.newByteArray (this.scores.size (), 0);\r
-var rowCount = 0;\r
-for (var it, $it = this.scores.entrySet ().iterator (); $it.hasNext () && ((it = $it.next ()) || true);) {\r
-var line = it.getValue ().toString ();\r
-var seqValues =  Clazz.newByteArray (line.length, 0);\r
-for (var j = 0, c = line.length; j < c; j++) {\r
-var val = (line.charCodeAt (j) - 48);\r
-seqValues[j] = (val >= 0 && val <= 9) ? val : -1;\r
-}\r
-result[rowCount++] = seqValues;\r
-}\r
-return result;\r
-});\r
-Clazz.overrideMethod (c$, "parse", \r
-function () {\r
-this.header = jalview.io.TCoffeeScoreFile.readHeader (this);\r
-if (this.header == null) {\r
-this.error = true;\r
-return;\r
-}this.scores =  new java.util.LinkedHashMap ();\r
-for (var entry, $entry = this.header.scores.entrySet ().iterator (); $entry.hasNext () && ((entry = $entry.next ()) || true);) {\r
-this.scores.put (entry.getKey (),  new StringBuilder ());\r
-}\r
-var block;\r
-while ((block = jalview.io.TCoffeeScoreFile.readBlock (this, this.header.scores.size ())) != null) {\r
-for (var entry, $entry = block.items.entrySet ().iterator (); $entry.hasNext () && ((entry = $entry.next ()) || true);) {\r
-var scoreStringBuilder = this.scores.get (entry.getKey ());\r
-if (scoreStringBuilder == null) {\r
-this.error = true;\r
-this.errormessage = String.format ("Invalid T-Coffee score file: Sequence ID '%s' is not declared in header section", [entry.getKey ()]);\r
-return;\r
-}scoreStringBuilder.append (entry.getValue ());\r
-}\r
-}\r
-for (var str, $str = this.scores.values ().iterator (); $str.hasNext () && ((str = $str.next ()) || true);) {\r
-if (this.fWidth == null) {\r
-this.fWidth = new Integer (str.length ());\r
-} else if ((this.fWidth).intValue () !== str.length ()) {\r
-this.error = true;\r
-this.errormessage = "Invalid T-Coffee score file: All the score sequences must have the same length";\r
-return;\r
-}}\r
-return;\r
-});\r
-c$.parseInt = Clazz.defineMethod (c$, "parseInt", \r
-function (str) {\r
-try {\r
-return Integer.parseInt (str);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, NumberFormatException)) {\r
-return 0;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "~S");\r
-c$.readHeader = Clazz.defineMethod (c$, "readHeader", \r
-function (reader) {\r
-var result = null;\r
-try {\r
-result =  new jalview.io.TCoffeeScoreFile.Header ();\r
-result.head = reader.nextLine ();\r
-var line;\r
-while ((line = reader.nextLine ()) != null) {\r
-if (line.startsWith ("SCORE=")) {\r
-result.score = jalview.io.TCoffeeScoreFile.parseInt (line.substring (6).trim ());\r
-break;\r
-}}\r
-if ((line = reader.nextLine ()) == null || !"*".equals (line.trim ())) {\r
-jalview.io.TCoffeeScoreFile.error (reader, "Invalid T-COFFEE score format (NO BAD/AVG/GOOD header)");\r
-return null;\r
-}if ((line = reader.nextLine ()) == null || !"BAD AVG GOOD".equals (line.trim ())) {\r
-jalview.io.TCoffeeScoreFile.error (reader, "Invalid T-COFFEE score format (NO BAD/AVG/GOOD header)");\r
-return null;\r
-}if ((line = reader.nextLine ()) == null || !"*".equals (line.trim ())) {\r
-jalview.io.TCoffeeScoreFile.error (reader, "Invalid T-COFFEE score format (NO BAD/AVG/GOOD header)");\r
-return null;\r
-}while ((line = reader.nextLine ()) != null) {\r
-if ("".equals (line)) {\r
-break;\r
-}var p = line.indexOf (":");\r
-if (p == -1) {\r
-continue;\r
-}var id = line.substring (0, p).trim ();\r
-var val = jalview.io.TCoffeeScoreFile.parseInt (line.substring (p + 1).trim ());\r
-if ("".equals (id)) {\r
-continue;\r
-}result.scores.put (id, new Integer (val));\r
-}\r
-if (result == null) {\r
-jalview.io.TCoffeeScoreFile.error (reader, "T-COFFEE score file had no per-sequence scores");\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-jalview.io.TCoffeeScoreFile.error (reader, "Unexpected problem parsing T-Coffee score ascii file");\r
-throw e;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return result;\r
-}, "jalview.io.FileParse");\r
-c$.error = Clazz.defineMethod (c$, "error", \r
-($fz = function (reader, errm) {\r
-reader.error = true;\r
-if (reader.errormessage == null) {\r
-reader.errormessage = errm;\r
-} else {\r
-reader.errormessage += "\n" + errm;\r
-}}, $fz.isPrivate = true, $fz), "jalview.io.FileParse,~S");\r
-c$.readBlock = Clazz.defineMethod (c$, "readBlock", \r
-function (reader, size) {\r
-var result =  new jalview.io.TCoffeeScoreFile.Block (size);\r
-var line;\r
-while ((line = reader.nextLine ()) != null && "".equals (line.trim ())) {\r
-}\r
-if (line == null) {\r
-return null;\r
-}do {\r
-if ("".equals (line.trim ())) {\r
-break;\r
-}var p = line.indexOf (" ");\r
-if (p == -1) {\r
-if (reader.warningMessage == null) {\r
-reader.warningMessage = "";\r
-}reader.warningMessage += "Possible parsing error - expected to find a space in line: '" + line + "'\n";\r
-continue;\r
-}var id = line.substring (0, p).trim ();\r
-var val = line.substring (p + 1).trim ();\r
-var m = jalview.io.TCoffeeScoreFile.SCORES_WITH_RESIDUE_NUMS.matcher (val);\r
-if (m.matches ()) {\r
-val = m.group (1);\r
-}result.items.put (id, val);\r
-} while ((line = reader.nextLine ()) != null);\r
-return result;\r
-}, "jalview.io.FileParse,~N");\r
-Clazz.defineMethod (c$, "annotateAlignment", \r
-function (al, matchids) {\r
-if (al.getHeight () != this.getHeight () || al.getWidth () != this.getWidth ()) {\r
-var info = String.format ("align w: %s, h: %s; score: w: %s; h: %s ", [new Integer (al.getWidth ()), new Integer (al.getHeight ()), new Integer (this.getWidth ()), new Integer (this.getHeight ())]);\r
-this.warningMessage = "Alignment shape does not match T-Coffee score file shape -- " + info;\r
-return false;\r
-}var added = false;\r
-var i = 0;\r
-var sidmatcher =  new jalview.analysis.SequenceIdMatcher (al.getSequencesArray ());\r
-var scoreMatrix = this.getScoresArray ();\r
-for (var id, $id = this.scores.entrySet ().iterator (); $id.hasNext () && ((id = $id.next ()) || true);) {\r
-var srow = scoreMatrix[i];\r
-var s;\r
-if (matchids) {\r
-s = sidmatcher.findIdMatch (id.getKey ());\r
-} else {\r
-s = al.getSequenceAt (i);\r
-}i++;\r
-if (s == null && i != this.scores.size () && !id.getKey ().equals ("cons")) {\r
-System.err.println ("No " + (matchids ? "match " : " sequences left ") + " for TCoffee score set : " + id.getKey ());\r
-continue;\r
-}var jSize = al.getWidth () < srow.length ? al.getWidth () : srow.length;\r
-var annotations =  new Array (al.getWidth ());\r
-for (var j = 0; j < jSize; j++) {\r
-var val = srow[j];\r
-if (s != null && jalview.util.Comparison.isGap (s.getCharAt (j))) {\r
-annotations[j] = null;\r
-if (val > 0) {\r
-System.err.println ("Warning: non-zero value for positional T-COFFEE score for gap at " + j + " in sequence " + s.getName ());\r
-}} else {\r
-annotations[j] =  new jalview.datamodel.Annotation (s == null ? "" + val : null, s == null ? "" + val : null, '\0', val * 1, val >= 0 && val < jalview.io.TCoffeeScoreFile.colors.length ? jalview.io.TCoffeeScoreFile.colors[val] : java.awt.Color.white);\r
-}}\r
-var aa = al.findOrCreateAnnotation ("TCoffeeScore", "TCoffeeScore", false, s, null);\r
-if (s != null) {\r
-aa.label = "T-COFFEE";\r
-aa.description = "" + id.getKey ();\r
-aa.annotations = annotations;\r
-aa.visible = false;\r
-aa.belowAlignment = false;\r
-aa.setScore (this.header.getScoreFor (id.getKey ()));\r
-aa.createSequenceMapping (s, s.getStart (), true);\r
-s.addAlignmentAnnotation (aa);\r
-aa.adjustForAlignment ();\r
-} else {\r
-aa.graph = 0;\r
-aa.label = "T-COFFEE";\r
-aa.description = "TCoffee column reliability score";\r
-aa.annotations = annotations;\r
-aa.belowAlignment = true;\r
-aa.visible = true;\r
-aa.setScore (this.header.getScoreAvg ());\r
-}aa.showAllColLabels = true;\r
-aa.validateRangeAndDisplay ();\r
-added = true;\r
-}\r
-return added;\r
-}, "jalview.datamodel.AlignmentI,~B");\r
-Clazz.overrideMethod (c$, "print", \r
-function () {\r
-return "Not valid.";\r
-});\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.head = null;\r
-this.score = 0;\r
-this.scores = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io.TCoffeeScoreFile, "Header");\r
-Clazz.prepareFields (c$, function () {\r
-this.scores =  new java.util.LinkedHashMap ();\r
-});\r
-Clazz.defineMethod (c$, "getScoreAvg", \r
-function () {\r
-return this.score;\r
-});\r
-Clazz.defineMethod (c$, "getScoreFor", \r
-function (a) {\r
-return this.scores.containsKey (a) ? this.scores.get (a) : -1;\r
-}, "~S");\r
-c$ = Clazz.p0p ();\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.size = 0;\r
-this.items = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io.TCoffeeScoreFile, "Block");\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-this.size = a;\r
-this.items =  new java.util.HashMap (a);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getScoresFor", \r
-function (a) {\r
-return this.items.get (a);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getConsensus", \r
-function () {\r
-return this.items.get ("cons");\r
-});\r
-c$ = Clazz.p0p ();\r
-c$.SCORES_WITH_RESIDUE_NUMS = c$.prototype.SCORES_WITH_RESIDUE_NUMS = java.util.regex.Pattern.compile ("^\\d+\\s([^\\s]+)\\s+\\d+$");\r
-c$.colors = c$.prototype.colors =  Clazz.newArray (-1, [ new java.awt.Color (102, 102, 255),  new java.awt.Color (0, 255, 0),  new java.awt.Color (102, 255, 0),  new java.awt.Color (204, 255, 0),  new java.awt.Color (255, 255, 0),  new java.awt.Color (255, 204, 0),  new java.awt.Color (255, 153, 0),  new java.awt.Color (255, 102, 0),  new java.awt.Color (255, 51, 0),  new java.awt.Color (255, 34, 0)]);\r
-Clazz.defineStatics (c$,\r
-"TCOFFEE_SCORE", "TCoffeeScore");\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (["jalview.io.AlignFile", "java.awt.Color", "java.util.LinkedHashMap", "java.util.regex.Pattern"], "jalview.io.TCoffeeScoreFile", ["jalview.analysis.SequenceIdMatcher", "jalview.datamodel.Annotation", "jalview.util.Comparison", "java.lang.StringBuilder", "java.util.ArrayList", "$.HashMap"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.header = null;
+this.scores = null;
+this.fWidth = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io, "TCoffeeScoreFile", jalview.io.AlignFile);
+Clazz.defineMethod (c$, "getHeight", 
+function () {
+return this.scores != null && this.scores.size () > 0 ? this.scores.size () - 1 : 0;
+});
+Clazz.defineMethod (c$, "getWidth", 
+function () {
+return this.fWidth != null ? this.fWidth : 0;
+});
+Clazz.defineMethod (c$, "getScoresFor", 
+function (id) {
+return this.scores != null && this.scores.containsKey (id) ? this.scores.get (id).toString () : "";
+}, "~S");
+Clazz.defineMethod (c$, "getScoresList", 
+function () {
+if (this.scores == null) {
+return null;
+}var result =  new java.util.ArrayList (this.scores.size ());
+for (var it, $it = this.scores.entrySet ().iterator (); $it.hasNext () && ((it = $it.next ()) || true);) {
+result.add (it.getValue ().toString ());
+}
+return result;
+});
+Clazz.defineMethod (c$, "getScoresArray", 
+function () {
+if (this.scores == null) {
+return null;
+}var result =  Clazz.newByteArray (this.scores.size (), 0);
+var rowCount = 0;
+for (var it, $it = this.scores.entrySet ().iterator (); $it.hasNext () && ((it = $it.next ()) || true);) {
+var line = it.getValue ().toString ();
+var seqValues =  Clazz.newByteArray (line.length, 0);
+for (var j = 0, c = line.length; j < c; j++) {
+var val = (line.charCodeAt (j) - 48);
+seqValues[j] = (val >= 0 && val <= 9) ? val : -1;
+}
+result[rowCount++] = seqValues;
+}
+return result;
+});
+Clazz.overrideMethod (c$, "parse", 
+function () {
+this.header = jalview.io.TCoffeeScoreFile.readHeader (this);
+if (this.header == null) {
+this.error = true;
+return;
+}this.scores =  new java.util.LinkedHashMap ();
+for (var entry, $entry = this.header.scores.entrySet ().iterator (); $entry.hasNext () && ((entry = $entry.next ()) || true);) {
+this.scores.put (entry.getKey (),  new StringBuilder ());
+}
+var block;
+while ((block = jalview.io.TCoffeeScoreFile.readBlock (this, this.header.scores.size ())) != null) {
+for (var entry, $entry = block.items.entrySet ().iterator (); $entry.hasNext () && ((entry = $entry.next ()) || true);) {
+var scoreStringBuilder = this.scores.get (entry.getKey ());
+if (scoreStringBuilder == null) {
+this.error = true;
+this.errormessage = String.format ("Invalid T-Coffee score file: Sequence ID '%s' is not declared in header section", [entry.getKey ()]);
+return;
+}scoreStringBuilder.append (entry.getValue ());
+}
+}
+for (var str, $str = this.scores.values ().iterator (); $str.hasNext () && ((str = $str.next ()) || true);) {
+if (this.fWidth == null) {
+this.fWidth = new Integer (str.length ());
+} else if ((this.fWidth).intValue () !== str.length ()) {
+this.error = true;
+this.errormessage = "Invalid T-Coffee score file: All the score sequences must have the same length";
+return;
+}}
+return;
+});
+c$.parseInt = Clazz.defineMethod (c$, "parseInt", 
+function (str) {
+try {
+return Integer.parseInt (str);
+} catch (e) {
+if (Clazz.exceptionOf (e, NumberFormatException)) {
+return 0;
+} else {
+throw e;
+}
+}
+}, "~S");
+c$.readHeader = Clazz.defineMethod (c$, "readHeader", 
+function (reader) {
+var result = null;
+try {
+result =  new jalview.io.TCoffeeScoreFile.Header ();
+result.head = reader.nextLine ();
+var line;
+while ((line = reader.nextLine ()) != null) {
+if (line.startsWith ("SCORE=")) {
+result.score = jalview.io.TCoffeeScoreFile.parseInt (line.substring (6).trim ());
+break;
+}}
+if ((line = reader.nextLine ()) == null || !"*".equals (line.trim ())) {
+jalview.io.TCoffeeScoreFile.error (reader, "Invalid T-COFFEE score format (NO BAD/AVG/GOOD header)");
+return null;
+}if ((line = reader.nextLine ()) == null || !"BAD AVG GOOD".equals (line.trim ())) {
+jalview.io.TCoffeeScoreFile.error (reader, "Invalid T-COFFEE score format (NO BAD/AVG/GOOD header)");
+return null;
+}if ((line = reader.nextLine ()) == null || !"*".equals (line.trim ())) {
+jalview.io.TCoffeeScoreFile.error (reader, "Invalid T-COFFEE score format (NO BAD/AVG/GOOD header)");
+return null;
+}while ((line = reader.nextLine ()) != null) {
+if ("".equals (line)) {
+break;
+}var p = line.indexOf (":");
+if (p == -1) {
+continue;
+}var id = line.substring (0, p).trim ();
+var val = jalview.io.TCoffeeScoreFile.parseInt (line.substring (p + 1).trim ());
+if ("".equals (id)) {
+continue;
+}result.scores.put (id, new Integer (val));
+}
+if (result == null) {
+jalview.io.TCoffeeScoreFile.error (reader, "T-COFFEE score file had no per-sequence scores");
+}} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+jalview.io.TCoffeeScoreFile.error (reader, "Unexpected problem parsing T-Coffee score ascii file");
+throw e;
+} else {
+throw e;
+}
+}
+return result;
+}, "jalview.io.FileParse");
+c$.error = Clazz.defineMethod (c$, "error", 
+($fz = function (reader, errm) {
+reader.error = true;
+if (reader.errormessage == null) {
+reader.errormessage = errm;
+} else {
+reader.errormessage += "\n" + errm;
+}}, $fz.isPrivate = true, $fz), "jalview.io.FileParse,~S");
+c$.readBlock = Clazz.defineMethod (c$, "readBlock", 
+function (reader, size) {
+var result =  new jalview.io.TCoffeeScoreFile.Block (size);
+var line;
+while ((line = reader.nextLine ()) != null && "".equals (line.trim ())) {
+}
+if (line == null) {
+return null;
+}do {
+if ("".equals (line.trim ())) {
+break;
+}var p = line.indexOf (" ");
+if (p == -1) {
+if (reader.warningMessage == null) {
+reader.warningMessage = "";
+}reader.warningMessage += "Possible parsing error - expected to find a space in line: '" + line + "'\n";
+continue;
+}var id = line.substring (0, p).trim ();
+var val = line.substring (p + 1).trim ();
+var m = jalview.io.TCoffeeScoreFile.SCORES_WITH_RESIDUE_NUMS.matcher (val);
+if (m.matches ()) {
+val = m.group (1);
+}result.items.put (id, val);
+} while ((line = reader.nextLine ()) != null);
+return result;
+}, "jalview.io.FileParse,~N");
+Clazz.defineMethod (c$, "annotateAlignment", 
+function (al, matchids) {
+if (al.getHeight () != this.getHeight () || al.getWidth () != this.getWidth ()) {
+var info = String.format ("align w: %s, h: %s; score: w: %s; h: %s ", [new Integer (al.getWidth ()), new Integer (al.getHeight ()), new Integer (this.getWidth ()), new Integer (this.getHeight ())]);
+this.warningMessage = "Alignment shape does not match T-Coffee score file shape -- " + info;
+return false;
+}var added = false;
+var i = 0;
+var sidmatcher =  new jalview.analysis.SequenceIdMatcher (al.getSequencesArray ());
+var scoreMatrix = this.getScoresArray ();
+for (var id, $id = this.scores.entrySet ().iterator (); $id.hasNext () && ((id = $id.next ()) || true);) {
+var srow = scoreMatrix[i];
+var s;
+if (matchids) {
+s = sidmatcher.findIdMatch (id.getKey ());
+} else {
+s = al.getSequenceAt (i);
+}i++;
+if (s == null && i != this.scores.size () && !id.getKey ().equals ("cons")) {
+System.err.println ("No " + (matchids ? "match " : " sequences left ") + " for TCoffee score set : " + id.getKey ());
+continue;
+}var jSize = al.getWidth () < srow.length ? al.getWidth () : srow.length;
+var annotations =  new Array (al.getWidth ());
+for (var j = 0; j < jSize; j++) {
+var val = srow[j];
+if (s != null && jalview.util.Comparison.isGap (s.getCharAt (j))) {
+annotations[j] = null;
+if (val > 0) {
+System.err.println ("Warning: non-zero value for positional T-COFFEE score for gap at " + j + " in sequence " + s.getName ());
+}} else {
+annotations[j] =  new jalview.datamodel.Annotation (s == null ? "" + val : null, s == null ? "" + val : null, '\0', val * 1, val >= 0 && val < jalview.io.TCoffeeScoreFile.colors.length ? jalview.io.TCoffeeScoreFile.colors[val] : java.awt.Color.white);
+}}
+var aa = al.findOrCreateAnnotation ("TCoffeeScore", "TCoffeeScore", false, s, null);
+if (s != null) {
+aa.label = "T-COFFEE";
+aa.description = "" + id.getKey ();
+aa.annotations = annotations;
+aa.visible = false;
+aa.belowAlignment = false;
+aa.setScore (this.header.getScoreFor (id.getKey ()));
+aa.createSequenceMapping (s, s.getStart (), true);
+s.addAlignmentAnnotation (aa);
+aa.adjustForAlignment ();
+} else {
+aa.graph = 0;
+aa.label = "T-COFFEE";
+aa.description = "TCoffee column reliability score";
+aa.annotations = annotations;
+aa.belowAlignment = true;
+aa.visible = true;
+aa.setScore (this.header.getScoreAvg ());
+}aa.showAllColLabels = true;
+aa.validateRangeAndDisplay ();
+added = true;
+}
+return added;
+}, "jalview.datamodel.AlignmentI,~B");
+Clazz.overrideMethod (c$, "print", 
+function () {
+return "Not valid.";
+});
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+this.head = null;
+this.score = 0;
+this.scores = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io.TCoffeeScoreFile, "Header");
+Clazz.prepareFields (c$, function () {
+this.scores =  new java.util.LinkedHashMap ();
+});
+Clazz.defineMethod (c$, "getScoreAvg", 
+function () {
+return this.score;
+});
+Clazz.defineMethod (c$, "getScoreFor", 
+function (a) {
+return this.scores.containsKey (a) ? this.scores.get (a) : -1;
+}, "~S");
+c$ = Clazz.p0p ();
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+this.size = 0;
+this.items = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io.TCoffeeScoreFile, "Block");
+Clazz.makeConstructor (c$, 
+function (a) {
+this.size = a;
+this.items =  new java.util.HashMap (a);
+}, "~N");
+Clazz.defineMethod (c$, "getScoresFor", 
+function (a) {
+return this.items.get (a);
+}, "~S");
+Clazz.defineMethod (c$, "getConsensus", 
+function () {
+return this.items.get ("cons");
+});
+c$ = Clazz.p0p ();
+c$.SCORES_WITH_RESIDUE_NUMS = c$.prototype.SCORES_WITH_RESIDUE_NUMS = java.util.regex.Pattern.compile ("^\\d+\\s([^\\s]+)\\s+\\d+$");
+c$.colors = c$.prototype.colors =  Clazz.newArray (-1, [ new java.awt.Color (102, 102, 255),  new java.awt.Color (0, 255, 0),  new java.awt.Color (102, 255, 0),  new java.awt.Color (204, 255, 0),  new java.awt.Color (255, 255, 0),  new java.awt.Color (255, 204, 0),  new java.awt.Color (255, 153, 0),  new java.awt.Color (255, 102, 0),  new java.awt.Color (255, 51, 0),  new java.awt.Color (255, 34, 0)]);
+Clazz.defineStatics (c$,
+"TCOFFEE_SCORE", "TCoffeeScore");
+});
index 5466a9b..1f39479 100644 (file)
Binary files a/bin/jalview/javascript/JSFunctionExec$1.class and b/bin/jalview/javascript/JSFunctionExec$1.class differ
index c6607f6..d29244d 100644 (file)
Binary files a/bin/jalview/javascript/JSFunctionExec.class and b/bin/jalview/javascript/JSFunctionExec.class differ
index 3296c72..43f56a2 100644 (file)
-Clazz.declarePackage ("jalview.javascript");\r
-Clazz.load (null, "jalview.javascript.JSFunctionExec", ["jalview.bin.JalviewLite", "java.lang.StringBuffer", "$.Thread", "java.net.MalformedURLException", "$.URL", "netscape.javascript.JSException", "$.JSObject"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.jvlite = null;\r
-this.jsExecQueue = null;\r
-this.executor = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.javascript, "JSFunctionExec", null, Runnable);\r
-Clazz.makeConstructor (c$, \r
-function (applet) {\r
-this.jvlite = applet;\r
-this.jsExecQueue = this.jvlite.getJsExecQueue ();\r
-this.jvlite.setExecutor (this);\r
-}, "jalview.bin.JalviewLite");\r
-Clazz.overrideMethod (c$, "finalize", \r
-function () {\r
-this.jvlite = null;\r
-this.executor = null;\r
-if (this.jsExecQueue != null) {\r
-this.jsExecQueue.clear ();\r
-}this.jsExecQueue = null;\r
-});\r
-Clazz.defineMethod (c$, "stopQueue", \r
-function () {\r
-if (this.jsExecQueue != null) {\r
-var q = null;\r
-{\r
-q = this.jsExecQueue;\r
-this.jsExecQueue = null;\r
-}if (q != null) {\r
-for (var jx, $jx = q.iterator (); $jx.hasNext () && ((jx = $jx.next ()) || true);) {\r
-jx.jvlite = null;\r
-}\r
-q.removeAllElements ();\r
-{\r
-q.notifyAll ();\r
-}}}this.jvlite = null;\r
-this.executor = null;\r
-});\r
-Clazz.defineMethod (c$, "run", \r
-function () {\r
-while (this.jsExecQueue != null) {\r
-if (this.jsExecQueue.size () > 0) {\r
-var r = this.jsExecQueue.elementAt (0);\r
-this.jsExecQueue.removeElementAt (0);\r
-try {\r
-r.run ();\r
-} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, Exception)) {\r
-var ex = e$$;\r
-{\r
-ex.printStackTrace ();\r
-}\r
-} else if (Clazz.exceptionOf (e$$, Error)) {\r
-var ex = e$$;\r
-{\r
-ex.printStackTrace ();\r
-}\r
-} else {\r
-throw e$$;\r
-}\r
-}\r
-} else {\r
-try {\r
-{\r
-this.jsExecQueue.wait (1000);\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-;}}\r
-});\r
-Clazz.defineMethod (c$, "executeJavascriptFunction", \r
-function (_listener, objects) {\r
-this.executeJavascriptFunction (false, _listener, objects);\r
-}, "~S,~A");\r
-Clazz.defineMethod (c$, "executeJavascriptFunction", \r
-function (async, _listener, $arguments) {\r
-this.executeJavascriptFunction (async, _listener, $arguments, null);\r
-}, "~B,~S,~A");\r
-Clazz.defineMethod (c$, "executeJavascriptFunction", \r
-function (async, _listener, $arguments, dbgMsg) {\r
-var objects =  new Array ($arguments != null ? $arguments.length : 0);\r
-if ($arguments != null) {\r
-System.arraycopy ($arguments, 0, objects, 0, $arguments.length);\r
-}var jsex =  new Array (1);\r
-var exec = ((Clazz.isClassDefined ("jalview.javascript.JSFunctionExec$1") ? 0 : jalview.javascript.JSFunctionExec.$JSFunctionExec$1$ ()), Clazz.innerTypeInstance (jalview.javascript.JSFunctionExec$1, this, Clazz.cloneFinals ("dbgMsg", dbgMsg, "_listener", _listener, "objects", objects, "jsex", jsex, "async", async)));\r
-if (async) {\r
-if (this.executor == null) {\r
-this.executor =  new Thread ( new jalview.javascript.JSFunctionExec (this.jvlite));\r
-this.executor.start ();\r
-}{\r
-this.jsExecQueue.addElement (exec);\r
-this.jsExecQueue.notify ();\r
-}} else {\r
-exec.run ();\r
-if (jsex[0] != null) {\r
-throw (jsex[0]);\r
-}}}, "~B,~S,~A,~S");\r
-c$.$JSFunctionExec$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.javascript, "JSFunctionExec$1", null, Runnable);\r
-Clazz.defineMethod (c$, "run", \r
-function () {\r
-try {\r
-var scriptObject = null;\r
-try {\r
-scriptObject = netscape.javascript.JSObject.getWindow (this.b$["jalview.javascript.JSFunctionExec"].jvlite);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-;if (scriptObject != null) {\r
-if (jalview.bin.JalviewLite.debug && this.f$.dbgMsg != null) {\r
-System.err.println (this.f$.dbgMsg);\r
-}scriptObject.call (this.f$._listener, this.f$.objects);\r
-}} catch (jex) {\r
-if (Clazz.exceptionOf (jex, Exception)) {\r
-if (!(Clazz.instanceOf (jex, java.net.MalformedURLException))) {\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println (jex);\r
-}if (Clazz.instanceOf (jex, netscape.javascript.JSException) && this.b$["jalview.javascript.JSFunctionExec"].jvlite.jsfallbackEnabled) {\r
-this.f$.jsex[0] = jex;\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println ("Falling back to javascript: url call");\r
-}var sb =  new StringBuffer ("javascript:" + this.f$._listener + "(");\r
-for (var i = 0; this.f$.objects != null && i < this.f$.objects.length; i++) {\r
-if (i > 0) {\r
-sb.append (",");\r
-}sb.append ("\"");\r
-if (this.f$.objects[i] != null && !(this.f$.objects[i].getClass ().getName ().indexOf ("jalview") == 0)) {\r
-sb.append (this.f$.objects[i].toString ());\r
-}sb.append ("\"");\r
-}\r
-sb.append (")");\r
-if (jalview.bin.JalviewLite.debug) {\r
-System.err.println (sb.toString ());\r
-}var url = null;\r
-try {\r
-url =  new java.net.URL (sb.toString ());\r
-this.b$["jalview.javascript.JSFunctionExec"].jvlite.getAppletContext ().showDocument (url);\r
-jex = null;\r
-} catch (uex) {\r
-if (Clazz.exceptionOf (uex, Exception)) {\r
-jex = uex;\r
-} else {\r
-throw uex;\r
-}\r
-}\r
-}if (jex != null) {\r
-if (this.f$.async) {\r
-jex.printStackTrace ();\r
-} else {\r
-this.f$.jsex[0] = jex;\r
-}};}} else {\r
-throw jex;\r
-}\r
-}\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.javascript");
+Clazz.load (null, "jalview.javascript.JSFunctionExec", ["jalview.bin.JalviewLite", "java.lang.StringBuffer", "$.Thread", "java.net.MalformedURLException", "$.URL", "netscape.javascript.JSException", "$.JSObject"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.jvlite = null;
+this.jsExecQueue = null;
+this.executor = null;
+Clazz.instantialize (this, arguments);
+}, jalview.javascript, "JSFunctionExec", null, Runnable);
+Clazz.makeConstructor (c$, 
+function (applet) {
+this.jvlite = applet;
+this.jsExecQueue = this.jvlite.getJsExecQueue ();
+this.jvlite.setExecutor (this);
+}, "jalview.bin.JalviewLite");
+Clazz.overrideMethod (c$, "finalize", 
+function () {
+this.jvlite = null;
+this.executor = null;
+if (this.jsExecQueue != null) {
+this.jsExecQueue.clear ();
+}this.jsExecQueue = null;
+});
+Clazz.defineMethod (c$, "stopQueue", 
+function () {
+if (this.jsExecQueue != null) {
+var q = null;
+{
+q = this.jsExecQueue;
+this.jsExecQueue = null;
+}if (q != null) {
+for (var jx, $jx = q.iterator (); $jx.hasNext () && ((jx = $jx.next ()) || true);) {
+jx.jvlite = null;
+}
+q.removeAllElements ();
+{
+q.notifyAll ();
+}}}this.jvlite = null;
+this.executor = null;
+});
+Clazz.defineMethod (c$, "run", 
+function () {
+while (this.jsExecQueue != null) {
+if (this.jsExecQueue.size () > 0) {
+var r = this.jsExecQueue.elementAt (0);
+this.jsExecQueue.removeElementAt (0);
+try {
+r.run ();
+} catch (e$$) {
+if (Clazz.exceptionOf (e$$, Exception)) {
+var ex = e$$;
+{
+ex.printStackTrace ();
+}
+} else if (Clazz.exceptionOf (e$$, Error)) {
+var ex = e$$;
+{
+ex.printStackTrace ();
+}
+} else {
+throw e$$;
+}
+}
+} else {
+try {
+{
+this.jsExecQueue.wait (1000);
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+;}}
+});
+Clazz.defineMethod (c$, "executeJavascriptFunction", 
+function (_listener, objects) {
+this.executeJavascriptFunction (false, _listener, objects);
+}, "~S,~A");
+Clazz.defineMethod (c$, "executeJavascriptFunction", 
+function (async, _listener, $arguments) {
+this.executeJavascriptFunction (async, _listener, $arguments, null);
+}, "~B,~S,~A");
+Clazz.defineMethod (c$, "executeJavascriptFunction", 
+function (async, _listener, $arguments, dbgMsg) {
+var objects =  new Array ($arguments != null ? $arguments.length : 0);
+if ($arguments != null) {
+System.arraycopy ($arguments, 0, objects, 0, $arguments.length);
+}var jsex =  new Array (1);
+var exec = ((Clazz.isClassDefined ("jalview.javascript.JSFunctionExec$1") ? 0 : jalview.javascript.JSFunctionExec.$JSFunctionExec$1$ ()), Clazz.innerTypeInstance (jalview.javascript.JSFunctionExec$1, this, Clazz.cloneFinals ("dbgMsg", dbgMsg, "_listener", _listener, "objects", objects, "jsex", jsex, "async", async)));
+if (async) {
+if (this.executor == null) {
+this.executor =  new Thread ( new jalview.javascript.JSFunctionExec (this.jvlite));
+this.executor.start ();
+}{
+this.jsExecQueue.addElement (exec);
+this.jsExecQueue.notify ();
+}} else {
+exec.run ();
+if (jsex[0] != null) {
+throw (jsex[0]);
+}}}, "~B,~S,~A,~S");
+c$.$JSFunctionExec$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.javascript, "JSFunctionExec$1", null, Runnable);
+Clazz.defineMethod (c$, "run", 
+function () {
+try {
+var scriptObject = null;
+try {
+scriptObject = netscape.javascript.JSObject.getWindow (this.b$["jalview.javascript.JSFunctionExec"].jvlite);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+;if (scriptObject != null) {
+if (jalview.bin.JalviewLite.debug && this.f$.dbgMsg != null) {
+System.err.println (this.f$.dbgMsg);
+}scriptObject.call (this.f$._listener, this.f$.objects);
+}} catch (jex) {
+if (Clazz.exceptionOf (jex, Exception)) {
+if (!(Clazz.instanceOf (jex, java.net.MalformedURLException))) {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println (jex);
+}if (Clazz.instanceOf (jex, netscape.javascript.JSException) && this.b$["jalview.javascript.JSFunctionExec"].jvlite.jsfallbackEnabled) {
+this.f$.jsex[0] = jex;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Falling back to javascript: url call");
+}var sb =  new StringBuffer ("javascript:" + this.f$._listener + "(");
+for (var i = 0; this.f$.objects != null && i < this.f$.objects.length; i++) {
+if (i > 0) {
+sb.append (",");
+}sb.append ("\"");
+if (this.f$.objects[i] != null && !(this.f$.objects[i].getClass ().getName ().indexOf ("jalview") == 0)) {
+sb.append (this.f$.objects[i].toString ());
+}sb.append ("\"");
+}
+sb.append (")");
+if (jalview.bin.JalviewLite.debug) {
+System.err.println (sb.toString ());
+}var url = null;
+try {
+url =  new java.net.URL (sb.toString ());
+this.b$["jalview.javascript.JSFunctionExec"].jvlite.getAppletContext ().showDocument (url);
+jex = null;
+} catch (uex) {
+if (Clazz.exceptionOf (uex, Exception)) {
+jex = uex;
+} else {
+throw uex;
+}
+}
+}if (jex != null) {
+if (this.f$.async) {
+jex.printStackTrace ();
+} else {
+this.f$.jsex[0] = jex;
+}};}} else {
+throw jex;
+}
+}
+});
+c$ = Clazz.p0p ();
+};
+});
index ed4943e..bdd7529 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.javascript");\r
-Clazz.declareInterface (jalview.javascript, "JalviewLiteJsApi");\r
+Clazz.declarePackage ("jalview.javascript");
+Clazz.declareInterface (jalview.javascript, "JalviewLiteJsApi");
index 1577e6b..85ac52a 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.javascript");\r
-Clazz.declareInterface (jalview.javascript, "JsCallBack");\r
+Clazz.declarePackage ("jalview.javascript");
+Clazz.declareInterface (jalview.javascript, "JsCallBack");
index ad763f0..36703c5 100644 (file)
@@ -1,70 +1,70 @@
-Clazz.declarePackage ("jalview.javascript");\r
-Clazz.load (["jalview.javascript.JSFunctionExec", "$.JsCallBack", "jalview.structure.SelectionListener"], "jalview.javascript.JsSelectionSender", ["jalview.appletgui.AlignViewport", "netscape.javascript.JSException"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this._af = null;\r
-this._listener = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.javascript, "JsSelectionSender", jalview.javascript.JSFunctionExec, [jalview.structure.SelectionListener, jalview.javascript.JsCallBack]);\r
-Clazz.makeConstructor (c$, \r
-function (jvlite, af, listener) {\r
-Clazz.superConstructor (this, jalview.javascript.JsSelectionSender, [jvlite]);\r
-this._af = af;\r
-this._listener = listener;\r
-}, "jalview.bin.JalviewLite,jalview.appletgui.AlignFrame,~S");\r
-Clazz.overrideMethod (c$, "selection", \r
-function (seqsel, colsel, source) {\r
-try {\r
-var setid = "";\r
-var viewid = "";\r
-var src = this._af;\r
-if (source != null) {\r
-if (Clazz.instanceOf (source, jalview.appletgui.AlignViewport) && (source).applet.currentAlignFrame.viewport === source) {\r
-src = (source).applet.currentAlignFrame;\r
-}}var seqs =  Clazz.newArray (-1, []);\r
-var cols =  Clazz.newArray (-1, []);\r
-var strt = 0;\r
-var end = (src == null) ? -1 : src.alignPanel.av.getAlignment ().getWidth ();\r
-if (seqsel != null && seqsel.getSize () > 0) {\r
-seqs =  new Array (seqsel.getSize ());\r
-for (var i = 0; i < seqs.length; i++) {\r
-seqs[i] = seqsel.getSequenceAt (i).getName ();\r
-}\r
-if (strt < seqsel.getStartRes ()) {\r
-strt = seqsel.getStartRes ();\r
-}if (end == -1 || end > seqsel.getEndRes ()) {\r
-end = seqsel.getEndRes ();\r
-}}if (colsel != null && colsel.size () > 0) {\r
-if (end == -1) {\r
-end = colsel.getMax () + 1;\r
-}cols =  new Array (colsel.getSelected ().size ());\r
-var d = 0;\r
-var r = -1;\r
-for (var i = 0; i < cols.length; i++) {\r
-cols[i] = "" + (1 + colsel.getSelected ().elementAt (i).intValue ());\r
-}\r
-} else {\r
-if (seqsel != null && seqsel.getSize () > 0) {\r
-cols =  new Array (2);\r
-cols[0] = "" + (1 + strt) + "-" + (1 + end);\r
-};}System.err.println ("Relaying selection to jsfunction:" + this._listener);\r
-this.executeJavascriptFunction (this._listener,  Clazz.newArray (-1, [src, setid, this.jvlite.arrayToSeparatorList (seqs), this.jvlite.arrayToSeparatorList (cols)]));\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.err.println ("Jalview Javascript exec error: Couldn't send selection message using function '" + this._listener + "'");\r
-ex.printStackTrace ();\r
-if (Clazz.instanceOf (ex, netscape.javascript.JSException)) {\r
-System.err.println ("Javascript Exception: " + (ex).getCause ().toString ());\r
-}} else {\r
-throw ex;\r
-}\r
-}\r
-}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");\r
-Clazz.overrideMethod (c$, "getAlignFrame", \r
-function () {\r
-return this._af;\r
-});\r
-Clazz.overrideMethod (c$, "getListenerFunction", \r
-function () {\r
-return this._listener;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.javascript");
+Clazz.load (["jalview.javascript.JSFunctionExec", "$.JsCallBack", "jalview.structure.SelectionListener"], "jalview.javascript.JsSelectionSender", ["jalview.appletgui.AlignViewport", "netscape.javascript.JSException"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this._af = null;
+this._listener = null;
+Clazz.instantialize (this, arguments);
+}, jalview.javascript, "JsSelectionSender", jalview.javascript.JSFunctionExec, [jalview.structure.SelectionListener, jalview.javascript.JsCallBack]);
+Clazz.makeConstructor (c$, 
+function (jvlite, af, listener) {
+Clazz.superConstructor (this, jalview.javascript.JsSelectionSender, [jvlite]);
+this._af = af;
+this._listener = listener;
+}, "jalview.bin.JalviewLite,jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "selection", 
+function (seqsel, colsel, source) {
+try {
+var setid = "";
+var viewid = "";
+var src = this._af;
+if (source != null) {
+if (Clazz.instanceOf (source, jalview.appletgui.AlignViewport) && (source).applet.currentAlignFrame.viewport === source) {
+src = (source).applet.currentAlignFrame;
+}}var seqs =  Clazz.newArray (-1, []);
+var cols =  Clazz.newArray (-1, []);
+var strt = 0;
+var end = (src == null) ? -1 : src.alignPanel.av.getAlignment ().getWidth ();
+if (seqsel != null && seqsel.getSize () > 0) {
+seqs =  new Array (seqsel.getSize ());
+for (var i = 0; i < seqs.length; i++) {
+seqs[i] = seqsel.getSequenceAt (i).getName ();
+}
+if (strt < seqsel.getStartRes ()) {
+strt = seqsel.getStartRes ();
+}if (end == -1 || end > seqsel.getEndRes ()) {
+end = seqsel.getEndRes ();
+}}if (colsel != null && colsel.size () > 0) {
+if (end == -1) {
+end = colsel.getMax () + 1;
+}cols =  new Array (colsel.getSelected ().size ());
+var d = 0;
+var r = -1;
+for (var i = 0; i < cols.length; i++) {
+cols[i] = "" + (1 + colsel.getSelected ().elementAt (i).intValue ());
+}
+} else {
+if (seqsel != null && seqsel.getSize () > 0) {
+cols =  new Array (2);
+cols[0] = "" + (1 + strt) + "-" + (1 + end);
+};}System.err.println ("Relaying selection to jsfunction:" + this._listener);
+this.executeJavascriptFunction (this._listener,  Clazz.newArray (-1, [src, setid, this.jvlite.arrayToSeparatorList (seqs), this.jvlite.arrayToSeparatorList (cols)]));
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Jalview Javascript exec error: Couldn't send selection message using function '" + this._listener + "'");
+ex.printStackTrace ();
+if (Clazz.instanceOf (ex, netscape.javascript.JSException)) {
+System.err.println ("Javascript Exception: " + (ex).getCause ().toString ());
+}} else {
+throw ex;
+}
+}
+}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
+Clazz.overrideMethod (c$, "getAlignFrame", 
+function () {
+return this._af;
+});
+Clazz.overrideMethod (c$, "getListenerFunction", 
+function () {
+return this._listener;
+});
+});
index 39cb7bc..de59a3e 100644 (file)
@@ -1,46 +1,46 @@
-Clazz.declarePackage ("jalview.javascript");\r
-Clazz.load (["jalview.javascript.JSFunctionExec", "$.JsCallBack", "jalview.structure.VamsasListener"], "jalview.javascript.MouseOverListener", ["jalview.appletgui.AlignViewport", "netscape.javascript.JSException"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this._af = null;\r
-this._listener = null;\r
-this.last = null;\r
-this.i = -1;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.javascript, "MouseOverListener", jalview.javascript.JSFunctionExec, [jalview.structure.VamsasListener, jalview.javascript.JsCallBack]);\r
-Clazz.overrideMethod (c$, "mouseOverSequence", \r
-function (seq, index, source) {\r
-if (seq !== this.last || this.i != index) {\r
-this.last = seq;\r
-this.i = index;\r
-var src = null;\r
-try {\r
-if (source != null) {\r
-if (Clazz.instanceOf (source, jalview.appletgui.AlignViewport) && (source).applet.currentAlignFrame.viewport === source) {\r
-src = (source).applet.currentAlignFrame;\r
-}}this.executeJavascriptFunction (this._listener,  Clazz.newArray (-1, [src, seq.getDisplayId (false), "" + (1 + this.i), "" + seq.findPosition (this.i)]));\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.err.println ("JalviewLite javascript error: Couldn't send mouseOver with handler '" + this._listener + "'");\r
-if (Clazz.instanceOf (ex, netscape.javascript.JSException)) {\r
-System.err.println ("Javascript Exception: " + (ex).getMessage ());\r
-}ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}}, "jalview.datamodel.SequenceI,~N,jalview.structure.VamsasSource");\r
-Clazz.makeConstructor (c$, \r
-function (applet, af, listener) {\r
-Clazz.superConstructor (this, jalview.javascript.MouseOverListener, [applet]);\r
-this._af = af;\r
-this._listener = listener;\r
-}, "jalview.bin.JalviewLite,jalview.appletgui.AlignFrame,~S");\r
-Clazz.overrideMethod (c$, "getAlignFrame", \r
-function () {\r
-return this._af;\r
-});\r
-Clazz.overrideMethod (c$, "getListenerFunction", \r
-function () {\r
-return this._listener;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.javascript");
+Clazz.load (["jalview.javascript.JSFunctionExec", "$.JsCallBack", "jalview.structure.VamsasListener"], "jalview.javascript.MouseOverListener", ["jalview.appletgui.AlignViewport", "netscape.javascript.JSException"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this._af = null;
+this._listener = null;
+this.last = null;
+this.i = -1;
+Clazz.instantialize (this, arguments);
+}, jalview.javascript, "MouseOverListener", jalview.javascript.JSFunctionExec, [jalview.structure.VamsasListener, jalview.javascript.JsCallBack]);
+Clazz.overrideMethod (c$, "mouseOverSequence", 
+function (seq, index, source) {
+if (seq !== this.last || this.i != index) {
+this.last = seq;
+this.i = index;
+var src = null;
+try {
+if (source != null) {
+if (Clazz.instanceOf (source, jalview.appletgui.AlignViewport) && (source).applet.currentAlignFrame.viewport === source) {
+src = (source).applet.currentAlignFrame;
+}}this.executeJavascriptFunction (this._listener,  Clazz.newArray (-1, [src, seq.getDisplayId (false), "" + (1 + this.i), "" + seq.findPosition (this.i)]));
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("JalviewLite javascript error: Couldn't send mouseOver with handler '" + this._listener + "'");
+if (Clazz.instanceOf (ex, netscape.javascript.JSException)) {
+System.err.println ("Javascript Exception: " + (ex).getMessage ());
+}ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}}, "jalview.datamodel.SequenceI,~N,jalview.structure.VamsasSource");
+Clazz.makeConstructor (c$, 
+function (applet, af, listener) {
+Clazz.superConstructor (this, jalview.javascript.MouseOverListener, [applet]);
+this._af = af;
+this._listener = listener;
+}, "jalview.bin.JalviewLite,jalview.appletgui.AlignFrame,~S");
+Clazz.overrideMethod (c$, "getAlignFrame", 
+function () {
+return this._af;
+});
+Clazz.overrideMethod (c$, "getListenerFunction", 
+function () {
+return this._listener;
+});
+});
index 12d1e2f..c897252 100644 (file)
-Clazz.declarePackage ("jalview.javascript");\r
-Clazz.load (["jalview.javascript.JSFunctionExec", "$.JsCallBack", "jalview.structure.StructureListener"], "jalview.javascript.MouseOverStructureListener", ["jalview.api.AlignmentViewPanel", "jalview.appletgui.FeatureRenderer", "jalview.ext.jmol.JmolCommands", "jalview.structure.StructureSelectionManager", "java.net.URL", "java.util.ArrayList"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this._listenerfn = null;\r
-this.modelSet = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.javascript, "MouseOverStructureListener", jalview.javascript.JSFunctionExec, [jalview.javascript.JsCallBack, jalview.structure.StructureListener]);\r
-Clazz.makeConstructor (c$, \r
-function (jalviewLite, listener, modelList) {\r
-Clazz.superConstructor (this, jalview.javascript.MouseOverStructureListener, [jalviewLite]);\r
-this._listenerfn = listener;\r
-this.modelSet = modelList;\r
-if (this.modelSet != null) {\r
-for (var i = 0; i < this.modelSet.length; i++) {\r
-try {\r
-if ( new java.net.URL (this.modelSet[i]).openConnection () != null) {\r
-continue;\r
-}} catch (x) {\r
-if (Clazz.exceptionOf (x, Exception)) {\r
-} else {\r
-throw x;\r
-}\r
-}\r
-;try {\r
-var db = this.jvlite.getDocumentBase ().toString ();\r
-db = db.substring (0, db.lastIndexOf ("/"));\r
-if ( new java.net.URL (db + "/" + this.modelSet[i]).openConnection () != null) {\r
-this.modelSet[i] = db + "/" + this.modelSet[i];\r
-continue;\r
-}} catch (x) {\r
-if (Clazz.exceptionOf (x, Exception)) {\r
-} else {\r
-throw x;\r
-}\r
-}\r
-;try {\r
-if ( new java.net.URL (this.jvlite.getCodeBase () + this.modelSet[i]).openConnection () != null) {\r
-this.modelSet[i] = this.jvlite.getCodeBase () + this.modelSet[i];\r
-continue;\r
-}} catch (x) {\r
-if (Clazz.exceptionOf (x, Exception)) {\r
-} else {\r
-throw x;\r
-}\r
-}\r
-;}\r
-}}, "jalview.bin.JalviewLite,~S,~A");\r
-Clazz.overrideMethod (c$, "getPdbFile", \r
-function () {\r
-return this.modelSet;\r
-});\r
-Clazz.defineMethod (c$, "mouseOverStructure", \r
-function (atomIndex, strInfo) {\r
-}, "~N,~S");\r
-Clazz.overrideMethod (c$, "highlightAtoms", \r
-function (atoms) {\r
-for (var atom, $atom = atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {\r
-try {\r
-this.executeJavascriptFunction (this._listenerfn,  Clazz.newArray (-1, ["mouseover", "" + atom.getPdbFile (), "" + atom.getChain (), "" + (atom.getPdbResNum ()), "" + atom.getAtomIndex ()]));\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.err.println ("Couldn't execute callback with " + this._listenerfn + " for atomSpec: " + atom);\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}\r
-}, "java.util.List");\r
-Clazz.overrideMethod (c$, "updateColours", \r
-function (srce) {\r
-var source = srce;\r
-var ssm = jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.jvlite);\r
-if (Clazz.instanceOf (source, jalview.api.AlignmentViewPanel)) {\r
-var sequence =  new Array (this.modelSet.length);\r
-for (var m = 0; m < this.modelSet.length; m++) {\r
-var sm = ssm.getMapping (this.modelSet[m]);\r
-if (sm != null && sm.length > 0) {\r
-sequence[m] =  new Array (sm.length);\r
-for (var i = 0; i < sm.length; i++) {\r
-sequence[m][i] = sm[i].getSequence ();\r
-}\r
-} else {\r
-sequence[m] =  new Array (0);\r
-}}\r
-var sr = (source).getSequenceRenderer ();\r
-var fr = (source).av.isShowSequenceFeatures () ?  new jalview.appletgui.FeatureRenderer ((source).av) : null;\r
-if (fr != null) {\r
-(fr).transferSettings ((source).getFeatureRenderer ());\r
-};var ccomands =  new java.util.ArrayList ();\r
-var pdbfn =  new java.util.ArrayList ();\r
-var colcommands = jalview.ext.jmol.JmolCommands.getColourBySequenceCommand (ssm, this.modelSet, sequence, sr, fr, (source).getAlignment ());\r
-if (colcommands == null) {\r
-return;\r
-}var sz = 0;\r
-for (var ccset, $ccset = 0, $$ccset = colcommands; $ccset < $$ccset.length && ((ccset = $$ccset[$ccset]) || true); $ccset++) {\r
-sz += ccset.commands.length;\r
-ccomands.add (ccset.commands);\r
-pdbfn.add (ccset.mapping);\r
-}\r
-var mclass;\r
-var mhandle;\r
-var ccomandset =  new Array (sz);\r
-sz = 0;\r
-for (var ccset, $ccset = ccomands.iterator (); $ccset.hasNext () && ((ccset = $ccset.next ()) || true);) {\r
-System.arraycopy (ccset, 0, ccomandset, sz, ccset.length);\r
-sz += ccset.length;\r
-}\r
-if (this.jvlite.isJsMessageSetChanged (mclass = "colourstruct", mhandle = (source).av.getViewId (), ccomandset)) {\r
-this.jvlite.setJsMessageSet (mclass, mhandle, ccomandset);\r
-var st =  Clazz.newArray (-1, ["colourstruct", "" + (source).av.getViewId (), "" + ccomandset.length, this.jvlite.arrayToSeparatorList (pdbfn.toArray ( new Array (pdbfn.size ())))]);\r
-try {\r
-this.executeJavascriptFunction (true, this._listenerfn, st);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.err.println ("Couldn't execute callback with " + this._listenerfn + " using args { " + st[0] + ", " + st[1] + ", " + st[2] + "," + st[3] + "}");\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}}}, "~O");\r
-Clazz.overrideMethod (c$, "getAlignFrame", \r
-function () {\r
-return null;\r
-});\r
-Clazz.overrideMethod (c$, "getListenerFunction", \r
-function () {\r
-return this._listenerfn;\r
-});\r
-Clazz.defineMethod (c$, "finalise", \r
-function () {\r
-this.jvlite = null;\r
-Clazz.superCall (this, jalview.javascript.MouseOverStructureListener, "finalize", []);\r
-});\r
-Clazz.overrideMethod (c$, "releaseReferences", \r
-function (svl) {\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "isListeningFor", \r
-function (seq) {\r
-return true;\r
-}, "jalview.datamodel.SequenceI");\r
-});\r
+Clazz.declarePackage ("jalview.javascript");
+Clazz.load (["jalview.javascript.JSFunctionExec", "$.JsCallBack", "jalview.structure.StructureListener"], "jalview.javascript.MouseOverStructureListener", ["jalview.api.AlignmentViewPanel", "jalview.appletgui.FeatureRenderer", "jalview.ext.jmol.JmolCommands", "jalview.structure.StructureSelectionManager", "java.net.URL", "java.util.ArrayList"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this._listenerfn = null;
+this.modelSet = null;
+Clazz.instantialize (this, arguments);
+}, jalview.javascript, "MouseOverStructureListener", jalview.javascript.JSFunctionExec, [jalview.javascript.JsCallBack, jalview.structure.StructureListener]);
+Clazz.makeConstructor (c$, 
+function (jalviewLite, listener, modelList) {
+Clazz.superConstructor (this, jalview.javascript.MouseOverStructureListener, [jalviewLite]);
+this._listenerfn = listener;
+this.modelSet = modelList;
+if (this.modelSet != null) {
+for (var i = 0; i < this.modelSet.length; i++) {
+try {
+if ( new java.net.URL (this.modelSet[i]).openConnection () != null) {
+continue;
+}} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+}
+;try {
+var db = this.jvlite.getDocumentBase ().toString ();
+db = db.substring (0, db.lastIndexOf ("/"));
+if ( new java.net.URL (db + "/" + this.modelSet[i]).openConnection () != null) {
+this.modelSet[i] = db + "/" + this.modelSet[i];
+continue;
+}} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+}
+;try {
+if ( new java.net.URL (this.jvlite.getCodeBase () + this.modelSet[i]).openConnection () != null) {
+this.modelSet[i] = this.jvlite.getCodeBase () + this.modelSet[i];
+continue;
+}} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+}
+;}
+}}, "jalview.bin.JalviewLite,~S,~A");
+Clazz.overrideMethod (c$, "getPdbFile", 
+function () {
+return this.modelSet;
+});
+Clazz.defineMethod (c$, "mouseOverStructure", 
+function (atomIndex, strInfo) {
+}, "~N,~S");
+Clazz.overrideMethod (c$, "highlightAtoms", 
+function (atoms) {
+for (var atom, $atom = atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {
+try {
+this.executeJavascriptFunction (this._listenerfn,  Clazz.newArray (-1, ["mouseover", "" + atom.getPdbFile (), "" + atom.getChain (), "" + (atom.getPdbResNum ()), "" + atom.getAtomIndex ()]));
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't execute callback with " + this._listenerfn + " for atomSpec: " + atom);
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}
+}, "java.util.List");
+Clazz.overrideMethod (c$, "updateColours", 
+function (srce) {
+var source = srce;
+var ssm = jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.jvlite);
+if (Clazz.instanceOf (source, jalview.api.AlignmentViewPanel)) {
+var sequence =  new Array (this.modelSet.length);
+for (var m = 0; m < this.modelSet.length; m++) {
+var sm = ssm.getMapping (this.modelSet[m]);
+if (sm != null && sm.length > 0) {
+sequence[m] =  new Array (sm.length);
+for (var i = 0; i < sm.length; i++) {
+sequence[m][i] = sm[i].getSequence ();
+}
+} else {
+sequence[m] =  new Array (0);
+}}
+var sr = (source).getSequenceRenderer ();
+var fr = (source).av.isShowSequenceFeatures () ?  new jalview.appletgui.FeatureRenderer ((source).av) : null;
+if (fr != null) {
+(fr).transferSettings ((source).getFeatureRenderer ());
+};var ccomands =  new java.util.ArrayList ();
+var pdbfn =  new java.util.ArrayList ();
+var colcommands = jalview.ext.jmol.JmolCommands.getColourBySequenceCommand (ssm, this.modelSet, sequence, sr, fr, (source).getAlignment ());
+if (colcommands == null) {
+return;
+}var sz = 0;
+for (var ccset, $ccset = 0, $$ccset = colcommands; $ccset < $$ccset.length && ((ccset = $$ccset[$ccset]) || true); $ccset++) {
+sz += ccset.commands.length;
+ccomands.add (ccset.commands);
+pdbfn.add (ccset.mapping);
+}
+var mclass;
+var mhandle;
+var ccomandset =  new Array (sz);
+sz = 0;
+for (var ccset, $ccset = ccomands.iterator (); $ccset.hasNext () && ((ccset = $ccset.next ()) || true);) {
+System.arraycopy (ccset, 0, ccomandset, sz, ccset.length);
+sz += ccset.length;
+}
+if (this.jvlite.isJsMessageSetChanged (mclass = "colourstruct", mhandle = (source).av.getViewId (), ccomandset)) {
+this.jvlite.setJsMessageSet (mclass, mhandle, ccomandset);
+var st =  Clazz.newArray (-1, ["colourstruct", "" + (source).av.getViewId (), "" + ccomandset.length, this.jvlite.arrayToSeparatorList (pdbfn.toArray ( new Array (pdbfn.size ())))]);
+try {
+this.executeJavascriptFunction (true, this._listenerfn, st);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't execute callback with " + this._listenerfn + " using args { " + st[0] + ", " + st[1] + ", " + st[2] + "," + st[3] + "}");
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}}}, "~O");
+Clazz.overrideMethod (c$, "getAlignFrame", 
+function () {
+return null;
+});
+Clazz.overrideMethod (c$, "getListenerFunction", 
+function () {
+return this._listenerfn;
+});
+Clazz.defineMethod (c$, "finalise", 
+function () {
+this.jvlite = null;
+Clazz.superCall (this, jalview.javascript.MouseOverStructureListener, "finalize", []);
+});
+Clazz.overrideMethod (c$, "releaseReferences", 
+function (svl) {
+}, "~O");
+Clazz.overrideMethod (c$, "isListeningFor", 
+function (seq) {
+return true;
+}, "jalview.datamodel.SequenceI");
+});
index 9963449..64acea4 100644 (file)
@@ -1,13 +1,13 @@
-Clazz.declarePackage ("jalview.jsdev");\r
-c$ = Clazz.declareType (jalview.jsdev, "Constants");\r
-Clazz.defineStatics (c$,\r
-"TCOFFEE_SCORE", "TCoffeeScore",\r
-"Phylip_FILE", 1,\r
-"Phylip_FILE_EXT", "phy",\r
-"Phylip_FILE_DESC", "PHYLIP",\r
-"JSON_FILE", 2,\r
-"JSON_FILE_EXT", "json",\r
-"JSON_FILE_DESC", "JSON",\r
-"Html_FILE", 3,\r
-"Html_FILE_EXT", "html",\r
-"Html_FILE_DESC", "HTML");\r
+Clazz.declarePackage ("jalview.jsdev");
+c$ = Clazz.declareType (jalview.jsdev, "Constants");
+Clazz.defineStatics (c$,
+"TCOFFEE_SCORE", "TCoffeeScore",
+"Phylip_FILE", 1,
+"Phylip_FILE_EXT", "phy",
+"Phylip_FILE_DESC", "PHYLIP",
+"JSON_FILE", 2,
+"JSON_FILE_EXT", "json",
+"JSON_FILE_DESC", "JSON",
+"Html_FILE", 3,
+"Html_FILE_EXT", "html",
+"Html_FILE_DESC", "HTML");
index 60cf065..9144c4b 100644 (file)
@@ -1,85 +1,85 @@
-Clazz.declarePackage ("jalview.jsdev");\r
-Clazz.load (["jalview.io.AlignFile"], "jalview.jsdev.GenericFileAdapter", ["jalview.datamodel.AlignmentI", "jalview.io.FileParse", "java.io.BufferedReader", "$.InputStreamReader", "java.net.URL"], function () {\r
-c$ = Clazz.declareType (jalview.jsdev, "GenericFileAdapter", jalview.io.AlignFile);\r
-c$.getFile = Clazz.defineMethod (c$, "getFile", \r
-function (fileType, params) {\r
-var cl = null;\r
-try {\r
-cl = Class.forName ("jalview.io." + fileType);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, ClassNotFoundException)) {\r
-System.err.println ("did not find file jalview.io." + fileType);\r
-return null;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-var m;\r
-var ex = null;\r
-try {\r
-switch (params.length) {\r
-case 0:\r
-return cl.newInstance ();\r
-case 1:\r
-m = (Clazz.instanceOf (params[0], jalview.io.FileParse) ? cl.getConstructor ([jalview.io.FileParse]) : cl.getConstructor ([jalview.datamodel.AlignmentI]));\r
-break;\r
-case 2:\r
-m = cl.getConstructor ([String, String]);\r
-break;\r
-default:\r
-return null;\r
-}\r
-return m.newInstance (params);\r
-} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, InstantiationException)) {\r
-var e = e$$;\r
-{\r
-ex = e;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
-var e = e$$;\r
-{\r
-ex = e;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, NoSuchMethodException)) {\r
-var e = e$$;\r
-{\r
-ex = e;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, SecurityException)) {\r
-var e = e$$;\r
-{\r
-ex = e;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, IllegalArgumentException)) {\r
-var e = e$$;\r
-{\r
-ex = e;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {\r
-var e = e$$;\r
-{\r
-ex = e;\r
-}\r
-} else {\r
-throw e$$;\r
-}\r
-}\r
-if (ex != null) {\r
-System.err.println ("Error in GenericFileAdapter: " + ex);\r
-{\r
-alert(ex)\r
-}}return null;\r
-}, "~S,~A");\r
-c$.isJS = Clazz.defineMethod (c$, "isJS", \r
-function () {\r
-{\r
-return true;\r
-}});\r
-c$.getReader = Clazz.defineMethod (c$, "getReader", \r
-function (fileName, forceURL) {\r
-if (!forceURL && !jalview.jsdev.GenericFileAdapter.isJS ()) return  new java.io.BufferedReader ( new java.io.FileReader (fileName));\r
-if (fileName.indexOf ("//") < 0) fileName = "file://" + fileName;\r
-return  new java.io.BufferedReader ( new java.io.InputStreamReader ( new java.net.URL (fileName).openStream ()));\r
-}, "~S,~B");\r
-});\r
+Clazz.declarePackage ("jalview.jsdev");
+Clazz.load (["jalview.io.AlignFile"], "jalview.jsdev.GenericFileAdapter", ["jalview.datamodel.AlignmentI", "jalview.io.FileParse", "java.io.BufferedReader", "$.InputStreamReader", "java.net.URL"], function () {
+c$ = Clazz.declareType (jalview.jsdev, "GenericFileAdapter", jalview.io.AlignFile);
+c$.getFile = Clazz.defineMethod (c$, "getFile", 
+function (fileType, params) {
+var cl = null;
+try {
+cl = Class.forName ("jalview.io." + fileType);
+} catch (e) {
+if (Clazz.exceptionOf (e, ClassNotFoundException)) {
+System.err.println ("did not find file jalview.io." + fileType);
+return null;
+} else {
+throw e;
+}
+}
+var m;
+var ex = null;
+try {
+switch (params.length) {
+case 0:
+return cl.newInstance ();
+case 1:
+m = (Clazz.instanceOf (params[0], jalview.io.FileParse) ? cl.getConstructor ([jalview.io.FileParse]) : cl.getConstructor ([jalview.datamodel.AlignmentI]));
+break;
+case 2:
+m = cl.getConstructor ([String, String]);
+break;
+default:
+return null;
+}
+return m.newInstance (params);
+} catch (e$$) {
+if (Clazz.exceptionOf (e$$, InstantiationException)) {
+var e = e$$;
+{
+ex = e;
+}
+} else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {
+var e = e$$;
+{
+ex = e;
+}
+} else if (Clazz.exceptionOf (e$$, NoSuchMethodException)) {
+var e = e$$;
+{
+ex = e;
+}
+} else if (Clazz.exceptionOf (e$$, SecurityException)) {
+var e = e$$;
+{
+ex = e;
+}
+} else if (Clazz.exceptionOf (e$$, IllegalArgumentException)) {
+var e = e$$;
+{
+ex = e;
+}
+} else if (Clazz.exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {
+var e = e$$;
+{
+ex = e;
+}
+} else {
+throw e$$;
+}
+}
+if (ex != null) {
+System.err.println ("Error in GenericFileAdapter: " + ex);
+{
+alert(ex)
+}}return null;
+}, "~S,~A");
+c$.isJS = Clazz.defineMethod (c$, "isJS", 
+function () {
+{
+return true;
+}});
+c$.getReader = Clazz.defineMethod (c$, "getReader", 
+function (fileName, forceURL) {
+if (!forceURL && !jalview.jsdev.GenericFileAdapter.isJS ()) return  new java.io.BufferedReader ( new java.io.FileReader (fileName));
+if (fileName.indexOf ("//") < 0) fileName = "file://" + fileName;
+return  new java.io.BufferedReader ( new java.io.InputStreamReader ( new java.net.URL (fileName).openStream ()));
+}, "~S,~B");
+});
index 4dcc13e..08e9c64 100644 (file)
@@ -1,55 +1,55 @@
-Clazz.declarePackage ("jalview.jsdev");\r
-Clazz.load (["jalview.jsdev.api.RegExpInterface"], "jalview.jsdev.JSRegex", null, function () {\r
-c$ = Clazz.declareType (jalview.jsdev, "JSRegex", null, jalview.jsdev.api.RegExpInterface);\r
-Clazz.overrideMethod (c$, "charsMatched", \r
-function () {\r
-return 0;\r
-});\r
-Clazz.overrideMethod (c$, "left", \r
-function () {\r
-return null;\r
-});\r
-Clazz.overrideMethod (c$, "matchedFrom", \r
-function () {\r
-return 0;\r
-});\r
-Clazz.overrideMethod (c$, "matchedFromI", \r
-function (pos) {\r
-return 0;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "matchedTo", \r
-function () {\r
-return 0;\r
-});\r
-Clazz.overrideMethod (c$, "matchedToI", \r
-function (pos) {\r
-return 0;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "numSubs", \r
-function () {\r
-return 0;\r
-});\r
-Clazz.overrideMethod (c$, "replaceAll", \r
-function (string) {\r
-return null;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "search", \r
-function (str) {\r
-return false;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "searchFrom", \r
-function (string, rematchat) {\r
-return false;\r
-}, "~S,~N");\r
-Clazz.overrideMethod (c$, "setIgnoreCase", \r
-function (b) {\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "stringMatched", \r
-function () {\r
-return null;\r
-});\r
-Clazz.overrideMethod (c$, "stringMatchedI", \r
-function (i) {\r
-return null;\r
-}, "~N");\r
-});\r
+Clazz.declarePackage ("jalview.jsdev");
+Clazz.load (["jalview.jsdev.api.RegExpInterface"], "jalview.jsdev.JSRegex", null, function () {
+c$ = Clazz.declareType (jalview.jsdev, "JSRegex", null, jalview.jsdev.api.RegExpInterface);
+Clazz.overrideMethod (c$, "charsMatched", 
+function () {
+return 0;
+});
+Clazz.overrideMethod (c$, "left", 
+function () {
+return null;
+});
+Clazz.overrideMethod (c$, "matchedFrom", 
+function () {
+return 0;
+});
+Clazz.overrideMethod (c$, "matchedFromI", 
+function (pos) {
+return 0;
+}, "~N");
+Clazz.overrideMethod (c$, "matchedTo", 
+function () {
+return 0;
+});
+Clazz.overrideMethod (c$, "matchedToI", 
+function (pos) {
+return 0;
+}, "~N");
+Clazz.overrideMethod (c$, "numSubs", 
+function () {
+return 0;
+});
+Clazz.overrideMethod (c$, "replaceAll", 
+function (string) {
+return null;
+}, "~S");
+Clazz.overrideMethod (c$, "search", 
+function (str) {
+return false;
+}, "~S");
+Clazz.overrideMethod (c$, "searchFrom", 
+function (string, rematchat) {
+return false;
+}, "~S,~N");
+Clazz.overrideMethod (c$, "setIgnoreCase", 
+function (b) {
+}, "~B");
+Clazz.overrideMethod (c$, "stringMatched", 
+function () {
+return null;
+});
+Clazz.overrideMethod (c$, "stringMatchedI", 
+function (i) {
+return null;
+}, "~N");
+});
index 735a4b6..5d67e59 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.jsdev");\r
-Clazz.declareInterface (jalview.jsdev, "JavaScriptRegExp");\r
+Clazz.declarePackage ("jalview.jsdev");
+Clazz.declareInterface (jalview.jsdev, "JavaScriptRegExp");
index ffb883f..8b2e026 100644 (file)
@@ -1,15 +1,15 @@
-Clazz.declarePackage ("jalview.jsdev");\r
-Clazz.load (null, "jalview.jsdev.RegExp", ["com.stevesoft.pat.Regex"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.rg = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.jsdev, "RegExp");\r
-c$.newRegex = Clazz.defineMethod (c$, "newRegex", \r
-function (params) {\r
-return  new com.stevesoft.pat.Regex (params.length < 1 ? null : params[0], params.length < 2 ? "" : params[1]);\r
-}, "~A");\r
-c$.perlCode = Clazz.defineMethod (c$, "perlCode", \r
-function (s) {\r
-return com.stevesoft.pat.Regex.perlCode (s);\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("jalview.jsdev");
+Clazz.load (null, "jalview.jsdev.RegExp", ["com.stevesoft.pat.Regex"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.rg = null;
+Clazz.instantialize (this, arguments);
+}, jalview.jsdev, "RegExp");
+c$.newRegex = Clazz.defineMethod (c$, "newRegex", 
+function (params) {
+return  new com.stevesoft.pat.Regex (params.length < 1 ? null : params[0], params.length < 2 ? "" : params[1]);
+}, "~A");
+c$.perlCode = Clazz.defineMethod (c$, "perlCode", 
+function (s) {
+return com.stevesoft.pat.Regex.perlCode (s);
+}, "~S");
+});
index 5dfe0cd..48bb568 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.jsdev.api");\r
-Clazz.declareInterface (jalview.jsdev.api, "RegExpInterface");\r
+Clazz.declarePackage ("jalview.jsdev.api");
+Clazz.declareInterface (jalview.jsdev.api, "RegExpInterface");
index c2ec8a3..1fa65f5 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.jsdev.api");\r
-Clazz.declareInterface (jalview.jsdev.api, "VarnaRNA");\r
+Clazz.declarePackage ("jalview.jsdev.api");
+Clazz.declareInterface (jalview.jsdev.api, "VarnaRNA");
index 178fe61..2a23983 100644 (file)
@@ -1,27 +1,27 @@
-Clazz.declarePackage ("jalview.math");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.width = 0;\r
-this.height = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.math, "AlignmentDimension");\r
-Clazz.makeConstructor (c$, \r
-function (width, height) {\r
-this.width = width;\r
-this.height = height;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getWidth", \r
-function () {\r
-return this.width;\r
-});\r
-Clazz.defineMethod (c$, "setWidth", \r
-function (width) {\r
-this.width = width;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getHeight", \r
-function () {\r
-return this.height;\r
-});\r
-Clazz.defineMethod (c$, "setHeight", \r
-function (height) {\r
-this.height = height;\r
-}, "~N");\r
+Clazz.declarePackage ("jalview.math");
+c$ = Clazz.decorateAsClass (function () {
+this.width = 0;
+this.height = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.math, "AlignmentDimension");
+Clazz.makeConstructor (c$, 
+function (width, height) {
+this.width = width;
+this.height = height;
+}, "~N,~N");
+Clazz.defineMethod (c$, "getWidth", 
+function () {
+return this.width;
+});
+Clazz.defineMethod (c$, "setWidth", 
+function (width) {
+this.width = width;
+}, "~N");
+Clazz.defineMethod (c$, "getHeight", 
+function () {
+return this.height;
+});
+Clazz.defineMethod (c$, "setHeight", 
+function (height) {
+this.height = height;
+}, "~N");
index ff18c28..3bb0722 100644 (file)
Binary files a/bin/jalview/math/Matrix.class and b/bin/jalview/math/Matrix.class differ
index e260277..22cb59d 100644 (file)
-Clazz.declarePackage ("jalview.math");\r
-Clazz.load (null, "jalview.math.Matrix", ["jalview.util.Format", "$.MessageManager", "java.lang.Exception"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.value = null;\r
-this.rows = 0;\r
-this.cols = 0;\r
-this.d = null;\r
-this.e = null;\r
-this.maxIter = 45;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.math, "Matrix");\r
-Clazz.makeConstructor (c$, \r
-function (value, rows, cols) {\r
-this.rows = rows;\r
-this.cols = cols;\r
-this.value = value;\r
-}, "~A,~N,~N");\r
-Clazz.defineMethod (c$, "transpose", \r
-function () {\r
-var out =  Clazz.newDoubleArray (this.cols, this.rows, 0);\r
-for (var i = 0; i < this.cols; i++) {\r
-for (var j = 0; j < this.rows; j++) {\r
-out[i][j] = this.value[j][i];\r
-}\r
-}\r
-return  new jalview.math.Matrix (out, this.cols, this.rows);\r
-});\r
-Clazz.defineMethod (c$, "print", \r
-function (ps) {\r
-for (var i = 0; i < this.rows; i++) {\r
-for (var j = 0; j < this.cols; j++) {\r
-jalview.util.Format.printDouble (ps, "%8.2f", this.value[i][j]);\r
-}\r
-ps.println ();\r
-}\r
-}, "java.io.PrintStream");\r
-Clazz.defineMethod (c$, "preMultiply", \r
-function ($in) {\r
-var tmp =  Clazz.newDoubleArray ($in.rows, this.cols, 0);\r
-for (var i = 0; i < $in.rows; i++) {\r
-for (var j = 0; j < this.cols; j++) {\r
-tmp[i][j] = 0.0;\r
-for (var k = 0; k < $in.cols; k++) {\r
-tmp[i][j] += ($in.value[i][k] * this.value[k][j]);\r
-}\r
-}\r
-}\r
-return  new jalview.math.Matrix (tmp, $in.rows, this.cols);\r
-}, "jalview.math.Matrix");\r
-Clazz.defineMethod (c$, "vectorPostMultiply", \r
-function ($in) {\r
-var out =  Clazz.newDoubleArray ($in.length, 0);\r
-for (var i = 0; i < $in.length; i++) {\r
-out[i] = 0.0;\r
-for (var k = 0; k < $in.length; k++) {\r
-out[i] += (this.value[i][k] * $in[k]);\r
-}\r
-}\r
-return out;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "postMultiply", \r
-function ($in) {\r
-var out =  Clazz.newDoubleArray (this.rows, $in.cols, 0);\r
-for (var i = 0; i < this.rows; i++) {\r
-for (var j = 0; j < $in.cols; j++) {\r
-out[i][j] = 0.0;\r
-for (var k = 0; k < this.rows; k++) {\r
-out[i][j] = out[i][j] + (this.value[i][k] * $in.value[k][j]);\r
-}\r
-}\r
-}\r
-return  new jalview.math.Matrix (out, this.cols, $in.rows);\r
-}, "jalview.math.Matrix");\r
-Clazz.defineMethod (c$, "copy", \r
-function () {\r
-var newmat =  Clazz.newDoubleArray (this.rows, this.cols, 0);\r
-for (var i = 0; i < this.rows; i++) {\r
-for (var j = 0; j < this.cols; j++) {\r
-newmat[i][j] = this.value[i][j];\r
-}\r
-}\r
-return  new jalview.math.Matrix (newmat, this.rows, this.cols);\r
-});\r
-Clazz.defineMethod (c$, "tred", \r
-function () {\r
-var n = this.rows;\r
-var l;\r
-var k;\r
-var j;\r
-var i;\r
-var scale;\r
-var hh;\r
-var h;\r
-var g;\r
-var f;\r
-this.d =  Clazz.newDoubleArray (this.rows, 0);\r
-this.e =  Clazz.newDoubleArray (this.rows, 0);\r
-for (i = n; i >= 2; i--) {\r
-l = i - 1;\r
-h = 0.0;\r
-scale = 0.0;\r
-if (l > 1) {\r
-for (k = 1; k <= l; k++) {\r
-scale += Math.abs (this.value[i - 1][k - 1]);\r
-}\r
-if (scale == 0.0) {\r
-this.e[i - 1] = this.value[i - 1][l - 1];\r
-} else {\r
-for (k = 1; k <= l; k++) {\r
-this.value[i - 1][k - 1] /= scale;\r
-h += (this.value[i - 1][k - 1] * this.value[i - 1][k - 1]);\r
-}\r
-f = this.value[i - 1][l - 1];\r
-if (f > 0) {\r
-g = -1.0 * Math.sqrt (h);\r
-} else {\r
-g = Math.sqrt (h);\r
-}this.e[i - 1] = scale * g;\r
-h -= (f * g);\r
-this.value[i - 1][l - 1] = f - g;\r
-f = 0.0;\r
-for (j = 1; j <= l; j++) {\r
-this.value[j - 1][i - 1] = this.value[i - 1][j - 1] / h;\r
-g = 0.0;\r
-for (k = 1; k <= j; k++) {\r
-g += (this.value[j - 1][k - 1] * this.value[i - 1][k - 1]);\r
-}\r
-for (k = j + 1; k <= l; k++) {\r
-g += (this.value[k - 1][j - 1] * this.value[i - 1][k - 1]);\r
-}\r
-this.e[j - 1] = g / h;\r
-f += (this.e[j - 1] * this.value[i - 1][j - 1]);\r
-}\r
-hh = f / (h + h);\r
-for (j = 1; j <= l; j++) {\r
-f = this.value[i - 1][j - 1];\r
-g = this.e[j - 1] - (hh * f);\r
-this.e[j - 1] = g;\r
-for (k = 1; k <= j; k++) {\r
-this.value[j - 1][k - 1] -= ((f * this.e[k - 1]) + (g * this.value[i - 1][k - 1]));\r
-}\r
-}\r
-}} else {\r
-this.e[i - 1] = this.value[i - 1][l - 1];\r
-}this.d[i - 1] = h;\r
-}\r
-this.d[0] = 0.0;\r
-this.e[0] = 0.0;\r
-for (i = 1; i <= n; i++) {\r
-l = i - 1;\r
-if (this.d[i - 1] != 0.0) {\r
-for (j = 1; j <= l; j++) {\r
-g = 0.0;\r
-for (k = 1; k <= l; k++) {\r
-g += (this.value[i - 1][k - 1] * this.value[k - 1][j - 1]);\r
-}\r
-for (k = 1; k <= l; k++) {\r
-this.value[k - 1][j - 1] -= (g * this.value[k - 1][i - 1]);\r
-}\r
-}\r
-}this.d[i - 1] = this.value[i - 1][i - 1];\r
-this.value[i - 1][i - 1] = 1.0;\r
-for (j = 1; j <= l; j++) {\r
-this.value[j - 1][i - 1] = 0.0;\r
-this.value[i - 1][j - 1] = 0.0;\r
-}\r
-}\r
-});\r
-Clazz.defineMethod (c$, "tqli", \r
-function () {\r
-var n = this.rows;\r
-var m;\r
-var l;\r
-var iter;\r
-var i;\r
-var k;\r
-var s;\r
-var r;\r
-var p;\r
-;var g;\r
-var f;\r
-var dd;\r
-var c;\r
-var b;\r
-for (i = 2; i <= n; i++) {\r
-this.e[i - 2] = this.e[i - 1];\r
-}\r
-this.e[n - 1] = 0.0;\r
-for (l = 1; l <= n; l++) {\r
-iter = 0;\r
-do {\r
-for (m = l; m <= (n - 1); m++) {\r
-dd = Math.abs (this.d[m - 1]) + Math.abs (this.d[m]);\r
-if ((Math.abs (this.e[m - 1]) + dd) == dd) {\r
-break;\r
-}}\r
-if (m != l) {\r
-iter++;\r
-if (iter == this.maxIter) {\r
-throw  new Exception (jalview.util.MessageManager.formatMessage ("exception.matrix_too_many_iteration",  Clazz.newArray (-1, ["tqli", Integer.$valueOf (this.maxIter).toString ()])));\r
-} else {\r
-}g = (this.d[l] - this.d[l - 1]) / (2.0 * this.e[l - 1]);\r
-r = Math.sqrt ((g * g) + 1.0);\r
-g = this.d[m - 1] - this.d[l - 1] + (this.e[l - 1] / (g + this.sign (r, g)));\r
-c = 1.0;\r
-s = c;\r
-p = 0.0;\r
-for (i = m - 1; i >= l; i--) {\r
-f = s * this.e[i - 1];\r
-b = c * this.e[i - 1];\r
-if (Math.abs (f) >= Math.abs (g)) {\r
-c = g / f;\r
-r = Math.sqrt ((c * c) + 1.0);\r
-this.e[i] = f * r;\r
-s = 1.0 / r;\r
-c *= s;\r
-} else {\r
-s = f / g;\r
-r = Math.sqrt ((s * s) + 1.0);\r
-this.e[i] = g * r;\r
-c = 1.0 / r;\r
-s *= c;\r
-}g = this.d[i] - p;\r
-r = ((this.d[i - 1] - g) * s) + (2.0 * c * b);\r
-p = s * r;\r
-this.d[i] = g + p;\r
-g = (c * r) - b;\r
-for (k = 1; k <= n; k++) {\r
-f = this.value[k - 1][i];\r
-this.value[k - 1][i] = (s * this.value[k - 1][i - 1]) + (c * f);\r
-this.value[k - 1][i - 1] = (c * this.value[k - 1][i - 1]) - (s * f);\r
-}\r
-}\r
-this.d[l - 1] = this.d[l - 1] - p;\r
-this.e[l - 1] = g;\r
-this.e[m - 1] = 0.0;\r
-}} while (m != l);\r
-}\r
-});\r
-Clazz.defineMethod (c$, "tred2", \r
-function () {\r
-var n = this.rows;\r
-var l;\r
-var k;\r
-var j;\r
-var i;\r
-var scale;\r
-var hh;\r
-var h;\r
-var g;\r
-var f;\r
-this.d =  Clazz.newDoubleArray (this.rows, 0);\r
-this.e =  Clazz.newDoubleArray (this.rows, 0);\r
-for (i = n - 1; i >= 1; i--) {\r
-l = i - 1;\r
-h = 0.0;\r
-scale = 0.0;\r
-if (l > 0) {\r
-for (k = 0; k < l; k++) {\r
-scale += Math.abs (this.value[i][k]);\r
-}\r
-if (scale == 0.0) {\r
-this.e[i] = this.value[i][l];\r
-} else {\r
-for (k = 0; k < l; k++) {\r
-this.value[i][k] /= scale;\r
-h += (this.value[i][k] * this.value[i][k]);\r
-}\r
-f = this.value[i][l];\r
-if (f > 0) {\r
-g = -1.0 * Math.sqrt (h);\r
-} else {\r
-g = Math.sqrt (h);\r
-}this.e[i] = scale * g;\r
-h -= (f * g);\r
-this.value[i][l] = f - g;\r
-f = 0.0;\r
-for (j = 0; j < l; j++) {\r
-this.value[j][i] = this.value[i][j] / h;\r
-g = 0.0;\r
-for (k = 0; k < j; k++) {\r
-g += (this.value[j][k] * this.value[i][k]);\r
-}\r
-for (k = j; k < l; k++) {\r
-g += (this.value[k][j] * this.value[i][k]);\r
-}\r
-this.e[j] = g / h;\r
-f += (this.e[j] * this.value[i][j]);\r
-}\r
-hh = f / (h + h);\r
-for (j = 0; j < l; j++) {\r
-f = this.value[i][j];\r
-g = this.e[j] - (hh * f);\r
-this.e[j] = g;\r
-for (k = 0; k < j; k++) {\r
-this.value[j][k] -= ((f * this.e[k]) + (g * this.value[i][k]));\r
-}\r
-}\r
-}} else {\r
-this.e[i] = this.value[i][l];\r
-}this.d[i] = h;\r
-}\r
-this.d[0] = 0.0;\r
-this.e[0] = 0.0;\r
-for (i = 0; i < n; i++) {\r
-l = i - 1;\r
-if (this.d[i] != 0.0) {\r
-for (j = 0; j < l; j++) {\r
-g = 0.0;\r
-for (k = 0; k < l; k++) {\r
-g += (this.value[i][k] * this.value[k][j]);\r
-}\r
-for (k = 0; k < l; k++) {\r
-this.value[k][j] -= (g * this.value[k][i]);\r
-}\r
-}\r
-}this.d[i] = this.value[i][i];\r
-this.value[i][i] = 1.0;\r
-for (j = 0; j < l; j++) {\r
-this.value[j][i] = 0.0;\r
-this.value[i][j] = 0.0;\r
-}\r
-}\r
-});\r
-Clazz.defineMethod (c$, "tqli2", \r
-function () {\r
-var n = this.rows;\r
-var m;\r
-var l;\r
-var iter;\r
-var i;\r
-var k;\r
-var s;\r
-var r;\r
-var p;\r
-;var g;\r
-var f;\r
-var dd;\r
-var c;\r
-var b;\r
-for (i = 2; i <= n; i++) {\r
-this.e[i - 2] = this.e[i - 1];\r
-}\r
-this.e[n - 1] = 0.0;\r
-for (l = 1; l <= n; l++) {\r
-iter = 0;\r
-do {\r
-for (m = l; m <= (n - 1); m++) {\r
-dd = Math.abs (this.d[m - 1]) + Math.abs (this.d[m]);\r
-if ((Math.abs (this.e[m - 1]) + dd) == dd) {\r
-break;\r
-}}\r
-if (m != l) {\r
-iter++;\r
-if (iter == this.maxIter) {\r
-throw  new Exception (jalview.util.MessageManager.formatMessage ("exception.matrix_too_many_iteration",  Clazz.newArray (-1, ["tqli2", Integer.$valueOf (this.maxIter).toString ()])));\r
-} else {\r
-}g = (this.d[l] - this.d[l - 1]) / (2.0 * this.e[l - 1]);\r
-r = Math.sqrt ((g * g) + 1.0);\r
-g = this.d[m - 1] - this.d[l - 1] + (this.e[l - 1] / (g + this.sign (r, g)));\r
-c = 1.0;\r
-s = c;\r
-p = 0.0;\r
-for (i = m - 1; i >= l; i--) {\r
-f = s * this.e[i - 1];\r
-b = c * this.e[i - 1];\r
-if (Math.abs (f) >= Math.abs (g)) {\r
-c = g / f;\r
-r = Math.sqrt ((c * c) + 1.0);\r
-this.e[i] = f * r;\r
-s = 1.0 / r;\r
-c *= s;\r
-} else {\r
-s = f / g;\r
-r = Math.sqrt ((s * s) + 1.0);\r
-this.e[i] = g * r;\r
-c = 1.0 / r;\r
-s *= c;\r
-}g = this.d[i] - p;\r
-r = ((this.d[i - 1] - g) * s) + (2.0 * c * b);\r
-p = s * r;\r
-this.d[i] = g + p;\r
-g = (c * r) - b;\r
-for (k = 1; k <= n; k++) {\r
-f = this.value[k - 1][i];\r
-this.value[k - 1][i] = (s * this.value[k - 1][i - 1]) + (c * f);\r
-this.value[k - 1][i - 1] = (c * this.value[k - 1][i - 1]) - (s * f);\r
-}\r
-}\r
-this.d[l - 1] = this.d[l - 1] - p;\r
-this.e[l - 1] = g;\r
-this.e[m - 1] = 0.0;\r
-}} while (m != l);\r
-}\r
-});\r
-Clazz.defineMethod (c$, "sign", \r
-function (a, b) {\r
-if (b < 0) {\r
-return -Math.abs (a);\r
-} else {\r
-return Math.abs (a);\r
-}}, "~N,~N");\r
-Clazz.defineMethod (c$, "getColumn", \r
-function (n) {\r
-var out =  Clazz.newDoubleArray (this.rows, 0);\r
-for (var i = 0; i < this.rows; i++) {\r
-out[i] = this.value[i][n];\r
-}\r
-return out;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "printD", \r
-function (ps) {\r
-for (var j = 0; j < this.rows; j++) {\r
-jalview.util.Format.printDouble (ps, "%15.4e", this.d[j]);\r
-}\r
-}, "java.io.PrintStream");\r
-Clazz.defineMethod (c$, "printE", \r
-function (ps) {\r
-for (var j = 0; j < this.rows; j++) {\r
-jalview.util.Format.printDouble (ps, "%15.4e", this.e[j]);\r
-}\r
-}, "java.io.PrintStream");\r
-});\r
+Clazz.declarePackage ("jalview.math");
+Clazz.load (null, "jalview.math.Matrix", ["jalview.util.Format", "$.MessageManager", "java.lang.Exception"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.value = null;
+this.rows = 0;
+this.cols = 0;
+this.d = null;
+this.e = null;
+this.maxIter = 45;
+Clazz.instantialize (this, arguments);
+}, jalview.math, "Matrix");
+Clazz.makeConstructor (c$, 
+function (value, rows, cols) {
+this.rows = rows;
+this.cols = cols;
+this.value = value;
+}, "~A,~N,~N");
+Clazz.defineMethod (c$, "transpose", 
+function () {
+var out =  Clazz.newDoubleArray (this.cols, this.rows, 0);
+for (var i = 0; i < this.cols; i++) {
+for (var j = 0; j < this.rows; j++) {
+out[i][j] = this.value[j][i];
+}
+}
+return  new jalview.math.Matrix (out, this.cols, this.rows);
+});
+Clazz.defineMethod (c$, "print", 
+function (ps) {
+for (var i = 0; i < this.rows; i++) {
+for (var j = 0; j < this.cols; j++) {
+jalview.util.Format.printDouble (ps, "%8.2f", this.value[i][j]);
+}
+ps.println ();
+}
+}, "java.io.PrintStream");
+Clazz.defineMethod (c$, "preMultiply", 
+function ($in) {
+var tmp =  Clazz.newDoubleArray ($in.rows, this.cols, 0);
+for (var i = 0; i < $in.rows; i++) {
+for (var j = 0; j < this.cols; j++) {
+tmp[i][j] = 0.0;
+for (var k = 0; k < $in.cols; k++) {
+tmp[i][j] += ($in.value[i][k] * this.value[k][j]);
+}
+}
+}
+return  new jalview.math.Matrix (tmp, $in.rows, this.cols);
+}, "jalview.math.Matrix");
+Clazz.defineMethod (c$, "vectorPostMultiply", 
+function ($in) {
+var out =  Clazz.newDoubleArray ($in.length, 0);
+for (var i = 0; i < $in.length; i++) {
+out[i] = 0.0;
+for (var k = 0; k < $in.length; k++) {
+out[i] += (this.value[i][k] * $in[k]);
+}
+}
+return out;
+}, "~A");
+Clazz.defineMethod (c$, "postMultiply", 
+function ($in) {
+var out =  Clazz.newDoubleArray (this.rows, $in.cols, 0);
+for (var i = 0; i < this.rows; i++) {
+for (var j = 0; j < $in.cols; j++) {
+out[i][j] = 0.0;
+for (var k = 0; k < this.rows; k++) {
+out[i][j] = out[i][j] + (this.value[i][k] * $in.value[k][j]);
+}
+}
+}
+return  new jalview.math.Matrix (out, this.cols, $in.rows);
+}, "jalview.math.Matrix");
+Clazz.defineMethod (c$, "copy", 
+function () {
+var newmat =  Clazz.newDoubleArray (this.rows, this.cols, 0);
+for (var i = 0; i < this.rows; i++) {
+for (var j = 0; j < this.cols; j++) {
+newmat[i][j] = this.value[i][j];
+}
+}
+return  new jalview.math.Matrix (newmat, this.rows, this.cols);
+});
+Clazz.defineMethod (c$, "tred", 
+function () {
+var n = this.rows;
+var l;
+var k;
+var j;
+var i;
+var scale;
+var hh;
+var h;
+var g;
+var f;
+this.d =  Clazz.newDoubleArray (this.rows, 0);
+this.e =  Clazz.newDoubleArray (this.rows, 0);
+for (i = n; i >= 2; i--) {
+l = i - 1;
+h = 0.0;
+scale = 0.0;
+if (l > 1) {
+for (k = 1; k <= l; k++) {
+scale += Math.abs (this.value[i - 1][k - 1]);
+}
+if (scale == 0.0) {
+this.e[i - 1] = this.value[i - 1][l - 1];
+} else {
+for (k = 1; k <= l; k++) {
+this.value[i - 1][k - 1] /= scale;
+h += (this.value[i - 1][k - 1] * this.value[i - 1][k - 1]);
+}
+f = this.value[i - 1][l - 1];
+if (f > 0) {
+g = -1.0 * Math.sqrt (h);
+} else {
+g = Math.sqrt (h);
+}this.e[i - 1] = scale * g;
+h -= (f * g);
+this.value[i - 1][l - 1] = f - g;
+f = 0.0;
+for (j = 1; j <= l; j++) {
+this.value[j - 1][i - 1] = this.value[i - 1][j - 1] / h;
+g = 0.0;
+for (k = 1; k <= j; k++) {
+g += (this.value[j - 1][k - 1] * this.value[i - 1][k - 1]);
+}
+for (k = j + 1; k <= l; k++) {
+g += (this.value[k - 1][j - 1] * this.value[i - 1][k - 1]);
+}
+this.e[j - 1] = g / h;
+f += (this.e[j - 1] * this.value[i - 1][j - 1]);
+}
+hh = f / (h + h);
+for (j = 1; j <= l; j++) {
+f = this.value[i - 1][j - 1];
+g = this.e[j - 1] - (hh * f);
+this.e[j - 1] = g;
+for (k = 1; k <= j; k++) {
+this.value[j - 1][k - 1] -= ((f * this.e[k - 1]) + (g * this.value[i - 1][k - 1]));
+}
+}
+}} else {
+this.e[i - 1] = this.value[i - 1][l - 1];
+}this.d[i - 1] = h;
+}
+this.d[0] = 0.0;
+this.e[0] = 0.0;
+for (i = 1; i <= n; i++) {
+l = i - 1;
+if (this.d[i - 1] != 0.0) {
+for (j = 1; j <= l; j++) {
+g = 0.0;
+for (k = 1; k <= l; k++) {
+g += (this.value[i - 1][k - 1] * this.value[k - 1][j - 1]);
+}
+for (k = 1; k <= l; k++) {
+this.value[k - 1][j - 1] -= (g * this.value[k - 1][i - 1]);
+}
+}
+}this.d[i - 1] = this.value[i - 1][i - 1];
+this.value[i - 1][i - 1] = 1.0;
+for (j = 1; j <= l; j++) {
+this.value[j - 1][i - 1] = 0.0;
+this.value[i - 1][j - 1] = 0.0;
+}
+}
+});
+Clazz.defineMethod (c$, "tqli", 
+function () {
+var n = this.rows;
+var m;
+var l;
+var iter;
+var i;
+var k;
+var s;
+var r;
+var p;
+;var g;
+var f;
+var dd;
+var c;
+var b;
+for (i = 2; i <= n; i++) {
+this.e[i - 2] = this.e[i - 1];
+}
+this.e[n - 1] = 0.0;
+for (l = 1; l <= n; l++) {
+iter = 0;
+do {
+for (m = l; m <= (n - 1); m++) {
+dd = Math.abs (this.d[m - 1]) + Math.abs (this.d[m]);
+if ((Math.abs (this.e[m - 1]) + dd) == dd) {
+break;
+}}
+if (m != l) {
+iter++;
+if (iter == this.maxIter) {
+throw  new Exception (jalview.util.MessageManager.formatMessage ("exception.matrix_too_many_iteration",  Clazz.newArray (-1, ["tqli", Integer.$valueOf (this.maxIter).toString ()])));
+} else {
+}g = (this.d[l] - this.d[l - 1]) / (2.0 * this.e[l - 1]);
+r = Math.sqrt ((g * g) + 1.0);
+g = this.d[m - 1] - this.d[l - 1] + (this.e[l - 1] / (g + this.sign (r, g)));
+c = 1.0;
+s = c;
+p = 0.0;
+for (i = m - 1; i >= l; i--) {
+f = s * this.e[i - 1];
+b = c * this.e[i - 1];
+if (Math.abs (f) >= Math.abs (g)) {
+c = g / f;
+r = Math.sqrt ((c * c) + 1.0);
+this.e[i] = f * r;
+s = 1.0 / r;
+c *= s;
+} else {
+s = f / g;
+r = Math.sqrt ((s * s) + 1.0);
+this.e[i] = g * r;
+c = 1.0 / r;
+s *= c;
+}g = this.d[i] - p;
+r = ((this.d[i - 1] - g) * s) + (2.0 * c * b);
+p = s * r;
+this.d[i] = g + p;
+g = (c * r) - b;
+for (k = 1; k <= n; k++) {
+f = this.value[k - 1][i];
+this.value[k - 1][i] = (s * this.value[k - 1][i - 1]) + (c * f);
+this.value[k - 1][i - 1] = (c * this.value[k - 1][i - 1]) - (s * f);
+}
+}
+this.d[l - 1] = this.d[l - 1] - p;
+this.e[l - 1] = g;
+this.e[m - 1] = 0.0;
+}} while (m != l);
+}
+});
+Clazz.defineMethod (c$, "tred2", 
+function () {
+var n = this.rows;
+var l;
+var k;
+var j;
+var i;
+var scale;
+var hh;
+var h;
+var g;
+var f;
+this.d =  Clazz.newDoubleArray (this.rows, 0);
+this.e =  Clazz.newDoubleArray (this.rows, 0);
+for (i = n - 1; i >= 1; i--) {
+l = i - 1;
+h = 0.0;
+scale = 0.0;
+if (l > 0) {
+for (k = 0; k < l; k++) {
+scale += Math.abs (this.value[i][k]);
+}
+if (scale == 0.0) {
+this.e[i] = this.value[i][l];
+} else {
+for (k = 0; k < l; k++) {
+this.value[i][k] /= scale;
+h += (this.value[i][k] * this.value[i][k]);
+}
+f = this.value[i][l];
+if (f > 0) {
+g = -1.0 * Math.sqrt (h);
+} else {
+g = Math.sqrt (h);
+}this.e[i] = scale * g;
+h -= (f * g);
+this.value[i][l] = f - g;
+f = 0.0;
+for (j = 0; j < l; j++) {
+this.value[j][i] = this.value[i][j] / h;
+g = 0.0;
+for (k = 0; k < j; k++) {
+g += (this.value[j][k] * this.value[i][k]);
+}
+for (k = j; k < l; k++) {
+g += (this.value[k][j] * this.value[i][k]);
+}
+this.e[j] = g / h;
+f += (this.e[j] * this.value[i][j]);
+}
+hh = f / (h + h);
+for (j = 0; j < l; j++) {
+f = this.value[i][j];
+g = this.e[j] - (hh * f);
+this.e[j] = g;
+for (k = 0; k < j; k++) {
+this.value[j][k] -= ((f * this.e[k]) + (g * this.value[i][k]));
+}
+}
+}} else {
+this.e[i] = this.value[i][l];
+}this.d[i] = h;
+}
+this.d[0] = 0.0;
+this.e[0] = 0.0;
+for (i = 0; i < n; i++) {
+l = i - 1;
+if (this.d[i] != 0.0) {
+for (j = 0; j < l; j++) {
+g = 0.0;
+for (k = 0; k < l; k++) {
+g += (this.value[i][k] * this.value[k][j]);
+}
+for (k = 0; k < l; k++) {
+this.value[k][j] -= (g * this.value[k][i]);
+}
+}
+}this.d[i] = this.value[i][i];
+this.value[i][i] = 1.0;
+for (j = 0; j < l; j++) {
+this.value[j][i] = 0.0;
+this.value[i][j] = 0.0;
+}
+}
+});
+Clazz.defineMethod (c$, "tqli2", 
+function () {
+var n = this.rows;
+var m;
+var l;
+var iter;
+var i;
+var k;
+var s;
+var r;
+var p;
+;var g;
+var f;
+var dd;
+var c;
+var b;
+for (i = 2; i <= n; i++) {
+this.e[i - 2] = this.e[i - 1];
+}
+this.e[n - 1] = 0.0;
+for (l = 1; l <= n; l++) {
+iter = 0;
+do {
+for (m = l; m <= (n - 1); m++) {
+dd = Math.abs (this.d[m - 1]) + Math.abs (this.d[m]);
+if ((Math.abs (this.e[m - 1]) + dd) == dd) {
+break;
+}}
+if (m != l) {
+iter++;
+if (iter == this.maxIter) {
+throw  new Exception (jalview.util.MessageManager.formatMessage ("exception.matrix_too_many_iteration",  Clazz.newArray (-1, ["tqli2", Integer.$valueOf (this.maxIter).toString ()])));
+} else {
+}g = (this.d[l] - this.d[l - 1]) / (2.0 * this.e[l - 1]);
+r = Math.sqrt ((g * g) + 1.0);
+g = this.d[m - 1] - this.d[l - 1] + (this.e[l - 1] / (g + this.sign (r, g)));
+c = 1.0;
+s = c;
+p = 0.0;
+for (i = m - 1; i >= l; i--) {
+f = s * this.e[i - 1];
+b = c * this.e[i - 1];
+if (Math.abs (f) >= Math.abs (g)) {
+c = g / f;
+r = Math.sqrt ((c * c) + 1.0);
+this.e[i] = f * r;
+s = 1.0 / r;
+c *= s;
+} else {
+s = f / g;
+r = Math.sqrt ((s * s) + 1.0);
+this.e[i] = g * r;
+c = 1.0 / r;
+s *= c;
+}g = this.d[i] - p;
+r = ((this.d[i - 1] - g) * s) + (2.0 * c * b);
+p = s * r;
+this.d[i] = g + p;
+g = (c * r) - b;
+for (k = 1; k <= n; k++) {
+f = this.value[k - 1][i];
+this.value[k - 1][i] = (s * this.value[k - 1][i - 1]) + (c * f);
+this.value[k - 1][i - 1] = (c * this.value[k - 1][i - 1]) - (s * f);
+}
+}
+this.d[l - 1] = this.d[l - 1] - p;
+this.e[l - 1] = g;
+this.e[m - 1] = 0.0;
+}} while (m != l);
+}
+});
+Clazz.defineMethod (c$, "sign", 
+function (a, b) {
+if (b < 0) {
+return -Math.abs (a);
+} else {
+return Math.abs (a);
+}}, "~N,~N");
+Clazz.defineMethod (c$, "getColumn", 
+function (n) {
+var out =  Clazz.newDoubleArray (this.rows, 0);
+for (var i = 0; i < this.rows; i++) {
+out[i] = this.value[i][n];
+}
+return out;
+}, "~N");
+Clazz.defineMethod (c$, "printD", 
+function (ps) {
+for (var j = 0; j < this.rows; j++) {
+jalview.util.Format.printDouble (ps, "%15.4e", this.d[j]);
+}
+}, "java.io.PrintStream");
+Clazz.defineMethod (c$, "printE", 
+function (ps) {
+for (var j = 0; j < this.rows; j++) {
+jalview.util.Format.printDouble (ps, "%15.4e", this.e[j]);
+}
+}, "java.io.PrintStream");
+});
index 12195ca..bec7c23 100644 (file)
-Clazz.declarePackage ("jalview.math");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.matrix = null;\r
-this.temp = null;\r
-this.rot = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.math, "RotatableMatrix");\r
-Clazz.makeConstructor (c$, \r
-function (rows, cols) {\r
-this.matrix =  Clazz.newFloatArray (rows, cols, 0);\r
-this.temp =  Clazz.newFloatArray (3, 0);\r
-this.rot =  Clazz.newFloatArray (3, 3, 0);\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "addElement", \r
-function (i, j, value) {\r
-this.matrix[i][j] = value;\r
-}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "print", \r
-function () {\r
-System.out.println (this.matrix[0][0] + " " + this.matrix[0][1] + " " + this.matrix[0][2]);\r
-System.out.println (this.matrix[1][0] + " " + this.matrix[1][1] + " " + this.matrix[1][2]);\r
-System.out.println (this.matrix[2][0] + " " + this.matrix[2][1] + " " + this.matrix[2][2]);\r
-});\r
-Clazz.defineMethod (c$, "rotate", \r
-function (degrees, axis) {\r
-var costheta = Math.cos ((degrees * 3.141592653589793) / 180.0);\r
-var sintheta = Math.sin ((degrees * 3.141592653589793) / 180.0);\r
-if (axis == 'z') {\r
-this.rot[0][0] = costheta;\r
-this.rot[0][1] = -sintheta;\r
-this.rot[0][2] = 0.0;\r
-this.rot[1][0] = sintheta;\r
-this.rot[1][1] = costheta;\r
-this.rot[1][2] = 0.0;\r
-this.rot[2][0] = 0.0;\r
-this.rot[2][1] = 0.0;\r
-this.rot[2][2] = 1.0;\r
-this.preMultiply (this.rot);\r
-}if (axis == 'x') {\r
-this.rot[0][0] = 1.0;\r
-this.rot[0][1] = 0.0;\r
-this.rot[0][2] = 0.0;\r
-this.rot[1][0] = 0.0;\r
-this.rot[1][1] = costheta;\r
-this.rot[1][2] = sintheta;\r
-this.rot[2][0] = 0.0;\r
-this.rot[2][1] = -sintheta;\r
-this.rot[2][2] = costheta;\r
-this.preMultiply (this.rot);\r
-}if (axis == 'y') {\r
-this.rot[0][0] = costheta;\r
-this.rot[0][1] = 0.0;\r
-this.rot[0][2] = -sintheta;\r
-this.rot[1][0] = 0.0;\r
-this.rot[1][1] = 1.0;\r
-this.rot[1][2] = 0.0;\r
-this.rot[2][0] = sintheta;\r
-this.rot[2][1] = 0.0;\r
-this.rot[2][2] = costheta;\r
-this.preMultiply (this.rot);\r
-}}, "~N,~S");\r
-Clazz.defineMethod (c$, "vectorMultiply", \r
-function (vect) {\r
-this.temp[0] = vect[0];\r
-this.temp[1] = vect[1];\r
-this.temp[2] = vect[2];\r
-for (var i = 0; i < 3; i++) {\r
-this.temp[i] = (this.matrix[i][0] * vect[0]) + (this.matrix[i][1] * vect[1]) + (this.matrix[i][2] * vect[2]);\r
-}\r
-vect[0] = this.temp[0];\r
-vect[1] = this.temp[1];\r
-vect[2] = this.temp[2];\r
-return vect;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "preMultiply", \r
-function (mat) {\r
-var tmp =  Clazz.newFloatArray (3, 3, 0);\r
-for (var i = 0; i < 3; i++) {\r
-for (var j = 0; j < 3; j++) {\r
-tmp[i][j] = (mat[i][0] * this.matrix[0][j]) + (mat[i][1] * this.matrix[1][j]) + (mat[i][2] * this.matrix[2][j]);\r
-}\r
-}\r
-for (var i = 0; i < 3; i++) {\r
-for (var j = 0; j < 3; j++) {\r
-this.matrix[i][j] = tmp[i][j];\r
-}\r
-}\r
-}, "~A");\r
-Clazz.defineMethod (c$, "postMultiply", \r
-function (mat) {\r
-var tmp =  Clazz.newFloatArray (3, 3, 0);\r
-for (var i = 0; i < 3; i++) {\r
-for (var j = 0; j < 3; j++) {\r
-tmp[i][j] = (this.matrix[i][0] * mat[0][j]) + (this.matrix[i][1] * mat[1][j]) + (this.matrix[i][2] * mat[2][j]);\r
-}\r
-}\r
-for (var i = 0; i < 3; i++) {\r
-for (var j = 0; j < 3; j++) {\r
-this.matrix[i][j] = tmp[i][j];\r
-}\r
-}\r
-}, "~A");\r
-Clazz.defineMethod (c$, "setIdentity", \r
-function () {\r
-this.matrix[0][0] = 1.0;\r
-this.matrix[1][1] = 1.0;\r
-this.matrix[2][2] = 1.0;\r
-this.matrix[0][1] = 0.0;\r
-this.matrix[0][2] = 0.0;\r
-this.matrix[1][0] = 0.0;\r
-this.matrix[1][2] = 0.0;\r
-this.matrix[2][0] = 0.0;\r
-this.matrix[2][1] = 0.0;\r
-});\r
+Clazz.declarePackage ("jalview.math");
+c$ = Clazz.decorateAsClass (function () {
+this.matrix = null;
+this.temp = null;
+this.rot = null;
+Clazz.instantialize (this, arguments);
+}, jalview.math, "RotatableMatrix");
+Clazz.makeConstructor (c$, 
+function (rows, cols) {
+this.matrix =  Clazz.newFloatArray (rows, cols, 0);
+this.temp =  Clazz.newFloatArray (3, 0);
+this.rot =  Clazz.newFloatArray (3, 3, 0);
+}, "~N,~N");
+Clazz.defineMethod (c$, "addElement", 
+function (i, j, value) {
+this.matrix[i][j] = value;
+}, "~N,~N,~N");
+Clazz.defineMethod (c$, "print", 
+function () {
+System.out.println (this.matrix[0][0] + " " + this.matrix[0][1] + " " + this.matrix[0][2]);
+System.out.println (this.matrix[1][0] + " " + this.matrix[1][1] + " " + this.matrix[1][2]);
+System.out.println (this.matrix[2][0] + " " + this.matrix[2][1] + " " + this.matrix[2][2]);
+});
+Clazz.defineMethod (c$, "rotate", 
+function (degrees, axis) {
+var costheta = Math.cos ((degrees * 3.141592653589793) / 180.0);
+var sintheta = Math.sin ((degrees * 3.141592653589793) / 180.0);
+if (axis == 'z') {
+this.rot[0][0] = costheta;
+this.rot[0][1] = -sintheta;
+this.rot[0][2] = 0.0;
+this.rot[1][0] = sintheta;
+this.rot[1][1] = costheta;
+this.rot[1][2] = 0.0;
+this.rot[2][0] = 0.0;
+this.rot[2][1] = 0.0;
+this.rot[2][2] = 1.0;
+this.preMultiply (this.rot);
+}if (axis == 'x') {
+this.rot[0][0] = 1.0;
+this.rot[0][1] = 0.0;
+this.rot[0][2] = 0.0;
+this.rot[1][0] = 0.0;
+this.rot[1][1] = costheta;
+this.rot[1][2] = sintheta;
+this.rot[2][0] = 0.0;
+this.rot[2][1] = -sintheta;
+this.rot[2][2] = costheta;
+this.preMultiply (this.rot);
+}if (axis == 'y') {
+this.rot[0][0] = costheta;
+this.rot[0][1] = 0.0;
+this.rot[0][2] = -sintheta;
+this.rot[1][0] = 0.0;
+this.rot[1][1] = 1.0;
+this.rot[1][2] = 0.0;
+this.rot[2][0] = sintheta;
+this.rot[2][1] = 0.0;
+this.rot[2][2] = costheta;
+this.preMultiply (this.rot);
+}}, "~N,~S");
+Clazz.defineMethod (c$, "vectorMultiply", 
+function (vect) {
+this.temp[0] = vect[0];
+this.temp[1] = vect[1];
+this.temp[2] = vect[2];
+for (var i = 0; i < 3; i++) {
+this.temp[i] = (this.matrix[i][0] * vect[0]) + (this.matrix[i][1] * vect[1]) + (this.matrix[i][2] * vect[2]);
+}
+vect[0] = this.temp[0];
+vect[1] = this.temp[1];
+vect[2] = this.temp[2];
+return vect;
+}, "~A");
+Clazz.defineMethod (c$, "preMultiply", 
+function (mat) {
+var tmp =  Clazz.newFloatArray (3, 3, 0);
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < 3; j++) {
+tmp[i][j] = (mat[i][0] * this.matrix[0][j]) + (mat[i][1] * this.matrix[1][j]) + (mat[i][2] * this.matrix[2][j]);
+}
+}
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < 3; j++) {
+this.matrix[i][j] = tmp[i][j];
+}
+}
+}, "~A");
+Clazz.defineMethod (c$, "postMultiply", 
+function (mat) {
+var tmp =  Clazz.newFloatArray (3, 3, 0);
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < 3; j++) {
+tmp[i][j] = (this.matrix[i][0] * mat[0][j]) + (this.matrix[i][1] * mat[1][j]) + (this.matrix[i][2] * mat[2][j]);
+}
+}
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < 3; j++) {
+this.matrix[i][j] = tmp[i][j];
+}
+}
+}, "~A");
+Clazz.defineMethod (c$, "setIdentity", 
+function () {
+this.matrix[0][0] = 1.0;
+this.matrix[1][1] = 1.0;
+this.matrix[2][2] = 1.0;
+this.matrix[0][1] = 0.0;
+this.matrix[0][2] = 0.0;
+this.matrix[1][0] = 0.0;
+this.matrix[1][2] = 0.0;
+this.matrix[2][0] = 0.0;
+this.matrix[2][1] = 0.0;
+});
index 2cab4d6..446ba32 100644 (file)
Binary files a/bin/jalview/renderer/AnnotationRenderer.class and b/bin/jalview/renderer/AnnotationRenderer.class differ
index 00d98e4..221e5d3 100644 (file)
-Clazz.declarePackage ("jalview.renderer");\r
-Clazz.load (["jalview.util.Platform", "java.awt.Color"], "jalview.renderer.AnnotationRenderer", ["jalview.analysis.AAFrequency", "$.CodingUtils", "$.StructureFrequency", "jalview.jsdev.RegExp", "jalview.schemes.NucleotideColourScheme", "$.ResidueProperties", "$.ZappoColourScheme", "java.awt.BasicStroke", "java.awt.geom.AffineTransform", "java.util.BitSet"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.debugRedraw = false;\r
-this.charWidth = 0;\r
-this.endRes = 0;\r
-this.charHeight = 0;\r
-this.validCharWidth = false;\r
-this.hasHiddenColumns = false;\r
-this.fm = null;\r
-this.MAC = false;\r
-this.av_renderHistogram = true;\r
-this.av_renderProfile = true;\r
-this.av_normaliseProfile = false;\r
-this.profcolour = null;\r
-this.columnSelection = null;\r
-this.hconsensus = null;\r
-this.complementConsensus = null;\r
-this.hStrucConsensus = null;\r
-this.av_ignoreGapsConsensus = false;\r
-this.fadedImage = null;\r
-this.annotationPanel = null;\r
-this.imgWidth = 0;\r
-this.sOffset = 0;\r
-this.visHeight = 0;\r
-this.useClip = true;\r
-this.canClip = false;\r
-this.rna = false;\r
-this.sdNOTCANONICAL_COLOUR = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.renderer, "AnnotationRenderer");\r
-Clazz.prepareFields (c$, function () {\r
-this.MAC = jalview.util.Platform.isAMac ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.construct (false);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (debugRedraw) {\r
-this.debugRedraw = debugRedraw;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "drawStemAnnot", \r
-function (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {\r
-g.setColor (jalview.renderer.AnnotationRenderer.STEM_COLOUR);\r
-var sCol = (Clazz.doubleToInt (lastSSX / this.charWidth)) + startRes;\r
-var x1 = lastSSX;\r
-var x2 = (x * this.charWidth);\r
-var closeparen = jalview.jsdev.RegExp.newRegex (["(\\))"]);\r
-var dc = (column == 0 || row_annotations[column - 1] == null) ? ' ' : row_annotations[column - 1].secondaryStructure;\r
-var diffupstream = sCol == 0 || row_annotations[sCol - 1] == null || dc != row_annotations[sCol - 1].secondaryStructure;\r
-var diffdownstream = !validRes || !validEnd || row_annotations[column] == null || dc != row_annotations[column].secondaryStructure;\r
-if (column > 0 && jalview.schemes.ResidueProperties.isCloseParenRNA (dc)) {\r
-if (diffupstream) {\r
-g.fillPolygon ( Clazz.newIntArray (-1, [lastSSX + 5, lastSSX + 5, lastSSX]),  Clazz.newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset]), 3);\r
-x1 += 5;\r
-}if (diffdownstream) {\r
-x2 -= 1;\r
-}} else {\r
-if (diffdownstream) {\r
-g.fillPolygon ( Clazz.newIntArray (-1, [x2 - 5, x2 - 5, x2]),  Clazz.newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset]), 3);\r
-x2 -= 5;\r
-}if (diffupstream) {\r
-x1 += 1;\r
-}}g.fillRect (x1, y + 4 + iconOffset, x2 - x1, 7);\r
-}, "java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");\r
-Clazz.defineMethod (c$, "drawNotCanonicalAnnot", \r
-function (g, nonCanColor, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {\r
-g.setColor (nonCanColor);\r
-var sCol = (Clazz.doubleToInt (lastSSX / this.charWidth)) + startRes;\r
-var x1 = lastSSX;\r
-var x2 = (x * this.charWidth);\r
-var closeparen = jalview.jsdev.RegExp.newRegex (["}|]|<|[a-z]"]);\r
-var dc = (column == 0 || row_annotations[column - 1] == null) ? "" : row_annotations[column - 1].displayCharacter;\r
-var diffupstream = sCol == 0 || row_annotations[sCol - 1] == null || !dc.equals (row_annotations[sCol - 1].displayCharacter);\r
-var diffdownstream = !validRes || !validEnd || row_annotations[column] == null || !dc.equals (row_annotations[column].displayCharacter);\r
-if (column > 0 && closeparen.search (dc)) {\r
-if (diffupstream) {\r
-g.fillPolygon ( Clazz.newIntArray (-1, [lastSSX + 5, lastSSX + 5, lastSSX]),  Clazz.newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset]), 3);\r
-x1 += 5;\r
-}if (diffdownstream) {\r
-x2 -= 1;\r
-}} else {\r
-if (diffdownstream) {\r
-g.fillPolygon ( Clazz.newIntArray (-1, [x2 - 5, x2 - 5, x2]),  Clazz.newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset]), 3);\r
-x2 -= 5;\r
-}if (diffupstream) {\r
-x1 += 1;\r
-}}g.fillRect (x1, y + 4 + iconOffset, x2 - x1, 7);\r
-}, "java.awt.Graphics,java.awt.Color,~A,~N,~N,~N,~N,~N,~N,~B,~B");\r
-Clazz.defineMethod (c$, "updateFromAwtRenderPanel", \r
-function (annotPanel, av) {\r
-this.fm = annotPanel.getFontMetrics ();\r
-this.annotationPanel = annotPanel;\r
-this.fadedImage = annotPanel.getFadedImage ();\r
-this.imgWidth = annotPanel.getFadedImageWidth ();\r
-var bounds = annotPanel.getVisibleVRange ();\r
-if (bounds != null) {\r
-this.sOffset = bounds[0];\r
-this.visHeight = bounds[1];\r
-if (this.visHeight == 0) {\r
-this.useClip = false;\r
-} else {\r
-this.useClip = this.canClip;\r
-}} else {\r
-this.useClip = false;\r
-}this.updateFromAlignViewport (av);\r
-}, "jalview.renderer.AwtRenderPanelI,jalview.api.AlignViewportI");\r
-Clazz.defineMethod (c$, "updateFromAlignViewport", \r
-function (av) {\r
-this.charWidth = av.getCharWidth ();\r
-this.endRes = av.getEndRes ();\r
-this.charHeight = av.getCharHeight ();\r
-this.hasHiddenColumns = av.hasHiddenColumns ();\r
-this.validCharWidth = av.isValidCharWidth ();\r
-this.av_renderHistogram = av.isShowConsensusHistogram ();\r
-this.av_renderProfile = av.isShowSequenceLogo ();\r
-this.av_normaliseProfile = av.isNormaliseSequenceLogo ();\r
-this.profcolour = av.getGlobalColourScheme ();\r
-if (this.profcolour == null) {\r
-this.profcolour = av.getAlignment ().isNucleotide () ?  new jalview.schemes.NucleotideColourScheme () :  new jalview.schemes.ZappoColourScheme ();\r
-}this.columnSelection = av.getColumnSelection ();\r
-this.hconsensus = av.getSequenceConsensusHash ();\r
-this.complementConsensus = av.getComplementConsensusHash ();\r
-this.hStrucConsensus = av.getRnaStructureConsensusHash ();\r
-this.av_ignoreGapsConsensus = av.isIgnoreGapsConsensus ();\r
-}, "jalview.api.AlignViewportI");\r
-Clazz.defineMethod (c$, "getProfileFor", \r
-function (aa, column) {\r
-if (aa.autoCalculated && (aa.label.startsWith ("Consensus") || aa.label.startsWith ("cDNA Consensus"))) {\r
-var forComplement = aa.label.startsWith ("cDNA Consensus");\r
-if (aa.groupRef != null && aa.groupRef.consensusData != null && aa.groupRef.isShowSequenceLogo ()) {\r
-return jalview.analysis.AAFrequency.extractProfile (aa.groupRef.consensusData[column], aa.groupRef.getIgnoreGapsConsensus ());\r
-}if (aa.groupRef == null && aa.sequenceRef == null) {\r
-if (forComplement) {\r
-return jalview.analysis.AAFrequency.extractCdnaProfile (this.complementConsensus[column], this.av_ignoreGapsConsensus);\r
-} else {\r
-return jalview.analysis.AAFrequency.extractProfile (this.hconsensus[column], this.av_ignoreGapsConsensus);\r
-}}} else {\r
-if (aa.autoCalculated && aa.label.startsWith ("StrucConsensus")) {\r
-if (aa.groupRef == null && aa.sequenceRef == null && this.hStrucConsensus != null && this.hStrucConsensus.length > column) {\r
-return jalview.analysis.StructureFrequency.extractProfile (this.hStrucConsensus[column], this.av_ignoreGapsConsensus);\r
-}}}return null;\r
-}, "jalview.datamodel.AlignmentAnnotation,~N");\r
-Clazz.defineMethod (c$, "drawComponent", \r
-function (annotPanel, av, g, activeRow, startRes, endRes) {\r
-var stime = System.currentTimeMillis ();\r
-var usedFaded = false;\r
-this.updateFromAwtRenderPanel (annotPanel, av);\r
-this.fm = g.getFontMetrics ();\r
-var aa = av.getAlignment ().getAlignmentAnnotation ();\r
-var temp = 0;\r
-if (aa == null) {\r
-return false;\r
-}var x = 0;\r
-var y = 0;\r
-var column = 0;\r
-var lastSS;\r
-var lastSSX;\r
-var iconOffset = 0;\r
-var validRes = false;\r
-var validEnd = false;\r
-var labelAllCols = false;\r
-var centreColLabels;\r
-var centreColLabelsDef = av.isCentreColumnLabels ();\r
-var scaleColLabel = false;\r
-var consensusAnnot = av.getAlignmentConsensusAnnotation ();\r
-var structConsensusAnnot = av.getAlignmentStrucConsensusAnnotation ();\r
-var complementConsensusAnnot = av.getComplementConsensusAnnotation ();\r
-var renderHistogram = true;\r
-var renderProfile = true;\r
-var normaliseProfile = false;\r
-var isRNA = this.rna;\r
-var graphGroupDrawn =  new java.util.BitSet ();\r
-var charOffset = 0;\r
-var fmWidth;\r
-var fmScaling = 1;\r
-var ofont = g.getFont ();\r
-var yfrom = 0;\r
-var f_i = 0;\r
-var yto = 0;\r
-var f_to = 0;\r
-var clipst = false;\r
-var clipend = false;\r
-for (var i = 0; i < aa.length; i++) {\r
-var row = aa[i];\r
-isRNA = row.isRNA ();\r
-{\r
-if (row.groupRef != null && row === row.groupRef.getConsensus ()) {\r
-renderHistogram = row.groupRef.isShowConsensusHistogram ();\r
-renderProfile = row.groupRef.isShowSequenceLogo ();\r
-normaliseProfile = row.groupRef.isNormaliseSequenceLogo ();\r
-} else if (row === consensusAnnot || row === structConsensusAnnot || row === complementConsensusAnnot) {\r
-renderHistogram = this.av_renderHistogram;\r
-renderProfile = this.av_renderProfile;\r
-normaliseProfile = this.av_normaliseProfile;\r
-} else {\r
-renderHistogram = true;\r
-}}var row_annotations = row.annotations;\r
-if (!row.visible) {\r
-continue;\r
-}centreColLabels = row.centreColLabels || centreColLabelsDef;\r
-labelAllCols = row.showAllColLabels;\r
-scaleColLabel = row.scaleColLabel;\r
-lastSS = ' ';\r
-lastSSX = 0;\r
-if (!this.useClip || ((y - this.charHeight) < this.visHeight && (y + row.height + this.charHeight * 2) >= this.sOffset)) {\r
-if (!clipst) {\r
-clipst = true;\r
-yfrom = y;\r
-f_i = i;\r
-}yto = y;\r
-f_to = i;\r
-if (row.graph > 0) {\r
-if (row.graphGroup > -1 && graphGroupDrawn.get (row.graphGroup)) {\r
-continue;\r
-}y += row.height;\r
-if (row.hasText) {\r
-iconOffset = this.charHeight - this.fm.getDescent ();\r
-y -= this.charHeight;\r
-}} else if (row.hasText) {\r
-iconOffset = this.charHeight - this.fm.getDescent ();\r
-} else {\r
-iconOffset = 0;\r
-}if (row.autoCalculated && av.isCalculationInProgress (row)) {\r
-y += this.charHeight;\r
-usedFaded = true;\r
-g.drawImage (this.fadedImage, 0, y - row.height, this.imgWidth, y, 0, y - row.height, this.imgWidth, y, this.annotationPanel);\r
-g.setColor (java.awt.Color.black);\r
-continue;\r
-}x = (startRes == 0) ? 0 : -1;\r
-while (x < endRes - startRes) {\r
-if (this.hasHiddenColumns) {\r
-column = this.columnSelection.adjustForHiddenColumns (startRes + x);\r
-if (column > row_annotations.length - 1) {\r
-break;\r
-}} else {\r
-column = startRes + x;\r
-}if ((row_annotations == null) || (row_annotations.length <= column) || (row_annotations[column] == null)) {\r
-validRes = false;\r
-} else {\r
-validRes = true;\r
-}var displayChar = validRes ? row_annotations[column].displayCharacter : null;\r
-if (x > -1) {\r
-if (activeRow == i) {\r
-g.setColor (java.awt.Color.red);\r
-if (this.columnSelection != null) {\r
-for (var n = 0; n < this.columnSelection.size (); n++) {\r
-var v = this.columnSelection.columnAt (n);\r
-if (v == column) {\r
-g.fillRect (x * this.charWidth, y, this.charWidth, this.charHeight);\r
-}}\r
-}}if (row.getInvalidStrucPos () > x) {\r
-g.setColor (java.awt.Color.orange);\r
-g.fillRect (x * this.charWidth, y, this.charWidth, this.charHeight);\r
-} else if (row.getInvalidStrucPos () == x) {\r
-g.setColor (java.awt.Color.orange.darker ());\r
-g.fillRect (x * this.charWidth, y, this.charWidth, this.charHeight);\r
-}if (this.validCharWidth && validRes && displayChar != null && (displayChar.length > 0)) {\r
-fmWidth = this.fm.charsWidth (displayChar.toCharArray (), 0, displayChar.length);\r
-if (scaleColLabel) {\r
-if (fmWidth > this.charWidth) {\r
-fmScaling = this.charWidth;\r
-fmScaling /= fmWidth;\r
-g.setFont (ofont.deriveFont (java.awt.geom.AffineTransform.getScaleInstance (fmScaling, 1.0)));\r
-fmWidth = this.charWidth;\r
-}}charOffset = Clazz.floatToInt ((this.charWidth - fmWidth) / 2);\r
-if (row_annotations[column].colour == null) {\r
-g.setColor (java.awt.Color.black);\r
-} else {\r
-g.setColor (row_annotations[column].colour);\r
-}if (column == 0 || row.graph > 0) {\r
-g.drawString (displayChar, (x * this.charWidth) + charOffset, y + iconOffset);\r
-} else if (row_annotations[column - 1] == null || (labelAllCols || !displayChar.equals (row_annotations[column - 1].displayCharacter) || (displayChar.length < 2 && row_annotations[column].secondaryStructure == ' '))) {\r
-g.drawString (displayChar, x * this.charWidth + charOffset, y + iconOffset);\r
-}g.setFont (ofont);\r
-}}if (row.hasIcons) {\r
-var ss = validRes ? row_annotations[column].secondaryStructure : '-';\r
-if (ss == '(') {\r
-if (displayChar.indexOf (')') > -1) {\r
-ss = ')';\r
-}}if (ss == '[') {\r
-if ((displayChar.indexOf (']') > -1)) {\r
-ss = ']';\r
-}}if (ss == '{') {\r
-if (displayChar.indexOf ('}') > -1) {\r
-ss = '}';\r
-}}if (ss == '<') {\r
-if (displayChar.indexOf ('<') > -1) {\r
-ss = '>';\r
-}}if (ss.charCodeAt (0) >= 65) {\r
-if (displayChar.indexOf (ss.charCodeAt (0) + 32) > -1) {\r
-ss = String.fromCharCode (ss.charCodeAt (0) + 32);\r
-}}if (!validRes || (ss != lastSS)) {\r
-if (x > -1) {\r
-var nb_annot = x - temp;\r
-switch (lastSS) {\r
-case '(':\r
-case ')':\r
-this.drawStemAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);\r
-temp = x;\r
-break;\r
-case 'H':\r
-if (!isRNA) {\r
-this.drawHelixAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);\r
-break;\r
-}case 'E':\r
-if (!isRNA) {\r
-this.drawSheetAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);\r
-break;\r
-}case '{':\r
-case '}':\r
-case '[':\r
-case ']':\r
-case '>':\r
-case '<':\r
-case 'A':\r
-case 'a':\r
-case 'B':\r
-case 'b':\r
-case 'C':\r
-case 'c':\r
-case 'D':\r
-case 'd':\r
-case 'e':\r
-case 'F':\r
-case 'f':\r
-case 'G':\r
-case 'g':\r
-case 'h':\r
-case 'I':\r
-case 'i':\r
-case 'J':\r
-case 'j':\r
-case 'K':\r
-case 'k':\r
-case 'L':\r
-case 'l':\r
-case 'M':\r
-case 'm':\r
-case 'N':\r
-case 'n':\r
-case 'O':\r
-case 'o':\r
-case 'P':\r
-case 'p':\r
-case 'Q':\r
-case 'q':\r
-case 'R':\r
-case 'r':\r
-case 'S':\r
-case 's':\r
-case 'T':\r
-case 't':\r
-case 'U':\r
-case 'u':\r
-case 'V':\r
-case 'v':\r
-case 'W':\r
-case 'w':\r
-case 'X':\r
-case 'x':\r
-case 'Y':\r
-case 'y':\r
-case 'Z':\r
-case 'z':\r
-var nonCanColor = this.getNotCanonicalColor (lastSS);\r
-this.drawNotCanonicalAnnot (g, nonCanColor, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);\r
-temp = x;\r
-break;\r
-default:\r
-g.setColor (java.awt.Color.gray);\r
-g.fillRect (lastSSX, y + 6 + iconOffset, (x * this.charWidth) - lastSSX, 2);\r
-temp = x;\r
-break;\r
-}\r
-}if (validRes) {\r
-lastSS = ss;\r
-} else {\r
-lastSS = ' ';\r
-}if (x > -1) {\r
-lastSSX = (x * this.charWidth);\r
-}}}column++;\r
-x++;\r
-}\r
-if (column >= row_annotations.length) {\r
-column = row_annotations.length - 1;\r
-validEnd = false;\r
-} else {\r
-validEnd = true;\r
-}if ((row_annotations == null) || (row_annotations.length <= column) || (row_annotations[column] == null)) {\r
-validRes = false;\r
-} else {\r
-validRes = true;\r
-}if (row.hasIcons) {\r
-switch (lastSS) {\r
-case 'H':\r
-if (!isRNA) {\r
-this.drawHelixAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);\r
-break;\r
-}case 'E':\r
-if (!isRNA) {\r
-this.drawSheetAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);\r
-break;\r
-}case '(':\r
-case ')':\r
-this.drawStemAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);\r
-break;\r
-case '{':\r
-case '}':\r
-case '[':\r
-case ']':\r
-case '>':\r
-case '<':\r
-case 'A':\r
-case 'a':\r
-case 'B':\r
-case 'b':\r
-case 'C':\r
-case 'c':\r
-case 'D':\r
-case 'd':\r
-case 'e':\r
-case 'F':\r
-case 'f':\r
-case 'G':\r
-case 'g':\r
-case 'h':\r
-case 'I':\r
-case 'i':\r
-case 'J':\r
-case 'j':\r
-case 'K':\r
-case 'k':\r
-case 'L':\r
-case 'l':\r
-case 'M':\r
-case 'm':\r
-case 'N':\r
-case 'n':\r
-case 'O':\r
-case 'o':\r
-case 'P':\r
-case 'p':\r
-case 'Q':\r
-case 'q':\r
-case 'R':\r
-case 'r':\r
-case 'T':\r
-case 't':\r
-case 'U':\r
-case 'u':\r
-case 'V':\r
-case 'v':\r
-case 'W':\r
-case 'w':\r
-case 'X':\r
-case 'x':\r
-case 'Y':\r
-case 'y':\r
-case 'Z':\r
-case 'z':\r
-var nonCanColor = this.getNotCanonicalColor (lastSS);\r
-this.drawNotCanonicalAnnot (g, nonCanColor, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);\r
-break;\r
-default:\r
-this.drawGlyphLine (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);\r
-break;\r
-}\r
-}if (row.graph > 0 && row.graphHeight > 0) {\r
-if (row.graph == 2) {\r
-if (row.graphGroup > -1 && !graphGroupDrawn.get (row.graphGroup)) {\r
-var groupmax = -999999;\r
-var groupmin = 9999999;\r
-for (var gg = 0; gg < aa.length; gg++) {\r
-if (aa[gg].graphGroup != row.graphGroup) {\r
-continue;\r
-}if (aa[gg] !== row) {\r
-aa[gg].visible = false;\r
-}if (aa[gg].graphMax > groupmax) {\r
-groupmax = aa[gg].graphMax;\r
-}if (aa[gg].graphMin < groupmin) {\r
-groupmin = aa[gg].graphMin;\r
-}}\r
-for (var gg = 0; gg < aa.length; gg++) {\r
-if (aa[gg].graphGroup == row.graphGroup) {\r
-this.drawLineGraph (g, aa[gg], aa[gg].annotations, startRes, endRes, y, groupmin, groupmax, row.graphHeight);\r
-}}\r
-graphGroupDrawn.set (row.graphGroup);\r
-} else {\r
-this.drawLineGraph (g, row, row_annotations, startRes, endRes, y, row.graphMin, row.graphMax, row.graphHeight);\r
-}} else if (row.graph == 1) {\r
-this.drawBarGraph (g, row, row_annotations, startRes, endRes, row.graphMin, row.graphMax, y, renderHistogram, renderProfile, normaliseProfile);\r
-}}} else {\r
-if (clipst && !clipend) {\r
-clipend = true;\r
-}}if (row.graph > 0 && row.hasText) {\r
-y += this.charHeight;\r
-}if (row.graph == 0) {\r
-y += aa[i].height;\r
-}}\r
-if (this.debugRedraw) {\r
-if (this.canClip) {\r
-if (clipst) {\r
-System.err.println ("Start clip at : " + yfrom + " (index " + f_i + ")");\r
-}if (clipend) {\r
-System.err.println ("End clip at : " + yto + " (index " + f_to + ")");\r
-}};System.err.println ("Annotation Rendering time:" + (System.currentTimeMillis () - stime));\r
-};return !usedFaded;\r
-}, "jalview.renderer.AwtRenderPanelI,jalview.api.AlignViewportI,java.awt.Graphics,~N,~N,~N");\r
-Clazz.defineMethod (c$, "drawGlyphLine", \r
-function (g, row, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {\r
-g.setColor (jalview.renderer.AnnotationRenderer.GLYPHLINE_COLOR);\r
-g.fillRect (lastSSX, y + 6 + iconOffset, (x * this.charWidth) - lastSSX, 2);\r
-}, "java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");\r
-Clazz.defineMethod (c$, "drawSheetAnnot", \r
-function (g, row, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {\r
-g.setColor (jalview.renderer.AnnotationRenderer.SHEET_COLOUR);\r
-if (!validEnd || !validRes || row == null || row[column] == null || row[column].secondaryStructure != 'E') {\r
-g.fillRect (lastSSX, y + 4 + iconOffset, (x * this.charWidth) - lastSSX - 4, 7);\r
-g.fillPolygon ( Clazz.newIntArray (-1, [(x * this.charWidth) - 4, (x * this.charWidth) - 4, (x * this.charWidth)]),  Clazz.newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 7 + iconOffset]), 3);\r
-} else {\r
-g.fillRect (lastSSX, y + 4 + iconOffset, (x + 1) * this.charWidth - lastSSX, 7);\r
-}}, "java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");\r
-Clazz.defineMethod (c$, "drawHelixAnnot", \r
-function (g, row, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {\r
-g.setColor (jalview.renderer.AnnotationRenderer.HELIX_COLOUR);\r
-var sCol = (Clazz.doubleToInt (lastSSX / this.charWidth)) + startRes;\r
-var x1 = lastSSX;\r
-var x2 = (x * this.charWidth);\r
-if (this.MAC) {\r
-var ofs = Clazz.doubleToInt (this.charWidth / 2);\r
-g.fillRoundRect (lastSSX, y + 4 + iconOffset, x2 - x1, 8, 8, 8);\r
-if (sCol == 0 || row[sCol - 1] == null || row[sCol - 1].secondaryStructure != 'H') {\r
-} else {\r
-g.fillRoundRect (lastSSX, y + 4 + iconOffset, x2 - x1 - ofs + 1, 8, 0, 0);\r
-}if (!validRes || row[column] == null || row[column].secondaryStructure != 'H') {\r
-} else {\r
-g.fillRoundRect (lastSSX + ofs, y + 4 + iconOffset, x2 - x1 - ofs + 1, 8, 0, 0);\r
-}return;\r
-}if (sCol == 0 || row[sCol - 1] == null || row[sCol - 1].secondaryStructure != 'H') {\r
-g.fillArc (lastSSX, y + 4 + iconOffset, this.charWidth, 8, 90, 180);\r
-x1 += Clazz.doubleToInt (this.charWidth / 2);\r
-}if (!validRes || row[column] == null || row[column].secondaryStructure != 'H') {\r
-g.fillArc ((x * this.charWidth) - this.charWidth, y + 4 + iconOffset, this.charWidth, 8, 270, 180);\r
-x2 -= Clazz.doubleToInt (this.charWidth / 2);\r
-}g.fillRect (x1, y + 4 + iconOffset, x2 - x1, 8);\r
-}, "java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");\r
-Clazz.defineMethod (c$, "drawLineGraph", \r
-function (g, _aa, aa_annotations, sRes, eRes, y, min, max, graphHeight) {\r
-if (sRes > aa_annotations.length) {\r
-return;\r
-}var x = 0;\r
-if (eRes < this.endRes) {\r
-eRes++;\r
-}eRes = Math.min (eRes, aa_annotations.length);\r
-if (sRes == 0) {\r
-x++;\r
-}var y1 = y;\r
-var y2 = y;\r
-var range = max - min;\r
-if (min < 0) {\r
-y2 = y - Clazz.floatToInt ((0 - min / range) * graphHeight);\r
-}g.setColor (java.awt.Color.gray);\r
-g.drawLine (x - this.charWidth, y2, (eRes - sRes + 1) * this.charWidth, y2);\r
-eRes = Math.min (eRes, aa_annotations.length);\r
-var column;\r
-var aaMax = aa_annotations.length - 1;\r
-while (x < eRes - sRes) {\r
-column = sRes + x;\r
-if (this.hasHiddenColumns) {\r
-column = this.columnSelection.adjustForHiddenColumns (column);\r
-}if (column > aaMax) {\r
-break;\r
-}if (aa_annotations[column] == null || aa_annotations[column - 1] == null) {\r
-x++;\r
-continue;\r
-}if (aa_annotations[column].colour == null) {\r
-g.setColor (java.awt.Color.black);\r
-} else {\r
-g.setColor (aa_annotations[column].colour);\r
-}y1 = y - Clazz.floatToInt (((aa_annotations[column - 1].value - min) / range) * graphHeight);\r
-y2 = y - Clazz.floatToInt (((aa_annotations[column].value - min) / range) * graphHeight);\r
-g.drawLine (x * this.charWidth - Clazz.doubleToInt (this.charWidth / 2), y1, x * this.charWidth + Clazz.doubleToInt (this.charWidth / 2), y2);\r
-x++;\r
-}\r
-if (_aa.threshold != null) {\r
-g.setColor (_aa.threshold.colour);\r
-var g2 = g;\r
-g2.setStroke ( new java.awt.BasicStroke (1, 2, 1, 3,  Clazz.newFloatArray (-1, [5, 3]), 0));\r
-y2 = Clazz.floatToInt (y - ((_aa.threshold.value - min) / range) * graphHeight);\r
-g.drawLine (0, y2, (eRes - sRes) * this.charWidth, y2);\r
-g2.setStroke ( new java.awt.BasicStroke ());\r
-}}, "java.awt.Graphics,jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "drawBarGraph", \r
-function (g, _aa, aa_annotations, sRes, eRes, min, max, y, renderHistogram, renderProfile, normaliseProfile) {\r
-if (sRes > aa_annotations.length) {\r
-return;\r
-}var ofont = g.getFont ();\r
-eRes = Math.min (eRes, aa_annotations.length);\r
-var x = 0;\r
-var y1 = y;\r
-var y2 = y;\r
-var range = max - min;\r
-if (min < 0) {\r
-y2 = y - Clazz.floatToInt ((0 - min / (range)) * _aa.graphHeight);\r
-}g.setColor (java.awt.Color.gray);\r
-g.drawLine (x, y2, (eRes - sRes) * this.charWidth, y2);\r
-var column;\r
-var aaMax = aa_annotations.length - 1;\r
-while (x < eRes - sRes) {\r
-column = sRes + x;\r
-if (this.hasHiddenColumns) {\r
-column = this.columnSelection.adjustForHiddenColumns (column);\r
-}if (column > aaMax) {\r
-break;\r
-}if (aa_annotations[column] == null) {\r
-x++;\r
-continue;\r
-}if (aa_annotations[column].colour == null) {\r
-g.setColor (java.awt.Color.black);\r
-} else {\r
-g.setColor (aa_annotations[column].colour);\r
-}y1 = y - Clazz.floatToInt (((aa_annotations[column].value - min) / (range)) * _aa.graphHeight);\r
-if (renderHistogram) {\r
-if (y1 - y2 > 0) {\r
-g.fillRect (x * this.charWidth, y2, this.charWidth, y1 - y2);\r
-} else {\r
-g.fillRect (x * this.charWidth, y1, this.charWidth, y2 - y1);\r
-}}if (renderProfile) {\r
-var profl = this.getProfileFor (_aa, column);\r
-if (profl != null && profl[2] != 0) {\r
-var isStructureProfile = profl[0] == 1;\r
-var isCdnaProfile = profl[0] == 2;\r
-var ht = normaliseProfile ? y - _aa.graphHeight : y1;\r
-var htn = normaliseProfile ? _aa.graphHeight : (y2 - y1);\r
-var hght;\r
-var wdth;\r
-var ht2 = 0;\r
-var dc;\r
-dc =  Clazz.newCharArray (isStructureProfile ? 2 : (isCdnaProfile ? 3 : 1), '\0');\r
-var lm = g.getFontMetrics (ofont).getLineMetrics ("Q", g);\r
-var scale = 1 / (normaliseProfile ? profl[2] : 100);\r
-var ofontHeight = 1 / lm.getAscent ();\r
-var scl = 0.0;\r
-var c = 3;\r
-var valuesProcessed = 0;\r
-while (valuesProcessed < profl[1]) {\r
-if (isStructureProfile) {\r
-dc[0] = String.fromCharCode (profl[c++]);\r
-dc[1] = String.fromCharCode (profl[c++]);\r
-} else if (isCdnaProfile) {\r
-dc = jalview.analysis.CodingUtils.decodeCodon (profl[c++]);\r
-} else {\r
-dc[0] = String.fromCharCode (profl[c++]);\r
-}wdth = this.charWidth;\r
-wdth /= this.fm.charsWidth (dc, 0, dc.length);\r
-ht += scl;\r
-scl = htn * scale * profl[c++];\r
-lm = ofont.getLineMetrics (dc, 0, 1, g.getFontMetrics ().getFontRenderContext ());\r
-g.setFont (ofont.deriveFont (java.awt.geom.AffineTransform.getScaleInstance (wdth, scl / lm.getAscent ())));\r
-lm = g.getFontMetrics ().getLineMetrics (dc, 0, 1, g);\r
-var colour = null;\r
-if (isCdnaProfile) {\r
-var codonTranslation = jalview.schemes.ResidueProperties.codonTranslate ( String.instantialize (dc));\r
-colour = this.profcolour.findColour (codonTranslation.charAt (0), column, null);\r
-} else {\r
-colour = this.profcolour.findColour (dc[0], column, null);\r
-}g.setColor (colour === java.awt.Color.white ? java.awt.Color.lightGray : colour);\r
-hght = (ht + (scl - lm.getDescent () - lm.getBaselineOffsets ()[lm.getBaselineIndex ()]));\r
-g.drawChars (dc, 0, dc.length, x * this.charWidth, Clazz.doubleToInt (hght));\r
-valuesProcessed++;\r
-}\r
-g.setFont (ofont);\r
-}}x++;\r
-}\r
-if (_aa.threshold != null) {\r
-g.setColor (_aa.threshold.colour);\r
-var g2 = g;\r
-g2.setStroke ( new java.awt.BasicStroke (1, 2, 1, 3,  Clazz.newFloatArray (-1, [5, 3]), 0));\r
-y2 = Clazz.floatToInt (y - ((_aa.threshold.value - min) / range) * _aa.graphHeight);\r
-g.drawLine (0, y2, (eRes - sRes) * this.charWidth, y2);\r
-g2.setStroke ( new java.awt.BasicStroke ());\r
-}}, "java.awt.Graphics,jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~N,~N,~N,~B,~B,~B");\r
-Clazz.defineMethod (c$, "drawGraph", \r
-function (g, _aa, aa_annotations, width, y, sRes, eRes) {\r
-eRes = Math.min (eRes, aa_annotations.length);\r
-g.setColor (java.awt.Color.white);\r
-g.fillRect (0, 0, width, y);\r
-g.setColor ( new java.awt.Color (0, 0, 180));\r
-var x = 0;\r
-var height;\r
-for (var j = sRes; j < eRes; j++) {\r
-if (aa_annotations[j] != null) {\r
-if (aa_annotations[j].colour == null) {\r
-g.setColor (java.awt.Color.black);\r
-} else {\r
-g.setColor (aa_annotations[j].colour);\r
-}height = Clazz.floatToInt ((aa_annotations[j].value / _aa.graphMax) * y);\r
-if (height > y) {\r
-height = y;\r
-}g.fillRect (x, y - height, this.charWidth, height);\r
-}x += this.charWidth;\r
-}\r
-}, "java.awt.Graphics,jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "getNotCanonicalColor", \r
-function (lastss) {\r
-switch (lastss) {\r
-case '{':\r
-case '}':\r
-return  new java.awt.Color (255, 125, 5);\r
-case '[':\r
-case ']':\r
-return  new java.awt.Color (245, 115, 10);\r
-case '>':\r
-case '<':\r
-return  new java.awt.Color (235, 135, 15);\r
-case 'A':\r
-case 'a':\r
-return  new java.awt.Color (225, 105, 20);\r
-case 'B':\r
-case 'b':\r
-return  new java.awt.Color (215, 145, 30);\r
-case 'C':\r
-case 'c':\r
-return  new java.awt.Color (205, 95, 35);\r
-case 'D':\r
-case 'd':\r
-return  new java.awt.Color (195, 155, 45);\r
-case 'E':\r
-case 'e':\r
-return  new java.awt.Color (185, 85, 55);\r
-case 'F':\r
-case 'f':\r
-return  new java.awt.Color (175, 165, 65);\r
-case 'G':\r
-case 'g':\r
-return  new java.awt.Color (170, 75, 75);\r
-case 'H':\r
-case 'h':\r
-return  new java.awt.Color (160, 175, 85);\r
-case 'I':\r
-case 'i':\r
-return  new java.awt.Color (150, 65, 95);\r
-case 'J':\r
-case 'j':\r
-return  new java.awt.Color (140, 185, 105);\r
-case 'K':\r
-case 'k':\r
-return  new java.awt.Color (130, 55, 110);\r
-case 'L':\r
-case 'l':\r
-return  new java.awt.Color (120, 195, 120);\r
-case 'M':\r
-case 'm':\r
-return  new java.awt.Color (110, 45, 130);\r
-case 'N':\r
-case 'n':\r
-return  new java.awt.Color (100, 205, 140);\r
-case 'O':\r
-case 'o':\r
-return  new java.awt.Color (90, 35, 150);\r
-case 'P':\r
-case 'p':\r
-return  new java.awt.Color (85, 215, 160);\r
-case 'Q':\r
-case 'q':\r
-return  new java.awt.Color (75, 25, 170);\r
-case 'R':\r
-case 'r':\r
-return  new java.awt.Color (65, 225, 180);\r
-case 'S':\r
-case 's':\r
-return  new java.awt.Color (55, 15, 185);\r
-case 'T':\r
-case 't':\r
-return  new java.awt.Color (45, 235, 195);\r
-case 'U':\r
-case 'u':\r
-return  new java.awt.Color (35, 5, 205);\r
-case 'V':\r
-case 'v':\r
-return  new java.awt.Color (25, 245, 215);\r
-case 'W':\r
-case 'w':\r
-return  new java.awt.Color (15, 0, 225);\r
-case 'X':\r
-case 'x':\r
-return  new java.awt.Color (10, 255, 235);\r
-case 'Y':\r
-case 'y':\r
-return  new java.awt.Color (5, 150, 245);\r
-case 'Z':\r
-case 'z':\r
-return  new java.awt.Color (0, 80, 255);\r
-default:\r
-System.out.println ("This is not a interaction : " + lastss);\r
-return null;\r
-}\r
-}, "~S");\r
-c$.GLYPHLINE_COLOR = c$.prototype.GLYPHLINE_COLOR = java.awt.Color.gray;\r
-c$.SHEET_COLOUR = c$.prototype.SHEET_COLOUR = java.awt.Color.green;\r
-c$.HELIX_COLOUR = c$.prototype.HELIX_COLOUR = java.awt.Color.red;\r
-c$.STEM_COLOUR = c$.prototype.STEM_COLOUR = java.awt.Color.blue;\r
-});\r
+Clazz.declarePackage ("jalview.renderer");
+Clazz.load (["jalview.util.Platform", "java.awt.Color"], "jalview.renderer.AnnotationRenderer", ["jalview.analysis.AAFrequency", "$.CodingUtils", "$.StructureFrequency", "jalview.jsdev.RegExp", "jalview.schemes.NucleotideColourScheme", "$.ResidueProperties", "$.ZappoColourScheme", "java.awt.BasicStroke", "java.awt.geom.AffineTransform", "java.util.BitSet"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.debugRedraw = false;
+this.charWidth = 0;
+this.endRes = 0;
+this.charHeight = 0;
+this.validCharWidth = false;
+this.hasHiddenColumns = false;
+this.fm = null;
+this.MAC = false;
+this.av_renderHistogram = true;
+this.av_renderProfile = true;
+this.av_normaliseProfile = false;
+this.profcolour = null;
+this.columnSelection = null;
+this.hconsensus = null;
+this.complementConsensus = null;
+this.hStrucConsensus = null;
+this.av_ignoreGapsConsensus = false;
+this.fadedImage = null;
+this.annotationPanel = null;
+this.imgWidth = 0;
+this.sOffset = 0;
+this.visHeight = 0;
+this.useClip = true;
+this.canClip = false;
+this.rna = false;
+this.sdNOTCANONICAL_COLOUR = null;
+Clazz.instantialize (this, arguments);
+}, jalview.renderer, "AnnotationRenderer");
+Clazz.prepareFields (c$, function () {
+this.MAC = jalview.util.Platform.isAMac ();
+});
+Clazz.makeConstructor (c$, 
+function () {
+this.construct (false);
+});
+Clazz.makeConstructor (c$, 
+function (debugRedraw) {
+this.debugRedraw = debugRedraw;
+}, "~B");
+Clazz.defineMethod (c$, "drawStemAnnot", 
+function (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {
+g.setColor (jalview.renderer.AnnotationRenderer.STEM_COLOUR);
+var sCol = (Clazz.doubleToInt (lastSSX / this.charWidth)) + startRes;
+var x1 = lastSSX;
+var x2 = (x * this.charWidth);
+var closeparen = jalview.jsdev.RegExp.newRegex (["(\\))"]);
+var dc = (column == 0 || row_annotations[column - 1] == null) ? ' ' : row_annotations[column - 1].secondaryStructure;
+var diffupstream = sCol == 0 || row_annotations[sCol - 1] == null || dc != row_annotations[sCol - 1].secondaryStructure;
+var diffdownstream = !validRes || !validEnd || row_annotations[column] == null || dc != row_annotations[column].secondaryStructure;
+if (column > 0 && jalview.schemes.ResidueProperties.isCloseParenRNA (dc)) {
+if (diffupstream) {
+g.fillPolygon ( Clazz.newIntArray (-1, [lastSSX + 5, lastSSX + 5, lastSSX]),  Clazz.newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset]), 3);
+x1 += 5;
+}if (diffdownstream) {
+x2 -= 1;
+}} else {
+if (diffdownstream) {
+g.fillPolygon ( Clazz.newIntArray (-1, [x2 - 5, x2 - 5, x2]),  Clazz.newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset]), 3);
+x2 -= 5;
+}if (diffupstream) {
+x1 += 1;
+}}g.fillRect (x1, y + 4 + iconOffset, x2 - x1, 7);
+}, "java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");
+Clazz.defineMethod (c$, "drawNotCanonicalAnnot", 
+function (g, nonCanColor, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {
+g.setColor (nonCanColor);
+var sCol = (Clazz.doubleToInt (lastSSX / this.charWidth)) + startRes;
+var x1 = lastSSX;
+var x2 = (x * this.charWidth);
+var closeparen = jalview.jsdev.RegExp.newRegex (["}|]|<|[a-z]"]);
+var dc = (column == 0 || row_annotations[column - 1] == null) ? "" : row_annotations[column - 1].displayCharacter;
+var diffupstream = sCol == 0 || row_annotations[sCol - 1] == null || !dc.equals (row_annotations[sCol - 1].displayCharacter);
+var diffdownstream = !validRes || !validEnd || row_annotations[column] == null || !dc.equals (row_annotations[column].displayCharacter);
+if (column > 0 && closeparen.search (dc)) {
+if (diffupstream) {
+g.fillPolygon ( Clazz.newIntArray (-1, [lastSSX + 5, lastSSX + 5, lastSSX]),  Clazz.newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset]), 3);
+x1 += 5;
+}if (diffdownstream) {
+x2 -= 1;
+}} else {
+if (diffdownstream) {
+g.fillPolygon ( Clazz.newIntArray (-1, [x2 - 5, x2 - 5, x2]),  Clazz.newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset]), 3);
+x2 -= 5;
+}if (diffupstream) {
+x1 += 1;
+}}g.fillRect (x1, y + 4 + iconOffset, x2 - x1, 7);
+}, "java.awt.Graphics,java.awt.Color,~A,~N,~N,~N,~N,~N,~N,~B,~B");
+Clazz.defineMethod (c$, "updateFromAwtRenderPanel", 
+function (annotPanel, av) {
+this.fm = annotPanel.getFontMetrics ();
+this.annotationPanel = annotPanel;
+this.fadedImage = annotPanel.getFadedImage ();
+this.imgWidth = annotPanel.getFadedImageWidth ();
+var bounds = annotPanel.getVisibleVRange ();
+if (bounds != null) {
+this.sOffset = bounds[0];
+this.visHeight = bounds[1];
+if (this.visHeight == 0) {
+this.useClip = false;
+} else {
+this.useClip = this.canClip;
+}} else {
+this.useClip = false;
+}this.updateFromAlignViewport (av);
+}, "jalview.renderer.AwtRenderPanelI,jalview.api.AlignViewportI");
+Clazz.defineMethod (c$, "updateFromAlignViewport", 
+function (av) {
+this.charWidth = av.getCharWidth ();
+this.endRes = av.getEndRes ();
+this.charHeight = av.getCharHeight ();
+this.hasHiddenColumns = av.hasHiddenColumns ();
+this.validCharWidth = av.isValidCharWidth ();
+this.av_renderHistogram = av.isShowConsensusHistogram ();
+this.av_renderProfile = av.isShowSequenceLogo ();
+this.av_normaliseProfile = av.isNormaliseSequenceLogo ();
+this.profcolour = av.getGlobalColourScheme ();
+if (this.profcolour == null) {
+this.profcolour = av.getAlignment ().isNucleotide () ?  new jalview.schemes.NucleotideColourScheme () :  new jalview.schemes.ZappoColourScheme ();
+}this.columnSelection = av.getColumnSelection ();
+this.hconsensus = av.getSequenceConsensusHash ();
+this.complementConsensus = av.getComplementConsensusHash ();
+this.hStrucConsensus = av.getRnaStructureConsensusHash ();
+this.av_ignoreGapsConsensus = av.isIgnoreGapsConsensus ();
+}, "jalview.api.AlignViewportI");
+Clazz.defineMethod (c$, "getProfileFor", 
+function (aa, column) {
+if (aa.autoCalculated && (aa.label.startsWith ("Consensus") || aa.label.startsWith ("cDNA Consensus"))) {
+var forComplement = aa.label.startsWith ("cDNA Consensus");
+if (aa.groupRef != null && aa.groupRef.consensusData != null && aa.groupRef.isShowSequenceLogo ()) {
+return jalview.analysis.AAFrequency.extractProfile (aa.groupRef.consensusData[column], aa.groupRef.getIgnoreGapsConsensus ());
+}if (aa.groupRef == null && aa.sequenceRef == null) {
+if (forComplement) {
+return jalview.analysis.AAFrequency.extractCdnaProfile (this.complementConsensus[column], this.av_ignoreGapsConsensus);
+} else {
+return jalview.analysis.AAFrequency.extractProfile (this.hconsensus[column], this.av_ignoreGapsConsensus);
+}}} else {
+if (aa.autoCalculated && aa.label.startsWith ("StrucConsensus")) {
+if (aa.groupRef == null && aa.sequenceRef == null && this.hStrucConsensus != null && this.hStrucConsensus.length > column) {
+return jalview.analysis.StructureFrequency.extractProfile (this.hStrucConsensus[column], this.av_ignoreGapsConsensus);
+}}}return null;
+}, "jalview.datamodel.AlignmentAnnotation,~N");
+Clazz.defineMethod (c$, "drawComponent", 
+function (annotPanel, av, g, activeRow, startRes, endRes) {
+var stime = System.currentTimeMillis ();
+var usedFaded = false;
+this.updateFromAwtRenderPanel (annotPanel, av);
+this.fm = g.getFontMetrics ();
+var aa = av.getAlignment ().getAlignmentAnnotation ();
+var temp = 0;
+if (aa == null) {
+return false;
+}var x = 0;
+var y = 0;
+var column = 0;
+var lastSS;
+var lastSSX;
+var iconOffset = 0;
+var validRes = false;
+var validEnd = false;
+var labelAllCols = false;
+var centreColLabels;
+var centreColLabelsDef = av.isCentreColumnLabels ();
+var scaleColLabel = false;
+var consensusAnnot = av.getAlignmentConsensusAnnotation ();
+var structConsensusAnnot = av.getAlignmentStrucConsensusAnnotation ();
+var complementConsensusAnnot = av.getComplementConsensusAnnotation ();
+var renderHistogram = true;
+var renderProfile = true;
+var normaliseProfile = false;
+var isRNA = this.rna;
+var graphGroupDrawn =  new java.util.BitSet ();
+var charOffset = 0;
+var fmWidth;
+var fmScaling = 1;
+var ofont = g.getFont ();
+var yfrom = 0;
+var f_i = 0;
+var yto = 0;
+var f_to = 0;
+var clipst = false;
+var clipend = false;
+for (var i = 0; i < aa.length; i++) {
+var row = aa[i];
+isRNA = row.isRNA ();
+{
+if (row.groupRef != null && row === row.groupRef.getConsensus ()) {
+renderHistogram = row.groupRef.isShowConsensusHistogram ();
+renderProfile = row.groupRef.isShowSequenceLogo ();
+normaliseProfile = row.groupRef.isNormaliseSequenceLogo ();
+} else if (row === consensusAnnot || row === structConsensusAnnot || row === complementConsensusAnnot) {
+renderHistogram = this.av_renderHistogram;
+renderProfile = this.av_renderProfile;
+normaliseProfile = this.av_normaliseProfile;
+} else {
+renderHistogram = true;
+}}var row_annotations = row.annotations;
+if (!row.visible) {
+continue;
+}centreColLabels = row.centreColLabels || centreColLabelsDef;
+labelAllCols = row.showAllColLabels;
+scaleColLabel = row.scaleColLabel;
+lastSS = ' ';
+lastSSX = 0;
+if (!this.useClip || ((y - this.charHeight) < this.visHeight && (y + row.height + this.charHeight * 2) >= this.sOffset)) {
+if (!clipst) {
+clipst = true;
+yfrom = y;
+f_i = i;
+}yto = y;
+f_to = i;
+if (row.graph > 0) {
+if (row.graphGroup > -1 && graphGroupDrawn.get (row.graphGroup)) {
+continue;
+}y += row.height;
+if (row.hasText) {
+iconOffset = this.charHeight - this.fm.getDescent ();
+y -= this.charHeight;
+}} else if (row.hasText) {
+iconOffset = this.charHeight - this.fm.getDescent ();
+} else {
+iconOffset = 0;
+}if (row.autoCalculated && av.isCalculationInProgress (row)) {
+y += this.charHeight;
+usedFaded = true;
+g.drawImage (this.fadedImage, 0, y - row.height, this.imgWidth, y, 0, y - row.height, this.imgWidth, y, this.annotationPanel);
+g.setColor (java.awt.Color.black);
+continue;
+}x = (startRes == 0) ? 0 : -1;
+while (x < endRes - startRes) {
+if (this.hasHiddenColumns) {
+column = this.columnSelection.adjustForHiddenColumns (startRes + x);
+if (column > row_annotations.length - 1) {
+break;
+}} else {
+column = startRes + x;
+}if ((row_annotations == null) || (row_annotations.length <= column) || (row_annotations[column] == null)) {
+validRes = false;
+} else {
+validRes = true;
+}var displayChar = validRes ? row_annotations[column].displayCharacter : null;
+if (x > -1) {
+if (activeRow == i) {
+g.setColor (java.awt.Color.red);
+if (this.columnSelection != null) {
+for (var n = 0; n < this.columnSelection.size (); n++) {
+var v = this.columnSelection.columnAt (n);
+if (v == column) {
+g.fillRect (x * this.charWidth, y, this.charWidth, this.charHeight);
+}}
+}}if (row.getInvalidStrucPos () > x) {
+g.setColor (java.awt.Color.orange);
+g.fillRect (x * this.charWidth, y, this.charWidth, this.charHeight);
+} else if (row.getInvalidStrucPos () == x) {
+g.setColor (java.awt.Color.orange.darker ());
+g.fillRect (x * this.charWidth, y, this.charWidth, this.charHeight);
+}if (this.validCharWidth && validRes && displayChar != null && (displayChar.length > 0)) {
+fmWidth = this.fm.charsWidth (displayChar.toCharArray (), 0, displayChar.length);
+if (scaleColLabel) {
+if (fmWidth > this.charWidth) {
+fmScaling = this.charWidth;
+fmScaling /= fmWidth;
+g.setFont (ofont.deriveFont (java.awt.geom.AffineTransform.getScaleInstance (fmScaling, 1.0)));
+fmWidth = this.charWidth;
+}}charOffset = Clazz.floatToInt ((this.charWidth - fmWidth) / 2);
+if (row_annotations[column].colour == null) {
+g.setColor (java.awt.Color.black);
+} else {
+g.setColor (row_annotations[column].colour);
+}if (column == 0 || row.graph > 0) {
+g.drawString (displayChar, (x * this.charWidth) + charOffset, y + iconOffset);
+} else if (row_annotations[column - 1] == null || (labelAllCols || !displayChar.equals (row_annotations[column - 1].displayCharacter) || (displayChar.length < 2 && row_annotations[column].secondaryStructure == ' '))) {
+g.drawString (displayChar, x * this.charWidth + charOffset, y + iconOffset);
+}g.setFont (ofont);
+}}if (row.hasIcons) {
+var ss = validRes ? row_annotations[column].secondaryStructure : '-';
+if (ss == '(') {
+if (displayChar.indexOf (')') > -1) {
+ss = ')';
+}}if (ss == '[') {
+if ((displayChar.indexOf (']') > -1)) {
+ss = ']';
+}}if (ss == '{') {
+if (displayChar.indexOf ('}') > -1) {
+ss = '}';
+}}if (ss == '<') {
+if (displayChar.indexOf ('<') > -1) {
+ss = '>';
+}}if (ss.charCodeAt (0) >= 65) {
+if (displayChar.indexOf (ss.charCodeAt (0) + 32) > -1) {
+ss = String.fromCharCode (ss.charCodeAt (0) + 32);
+}}if (!validRes || (ss != lastSS)) {
+if (x > -1) {
+var nb_annot = x - temp;
+switch (lastSS) {
+case '(':
+case ')':
+this.drawStemAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+temp = x;
+break;
+case 'H':
+if (!isRNA) {
+this.drawHelixAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+break;
+}case 'E':
+if (!isRNA) {
+this.drawSheetAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+break;
+}case '{':
+case '}':
+case '[':
+case ']':
+case '>':
+case '<':
+case 'A':
+case 'a':
+case 'B':
+case 'b':
+case 'C':
+case 'c':
+case 'D':
+case 'd':
+case 'e':
+case 'F':
+case 'f':
+case 'G':
+case 'g':
+case 'h':
+case 'I':
+case 'i':
+case 'J':
+case 'j':
+case 'K':
+case 'k':
+case 'L':
+case 'l':
+case 'M':
+case 'm':
+case 'N':
+case 'n':
+case 'O':
+case 'o':
+case 'P':
+case 'p':
+case 'Q':
+case 'q':
+case 'R':
+case 'r':
+case 'S':
+case 's':
+case 'T':
+case 't':
+case 'U':
+case 'u':
+case 'V':
+case 'v':
+case 'W':
+case 'w':
+case 'X':
+case 'x':
+case 'Y':
+case 'y':
+case 'Z':
+case 'z':
+var nonCanColor = this.getNotCanonicalColor (lastSS);
+this.drawNotCanonicalAnnot (g, nonCanColor, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+temp = x;
+break;
+default:
+g.setColor (java.awt.Color.gray);
+g.fillRect (lastSSX, y + 6 + iconOffset, (x * this.charWidth) - lastSSX, 2);
+temp = x;
+break;
+}
+}if (validRes) {
+lastSS = ss;
+} else {
+lastSS = ' ';
+}if (x > -1) {
+lastSSX = (x * this.charWidth);
+}}}column++;
+x++;
+}
+if (column >= row_annotations.length) {
+column = row_annotations.length - 1;
+validEnd = false;
+} else {
+validEnd = true;
+}if ((row_annotations == null) || (row_annotations.length <= column) || (row_annotations[column] == null)) {
+validRes = false;
+} else {
+validRes = true;
+}if (row.hasIcons) {
+switch (lastSS) {
+case 'H':
+if (!isRNA) {
+this.drawHelixAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+break;
+}case 'E':
+if (!isRNA) {
+this.drawSheetAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+break;
+}case '(':
+case ')':
+this.drawStemAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+break;
+case '{':
+case '}':
+case '[':
+case ']':
+case '>':
+case '<':
+case 'A':
+case 'a':
+case 'B':
+case 'b':
+case 'C':
+case 'c':
+case 'D':
+case 'd':
+case 'e':
+case 'F':
+case 'f':
+case 'G':
+case 'g':
+case 'h':
+case 'I':
+case 'i':
+case 'J':
+case 'j':
+case 'K':
+case 'k':
+case 'L':
+case 'l':
+case 'M':
+case 'm':
+case 'N':
+case 'n':
+case 'O':
+case 'o':
+case 'P':
+case 'p':
+case 'Q':
+case 'q':
+case 'R':
+case 'r':
+case 'T':
+case 't':
+case 'U':
+case 'u':
+case 'V':
+case 'v':
+case 'W':
+case 'w':
+case 'X':
+case 'x':
+case 'Y':
+case 'y':
+case 'Z':
+case 'z':
+var nonCanColor = this.getNotCanonicalColor (lastSS);
+this.drawNotCanonicalAnnot (g, nonCanColor, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+break;
+default:
+this.drawGlyphLine (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+break;
+}
+}if (row.graph > 0 && row.graphHeight > 0) {
+if (row.graph == 2) {
+if (row.graphGroup > -1 && !graphGroupDrawn.get (row.graphGroup)) {
+var groupmax = -999999;
+var groupmin = 9999999;
+for (var gg = 0; gg < aa.length; gg++) {
+if (aa[gg].graphGroup != row.graphGroup) {
+continue;
+}if (aa[gg] !== row) {
+aa[gg].visible = false;
+}if (aa[gg].graphMax > groupmax) {
+groupmax = aa[gg].graphMax;
+}if (aa[gg].graphMin < groupmin) {
+groupmin = aa[gg].graphMin;
+}}
+for (var gg = 0; gg < aa.length; gg++) {
+if (aa[gg].graphGroup == row.graphGroup) {
+this.drawLineGraph (g, aa[gg], aa[gg].annotations, startRes, endRes, y, groupmin, groupmax, row.graphHeight);
+}}
+graphGroupDrawn.set (row.graphGroup);
+} else {
+this.drawLineGraph (g, row, row_annotations, startRes, endRes, y, row.graphMin, row.graphMax, row.graphHeight);
+}} else if (row.graph == 1) {
+this.drawBarGraph (g, row, row_annotations, startRes, endRes, row.graphMin, row.graphMax, y, renderHistogram, renderProfile, normaliseProfile);
+}}} else {
+if (clipst && !clipend) {
+clipend = true;
+}}if (row.graph > 0 && row.hasText) {
+y += this.charHeight;
+}if (row.graph == 0) {
+y += aa[i].height;
+}}
+if (this.debugRedraw) {
+if (this.canClip) {
+if (clipst) {
+System.err.println ("Start clip at : " + yfrom + " (index " + f_i + ")");
+}if (clipend) {
+System.err.println ("End clip at : " + yto + " (index " + f_to + ")");
+}};System.err.println ("Annotation Rendering time:" + (System.currentTimeMillis () - stime));
+};return !usedFaded;
+}, "jalview.renderer.AwtRenderPanelI,jalview.api.AlignViewportI,java.awt.Graphics,~N,~N,~N");
+Clazz.defineMethod (c$, "drawGlyphLine", 
+function (g, row, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {
+g.setColor (jalview.renderer.AnnotationRenderer.GLYPHLINE_COLOR);
+g.fillRect (lastSSX, y + 6 + iconOffset, (x * this.charWidth) - lastSSX, 2);
+}, "java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");
+Clazz.defineMethod (c$, "drawSheetAnnot", 
+function (g, row, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {
+g.setColor (jalview.renderer.AnnotationRenderer.SHEET_COLOUR);
+if (!validEnd || !validRes || row == null || row[column] == null || row[column].secondaryStructure != 'E') {
+g.fillRect (lastSSX, y + 4 + iconOffset, (x * this.charWidth) - lastSSX - 4, 7);
+g.fillPolygon ( Clazz.newIntArray (-1, [(x * this.charWidth) - 4, (x * this.charWidth) - 4, (x * this.charWidth)]),  Clazz.newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 7 + iconOffset]), 3);
+} else {
+g.fillRect (lastSSX, y + 4 + iconOffset, (x + 1) * this.charWidth - lastSSX, 7);
+}}, "java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");
+Clazz.defineMethod (c$, "drawHelixAnnot", 
+function (g, row, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {
+g.setColor (jalview.renderer.AnnotationRenderer.HELIX_COLOUR);
+var sCol = (Clazz.doubleToInt (lastSSX / this.charWidth)) + startRes;
+var x1 = lastSSX;
+var x2 = (x * this.charWidth);
+if (this.MAC) {
+var ofs = Clazz.doubleToInt (this.charWidth / 2);
+g.fillRoundRect (lastSSX, y + 4 + iconOffset, x2 - x1, 8, 8, 8);
+if (sCol == 0 || row[sCol - 1] == null || row[sCol - 1].secondaryStructure != 'H') {
+} else {
+g.fillRoundRect (lastSSX, y + 4 + iconOffset, x2 - x1 - ofs + 1, 8, 0, 0);
+}if (!validRes || row[column] == null || row[column].secondaryStructure != 'H') {
+} else {
+g.fillRoundRect (lastSSX + ofs, y + 4 + iconOffset, x2 - x1 - ofs + 1, 8, 0, 0);
+}return;
+}if (sCol == 0 || row[sCol - 1] == null || row[sCol - 1].secondaryStructure != 'H') {
+g.fillArc (lastSSX, y + 4 + iconOffset, this.charWidth, 8, 90, 180);
+x1 += Clazz.doubleToInt (this.charWidth / 2);
+}if (!validRes || row[column] == null || row[column].secondaryStructure != 'H') {
+g.fillArc ((x * this.charWidth) - this.charWidth, y + 4 + iconOffset, this.charWidth, 8, 270, 180);
+x2 -= Clazz.doubleToInt (this.charWidth / 2);
+}g.fillRect (x1, y + 4 + iconOffset, x2 - x1, 8);
+}, "java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");
+Clazz.defineMethod (c$, "drawLineGraph", 
+function (g, _aa, aa_annotations, sRes, eRes, y, min, max, graphHeight) {
+if (sRes > aa_annotations.length) {
+return;
+}var x = 0;
+if (eRes < this.endRes) {
+eRes++;
+}eRes = Math.min (eRes, aa_annotations.length);
+if (sRes == 0) {
+x++;
+}var y1 = y;
+var y2 = y;
+var range = max - min;
+if (min < 0) {
+y2 = y - Clazz.floatToInt ((0 - min / range) * graphHeight);
+}g.setColor (java.awt.Color.gray);
+g.drawLine (x - this.charWidth, y2, (eRes - sRes + 1) * this.charWidth, y2);
+eRes = Math.min (eRes, aa_annotations.length);
+var column;
+var aaMax = aa_annotations.length - 1;
+while (x < eRes - sRes) {
+column = sRes + x;
+if (this.hasHiddenColumns) {
+column = this.columnSelection.adjustForHiddenColumns (column);
+}if (column > aaMax) {
+break;
+}if (aa_annotations[column] == null || aa_annotations[column - 1] == null) {
+x++;
+continue;
+}if (aa_annotations[column].colour == null) {
+g.setColor (java.awt.Color.black);
+} else {
+g.setColor (aa_annotations[column].colour);
+}y1 = y - Clazz.floatToInt (((aa_annotations[column - 1].value - min) / range) * graphHeight);
+y2 = y - Clazz.floatToInt (((aa_annotations[column].value - min) / range) * graphHeight);
+g.drawLine (x * this.charWidth - Clazz.doubleToInt (this.charWidth / 2), y1, x * this.charWidth + Clazz.doubleToInt (this.charWidth / 2), y2);
+x++;
+}
+if (_aa.threshold != null) {
+g.setColor (_aa.threshold.colour);
+var g2 = g;
+g2.setStroke ( new java.awt.BasicStroke (1, 2, 1, 3,  Clazz.newFloatArray (-1, [5, 3]), 0));
+y2 = Clazz.floatToInt (y - ((_aa.threshold.value - min) / range) * graphHeight);
+g.drawLine (0, y2, (eRes - sRes) * this.charWidth, y2);
+g2.setStroke ( new java.awt.BasicStroke ());
+}}, "java.awt.Graphics,jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "drawBarGraph", 
+function (g, _aa, aa_annotations, sRes, eRes, min, max, y, renderHistogram, renderProfile, normaliseProfile) {
+if (sRes > aa_annotations.length) {
+return;
+}var ofont = g.getFont ();
+eRes = Math.min (eRes, aa_annotations.length);
+var x = 0;
+var y1 = y;
+var y2 = y;
+var range = max - min;
+if (min < 0) {
+y2 = y - Clazz.floatToInt ((0 - min / (range)) * _aa.graphHeight);
+}g.setColor (java.awt.Color.gray);
+g.drawLine (x, y2, (eRes - sRes) * this.charWidth, y2);
+var column;
+var aaMax = aa_annotations.length - 1;
+while (x < eRes - sRes) {
+column = sRes + x;
+if (this.hasHiddenColumns) {
+column = this.columnSelection.adjustForHiddenColumns (column);
+}if (column > aaMax) {
+break;
+}if (aa_annotations[column] == null) {
+x++;
+continue;
+}if (aa_annotations[column].colour == null) {
+g.setColor (java.awt.Color.black);
+} else {
+g.setColor (aa_annotations[column].colour);
+}y1 = y - Clazz.floatToInt (((aa_annotations[column].value - min) / (range)) * _aa.graphHeight);
+if (renderHistogram) {
+if (y1 - y2 > 0) {
+g.fillRect (x * this.charWidth, y2, this.charWidth, y1 - y2);
+} else {
+g.fillRect (x * this.charWidth, y1, this.charWidth, y2 - y1);
+}}if (renderProfile) {
+var profl = this.getProfileFor (_aa, column);
+if (profl != null && profl[2] != 0) {
+var isStructureProfile = profl[0] == 1;
+var isCdnaProfile = profl[0] == 2;
+var ht = normaliseProfile ? y - _aa.graphHeight : y1;
+var htn = normaliseProfile ? _aa.graphHeight : (y2 - y1);
+var hght;
+var wdth;
+var ht2 = 0;
+var dc;
+dc =  Clazz.newCharArray (isStructureProfile ? 2 : (isCdnaProfile ? 3 : 1), '\0');
+var lm = g.getFontMetrics (ofont).getLineMetrics ("Q", g);
+var scale = 1 / (normaliseProfile ? profl[2] : 100);
+var ofontHeight = 1 / lm.getAscent ();
+var scl = 0.0;
+var c = 3;
+var valuesProcessed = 0;
+while (valuesProcessed < profl[1]) {
+if (isStructureProfile) {
+dc[0] = String.fromCharCode (profl[c++]);
+dc[1] = String.fromCharCode (profl[c++]);
+} else if (isCdnaProfile) {
+dc = jalview.analysis.CodingUtils.decodeCodon (profl[c++]);
+} else {
+dc[0] = String.fromCharCode (profl[c++]);
+}wdth = this.charWidth;
+wdth /= this.fm.charsWidth (dc, 0, dc.length);
+ht += scl;
+scl = htn * scale * profl[c++];
+lm = ofont.getLineMetrics (dc, 0, 1, g.getFontMetrics ().getFontRenderContext ());
+g.setFont (ofont.deriveFont (java.awt.geom.AffineTransform.getScaleInstance (wdth, scl / lm.getAscent ())));
+lm = g.getFontMetrics ().getLineMetrics (dc, 0, 1, g);
+var colour = null;
+if (isCdnaProfile) {
+var codonTranslation = jalview.schemes.ResidueProperties.codonTranslate ( String.instantialize (dc));
+colour = this.profcolour.findColour (codonTranslation.charAt (0), column, null);
+} else {
+colour = this.profcolour.findColour (dc[0], column, null);
+}g.setColor (colour === java.awt.Color.white ? java.awt.Color.lightGray : colour);
+hght = (ht + (scl - lm.getDescent () - lm.getBaselineOffsets ()[lm.getBaselineIndex ()]));
+g.drawChars (dc, 0, dc.length, x * this.charWidth, Clazz.doubleToInt (hght));
+valuesProcessed++;
+}
+g.setFont (ofont);
+}}x++;
+}
+if (_aa.threshold != null) {
+g.setColor (_aa.threshold.colour);
+var g2 = g;
+g2.setStroke ( new java.awt.BasicStroke (1, 2, 1, 3,  Clazz.newFloatArray (-1, [5, 3]), 0));
+y2 = Clazz.floatToInt (y - ((_aa.threshold.value - min) / range) * _aa.graphHeight);
+g.drawLine (0, y2, (eRes - sRes) * this.charWidth, y2);
+g2.setStroke ( new java.awt.BasicStroke ());
+}}, "java.awt.Graphics,jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~N,~N,~N,~B,~B,~B");
+Clazz.defineMethod (c$, "drawGraph", 
+function (g, _aa, aa_annotations, width, y, sRes, eRes) {
+eRes = Math.min (eRes, aa_annotations.length);
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, width, y);
+g.setColor ( new java.awt.Color (0, 0, 180));
+var x = 0;
+var height;
+for (var j = sRes; j < eRes; j++) {
+if (aa_annotations[j] != null) {
+if (aa_annotations[j].colour == null) {
+g.setColor (java.awt.Color.black);
+} else {
+g.setColor (aa_annotations[j].colour);
+}height = Clazz.floatToInt ((aa_annotations[j].value / _aa.graphMax) * y);
+if (height > y) {
+height = y;
+}g.fillRect (x, y - height, this.charWidth, height);
+}x += this.charWidth;
+}
+}, "java.awt.Graphics,jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "getNotCanonicalColor", 
+function (lastss) {
+switch (lastss) {
+case '{':
+case '}':
+return  new java.awt.Color (255, 125, 5);
+case '[':
+case ']':
+return  new java.awt.Color (245, 115, 10);
+case '>':
+case '<':
+return  new java.awt.Color (235, 135, 15);
+case 'A':
+case 'a':
+return  new java.awt.Color (225, 105, 20);
+case 'B':
+case 'b':
+return  new java.awt.Color (215, 145, 30);
+case 'C':
+case 'c':
+return  new java.awt.Color (205, 95, 35);
+case 'D':
+case 'd':
+return  new java.awt.Color (195, 155, 45);
+case 'E':
+case 'e':
+return  new java.awt.Color (185, 85, 55);
+case 'F':
+case 'f':
+return  new java.awt.Color (175, 165, 65);
+case 'G':
+case 'g':
+return  new java.awt.Color (170, 75, 75);
+case 'H':
+case 'h':
+return  new java.awt.Color (160, 175, 85);
+case 'I':
+case 'i':
+return  new java.awt.Color (150, 65, 95);
+case 'J':
+case 'j':
+return  new java.awt.Color (140, 185, 105);
+case 'K':
+case 'k':
+return  new java.awt.Color (130, 55, 110);
+case 'L':
+case 'l':
+return  new java.awt.Color (120, 195, 120);
+case 'M':
+case 'm':
+return  new java.awt.Color (110, 45, 130);
+case 'N':
+case 'n':
+return  new java.awt.Color (100, 205, 140);
+case 'O':
+case 'o':
+return  new java.awt.Color (90, 35, 150);
+case 'P':
+case 'p':
+return  new java.awt.Color (85, 215, 160);
+case 'Q':
+case 'q':
+return  new java.awt.Color (75, 25, 170);
+case 'R':
+case 'r':
+return  new java.awt.Color (65, 225, 180);
+case 'S':
+case 's':
+return  new java.awt.Color (55, 15, 185);
+case 'T':
+case 't':
+return  new java.awt.Color (45, 235, 195);
+case 'U':
+case 'u':
+return  new java.awt.Color (35, 5, 205);
+case 'V':
+case 'v':
+return  new java.awt.Color (25, 245, 215);
+case 'W':
+case 'w':
+return  new java.awt.Color (15, 0, 225);
+case 'X':
+case 'x':
+return  new java.awt.Color (10, 255, 235);
+case 'Y':
+case 'y':
+return  new java.awt.Color (5, 150, 245);
+case 'Z':
+case 'z':
+return  new java.awt.Color (0, 80, 255);
+default:
+System.out.println ("This is not a interaction : " + lastss);
+return null;
+}
+}, "~S");
+c$.GLYPHLINE_COLOR = c$.prototype.GLYPHLINE_COLOR = java.awt.Color.gray;
+c$.SHEET_COLOUR = c$.prototype.SHEET_COLOUR = java.awt.Color.green;
+c$.HELIX_COLOUR = c$.prototype.HELIX_COLOUR = java.awt.Color.red;
+c$.STEM_COLOUR = c$.prototype.STEM_COLOUR = java.awt.Color.blue;
+});
index e3aa6c9..42dbcc3 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.renderer");\r
-Clazz.load (["java.awt.image.ImageObserver"], "jalview.renderer.AwtRenderPanelI", null, function () {\r
-Clazz.declareInterface (jalview.renderer, "AwtRenderPanelI", java.awt.image.ImageObserver);\r
-});\r
+Clazz.declarePackage ("jalview.renderer");
+Clazz.load (["java.awt.image.ImageObserver"], "jalview.renderer.AwtRenderPanelI", null, function () {
+Clazz.declareInterface (jalview.renderer, "AwtRenderPanelI", java.awt.image.ImageObserver);
+});
index 04d500b..9f05aad 100644 (file)
Binary files a/bin/jalview/renderer/seqfeatures/FeatureRenderer.class and b/bin/jalview/renderer/seqfeatures/FeatureRenderer.class differ
index 019d218..7dc84b1 100644 (file)
-Clazz.declarePackage ("jalview.renderer.seqfeatures");\r
-Clazz.load (["jalview.viewmodel.seqfeatures.FeatureRendererModel"], "jalview.renderer.seqfeatures.FeatureRenderer", ["jalview.util.Comparison", "java.awt.AlphaComposite", "$.Color", "java.awt.image.BufferedImage", "java.lang.Float"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.fm = null;\r
-this.charOffset = 0;\r
-this.offscreenRender = false;\r
-this.lastSeq = null;\r
-this.s = '\0';\r
-this.i = 0;\r
-this.av_charHeight = 0;\r
-this.av_charWidth = 0;\r
-this.av_validCharWidth = false;\r
-this.av_isShowSeqFeatureHeight = false;\r
-this.offscreenImage = null;\r
-this.lastSequenceFeatures = null;\r
-this.sfSize = 0;\r
-this.sfindex = 0;\r
-this.spos = 0;\r
-this.epos = 0;\r
-this.transparencyAvailable = true;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.renderer.seqfeatures, "FeatureRenderer", jalview.viewmodel.seqfeatures.FeatureRendererModel);\r
-Clazz.defineMethod (c$, "updateAvConfig", \r
-function () {\r
-this.av_charHeight = this.av.getCharHeight ();\r
-this.av_charWidth = this.av.getCharWidth ();\r
-this.av_validCharWidth = this.av.isValidCharWidth ();\r
-this.av_isShowSeqFeatureHeight = this.av.isShowSequenceFeaturesHeight ();\r
-});\r
-Clazz.defineMethod (c$, "renderFeature", \r
-function (g, seq, fstart, fend, featureColour, start, end, y1) {\r
-this.updateAvConfig ();\r
-if (((fstart <= end) && (fend >= start))) {\r
-if (fstart < start) {\r
-fstart = start;\r
-}if (fend >= end) {\r
-fend = end;\r
-}var pady = (y1 + this.av_charHeight) - Clazz.doubleToInt (this.av_charHeight / 5);\r
-for (this.i = fstart; this.i <= fend; this.i++) {\r
-this.s = seq.getCharAt (this.i);\r
-if (jalview.util.Comparison.isGap (this.s)) {\r
-continue;\r
-}g.setColor (featureColour);\r
-g.fillRect ((this.i - start) * this.av_charWidth, y1, this.av_charWidth, this.av_charHeight);\r
-if (this.offscreenRender || !this.av_validCharWidth) {\r
-continue;\r
-}g.setColor (java.awt.Color.white);\r
-this.charOffset = Clazz.doubleToInt ((this.av_charWidth - this.fm.charWidth (this.s)) / 2);\r
-g.drawString (String.valueOf (this.s), this.charOffset + (this.av_charWidth * (this.i - start)), pady);\r
-}\r
-}}, "java.awt.Graphics,jalview.datamodel.SequenceI,~N,~N,java.awt.Color,~N,~N,~N");\r
-Clazz.defineMethod (c$, "renderScoreFeature", \r
-function (g, seq, fstart, fend, featureColour, start, end, y1, bs) {\r
-this.updateAvConfig ();\r
-if (((fstart <= end) && (fend >= start))) {\r
-if (fstart < start) {\r
-fstart = start;\r
-}if (fend >= end) {\r
-fend = end;\r
-}var pady = (y1 + this.av_charHeight) - Clazz.doubleToInt (this.av_charHeight / 5);\r
-var ystrt = 0;\r
-var yend = this.av_charHeight;\r
-if (bs[0] != 0) {\r
-if (bs[1] < 128) {\r
-yend = Clazz.doubleToInt (this.av_charHeight * (128 - bs[1]) / 512);\r
-ystrt = this.av_charHeight - Clazz.doubleToInt (yend / 2);\r
-} else {\r
-ystrt = Clazz.doubleToInt (this.av_charHeight / 2);\r
-yend = Clazz.doubleToInt (this.av_charHeight * (bs[1] - 128) / 512);\r
-}} else {\r
-yend = Clazz.doubleToInt (this.av_charHeight * bs[1] / 255);\r
-ystrt = this.av_charHeight - yend;\r
-}for (this.i = fstart; this.i <= fend; this.i++) {\r
-this.s = seq.getCharAt (this.i);\r
-if (jalview.util.Comparison.isGap (this.s)) {\r
-continue;\r
-}g.setColor (featureColour);\r
-var x = (this.i - start) * this.av_charWidth;\r
-g.drawRect (x, y1, this.av_charWidth, this.av_charHeight);\r
-g.fillRect (x, y1 + ystrt, this.av_charWidth, yend);\r
-if (this.offscreenRender || !this.av_validCharWidth) {\r
-continue;\r
-}g.setColor (java.awt.Color.black);\r
-this.charOffset = Clazz.doubleToInt ((this.av_charWidth - this.fm.charWidth (this.s)) / 2);\r
-g.drawString (String.valueOf (this.s), this.charOffset + (this.av_charWidth * (this.i - start)), pady);\r
-}\r
-}}, "java.awt.Graphics,jalview.datamodel.SequenceI,~N,~N,java.awt.Color,~N,~N,~N,~A");\r
-Clazz.defineMethod (c$, "findFeatureColour", \r
-function (initialCol, seq, res) {\r
-return  new java.awt.Color (this.findFeatureColour (initialCol.getRGB (), seq, res));\r
-}, "java.awt.Color,jalview.datamodel.SequenceI,~N");\r
-Clazz.defineMethod (c$, "findFeatureColour", \r
-function (initialCol, seq, column) {\r
-if (!this.av.isShowSequenceFeatures ()) {\r
-return initialCol;\r
-}var sequenceFeatures = seq.getSequenceFeatures ();\r
-if (seq !== this.lastSeq) {\r
-this.lastSeq = seq;\r
-this.lastSequenceFeatures = sequenceFeatures;\r
-if (this.lastSequenceFeatures != null) {\r
-this.sfSize = this.lastSequenceFeatures.length;\r
-}} else {\r
-if (this.lastSequenceFeatures !== sequenceFeatures) {\r
-this.lastSequenceFeatures = sequenceFeatures;\r
-if (this.lastSequenceFeatures != null) {\r
-this.sfSize = this.lastSequenceFeatures.length;\r
-}}}if (this.lastSequenceFeatures == null || this.sfSize == 0) {\r
-return initialCol;\r
-}if (jalview.util.Comparison.isGap (this.lastSeq.getCharAt (column))) {\r
-return java.awt.Color.white.getRGB ();\r
-}if (this.transparency != 1.0 && this.offscreenImage == null) {\r
-this.offscreenImage =  new java.awt.image.BufferedImage (1, 1, 2);\r
-}this.currentColour = null;\r
-this.offscreenRender = true;\r
-if (this.offscreenImage != null) {\r
-this.offscreenImage.setRGB (0, 0, initialCol);\r
-this.drawSequence (this.offscreenImage.getGraphics (), this.lastSeq, column, column, 0);\r
-return this.offscreenImage.getRGB (0, 0);\r
-} else {\r
-this.drawSequence (null, this.lastSeq, this.lastSeq.findPosition (column), -1, -1);\r
-if (this.currentColour == null) {\r
-return initialCol;\r
-} else {\r
-return (this.currentColour).intValue ();\r
-}}}, "~N,jalview.datamodel.SequenceI,~N");\r
-Clazz.defineMethod (c$, "drawSequence", \r
-function (g, seq, start, end, y1) {\r
-var sequenceFeatures = seq.getSequenceFeatures ();\r
-if (sequenceFeatures == null || sequenceFeatures.length == 0) {\r
-return;\r
-}if (g != null) {\r
-this.fm = g.getFontMetrics ();\r
-}this.updateFeatures ();\r
-if (this.lastSeq == null || seq !== this.lastSeq || sequenceFeatures !== this.lastSequenceFeatures) {\r
-this.lastSeq = seq;\r
-this.lastSequenceFeatures = sequenceFeatures;\r
-}if (this.transparency != 1 && g != null) {\r
-var g2 = g;\r
-g2.setComposite (java.awt.AlphaComposite.getInstance (3, this.transparency));\r
-}if (!this.offscreenRender) {\r
-this.spos = this.lastSeq.findPosition (start);\r
-this.epos = this.lastSeq.findPosition (end);\r
-}this.sfSize = this.lastSequenceFeatures.length;\r
-var type;\r
-for (var renderIndex = 0; renderIndex < this.renderOrder.length; renderIndex++) {\r
-type = this.renderOrder[renderIndex];\r
-if (type == null || !this.showFeatureOfType (type)) {\r
-continue;\r
-}for (this.sfindex = 0; this.sfindex < this.sfSize; this.sfindex++) {\r
-var sequenceFeature = this.lastSequenceFeatures[this.sfindex];\r
-if (!sequenceFeature.type.equals (type)) {\r
-continue;\r
-}if (this.featureGroups != null && sequenceFeature.featureGroup != null && sequenceFeature.featureGroup.length != 0 && this.featureGroups.containsKey (sequenceFeature.featureGroup) && !this.featureGroups.get (sequenceFeature.featureGroup).booleanValue ()) {\r
-continue;\r
-}if (!this.offscreenRender && (sequenceFeature.getBegin () > this.epos || sequenceFeature.getEnd () < this.spos)) {\r
-continue;\r
-}if (this.offscreenRender && this.offscreenImage == null) {\r
-if (sequenceFeature.begin <= start && sequenceFeature.end >= start) {\r
-this.currentColour =  new Integer (this.getColour (sequenceFeature).getRGB ());\r
-}} else if (sequenceFeature.type.equals ("disulfide bond")) {\r
-this.renderFeature (g, seq, seq.findIndex (sequenceFeature.begin) - 1, seq.findIndex (sequenceFeature.begin) - 1, this.getColour (sequenceFeature), start, end, y1);\r
-this.renderFeature (g, seq, seq.findIndex (sequenceFeature.end) - 1, seq.findIndex (sequenceFeature.end) - 1, this.getColour (sequenceFeature), start, end, y1);\r
-} else if (this.showFeature (sequenceFeature)) {\r
-if (this.av_isShowSeqFeatureHeight && !Float.isNaN (sequenceFeature.score)) {\r
-this.renderScoreFeature (g, seq, seq.findIndex (sequenceFeature.begin) - 1, seq.findIndex (sequenceFeature.end) - 1, this.getColour (sequenceFeature), start, end, y1, this.normaliseScore (sequenceFeature));\r
-} else {\r
-this.renderFeature (g, seq, seq.findIndex (sequenceFeature.begin) - 1, seq.findIndex (sequenceFeature.end) - 1, this.getColour (sequenceFeature), start, end, y1);\r
-}}}\r
-}\r
-if (this.transparency != 1.0 && g != null && this.transparencyAvailable) {\r
-var g2 = g;\r
-g2.setComposite (java.awt.AlphaComposite.getInstance (3, 1.0));\r
-}}, "java.awt.Graphics,jalview.datamodel.SequenceI,~N,~N,~N");\r
-Clazz.defineMethod (c$, "setTransparencyAvailable", \r
-function (isTransparencyAvailable) {\r
-this.transparencyAvailable = isTransparencyAvailable;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "isTransparencyAvailable", \r
-function () {\r
-return this.transparencyAvailable;\r
-});\r
-Clazz.overrideMethod (c$, "featuresAdded", \r
-function () {\r
-this.lastSeq = null;\r
-this.findAllFeatures ();\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.renderer.seqfeatures");
+Clazz.load (["jalview.viewmodel.seqfeatures.FeatureRendererModel"], "jalview.renderer.seqfeatures.FeatureRenderer", ["jalview.util.Comparison", "java.awt.AlphaComposite", "$.Color", "java.awt.image.BufferedImage", "java.lang.Float"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.fm = null;
+this.charOffset = 0;
+this.offscreenRender = false;
+this.lastSeq = null;
+this.s = '\0';
+this.i = 0;
+this.av_charHeight = 0;
+this.av_charWidth = 0;
+this.av_validCharWidth = false;
+this.av_isShowSeqFeatureHeight = false;
+this.offscreenImage = null;
+this.lastSequenceFeatures = null;
+this.sfSize = 0;
+this.sfindex = 0;
+this.spos = 0;
+this.epos = 0;
+this.transparencyAvailable = true;
+Clazz.instantialize (this, arguments);
+}, jalview.renderer.seqfeatures, "FeatureRenderer", jalview.viewmodel.seqfeatures.FeatureRendererModel);
+Clazz.defineMethod (c$, "updateAvConfig", 
+function () {
+this.av_charHeight = this.av.getCharHeight ();
+this.av_charWidth = this.av.getCharWidth ();
+this.av_validCharWidth = this.av.isValidCharWidth ();
+this.av_isShowSeqFeatureHeight = this.av.isShowSequenceFeaturesHeight ();
+});
+Clazz.defineMethod (c$, "renderFeature", 
+function (g, seq, fstart, fend, featureColour, start, end, y1) {
+this.updateAvConfig ();
+if (((fstart <= end) && (fend >= start))) {
+if (fstart < start) {
+fstart = start;
+}if (fend >= end) {
+fend = end;
+}var pady = (y1 + this.av_charHeight) - Clazz.doubleToInt (this.av_charHeight / 5);
+for (this.i = fstart; this.i <= fend; this.i++) {
+this.s = seq.getCharAt (this.i);
+if (jalview.util.Comparison.isGap (this.s)) {
+continue;
+}g.setColor (featureColour);
+g.fillRect ((this.i - start) * this.av_charWidth, y1, this.av_charWidth, this.av_charHeight);
+if (this.offscreenRender || !this.av_validCharWidth) {
+continue;
+}g.setColor (java.awt.Color.white);
+this.charOffset = Clazz.doubleToInt ((this.av_charWidth - this.fm.charWidth (this.s)) / 2);
+g.drawString (String.valueOf (this.s), this.charOffset + (this.av_charWidth * (this.i - start)), pady);
+}
+}}, "java.awt.Graphics,jalview.datamodel.SequenceI,~N,~N,java.awt.Color,~N,~N,~N");
+Clazz.defineMethod (c$, "renderScoreFeature", 
+function (g, seq, fstart, fend, featureColour, start, end, y1, bs) {
+this.updateAvConfig ();
+if (((fstart <= end) && (fend >= start))) {
+if (fstart < start) {
+fstart = start;
+}if (fend >= end) {
+fend = end;
+}var pady = (y1 + this.av_charHeight) - Clazz.doubleToInt (this.av_charHeight / 5);
+var ystrt = 0;
+var yend = this.av_charHeight;
+if (bs[0] != 0) {
+if (bs[1] < 128) {
+yend = Clazz.doubleToInt (this.av_charHeight * (128 - bs[1]) / 512);
+ystrt = this.av_charHeight - Clazz.doubleToInt (yend / 2);
+} else {
+ystrt = Clazz.doubleToInt (this.av_charHeight / 2);
+yend = Clazz.doubleToInt (this.av_charHeight * (bs[1] - 128) / 512);
+}} else {
+yend = Clazz.doubleToInt (this.av_charHeight * bs[1] / 255);
+ystrt = this.av_charHeight - yend;
+}for (this.i = fstart; this.i <= fend; this.i++) {
+this.s = seq.getCharAt (this.i);
+if (jalview.util.Comparison.isGap (this.s)) {
+continue;
+}g.setColor (featureColour);
+var x = (this.i - start) * this.av_charWidth;
+g.drawRect (x, y1, this.av_charWidth, this.av_charHeight);
+g.fillRect (x, y1 + ystrt, this.av_charWidth, yend);
+if (this.offscreenRender || !this.av_validCharWidth) {
+continue;
+}g.setColor (java.awt.Color.black);
+this.charOffset = Clazz.doubleToInt ((this.av_charWidth - this.fm.charWidth (this.s)) / 2);
+g.drawString (String.valueOf (this.s), this.charOffset + (this.av_charWidth * (this.i - start)), pady);
+}
+}}, "java.awt.Graphics,jalview.datamodel.SequenceI,~N,~N,java.awt.Color,~N,~N,~N,~A");
+Clazz.defineMethod (c$, "findFeatureColour", 
+function (initialCol, seq, res) {
+return  new java.awt.Color (this.findFeatureColour (initialCol.getRGB (), seq, res));
+}, "java.awt.Color,jalview.datamodel.SequenceI,~N");
+Clazz.defineMethod (c$, "findFeatureColour", 
+function (initialCol, seq, column) {
+if (!this.av.isShowSequenceFeatures ()) {
+return initialCol;
+}var sequenceFeatures = seq.getSequenceFeatures ();
+if (seq !== this.lastSeq) {
+this.lastSeq = seq;
+this.lastSequenceFeatures = sequenceFeatures;
+if (this.lastSequenceFeatures != null) {
+this.sfSize = this.lastSequenceFeatures.length;
+}} else {
+if (this.lastSequenceFeatures !== sequenceFeatures) {
+this.lastSequenceFeatures = sequenceFeatures;
+if (this.lastSequenceFeatures != null) {
+this.sfSize = this.lastSequenceFeatures.length;
+}}}if (this.lastSequenceFeatures == null || this.sfSize == 0) {
+return initialCol;
+}if (jalview.util.Comparison.isGap (this.lastSeq.getCharAt (column))) {
+return java.awt.Color.white.getRGB ();
+}if (this.transparency != 1.0 && this.offscreenImage == null) {
+this.offscreenImage =  new java.awt.image.BufferedImage (1, 1, 2);
+}this.currentColour = null;
+this.offscreenRender = true;
+if (this.offscreenImage != null) {
+this.offscreenImage.setRGB (0, 0, initialCol);
+this.drawSequence (this.offscreenImage.getGraphics (), this.lastSeq, column, column, 0);
+return this.offscreenImage.getRGB (0, 0);
+} else {
+this.drawSequence (null, this.lastSeq, this.lastSeq.findPosition (column), -1, -1);
+if (this.currentColour == null) {
+return initialCol;
+} else {
+return (this.currentColour).intValue ();
+}}}, "~N,jalview.datamodel.SequenceI,~N");
+Clazz.defineMethod (c$, "drawSequence", 
+function (g, seq, start, end, y1) {
+var sequenceFeatures = seq.getSequenceFeatures ();
+if (sequenceFeatures == null || sequenceFeatures.length == 0) {
+return;
+}if (g != null) {
+this.fm = g.getFontMetrics ();
+}this.updateFeatures ();
+if (this.lastSeq == null || seq !== this.lastSeq || sequenceFeatures !== this.lastSequenceFeatures) {
+this.lastSeq = seq;
+this.lastSequenceFeatures = sequenceFeatures;
+}if (this.transparency != 1 && g != null) {
+var g2 = g;
+g2.setComposite (java.awt.AlphaComposite.getInstance (3, this.transparency));
+}if (!this.offscreenRender) {
+this.spos = this.lastSeq.findPosition (start);
+this.epos = this.lastSeq.findPosition (end);
+}this.sfSize = this.lastSequenceFeatures.length;
+var type;
+for (var renderIndex = 0; renderIndex < this.renderOrder.length; renderIndex++) {
+type = this.renderOrder[renderIndex];
+if (type == null || !this.showFeatureOfType (type)) {
+continue;
+}for (this.sfindex = 0; this.sfindex < this.sfSize; this.sfindex++) {
+var sequenceFeature = this.lastSequenceFeatures[this.sfindex];
+if (!sequenceFeature.type.equals (type)) {
+continue;
+}if (this.featureGroups != null && sequenceFeature.featureGroup != null && sequenceFeature.featureGroup.length != 0 && this.featureGroups.containsKey (sequenceFeature.featureGroup) && !this.featureGroups.get (sequenceFeature.featureGroup).booleanValue ()) {
+continue;
+}if (!this.offscreenRender && (sequenceFeature.getBegin () > this.epos || sequenceFeature.getEnd () < this.spos)) {
+continue;
+}if (this.offscreenRender && this.offscreenImage == null) {
+if (sequenceFeature.begin <= start && sequenceFeature.end >= start) {
+this.currentColour =  new Integer (this.getColour (sequenceFeature).getRGB ());
+}} else if (sequenceFeature.type.equals ("disulfide bond")) {
+this.renderFeature (g, seq, seq.findIndex (sequenceFeature.begin) - 1, seq.findIndex (sequenceFeature.begin) - 1, this.getColour (sequenceFeature), start, end, y1);
+this.renderFeature (g, seq, seq.findIndex (sequenceFeature.end) - 1, seq.findIndex (sequenceFeature.end) - 1, this.getColour (sequenceFeature), start, end, y1);
+} else if (this.showFeature (sequenceFeature)) {
+if (this.av_isShowSeqFeatureHeight && !Float.isNaN (sequenceFeature.score)) {
+this.renderScoreFeature (g, seq, seq.findIndex (sequenceFeature.begin) - 1, seq.findIndex (sequenceFeature.end) - 1, this.getColour (sequenceFeature), start, end, y1, this.normaliseScore (sequenceFeature));
+} else {
+this.renderFeature (g, seq, seq.findIndex (sequenceFeature.begin) - 1, seq.findIndex (sequenceFeature.end) - 1, this.getColour (sequenceFeature), start, end, y1);
+}}}
+}
+if (this.transparency != 1.0 && g != null && this.transparencyAvailable) {
+var g2 = g;
+g2.setComposite (java.awt.AlphaComposite.getInstance (3, 1.0));
+}}, "java.awt.Graphics,jalview.datamodel.SequenceI,~N,~N,~N");
+Clazz.defineMethod (c$, "setTransparencyAvailable", 
+function (isTransparencyAvailable) {
+this.transparencyAvailable = isTransparencyAvailable;
+}, "~B");
+Clazz.overrideMethod (c$, "isTransparencyAvailable", 
+function () {
+return this.transparencyAvailable;
+});
+Clazz.overrideMethod (c$, "featuresAdded", 
+function () {
+this.lastSeq = null;
+this.findAllFeatures ();
+});
+});
index 65eb813..04210df 100644 (file)
Binary files a/bin/jalview/schemes/AnnotationColourGradient.class and b/bin/jalview/schemes/AnnotationColourGradient.class differ
index 40ed8eb..0f29e11 100644 (file)
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.FollowerColourScheme"], "jalview.schemes.AnnotationColourGradient", ["jalview.datamodel.AlignmentI", "$.GraphLine", "jalview.renderer.AnnotationRenderer", "jalview.schemes.ColourSchemeProperty", "jalview.util.Comparison", "java.awt.Color", "java.util.IdentityHashMap"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.annotation = null;\r
-this.aboveAnnotationThreshold = -1;\r
-this.thresholdIsMinMax = false;\r
-this.annotationThreshold = null;\r
-this.r1 = 0;\r
-this.g1 = 0;\r
-this.b1 = 0;\r
-this.rr = 0;\r
-this.gg = 0;\r
-this.bb = 0;\r
-this.predefinedColours = false;\r
-this.seqAssociated = false;\r
-this.noGradient = false;\r
-this.seqannot = null;\r
-this.aamin = 0;\r
-this.aamax = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "AnnotationColourGradient", jalview.schemes.FollowerColourScheme);\r
-Clazz.overrideMethod (c$, "applyTo", \r
-function (sg, hiddenRepSequences) {\r
-var acg =  new jalview.schemes.AnnotationColourGradient (this.annotation, this.colourScheme, this.aboveAnnotationThreshold);\r
-acg.thresholdIsMinMax = this.thresholdIsMinMax;\r
-acg.annotationThreshold = (this.annotationThreshold == null) ? null :  new jalview.datamodel.GraphLine (this.annotationThreshold);\r
-acg.r1 = this.r1;\r
-acg.g1 = this.g1;\r
-acg.b1 = this.b1;\r
-acg.rr = this.rr;\r
-acg.gg = this.gg;\r
-acg.bb = this.bb;\r
-acg.predefinedColours = this.predefinedColours;\r
-acg.seqAssociated = this.seqAssociated;\r
-acg.noGradient = this.noGradient;\r
-return acg;\r
-}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");\r
-Clazz.makeConstructor (c$, \r
-function (annotation, originalColour, aboveThreshold) {\r
-Clazz.superConstructor (this, jalview.schemes.AnnotationColourGradient, []);\r
-if (Clazz.instanceOf (originalColour, jalview.schemes.AnnotationColourGradient)) {\r
-this.colourScheme = (originalColour).colourScheme;\r
-} else {\r
-this.colourScheme = originalColour;\r
-}this.annotation = annotation;\r
-this.aboveAnnotationThreshold = aboveThreshold;\r
-if (aboveThreshold != -1 && annotation.threshold != null) {\r
-this.annotationThreshold = annotation.threshold;\r
-}this.r1 = 254;\r
-this.g1 = 254;\r
-this.b1 = 254;\r
-this.rr = 0;\r
-this.gg = 0;\r
-this.bb = 0;\r
-this.noGradient = true;\r
-}, "jalview.datamodel.AlignmentAnnotation,jalview.schemes.ColourSchemeI,~N");\r
-Clazz.makeConstructor (c$, \r
-function (annotation, minColour, maxColour, aboveThreshold) {\r
-Clazz.superConstructor (this, jalview.schemes.AnnotationColourGradient, []);\r
-this.annotation = annotation;\r
-this.aboveAnnotationThreshold = aboveThreshold;\r
-if (aboveThreshold != -1 && annotation.threshold != null) {\r
-this.annotationThreshold = annotation.threshold;\r
-}this.r1 = minColour.getRed ();\r
-this.g1 = minColour.getGreen ();\r
-this.b1 = minColour.getBlue ();\r
-this.rr = maxColour.getRed () - this.r1;\r
-this.gg = maxColour.getGreen () - this.g1;\r
-this.bb = maxColour.getBlue () - this.b1;\r
-this.noGradient = false;\r
-this.aamax = annotation.graphMax;\r
-this.aamin = annotation.graphMin;\r
-if (annotation.isRNA ()) {\r
-jalview.schemes.ColourSchemeProperty.initRnaHelicesShading (1 + Clazz.floatToInt (this.aamax));\r
-}}, "jalview.datamodel.AlignmentAnnotation,java.awt.Color,java.awt.Color,~N");\r
-Clazz.defineMethod (c$, "alignmentChanged", \r
-function (alignment, hiddenReps) {\r
-Clazz.superCall (this, jalview.schemes.AnnotationColourGradient, "alignmentChanged", [alignment, hiddenReps]);\r
-if (this.seqAssociated && this.annotation.getCalcId () != null) {\r
-if (this.seqannot != null) {\r
-this.seqannot.clear ();\r
-} else {\r
-this.seqannot =  new java.util.IdentityHashMap ();\r
-}var alcontext = Clazz.instanceOf (alignment, jalview.datamodel.AlignmentI) ? alignment : alignment.getContext ();\r
-var f = true;\r
-var rna = false;\r
-for (var alan, $alan = alcontext.findAnnotation (this.annotation.getCalcId ()).iterator (); $alan.hasNext () && ((alan = $alan.next ()) || true);) {\r
-if (alan.sequenceRef != null && (alan.label != null && this.annotation != null && alan.label.equals (this.annotation.label))) {\r
-if (!rna && alan.isRNA ()) {\r
-rna = true;\r
-}this.seqannot.put (alan.sequenceRef, alan);\r
-if (f || alan.graphMax > this.aamax) {\r
-this.aamax = alan.graphMax;\r
-}if (f || alan.graphMin < this.aamin) {\r
-this.aamin = alan.graphMin;\r
-}f = false;\r
-}}\r
-if (rna) {\r
-jalview.schemes.ColourSchemeProperty.initRnaHelicesShading (1 + Clazz.floatToInt (this.aamax));\r
-}}}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");\r
-Clazz.defineMethod (c$, "getAnnotation", \r
-function () {\r
-return this.annotation.label;\r
-});\r
-Clazz.defineMethod (c$, "getAboveThreshold", \r
-function () {\r
-return this.aboveAnnotationThreshold;\r
-});\r
-Clazz.defineMethod (c$, "getAnnotationThreshold", \r
-function () {\r
-if (this.annotationThreshold == null) {\r
-return 0;\r
-} else {\r
-return this.annotationThreshold.value;\r
-}});\r
-Clazz.defineMethod (c$, "getMinColour", \r
-function () {\r
-return  new java.awt.Color (Clazz.floatToInt (this.r1), Clazz.floatToInt (this.g1), Clazz.floatToInt (this.b1));\r
-});\r
-Clazz.defineMethod (c$, "getMaxColour", \r
-function () {\r
-return  new java.awt.Color (Clazz.floatToInt (this.r1 + this.rr), Clazz.floatToInt (this.g1 + this.gg), Clazz.floatToInt (this.b1 + this.bb));\r
-});\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c) {\r
-return java.awt.Color.red;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c, j, seq) {\r
-var currentColour = java.awt.Color.white;\r
-var annotation = (this.seqAssociated && this.seqannot != null ? this.seqannot.get (seq) : this.annotation);\r
-if (annotation == null) {\r
-return currentColour;\r
-}if ((this.threshold == 0) || this.aboveThreshold (c, j)) {\r
-if (annotation.annotations != null && j < annotation.annotations.length && annotation.annotations[j] != null && !jalview.util.Comparison.isGap (c)) {\r
-var aj = annotation.annotations[j];\r
-if (this.aboveAnnotationThreshold == -1 || (this.annotationThreshold != null && (this.aboveAnnotationThreshold == 1 ? aj.value >= this.annotationThreshold.value : aj.value <= this.annotationThreshold.value))) {\r
-if (this.predefinedColours && aj.colour != null && !aj.colour.equals (java.awt.Color.black)) {\r
-currentColour = aj.colour;\r
-} else if (annotation.hasIcons && annotation.graph == 0) {\r
-if (aj.secondaryStructure > ' ' && aj.secondaryStructure != '.' && aj.secondaryStructure != '-') {\r
-if (this.colourScheme != null) {\r
-currentColour = this.colourScheme.findColour (c, j, seq);\r
-} else {\r
-if (annotation.isRNA ()) {\r
-currentColour = jalview.schemes.ColourSchemeProperty.rnaHelices[Clazz.floatToInt (aj.value)];\r
-} else {\r
-currentColour = annotation.annotations[j].secondaryStructure == 'H' ? jalview.renderer.AnnotationRenderer.HELIX_COLOUR : annotation.annotations[j].secondaryStructure == 'E' ? jalview.renderer.AnnotationRenderer.SHEET_COLOUR : jalview.renderer.AnnotationRenderer.STEM_COLOUR;\r
-}}} else {\r
-return java.awt.Color.white;\r
-}} else if (this.noGradient) {\r
-if (this.colourScheme != null) {\r
-currentColour = this.colourScheme.findColour (c, j, seq);\r
-} else {\r
-if (aj.colour != null) {\r
-currentColour = aj.colour;\r
-}}} else {\r
-currentColour = this.shadeCalculation (annotation, j);\r
-}}if (this.conservationColouring) {\r
-currentColour = this.applyConservation (currentColour, j);\r
-}}}return currentColour;\r
-}, "~S,~N,jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "shadeCalculation", \r
-($fz = function (annotation, j) {\r
-var range = 1;\r
-if (this.thresholdIsMinMax && annotation.threshold != null && this.aboveAnnotationThreshold == 1 && annotation.annotations[j].value >= annotation.threshold.value) {\r
-range = (annotation.annotations[j].value - annotation.threshold.value) / (annotation.graphMax - annotation.threshold.value);\r
-} else if (this.thresholdIsMinMax && annotation.threshold != null && this.aboveAnnotationThreshold == 0 && annotation.annotations[j].value >= annotation.graphMin) {\r
-range = (annotation.annotations[j].value - annotation.graphMin) / (annotation.threshold.value - annotation.graphMin);\r
-} else {\r
-if (annotation.graphMax != annotation.graphMin) {\r
-range = (annotation.annotations[j].value - annotation.graphMin) / (annotation.graphMax - annotation.graphMin);\r
-} else {\r
-range = 0;\r
-}}var dr = Clazz.floatToInt (this.rr * range + this.r1);\r
-var dg = Clazz.floatToInt (this.gg * range + this.g1);\r
-var db = Clazz.floatToInt (this.bb * range + this.b1);\r
-return  new java.awt.Color (dr, dg, db);\r
-}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentAnnotation,~N");\r
-Clazz.defineMethod (c$, "isPredefinedColours", \r
-function () {\r
-return this.predefinedColours;\r
-});\r
-Clazz.defineMethod (c$, "setPredefinedColours", \r
-function (predefinedColours) {\r
-this.predefinedColours = predefinedColours;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isSeqAssociated", \r
-function () {\r
-return this.seqAssociated;\r
-});\r
-Clazz.defineMethod (c$, "setSeqAssociated", \r
-function (sassoc) {\r
-this.seqAssociated = sassoc;\r
-}, "~B");\r
-Clazz.defineStatics (c$,\r
-"NO_THRESHOLD", -1,\r
-"BELOW_THRESHOLD", 0,\r
-"ABOVE_THRESHOLD", 1);\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.FollowerColourScheme"], "jalview.schemes.AnnotationColourGradient", ["jalview.datamodel.AlignmentI", "$.GraphLine", "jalview.renderer.AnnotationRenderer", "jalview.schemes.ColourSchemeProperty", "jalview.util.Comparison", "java.awt.Color", "java.util.IdentityHashMap"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.annotation = null;
+this.aboveAnnotationThreshold = -1;
+this.thresholdIsMinMax = false;
+this.annotationThreshold = null;
+this.r1 = 0;
+this.g1 = 0;
+this.b1 = 0;
+this.rr = 0;
+this.gg = 0;
+this.bb = 0;
+this.predefinedColours = false;
+this.seqAssociated = false;
+this.noGradient = false;
+this.seqannot = null;
+this.aamin = 0;
+this.aamax = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "AnnotationColourGradient", jalview.schemes.FollowerColourScheme);
+Clazz.overrideMethod (c$, "applyTo", 
+function (sg, hiddenRepSequences) {
+var acg =  new jalview.schemes.AnnotationColourGradient (this.annotation, this.colourScheme, this.aboveAnnotationThreshold);
+acg.thresholdIsMinMax = this.thresholdIsMinMax;
+acg.annotationThreshold = (this.annotationThreshold == null) ? null :  new jalview.datamodel.GraphLine (this.annotationThreshold);
+acg.r1 = this.r1;
+acg.g1 = this.g1;
+acg.b1 = this.b1;
+acg.rr = this.rr;
+acg.gg = this.gg;
+acg.bb = this.bb;
+acg.predefinedColours = this.predefinedColours;
+acg.seqAssociated = this.seqAssociated;
+acg.noGradient = this.noGradient;
+return acg;
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz.makeConstructor (c$, 
+function (annotation, originalColour, aboveThreshold) {
+Clazz.superConstructor (this, jalview.schemes.AnnotationColourGradient, []);
+if (Clazz.instanceOf (originalColour, jalview.schemes.AnnotationColourGradient)) {
+this.colourScheme = (originalColour).colourScheme;
+} else {
+this.colourScheme = originalColour;
+}this.annotation = annotation;
+this.aboveAnnotationThreshold = aboveThreshold;
+if (aboveThreshold != -1 && annotation.threshold != null) {
+this.annotationThreshold = annotation.threshold;
+}this.r1 = 254;
+this.g1 = 254;
+this.b1 = 254;
+this.rr = 0;
+this.gg = 0;
+this.bb = 0;
+this.noGradient = true;
+}, "jalview.datamodel.AlignmentAnnotation,jalview.schemes.ColourSchemeI,~N");
+Clazz.makeConstructor (c$, 
+function (annotation, minColour, maxColour, aboveThreshold) {
+Clazz.superConstructor (this, jalview.schemes.AnnotationColourGradient, []);
+this.annotation = annotation;
+this.aboveAnnotationThreshold = aboveThreshold;
+if (aboveThreshold != -1 && annotation.threshold != null) {
+this.annotationThreshold = annotation.threshold;
+}this.r1 = minColour.getRed ();
+this.g1 = minColour.getGreen ();
+this.b1 = minColour.getBlue ();
+this.rr = maxColour.getRed () - this.r1;
+this.gg = maxColour.getGreen () - this.g1;
+this.bb = maxColour.getBlue () - this.b1;
+this.noGradient = false;
+this.aamax = annotation.graphMax;
+this.aamin = annotation.graphMin;
+if (annotation.isRNA ()) {
+jalview.schemes.ColourSchemeProperty.initRnaHelicesShading (1 + Clazz.floatToInt (this.aamax));
+}}, "jalview.datamodel.AlignmentAnnotation,java.awt.Color,java.awt.Color,~N");
+Clazz.defineMethod (c$, "alignmentChanged", 
+function (alignment, hiddenReps) {
+Clazz.superCall (this, jalview.schemes.AnnotationColourGradient, "alignmentChanged", [alignment, hiddenReps]);
+if (this.seqAssociated && this.annotation.getCalcId () != null) {
+if (this.seqannot != null) {
+this.seqannot.clear ();
+} else {
+this.seqannot =  new java.util.IdentityHashMap ();
+}var alcontext = Clazz.instanceOf (alignment, jalview.datamodel.AlignmentI) ? alignment : alignment.getContext ();
+var f = true;
+var rna = false;
+for (var alan, $alan = alcontext.findAnnotation (this.annotation.getCalcId ()).iterator (); $alan.hasNext () && ((alan = $alan.next ()) || true);) {
+if (alan.sequenceRef != null && (alan.label != null && this.annotation != null && alan.label.equals (this.annotation.label))) {
+if (!rna && alan.isRNA ()) {
+rna = true;
+}this.seqannot.put (alan.sequenceRef, alan);
+if (f || alan.graphMax > this.aamax) {
+this.aamax = alan.graphMax;
+}if (f || alan.graphMin < this.aamin) {
+this.aamin = alan.graphMin;
+}f = false;
+}}
+if (rna) {
+jalview.schemes.ColourSchemeProperty.initRnaHelicesShading (1 + Clazz.floatToInt (this.aamax));
+}}}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz.defineMethod (c$, "getAnnotation", 
+function () {
+return this.annotation.label;
+});
+Clazz.defineMethod (c$, "getAboveThreshold", 
+function () {
+return this.aboveAnnotationThreshold;
+});
+Clazz.defineMethod (c$, "getAnnotationThreshold", 
+function () {
+if (this.annotationThreshold == null) {
+return 0;
+} else {
+return this.annotationThreshold.value;
+}});
+Clazz.defineMethod (c$, "getMinColour", 
+function () {
+return  new java.awt.Color (Clazz.floatToInt (this.r1), Clazz.floatToInt (this.g1), Clazz.floatToInt (this.b1));
+});
+Clazz.defineMethod (c$, "getMaxColour", 
+function () {
+return  new java.awt.Color (Clazz.floatToInt (this.r1 + this.rr), Clazz.floatToInt (this.g1 + this.gg), Clazz.floatToInt (this.b1 + this.bb));
+});
+Clazz.defineMethod (c$, "findColour", 
+function (c) {
+return java.awt.Color.red;
+}, "~S");
+Clazz.defineMethod (c$, "findColour", 
+function (c, j, seq) {
+var currentColour = java.awt.Color.white;
+var annotation = (this.seqAssociated && this.seqannot != null ? this.seqannot.get (seq) : this.annotation);
+if (annotation == null) {
+return currentColour;
+}if ((this.threshold == 0) || this.aboveThreshold (c, j)) {
+if (annotation.annotations != null && j < annotation.annotations.length && annotation.annotations[j] != null && !jalview.util.Comparison.isGap (c)) {
+var aj = annotation.annotations[j];
+if (this.aboveAnnotationThreshold == -1 || (this.annotationThreshold != null && (this.aboveAnnotationThreshold == 1 ? aj.value >= this.annotationThreshold.value : aj.value <= this.annotationThreshold.value))) {
+if (this.predefinedColours && aj.colour != null && !aj.colour.equals (java.awt.Color.black)) {
+currentColour = aj.colour;
+} else if (annotation.hasIcons && annotation.graph == 0) {
+if (aj.secondaryStructure > ' ' && aj.secondaryStructure != '.' && aj.secondaryStructure != '-') {
+if (this.colourScheme != null) {
+currentColour = this.colourScheme.findColour (c, j, seq);
+} else {
+if (annotation.isRNA ()) {
+currentColour = jalview.schemes.ColourSchemeProperty.rnaHelices[Clazz.floatToInt (aj.value)];
+} else {
+currentColour = annotation.annotations[j].secondaryStructure == 'H' ? jalview.renderer.AnnotationRenderer.HELIX_COLOUR : annotation.annotations[j].secondaryStructure == 'E' ? jalview.renderer.AnnotationRenderer.SHEET_COLOUR : jalview.renderer.AnnotationRenderer.STEM_COLOUR;
+}}} else {
+return java.awt.Color.white;
+}} else if (this.noGradient) {
+if (this.colourScheme != null) {
+currentColour = this.colourScheme.findColour (c, j, seq);
+} else {
+if (aj.colour != null) {
+currentColour = aj.colour;
+}}} else {
+currentColour = this.shadeCalculation (annotation, j);
+}}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}}}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "shadeCalculation", 
+($fz = function (annotation, j) {
+var range = 1;
+if (this.thresholdIsMinMax && annotation.threshold != null && this.aboveAnnotationThreshold == 1 && annotation.annotations[j].value >= annotation.threshold.value) {
+range = (annotation.annotations[j].value - annotation.threshold.value) / (annotation.graphMax - annotation.threshold.value);
+} else if (this.thresholdIsMinMax && annotation.threshold != null && this.aboveAnnotationThreshold == 0 && annotation.annotations[j].value >= annotation.graphMin) {
+range = (annotation.annotations[j].value - annotation.graphMin) / (annotation.threshold.value - annotation.graphMin);
+} else {
+if (annotation.graphMax != annotation.graphMin) {
+range = (annotation.annotations[j].value - annotation.graphMin) / (annotation.graphMax - annotation.graphMin);
+} else {
+range = 0;
+}}var dr = Clazz.floatToInt (this.rr * range + this.r1);
+var dg = Clazz.floatToInt (this.gg * range + this.g1);
+var db = Clazz.floatToInt (this.bb * range + this.b1);
+return  new java.awt.Color (dr, dg, db);
+}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentAnnotation,~N");
+Clazz.defineMethod (c$, "isPredefinedColours", 
+function () {
+return this.predefinedColours;
+});
+Clazz.defineMethod (c$, "setPredefinedColours", 
+function (predefinedColours) {
+this.predefinedColours = predefinedColours;
+}, "~B");
+Clazz.defineMethod (c$, "isSeqAssociated", 
+function () {
+return this.seqAssociated;
+});
+Clazz.defineMethod (c$, "setSeqAssociated", 
+function (sassoc) {
+this.seqAssociated = sassoc;
+}, "~B");
+Clazz.defineStatics (c$,
+"NO_THRESHOLD", -1,
+"BELOW_THRESHOLD", 0,
+"ABOVE_THRESHOLD", 1);
+});
index f864598..17dd259 100644 (file)
Binary files a/bin/jalview/schemes/Blosum62ColourScheme.class and b/bin/jalview/schemes/Blosum62ColourScheme.class differ
index 3268bc7..87c4a51 100644 (file)
@@ -1,37 +1,37 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.Blosum62ColourScheme", ["jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.awt.Color"], function () {\r
-c$ = Clazz.declareType (jalview.schemes, "Blosum62ColourScheme", jalview.schemes.ResidueColourScheme);\r
-Clazz.defineMethod (c$, "findColour", \r
-function (res, j, seq) {\r
-if ('a' <= res && res <= 'z') {\r
-res = String.fromCharCode (res.charCodeAt (0) - (32));\r
-}if (this.consensus == null || j >= this.consensus.length || this.consensus[j] == null || (this.threshold != 0 && !this.aboveThreshold (res, j))) {\r
-return java.awt.Color.white;\r
-}var currentColour;\r
-if (!jalview.util.Comparison.isGap (res)) {\r
-var max = this.consensus[j].get ("R");\r
-if (max.indexOf (res) > -1) {\r
-currentColour =  new java.awt.Color (154, 154, 255);\r
-} else {\r
-var c = 0;\r
-var max_aa = 0;\r
-var n = max.length;\r
-do {\r
-c += jalview.schemes.ResidueProperties.getBLOSUM62 (max.charAt (max_aa), res);\r
-} while (++max_aa < n);\r
-if (c > 0) {\r
-currentColour =  new java.awt.Color (204, 204, 255);\r
-} else {\r
-currentColour = java.awt.Color.white;\r
-}}if (this.conservationColouring) {\r
-currentColour = this.applyConservation (currentColour, j);\r
-}} else {\r
-return java.awt.Color.white;\r
-}return currentColour;\r
-}, "~S,~N,jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "applyTo", \r
-function (sg, hiddenRepSequences) {\r
-var newcs = Clazz.superCall (this, jalview.schemes.Blosum62ColourScheme, "applyTo", [sg, hiddenRepSequences]);\r
-return newcs;\r
-}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.Blosum62ColourScheme", ["jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.awt.Color"], function () {
+c$ = Clazz.declareType (jalview.schemes, "Blosum62ColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz.defineMethod (c$, "findColour", 
+function (res, j, seq) {
+if ('a' <= res && res <= 'z') {
+res = String.fromCharCode (res.charCodeAt (0) - (32));
+}if (this.consensus == null || j >= this.consensus.length || this.consensus[j] == null || (this.threshold != 0 && !this.aboveThreshold (res, j))) {
+return java.awt.Color.white;
+}var currentColour;
+if (!jalview.util.Comparison.isGap (res)) {
+var max = this.consensus[j].get ("R");
+if (max.indexOf (res) > -1) {
+currentColour =  new java.awt.Color (154, 154, 255);
+} else {
+var c = 0;
+var max_aa = 0;
+var n = max.length;
+do {
+c += jalview.schemes.ResidueProperties.getBLOSUM62 (max.charAt (max_aa), res);
+} while (++max_aa < n);
+if (c > 0) {
+currentColour =  new java.awt.Color (204, 204, 255);
+} else {
+currentColour = java.awt.Color.white;
+}}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}} else {
+return java.awt.Color.white;
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "applyTo", 
+function (sg, hiddenRepSequences) {
+var newcs = Clazz.superCall (this, jalview.schemes.Blosum62ColourScheme, "applyTo", [sg, hiddenRepSequences]);
+return newcs;
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+});
index fa820e3..0ca91cd 100644 (file)
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.BuriedColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {\r
-c$ = Clazz.declareType (jalview.schemes, "BuriedColourScheme", jalview.schemes.ScoreColourScheme);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.schemes.BuriedColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.buried, 0.05, 4.6]);\r
-});\r
-Clazz.overrideMethod (c$, "makeColour", \r
-function (c) {\r
-return  new java.awt.Color (0, (1.0 - c), c);\r
-}, "~N");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.BuriedColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz.declareType (jalview.schemes, "BuriedColourScheme", jalview.schemes.ScoreColourScheme);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.schemes.BuriedColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.buried, 0.05, 4.6]);
+});
+Clazz.overrideMethod (c$, "makeColour", 
+function (c) {
+return  new java.awt.Color (0, (1.0 - c), c);
+}, "~N");
+});
index 3897463..0556777 100644 (file)
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ResidueColourScheme", "java.util.HashMap"], ["jalview.schemes.ConsensusColour", "$.ClustalxColourScheme"], ["jalview.schemes.Consensus", "$.ResidueProperties", "java.awt.Color"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.cons2 = null;\r
-this.colours = null;\r
-this.residueColour = null;\r
-this.size = 0;\r
-this.conses = null;\r
-this.includeGaps = true;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "ClustalxColourScheme", jalview.schemes.ResidueColourScheme);\r
-Clazz.prepareFields (c$, function () {\r
-this.conses =  new Array (32);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (alignment, hiddenReps) {\r
-Clazz.superConstructor (this, jalview.schemes.ClustalxColourScheme, []);\r
-this.alignmentChanged (alignment, hiddenReps);\r
-}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");\r
-Clazz.overrideMethod (c$, "alignmentChanged", \r
-function (alignment, hiddenReps) {\r
-var maxWidth = alignment.getWidth ();\r
-var seqs = alignment.getSequences (hiddenReps);\r
-this.cons2 =  Clazz.newIntArray (maxWidth, 24, 0);\r
-this.includeGaps = this.isIncludeGaps ();\r
-var start = 0;\r
-for (var j = 0; j < 24; j++) {\r
-for (var i = 0; i < maxWidth; i++) {\r
-this.cons2[i][j] = 0;\r
-}\r
-}\r
-var res;\r
-var i;\r
-var j = 0;\r
-var seq;\r
-for (var sq, $sq = seqs.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {\r
-seq = sq.getSequence ();\r
-var end_j = seq.length - 1;\r
-for (i = start; i <= end_j; i++) {\r
-if ((seq.length - 1) < i) {\r
-res = 23;\r
-} else {\r
-res = jalview.schemes.ResidueProperties.aaIndex[seq[i].charCodeAt (0)];\r
-}this.cons2[i][res]++;\r
-}\r
-j++;\r
-}\r
-this.size = seqs.size ();\r
-this.makeColours ();\r
-}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");\r
-Clazz.defineMethod (c$, "makeColours", \r
-function () {\r
-this.conses[0] =  new jalview.schemes.Consensus ("WLVIMAFCYHP", 60);\r
-this.conses[1] =  new jalview.schemes.Consensus ("WLVIMAFCYHP", 80);\r
-this.conses[2] =  new jalview.schemes.Consensus ("ED", 50);\r
-this.conses[3] =  new jalview.schemes.Consensus ("KR", 60);\r
-this.conses[4] =  new jalview.schemes.Consensus ("G", 50);\r
-this.conses[5] =  new jalview.schemes.Consensus ("N", 50);\r
-this.conses[6] =  new jalview.schemes.Consensus ("QE", 50);\r
-this.conses[7] =  new jalview.schemes.Consensus ("P", 50);\r
-this.conses[8] =  new jalview.schemes.Consensus ("TS", 50);\r
-this.conses[26] =  new jalview.schemes.Consensus ("A", 85);\r
-this.conses[27] =  new jalview.schemes.Consensus ("C", 85);\r
-this.conses[10] =  new jalview.schemes.Consensus ("E", 85);\r
-this.conses[11] =  new jalview.schemes.Consensus ("F", 85);\r
-this.conses[12] =  new jalview.schemes.Consensus ("G", 85);\r
-this.conses[13] =  new jalview.schemes.Consensus ("H", 85);\r
-this.conses[14] =  new jalview.schemes.Consensus ("I", 85);\r
-this.conses[15] =  new jalview.schemes.Consensus ("L", 85);\r
-this.conses[16] =  new jalview.schemes.Consensus ("M", 85);\r
-this.conses[17] =  new jalview.schemes.Consensus ("N", 85);\r
-this.conses[18] =  new jalview.schemes.Consensus ("P", 85);\r
-this.conses[19] =  new jalview.schemes.Consensus ("Q", 85);\r
-this.conses[20] =  new jalview.schemes.Consensus ("R", 85);\r
-this.conses[21] =  new jalview.schemes.Consensus ("S", 85);\r
-this.conses[22] =  new jalview.schemes.Consensus ("T", 85);\r
-this.conses[23] =  new jalview.schemes.Consensus ("V", 85);\r
-this.conses[24] =  new jalview.schemes.Consensus ("W", 85);\r
-this.conses[25] =  new jalview.schemes.Consensus ("Y", 85);\r
-this.conses[28] =  new jalview.schemes.Consensus ("K", 85);\r
-this.conses[29] =  new jalview.schemes.Consensus ("D", 85);\r
-this.conses[30] =  new jalview.schemes.Consensus ("G", 0);\r
-this.conses[31] =  new jalview.schemes.Consensus ("P", 0);\r
-this.colours =  new Array (11);\r
-var tmp8 =  new Array (1);\r
-tmp8[0] = this.conses[30];\r
-this.colours[7] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.ORANGE), tmp8);\r
-var tmp9 =  new Array (1);\r
-tmp9[0] = this.conses[31];\r
-this.colours[8] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.YELLOW), tmp9);\r
-var tmp10 =  new Array (1);\r
-tmp10[0] = this.conses[27];\r
-this.colours[9] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.PINK), tmp8);\r
-var tmp1 =  new Array (14);\r
-tmp1[0] = this.conses[0];\r
-tmp1[1] = this.conses[1];\r
-tmp1[2] = this.conses[26];\r
-tmp1[3] = this.conses[27];\r
-tmp1[4] = this.conses[11];\r
-tmp1[5] = this.conses[13];\r
-tmp1[6] = this.conses[14];\r
-tmp1[7] = this.conses[15];\r
-tmp1[8] = this.conses[16];\r
-tmp1[9] = this.conses[23];\r
-tmp1[10] = this.conses[24];\r
-tmp1[11] = this.conses[25];\r
-tmp1[12] = this.conses[18];\r
-tmp1[13] = this.conses[19];\r
-this.colours[0] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.BLUE), tmp1);\r
-this.colours[10] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.CYAN), tmp1);\r
-var tmp2 =  new Array (5);\r
-tmp2[0] = this.conses[8];\r
-tmp2[1] = this.conses[21];\r
-tmp2[2] = this.conses[22];\r
-tmp2[3] = this.conses[0];\r
-tmp2[4] = this.conses[1];\r
-this.colours[1] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.GREEN), tmp2);\r
-var tmp3 =  new Array (3);\r
-tmp3[0] = this.conses[17];\r
-tmp3[1] = this.conses[29];\r
-tmp3[2] = this.conses[5];\r
-this.colours[2] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.GREEN), tmp3);\r
-var tmp4 =  new Array (6);\r
-tmp4[0] = this.conses[6];\r
-tmp4[1] = this.conses[19];\r
-tmp4[2] = this.conses[22];\r
-tmp4[3] = this.conses[3];\r
-tmp4[4] = this.conses[28];\r
-tmp4[5] = this.conses[20];\r
-this.colours[3] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.GREEN), tmp4);\r
-var tmp5 =  new Array (4);\r
-tmp5[0] = this.conses[3];\r
-tmp5[1] = this.conses[28];\r
-tmp5[2] = this.conses[20];\r
-tmp5[3] = this.conses[19];\r
-this.colours[4] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.RED), tmp5);\r
-var tmp6 =  new Array (6);\r
-tmp6[0] = this.conses[3];\r
-tmp6[1] = this.conses[29];\r
-tmp6[2] = this.conses[10];\r
-tmp6[3] = this.conses[6];\r
-tmp6[4] = this.conses[19];\r
-tmp6[5] = this.conses[2];\r
-this.colours[5] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.MAGENTA), tmp6);\r
-var tmp7 =  new Array (5);\r
-tmp7[0] = this.conses[3];\r
-tmp7[1] = this.conses[29];\r
-tmp7[2] = this.conses[10];\r
-tmp7[3] = this.conses[17];\r
-tmp7[4] = this.conses[2];\r
-this.colours[6] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.MAGENTA), tmp7);\r
-this.residueColour =  new Array (20);\r
-this.residueColour[0] = this.colours[0];\r
-this.residueColour[1] = this.colours[4];\r
-this.residueColour[2] = this.colours[2];\r
-this.residueColour[3] = this.colours[6];\r
-this.residueColour[4] = this.colours[0];\r
-this.residueColour[5] = this.colours[3];\r
-this.residueColour[6] = this.colours[5];\r
-this.residueColour[7] = this.colours[7];\r
-this.residueColour[8] = this.colours[10];\r
-this.residueColour[9] = this.colours[0];\r
-this.residueColour[10] = this.colours[0];\r
-this.residueColour[11] = this.colours[4];\r
-this.residueColour[12] = this.colours[0];\r
-this.residueColour[13] = this.colours[0];\r
-this.residueColour[14] = this.colours[8];\r
-this.residueColour[15] = this.colours[1];\r
-this.residueColour[16] = this.colours[1];\r
-this.residueColour[17] = this.colours[0];\r
-this.residueColour[18] = this.colours[10];\r
-this.residueColour[19] = this.colours[0];\r
-});\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c) {\r
-return java.awt.Color.pink;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c, j, seq) {\r
-var currentColour;\r
-if (this.cons2.length <= j || (this.includeGaps && this.threshold != 0 && !this.aboveThreshold (c, j))) {\r
-return java.awt.Color.white;\r
-}var i = jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)];\r
-currentColour = java.awt.Color.white;\r
-if (i > 19) {\r
-return currentColour;\r
-}for (var k = 0; k < this.residueColour[i].conses.length; k++) {\r
-if (this.residueColour[i].conses[k].isConserved (this.cons2, j, this.size, this.includeGaps)) {\r
-currentColour = this.residueColour[i].c;\r
-}}\r
-if (i == 4) {\r
-if (this.conses[27].isConserved (this.cons2, j, this.size, this.includeGaps)) {\r
-currentColour = jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.PINK);\r
-}}if (this.conservationColouring) {\r
-currentColour = this.applyConservation (currentColour, j);\r
-}return currentColour;\r
-}, "~S,~N,jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "isIncludeGaps", \r
-function () {\r
-return this.includeGaps;\r
-});\r
-Clazz.defineMethod (c$, "setIncludeGaps", \r
-function (includeGaps) {\r
-this.includeGaps = includeGaps;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "applyTo", \r
-function (sg, hiddenRepSequences) {\r
-var css =  new jalview.schemes.ClustalxColourScheme (sg, hiddenRepSequences);\r
-css.includeGaps = this.includeGaps;\r
-return css;\r
-}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");\r
-Clazz.defineStatics (c$,\r
-"EIGHTY_FIVE", 85,\r
-"FIFTY", 50,\r
-"EIGHTY", 80,\r
-"SIXTY", 60);\r
-c$.colhash = c$.prototype.colhash =  new java.util.HashMap ();\r
-{\r
-jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.RED,  new java.awt.Color (0.9, 0.2, 0.1));\r
-jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.BLUE,  new java.awt.Color (0.5, 0.7, 0.9));\r
-jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.GREEN,  new java.awt.Color (0.1, 0.8, 0.1));\r
-jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.ORANGE,  new java.awt.Color (0.9, 0.6, 0.3));\r
-jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.CYAN,  new java.awt.Color (0.1, 0.7, 0.7));\r
-jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.PINK,  new java.awt.Color (0.9, 0.5, 0.5));\r
-jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.MAGENTA,  new java.awt.Color (0.8, 0.3, 0.8));\r
-jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.YELLOW,  new java.awt.Color (0.8, 0.8, 0.0));\r
-}c$ = Clazz.decorateAsClass (function () {\r
-this.conses = null;\r
-this.c = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "ConsensusColour");\r
-Clazz.makeConstructor (c$, \r
-function (c, conses) {\r
-this.conses = conses;\r
-this.c = c;\r
-}, "java.awt.Color,~A");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ResidueColourScheme", "java.util.HashMap"], ["jalview.schemes.ConsensusColour", "$.ClustalxColourScheme"], ["jalview.schemes.Consensus", "$.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.cons2 = null;
+this.colours = null;
+this.residueColour = null;
+this.size = 0;
+this.conses = null;
+this.includeGaps = true;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "ClustalxColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz.prepareFields (c$, function () {
+this.conses =  new Array (32);
+});
+Clazz.makeConstructor (c$, 
+function (alignment, hiddenReps) {
+Clazz.superConstructor (this, jalview.schemes.ClustalxColourScheme, []);
+this.alignmentChanged (alignment, hiddenReps);
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz.overrideMethod (c$, "alignmentChanged", 
+function (alignment, hiddenReps) {
+var maxWidth = alignment.getWidth ();
+var seqs = alignment.getSequences (hiddenReps);
+this.cons2 =  Clazz.newIntArray (maxWidth, 24, 0);
+this.includeGaps = this.isIncludeGaps ();
+var start = 0;
+for (var j = 0; j < 24; j++) {
+for (var i = 0; i < maxWidth; i++) {
+this.cons2[i][j] = 0;
+}
+}
+var res;
+var i;
+var j = 0;
+var seq;
+for (var sq, $sq = seqs.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+seq = sq.getSequence ();
+var end_j = seq.length - 1;
+for (i = start; i <= end_j; i++) {
+if ((seq.length - 1) < i) {
+res = 23;
+} else {
+res = jalview.schemes.ResidueProperties.aaIndex[seq[i].charCodeAt (0)];
+}this.cons2[i][res]++;
+}
+j++;
+}
+this.size = seqs.size ();
+this.makeColours ();
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz.defineMethod (c$, "makeColours", 
+function () {
+this.conses[0] =  new jalview.schemes.Consensus ("WLVIMAFCYHP", 60);
+this.conses[1] =  new jalview.schemes.Consensus ("WLVIMAFCYHP", 80);
+this.conses[2] =  new jalview.schemes.Consensus ("ED", 50);
+this.conses[3] =  new jalview.schemes.Consensus ("KR", 60);
+this.conses[4] =  new jalview.schemes.Consensus ("G", 50);
+this.conses[5] =  new jalview.schemes.Consensus ("N", 50);
+this.conses[6] =  new jalview.schemes.Consensus ("QE", 50);
+this.conses[7] =  new jalview.schemes.Consensus ("P", 50);
+this.conses[8] =  new jalview.schemes.Consensus ("TS", 50);
+this.conses[26] =  new jalview.schemes.Consensus ("A", 85);
+this.conses[27] =  new jalview.schemes.Consensus ("C", 85);
+this.conses[10] =  new jalview.schemes.Consensus ("E", 85);
+this.conses[11] =  new jalview.schemes.Consensus ("F", 85);
+this.conses[12] =  new jalview.schemes.Consensus ("G", 85);
+this.conses[13] =  new jalview.schemes.Consensus ("H", 85);
+this.conses[14] =  new jalview.schemes.Consensus ("I", 85);
+this.conses[15] =  new jalview.schemes.Consensus ("L", 85);
+this.conses[16] =  new jalview.schemes.Consensus ("M", 85);
+this.conses[17] =  new jalview.schemes.Consensus ("N", 85);
+this.conses[18] =  new jalview.schemes.Consensus ("P", 85);
+this.conses[19] =  new jalview.schemes.Consensus ("Q", 85);
+this.conses[20] =  new jalview.schemes.Consensus ("R", 85);
+this.conses[21] =  new jalview.schemes.Consensus ("S", 85);
+this.conses[22] =  new jalview.schemes.Consensus ("T", 85);
+this.conses[23] =  new jalview.schemes.Consensus ("V", 85);
+this.conses[24] =  new jalview.schemes.Consensus ("W", 85);
+this.conses[25] =  new jalview.schemes.Consensus ("Y", 85);
+this.conses[28] =  new jalview.schemes.Consensus ("K", 85);
+this.conses[29] =  new jalview.schemes.Consensus ("D", 85);
+this.conses[30] =  new jalview.schemes.Consensus ("G", 0);
+this.conses[31] =  new jalview.schemes.Consensus ("P", 0);
+this.colours =  new Array (11);
+var tmp8 =  new Array (1);
+tmp8[0] = this.conses[30];
+this.colours[7] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.ORANGE), tmp8);
+var tmp9 =  new Array (1);
+tmp9[0] = this.conses[31];
+this.colours[8] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.YELLOW), tmp9);
+var tmp10 =  new Array (1);
+tmp10[0] = this.conses[27];
+this.colours[9] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.PINK), tmp8);
+var tmp1 =  new Array (14);
+tmp1[0] = this.conses[0];
+tmp1[1] = this.conses[1];
+tmp1[2] = this.conses[26];
+tmp1[3] = this.conses[27];
+tmp1[4] = this.conses[11];
+tmp1[5] = this.conses[13];
+tmp1[6] = this.conses[14];
+tmp1[7] = this.conses[15];
+tmp1[8] = this.conses[16];
+tmp1[9] = this.conses[23];
+tmp1[10] = this.conses[24];
+tmp1[11] = this.conses[25];
+tmp1[12] = this.conses[18];
+tmp1[13] = this.conses[19];
+this.colours[0] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.BLUE), tmp1);
+this.colours[10] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.CYAN), tmp1);
+var tmp2 =  new Array (5);
+tmp2[0] = this.conses[8];
+tmp2[1] = this.conses[21];
+tmp2[2] = this.conses[22];
+tmp2[3] = this.conses[0];
+tmp2[4] = this.conses[1];
+this.colours[1] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.GREEN), tmp2);
+var tmp3 =  new Array (3);
+tmp3[0] = this.conses[17];
+tmp3[1] = this.conses[29];
+tmp3[2] = this.conses[5];
+this.colours[2] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.GREEN), tmp3);
+var tmp4 =  new Array (6);
+tmp4[0] = this.conses[6];
+tmp4[1] = this.conses[19];
+tmp4[2] = this.conses[22];
+tmp4[3] = this.conses[3];
+tmp4[4] = this.conses[28];
+tmp4[5] = this.conses[20];
+this.colours[3] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.GREEN), tmp4);
+var tmp5 =  new Array (4);
+tmp5[0] = this.conses[3];
+tmp5[1] = this.conses[28];
+tmp5[2] = this.conses[20];
+tmp5[3] = this.conses[19];
+this.colours[4] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.RED), tmp5);
+var tmp6 =  new Array (6);
+tmp6[0] = this.conses[3];
+tmp6[1] = this.conses[29];
+tmp6[2] = this.conses[10];
+tmp6[3] = this.conses[6];
+tmp6[4] = this.conses[19];
+tmp6[5] = this.conses[2];
+this.colours[5] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.MAGENTA), tmp6);
+var tmp7 =  new Array (5);
+tmp7[0] = this.conses[3];
+tmp7[1] = this.conses[29];
+tmp7[2] = this.conses[10];
+tmp7[3] = this.conses[17];
+tmp7[4] = this.conses[2];
+this.colours[6] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.MAGENTA), tmp7);
+this.residueColour =  new Array (20);
+this.residueColour[0] = this.colours[0];
+this.residueColour[1] = this.colours[4];
+this.residueColour[2] = this.colours[2];
+this.residueColour[3] = this.colours[6];
+this.residueColour[4] = this.colours[0];
+this.residueColour[5] = this.colours[3];
+this.residueColour[6] = this.colours[5];
+this.residueColour[7] = this.colours[7];
+this.residueColour[8] = this.colours[10];
+this.residueColour[9] = this.colours[0];
+this.residueColour[10] = this.colours[0];
+this.residueColour[11] = this.colours[4];
+this.residueColour[12] = this.colours[0];
+this.residueColour[13] = this.colours[0];
+this.residueColour[14] = this.colours[8];
+this.residueColour[15] = this.colours[1];
+this.residueColour[16] = this.colours[1];
+this.residueColour[17] = this.colours[0];
+this.residueColour[18] = this.colours[10];
+this.residueColour[19] = this.colours[0];
+});
+Clazz.defineMethod (c$, "findColour", 
+function (c) {
+return java.awt.Color.pink;
+}, "~S");
+Clazz.defineMethod (c$, "findColour", 
+function (c, j, seq) {
+var currentColour;
+if (this.cons2.length <= j || (this.includeGaps && this.threshold != 0 && !this.aboveThreshold (c, j))) {
+return java.awt.Color.white;
+}var i = jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)];
+currentColour = java.awt.Color.white;
+if (i > 19) {
+return currentColour;
+}for (var k = 0; k < this.residueColour[i].conses.length; k++) {
+if (this.residueColour[i].conses[k].isConserved (this.cons2, j, this.size, this.includeGaps)) {
+currentColour = this.residueColour[i].c;
+}}
+if (i == 4) {
+if (this.conses[27].isConserved (this.cons2, j, this.size, this.includeGaps)) {
+currentColour = jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.PINK);
+}}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "isIncludeGaps", 
+function () {
+return this.includeGaps;
+});
+Clazz.defineMethod (c$, "setIncludeGaps", 
+function (includeGaps) {
+this.includeGaps = includeGaps;
+}, "~B");
+Clazz.overrideMethod (c$, "applyTo", 
+function (sg, hiddenRepSequences) {
+var css =  new jalview.schemes.ClustalxColourScheme (sg, hiddenRepSequences);
+css.includeGaps = this.includeGaps;
+return css;
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz.defineStatics (c$,
+"EIGHTY_FIVE", 85,
+"FIFTY", 50,
+"EIGHTY", 80,
+"SIXTY", 60);
+c$.colhash = c$.prototype.colhash =  new java.util.HashMap ();
+{
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.RED,  new java.awt.Color (0.9, 0.2, 0.1));
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.BLUE,  new java.awt.Color (0.5, 0.7, 0.9));
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.GREEN,  new java.awt.Color (0.1, 0.8, 0.1));
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.ORANGE,  new java.awt.Color (0.9, 0.6, 0.3));
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.CYAN,  new java.awt.Color (0.1, 0.7, 0.7));
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.PINK,  new java.awt.Color (0.9, 0.5, 0.5));
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.MAGENTA,  new java.awt.Color (0.8, 0.3, 0.8));
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.YELLOW,  new java.awt.Color (0.8, 0.8, 0.0));
+}c$ = Clazz.decorateAsClass (function () {
+this.conses = null;
+this.c = null;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "ConsensusColour");
+Clazz.makeConstructor (c$, 
+function (c, conses) {
+this.conses = conses;
+this.c = c;
+}, "java.awt.Color,~A");
+});
index 9777117..b82090d 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.declareInterface (jalview.schemes, "ColourSchemeI");\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.declareInterface (jalview.schemes, "ColourSchemeI");
index 352a373..eb55454 100644 (file)
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (null, "jalview.schemes.ColourSchemeProperty", ["jalview.schemes.Blosum62ColourScheme", "$.BuriedColourScheme", "$.ClustalxColourScheme", "$.HelixColourScheme", "$.HydrophobicColourScheme", "$.NucleotideColourScheme", "$.PIDColourScheme", "$.PurinePyrimidineColourScheme", "$.RNAHelicesColour", "$.StrandColourScheme", "$.TCoffeeColourScheme", "$.TaylorColourScheme", "$.TurnColourScheme", "$.UserColourScheme", "$.ZappoColourScheme", "jalview.util.ColorUtils", "java.awt.Color"], function () {\r
-c$ = Clazz.declareType (jalview.schemes, "ColourSchemeProperty");\r
-c$.getColourIndexFromName = Clazz.defineMethod (c$, "getColourIndexFromName", \r
-function (name) {\r
-var ret = -1;\r
-if (name.equalsIgnoreCase ("Clustal")) {\r
-ret = 2;\r
-} else if (name.equalsIgnoreCase ("Blosum62")) {\r
-ret = 3;\r
-} else if (name.equalsIgnoreCase ("% Identity")) {\r
-ret = 4;\r
-} else if (name.equalsIgnoreCase ("Zappo")) {\r
-ret = 5;\r
-} else if (name.equalsIgnoreCase ("Taylor")) {\r
-ret = 6;\r
-} else if (name.equalsIgnoreCase ("Hydrophobic")) {\r
-ret = 7;\r
-} else if (name.equalsIgnoreCase ("Helix Propensity")) {\r
-ret = 8;\r
-} else if (name.equalsIgnoreCase ("Strand Propensity")) {\r
-ret = 9;\r
-} else if (name.equalsIgnoreCase ("Turn Propensity")) {\r
-ret = 10;\r
-} else if (name.equalsIgnoreCase ("Buried Index")) {\r
-ret = 11;\r
-} else if (name.equalsIgnoreCase ("Nucleotide")) {\r
-ret = 12;\r
-} else if (name.equalsIgnoreCase ("T-Coffee Scores")) {\r
-ret = 15;\r
-} else if (name.equalsIgnoreCase ("User Defined")) {\r
-ret = 0;\r
-} else if (name.equalsIgnoreCase ("None")) {\r
-ret = 1;\r
-} else if (name.equalsIgnoreCase ("Purine/Pyrimidine")) {\r
-ret = 13;\r
-} else if (name.equalsIgnoreCase ("RNA Interaction type")) {\r
-ret = 17;\r
-} else if (name.equalsIgnoreCase ("RNA Helices")) {\r
-ret = 16;\r
-}return ret;\r
-}, "~S");\r
-c$.getColourName = Clazz.defineMethod (c$, "getColourName", \r
-function (cs) {\r
-var index = 1;\r
-if (Clazz.instanceOf (cs, jalview.schemes.ClustalxColourScheme)) {\r
-index = 2;\r
-} else if (Clazz.instanceOf (cs, jalview.schemes.Blosum62ColourScheme)) {\r
-index = 3;\r
-} else if (Clazz.instanceOf (cs, jalview.schemes.PIDColourScheme)) {\r
-index = 4;\r
-} else if (Clazz.instanceOf (cs, jalview.schemes.ZappoColourScheme)) {\r
-index = 5;\r
-} else if (Clazz.instanceOf (cs, jalview.schemes.TaylorColourScheme)) {\r
-index = 6;\r
-} else if (Clazz.instanceOf (cs, jalview.schemes.HydrophobicColourScheme)) {\r
-index = 7;\r
-} else if (Clazz.instanceOf (cs, jalview.schemes.HelixColourScheme)) {\r
-index = 8;\r
-} else if (Clazz.instanceOf (cs, jalview.schemes.StrandColourScheme)) {\r
-index = 9;\r
-} else if (Clazz.instanceOf (cs, jalview.schemes.TurnColourScheme)) {\r
-index = 10;\r
-} else if (Clazz.instanceOf (cs, jalview.schemes.BuriedColourScheme)) {\r
-index = 11;\r
-} else if (Clazz.instanceOf (cs, jalview.schemes.NucleotideColourScheme)) {\r
-index = 12;\r
-} else if (Clazz.instanceOf (cs, jalview.schemes.PurinePyrimidineColourScheme)) {\r
-index = 13;\r
-} else if (Clazz.instanceOf (cs, jalview.schemes.TCoffeeColourScheme)) {\r
-index = 15;\r
-} else if (Clazz.instanceOf (cs, jalview.schemes.RNAHelicesColour)) {\r
-index = 16;\r
-} else if (Clazz.instanceOf (cs, jalview.schemes.UserColourScheme)) {\r
-if (((cs).getName () != null) && ((cs).getName ().length > 0)) {\r
-return (cs).getName ();\r
-}index = 0;\r
-}return jalview.schemes.ColourSchemeProperty.getColourName (index);\r
-}, "jalview.schemes.ColourSchemeI");\r
-c$.getColourName = Clazz.defineMethod (c$, "getColourName", \r
-function (index) {\r
-var ret = null;\r
-switch (index) {\r
-case 2:\r
-ret = "Clustal";\r
-break;\r
-case 3:\r
-ret = "Blosum62";\r
-break;\r
-case 4:\r
-ret = "% Identity";\r
-break;\r
-case 5:\r
-ret = "Zappo";\r
-break;\r
-case 6:\r
-ret = "Taylor";\r
-break;\r
-case 7:\r
-ret = "Hydrophobic";\r
-break;\r
-case 8:\r
-ret = "Helix Propensity";\r
-break;\r
-case 9:\r
-ret = "Strand Propensity";\r
-break;\r
-case 10:\r
-ret = "Turn Propensity";\r
-break;\r
-case 11:\r
-ret = "Buried Index";\r
-break;\r
-case 12:\r
-ret = "Nucleotide";\r
-break;\r
-case 13:\r
-ret = "Purine/Pyrimidine";\r
-break;\r
-case 15:\r
-ret = "T-Coffee Scores";\r
-break;\r
-case 17:\r
-ret = "RNA Interaction type";\r
-break;\r
-case 16:\r
-ret = "RNA Helices";\r
-break;\r
-case 0:\r
-ret = "User Defined";\r
-break;\r
-default:\r
-ret = "None";\r
-break;\r
-}\r
-return ret;\r
-}, "~N");\r
-c$.getColour = Clazz.defineMethod (c$, "getColour", \r
-function (alignment, name) {\r
-var colindex = jalview.schemes.ColourSchemeProperty.getColourIndexFromName (name);\r
-if (colindex == -1) {\r
-if (name.indexOf ('=') == -1) {\r
-try {\r
-return  new jalview.schemes.UserColourScheme (name);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-} else {\r
-try {\r
-var ucs =  new jalview.schemes.UserColourScheme ("white");\r
-ucs.parseAppletParameter (name);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}}return jalview.schemes.ColourSchemeProperty.getColour (alignment, jalview.schemes.ColourSchemeProperty.getColourIndexFromName (name));\r
-}, "jalview.datamodel.AnnotatedCollectionI,~S");\r
-c$.getColour = Clazz.defineMethod (c$, "getColour", \r
-function (coll, index) {\r
-var cs = null;\r
-switch (index) {\r
-case 2:\r
-cs =  new jalview.schemes.ClustalxColourScheme (coll, null);\r
-break;\r
-case 3:\r
-cs =  new jalview.schemes.Blosum62ColourScheme ();\r
-break;\r
-case 4:\r
-cs =  new jalview.schemes.PIDColourScheme ();\r
-break;\r
-case 5:\r
-cs =  new jalview.schemes.ZappoColourScheme ();\r
-break;\r
-case 6:\r
-cs =  new jalview.schemes.TaylorColourScheme ();\r
-break;\r
-case 7:\r
-cs =  new jalview.schemes.HydrophobicColourScheme ();\r
-break;\r
-case 8:\r
-cs =  new jalview.schemes.HelixColourScheme ();\r
-break;\r
-case 9:\r
-cs =  new jalview.schemes.StrandColourScheme ();\r
-break;\r
-case 10:\r
-cs =  new jalview.schemes.TurnColourScheme ();\r
-break;\r
-case 11:\r
-cs =  new jalview.schemes.BuriedColourScheme ();\r
-break;\r
-case 12:\r
-cs =  new jalview.schemes.NucleotideColourScheme ();\r
-break;\r
-case 13:\r
-cs =  new jalview.schemes.PurinePyrimidineColourScheme ();\r
-break;\r
-case 15:\r
-cs =  new jalview.schemes.TCoffeeColourScheme (coll);\r
-break;\r
-case 16:\r
-cs =  new jalview.schemes.RNAHelicesColour (coll);\r
-break;\r
-case 0:\r
-var col =  new Array (24);\r
-for (var i = 0; i < 24; i++) {\r
-col[i] = java.awt.Color.white;\r
-}\r
-cs =  new jalview.schemes.UserColourScheme (col);\r
-break;\r
-default:\r
-break;\r
-}\r
-return cs;\r
-}, "jalview.datamodel.AnnotatedCollectionI,~N");\r
-c$.getAWTColorFromName = Clazz.defineMethod (c$, "getAWTColorFromName", \r
-function (name) {\r
-var col = null;\r
-name = name.toLowerCase ();\r
-if (name.equals ("black")) {\r
-col = java.awt.Color.black;\r
-} else if (name.equals ("blue")) {\r
-col = java.awt.Color.blue;\r
-} else if (name.equals ("cyan")) {\r
-col = java.awt.Color.cyan;\r
-} else if (name.equals ("darkGray")) {\r
-col = java.awt.Color.darkGray;\r
-} else if (name.equals ("gray")) {\r
-col = java.awt.Color.gray;\r
-} else if (name.equals ("green")) {\r
-col = java.awt.Color.green;\r
-} else if (name.equals ("lightGray")) {\r
-col = java.awt.Color.lightGray;\r
-} else if (name.equals ("magenta")) {\r
-col = java.awt.Color.magenta;\r
-} else if (name.equals ("orange")) {\r
-col = java.awt.Color.orange;\r
-} else if (name.equals ("pink")) {\r
-col = java.awt.Color.pink;\r
-} else if (name.equals ("red")) {\r
-col = java.awt.Color.red;\r
-} else if (name.equals ("white")) {\r
-col = java.awt.Color.white;\r
-} else if (name.equals ("yellow")) {\r
-col = java.awt.Color.yellow;\r
-}return col;\r
-}, "~S");\r
-c$.initRnaHelicesShading = Clazz.defineMethod (c$, "initRnaHelicesShading", \r
-function (n) {\r
-var j = 0;\r
-if (jalview.schemes.ColourSchemeProperty.rnaHelices == null) {\r
-jalview.schemes.ColourSchemeProperty.rnaHelices =  new Array (n + 1);\r
-} else if (jalview.schemes.ColourSchemeProperty.rnaHelices != null && jalview.schemes.ColourSchemeProperty.rnaHelices.length <= n) {\r
-var t =  new Array (n + 1);\r
-System.arraycopy (jalview.schemes.ColourSchemeProperty.rnaHelices, 0, t, 0, jalview.schemes.ColourSchemeProperty.rnaHelices.length);\r
-j = jalview.schemes.ColourSchemeProperty.rnaHelices.length;\r
-jalview.schemes.ColourSchemeProperty.rnaHelices = t;\r
-} else {\r
-return;\r
-}for (; j <= n; j++) {\r
-jalview.schemes.ColourSchemeProperty.rnaHelices[j] = jalview.util.ColorUtils.generateRandomColor (java.awt.Color.white);\r
-}\r
-}, "~N");\r
-Clazz.defineStatics (c$,\r
-"UNDEFINED", -1,\r
-"USER_DEFINED", 0,\r
-"NONE", 1,\r
-"CLUSTAL", 2,\r
-"BLOSUM", 3,\r
-"PID", 4,\r
-"ZAPPO", 5,\r
-"TAYLOR", 6,\r
-"HYDROPHOBIC", 7,\r
-"HELIX", 8,\r
-"STRAND", 9,\r
-"TURN", 10,\r
-"BURIED", 11,\r
-"NUCLEOTIDE", 12,\r
-"PURINEPYRIMIDINE", 13,\r
-"COVARIATION", 14,\r
-"TCOFFEE", 15,\r
-"RNAHELIX", 16,\r
-"RNAINTERACTION", 17,\r
-"FIRST_COLOUR", 1,\r
-"LAST_COLOUR", 17,\r
-"rnaHelices", null);\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (null, "jalview.schemes.ColourSchemeProperty", ["jalview.schemes.Blosum62ColourScheme", "$.BuriedColourScheme", "$.ClustalxColourScheme", "$.HelixColourScheme", "$.HydrophobicColourScheme", "$.NucleotideColourScheme", "$.PIDColourScheme", "$.PurinePyrimidineColourScheme", "$.RNAHelicesColour", "$.StrandColourScheme", "$.TCoffeeColourScheme", "$.TaylorColourScheme", "$.TurnColourScheme", "$.UserColourScheme", "$.ZappoColourScheme", "jalview.util.ColorUtils", "java.awt.Color"], function () {
+c$ = Clazz.declareType (jalview.schemes, "ColourSchemeProperty");
+c$.getColourIndexFromName = Clazz.defineMethod (c$, "getColourIndexFromName", 
+function (name) {
+var ret = -1;
+if (name.equalsIgnoreCase ("Clustal")) {
+ret = 2;
+} else if (name.equalsIgnoreCase ("Blosum62")) {
+ret = 3;
+} else if (name.equalsIgnoreCase ("% Identity")) {
+ret = 4;
+} else if (name.equalsIgnoreCase ("Zappo")) {
+ret = 5;
+} else if (name.equalsIgnoreCase ("Taylor")) {
+ret = 6;
+} else if (name.equalsIgnoreCase ("Hydrophobic")) {
+ret = 7;
+} else if (name.equalsIgnoreCase ("Helix Propensity")) {
+ret = 8;
+} else if (name.equalsIgnoreCase ("Strand Propensity")) {
+ret = 9;
+} else if (name.equalsIgnoreCase ("Turn Propensity")) {
+ret = 10;
+} else if (name.equalsIgnoreCase ("Buried Index")) {
+ret = 11;
+} else if (name.equalsIgnoreCase ("Nucleotide")) {
+ret = 12;
+} else if (name.equalsIgnoreCase ("T-Coffee Scores")) {
+ret = 15;
+} else if (name.equalsIgnoreCase ("User Defined")) {
+ret = 0;
+} else if (name.equalsIgnoreCase ("None")) {
+ret = 1;
+} else if (name.equalsIgnoreCase ("Purine/Pyrimidine")) {
+ret = 13;
+} else if (name.equalsIgnoreCase ("RNA Interaction type")) {
+ret = 17;
+} else if (name.equalsIgnoreCase ("RNA Helices")) {
+ret = 16;
+}return ret;
+}, "~S");
+c$.getColourName = Clazz.defineMethod (c$, "getColourName", 
+function (cs) {
+var index = 1;
+if (Clazz.instanceOf (cs, jalview.schemes.ClustalxColourScheme)) {
+index = 2;
+} else if (Clazz.instanceOf (cs, jalview.schemes.Blosum62ColourScheme)) {
+index = 3;
+} else if (Clazz.instanceOf (cs, jalview.schemes.PIDColourScheme)) {
+index = 4;
+} else if (Clazz.instanceOf (cs, jalview.schemes.ZappoColourScheme)) {
+index = 5;
+} else if (Clazz.instanceOf (cs, jalview.schemes.TaylorColourScheme)) {
+index = 6;
+} else if (Clazz.instanceOf (cs, jalview.schemes.HydrophobicColourScheme)) {
+index = 7;
+} else if (Clazz.instanceOf (cs, jalview.schemes.HelixColourScheme)) {
+index = 8;
+} else if (Clazz.instanceOf (cs, jalview.schemes.StrandColourScheme)) {
+index = 9;
+} else if (Clazz.instanceOf (cs, jalview.schemes.TurnColourScheme)) {
+index = 10;
+} else if (Clazz.instanceOf (cs, jalview.schemes.BuriedColourScheme)) {
+index = 11;
+} else if (Clazz.instanceOf (cs, jalview.schemes.NucleotideColourScheme)) {
+index = 12;
+} else if (Clazz.instanceOf (cs, jalview.schemes.PurinePyrimidineColourScheme)) {
+index = 13;
+} else if (Clazz.instanceOf (cs, jalview.schemes.TCoffeeColourScheme)) {
+index = 15;
+} else if (Clazz.instanceOf (cs, jalview.schemes.RNAHelicesColour)) {
+index = 16;
+} else if (Clazz.instanceOf (cs, jalview.schemes.UserColourScheme)) {
+if (((cs).getName () != null) && ((cs).getName ().length > 0)) {
+return (cs).getName ();
+}index = 0;
+}return jalview.schemes.ColourSchemeProperty.getColourName (index);
+}, "jalview.schemes.ColourSchemeI");
+c$.getColourName = Clazz.defineMethod (c$, "getColourName", 
+function (index) {
+var ret = null;
+switch (index) {
+case 2:
+ret = "Clustal";
+break;
+case 3:
+ret = "Blosum62";
+break;
+case 4:
+ret = "% Identity";
+break;
+case 5:
+ret = "Zappo";
+break;
+case 6:
+ret = "Taylor";
+break;
+case 7:
+ret = "Hydrophobic";
+break;
+case 8:
+ret = "Helix Propensity";
+break;
+case 9:
+ret = "Strand Propensity";
+break;
+case 10:
+ret = "Turn Propensity";
+break;
+case 11:
+ret = "Buried Index";
+break;
+case 12:
+ret = "Nucleotide";
+break;
+case 13:
+ret = "Purine/Pyrimidine";
+break;
+case 15:
+ret = "T-Coffee Scores";
+break;
+case 17:
+ret = "RNA Interaction type";
+break;
+case 16:
+ret = "RNA Helices";
+break;
+case 0:
+ret = "User Defined";
+break;
+default:
+ret = "None";
+break;
+}
+return ret;
+}, "~N");
+c$.getColour = Clazz.defineMethod (c$, "getColour", 
+function (alignment, name) {
+var colindex = jalview.schemes.ColourSchemeProperty.getColourIndexFromName (name);
+if (colindex == -1) {
+if (name.indexOf ('=') == -1) {
+try {
+return  new jalview.schemes.UserColourScheme (name);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+} else {
+try {
+var ucs =  new jalview.schemes.UserColourScheme ("white");
+ucs.parseAppletParameter (name);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+}}return jalview.schemes.ColourSchemeProperty.getColour (alignment, jalview.schemes.ColourSchemeProperty.getColourIndexFromName (name));
+}, "jalview.datamodel.AnnotatedCollectionI,~S");
+c$.getColour = Clazz.defineMethod (c$, "getColour", 
+function (coll, index) {
+var cs = null;
+switch (index) {
+case 2:
+cs =  new jalview.schemes.ClustalxColourScheme (coll, null);
+break;
+case 3:
+cs =  new jalview.schemes.Blosum62ColourScheme ();
+break;
+case 4:
+cs =  new jalview.schemes.PIDColourScheme ();
+break;
+case 5:
+cs =  new jalview.schemes.ZappoColourScheme ();
+break;
+case 6:
+cs =  new jalview.schemes.TaylorColourScheme ();
+break;
+case 7:
+cs =  new jalview.schemes.HydrophobicColourScheme ();
+break;
+case 8:
+cs =  new jalview.schemes.HelixColourScheme ();
+break;
+case 9:
+cs =  new jalview.schemes.StrandColourScheme ();
+break;
+case 10:
+cs =  new jalview.schemes.TurnColourScheme ();
+break;
+case 11:
+cs =  new jalview.schemes.BuriedColourScheme ();
+break;
+case 12:
+cs =  new jalview.schemes.NucleotideColourScheme ();
+break;
+case 13:
+cs =  new jalview.schemes.PurinePyrimidineColourScheme ();
+break;
+case 15:
+cs =  new jalview.schemes.TCoffeeColourScheme (coll);
+break;
+case 16:
+cs =  new jalview.schemes.RNAHelicesColour (coll);
+break;
+case 0:
+var col =  new Array (24);
+for (var i = 0; i < 24; i++) {
+col[i] = java.awt.Color.white;
+}
+cs =  new jalview.schemes.UserColourScheme (col);
+break;
+default:
+break;
+}
+return cs;
+}, "jalview.datamodel.AnnotatedCollectionI,~N");
+c$.getAWTColorFromName = Clazz.defineMethod (c$, "getAWTColorFromName", 
+function (name) {
+var col = null;
+name = name.toLowerCase ();
+if (name.equals ("black")) {
+col = java.awt.Color.black;
+} else if (name.equals ("blue")) {
+col = java.awt.Color.blue;
+} else if (name.equals ("cyan")) {
+col = java.awt.Color.cyan;
+} else if (name.equals ("darkGray")) {
+col = java.awt.Color.darkGray;
+} else if (name.equals ("gray")) {
+col = java.awt.Color.gray;
+} else if (name.equals ("green")) {
+col = java.awt.Color.green;
+} else if (name.equals ("lightGray")) {
+col = java.awt.Color.lightGray;
+} else if (name.equals ("magenta")) {
+col = java.awt.Color.magenta;
+} else if (name.equals ("orange")) {
+col = java.awt.Color.orange;
+} else if (name.equals ("pink")) {
+col = java.awt.Color.pink;
+} else if (name.equals ("red")) {
+col = java.awt.Color.red;
+} else if (name.equals ("white")) {
+col = java.awt.Color.white;
+} else if (name.equals ("yellow")) {
+col = java.awt.Color.yellow;
+}return col;
+}, "~S");
+c$.initRnaHelicesShading = Clazz.defineMethod (c$, "initRnaHelicesShading", 
+function (n) {
+var j = 0;
+if (jalview.schemes.ColourSchemeProperty.rnaHelices == null) {
+jalview.schemes.ColourSchemeProperty.rnaHelices =  new Array (n + 1);
+} else if (jalview.schemes.ColourSchemeProperty.rnaHelices != null && jalview.schemes.ColourSchemeProperty.rnaHelices.length <= n) {
+var t =  new Array (n + 1);
+System.arraycopy (jalview.schemes.ColourSchemeProperty.rnaHelices, 0, t, 0, jalview.schemes.ColourSchemeProperty.rnaHelices.length);
+j = jalview.schemes.ColourSchemeProperty.rnaHelices.length;
+jalview.schemes.ColourSchemeProperty.rnaHelices = t;
+} else {
+return;
+}for (; j <= n; j++) {
+jalview.schemes.ColourSchemeProperty.rnaHelices[j] = jalview.util.ColorUtils.generateRandomColor (java.awt.Color.white);
+}
+}, "~N");
+Clazz.defineStatics (c$,
+"UNDEFINED", -1,
+"USER_DEFINED", 0,
+"NONE", 1,
+"CLUSTAL", 2,
+"BLOSUM", 3,
+"PID", 4,
+"ZAPPO", 5,
+"TAYLOR", 6,
+"HYDROPHOBIC", 7,
+"HELIX", 8,
+"STRAND", 9,
+"TURN", 10,
+"BURIED", 11,
+"NUCLEOTIDE", 12,
+"PURINEPYRIMIDINE", 13,
+"COVARIATION", 14,
+"TCOFFEE", 15,
+"RNAHELIX", 16,
+"RNAINTERACTION", 17,
+"FIRST_COLOUR", 1,
+"LAST_COLOUR", 17,
+"rnaHelices", null);
+});
index 39d8ac9..45c3c6a 100644 (file)
@@ -1,45 +1,45 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (null, "jalview.schemes.Consensus", ["jalview.schemes.ResidueProperties"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.mask = null;\r
-this.threshold = 0;\r
-this.maskstr = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "Consensus");\r
-Clazz.makeConstructor (c$, \r
-function (mask, threshold) {\r
-this.maskstr = mask;\r
-this.setMask (mask);\r
-this.threshold = threshold;\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "setMask", \r
-function (s) {\r
-this.mask = this.setNums (s);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "isConserved", \r
-function (cons2, col, size) {\r
-return this.isConserved (cons2, col, size, true);\r
-}, "~A,~N,~N");\r
-Clazz.defineMethod (c$, "isConserved", \r
-function (cons2, col, size, includeGaps) {\r
-var tot = 0;\r
-if (!includeGaps) {\r
-size -= cons2[col][cons2[col].length - 1];\r
-}for (var i = 0; i < this.mask.length; i++) {\r
-tot += cons2[col][this.mask[i]];\r
-}\r
-if (tot > ((this.threshold * size) / 100)) {\r
-return true;\r
-}return false;\r
-}, "~A,~N,~N,~B");\r
-Clazz.defineMethod (c$, "setNums", \r
-function (s) {\r
-var out =  Clazz.newIntArray (s.length, 0);\r
-var i = 0;\r
-while (i < s.length) {\r
-out[i] = jalview.schemes.ResidueProperties.aaIndex[s.charCodeAt (i)];\r
-i++;\r
-}\r
-return out;\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (null, "jalview.schemes.Consensus", ["jalview.schemes.ResidueProperties"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.mask = null;
+this.threshold = 0;
+this.maskstr = null;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "Consensus");
+Clazz.makeConstructor (c$, 
+function (mask, threshold) {
+this.maskstr = mask;
+this.setMask (mask);
+this.threshold = threshold;
+}, "~S,~N");
+Clazz.defineMethod (c$, "setMask", 
+function (s) {
+this.mask = this.setNums (s);
+}, "~S");
+Clazz.defineMethod (c$, "isConserved", 
+function (cons2, col, size) {
+return this.isConserved (cons2, col, size, true);
+}, "~A,~N,~N");
+Clazz.defineMethod (c$, "isConserved", 
+function (cons2, col, size, includeGaps) {
+var tot = 0;
+if (!includeGaps) {
+size -= cons2[col][cons2[col].length - 1];
+}for (var i = 0; i < this.mask.length; i++) {
+tot += cons2[col][this.mask[i]];
+}
+if (tot > ((this.threshold * size) / 100)) {
+return true;
+}return false;
+}, "~A,~N,~N,~B");
+Clazz.defineMethod (c$, "setNums", 
+function (s) {
+var out =  Clazz.newIntArray (s.length, 0);
+var i = 0;
+while (i < s.length) {
+out[i] = jalview.schemes.ResidueProperties.aaIndex[s.charCodeAt (i)];
+i++;
+}
+return out;
+}, "~S");
+});
index 3d75e42..68c8f15 100644 (file)
@@ -1,41 +1,41 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ResidueColourScheme", "java.util.Hashtable"], "jalview.schemes.CovariationColourScheme", ["jalview.schemes.ResidueProperties", "jalview.util.ColorUtils", "java.awt.Color"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.helixcolorhash = null;\r
-this.positionsToHelix = null;\r
-this.numHelix = 0;\r
-this.annotation = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "CovariationColourScheme", jalview.schemes.ResidueColourScheme);\r
-Clazz.prepareFields (c$, function () {\r
-this.helixcolorhash =  new java.util.Hashtable ();\r
-this.positionsToHelix =  new java.util.Hashtable ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (annotation) {\r
-Clazz.superConstructor (this, jalview.schemes.CovariationColourScheme, []);\r
-this.annotation = annotation;\r
-for (var x = 0; x < this.annotation._rnasecstr.length; x++) {\r
-this.positionsToHelix.put (new Integer (this.annotation._rnasecstr[x].getBegin ()), this.annotation._rnasecstr[x].getFeatureGroup ());\r
-this.positionsToHelix.put (new Integer (this.annotation._rnasecstr[x].getEnd ()), this.annotation._rnasecstr[x].getFeatureGroup ());\r
-if (Integer.parseInt (this.annotation._rnasecstr[x].getFeatureGroup ()) > this.numHelix) {\r
-this.numHelix = Integer.parseInt (this.annotation._rnasecstr[x].getFeatureGroup ());\r
-}}\r
-for (var j = 0; j <= this.numHelix; j++) {\r
-this.helixcolorhash.put (Integer.toString (j), jalview.util.ColorUtils.generateRandomColor (java.awt.Color.white));\r
-}\r
-}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c) {\r
-return jalview.schemes.ResidueProperties.purinepyrimidine[jalview.schemes.ResidueProperties.purinepyrimidineIndex[c.charCodeAt (0)]];\r
-}, "~S");\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c, j) {\r
-var currentColour = java.awt.Color.white;\r
-var currentHelix = null;\r
-currentHelix = this.positionsToHelix.get (new Integer (j));\r
-if (currentHelix != null) {\r
-currentColour = this.helixcolorhash.get (currentHelix);\r
-}return currentColour;\r
-}, "~S,~N");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ResidueColourScheme", "java.util.Hashtable"], "jalview.schemes.CovariationColourScheme", ["jalview.schemes.ResidueProperties", "jalview.util.ColorUtils", "java.awt.Color"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.helixcolorhash = null;
+this.positionsToHelix = null;
+this.numHelix = 0;
+this.annotation = null;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "CovariationColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz.prepareFields (c$, function () {
+this.helixcolorhash =  new java.util.Hashtable ();
+this.positionsToHelix =  new java.util.Hashtable ();
+});
+Clazz.makeConstructor (c$, 
+function (annotation) {
+Clazz.superConstructor (this, jalview.schemes.CovariationColourScheme, []);
+this.annotation = annotation;
+for (var x = 0; x < this.annotation._rnasecstr.length; x++) {
+this.positionsToHelix.put (new Integer (this.annotation._rnasecstr[x].getBegin ()), this.annotation._rnasecstr[x].getFeatureGroup ());
+this.positionsToHelix.put (new Integer (this.annotation._rnasecstr[x].getEnd ()), this.annotation._rnasecstr[x].getFeatureGroup ());
+if (Integer.parseInt (this.annotation._rnasecstr[x].getFeatureGroup ()) > this.numHelix) {
+this.numHelix = Integer.parseInt (this.annotation._rnasecstr[x].getFeatureGroup ());
+}}
+for (var j = 0; j <= this.numHelix; j++) {
+this.helixcolorhash.put (Integer.toString (j), jalview.util.ColorUtils.generateRandomColor (java.awt.Color.white));
+}
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "findColour", 
+function (c) {
+return jalview.schemes.ResidueProperties.purinepyrimidine[jalview.schemes.ResidueProperties.purinepyrimidineIndex[c.charCodeAt (0)]];
+}, "~S");
+Clazz.defineMethod (c$, "findColour", 
+function (c, j) {
+var currentColour = java.awt.Color.white;
+var currentHelix = null;
+currentHelix = this.positionsToHelix.get (new Integer (j));
+if (currentHelix != null) {
+currentColour = this.helixcolorhash.get (currentHelix);
+}return currentColour;
+}, "~S,~N");
+});
index e73b3d9..e71f907 100644 (file)
@@ -1,26 +1,26 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.FollowerColourScheme", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.colourScheme = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "FollowerColourScheme", jalview.schemes.ResidueColourScheme);\r
-Clazz.defineMethod (c$, "getBaseColour", \r
-function () {\r
-return this.colourScheme;\r
-});\r
-Clazz.overrideMethod (c$, "setConsensus", \r
-function (consensus) {\r
-if (this.colourScheme != null) {\r
-this.colourScheme.setConsensus (consensus);\r
-}}, "~A");\r
-Clazz.overrideMethod (c$, "setConservation", \r
-function (cons) {\r
-if (this.colourScheme != null) {\r
-this.colourScheme.setConservation (cons);\r
-}}, "jalview.analysis.Conservation");\r
-Clazz.overrideMethod (c$, "setConservationInc", \r
-function (i) {\r
-if (this.colourScheme != null) {\r
-this.colourScheme.setConservationInc (i);\r
-}}, "~N");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.FollowerColourScheme", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.colourScheme = null;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "FollowerColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz.defineMethod (c$, "getBaseColour", 
+function () {
+return this.colourScheme;
+});
+Clazz.overrideMethod (c$, "setConsensus", 
+function (consensus) {
+if (this.colourScheme != null) {
+this.colourScheme.setConsensus (consensus);
+}}, "~A");
+Clazz.overrideMethod (c$, "setConservation", 
+function (cons) {
+if (this.colourScheme != null) {
+this.colourScheme.setConservation (cons);
+}}, "jalview.analysis.Conservation");
+Clazz.overrideMethod (c$, "setConservationInc", 
+function (i) {
+if (this.colourScheme != null) {
+this.colourScheme.setConservationInc (i);
+}}, "~N");
+});
index 5daa0fb..e9998a1 100644 (file)
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (null, "jalview.schemes.GraduatedColor", ["jalview.schemes.UserColourScheme", "java.awt.Color", "java.lang.Float"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.thresholdState = -1;\r
-this.lr = 0;\r
-this.lg = 0;\r
-this.lb = 0;\r
-this.dr = 0;\r
-this.dg = 0;\r
-this.db = 0;\r
-this.base = 0;\r
-this.range = 0;\r
-this.thrsh = 0;\r
-this.tolow = false;\r
-this.autoScale = true;\r
-this.ucs = null;\r
-this.colourByLabel = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "GraduatedColor");\r
-Clazz.makeConstructor (c$, \r
-function (low, high, min, max) {\r
-this.thrsh = NaN;\r
-this.tolow = min >= max;\r
-this.lr = low.getRed () / 255;\r
-this.lg = low.getGreen () / 255;\r
-this.lb = low.getBlue () / 255;\r
-this.dr = (high.getRed () / 255) - this.lr;\r
-this.dg = (high.getGreen () / 255) - this.lg;\r
-this.db = (high.getBlue () / 255) - this.lb;\r
-if (this.tolow) {\r
-this.base = max;\r
-this.range = min - max;\r
-} else {\r
-this.base = min;\r
-this.range = max - min;\r
-}}, "java.awt.Color,java.awt.Color,~N,~N");\r
-Clazz.makeConstructor (c$, \r
-function (oldcs) {\r
-this.lr = oldcs.lr;\r
-this.lg = oldcs.lg;\r
-this.lb = oldcs.lb;\r
-this.dr = oldcs.dr;\r
-this.dg = oldcs.dg;\r
-this.db = oldcs.db;\r
-this.base = oldcs.base;\r
-this.range = oldcs.range;\r
-this.tolow = oldcs.tolow;\r
-this.thresholdState = oldcs.thresholdState;\r
-this.thrsh = oldcs.thrsh;\r
-this.autoScale = oldcs.autoScale;\r
-this.colourByLabel = oldcs.colourByLabel;\r
-}, "jalview.schemes.GraduatedColor");\r
-Clazz.makeConstructor (c$, \r
-function (oldcs, min, max) {\r
-this.construct (oldcs);\r
-this.updateBounds (min, max);\r
-}, "jalview.schemes.GraduatedColor,~N,~N");\r
-Clazz.defineMethod (c$, "getMinColor", \r
-function () {\r
-return  new java.awt.Color (this.lr, this.lg, this.lb);\r
-});\r
-Clazz.defineMethod (c$, "getMaxColor", \r
-function () {\r
-return  new java.awt.Color (this.lr + this.dr, this.lg + this.dg, this.lb + this.db);\r
-});\r
-Clazz.defineMethod (c$, "getTolow", \r
-function () {\r
-return this.tolow;\r
-});\r
-Clazz.defineMethod (c$, "setTolow", \r
-function (tolower) {\r
-this.tolow = tolower;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isColored", \r
-function (feature) {\r
-var val = feature.getScore ();\r
-if (Float.isNaN (val)) {\r
-return true;\r
-}if (this.thresholdState == -1) {\r
-return true;\r
-}if (Float.isNaN (this.thrsh)) {\r
-return true;\r
-}var rtn = this.thresholdState == 1;\r
-if (val <= this.thrsh) {\r
-return !rtn;\r
-} else {\r
-return rtn;\r
-}}, "jalview.datamodel.SequenceFeature");\r
-Clazz.defineMethod (c$, "isColourByLabel", \r
-function () {\r
-return this.colourByLabel;\r
-});\r
-Clazz.defineMethod (c$, "setColourByLabel", \r
-function (colourByLabel) {\r
-this.colourByLabel = colourByLabel;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "findColor", \r
-function (feature) {\r
-if (this.colourByLabel) {\r
-if (this.ucs == null) {\r
-this.ucs =  new jalview.schemes.UserColourScheme ();\r
-}return this.ucs.createColourFromName (feature.getDescription ());\r
-}if (this.range == 0.0) {\r
-return this.getMaxColor ();\r
-}var scr = feature.getScore ();\r
-if (Float.isNaN (scr)) {\r
-return this.getMinColor ();\r
-}var scl = (scr - this.base) / this.range;\r
-if (this.tolow) {\r
-scl = -scl;\r
-}if (scl < 0) {\r
-scl = 0;\r
-}if (scl > 1) {\r
-scl = 1;\r
-}return  new java.awt.Color (this.lr + scl * this.dr, this.lg + scl * this.dg, this.lb + scl * this.db);\r
-}, "jalview.datamodel.SequenceFeature");\r
-Clazz.defineMethod (c$, "setThresh", \r
-function (value) {\r
-this.thrsh = value;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getThresh", \r
-function () {\r
-return this.thrsh;\r
-});\r
-Clazz.defineMethod (c$, "setThreshType", \r
-function (aboveThreshold) {\r
-this.thresholdState = aboveThreshold;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getThreshType", \r
-function () {\r
-return this.thresholdState;\r
-});\r
-Clazz.defineMethod (c$, "getMax", \r
-function () {\r
-return (this.tolow) ? this.base : (this.base + this.range);\r
-});\r
-Clazz.defineMethod (c$, "getMin", \r
-function () {\r
-return (this.tolow) ? (this.base + this.range) : this.base;\r
-});\r
-Clazz.defineMethod (c$, "isAutoScale", \r
-function () {\r
-return this.autoScale;\r
-});\r
-Clazz.defineMethod (c$, "setAutoScaled", \r
-function (autoscale) {\r
-this.autoScale = autoscale;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "updateBounds", \r
-function (min, max) {\r
-if (max < min) {\r
-this.base = max;\r
-this.range = min - max;\r
-this.tolow = true;\r
-} else {\r
-this.base = min;\r
-this.range = max - min;\r
-this.tolow = false;\r
-}}, "~N,~N");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (null, "jalview.schemes.GraduatedColor", ["jalview.schemes.UserColourScheme", "java.awt.Color", "java.lang.Float"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.thresholdState = -1;
+this.lr = 0;
+this.lg = 0;
+this.lb = 0;
+this.dr = 0;
+this.dg = 0;
+this.db = 0;
+this.base = 0;
+this.range = 0;
+this.thrsh = 0;
+this.tolow = false;
+this.autoScale = true;
+this.ucs = null;
+this.colourByLabel = false;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "GraduatedColor");
+Clazz.makeConstructor (c$, 
+function (low, high, min, max) {
+this.thrsh = NaN;
+this.tolow = min >= max;
+this.lr = low.getRed () / 255;
+this.lg = low.getGreen () / 255;
+this.lb = low.getBlue () / 255;
+this.dr = (high.getRed () / 255) - this.lr;
+this.dg = (high.getGreen () / 255) - this.lg;
+this.db = (high.getBlue () / 255) - this.lb;
+if (this.tolow) {
+this.base = max;
+this.range = min - max;
+} else {
+this.base = min;
+this.range = max - min;
+}}, "java.awt.Color,java.awt.Color,~N,~N");
+Clazz.makeConstructor (c$, 
+function (oldcs) {
+this.lr = oldcs.lr;
+this.lg = oldcs.lg;
+this.lb = oldcs.lb;
+this.dr = oldcs.dr;
+this.dg = oldcs.dg;
+this.db = oldcs.db;
+this.base = oldcs.base;
+this.range = oldcs.range;
+this.tolow = oldcs.tolow;
+this.thresholdState = oldcs.thresholdState;
+this.thrsh = oldcs.thrsh;
+this.autoScale = oldcs.autoScale;
+this.colourByLabel = oldcs.colourByLabel;
+}, "jalview.schemes.GraduatedColor");
+Clazz.makeConstructor (c$, 
+function (oldcs, min, max) {
+this.construct (oldcs);
+this.updateBounds (min, max);
+}, "jalview.schemes.GraduatedColor,~N,~N");
+Clazz.defineMethod (c$, "getMinColor", 
+function () {
+return  new java.awt.Color (this.lr, this.lg, this.lb);
+});
+Clazz.defineMethod (c$, "getMaxColor", 
+function () {
+return  new java.awt.Color (this.lr + this.dr, this.lg + this.dg, this.lb + this.db);
+});
+Clazz.defineMethod (c$, "getTolow", 
+function () {
+return this.tolow;
+});
+Clazz.defineMethod (c$, "setTolow", 
+function (tolower) {
+this.tolow = tolower;
+}, "~B");
+Clazz.defineMethod (c$, "isColored", 
+function (feature) {
+var val = feature.getScore ();
+if (Float.isNaN (val)) {
+return true;
+}if (this.thresholdState == -1) {
+return true;
+}if (Float.isNaN (this.thrsh)) {
+return true;
+}var rtn = this.thresholdState == 1;
+if (val <= this.thrsh) {
+return !rtn;
+} else {
+return rtn;
+}}, "jalview.datamodel.SequenceFeature");
+Clazz.defineMethod (c$, "isColourByLabel", 
+function () {
+return this.colourByLabel;
+});
+Clazz.defineMethod (c$, "setColourByLabel", 
+function (colourByLabel) {
+this.colourByLabel = colourByLabel;
+}, "~B");
+Clazz.defineMethod (c$, "findColor", 
+function (feature) {
+if (this.colourByLabel) {
+if (this.ucs == null) {
+this.ucs =  new jalview.schemes.UserColourScheme ();
+}return this.ucs.createColourFromName (feature.getDescription ());
+}if (this.range == 0.0) {
+return this.getMaxColor ();
+}var scr = feature.getScore ();
+if (Float.isNaN (scr)) {
+return this.getMinColor ();
+}var scl = (scr - this.base) / this.range;
+if (this.tolow) {
+scl = -scl;
+}if (scl < 0) {
+scl = 0;
+}if (scl > 1) {
+scl = 1;
+}return  new java.awt.Color (this.lr + scl * this.dr, this.lg + scl * this.dg, this.lb + scl * this.db);
+}, "jalview.datamodel.SequenceFeature");
+Clazz.defineMethod (c$, "setThresh", 
+function (value) {
+this.thrsh = value;
+}, "~N");
+Clazz.defineMethod (c$, "getThresh", 
+function () {
+return this.thrsh;
+});
+Clazz.defineMethod (c$, "setThreshType", 
+function (aboveThreshold) {
+this.thresholdState = aboveThreshold;
+}, "~N");
+Clazz.defineMethod (c$, "getThreshType", 
+function () {
+return this.thresholdState;
+});
+Clazz.defineMethod (c$, "getMax", 
+function () {
+return (this.tolow) ? this.base : (this.base + this.range);
+});
+Clazz.defineMethod (c$, "getMin", 
+function () {
+return (this.tolow) ? (this.base + this.range) : this.base;
+});
+Clazz.defineMethod (c$, "isAutoScale", 
+function () {
+return this.autoScale;
+});
+Clazz.defineMethod (c$, "setAutoScaled", 
+function (autoscale) {
+this.autoScale = autoscale;
+}, "~B");
+Clazz.defineMethod (c$, "updateBounds", 
+function (min, max) {
+if (max < min) {
+this.base = max;
+this.range = min - max;
+this.tolow = true;
+} else {
+this.base = min;
+this.range = max - min;
+this.tolow = false;
+}}, "~N,~N");
+});
index 4768a33..64e88e9 100644 (file)
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.HelixColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {\r
-c$ = Clazz.declareType (jalview.schemes, "HelixColourScheme", jalview.schemes.ScoreColourScheme);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.schemes.HelixColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.helix, 0.57, 1.51]);\r
-});\r
-Clazz.overrideMethod (c$, "makeColour", \r
-function (c) {\r
-return  new java.awt.Color (c, 1.0 - c, c);\r
-}, "~N");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.HelixColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz.declareType (jalview.schemes, "HelixColourScheme", jalview.schemes.ScoreColourScheme);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.schemes.HelixColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.helix, 0.57, 1.51]);
+});
+Clazz.overrideMethod (c$, "makeColour", 
+function (c) {
+return  new java.awt.Color (c, 1.0 - c, c);
+}, "~N");
+});
index 02e1bbd..224f202 100644 (file)
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.HydrophobicColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {\r
-c$ = Clazz.declareType (jalview.schemes, "HydrophobicColourScheme", jalview.schemes.ScoreColourScheme);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.schemes.HydrophobicColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.hyd, -3.9, 4.5]);\r
-});\r
-Clazz.overrideMethod (c$, "makeColour", \r
-function (c) {\r
-return  new java.awt.Color (c, 0.0, 1.0 - c);\r
-}, "~N");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.HydrophobicColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz.declareType (jalview.schemes, "HydrophobicColourScheme", jalview.schemes.ScoreColourScheme);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.schemes.HydrophobicColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.hyd, -3.9, 4.5]);
+});
+Clazz.overrideMethod (c$, "makeColour", 
+function (c) {
+return  new java.awt.Color (c, 0.0, 1.0 - c);
+}, "~N");
+});
index 1345bc6..abdfb5e 100644 (file)
@@ -1,31 +1,31 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.NucleotideColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {\r
-c$ = Clazz.declareType (jalview.schemes, "NucleotideColourScheme", jalview.schemes.ResidueColourScheme);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.schemes.NucleotideColourScheme, [jalview.schemes.ResidueProperties.nucleotideIndex, jalview.schemes.ResidueProperties.nucleotide, 0]);\r
-});\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c) {\r
-return this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)]];\r
-}, "~S");\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c, j, seq) {\r
-var currentColour;\r
-if ((this.threshold == 0) || this.aboveThreshold (c, j)) {\r
-try {\r
-currentColour = this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)]];\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-return java.awt.Color.white;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-} else {\r
-return java.awt.Color.white;\r
-}if (this.conservationColouring) {\r
-currentColour = this.applyConservation (currentColour, j);\r
-}return currentColour;\r
-}, "~S,~N,jalview.datamodel.SequenceI");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.NucleotideColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz.declareType (jalview.schemes, "NucleotideColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.schemes.NucleotideColourScheme, [jalview.schemes.ResidueProperties.nucleotideIndex, jalview.schemes.ResidueProperties.nucleotide, 0]);
+});
+Clazz.defineMethod (c$, "findColour", 
+function (c) {
+return this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)]];
+}, "~S");
+Clazz.defineMethod (c$, "findColour", 
+function (c, j, seq) {
+var currentColour;
+if ((this.threshold == 0) || this.aboveThreshold (c, j)) {
+try {
+currentColour = this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)]];
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+return java.awt.Color.white;
+} else {
+throw ex;
+}
+}
+} else {
+return java.awt.Color.white;
+}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+});
index 093328c..bdf6f24 100644 (file)
@@ -1,39 +1,39 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.PIDColourScheme", ["jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.awt.Color"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.pidColours = null;\r
-this.thresholds = null;\r
-this.group = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "PIDColourScheme", jalview.schemes.ResidueColourScheme);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.schemes.PIDColourScheme, []);\r
-this.pidColours = jalview.schemes.ResidueProperties.pidColours;\r
-this.thresholds = jalview.schemes.ResidueProperties.pidThresholds;\r
-});\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c, j, seq) {\r
-if ('a' <= c && c <= 'z') {\r
-c = String.fromCharCode (c.charCodeAt (0) - (32));\r
-}if (this.consensus == null || j >= this.consensus.length || this.consensus[j] == null) {\r
-return java.awt.Color.white;\r
-}if ((this.threshold != 0) && !this.aboveThreshold (c, j)) {\r
-return java.awt.Color.white;\r
-}var currentColour = java.awt.Color.white;\r
-var sc = 0;\r
-if (this.consensus.length <= j) {\r
-return java.awt.Color.white;\r
-}if ((Integer.parseInt (this.consensus[j].get ("C").toString ()) != -1) && this.consensus[j].contains (String.valueOf (c))) {\r
-sc = (this.consensus[j].get (this.ignoreGaps)).floatValue ();\r
-if (!jalview.util.Comparison.isGap (c)) {\r
-for (var i = 0; i < this.thresholds.length; i++) {\r
-if (sc > this.thresholds[i]) {\r
-currentColour = this.pidColours[i];\r
-break;\r
-}}\r
-}}if (this.conservationColouring) {\r
-currentColour = this.applyConservation (currentColour, j);\r
-}return currentColour;\r
-}, "~S,~N,jalview.datamodel.SequenceI");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.PIDColourScheme", ["jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.awt.Color"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.pidColours = null;
+this.thresholds = null;
+this.group = null;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "PIDColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.schemes.PIDColourScheme, []);
+this.pidColours = jalview.schemes.ResidueProperties.pidColours;
+this.thresholds = jalview.schemes.ResidueProperties.pidThresholds;
+});
+Clazz.defineMethod (c$, "findColour", 
+function (c, j, seq) {
+if ('a' <= c && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) - (32));
+}if (this.consensus == null || j >= this.consensus.length || this.consensus[j] == null) {
+return java.awt.Color.white;
+}if ((this.threshold != 0) && !this.aboveThreshold (c, j)) {
+return java.awt.Color.white;
+}var currentColour = java.awt.Color.white;
+var sc = 0;
+if (this.consensus.length <= j) {
+return java.awt.Color.white;
+}if ((Integer.parseInt (this.consensus[j].get ("C").toString ()) != -1) && this.consensus[j].contains (String.valueOf (c))) {
+sc = (this.consensus[j].get (this.ignoreGaps)).floatValue ();
+if (!jalview.util.Comparison.isGap (c)) {
+for (var i = 0; i < this.thresholds.length; i++) {
+if (sc > this.thresholds[i]) {
+currentColour = this.pidColours[i];
+break;
+}}
+}}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+});
index be4e523..514d31b 100644 (file)
@@ -1,31 +1,31 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.PurinePyrimidineColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {\r
-c$ = Clazz.declareType (jalview.schemes, "PurinePyrimidineColourScheme", jalview.schemes.ResidueColourScheme);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.schemes.PurinePyrimidineColourScheme, [jalview.schemes.ResidueProperties.purinepyrimidineIndex, jalview.schemes.ResidueProperties.purinepyrimidine, 0]);\r
-});\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c) {\r
-return this.colors[jalview.schemes.ResidueProperties.purinepyrimidineIndex[c.charCodeAt (0)]];\r
-}, "~S");\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c, j) {\r
-var currentColour;\r
-if ((this.threshold == 0) || this.aboveThreshold (c, j)) {\r
-try {\r
-currentColour = this.colors[jalview.schemes.ResidueProperties.purinepyrimidineIndex[c.charCodeAt (0)]];\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-return java.awt.Color.white;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-} else {\r
-return java.awt.Color.white;\r
-}if (this.conservationColouring) {\r
-currentColour = this.applyConservation (currentColour, j);\r
-}return currentColour;\r
-}, "~S,~N");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.PurinePyrimidineColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz.declareType (jalview.schemes, "PurinePyrimidineColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.schemes.PurinePyrimidineColourScheme, [jalview.schemes.ResidueProperties.purinepyrimidineIndex, jalview.schemes.ResidueProperties.purinepyrimidine, 0]);
+});
+Clazz.defineMethod (c$, "findColour", 
+function (c) {
+return this.colors[jalview.schemes.ResidueProperties.purinepyrimidineIndex[c.charCodeAt (0)]];
+}, "~S");
+Clazz.defineMethod (c$, "findColour", 
+function (c, j) {
+var currentColour;
+if ((this.threshold == 0) || this.aboveThreshold (c, j)) {
+try {
+currentColour = this.colors[jalview.schemes.ResidueProperties.purinepyrimidineIndex[c.charCodeAt (0)]];
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+return java.awt.Color.white;
+} else {
+throw ex;
+}
+}
+} else {
+return java.awt.Color.white;
+}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N");
+});
index 5023c90..c7d3af2 100644 (file)
@@ -1,68 +1,68 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ResidueColourScheme", "java.util.Hashtable"], "jalview.schemes.RNAHelicesColour", ["jalview.schemes.ResidueProperties", "jalview.util.ColorUtils", "java.awt.Color"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.helixcolorhash = null;\r
-this.positionsToHelix = null;\r
-this.numHelix = 0;\r
-this.annotation = null;\r
-this.lastrefresh = -1;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "RNAHelicesColour", jalview.schemes.ResidueColourScheme);\r
-Clazz.prepareFields (c$, function () {\r
-this.helixcolorhash =  new java.util.Hashtable ();\r
-this.positionsToHelix =  new java.util.Hashtable ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (annotation) {\r
-Clazz.superConstructor (this, jalview.schemes.RNAHelicesColour, [jalview.schemes.ResidueProperties.nucleotideIndex]);\r
-this.annotation = annotation;\r
-this.refresh ();\r
-}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.makeConstructor (c$, \r
-function (alignment) {\r
-Clazz.superConstructor (this, jalview.schemes.RNAHelicesColour, [jalview.schemes.ResidueProperties.nucleotideIndex]);\r
-this.alignmentChanged (alignment, null);\r
-}, "jalview.datamodel.AnnotatedCollectionI");\r
-Clazz.overrideMethod (c$, "alignmentChanged", \r
-function (alignment, hiddenReps) {\r
-var annotations = alignment.getAlignmentAnnotation ();\r
-for (var i = 0; i < annotations.length; i++) {\r
-if (annotations[i].getRNAStruc () != null) {\r
-this.annotation = annotations[i];\r
-break;\r
-}}\r
-this.refresh ();\r
-}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");\r
-Clazz.defineMethod (c$, "refresh", \r
-function () {\r
-if (this.annotation != null && ((this.annotation._rnasecstr == null || this.lastrefresh != this.annotation._rnasecstr.hashCode ()) && this.annotation.isValidStruc ())) {\r
-this.annotation.getRNAStruc ();\r
-this.lastrefresh = this.annotation._rnasecstr.hashCode ();\r
-this.numHelix = 0;\r
-this.positionsToHelix =  new java.util.Hashtable ();\r
-for (var x = 0; x < this.annotation._rnasecstr.length; x++) {\r
-this.positionsToHelix.put (new Integer (this.annotation._rnasecstr[x].getBegin ()), this.annotation._rnasecstr[x].getFeatureGroup ());\r
-this.positionsToHelix.put (new Integer (this.annotation._rnasecstr[x].getEnd ()), this.annotation._rnasecstr[x].getFeatureGroup ());\r
-if (Integer.parseInt (this.annotation._rnasecstr[x].getFeatureGroup ()) > this.numHelix) {\r
-this.numHelix = Integer.parseInt (this.annotation._rnasecstr[x].getFeatureGroup ());\r
-}}\r
-for (var j = 0; j <= this.numHelix; j++) {\r
-if (!this.helixcolorhash.containsKey (Integer.toString (j))) {\r
-this.helixcolorhash.put (Integer.toString (j), jalview.util.ColorUtils.generateRandomColor (java.awt.Color.white));\r
-}}\r
-}});\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c) {\r
-return jalview.schemes.ResidueProperties.purinepyrimidine[jalview.schemes.ResidueProperties.purinepyrimidineIndex[c.charCodeAt (0)]];\r
-}, "~S");\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c, j, seq) {\r
-this.refresh ();\r
-var currentColour = java.awt.Color.white;\r
-var currentHelix = null;\r
-currentHelix = this.positionsToHelix.get (new Integer (j));\r
-if (currentHelix != null) {\r
-currentColour = this.helixcolorhash.get (currentHelix);\r
-}return currentColour;\r
-}, "~S,~N,jalview.datamodel.SequenceI");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ResidueColourScheme", "java.util.Hashtable"], "jalview.schemes.RNAHelicesColour", ["jalview.schemes.ResidueProperties", "jalview.util.ColorUtils", "java.awt.Color"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.helixcolorhash = null;
+this.positionsToHelix = null;
+this.numHelix = 0;
+this.annotation = null;
+this.lastrefresh = -1;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "RNAHelicesColour", jalview.schemes.ResidueColourScheme);
+Clazz.prepareFields (c$, function () {
+this.helixcolorhash =  new java.util.Hashtable ();
+this.positionsToHelix =  new java.util.Hashtable ();
+});
+Clazz.makeConstructor (c$, 
+function (annotation) {
+Clazz.superConstructor (this, jalview.schemes.RNAHelicesColour, [jalview.schemes.ResidueProperties.nucleotideIndex]);
+this.annotation = annotation;
+this.refresh ();
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.makeConstructor (c$, 
+function (alignment) {
+Clazz.superConstructor (this, jalview.schemes.RNAHelicesColour, [jalview.schemes.ResidueProperties.nucleotideIndex]);
+this.alignmentChanged (alignment, null);
+}, "jalview.datamodel.AnnotatedCollectionI");
+Clazz.overrideMethod (c$, "alignmentChanged", 
+function (alignment, hiddenReps) {
+var annotations = alignment.getAlignmentAnnotation ();
+for (var i = 0; i < annotations.length; i++) {
+if (annotations[i].getRNAStruc () != null) {
+this.annotation = annotations[i];
+break;
+}}
+this.refresh ();
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz.defineMethod (c$, "refresh", 
+function () {
+if (this.annotation != null && ((this.annotation._rnasecstr == null || this.lastrefresh != this.annotation._rnasecstr.hashCode ()) && this.annotation.isValidStruc ())) {
+this.annotation.getRNAStruc ();
+this.lastrefresh = this.annotation._rnasecstr.hashCode ();
+this.numHelix = 0;
+this.positionsToHelix =  new java.util.Hashtable ();
+for (var x = 0; x < this.annotation._rnasecstr.length; x++) {
+this.positionsToHelix.put (new Integer (this.annotation._rnasecstr[x].getBegin ()), this.annotation._rnasecstr[x].getFeatureGroup ());
+this.positionsToHelix.put (new Integer (this.annotation._rnasecstr[x].getEnd ()), this.annotation._rnasecstr[x].getFeatureGroup ());
+if (Integer.parseInt (this.annotation._rnasecstr[x].getFeatureGroup ()) > this.numHelix) {
+this.numHelix = Integer.parseInt (this.annotation._rnasecstr[x].getFeatureGroup ());
+}}
+for (var j = 0; j <= this.numHelix; j++) {
+if (!this.helixcolorhash.containsKey (Integer.toString (j))) {
+this.helixcolorhash.put (Integer.toString (j), jalview.util.ColorUtils.generateRandomColor (java.awt.Color.white));
+}}
+}});
+Clazz.defineMethod (c$, "findColour", 
+function (c) {
+return jalview.schemes.ResidueProperties.purinepyrimidine[jalview.schemes.ResidueProperties.purinepyrimidineIndex[c.charCodeAt (0)]];
+}, "~S");
+Clazz.defineMethod (c$, "findColour", 
+function (c, j, seq) {
+this.refresh ();
+var currentColour = java.awt.Color.white;
+var currentHelix = null;
+currentHelix = this.positionsToHelix.get (new Integer (j));
+if (currentHelix != null) {
+currentColour = this.helixcolorhash.get (currentHelix);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+});
index 27a0f25..0d9cf26 100644 (file)
@@ -1,63 +1,63 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (null, "jalview.schemes.RNAHelicesColourChooser", ["jalview.schemes.RNAHelicesColour", "java.util.Hashtable", "$.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.av = null;\r
-this.ap = null;\r
-this.oldcs = null;\r
-this.oldgroupColours = null;\r
-this.currentAnnotation = null;\r
-this.adjusting = false;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "RNAHelicesColourChooser");\r
-Clazz.makeConstructor (c$, \r
-function (av, ap) {\r
-this.oldcs = av.getGlobalColourScheme ();\r
-if (av.getAlignment ().getGroups () != null) {\r
-this.oldgroupColours =  new java.util.Hashtable ();\r
-for (var sg, $sg = ap.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-if (sg.cs != null) {\r
-this.oldgroupColours.put (sg, sg.cs);\r
-}}\r
-}this.av = av;\r
-this.ap = ap;\r
-if (Clazz.instanceOf (this.oldcs, jalview.schemes.RNAHelicesColour)) {\r
-var rhc = this.oldcs;\r
-}this.adjusting = true;\r
-var list =  new java.util.Vector ();\r
-var index = 1;\r
-for (var i = 0; i < av.getAlignment ().getAlignmentAnnotation ().length; i++) {\r
-var label = av.getAlignment ().getAlignmentAnnotation ()[i].label;\r
-if (!list.contains (label)) list.addElement (label);\r
- else list.addElement (label + "_" + (index++));\r
-}\r
-this.adjusting = false;\r
-this.changeColour ();\r
-}, "jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");\r
-Clazz.defineMethod (c$, "changeColour", \r
-function () {\r
-if (this.adjusting) {\r
-return;\r
-}var rhc = null;\r
-rhc =  new jalview.schemes.RNAHelicesColour (this.av.getAlignment ());\r
-this.av.setGlobalColourScheme (rhc);\r
-if (this.av.getAlignment ().getGroups () != null) {\r
-for (var sg, $sg = this.ap.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-if (sg.cs == null) {\r
-continue;\r
-}sg.cs =  new jalview.schemes.RNAHelicesColour (sg);\r
-}\r
-}this.ap.paintAlignment (false);\r
-});\r
-Clazz.defineMethod (c$, "reset", \r
-function () {\r
-this.av.setGlobalColourScheme (this.oldcs);\r
-if (this.av.getAlignment ().getGroups () != null) {\r
-for (var sg, $sg = this.ap.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-sg.cs = this.oldgroupColours.get (sg);\r
-}\r
-}});\r
-Clazz.defineMethod (c$, "annotations_actionPerformed", \r
-function (e) {\r
-this.changeColour ();\r
-}, "java.awt.event.ActionEvent");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (null, "jalview.schemes.RNAHelicesColourChooser", ["jalview.schemes.RNAHelicesColour", "java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.av = null;
+this.ap = null;
+this.oldcs = null;
+this.oldgroupColours = null;
+this.currentAnnotation = null;
+this.adjusting = false;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "RNAHelicesColourChooser");
+Clazz.makeConstructor (c$, 
+function (av, ap) {
+this.oldcs = av.getGlobalColourScheme ();
+if (av.getAlignment ().getGroups () != null) {
+this.oldgroupColours =  new java.util.Hashtable ();
+for (var sg, $sg = ap.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.cs != null) {
+this.oldgroupColours.put (sg, sg.cs);
+}}
+}this.av = av;
+this.ap = ap;
+if (Clazz.instanceOf (this.oldcs, jalview.schemes.RNAHelicesColour)) {
+var rhc = this.oldcs;
+}this.adjusting = true;
+var list =  new java.util.Vector ();
+var index = 1;
+for (var i = 0; i < av.getAlignment ().getAlignmentAnnotation ().length; i++) {
+var label = av.getAlignment ().getAlignmentAnnotation ()[i].label;
+if (!list.contains (label)) list.addElement (label);
+ else list.addElement (label + "_" + (index++));
+}
+this.adjusting = false;
+this.changeColour ();
+}, "jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");
+Clazz.defineMethod (c$, "changeColour", 
+function () {
+if (this.adjusting) {
+return;
+}var rhc = null;
+rhc =  new jalview.schemes.RNAHelicesColour (this.av.getAlignment ());
+this.av.setGlobalColourScheme (rhc);
+if (this.av.getAlignment ().getGroups () != null) {
+for (var sg, $sg = this.ap.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.cs == null) {
+continue;
+}sg.cs =  new jalview.schemes.RNAHelicesColour (sg);
+}
+}this.ap.paintAlignment (false);
+});
+Clazz.defineMethod (c$, "reset", 
+function () {
+this.av.setGlobalColourScheme (this.oldcs);
+if (this.av.getAlignment ().getGroups () != null) {
+for (var sg, $sg = this.ap.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+sg.cs = this.oldgroupColours.get (sg);
+}
+}});
+Clazz.defineMethod (c$, "annotations_actionPerformed", 
+function (e) {
+this.changeColour ();
+}, "java.awt.event.ActionEvent");
+});
index 9c2e946..6935253 100644 (file)
@@ -1,27 +1,27 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.RNAInteractionColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {\r
-c$ = Clazz.declareType (jalview.schemes, "RNAInteractionColourScheme", jalview.schemes.ResidueColourScheme);\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c) {\r
-return this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)]];\r
-}, "~S");\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c, j, seq) {\r
-var currentColour;\r
-if ((this.threshold == 0) || this.aboveThreshold (c, j)) {\r
-try {\r
-currentColour = this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)]];\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-return java.awt.Color.white;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-} else {\r
-return java.awt.Color.white;\r
-}if (this.conservationColouring) {\r
-currentColour = this.applyConservation (currentColour, j);\r
-}return currentColour;\r
-}, "~S,~N,jalview.datamodel.SequenceI");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.RNAInteractionColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz.declareType (jalview.schemes, "RNAInteractionColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz.defineMethod (c$, "findColour", 
+function (c) {
+return this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)]];
+}, "~S");
+Clazz.defineMethod (c$, "findColour", 
+function (c, j, seq) {
+var currentColour;
+if ((this.threshold == 0) || this.aboveThreshold (c, j)) {
+try {
+currentColour = this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)]];
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+return java.awt.Color.white;
+} else {
+throw ex;
+}
+}
+} else {
+return java.awt.Color.white;
+}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+});
index aaf6ef5..9b2382f 100644 (file)
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ColourSchemeI"], "jalview.schemes.ResidueColourScheme", ["jalview.util.Comparison", "$.MessageManager", "java.awt.Color", "java.lang.Error"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.symbolIndex = null;\r
-this.conservationColouring = false;\r
-this.colors = null;\r
-this.threshold = 0;\r
-this.ignoreGaps = "G";\r
-this.consensus = null;\r
-this.conservation = null;\r
-this.conservationLength = 0;\r
-this.inc = 30;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "ResidueColourScheme", null, jalview.schemes.ColourSchemeI);\r
-Clazz.makeConstructor (c$, \r
-function (aaOrnaIndex, colours, threshold) {\r
-this.symbolIndex = aaOrnaIndex;\r
-this.colors = colours;\r
-this.threshold = threshold;\r
-}, "~A,~A,~N");\r
-Clazz.makeConstructor (c$, \r
-function (aaOrNaIndex) {\r
-this.symbolIndex = aaOrNaIndex;\r
-}, "~A");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.symbolIndex = null;\r
-});\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c) {\r
-return this.colors == null ? java.awt.Color.white : this.colors[this.symbolIndex[c.charCodeAt (0)]];\r
-}, "~S");\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c, j, seq) {\r
-var currentColour;\r
-if (this.colors != null && this.symbolIndex != null && (this.threshold == 0) || this.aboveThreshold (c, j)) {\r
-currentColour = this.colors[this.symbolIndex[c.charCodeAt (0)]];\r
-} else {\r
-currentColour = java.awt.Color.white;\r
-}if (this.conservationColouring) {\r
-currentColour = this.applyConservation (currentColour, j);\r
-}return currentColour;\r
-}, "~S,~N,jalview.datamodel.SequenceI");\r
-Clazz.overrideMethod (c$, "getThreshold", \r
-function () {\r
-return this.threshold;\r
-});\r
-Clazz.overrideMethod (c$, "setThreshold", \r
-function (ct, ignoreGaps) {\r
-this.threshold = ct;\r
-if (ignoreGaps) {\r
-this.ignoreGaps = "N";\r
-} else {\r
-this.ignoreGaps = "G";\r
-}}, "~N,~B");\r
-Clazz.defineMethod (c$, "aboveThreshold", \r
-function (c, j) {\r
-if ('a' <= c && c <= 'z') {\r
-c = String.fromCharCode (c.charCodeAt (0) - (32));\r
-}if (this.consensus == null || this.consensus.length < j || this.consensus[j] == null) {\r
-return false;\r
-}if (((this.consensus[j].get ("C")).intValue () != -1) && this.consensus[j].contains (String.valueOf (c))) {\r
-if ((this.consensus[j].get (this.ignoreGaps)).floatValue () >= this.threshold) {\r
-return true;\r
-}}return false;\r
-}, "~S,~N");\r
-Clazz.overrideMethod (c$, "conservationApplied", \r
-function () {\r
-return this.conservationColouring;\r
-});\r
-Clazz.overrideMethod (c$, "setConservationApplied", \r
-function (conservationApplied) {\r
-this.conservationColouring = conservationApplied;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setConservationInc", \r
-function (i) {\r
-this.inc = i;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "getConservationInc", \r
-function () {\r
-return this.inc;\r
-});\r
-Clazz.overrideMethod (c$, "setConsensus", \r
-function (consensus) {\r
-if (consensus == null) {\r
-return;\r
-}this.consensus = consensus;\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "setConservation", \r
-function (cons) {\r
-if (cons == null) {\r
-this.conservationColouring = false;\r
-this.conservation = null;\r
-} else {\r
-this.conservationColouring = true;\r
-var i;\r
-var iSize = cons.getConsSequence ().getLength ();\r
-this.conservation =  Clazz.newCharArray (iSize, '\0');\r
-for (i = 0; i < iSize; i++) {\r
-this.conservation[i] = cons.getConsSequence ().getCharAt (i);\r
-}\r
-this.conservationLength = this.conservation.length;\r
-}}, "jalview.analysis.Conservation");\r
-Clazz.defineMethod (c$, "applyConservation", \r
-function (currentColour, i) {\r
-if ((this.conservationLength > i) && (this.conservation[i] != '*') && (this.conservation[i] != '+')) {\r
-if (jalview.util.Comparison.isGap (this.conservation[i])) {\r
-currentColour = java.awt.Color.white;\r
-} else {\r
-var t = 11 - ((this.conservation[i]).charCodeAt (0) - 48);\r
-if (t == 0) {\r
-return java.awt.Color.white;\r
-}var red = currentColour.getRed ();\r
-var green = currentColour.getGreen ();\r
-var blue = currentColour.getBlue ();\r
-var dr = 255 - red;\r
-var dg = 255 - green;\r
-var db = 255 - blue;\r
-dr *= t / 10;\r
-dg *= t / 10;\r
-db *= t / 10;\r
-red += (this.inc / 20) * dr;\r
-green += (this.inc / 20) * dg;\r
-blue += (this.inc / 20) * db;\r
-if (red > 255 || green > 255 || blue > 255) {\r
-currentColour = java.awt.Color.white;\r
-} else {\r
-currentColour =  new java.awt.Color (red, green, blue);\r
-}}}return currentColour;\r
-}, "java.awt.Color,~N");\r
-Clazz.overrideMethod (c$, "alignmentChanged", \r
-function (alignment, hiddenReps) {\r
-}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");\r
-Clazz.overrideMethod (c$, "applyTo", \r
-function (sg, hiddenRepSequences) {\r
-try {\r
-return this.getClass ().newInstance ();\r
-} catch (q) {\r
-if (Clazz.exceptionOf (q, Exception)) {\r
-throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_cannot_duplicate_colour_scheme",  Clazz.newArray (-1, [this.getClass ().getName ()])), q);\r
-} else {\r
-throw q;\r
-}\r
-}\r
-}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ColourSchemeI"], "jalview.schemes.ResidueColourScheme", ["jalview.util.Comparison", "$.MessageManager", "java.awt.Color", "java.lang.Error"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.symbolIndex = null;
+this.conservationColouring = false;
+this.colors = null;
+this.threshold = 0;
+this.ignoreGaps = "G";
+this.consensus = null;
+this.conservation = null;
+this.conservationLength = 0;
+this.inc = 30;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "ResidueColourScheme", null, jalview.schemes.ColourSchemeI);
+Clazz.makeConstructor (c$, 
+function (aaOrnaIndex, colours, threshold) {
+this.symbolIndex = aaOrnaIndex;
+this.colors = colours;
+this.threshold = threshold;
+}, "~A,~A,~N");
+Clazz.makeConstructor (c$, 
+function (aaOrNaIndex) {
+this.symbolIndex = aaOrNaIndex;
+}, "~A");
+Clazz.makeConstructor (c$, 
+function () {
+this.symbolIndex = null;
+});
+Clazz.defineMethod (c$, "findColour", 
+function (c) {
+return this.colors == null ? java.awt.Color.white : this.colors[this.symbolIndex[c.charCodeAt (0)]];
+}, "~S");
+Clazz.defineMethod (c$, "findColour", 
+function (c, j, seq) {
+var currentColour;
+if (this.colors != null && this.symbolIndex != null && (this.threshold == 0) || this.aboveThreshold (c, j)) {
+currentColour = this.colors[this.symbolIndex[c.charCodeAt (0)]];
+} else {
+currentColour = java.awt.Color.white;
+}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "getThreshold", 
+function () {
+return this.threshold;
+});
+Clazz.overrideMethod (c$, "setThreshold", 
+function (ct, ignoreGaps) {
+this.threshold = ct;
+if (ignoreGaps) {
+this.ignoreGaps = "N";
+} else {
+this.ignoreGaps = "G";
+}}, "~N,~B");
+Clazz.defineMethod (c$, "aboveThreshold", 
+function (c, j) {
+if ('a' <= c && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) - (32));
+}if (this.consensus == null || this.consensus.length < j || this.consensus[j] == null) {
+return false;
+}if (((this.consensus[j].get ("C")).intValue () != -1) && this.consensus[j].contains (String.valueOf (c))) {
+if ((this.consensus[j].get (this.ignoreGaps)).floatValue () >= this.threshold) {
+return true;
+}}return false;
+}, "~S,~N");
+Clazz.overrideMethod (c$, "conservationApplied", 
+function () {
+return this.conservationColouring;
+});
+Clazz.overrideMethod (c$, "setConservationApplied", 
+function (conservationApplied) {
+this.conservationColouring = conservationApplied;
+}, "~B");
+Clazz.overrideMethod (c$, "setConservationInc", 
+function (i) {
+this.inc = i;
+}, "~N");
+Clazz.overrideMethod (c$, "getConservationInc", 
+function () {
+return this.inc;
+});
+Clazz.overrideMethod (c$, "setConsensus", 
+function (consensus) {
+if (consensus == null) {
+return;
+}this.consensus = consensus;
+}, "~A");
+Clazz.overrideMethod (c$, "setConservation", 
+function (cons) {
+if (cons == null) {
+this.conservationColouring = false;
+this.conservation = null;
+} else {
+this.conservationColouring = true;
+var i;
+var iSize = cons.getConsSequence ().getLength ();
+this.conservation =  Clazz.newCharArray (iSize, '\0');
+for (i = 0; i < iSize; i++) {
+this.conservation[i] = cons.getConsSequence ().getCharAt (i);
+}
+this.conservationLength = this.conservation.length;
+}}, "jalview.analysis.Conservation");
+Clazz.defineMethod (c$, "applyConservation", 
+function (currentColour, i) {
+if ((this.conservationLength > i) && (this.conservation[i] != '*') && (this.conservation[i] != '+')) {
+if (jalview.util.Comparison.isGap (this.conservation[i])) {
+currentColour = java.awt.Color.white;
+} else {
+var t = 11 - ((this.conservation[i]).charCodeAt (0) - 48);
+if (t == 0) {
+return java.awt.Color.white;
+}var red = currentColour.getRed ();
+var green = currentColour.getGreen ();
+var blue = currentColour.getBlue ();
+var dr = 255 - red;
+var dg = 255 - green;
+var db = 255 - blue;
+dr *= t / 10;
+dg *= t / 10;
+db *= t / 10;
+red += (this.inc / 20) * dr;
+green += (this.inc / 20) * dg;
+blue += (this.inc / 20) * db;
+if (red > 255 || green > 255 || blue > 255) {
+currentColour = java.awt.Color.white;
+} else {
+currentColour =  new java.awt.Color (red, green, blue);
+}}}return currentColour;
+}, "java.awt.Color,~N");
+Clazz.overrideMethod (c$, "alignmentChanged", 
+function (alignment, hiddenReps) {
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz.overrideMethod (c$, "applyTo", 
+function (sg, hiddenRepSequences) {
+try {
+return this.getClass ().newInstance ();
+} catch (q) {
+if (Clazz.exceptionOf (q, Exception)) {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_cannot_duplicate_colour_scheme",  Clazz.newArray (-1, [this.getClass ().getName ()])), q);
+} else {
+throw q;
+}
+}
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+});
index c98cf35..539dcc8 100644 (file)
Binary files a/bin/jalview/schemes/ResidueProperties.class and b/bin/jalview/schemes/ResidueProperties.class differ
index 612edb4..2a81845 100644 (file)
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.analysis.scoremodels.FeatureScoreModel", "$.PIDScoreModel", "jalview.schemes.ScoreMatrix", "java.awt.Color", "java.util.ArrayList", "$.HashMap", "$.Hashtable", "$.Vector"], "jalview.schemes.ResidueProperties", ["java.lang.StringBuffer"], function () {\r
-c$ = Clazz.declareType (jalview.schemes, "ResidueProperties");\r
-c$.buildAmbiguityCodonSet = Clazz.defineMethod (c$, "buildAmbiguityCodonSet", \r
-function () {\r
-if (jalview.schemes.ResidueProperties._ambiguityCodes.size () > 0) {\r
-System.err.println ("Ignoring multiple calls to buildAmbiguityCodonSet");\r
-return;\r
-}for (var acode, $acode = jalview.schemes.ResidueProperties.ambiguityCodes.entrySet ().iterator (); $acode.hasNext () && ((acode = $acode.next ()) || true);) {\r
-for (var r, $r = 0, $$r = acode.getValue (); $r < $$r.length && ((r = $$r[$r]) || true); $r++) {\r
-var codesfor = jalview.schemes.ResidueProperties._ambiguityCodes.get (r);\r
-if (codesfor == null) {\r
-jalview.schemes.ResidueProperties._ambiguityCodes.put (r, codesfor =  new java.util.ArrayList ());\r
-}if (!codesfor.contains (acode.getKey ())) {\r
-codesfor.add (acode.getKey ());\r
-} else {\r
-System.err.println ("Inconsistency in the IUBMB ambiguity code nomenclature table: collision for " + acode.getKey () + " in residue " + r);\r
-}}\r
-}\r
-var unambcodons = jalview.schemes.ResidueProperties.codonHash2.keySet ().toArray ( new Array (jalview.schemes.ResidueProperties.codonHash2.size ()));\r
-for (var codon, $codon = 0, $$codon = unambcodons; $codon < $$codon.length && ((codon = $$codon[$codon]) || true); $codon++) {\r
-var residue = jalview.schemes.ResidueProperties.codonHash2.get (codon);\r
-var acodon =  new Array (codon.length);\r
-for (var i = 0, iSize = codon.length; i < iSize; i++) {\r
-var _ac = "" + codon.charAt (i);\r
-var acodes = jalview.schemes.ResidueProperties._ambiguityCodes.get (_ac);\r
-if (acodes != null) {\r
-acodon[i] = acodes.toArray ( new Array (acodes.size ()));\r
-} else {\r
-acodon[i] =  Clazz.newArray (-1, []);\r
-}}\r
-var tpos =  Clazz.newIntArray (codon.length, 0);\r
-var cpos =  Clazz.newIntArray (codon.length, 0);\r
-for (var i = 0; i < tpos.length; i++) {\r
-tpos[i] = -1;\r
-}\r
-tpos[acodon.length - 1] = 0;\r
-var ipos;\r
-var j;\r
-while (tpos[0] < acodon[0].length) {\r
-var allres =  Clazz.newCharArray (tpos.length, '\0');\r
-var _acodon = "";\r
-var _anuc;\r
-for (ipos = 0; ipos < tpos.length; ipos++) {\r
-if (acodon[ipos].length == 0 || tpos[ipos] < 0) {\r
-_acodon += codon.charAt (ipos);\r
-allres[ipos] =  Clazz.newCharArray (-1, [codon.charAt (ipos)]);\r
-} else {\r
-_acodon += acodon[ipos][tpos[ipos]];\r
-var altbase = jalview.schemes.ResidueProperties.ambiguityCodes.get (acodon[ipos][tpos[ipos]]);\r
-allres[ipos] =  Clazz.newCharArray (altbase.length, '\0');\r
-j = 0;\r
-for (var ab, $ab = 0, $$ab = altbase; $ab < $$ab.length && ((ab = $$ab[$ab]) || true); $ab++) {\r
-allres[ipos][j++] = ab.charAt (0);\r
-}\r
-}}\r
-for (ipos = 0; ipos < cpos.length; ipos++) {\r
-cpos[ipos] = 0;\r
-}\r
-var valid = true;\r
-do {\r
-var _codon = "";\r
-for (j = 0; j < cpos.length; j++) {\r
-_codon += allres[j][cpos[j]];\r
-}\r
-var tr = jalview.schemes.ResidueProperties.codonHash2.get (_codon);\r
-if (valid = (tr != null && tr.equals (residue))) {\r
-ipos = acodon.length - 1;\r
-while (++cpos[ipos] >= allres[ipos].length && ipos > 0) {\r
-cpos[ipos] = 0;\r
-ipos--;\r
-}\r
-}} while (valid && cpos[0] < allres[0].length);\r
-if (valid) {\r
-jalview.schemes.ResidueProperties.codonHash2.put (_acodon, residue);\r
-} else {\r
-}ipos = acodon.length - 1;\r
-while (++tpos[ipos] >= acodon[ipos].length && ipos > 0) {\r
-tpos[ipos] = -1;\r
-ipos--;\r
-}\r
-}\r
-}\r
-});\r
-c$.getHydmax = Clazz.defineMethod (c$, "getHydmax", \r
-function () {\r
-return 4.5;\r
-});\r
-c$.getHydmin = Clazz.defineMethod (c$, "getHydmin", \r
-function () {\r
-return -3.9;\r
-});\r
-c$.getHyd = Clazz.defineMethod (c$, "getHyd", \r
-function () {\r
-return jalview.schemes.ResidueProperties.hyd;\r
-});\r
-c$.getAA3Hash = Clazz.defineMethod (c$, "getAA3Hash", \r
-function () {\r
-return jalview.schemes.ResidueProperties.aa3Hash;\r
-});\r
-c$.getDNA = Clazz.defineMethod (c$, "getDNA", \r
-function () {\r
-return jalview.schemes.ResidueProperties.DNA;\r
-});\r
-c$.getBLOSUM62 = Clazz.defineMethod (c$, "getBLOSUM62", \r
-function () {\r
-return jalview.schemes.ResidueProperties.BLOSUM62;\r
-});\r
-c$.getPAM250 = Clazz.defineMethod (c$, "getPAM250", \r
-function (A1, A2) {\r
-return jalview.schemes.ResidueProperties.getPAM250 (A1.charAt (0), A2.charAt (0));\r
-}, "~S,~S");\r
-c$.getBLOSUM62 = Clazz.defineMethod (c$, "getBLOSUM62", \r
-function (c1, c2) {\r
-var pog = 0;\r
-try {\r
-var a = jalview.schemes.ResidueProperties.aaIndex[c1.charCodeAt (0)];\r
-var b = jalview.schemes.ResidueProperties.aaIndex[c2.charCodeAt (0)];\r
-pog = jalview.schemes.ResidueProperties.BLOSUM62[a][b];\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return pog;\r
-}, "~S,~S");\r
-c$.getCodons = Clazz.defineMethod (c$, "getCodons", \r
-function (res) {\r
-if (jalview.schemes.ResidueProperties.codonHash.containsKey (res)) {\r
-return jalview.schemes.ResidueProperties.codonHash.get (res);\r
-}return null;\r
-}, "~S");\r
-c$.codonTranslate = Clazz.defineMethod (c$, "codonTranslate", \r
-function (lccodon) {\r
-if (false) {\r
-return jalview.schemes.ResidueProperties._codonTranslate (lccodon);\r
-}var cdn = jalview.schemes.ResidueProperties.codonHash2.get (lccodon.toUpperCase ());\r
-if (cdn != null && cdn.equals ("*")) {\r
-return "STOP";\r
-}return cdn;\r
-}, "~S");\r
-c$._codonTranslate = Clazz.defineMethod (c$, "_codonTranslate", \r
-function (lccodon) {\r
-var codon = lccodon.toUpperCase ();\r
-if (codon.indexOf ('X') > -1 || codon.indexOf ('N') > -1) {\r
-return "X";\r
-}for (var key, $key = jalview.schemes.ResidueProperties.codonHash.keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) {\r
-if (jalview.schemes.ResidueProperties.codonHash.get (key).contains (codon)) {\r
-return key;\r
-}}\r
-return null;\r
-}, "~S");\r
-c$.getDefaultPeptideMatrix = Clazz.defineMethod (c$, "getDefaultPeptideMatrix", \r
-function () {\r
-return jalview.schemes.ResidueProperties.getBLOSUM62 ();\r
-});\r
-c$.getDefaultDnaMatrix = Clazz.defineMethod (c$, "getDefaultDnaMatrix", \r
-function () {\r
-return jalview.schemes.ResidueProperties.getDNA ();\r
-});\r
-c$.getScoreMatrix = Clazz.defineMethod (c$, "getScoreMatrix", \r
-function (pwtype) {\r
-var val = jalview.schemes.ResidueProperties.scoreMatrices.get (pwtype);\r
-if (val != null && Clazz.instanceOf (val, jalview.schemes.ScoreMatrix)) {\r
-return val;\r
-}return null;\r
-}, "~S");\r
-c$.getScoreModel = Clazz.defineMethod (c$, "getScoreModel", \r
-function (pwtype) {\r
-return jalview.schemes.ResidueProperties.scoreMatrices.get (pwtype);\r
-}, "~S");\r
-c$.getPAM250 = Clazz.defineMethod (c$, "getPAM250", \r
-function (c, d) {\r
-var a = jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)];\r
-var b = jalview.schemes.ResidueProperties.aaIndex[d.charCodeAt (0)];\r
-var pog = jalview.schemes.ResidueProperties.PAM250[a][b];\r
-return pog;\r
-}, "~S,~S");\r
-c$.getDssp3state = Clazz.defineMethod (c$, "getDssp3state", \r
-function (ssstring) {\r
-if (ssstring == null) {\r
-return null;\r
-}var ss =  new StringBuffer ();\r
-for (var i = 0; i < ssstring.length; i++) {\r
-var ssc = ssstring.substring (i, i + 1);\r
-if (jalview.schemes.ResidueProperties.toDssp3State.containsKey (ssc)) {\r
-ss.append (jalview.schemes.ResidueProperties.toDssp3State.get (ssc));\r
-} else {\r
-ss.append (" ");\r
-}}\r
-return ss.toString ();\r
-}, "~S");\r
-c$.getRNASecStrucState = Clazz.defineMethod (c$, "getRNASecStrucState", \r
-function (ssstring) {\r
-if (ssstring == null) {\r
-return null;\r
-}var ss =  new StringBuffer ();\r
-for (var i = 0; i < ssstring.length; i++) {\r
-var ssc = ssstring.substring (i, i + 1);\r
-if (jalview.schemes.ResidueProperties.toRNAssState.containsKey (ssc)) {\r
-ss.append (ssc);\r
-} else {\r
-ss.append (" ");\r
-}}\r
-return ss.toString ();\r
-}, "~S");\r
-c$.isCloseParenRNA = Clazz.defineMethod (c$, "isCloseParenRNA", \r
-function (dc) {\r
-return jalview.schemes.ResidueProperties.RNAcloseParen[dc.charCodeAt (0)];\r
-}, "~S");\r
-c$.getResidues = Clazz.defineMethod (c$, "getResidues", \r
-function (nucleotide, includeAmbiguous) {\r
-var result =  new java.util.ArrayList ();\r
-if (nucleotide) {\r
-for (var nuc, $nuc = jalview.schemes.ResidueProperties.nucleotideName.keySet ().iterator (); $nuc.hasNext () && ((nuc = $nuc.next ()) || true);) {\r
-var val = jalview.schemes.ResidueProperties.nucleotideIndex[nuc.charCodeAt (0)];\r
-if ((!includeAmbiguous && val > 4) || (val >= 10)) {\r
-continue;\r
-}nuc = nuc.toUpperCase ();\r
-if (!result.contains (nuc)) {\r
-result.add (nuc);\r
-}}\r
-} else {\r
-for (var res, $res = jalview.schemes.ResidueProperties.aa3Hash.keySet ().iterator (); $res.hasNext () && ((res = $res.next ()) || true);) {\r
-var index = jalview.schemes.ResidueProperties.aa3Hash.get (res).intValue ();\r
-if ((!includeAmbiguous && index >= 20) || index >= 23) {\r
-continue;\r
-}res = res.toUpperCase ();\r
-if (!result.contains (res)) {\r
-result.add (res);\r
-}}\r
-}return result;\r
-}, "~B,~B");\r
-c$.scoreMatrices = c$.prototype.scoreMatrices =  new java.util.Hashtable ();\r
-Clazz.defineStatics (c$,\r
-"aaIndex", null,\r
-"nucleotideIndex", null,\r
-"purinepyrimidineIndex", null);\r
-c$.aa3Hash = c$.prototype.aa3Hash =  new java.util.HashMap ();\r
-c$.aa2Triplet = c$.prototype.aa2Triplet =  new java.util.HashMap ();\r
-c$.nucleotideName = c$.prototype.nucleotideName =  new java.util.HashMap ();\r
-{\r
-jalview.schemes.ResidueProperties.aaIndex =  Clazz.newIntArray (255, 0);\r
-for (var i = 0; i < 255; i++) {\r
-jalview.schemes.ResidueProperties.aaIndex[i] = 23;\r
-}\r
-jalview.schemes.ResidueProperties.aaIndex['A'.charCodeAt (0)] = 0;\r
-jalview.schemes.ResidueProperties.aaIndex['R'.charCodeAt (0)] = 1;\r
-jalview.schemes.ResidueProperties.aaIndex['N'.charCodeAt (0)] = 2;\r
-jalview.schemes.ResidueProperties.aaIndex['D'.charCodeAt (0)] = 3;\r
-jalview.schemes.ResidueProperties.aaIndex['C'.charCodeAt (0)] = 4;\r
-jalview.schemes.ResidueProperties.aaIndex['Q'.charCodeAt (0)] = 5;\r
-jalview.schemes.ResidueProperties.aaIndex['E'.charCodeAt (0)] = 6;\r
-jalview.schemes.ResidueProperties.aaIndex['G'.charCodeAt (0)] = 7;\r
-jalview.schemes.ResidueProperties.aaIndex['H'.charCodeAt (0)] = 8;\r
-jalview.schemes.ResidueProperties.aaIndex['I'.charCodeAt (0)] = 9;\r
-jalview.schemes.ResidueProperties.aaIndex['L'.charCodeAt (0)] = 10;\r
-jalview.schemes.ResidueProperties.aaIndex['K'.charCodeAt (0)] = 11;\r
-jalview.schemes.ResidueProperties.aaIndex['M'.charCodeAt (0)] = 12;\r
-jalview.schemes.ResidueProperties.aaIndex['F'.charCodeAt (0)] = 13;\r
-jalview.schemes.ResidueProperties.aaIndex['P'.charCodeAt (0)] = 14;\r
-jalview.schemes.ResidueProperties.aaIndex['S'.charCodeAt (0)] = 15;\r
-jalview.schemes.ResidueProperties.aaIndex['T'.charCodeAt (0)] = 16;\r
-jalview.schemes.ResidueProperties.aaIndex['W'.charCodeAt (0)] = 17;\r
-jalview.schemes.ResidueProperties.aaIndex['Y'.charCodeAt (0)] = 18;\r
-jalview.schemes.ResidueProperties.aaIndex['V'.charCodeAt (0)] = 19;\r
-jalview.schemes.ResidueProperties.aaIndex['B'.charCodeAt (0)] = 20;\r
-jalview.schemes.ResidueProperties.aaIndex['Z'.charCodeAt (0)] = 21;\r
-jalview.schemes.ResidueProperties.aaIndex['X'.charCodeAt (0)] = 22;\r
-jalview.schemes.ResidueProperties.aaIndex['U'.charCodeAt (0)] = 22;\r
-jalview.schemes.ResidueProperties.aaIndex['a'.charCodeAt (0)] = 0;\r
-jalview.schemes.ResidueProperties.aaIndex['r'.charCodeAt (0)] = 1;\r
-jalview.schemes.ResidueProperties.aaIndex['n'.charCodeAt (0)] = 2;\r
-jalview.schemes.ResidueProperties.aaIndex['d'.charCodeAt (0)] = 3;\r
-jalview.schemes.ResidueProperties.aaIndex['c'.charCodeAt (0)] = 4;\r
-jalview.schemes.ResidueProperties.aaIndex['q'.charCodeAt (0)] = 5;\r
-jalview.schemes.ResidueProperties.aaIndex['e'.charCodeAt (0)] = 6;\r
-jalview.schemes.ResidueProperties.aaIndex['g'.charCodeAt (0)] = 7;\r
-jalview.schemes.ResidueProperties.aaIndex['h'.charCodeAt (0)] = 8;\r
-jalview.schemes.ResidueProperties.aaIndex['i'.charCodeAt (0)] = 9;\r
-jalview.schemes.ResidueProperties.aaIndex['l'.charCodeAt (0)] = 10;\r
-jalview.schemes.ResidueProperties.aaIndex['k'.charCodeAt (0)] = 11;\r
-jalview.schemes.ResidueProperties.aaIndex['m'.charCodeAt (0)] = 12;\r
-jalview.schemes.ResidueProperties.aaIndex['f'.charCodeAt (0)] = 13;\r
-jalview.schemes.ResidueProperties.aaIndex['p'.charCodeAt (0)] = 14;\r
-jalview.schemes.ResidueProperties.aaIndex['s'.charCodeAt (0)] = 15;\r
-jalview.schemes.ResidueProperties.aaIndex['t'.charCodeAt (0)] = 16;\r
-jalview.schemes.ResidueProperties.aaIndex['w'.charCodeAt (0)] = 17;\r
-jalview.schemes.ResidueProperties.aaIndex['y'.charCodeAt (0)] = 18;\r
-jalview.schemes.ResidueProperties.aaIndex['v'.charCodeAt (0)] = 19;\r
-jalview.schemes.ResidueProperties.aaIndex['b'.charCodeAt (0)] = 20;\r
-jalview.schemes.ResidueProperties.aaIndex['z'.charCodeAt (0)] = 21;\r
-jalview.schemes.ResidueProperties.aaIndex['x'.charCodeAt (0)] = 22;\r
-jalview.schemes.ResidueProperties.aaIndex['u'.charCodeAt (0)] = 22;\r
-}Clazz.defineStatics (c$,\r
-"maxProteinIndex", 23,\r
-"maxNucleotideIndex", 10);\r
-{\r
-jalview.schemes.ResidueProperties.nucleotideIndex =  Clazz.newIntArray (255, 0);\r
-for (var i = 0; i < 255; i++) {\r
-jalview.schemes.ResidueProperties.nucleotideIndex[i] = 10;\r
-}\r
-jalview.schemes.ResidueProperties.nucleotideIndex['A'.charCodeAt (0)] = 0;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['a'.charCodeAt (0)] = 0;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['C'.charCodeAt (0)] = 1;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['c'.charCodeAt (0)] = 1;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['G'.charCodeAt (0)] = 2;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['g'.charCodeAt (0)] = 2;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['T'.charCodeAt (0)] = 3;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['t'.charCodeAt (0)] = 3;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['U'.charCodeAt (0)] = 4;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['u'.charCodeAt (0)] = 4;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['I'.charCodeAt (0)] = 5;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['i'.charCodeAt (0)] = 5;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['X'.charCodeAt (0)] = 6;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['x'.charCodeAt (0)] = 6;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['R'.charCodeAt (0)] = 7;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['r'.charCodeAt (0)] = 7;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['Y'.charCodeAt (0)] = 8;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['y'.charCodeAt (0)] = 8;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['N'.charCodeAt (0)] = 9;\r
-jalview.schemes.ResidueProperties.nucleotideIndex['n'.charCodeAt (0)] = 9;\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("A", "Adenine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("a", "Adenine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("G", "Guanine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("g", "Guanine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("C", "Cytosine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("c", "Cytosine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("T", "Thymine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("t", "Thymine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("U", "Uracil");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("u", "Uracil");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("I", "Inosine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("i", "Inosine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("X", "Xanthine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("x", "Xanthine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("R", "Unknown Purine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("r", "Unknown Purine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("Y", "Unknown Pyrimidine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("y", "Unknown Pyrimidine");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("N", "Unknown");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("n", "Unknown");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("W", "Weak nucleotide (A or T)");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("w", "Weak nucleotide (A or T)");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("S", "Strong nucleotide (G or C)");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("s", "Strong nucleotide (G or C)");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("M", "Amino (A or C)");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("m", "Amino (A or C)");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("K", "Keto (G or T)");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("k", "Keto (G or T)");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("B", "Not A (G or C or T)");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("b", "Not A (G or C or T)");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("H", "Not G (A or C or T)");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("h", "Not G (A or C or T)");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("D", "Not C (A or G or T)");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("d", "Not C (A or G or T)");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("V", "Not T (A or G or C");\r
-jalview.schemes.ResidueProperties.nucleotideName.put ("v", "Not T (A or G or C");\r
-}{\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex =  Clazz.newIntArray (255, 0);\r
-for (var i = 0; i < 255; i++) {\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex[i] = 3;\r
-}\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['A'.charCodeAt (0)] = 0;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['a'.charCodeAt (0)] = 0;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['C'.charCodeAt (0)] = 1;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['c'.charCodeAt (0)] = 1;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['G'.charCodeAt (0)] = 0;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['g'.charCodeAt (0)] = 0;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['T'.charCodeAt (0)] = 1;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['t'.charCodeAt (0)] = 1;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['U'.charCodeAt (0)] = 1;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['u'.charCodeAt (0)] = 1;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['I'.charCodeAt (0)] = 2;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['i'.charCodeAt (0)] = 2;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['X'.charCodeAt (0)] = 2;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['x'.charCodeAt (0)] = 2;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['R'.charCodeAt (0)] = 0;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['r'.charCodeAt (0)] = 0;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['Y'.charCodeAt (0)] = 1;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['y'.charCodeAt (0)] = 1;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['N'.charCodeAt (0)] = 2;\r
-jalview.schemes.ResidueProperties.purinepyrimidineIndex['n'.charCodeAt (0)] = 2;\r
-}{\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("ALA",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("ARG",  new Integer (1));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("ASN",  new Integer (2));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("ASP",  new Integer (3));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("CYS",  new Integer (4));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("GLN",  new Integer (5));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("GLU",  new Integer (6));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("GLY",  new Integer (7));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("HIS",  new Integer (8));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("ILE",  new Integer (9));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("LEU",  new Integer (10));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("LYS",  new Integer (11));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("MET",  new Integer (12));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("PHE",  new Integer (13));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("PRO",  new Integer (14));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("SER",  new Integer (15));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("THR",  new Integer (16));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("TRP",  new Integer (17));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("TYR",  new Integer (18));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("VAL",  new Integer (19));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("ASX",  new Integer (20));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("GLX",  new Integer (21));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("XAA",  new Integer (22));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("-",  new Integer (23));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("*",  new Integer (23));\r
-jalview.schemes.ResidueProperties.aa3Hash.put (".",  new Integer (23));\r
-jalview.schemes.ResidueProperties.aa3Hash.put (" ",  new Integer (23));\r
-jalview.schemes.ResidueProperties.aa3Hash.put ("Gap",  new Integer (23));\r
-}{\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("A", "ALA");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("a", "ALA");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("R", "ARG");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("r", "ARG");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("N", "ASN");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("n", "ASN");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("D", "ASP");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("d", "ASP");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("C", "CYS");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("c", "CYS");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("Q", "GLN");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("q", "GLN");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("E", "GLU");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("e", "GLU");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("G", "GLY");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("g", "GLY");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("H", "HIS");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("h", "HIS");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("I", "ILE");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("i", "ILE");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("L", "LEU");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("l", "LEU");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("K", "LYS");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("k", "LYS");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("M", "MET");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("m", "MET");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("F", "PHE");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("f", "PHE");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("P", "PRO");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("p", "PRO");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("S", "SER");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("s", "SER");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("T", "THR");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("t", "THR");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("W", "TRP");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("w", "TRP");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("Y", "TYR");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("y", "TYR");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("V", "VAL");\r
-jalview.schemes.ResidueProperties.aa2Triplet.put ("v", "VAL");\r
-}Clazz.defineStatics (c$,\r
-"aa",  Clazz.newArray (-1, ["A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V", "B", "Z", "X", "_", "*", ".", " "]));\r
-c$.midBlue = c$.prototype.midBlue =  new java.awt.Color (100, 100, 255);\r
-c$.scaleColours = c$.prototype.scaleColours =  new java.util.Vector ();\r
-{\r
-jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (114, 0, 147));\r
-jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (156, 0, 98));\r
-jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (190, 0, 0));\r
-jalview.schemes.ResidueProperties.scaleColours.addElement (java.awt.Color.red);\r
-jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (255, 125, 0));\r
-jalview.schemes.ResidueProperties.scaleColours.addElement (java.awt.Color.orange);\r
-jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (255, 194, 85));\r
-jalview.schemes.ResidueProperties.scaleColours.addElement (java.awt.Color.yellow);\r
-jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (255, 255, 181));\r
-jalview.schemes.ResidueProperties.scaleColours.addElement (java.awt.Color.white);\r
-}c$.taylor = c$.prototype.taylor =  Clazz.newArray (-1, [ new java.awt.Color (204, 255, 0),  new java.awt.Color (0, 0, 255),  new java.awt.Color (204, 0, 255),  new java.awt.Color (255, 0, 0),  new java.awt.Color (255, 255, 0),  new java.awt.Color (255, 0, 204),  new java.awt.Color (255, 0, 102),  new java.awt.Color (255, 153, 0),  new java.awt.Color (0, 102, 255),  new java.awt.Color (102, 255, 0),  new java.awt.Color (51, 255, 0),  new java.awt.Color (102, 0, 255),  new java.awt.Color (0, 255, 0),  new java.awt.Color (0, 255, 102),  new java.awt.Color (255, 204, 0),  new java.awt.Color (255, 51, 0),  new java.awt.Color (255, 102, 0),  new java.awt.Color (0, 204, 255),  new java.awt.Color (0, 255, 204),  new java.awt.Color (153, 255, 0), java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white]);\r
-c$.nucleotide = c$.prototype.nucleotide =  Clazz.newArray (-1, [ new java.awt.Color (100, 247, 63),  new java.awt.Color (255, 179, 64),  new java.awt.Color (235, 65, 60),  new java.awt.Color (60, 136, 238),  new java.awt.Color (60, 136, 238), java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white]);\r
-c$.purinepyrimidine = c$.prototype.purinepyrimidine =  Clazz.newArray (-1, [ new java.awt.Color (255, 131, 250),  new java.awt.Color (64, 224, 208), java.awt.Color.white, java.awt.Color.white]);\r
-c$.zappo = c$.prototype.zappo =  Clazz.newArray (-1, [java.awt.Color.pink, jalview.schemes.ResidueProperties.midBlue, java.awt.Color.green, java.awt.Color.red, java.awt.Color.yellow, java.awt.Color.green, java.awt.Color.red, java.awt.Color.magenta, jalview.schemes.ResidueProperties.midBlue, java.awt.Color.pink, java.awt.Color.pink, jalview.schemes.ResidueProperties.midBlue, java.awt.Color.pink, java.awt.Color.orange, java.awt.Color.magenta, java.awt.Color.green, java.awt.Color.green, java.awt.Color.orange, java.awt.Color.orange, java.awt.Color.pink, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white]);\r
-Clazz.defineStatics (c$,\r
-"hyd2",  Clazz.newDoubleArray (-1, [0.62, 0.29, -0.9, -0.74, 1.19, 0.48, -0.4, 1.38, -1.5, 1.06, 0.64, -0.78, 0.12, -0.85, -2.53, -0.18, -0.05, 1.08, 0.81, 0.0, 0.26, 0.0, 0.0]),\r
-"helix",  Clazz.newDoubleArray (-1, [1.42, 0.98, 0.67, 1.01, 0.70, 1.11, 1.51, 0.57, 1.00, 1.08, 1.21, 1.16, 1.45, 1.13, 0.57, 0.77, 0.83, 1.08, 0.69, 1.06, 0.84, 1.31, 1.00, 0.0]),\r
-"helixmin", 0.57,\r
-"helixmax", 1.51,\r
-"strand",  Clazz.newDoubleArray (-1, [0.83, 0.93, 0.89, 0.54, 1.19, 1.10, 0.37, 0.75, 0.87, 1.60, 1.30, 0.74, 1.05, 1.38, 0.55, 0.75, 1.19, 1.37, 1.47, 1.70, 0.72, 0.74, 1.0, 0.0]),\r
-"strandmin", 0.37,\r
-"strandmax", 1.7,\r
-"turn",  Clazz.newDoubleArray (-1, [0.66, 0.95, 1.56, 1.46, 1.19, 0.98, 0.74, 1.56, 0.95, 0.47, 0.59, 1.01, 0.60, 0.60, 1.52, 1.43, 0.96, 0.96, 1.14, 0.50, 1.51, 0.86, 1.00, 0, 0]),\r
-"turnmin", 0.47,\r
-"turnmax", 1.56,\r
-"buried",  Clazz.newDoubleArray (-1, [1.7, 0.1, 0.4, 0.4, 4.6, 0.3, 0.3, 1.8, 0.8, 3.1, 2.4, 0.05, 1.9, 2.2, 0.6, 0.8, 0.7, 1.6, 0.5, 2.9, 0.4, 0.3, 1.358, 0.00]),\r
-"buriedmin", 0.05,\r
-"buriedmax", 4.6,\r
-"hyd",  Clazz.newDoubleArray (-1, [1.8, -4.5, -3.5, -3.5, 2.5, -3.5, -3.5, -0.4, -3.2, 4.5, 3.8, -3.9, 1.9, 2.8, -1.6, -0.8, -0.7, -0.9, -1.3, 4.2, -3.5, -3.5, -0.49, 0.0]),\r
-"hydmax", 4.5,\r
-"hydmin", -3.9,\r
-"BLOSUM62",  Clazz.newArray (-1, [ Clazz.newIntArray (-1, [4, -1, -2, -2, 0, -1, -1, 0, -2, -1, -1, -1, -1, -2, -1, 1, 0, -3, -2, 0, -2, -1, 0, -4]),  Clazz.newIntArray (-1, [-1, 5, 0, -2, -3, 1, 0, -2, 0, -3, -2, 2, -1, -3, -2, -1, -1, -3, -2, -3, -1, 0, -1, -4]),  Clazz.newIntArray (-1, [-2, 0, 6, 1, -3, 0, 0, 0, 1, -3, -3, 0, -2, -3, -2, 1, 0, -4, -2, -3, 3, 0, -1, -4]),  Clazz.newIntArray (-1, [-2, -2, 1, 6, -3, 0, 2, -1, -1, -3, -4, -1, -3, -3, -1, 0, -1, -4, -3, -3, 4, 1, -1, -4]),  Clazz.newIntArray (-1, [0, 3, -3, -3, 9, -3, -4, -3, -3, -1, -1, -3, -1, -2, -3, -1, -1, -2, -2, -1, -3, -3, -2, -4]),  Clazz.newIntArray (-1, [-1, 1, 0, 0, -3, 5, 2, -2, 0, -3, -2, 1, 0, -3, -1, 0, -1, -2, -1, -2, 0, 3, -1, -4]),  Clazz.newIntArray (-1, [-1, 0, 0, 2, -4, 2, 5, -2, 0, -3, -3, 1, -2, -3, -1, 0, -1, -3, -2, -2, 1, 4, -1, -4]),  Clazz.newIntArray (-1, [0, -2, 0, -1, -3, -2, -2, 6, -2, -4, -4, -2, -3, -3, -2, 0, -2, -2, -3, -3, -1, -2, -1, -4]),  Clazz.newIntArray (-1, [-2, 0, 1, -1, -3, 0, 0, -2, 8, -3, -3, -1, -2, -1, -2, -1, -2, -2, 2, -3, 0, 0, -1, -4]),  Clazz.newIntArray (-1, [-1, -3, -3, -3, -1, -3, -3, -4, -3, 4, 2, -3, 1, 0, -3, -2, -1, -3, -1, 3, -3, -3, -1, -4]),  Clazz.newIntArray (-1, [-1, -2, -3, -4, -1, -2, -3, -4, -3, 2, 4, -2, 2, 0, -3, -2, -1, -2, -1, 1, -4, -3, -1, -4]),  Clazz.newIntArray (-1, [-1, 2, 0, -1, -3, 1, 1, -2, -1, -3, -2, 5, -1, -3, -1, 0, -1, -3, -2, -2, 0, 1, -1, -4]),  Clazz.newIntArray (-1, [-1, -1, -2, -3, -1, 0, -2, -3, -2, 1, 2, -1, 5, 0, -2, -1, -1, -1, -1, 1, -3, -1, -1, -4]),  Clazz.newIntArray (-1, [-2, -3, -3, -3, -2, -3, -3, -3, -1, 0, 0, -3, 0, 6, -4, -2, -2, 1, 3, -1, -3, -3, -1, -4]),  Clazz.newIntArray (-1, [-1, -2, -2, -1, -3, -1, -1, -2, -2, -3, -3, -1, -2, -4, 7, -1, -1, -4, -3, -2, -2, -1, -2, -4]),  Clazz.newIntArray (-1, [1, -1, 1, 0, -1, 0, 0, 0, -1, -2, -2, 0, -1, -2, -1, 4, 1, -3, -2, -2, 0, 0, 0, -4]),  Clazz.newIntArray (-1, [0, -1, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -2, -1, 1, 5, -2, -2, 0, -1, -1, 0, -4]),  Clazz.newIntArray (-1, [-3, -3, -4, -4, -2, -2, -3, -2, -2, -3, -2, -3, -1, 1, -4, -3, -2, 11, 2, -3, -4, -3, -2, -4]),  Clazz.newIntArray (-1, [-2, -2, -2, -3, -2, -1, -2, -3, 2, -1, -1, -2, -1, 3, -3, -2, -2, 2, 7, -1, -3, -2, -1, -4]),  Clazz.newIntArray (-1, [0, -3, -3, -3, -1, -2, -2, -3, -3, 3, 1, -2, 1, -1, -2, -2, 0, -3, -1, 4, -3, -2, -1, -4]),  Clazz.newIntArray (-1, [-2, -1, 3, 4, -3, 0, 1, -1, 0, -3, -4, 0, -3, -3, -2, 0, -1, -4, -3, -3, 4, 1, -1, -4]),  Clazz.newIntArray (-1, [-1, 0, 0, 1, -3, 3, 4, -2, 0, -3, -3, 1, -1, -3, -1, 0, -1, -3, -2, -2, 1, 4, -1, -4]),  Clazz.newIntArray (-1, [0, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, 0, 0, -2, -1, -1, -1, -1, -1, -4]),  Clazz.newIntArray (-1, [-4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 1])]),\r
-"PAM250",  Clazz.newArray (-1, [ Clazz.newIntArray (-1, [2, -2, 0, 0, -2, 0, 0, 1, -1, -1, -2, -1, -1, -3, 1, 1, 1, -6, -3, 0, 0, 0, 0, -8]),  Clazz.newIntArray (-1, [-2, 6, 0, -1, -4, 1, -1, -3, 2, -2, -3, 3, 0, -4, 0, 0, -1, 2, -4, -2, -1, 0, -1, -8]),  Clazz.newIntArray (-1, [0, 0, 2, 2, -4, 1, 1, 0, 2, -2, -3, 1, -2, -3, 0, 1, 0, -4, -2, -2, 2, 1, 0, -8]),  Clazz.newIntArray (-1, [0, -1, 2, 4, -5, 2, 3, 1, 1, -2, -4, 0, -3, -6, -1, 0, 0, -7, -4, -2, 3, 3, -1, -8]),  Clazz.newIntArray (-1, [-2, -4, -4, -5, 12, -5, -5, -3, -3, -2, -6, -5, -5, -4, -3, 0, -2, -8, 0, -2, -4, -5, -3, -8]),  Clazz.newIntArray (-1, [0, 1, 1, 2, -5, 4, 2, -1, 3, -2, -2, 1, -1, -5, 0, -1, -1, -5, -4, -2, 1, 3, -1, -8]),  Clazz.newIntArray (-1, [0, -1, 1, 3, -5, 2, 4, 0, 1, -2, -3, 0, -2, -5, -1, 0, 0, -7, -4, -2, 3, 3, -1, -8]),  Clazz.newIntArray (-1, [1, -3, 0, 1, -3, -1, 0, 5, -2, -3, -4, -2, -3, -5, 0, 1, 0, -7, -5, -1, 0, 0, -1, -8]),  Clazz.newIntArray (-1, [-1, 2, 2, 1, -3, 3, 1, -2, 6, -2, -2, 0, -2, -2, 0, -1, -1, -3, 0, -2, 1, 2, -1, -8]),  Clazz.newIntArray (-1, [-1, -2, -2, -2, -2, -2, -2, -3, -2, 5, 2, -2, 2, 1, -2, -1, 0, -5, -1, 4, -2, -2, -1, -8]),  Clazz.newIntArray (-1, [-2, -3, -3, -4, -6, -2, -3, -4, -2, 2, 6, -3, 4, 2, -3, -3, -2, -2, -1, 2, -3, -3, -1, -8]),  Clazz.newIntArray (-1, [-1, 3, 1, 0, -5, 1, 0, -2, 0, -2, -3, 5, 0, -5, -1, 0, 0, -3, -4, -2, 1, 0, -1, -8]),  Clazz.newIntArray (-1, [-1, 0, -2, -3, -5, -1, -2, -3, -2, 2, 4, 0, 6, 0, -2, -2, -1, -4, -2, 2, -2, -2, -1, -8]),  Clazz.newIntArray (-1, [-3, -4, -3, -6, -4, -5, -5, -5, -2, 1, 2, -5, 0, 9, -5, -3, -3, 0, 7, -1, -4, -5, -2, -8]),  Clazz.newIntArray (-1, [1, 0, 0, -1, -3, 0, -1, 0, 0, -2, -3, -1, -2, -5, 6, 1, 0, -6, -5, -1, -1, 0, -1, -8]),  Clazz.newIntArray (-1, [1, 0, 1, 0, 0, -1, 0, 1, -1, -1, -3, 0, -2, -3, 1, 2, 1, -2, -3, -1, 0, 0, 0, -8]),  Clazz.newIntArray (-1, [1, -1, 0, 0, -2, -1, 0, 0, -1, 0, -2, 0, -1, -3, 0, 1, 3, -5, -3, 0, 0, -1, 0, -8]),  Clazz.newIntArray (-1, [-6, 2, -4, -7, -8, -5, -7, -7, -3, -5, -2, -3, -4, 0, -6, -2, -5, 17, 0, -6, -5, -6, -4, -8]),  Clazz.newIntArray (-1, [-3, -4, -2, -4, 0, -4, -4, -5, 0, -1, -1, -4, -2, 7, -5, -3, -3, 0, 10, -2, -3, -4, -2, -8]),  Clazz.newIntArray (-1, [0, -2, -2, -2, -2, -2, -2, -1, -2, 4, 2, -2, 2, -1, -1, -1, 0, -6, -2, 4, -2, -2, -1, -8]),  Clazz.newIntArray (-1, [0, -1, 2, 3, -4, 1, 3, 0, 1, -2, -3, 1, -2, -4, -1, 0, 0, -5, -3, -2, 3, 2, -1, -8]),  Clazz.newIntArray (-1, [0, 0, 1, 3, -5, 3, 3, 0, 2, -2, -3, 0, -2, -5, 0, 0, -1, -6, -4, -2, 2, 3, -1, -8]),  Clazz.newIntArray (-1, [0, -1, 0, -1, -3, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, 0, 0, -4, -2, -1, -1, -1, -1, -8]),  Clazz.newIntArray (-1, [-8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, 1])]));\r
-c$.ssHash = c$.prototype.ssHash =  new java.util.Hashtable ();\r
-{\r
-jalview.schemes.ResidueProperties.ssHash.put ("H", java.awt.Color.magenta);\r
-jalview.schemes.ResidueProperties.ssHash.put ("E", java.awt.Color.yellow);\r
-jalview.schemes.ResidueProperties.ssHash.put ("-", java.awt.Color.white);\r
-jalview.schemes.ResidueProperties.ssHash.put (".", java.awt.Color.white);\r
-jalview.schemes.ResidueProperties.ssHash.put ("S", java.awt.Color.cyan);\r
-jalview.schemes.ResidueProperties.ssHash.put ("T", java.awt.Color.blue);\r
-jalview.schemes.ResidueProperties.ssHash.put ("G", java.awt.Color.pink);\r
-jalview.schemes.ResidueProperties.ssHash.put ("I", java.awt.Color.pink);\r
-jalview.schemes.ResidueProperties.ssHash.put ("B", java.awt.Color.yellow);\r
-}Clazz.defineStatics (c$,\r
-"DNA",  Clazz.newArray (-1, [ Clazz.newIntArray (-1, [10, -8, -8, -8, -8, 1, 1, 1, -8, 1, 1]),  Clazz.newIntArray (-1, [-8, 10, -8, -8, -8, 1, 1, -8, 1, 1, 1]),  Clazz.newIntArray (-1, [-8, -8, 10, -8, -8, 1, 1, 1, -8, 1, 1]),  Clazz.newIntArray (-1, [-8, -8, -8, 10, 10, 1, 1, -8, 1, 1, 1]),  Clazz.newIntArray (-1, [-8, -8, -8, 10, 10, 1, 1, -8, 1, 1, 1]),  Clazz.newIntArray (-1, [1, 1, 1, 1, 1, 10, 0, 0, 0, 1, 1]),  Clazz.newIntArray (-1, [1, 1, 1, 1, 1, 0, 10, 0, 0, 1, 1]),  Clazz.newIntArray (-1, [1, -8, 1, -8, -8, 0, 0, 10, -8, 1, 1]),  Clazz.newIntArray (-1, [-8, 1, -8, 1, 1, 0, 0, -8, 10, 1, 1]),  Clazz.newIntArray (-1, [1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 1]),  Clazz.newIntArray (-1, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])]));\r
-{\r
-jalview.schemes.ResidueProperties.scoreMatrices.put ("BLOSUM62",  new jalview.schemes.ScoreMatrix ("BLOSUM62", jalview.schemes.ResidueProperties.BLOSUM62, 0));\r
-jalview.schemes.ResidueProperties.scoreMatrices.put ("PAM250",  new jalview.schemes.ScoreMatrix ("PAM250", jalview.schemes.ResidueProperties.PAM250, 0));\r
-jalview.schemes.ResidueProperties.scoreMatrices.put ("DNA",  new jalview.schemes.ScoreMatrix ("DNA", jalview.schemes.ResidueProperties.DNA, 1));\r
-}c$.pidColours = c$.prototype.pidColours =  Clazz.newArray (-1, [jalview.schemes.ResidueProperties.midBlue,  new java.awt.Color (153, 153, 255),  new java.awt.Color (204, 204, 255)]);\r
-Clazz.defineStatics (c$,\r
-"pidThresholds",  Clazz.newFloatArray (-1, [80, 60, 40]));\r
-c$.codonHash = c$.prototype.codonHash =  new java.util.HashMap ();\r
-c$.Lys = c$.prototype.Lys =  new java.util.ArrayList ();\r
-c$.Asn = c$.prototype.Asn =  new java.util.ArrayList ();\r
-c$.Gln = c$.prototype.Gln =  new java.util.ArrayList ();\r
-c$.His = c$.prototype.His =  new java.util.ArrayList ();\r
-c$.Glu = c$.prototype.Glu =  new java.util.ArrayList ();\r
-c$.Asp = c$.prototype.Asp =  new java.util.ArrayList ();\r
-c$.Tyr = c$.prototype.Tyr =  new java.util.ArrayList ();\r
-c$.Thr = c$.prototype.Thr =  new java.util.ArrayList ();\r
-c$.Pro = c$.prototype.Pro =  new java.util.ArrayList ();\r
-c$.Ala = c$.prototype.Ala =  new java.util.ArrayList ();\r
-c$.Ser = c$.prototype.Ser =  new java.util.ArrayList ();\r
-c$.Arg = c$.prototype.Arg =  new java.util.ArrayList ();\r
-c$.Gly = c$.prototype.Gly =  new java.util.ArrayList ();\r
-c$.Trp = c$.prototype.Trp =  new java.util.ArrayList ();\r
-c$.Cys = c$.prototype.Cys =  new java.util.ArrayList ();\r
-c$.Ile = c$.prototype.Ile =  new java.util.ArrayList ();\r
-c$.Met = c$.prototype.Met =  new java.util.ArrayList ();\r
-c$.Leu = c$.prototype.Leu =  new java.util.ArrayList ();\r
-c$.Val = c$.prototype.Val =  new java.util.ArrayList ();\r
-c$.Phe = c$.prototype.Phe =  new java.util.ArrayList ();\r
-c$.STOP = c$.prototype.STOP =  new java.util.ArrayList ();\r
-Clazz.defineStatics (c$,\r
-"START", "ATG");\r
-{\r
-jalview.schemes.ResidueProperties.codonHash.put ("K", jalview.schemes.ResidueProperties.Lys);\r
-jalview.schemes.ResidueProperties.codonHash.put ("N", jalview.schemes.ResidueProperties.Asn);\r
-jalview.schemes.ResidueProperties.codonHash.put ("Q", jalview.schemes.ResidueProperties.Gln);\r
-jalview.schemes.ResidueProperties.codonHash.put ("H", jalview.schemes.ResidueProperties.His);\r
-jalview.schemes.ResidueProperties.codonHash.put ("E", jalview.schemes.ResidueProperties.Glu);\r
-jalview.schemes.ResidueProperties.codonHash.put ("D", jalview.schemes.ResidueProperties.Asp);\r
-jalview.schemes.ResidueProperties.codonHash.put ("Y", jalview.schemes.ResidueProperties.Tyr);\r
-jalview.schemes.ResidueProperties.codonHash.put ("T", jalview.schemes.ResidueProperties.Thr);\r
-jalview.schemes.ResidueProperties.codonHash.put ("P", jalview.schemes.ResidueProperties.Pro);\r
-jalview.schemes.ResidueProperties.codonHash.put ("A", jalview.schemes.ResidueProperties.Ala);\r
-jalview.schemes.ResidueProperties.codonHash.put ("S", jalview.schemes.ResidueProperties.Ser);\r
-jalview.schemes.ResidueProperties.codonHash.put ("R", jalview.schemes.ResidueProperties.Arg);\r
-jalview.schemes.ResidueProperties.codonHash.put ("G", jalview.schemes.ResidueProperties.Gly);\r
-jalview.schemes.ResidueProperties.codonHash.put ("W", jalview.schemes.ResidueProperties.Trp);\r
-jalview.schemes.ResidueProperties.codonHash.put ("C", jalview.schemes.ResidueProperties.Cys);\r
-jalview.schemes.ResidueProperties.codonHash.put ("I", jalview.schemes.ResidueProperties.Ile);\r
-jalview.schemes.ResidueProperties.codonHash.put ("M", jalview.schemes.ResidueProperties.Met);\r
-jalview.schemes.ResidueProperties.codonHash.put ("L", jalview.schemes.ResidueProperties.Leu);\r
-jalview.schemes.ResidueProperties.codonHash.put ("V", jalview.schemes.ResidueProperties.Val);\r
-jalview.schemes.ResidueProperties.codonHash.put ("F", jalview.schemes.ResidueProperties.Phe);\r
-jalview.schemes.ResidueProperties.codonHash.put ("STOP", jalview.schemes.ResidueProperties.STOP);\r
-}c$.ambiguityCodes = c$.prototype.ambiguityCodes =  new java.util.Hashtable ();\r
-c$.codonHash2 = c$.prototype.codonHash2 =  new java.util.Hashtable ();\r
-c$._ambiguityCodes = c$.prototype._ambiguityCodes =  new java.util.Hashtable ();\r
-{\r
-jalview.schemes.ResidueProperties.ambiguityCodes.put ("R",  Clazz.newArray (-1, ["A", "G"]));\r
-jalview.schemes.ResidueProperties.ambiguityCodes.put ("Y",  Clazz.newArray (-1, ["T", "C"]));\r
-jalview.schemes.ResidueProperties.ambiguityCodes.put ("W",  Clazz.newArray (-1, ["A", "T"]));\r
-jalview.schemes.ResidueProperties.ambiguityCodes.put ("S",  Clazz.newArray (-1, ["G", "C"]));\r
-jalview.schemes.ResidueProperties.ambiguityCodes.put ("M",  Clazz.newArray (-1, ["A", "C"]));\r
-jalview.schemes.ResidueProperties.ambiguityCodes.put ("K",  Clazz.newArray (-1, ["G", "T"]));\r
-jalview.schemes.ResidueProperties.ambiguityCodes.put ("H",  Clazz.newArray (-1, ["A", "T", "C"]));\r
-jalview.schemes.ResidueProperties.ambiguityCodes.put ("B",  Clazz.newArray (-1, ["G", "T", "C"]));\r
-jalview.schemes.ResidueProperties.ambiguityCodes.put ("V",  Clazz.newArray (-1, ["G", "A", "C"]));\r
-jalview.schemes.ResidueProperties.ambiguityCodes.put ("D",  Clazz.newArray (-1, ["G", "A", "T"]));\r
-jalview.schemes.ResidueProperties.ambiguityCodes.put ("N",  Clazz.newArray (-1, ["G", "A", "T", "C"]));\r
-jalview.schemes.ResidueProperties.codonHash2.put ("AAA", "K");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("AAG", "K");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("AAC", "N");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("AAT", "N");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CAA", "Q");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CAG", "Q");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CAC", "H");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CAT", "H");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GAA", "E");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GAG", "E");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GAC", "D");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GAT", "D");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TAC", "Y");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TAT", "Y");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("ACA", "T");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("ACC", "T");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("ACT", "T");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("ACG", "T");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CCA", "P");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CCG", "P");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CCC", "P");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CCT", "P");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GCA", "A");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GCG", "A");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GCC", "A");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GCT", "A");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TCA", "S");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TCG", "S");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TCC", "S");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TCT", "S");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("AGC", "S");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("AGT", "S");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("AGA", "R");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("AGG", "R");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CGA", "R");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CGG", "R");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CGC", "R");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CGT", "R");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GGA", "G");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GGG", "G");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GGC", "G");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GGT", "G");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TGA", "*");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TAA", "*");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TAG", "*");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TGG", "W");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TGC", "C");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TGT", "C");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("ATA", "I");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("ATC", "I");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("ATT", "I");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("ATG", "M");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CTA", "L");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CTG", "L");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CTC", "L");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("CTT", "L");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TTA", "L");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TTG", "L");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GTA", "V");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GTG", "V");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GTC", "V");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("GTT", "V");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TTC", "F");\r
-jalview.schemes.ResidueProperties.codonHash2.put ("TTT", "F");\r
-jalview.schemes.ResidueProperties.buildAmbiguityCodonSet ();\r
-}{\r
-jalview.schemes.ResidueProperties.Lys.add ("AAA");\r
-jalview.schemes.ResidueProperties.Lys.add ("AAG");\r
-jalview.schemes.ResidueProperties.Asn.add ("AAC");\r
-jalview.schemes.ResidueProperties.Asn.add ("AAT");\r
-jalview.schemes.ResidueProperties.Gln.add ("CAA");\r
-jalview.schemes.ResidueProperties.Gln.add ("CAG");\r
-jalview.schemes.ResidueProperties.His.add ("CAC");\r
-jalview.schemes.ResidueProperties.His.add ("CAT");\r
-jalview.schemes.ResidueProperties.Glu.add ("GAA");\r
-jalview.schemes.ResidueProperties.Glu.add ("GAG");\r
-jalview.schemes.ResidueProperties.Asp.add ("GAC");\r
-jalview.schemes.ResidueProperties.Asp.add ("GAT");\r
-jalview.schemes.ResidueProperties.Tyr.add ("TAC");\r
-jalview.schemes.ResidueProperties.Tyr.add ("TAT");\r
-jalview.schemes.ResidueProperties.Thr.add ("ACA");\r
-jalview.schemes.ResidueProperties.Thr.add ("ACG");\r
-jalview.schemes.ResidueProperties.Thr.add ("ACC");\r
-jalview.schemes.ResidueProperties.Thr.add ("ACT");\r
-jalview.schemes.ResidueProperties.Pro.add ("CCA");\r
-jalview.schemes.ResidueProperties.Pro.add ("CCG");\r
-jalview.schemes.ResidueProperties.Pro.add ("CCC");\r
-jalview.schemes.ResidueProperties.Pro.add ("CCT");\r
-jalview.schemes.ResidueProperties.Ala.add ("GCA");\r
-jalview.schemes.ResidueProperties.Ala.add ("GCG");\r
-jalview.schemes.ResidueProperties.Ala.add ("GCC");\r
-jalview.schemes.ResidueProperties.Ala.add ("GCT");\r
-jalview.schemes.ResidueProperties.Ser.add ("TCA");\r
-jalview.schemes.ResidueProperties.Ser.add ("TCG");\r
-jalview.schemes.ResidueProperties.Ser.add ("TCC");\r
-jalview.schemes.ResidueProperties.Ser.add ("TCT");\r
-jalview.schemes.ResidueProperties.Ser.add ("AGC");\r
-jalview.schemes.ResidueProperties.Ser.add ("AGT");\r
-jalview.schemes.ResidueProperties.Arg.add ("AGA");\r
-jalview.schemes.ResidueProperties.Arg.add ("AGG");\r
-jalview.schemes.ResidueProperties.Arg.add ("CGA");\r
-jalview.schemes.ResidueProperties.Arg.add ("CGG");\r
-jalview.schemes.ResidueProperties.Arg.add ("CGC");\r
-jalview.schemes.ResidueProperties.Arg.add ("CGT");\r
-jalview.schemes.ResidueProperties.Gly.add ("GGA");\r
-jalview.schemes.ResidueProperties.Gly.add ("GGG");\r
-jalview.schemes.ResidueProperties.Gly.add ("GGC");\r
-jalview.schemes.ResidueProperties.Gly.add ("GGT");\r
-jalview.schemes.ResidueProperties.STOP.add ("TGA");\r
-jalview.schemes.ResidueProperties.STOP.add ("TAA");\r
-jalview.schemes.ResidueProperties.STOP.add ("TAG");\r
-jalview.schemes.ResidueProperties.Trp.add ("TGG");\r
-jalview.schemes.ResidueProperties.Cys.add ("TGC");\r
-jalview.schemes.ResidueProperties.Cys.add ("TGT");\r
-jalview.schemes.ResidueProperties.Ile.add ("ATA");\r
-jalview.schemes.ResidueProperties.Ile.add ("ATC");\r
-jalview.schemes.ResidueProperties.Ile.add ("ATT");\r
-jalview.schemes.ResidueProperties.Met.add ("ATG");\r
-jalview.schemes.ResidueProperties.Leu.add ("CTA");\r
-jalview.schemes.ResidueProperties.Leu.add ("CTG");\r
-jalview.schemes.ResidueProperties.Leu.add ("CTC");\r
-jalview.schemes.ResidueProperties.Leu.add ("CTT");\r
-jalview.schemes.ResidueProperties.Leu.add ("TTA");\r
-jalview.schemes.ResidueProperties.Leu.add ("TTG");\r
-jalview.schemes.ResidueProperties.Val.add ("GTA");\r
-jalview.schemes.ResidueProperties.Val.add ("GTG");\r
-jalview.schemes.ResidueProperties.Val.add ("GTC");\r
-jalview.schemes.ResidueProperties.Val.add ("GTT");\r
-jalview.schemes.ResidueProperties.Phe.add ("TTC");\r
-jalview.schemes.ResidueProperties.Phe.add ("TTT");\r
-}c$.propHash = c$.prototype.propHash =  new java.util.Hashtable ();\r
-c$.hydrophobic = c$.prototype.hydrophobic =  new java.util.Hashtable ();\r
-c$.polar = c$.prototype.polar =  new java.util.Hashtable ();\r
-c$.small = c$.prototype.small =  new java.util.Hashtable ();\r
-c$.positive = c$.prototype.positive =  new java.util.Hashtable ();\r
-c$.negative = c$.prototype.negative =  new java.util.Hashtable ();\r
-c$.charged = c$.prototype.charged =  new java.util.Hashtable ();\r
-c$.aromatic = c$.prototype.aromatic =  new java.util.Hashtable ();\r
-c$.aliphatic = c$.prototype.aliphatic =  new java.util.Hashtable ();\r
-c$.tiny = c$.prototype.tiny =  new java.util.Hashtable ();\r
-c$.proline = c$.prototype.proline =  new java.util.Hashtable ();\r
-{\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("I",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("L",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("V",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("C",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("A",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("G",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("M",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("F",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("Y",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("W",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("H",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("K",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("X",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("-",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("*",  new Integer (1));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("R",  new Integer (0));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("E",  new Integer (0));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("Q",  new Integer (0));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("D",  new Integer (0));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("N",  new Integer (0));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("S",  new Integer (0));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("T",  new Integer (0));\r
-jalview.schemes.ResidueProperties.hydrophobic.put ("P",  new Integer (0));\r
-}{\r
-jalview.schemes.ResidueProperties.polar.put ("Y",  new Integer (1));\r
-jalview.schemes.ResidueProperties.polar.put ("W",  new Integer (1));\r
-jalview.schemes.ResidueProperties.polar.put ("H",  new Integer (1));\r
-jalview.schemes.ResidueProperties.polar.put ("K",  new Integer (1));\r
-jalview.schemes.ResidueProperties.polar.put ("R",  new Integer (1));\r
-jalview.schemes.ResidueProperties.polar.put ("E",  new Integer (1));\r
-jalview.schemes.ResidueProperties.polar.put ("Q",  new Integer (1));\r
-jalview.schemes.ResidueProperties.polar.put ("D",  new Integer (1));\r
-jalview.schemes.ResidueProperties.polar.put ("N",  new Integer (1));\r
-jalview.schemes.ResidueProperties.polar.put ("S",  new Integer (1));\r
-jalview.schemes.ResidueProperties.polar.put ("T",  new Integer (1));\r
-jalview.schemes.ResidueProperties.polar.put ("X",  new Integer (1));\r
-jalview.schemes.ResidueProperties.polar.put ("-",  new Integer (1));\r
-jalview.schemes.ResidueProperties.polar.put ("*",  new Integer (1));\r
-jalview.schemes.ResidueProperties.polar.put ("I",  new Integer (0));\r
-jalview.schemes.ResidueProperties.polar.put ("L",  new Integer (0));\r
-jalview.schemes.ResidueProperties.polar.put ("V",  new Integer (0));\r
-jalview.schemes.ResidueProperties.polar.put ("C",  new Integer (0));\r
-jalview.schemes.ResidueProperties.polar.put ("A",  new Integer (0));\r
-jalview.schemes.ResidueProperties.polar.put ("G",  new Integer (0));\r
-jalview.schemes.ResidueProperties.polar.put ("M",  new Integer (0));\r
-jalview.schemes.ResidueProperties.polar.put ("F",  new Integer (0));\r
-jalview.schemes.ResidueProperties.polar.put ("P",  new Integer (0));\r
-}{\r
-jalview.schemes.ResidueProperties.small.put ("I",  new Integer (0));\r
-jalview.schemes.ResidueProperties.small.put ("L",  new Integer (0));\r
-jalview.schemes.ResidueProperties.small.put ("V",  new Integer (1));\r
-jalview.schemes.ResidueProperties.small.put ("C",  new Integer (1));\r
-jalview.schemes.ResidueProperties.small.put ("A",  new Integer (1));\r
-jalview.schemes.ResidueProperties.small.put ("G",  new Integer (1));\r
-jalview.schemes.ResidueProperties.small.put ("M",  new Integer (0));\r
-jalview.schemes.ResidueProperties.small.put ("F",  new Integer (0));\r
-jalview.schemes.ResidueProperties.small.put ("Y",  new Integer (0));\r
-jalview.schemes.ResidueProperties.small.put ("W",  new Integer (0));\r
-jalview.schemes.ResidueProperties.small.put ("H",  new Integer (0));\r
-jalview.schemes.ResidueProperties.small.put ("K",  new Integer (0));\r
-jalview.schemes.ResidueProperties.small.put ("R",  new Integer (0));\r
-jalview.schemes.ResidueProperties.small.put ("E",  new Integer (0));\r
-jalview.schemes.ResidueProperties.small.put ("Q",  new Integer (0));\r
-jalview.schemes.ResidueProperties.small.put ("D",  new Integer (1));\r
-jalview.schemes.ResidueProperties.small.put ("N",  new Integer (1));\r
-jalview.schemes.ResidueProperties.small.put ("S",  new Integer (1));\r
-jalview.schemes.ResidueProperties.small.put ("T",  new Integer (1));\r
-jalview.schemes.ResidueProperties.small.put ("P",  new Integer (1));\r
-jalview.schemes.ResidueProperties.small.put ("-",  new Integer (1));\r
-jalview.schemes.ResidueProperties.small.put ("*",  new Integer (1));\r
-}{\r
-jalview.schemes.ResidueProperties.positive.put ("I",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("L",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("V",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("C",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("A",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("G",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("M",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("F",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("Y",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("W",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("H",  new Integer (1));\r
-jalview.schemes.ResidueProperties.positive.put ("K",  new Integer (1));\r
-jalview.schemes.ResidueProperties.positive.put ("R",  new Integer (1));\r
-jalview.schemes.ResidueProperties.positive.put ("E",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("Q",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("D",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("N",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("S",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("T",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("P",  new Integer (0));\r
-jalview.schemes.ResidueProperties.positive.put ("-",  new Integer (1));\r
-jalview.schemes.ResidueProperties.positive.put ("*",  new Integer (1));\r
-}{\r
-jalview.schemes.ResidueProperties.negative.put ("I",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("L",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("V",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("C",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("A",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("G",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("M",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("F",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("Y",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("W",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("H",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("K",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("R",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("E",  new Integer (1));\r
-jalview.schemes.ResidueProperties.negative.put ("Q",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("D",  new Integer (1));\r
-jalview.schemes.ResidueProperties.negative.put ("N",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("S",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("T",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("P",  new Integer (0));\r
-jalview.schemes.ResidueProperties.negative.put ("-",  new Integer (1));\r
-jalview.schemes.ResidueProperties.negative.put ("*",  new Integer (1));\r
-}{\r
-jalview.schemes.ResidueProperties.charged.put ("I",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("L",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("V",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("C",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("A",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("G",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("M",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("F",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("Y",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("W",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("H",  new Integer (1));\r
-jalview.schemes.ResidueProperties.charged.put ("K",  new Integer (1));\r
-jalview.schemes.ResidueProperties.charged.put ("R",  new Integer (1));\r
-jalview.schemes.ResidueProperties.charged.put ("E",  new Integer (1));\r
-jalview.schemes.ResidueProperties.charged.put ("Q",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("D",  new Integer (1));\r
-jalview.schemes.ResidueProperties.charged.put ("N",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("S",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("T",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("P",  new Integer (0));\r
-jalview.schemes.ResidueProperties.charged.put ("-",  new Integer (1));\r
-jalview.schemes.ResidueProperties.charged.put ("*",  new Integer (1));\r
-}{\r
-jalview.schemes.ResidueProperties.aromatic.put ("I",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("L",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("V",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("C",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("A",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("G",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("M",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("F",  new Integer (1));\r
-jalview.schemes.ResidueProperties.aromatic.put ("Y",  new Integer (1));\r
-jalview.schemes.ResidueProperties.aromatic.put ("W",  new Integer (1));\r
-jalview.schemes.ResidueProperties.aromatic.put ("H",  new Integer (1));\r
-jalview.schemes.ResidueProperties.aromatic.put ("K",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("R",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("E",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("Q",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("D",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("N",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("S",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("T",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("P",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aromatic.put ("-",  new Integer (1));\r
-jalview.schemes.ResidueProperties.aromatic.put ("*",  new Integer (1));\r
-}{\r
-jalview.schemes.ResidueProperties.aliphatic.put ("I",  new Integer (1));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("L",  new Integer (1));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("V",  new Integer (1));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("C",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("A",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("G",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("M",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("F",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("Y",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("W",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("H",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("K",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("R",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("E",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("Q",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("D",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("N",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("S",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("T",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("P",  new Integer (0));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("-",  new Integer (1));\r
-jalview.schemes.ResidueProperties.aliphatic.put ("*",  new Integer (1));\r
-}{\r
-jalview.schemes.ResidueProperties.tiny.put ("I",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("L",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("V",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("C",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("A",  new Integer (1));\r
-jalview.schemes.ResidueProperties.tiny.put ("G",  new Integer (1));\r
-jalview.schemes.ResidueProperties.tiny.put ("M",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("F",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("Y",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("W",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("H",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("K",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("R",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("E",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("Q",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("D",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("N",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("S",  new Integer (1));\r
-jalview.schemes.ResidueProperties.tiny.put ("T",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("P",  new Integer (0));\r
-jalview.schemes.ResidueProperties.tiny.put ("-",  new Integer (1));\r
-jalview.schemes.ResidueProperties.tiny.put ("*",  new Integer (1));\r
-}{\r
-jalview.schemes.ResidueProperties.proline.put ("I",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("L",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("V",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("C",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("A",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("G",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("M",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("F",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("Y",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("W",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("H",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("K",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("R",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("E",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("Q",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("D",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("N",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("S",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("T",  new Integer (0));\r
-jalview.schemes.ResidueProperties.proline.put ("P",  new Integer (1));\r
-jalview.schemes.ResidueProperties.proline.put ("-",  new Integer (1));\r
-jalview.schemes.ResidueProperties.proline.put ("*",  new Integer (1));\r
-}{\r
-jalview.schemes.ResidueProperties.propHash.put ("hydrophobic", jalview.schemes.ResidueProperties.hydrophobic);\r
-jalview.schemes.ResidueProperties.propHash.put ("small", jalview.schemes.ResidueProperties.small);\r
-jalview.schemes.ResidueProperties.propHash.put ("positive", jalview.schemes.ResidueProperties.positive);\r
-jalview.schemes.ResidueProperties.propHash.put ("negative", jalview.schemes.ResidueProperties.negative);\r
-jalview.schemes.ResidueProperties.propHash.put ("charged", jalview.schemes.ResidueProperties.charged);\r
-jalview.schemes.ResidueProperties.propHash.put ("aromatic", jalview.schemes.ResidueProperties.aromatic);\r
-jalview.schemes.ResidueProperties.propHash.put ("aliphatic", jalview.schemes.ResidueProperties.aliphatic);\r
-jalview.schemes.ResidueProperties.propHash.put ("tiny", jalview.schemes.ResidueProperties.tiny);\r
-jalview.schemes.ResidueProperties.propHash.put ("proline", jalview.schemes.ResidueProperties.proline);\r
-jalview.schemes.ResidueProperties.propHash.put ("polar", jalview.schemes.ResidueProperties.polar);\r
-}{\r
-var propMatrixF =  Clazz.newIntArray (23, 23, 0);\r
-var propMatrixPos =  Clazz.newIntArray (23, 23, 0);\r
-var propMatrixEpos =  Clazz.newIntArray (23, 23, 0);\r
-for (var i = 0; i < 23; i++) {\r
-var maxF = 0;\r
-var maxP = 0;\r
-var maxEP = 0;\r
-var ic = "";\r
-if (jalview.schemes.ResidueProperties.aa.length > i) {\r
-ic += jalview.schemes.ResidueProperties.aa[i];\r
-} else {\r
-ic = "-";\r
-}for (var j = i + 1; j < 23; j++) {\r
-var jc = "";\r
-if (jalview.schemes.ResidueProperties.aa.length > j) {\r
-jc += jalview.schemes.ResidueProperties.aa[j];\r
-} else {\r
-jc = "-";\r
-}propMatrixF[i][j] = 0;\r
-propMatrixPos[i][j] = 0;\r
-propMatrixEpos[i][j] = 0;\r
-for (var en = jalview.schemes.ResidueProperties.propHash.keys (); en.hasMoreElements (); ) {\r
-var ph = en.nextElement ();\r
-var pph = jalview.schemes.ResidueProperties.propHash.get (ph);\r
-if (pph.get (ic) != null && pph.get (jc) != null) {\r
-var icp = pph.get (ic).intValue ();\r
-var jcp = pph.get (jc).intValue ();\r
-propMatrixPos[i][j] += icp == jcp && icp > 0 ? 2 : 0;\r
-propMatrixPos[j][i] += icp == jcp && icp > 0 ? 2 : 0;\r
-propMatrixF[i][j] += icp == jcp ? 2 : 0;\r
-propMatrixF[j][i] += icp == jcp ? 2 : 0;\r
-propMatrixEpos[i][j] += icp == jcp ? (1 + icp * 2) : 0;\r
-propMatrixEpos[j][i] += icp == jcp ? (1 + icp * 2) : 0;\r
-}}\r
-if (maxF < propMatrixF[i][j]) {\r
-maxF = propMatrixF[i][j];\r
-}if (maxP < propMatrixPos[i][j]) {\r
-maxP = propMatrixPos[i][j];\r
-}if (maxEP < propMatrixEpos[i][j]) {\r
-maxEP = propMatrixEpos[i][j];\r
-}}\r
-propMatrixF[i][i] = maxF;\r
-propMatrixPos[i][i] = maxP;\r
-propMatrixEpos[i][i] = maxEP;\r
-}\r
-jalview.schemes.ResidueProperties.scoreMatrices.put ("PID",  new jalview.analysis.scoremodels.PIDScoreModel ());\r
-jalview.schemes.ResidueProperties.scoreMatrices.put ("Displayed Features",  new jalview.analysis.scoremodels.FeatureScoreModel ());\r
-}Clazz.defineStatics (c$,\r
-"toDssp3State", null);\r
-{\r
-jalview.schemes.ResidueProperties.toDssp3State =  new java.util.Hashtable ();\r
-jalview.schemes.ResidueProperties.toDssp3State.put ("H", "H");\r
-jalview.schemes.ResidueProperties.toDssp3State.put ("E", "E");\r
-jalview.schemes.ResidueProperties.toDssp3State.put ("C", " ");\r
-jalview.schemes.ResidueProperties.toDssp3State.put (" ", " ");\r
-jalview.schemes.ResidueProperties.toDssp3State.put ("T", " ");\r
-jalview.schemes.ResidueProperties.toDssp3State.put ("B", "E");\r
-jalview.schemes.ResidueProperties.toDssp3State.put ("G", "H");\r
-jalview.schemes.ResidueProperties.toDssp3State.put ("I", "H");\r
-jalview.schemes.ResidueProperties.toDssp3State.put ("X", " ");\r
-}Clazz.defineStatics (c$,\r
-"toRNAssState", null,\r
-"RNAcloseParen",  Clazz.newBooleanArray (255, false));\r
-{\r
-jalview.schemes.ResidueProperties.toRNAssState =  new java.util.Hashtable ();\r
-jalview.schemes.ResidueProperties.toRNAssState.put (")", "(");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("(", "(");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("]", "[");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("[", "[");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("{", "{");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("}", "{");\r
-jalview.schemes.ResidueProperties.toRNAssState.put (">", ">");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("<", ">");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("A", "A");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("a", "A");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("B", "B");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("b", "B");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("C", "C");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("c", "C");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("D", "D");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("d", "D");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("E", "E");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("e", "E");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("F", "F");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("f", "F");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("G", "G");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("g", "G");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("H", "H");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("h", "H");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("I", "I");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("i", "I");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("J", "J");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("j", "J");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("K", "K");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("k", "K");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("L", "L");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("l", "L");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("M", "M");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("m", "M");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("N", "N");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("n", "N");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("O", "O");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("o", "O");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("P", "P");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("p", "P");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("Q", "Q");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("q", "Q");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("R", "R");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("r", "R");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("S", "S");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("s", "S");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("T", "T");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("t", "T");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("U", "U");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("u", "U");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("V", "V");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("v", "V");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("W", "W");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("w", "W");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("X", "X");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("x", "X");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("Y", "Y");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("y", "Y");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("Z", "Z");\r
-jalview.schemes.ResidueProperties.toRNAssState.put ("z", "Z");\r
-for (var p = 0; p < jalview.schemes.ResidueProperties.RNAcloseParen.length; p++) {\r
-jalview.schemes.ResidueProperties.RNAcloseParen[p] = false;\r
-}\r
-for (var k, $k = jalview.schemes.ResidueProperties.toRNAssState.keySet ().iterator (); $k.hasNext () && ((k = $k.next ()) || true);) {\r
-jalview.schemes.ResidueProperties.RNAcloseParen[k.charCodeAt (0)] = k.charAt (0) != jalview.schemes.ResidueProperties.toRNAssState.get (k).charAt (0);\r
-}\r
-}});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.analysis.scoremodels.FeatureScoreModel", "$.PIDScoreModel", "jalview.schemes.ScoreMatrix", "java.awt.Color", "java.util.ArrayList", "$.HashMap", "$.Hashtable", "$.Vector"], "jalview.schemes.ResidueProperties", ["java.lang.StringBuffer"], function () {
+c$ = Clazz.declareType (jalview.schemes, "ResidueProperties");
+c$.buildAmbiguityCodonSet = Clazz.defineMethod (c$, "buildAmbiguityCodonSet", 
+function () {
+if (jalview.schemes.ResidueProperties._ambiguityCodes.size () > 0) {
+System.err.println ("Ignoring multiple calls to buildAmbiguityCodonSet");
+return;
+}for (var acode, $acode = jalview.schemes.ResidueProperties.ambiguityCodes.entrySet ().iterator (); $acode.hasNext () && ((acode = $acode.next ()) || true);) {
+for (var r, $r = 0, $$r = acode.getValue (); $r < $$r.length && ((r = $$r[$r]) || true); $r++) {
+var codesfor = jalview.schemes.ResidueProperties._ambiguityCodes.get (r);
+if (codesfor == null) {
+jalview.schemes.ResidueProperties._ambiguityCodes.put (r, codesfor =  new java.util.ArrayList ());
+}if (!codesfor.contains (acode.getKey ())) {
+codesfor.add (acode.getKey ());
+} else {
+System.err.println ("Inconsistency in the IUBMB ambiguity code nomenclature table: collision for " + acode.getKey () + " in residue " + r);
+}}
+}
+var unambcodons = jalview.schemes.ResidueProperties.codonHash2.keySet ().toArray ( new Array (jalview.schemes.ResidueProperties.codonHash2.size ()));
+for (var codon, $codon = 0, $$codon = unambcodons; $codon < $$codon.length && ((codon = $$codon[$codon]) || true); $codon++) {
+var residue = jalview.schemes.ResidueProperties.codonHash2.get (codon);
+var acodon =  new Array (codon.length);
+for (var i = 0, iSize = codon.length; i < iSize; i++) {
+var _ac = "" + codon.charAt (i);
+var acodes = jalview.schemes.ResidueProperties._ambiguityCodes.get (_ac);
+if (acodes != null) {
+acodon[i] = acodes.toArray ( new Array (acodes.size ()));
+} else {
+acodon[i] =  Clazz.newArray (-1, []);
+}}
+var tpos =  Clazz.newIntArray (codon.length, 0);
+var cpos =  Clazz.newIntArray (codon.length, 0);
+for (var i = 0; i < tpos.length; i++) {
+tpos[i] = -1;
+}
+tpos[acodon.length - 1] = 0;
+var ipos;
+var j;
+while (tpos[0] < acodon[0].length) {
+var allres =  Clazz.newCharArray (tpos.length, '\0');
+var _acodon = "";
+var _anuc;
+for (ipos = 0; ipos < tpos.length; ipos++) {
+if (acodon[ipos].length == 0 || tpos[ipos] < 0) {
+_acodon += codon.charAt (ipos);
+allres[ipos] =  Clazz.newCharArray (-1, [codon.charAt (ipos)]);
+} else {
+_acodon += acodon[ipos][tpos[ipos]];
+var altbase = jalview.schemes.ResidueProperties.ambiguityCodes.get (acodon[ipos][tpos[ipos]]);
+allres[ipos] =  Clazz.newCharArray (altbase.length, '\0');
+j = 0;
+for (var ab, $ab = 0, $$ab = altbase; $ab < $$ab.length && ((ab = $$ab[$ab]) || true); $ab++) {
+allres[ipos][j++] = ab.charAt (0);
+}
+}}
+for (ipos = 0; ipos < cpos.length; ipos++) {
+cpos[ipos] = 0;
+}
+var valid = true;
+do {
+var _codon = "";
+for (j = 0; j < cpos.length; j++) {
+_codon += allres[j][cpos[j]];
+}
+var tr = jalview.schemes.ResidueProperties.codonHash2.get (_codon);
+if (valid = (tr != null && tr.equals (residue))) {
+ipos = acodon.length - 1;
+while (++cpos[ipos] >= allres[ipos].length && ipos > 0) {
+cpos[ipos] = 0;
+ipos--;
+}
+}} while (valid && cpos[0] < allres[0].length);
+if (valid) {
+jalview.schemes.ResidueProperties.codonHash2.put (_acodon, residue);
+} else {
+}ipos = acodon.length - 1;
+while (++tpos[ipos] >= acodon[ipos].length && ipos > 0) {
+tpos[ipos] = -1;
+ipos--;
+}
+}
+}
+});
+c$.getHydmax = Clazz.defineMethod (c$, "getHydmax", 
+function () {
+return 4.5;
+});
+c$.getHydmin = Clazz.defineMethod (c$, "getHydmin", 
+function () {
+return -3.9;
+});
+c$.getHyd = Clazz.defineMethod (c$, "getHyd", 
+function () {
+return jalview.schemes.ResidueProperties.hyd;
+});
+c$.getAA3Hash = Clazz.defineMethod (c$, "getAA3Hash", 
+function () {
+return jalview.schemes.ResidueProperties.aa3Hash;
+});
+c$.getDNA = Clazz.defineMethod (c$, "getDNA", 
+function () {
+return jalview.schemes.ResidueProperties.DNA;
+});
+c$.getBLOSUM62 = Clazz.defineMethod (c$, "getBLOSUM62", 
+function () {
+return jalview.schemes.ResidueProperties.BLOSUM62;
+});
+c$.getPAM250 = Clazz.defineMethod (c$, "getPAM250", 
+function (A1, A2) {
+return jalview.schemes.ResidueProperties.getPAM250 (A1.charAt (0), A2.charAt (0));
+}, "~S,~S");
+c$.getBLOSUM62 = Clazz.defineMethod (c$, "getBLOSUM62", 
+function (c1, c2) {
+var pog = 0;
+try {
+var a = jalview.schemes.ResidueProperties.aaIndex[c1.charCodeAt (0)];
+var b = jalview.schemes.ResidueProperties.aaIndex[c2.charCodeAt (0)];
+pog = jalview.schemes.ResidueProperties.BLOSUM62[a][b];
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+return pog;
+}, "~S,~S");
+c$.getCodons = Clazz.defineMethod (c$, "getCodons", 
+function (res) {
+if (jalview.schemes.ResidueProperties.codonHash.containsKey (res)) {
+return jalview.schemes.ResidueProperties.codonHash.get (res);
+}return null;
+}, "~S");
+c$.codonTranslate = Clazz.defineMethod (c$, "codonTranslate", 
+function (lccodon) {
+if (false) {
+return jalview.schemes.ResidueProperties._codonTranslate (lccodon);
+}var cdn = jalview.schemes.ResidueProperties.codonHash2.get (lccodon.toUpperCase ());
+if (cdn != null && cdn.equals ("*")) {
+return "STOP";
+}return cdn;
+}, "~S");
+c$._codonTranslate = Clazz.defineMethod (c$, "_codonTranslate", 
+function (lccodon) {
+var codon = lccodon.toUpperCase ();
+if (codon.indexOf ('X') > -1 || codon.indexOf ('N') > -1) {
+return "X";
+}for (var key, $key = jalview.schemes.ResidueProperties.codonHash.keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) {
+if (jalview.schemes.ResidueProperties.codonHash.get (key).contains (codon)) {
+return key;
+}}
+return null;
+}, "~S");
+c$.getDefaultPeptideMatrix = Clazz.defineMethod (c$, "getDefaultPeptideMatrix", 
+function () {
+return jalview.schemes.ResidueProperties.getBLOSUM62 ();
+});
+c$.getDefaultDnaMatrix = Clazz.defineMethod (c$, "getDefaultDnaMatrix", 
+function () {
+return jalview.schemes.ResidueProperties.getDNA ();
+});
+c$.getScoreMatrix = Clazz.defineMethod (c$, "getScoreMatrix", 
+function (pwtype) {
+var val = jalview.schemes.ResidueProperties.scoreMatrices.get (pwtype);
+if (val != null && Clazz.instanceOf (val, jalview.schemes.ScoreMatrix)) {
+return val;
+}return null;
+}, "~S");
+c$.getScoreModel = Clazz.defineMethod (c$, "getScoreModel", 
+function (pwtype) {
+return jalview.schemes.ResidueProperties.scoreMatrices.get (pwtype);
+}, "~S");
+c$.getPAM250 = Clazz.defineMethod (c$, "getPAM250", 
+function (c, d) {
+var a = jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)];
+var b = jalview.schemes.ResidueProperties.aaIndex[d.charCodeAt (0)];
+var pog = jalview.schemes.ResidueProperties.PAM250[a][b];
+return pog;
+}, "~S,~S");
+c$.getDssp3state = Clazz.defineMethod (c$, "getDssp3state", 
+function (ssstring) {
+if (ssstring == null) {
+return null;
+}var ss =  new StringBuffer ();
+for (var i = 0; i < ssstring.length; i++) {
+var ssc = ssstring.substring (i, i + 1);
+if (jalview.schemes.ResidueProperties.toDssp3State.containsKey (ssc)) {
+ss.append (jalview.schemes.ResidueProperties.toDssp3State.get (ssc));
+} else {
+ss.append (" ");
+}}
+return ss.toString ();
+}, "~S");
+c$.getRNASecStrucState = Clazz.defineMethod (c$, "getRNASecStrucState", 
+function (ssstring) {
+if (ssstring == null) {
+return null;
+}var ss =  new StringBuffer ();
+for (var i = 0; i < ssstring.length; i++) {
+var ssc = ssstring.substring (i, i + 1);
+if (jalview.schemes.ResidueProperties.toRNAssState.containsKey (ssc)) {
+ss.append (ssc);
+} else {
+ss.append (" ");
+}}
+return ss.toString ();
+}, "~S");
+c$.isCloseParenRNA = Clazz.defineMethod (c$, "isCloseParenRNA", 
+function (dc) {
+return jalview.schemes.ResidueProperties.RNAcloseParen[dc.charCodeAt (0)];
+}, "~S");
+c$.getResidues = Clazz.defineMethod (c$, "getResidues", 
+function (nucleotide, includeAmbiguous) {
+var result =  new java.util.ArrayList ();
+if (nucleotide) {
+for (var nuc, $nuc = jalview.schemes.ResidueProperties.nucleotideName.keySet ().iterator (); $nuc.hasNext () && ((nuc = $nuc.next ()) || true);) {
+var val = jalview.schemes.ResidueProperties.nucleotideIndex[nuc.charCodeAt (0)];
+if ((!includeAmbiguous && val > 4) || (val >= 10)) {
+continue;
+}nuc = nuc.toUpperCase ();
+if (!result.contains (nuc)) {
+result.add (nuc);
+}}
+} else {
+for (var res, $res = jalview.schemes.ResidueProperties.aa3Hash.keySet ().iterator (); $res.hasNext () && ((res = $res.next ()) || true);) {
+var index = jalview.schemes.ResidueProperties.aa3Hash.get (res).intValue ();
+if ((!includeAmbiguous && index >= 20) || index >= 23) {
+continue;
+}res = res.toUpperCase ();
+if (!result.contains (res)) {
+result.add (res);
+}}
+}return result;
+}, "~B,~B");
+c$.scoreMatrices = c$.prototype.scoreMatrices =  new java.util.Hashtable ();
+Clazz.defineStatics (c$,
+"aaIndex", null,
+"nucleotideIndex", null,
+"purinepyrimidineIndex", null);
+c$.aa3Hash = c$.prototype.aa3Hash =  new java.util.HashMap ();
+c$.aa2Triplet = c$.prototype.aa2Triplet =  new java.util.HashMap ();
+c$.nucleotideName = c$.prototype.nucleotideName =  new java.util.HashMap ();
+{
+jalview.schemes.ResidueProperties.aaIndex =  Clazz.newIntArray (255, 0);
+for (var i = 0; i < 255; i++) {
+jalview.schemes.ResidueProperties.aaIndex[i] = 23;
+}
+jalview.schemes.ResidueProperties.aaIndex['A'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.aaIndex['R'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.aaIndex['N'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.aaIndex['D'.charCodeAt (0)] = 3;
+jalview.schemes.ResidueProperties.aaIndex['C'.charCodeAt (0)] = 4;
+jalview.schemes.ResidueProperties.aaIndex['Q'.charCodeAt (0)] = 5;
+jalview.schemes.ResidueProperties.aaIndex['E'.charCodeAt (0)] = 6;
+jalview.schemes.ResidueProperties.aaIndex['G'.charCodeAt (0)] = 7;
+jalview.schemes.ResidueProperties.aaIndex['H'.charCodeAt (0)] = 8;
+jalview.schemes.ResidueProperties.aaIndex['I'.charCodeAt (0)] = 9;
+jalview.schemes.ResidueProperties.aaIndex['L'.charCodeAt (0)] = 10;
+jalview.schemes.ResidueProperties.aaIndex['K'.charCodeAt (0)] = 11;
+jalview.schemes.ResidueProperties.aaIndex['M'.charCodeAt (0)] = 12;
+jalview.schemes.ResidueProperties.aaIndex['F'.charCodeAt (0)] = 13;
+jalview.schemes.ResidueProperties.aaIndex['P'.charCodeAt (0)] = 14;
+jalview.schemes.ResidueProperties.aaIndex['S'.charCodeAt (0)] = 15;
+jalview.schemes.ResidueProperties.aaIndex['T'.charCodeAt (0)] = 16;
+jalview.schemes.ResidueProperties.aaIndex['W'.charCodeAt (0)] = 17;
+jalview.schemes.ResidueProperties.aaIndex['Y'.charCodeAt (0)] = 18;
+jalview.schemes.ResidueProperties.aaIndex['V'.charCodeAt (0)] = 19;
+jalview.schemes.ResidueProperties.aaIndex['B'.charCodeAt (0)] = 20;
+jalview.schemes.ResidueProperties.aaIndex['Z'.charCodeAt (0)] = 21;
+jalview.schemes.ResidueProperties.aaIndex['X'.charCodeAt (0)] = 22;
+jalview.schemes.ResidueProperties.aaIndex['U'.charCodeAt (0)] = 22;
+jalview.schemes.ResidueProperties.aaIndex['a'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.aaIndex['r'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.aaIndex['n'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.aaIndex['d'.charCodeAt (0)] = 3;
+jalview.schemes.ResidueProperties.aaIndex['c'.charCodeAt (0)] = 4;
+jalview.schemes.ResidueProperties.aaIndex['q'.charCodeAt (0)] = 5;
+jalview.schemes.ResidueProperties.aaIndex['e'.charCodeAt (0)] = 6;
+jalview.schemes.ResidueProperties.aaIndex['g'.charCodeAt (0)] = 7;
+jalview.schemes.ResidueProperties.aaIndex['h'.charCodeAt (0)] = 8;
+jalview.schemes.ResidueProperties.aaIndex['i'.charCodeAt (0)] = 9;
+jalview.schemes.ResidueProperties.aaIndex['l'.charCodeAt (0)] = 10;
+jalview.schemes.ResidueProperties.aaIndex['k'.charCodeAt (0)] = 11;
+jalview.schemes.ResidueProperties.aaIndex['m'.charCodeAt (0)] = 12;
+jalview.schemes.ResidueProperties.aaIndex['f'.charCodeAt (0)] = 13;
+jalview.schemes.ResidueProperties.aaIndex['p'.charCodeAt (0)] = 14;
+jalview.schemes.ResidueProperties.aaIndex['s'.charCodeAt (0)] = 15;
+jalview.schemes.ResidueProperties.aaIndex['t'.charCodeAt (0)] = 16;
+jalview.schemes.ResidueProperties.aaIndex['w'.charCodeAt (0)] = 17;
+jalview.schemes.ResidueProperties.aaIndex['y'.charCodeAt (0)] = 18;
+jalview.schemes.ResidueProperties.aaIndex['v'.charCodeAt (0)] = 19;
+jalview.schemes.ResidueProperties.aaIndex['b'.charCodeAt (0)] = 20;
+jalview.schemes.ResidueProperties.aaIndex['z'.charCodeAt (0)] = 21;
+jalview.schemes.ResidueProperties.aaIndex['x'.charCodeAt (0)] = 22;
+jalview.schemes.ResidueProperties.aaIndex['u'.charCodeAt (0)] = 22;
+}Clazz.defineStatics (c$,
+"maxProteinIndex", 23,
+"maxNucleotideIndex", 10);
+{
+jalview.schemes.ResidueProperties.nucleotideIndex =  Clazz.newIntArray (255, 0);
+for (var i = 0; i < 255; i++) {
+jalview.schemes.ResidueProperties.nucleotideIndex[i] = 10;
+}
+jalview.schemes.ResidueProperties.nucleotideIndex['A'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.nucleotideIndex['a'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.nucleotideIndex['C'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.nucleotideIndex['c'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.nucleotideIndex['G'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.nucleotideIndex['g'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.nucleotideIndex['T'.charCodeAt (0)] = 3;
+jalview.schemes.ResidueProperties.nucleotideIndex['t'.charCodeAt (0)] = 3;
+jalview.schemes.ResidueProperties.nucleotideIndex['U'.charCodeAt (0)] = 4;
+jalview.schemes.ResidueProperties.nucleotideIndex['u'.charCodeAt (0)] = 4;
+jalview.schemes.ResidueProperties.nucleotideIndex['I'.charCodeAt (0)] = 5;
+jalview.schemes.ResidueProperties.nucleotideIndex['i'.charCodeAt (0)] = 5;
+jalview.schemes.ResidueProperties.nucleotideIndex['X'.charCodeAt (0)] = 6;
+jalview.schemes.ResidueProperties.nucleotideIndex['x'.charCodeAt (0)] = 6;
+jalview.schemes.ResidueProperties.nucleotideIndex['R'.charCodeAt (0)] = 7;
+jalview.schemes.ResidueProperties.nucleotideIndex['r'.charCodeAt (0)] = 7;
+jalview.schemes.ResidueProperties.nucleotideIndex['Y'.charCodeAt (0)] = 8;
+jalview.schemes.ResidueProperties.nucleotideIndex['y'.charCodeAt (0)] = 8;
+jalview.schemes.ResidueProperties.nucleotideIndex['N'.charCodeAt (0)] = 9;
+jalview.schemes.ResidueProperties.nucleotideIndex['n'.charCodeAt (0)] = 9;
+jalview.schemes.ResidueProperties.nucleotideName.put ("A", "Adenine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("a", "Adenine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("G", "Guanine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("g", "Guanine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("C", "Cytosine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("c", "Cytosine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("T", "Thymine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("t", "Thymine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("U", "Uracil");
+jalview.schemes.ResidueProperties.nucleotideName.put ("u", "Uracil");
+jalview.schemes.ResidueProperties.nucleotideName.put ("I", "Inosine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("i", "Inosine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("X", "Xanthine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("x", "Xanthine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("R", "Unknown Purine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("r", "Unknown Purine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("Y", "Unknown Pyrimidine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("y", "Unknown Pyrimidine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("N", "Unknown");
+jalview.schemes.ResidueProperties.nucleotideName.put ("n", "Unknown");
+jalview.schemes.ResidueProperties.nucleotideName.put ("W", "Weak nucleotide (A or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("w", "Weak nucleotide (A or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("S", "Strong nucleotide (G or C)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("s", "Strong nucleotide (G or C)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("M", "Amino (A or C)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("m", "Amino (A or C)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("K", "Keto (G or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("k", "Keto (G or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("B", "Not A (G or C or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("b", "Not A (G or C or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("H", "Not G (A or C or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("h", "Not G (A or C or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("D", "Not C (A or G or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("d", "Not C (A or G or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("V", "Not T (A or G or C");
+jalview.schemes.ResidueProperties.nucleotideName.put ("v", "Not T (A or G or C");
+}{
+jalview.schemes.ResidueProperties.purinepyrimidineIndex =  Clazz.newIntArray (255, 0);
+for (var i = 0; i < 255; i++) {
+jalview.schemes.ResidueProperties.purinepyrimidineIndex[i] = 3;
+}
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['A'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['a'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['C'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['c'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['G'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['g'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['T'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['t'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['U'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['u'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['I'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['i'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['X'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['x'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['R'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['r'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['Y'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['y'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['N'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['n'.charCodeAt (0)] = 2;
+}{
+jalview.schemes.ResidueProperties.aa3Hash.put ("ALA",  new Integer (0));
+jalview.schemes.ResidueProperties.aa3Hash.put ("ARG",  new Integer (1));
+jalview.schemes.ResidueProperties.aa3Hash.put ("ASN",  new Integer (2));
+jalview.schemes.ResidueProperties.aa3Hash.put ("ASP",  new Integer (3));
+jalview.schemes.ResidueProperties.aa3Hash.put ("CYS",  new Integer (4));
+jalview.schemes.ResidueProperties.aa3Hash.put ("GLN",  new Integer (5));
+jalview.schemes.ResidueProperties.aa3Hash.put ("GLU",  new Integer (6));
+jalview.schemes.ResidueProperties.aa3Hash.put ("GLY",  new Integer (7));
+jalview.schemes.ResidueProperties.aa3Hash.put ("HIS",  new Integer (8));
+jalview.schemes.ResidueProperties.aa3Hash.put ("ILE",  new Integer (9));
+jalview.schemes.ResidueProperties.aa3Hash.put ("LEU",  new Integer (10));
+jalview.schemes.ResidueProperties.aa3Hash.put ("LYS",  new Integer (11));
+jalview.schemes.ResidueProperties.aa3Hash.put ("MET",  new Integer (12));
+jalview.schemes.ResidueProperties.aa3Hash.put ("PHE",  new Integer (13));
+jalview.schemes.ResidueProperties.aa3Hash.put ("PRO",  new Integer (14));
+jalview.schemes.ResidueProperties.aa3Hash.put ("SER",  new Integer (15));
+jalview.schemes.ResidueProperties.aa3Hash.put ("THR",  new Integer (16));
+jalview.schemes.ResidueProperties.aa3Hash.put ("TRP",  new Integer (17));
+jalview.schemes.ResidueProperties.aa3Hash.put ("TYR",  new Integer (18));
+jalview.schemes.ResidueProperties.aa3Hash.put ("VAL",  new Integer (19));
+jalview.schemes.ResidueProperties.aa3Hash.put ("ASX",  new Integer (20));
+jalview.schemes.ResidueProperties.aa3Hash.put ("GLX",  new Integer (21));
+jalview.schemes.ResidueProperties.aa3Hash.put ("XAA",  new Integer (22));
+jalview.schemes.ResidueProperties.aa3Hash.put ("-",  new Integer (23));
+jalview.schemes.ResidueProperties.aa3Hash.put ("*",  new Integer (23));
+jalview.schemes.ResidueProperties.aa3Hash.put (".",  new Integer (23));
+jalview.schemes.ResidueProperties.aa3Hash.put (" ",  new Integer (23));
+jalview.schemes.ResidueProperties.aa3Hash.put ("Gap",  new Integer (23));
+}{
+jalview.schemes.ResidueProperties.aa2Triplet.put ("A", "ALA");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("a", "ALA");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("R", "ARG");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("r", "ARG");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("N", "ASN");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("n", "ASN");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("D", "ASP");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("d", "ASP");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("C", "CYS");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("c", "CYS");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("Q", "GLN");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("q", "GLN");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("E", "GLU");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("e", "GLU");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("G", "GLY");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("g", "GLY");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("H", "HIS");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("h", "HIS");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("I", "ILE");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("i", "ILE");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("L", "LEU");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("l", "LEU");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("K", "LYS");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("k", "LYS");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("M", "MET");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("m", "MET");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("F", "PHE");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("f", "PHE");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("P", "PRO");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("p", "PRO");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("S", "SER");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("s", "SER");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("T", "THR");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("t", "THR");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("W", "TRP");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("w", "TRP");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("Y", "TYR");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("y", "TYR");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("V", "VAL");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("v", "VAL");
+}Clazz.defineStatics (c$,
+"aa",  Clazz.newArray (-1, ["A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V", "B", "Z", "X", "_", "*", ".", " "]));
+c$.midBlue = c$.prototype.midBlue =  new java.awt.Color (100, 100, 255);
+c$.scaleColours = c$.prototype.scaleColours =  new java.util.Vector ();
+{
+jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (114, 0, 147));
+jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (156, 0, 98));
+jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (190, 0, 0));
+jalview.schemes.ResidueProperties.scaleColours.addElement (java.awt.Color.red);
+jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (255, 125, 0));
+jalview.schemes.ResidueProperties.scaleColours.addElement (java.awt.Color.orange);
+jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (255, 194, 85));
+jalview.schemes.ResidueProperties.scaleColours.addElement (java.awt.Color.yellow);
+jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (255, 255, 181));
+jalview.schemes.ResidueProperties.scaleColours.addElement (java.awt.Color.white);
+}c$.taylor = c$.prototype.taylor =  Clazz.newArray (-1, [ new java.awt.Color (204, 255, 0),  new java.awt.Color (0, 0, 255),  new java.awt.Color (204, 0, 255),  new java.awt.Color (255, 0, 0),  new java.awt.Color (255, 255, 0),  new java.awt.Color (255, 0, 204),  new java.awt.Color (255, 0, 102),  new java.awt.Color (255, 153, 0),  new java.awt.Color (0, 102, 255),  new java.awt.Color (102, 255, 0),  new java.awt.Color (51, 255, 0),  new java.awt.Color (102, 0, 255),  new java.awt.Color (0, 255, 0),  new java.awt.Color (0, 255, 102),  new java.awt.Color (255, 204, 0),  new java.awt.Color (255, 51, 0),  new java.awt.Color (255, 102, 0),  new java.awt.Color (0, 204, 255),  new java.awt.Color (0, 255, 204),  new java.awt.Color (153, 255, 0), java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white]);
+c$.nucleotide = c$.prototype.nucleotide =  Clazz.newArray (-1, [ new java.awt.Color (100, 247, 63),  new java.awt.Color (255, 179, 64),  new java.awt.Color (235, 65, 60),  new java.awt.Color (60, 136, 238),  new java.awt.Color (60, 136, 238), java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white]);
+c$.purinepyrimidine = c$.prototype.purinepyrimidine =  Clazz.newArray (-1, [ new java.awt.Color (255, 131, 250),  new java.awt.Color (64, 224, 208), java.awt.Color.white, java.awt.Color.white]);
+c$.zappo = c$.prototype.zappo =  Clazz.newArray (-1, [java.awt.Color.pink, jalview.schemes.ResidueProperties.midBlue, java.awt.Color.green, java.awt.Color.red, java.awt.Color.yellow, java.awt.Color.green, java.awt.Color.red, java.awt.Color.magenta, jalview.schemes.ResidueProperties.midBlue, java.awt.Color.pink, java.awt.Color.pink, jalview.schemes.ResidueProperties.midBlue, java.awt.Color.pink, java.awt.Color.orange, java.awt.Color.magenta, java.awt.Color.green, java.awt.Color.green, java.awt.Color.orange, java.awt.Color.orange, java.awt.Color.pink, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white]);
+Clazz.defineStatics (c$,
+"hyd2",  Clazz.newDoubleArray (-1, [0.62, 0.29, -0.9, -0.74, 1.19, 0.48, -0.4, 1.38, -1.5, 1.06, 0.64, -0.78, 0.12, -0.85, -2.53, -0.18, -0.05, 1.08, 0.81, 0.0, 0.26, 0.0, 0.0]),
+"helix",  Clazz.newDoubleArray (-1, [1.42, 0.98, 0.67, 1.01, 0.70, 1.11, 1.51, 0.57, 1.00, 1.08, 1.21, 1.16, 1.45, 1.13, 0.57, 0.77, 0.83, 1.08, 0.69, 1.06, 0.84, 1.31, 1.00, 0.0]),
+"helixmin", 0.57,
+"helixmax", 1.51,
+"strand",  Clazz.newDoubleArray (-1, [0.83, 0.93, 0.89, 0.54, 1.19, 1.10, 0.37, 0.75, 0.87, 1.60, 1.30, 0.74, 1.05, 1.38, 0.55, 0.75, 1.19, 1.37, 1.47, 1.70, 0.72, 0.74, 1.0, 0.0]),
+"strandmin", 0.37,
+"strandmax", 1.7,
+"turn",  Clazz.newDoubleArray (-1, [0.66, 0.95, 1.56, 1.46, 1.19, 0.98, 0.74, 1.56, 0.95, 0.47, 0.59, 1.01, 0.60, 0.60, 1.52, 1.43, 0.96, 0.96, 1.14, 0.50, 1.51, 0.86, 1.00, 0, 0]),
+"turnmin", 0.47,
+"turnmax", 1.56,
+"buried",  Clazz.newDoubleArray (-1, [1.7, 0.1, 0.4, 0.4, 4.6, 0.3, 0.3, 1.8, 0.8, 3.1, 2.4, 0.05, 1.9, 2.2, 0.6, 0.8, 0.7, 1.6, 0.5, 2.9, 0.4, 0.3, 1.358, 0.00]),
+"buriedmin", 0.05,
+"buriedmax", 4.6,
+"hyd",  Clazz.newDoubleArray (-1, [1.8, -4.5, -3.5, -3.5, 2.5, -3.5, -3.5, -0.4, -3.2, 4.5, 3.8, -3.9, 1.9, 2.8, -1.6, -0.8, -0.7, -0.9, -1.3, 4.2, -3.5, -3.5, -0.49, 0.0]),
+"hydmax", 4.5,
+"hydmin", -3.9,
+"BLOSUM62",  Clazz.newArray (-1, [ Clazz.newIntArray (-1, [4, -1, -2, -2, 0, -1, -1, 0, -2, -1, -1, -1, -1, -2, -1, 1, 0, -3, -2, 0, -2, -1, 0, -4]),  Clazz.newIntArray (-1, [-1, 5, 0, -2, -3, 1, 0, -2, 0, -3, -2, 2, -1, -3, -2, -1, -1, -3, -2, -3, -1, 0, -1, -4]),  Clazz.newIntArray (-1, [-2, 0, 6, 1, -3, 0, 0, 0, 1, -3, -3, 0, -2, -3, -2, 1, 0, -4, -2, -3, 3, 0, -1, -4]),  Clazz.newIntArray (-1, [-2, -2, 1, 6, -3, 0, 2, -1, -1, -3, -4, -1, -3, -3, -1, 0, -1, -4, -3, -3, 4, 1, -1, -4]),  Clazz.newIntArray (-1, [0, 3, -3, -3, 9, -3, -4, -3, -3, -1, -1, -3, -1, -2, -3, -1, -1, -2, -2, -1, -3, -3, -2, -4]),  Clazz.newIntArray (-1, [-1, 1, 0, 0, -3, 5, 2, -2, 0, -3, -2, 1, 0, -3, -1, 0, -1, -2, -1, -2, 0, 3, -1, -4]),  Clazz.newIntArray (-1, [-1, 0, 0, 2, -4, 2, 5, -2, 0, -3, -3, 1, -2, -3, -1, 0, -1, -3, -2, -2, 1, 4, -1, -4]),  Clazz.newIntArray (-1, [0, -2, 0, -1, -3, -2, -2, 6, -2, -4, -4, -2, -3, -3, -2, 0, -2, -2, -3, -3, -1, -2, -1, -4]),  Clazz.newIntArray (-1, [-2, 0, 1, -1, -3, 0, 0, -2, 8, -3, -3, -1, -2, -1, -2, -1, -2, -2, 2, -3, 0, 0, -1, -4]),  Clazz.newIntArray (-1, [-1, -3, -3, -3, -1, -3, -3, -4, -3, 4, 2, -3, 1, 0, -3, -2, -1, -3, -1, 3, -3, -3, -1, -4]),  Clazz.newIntArray (-1, [-1, -2, -3, -4, -1, -2, -3, -4, -3, 2, 4, -2, 2, 0, -3, -2, -1, -2, -1, 1, -4, -3, -1, -4]),  Clazz.newIntArray (-1, [-1, 2, 0, -1, -3, 1, 1, -2, -1, -3, -2, 5, -1, -3, -1, 0, -1, -3, -2, -2, 0, 1, -1, -4]),  Clazz.newIntArray (-1, [-1, -1, -2, -3, -1, 0, -2, -3, -2, 1, 2, -1, 5, 0, -2, -1, -1, -1, -1, 1, -3, -1, -1, -4]),  Clazz.newIntArray (-1, [-2, -3, -3, -3, -2, -3, -3, -3, -1, 0, 0, -3, 0, 6, -4, -2, -2, 1, 3, -1, -3, -3, -1, -4]),  Clazz.newIntArray (-1, [-1, -2, -2, -1, -3, -1, -1, -2, -2, -3, -3, -1, -2, -4, 7, -1, -1, -4, -3, -2, -2, -1, -2, -4]),  Clazz.newIntArray (-1, [1, -1, 1, 0, -1, 0, 0, 0, -1, -2, -2, 0, -1, -2, -1, 4, 1, -3, -2, -2, 0, 0, 0, -4]),  Clazz.newIntArray (-1, [0, -1, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -2, -1, 1, 5, -2, -2, 0, -1, -1, 0, -4]),  Clazz.newIntArray (-1, [-3, -3, -4, -4, -2, -2, -3, -2, -2, -3, -2, -3, -1, 1, -4, -3, -2, 11, 2, -3, -4, -3, -2, -4]),  Clazz.newIntArray (-1, [-2, -2, -2, -3, -2, -1, -2, -3, 2, -1, -1, -2, -1, 3, -3, -2, -2, 2, 7, -1, -3, -2, -1, -4]),  Clazz.newIntArray (-1, [0, -3, -3, -3, -1, -2, -2, -3, -3, 3, 1, -2, 1, -1, -2, -2, 0, -3, -1, 4, -3, -2, -1, -4]),  Clazz.newIntArray (-1, [-2, -1, 3, 4, -3, 0, 1, -1, 0, -3, -4, 0, -3, -3, -2, 0, -1, -4, -3, -3, 4, 1, -1, -4]),  Clazz.newIntArray (-1, [-1, 0, 0, 1, -3, 3, 4, -2, 0, -3, -3, 1, -1, -3, -1, 0, -1, -3, -2, -2, 1, 4, -1, -4]),  Clazz.newIntArray (-1, [0, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, 0, 0, -2, -1, -1, -1, -1, -1, -4]),  Clazz.newIntArray (-1, [-4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 1])]),
+"PAM250",  Clazz.newArray (-1, [ Clazz.newIntArray (-1, [2, -2, 0, 0, -2, 0, 0, 1, -1, -1, -2, -1, -1, -3, 1, 1, 1, -6, -3, 0, 0, 0, 0, -8]),  Clazz.newIntArray (-1, [-2, 6, 0, -1, -4, 1, -1, -3, 2, -2, -3, 3, 0, -4, 0, 0, -1, 2, -4, -2, -1, 0, -1, -8]),  Clazz.newIntArray (-1, [0, 0, 2, 2, -4, 1, 1, 0, 2, -2, -3, 1, -2, -3, 0, 1, 0, -4, -2, -2, 2, 1, 0, -8]),  Clazz.newIntArray (-1, [0, -1, 2, 4, -5, 2, 3, 1, 1, -2, -4, 0, -3, -6, -1, 0, 0, -7, -4, -2, 3, 3, -1, -8]),  Clazz.newIntArray (-1, [-2, -4, -4, -5, 12, -5, -5, -3, -3, -2, -6, -5, -5, -4, -3, 0, -2, -8, 0, -2, -4, -5, -3, -8]),  Clazz.newIntArray (-1, [0, 1, 1, 2, -5, 4, 2, -1, 3, -2, -2, 1, -1, -5, 0, -1, -1, -5, -4, -2, 1, 3, -1, -8]),  Clazz.newIntArray (-1, [0, -1, 1, 3, -5, 2, 4, 0, 1, -2, -3, 0, -2, -5, -1, 0, 0, -7, -4, -2, 3, 3, -1, -8]),  Clazz.newIntArray (-1, [1, -3, 0, 1, -3, -1, 0, 5, -2, -3, -4, -2, -3, -5, 0, 1, 0, -7, -5, -1, 0, 0, -1, -8]),  Clazz.newIntArray (-1, [-1, 2, 2, 1, -3, 3, 1, -2, 6, -2, -2, 0, -2, -2, 0, -1, -1, -3, 0, -2, 1, 2, -1, -8]),  Clazz.newIntArray (-1, [-1, -2, -2, -2, -2, -2, -2, -3, -2, 5, 2, -2, 2, 1, -2, -1, 0, -5, -1, 4, -2, -2, -1, -8]),  Clazz.newIntArray (-1, [-2, -3, -3, -4, -6, -2, -3, -4, -2, 2, 6, -3, 4, 2, -3, -3, -2, -2, -1, 2, -3, -3, -1, -8]),  Clazz.newIntArray (-1, [-1, 3, 1, 0, -5, 1, 0, -2, 0, -2, -3, 5, 0, -5, -1, 0, 0, -3, -4, -2, 1, 0, -1, -8]),  Clazz.newIntArray (-1, [-1, 0, -2, -3, -5, -1, -2, -3, -2, 2, 4, 0, 6, 0, -2, -2, -1, -4, -2, 2, -2, -2, -1, -8]),  Clazz.newIntArray (-1, [-3, -4, -3, -6, -4, -5, -5, -5, -2, 1, 2, -5, 0, 9, -5, -3, -3, 0, 7, -1, -4, -5, -2, -8]),  Clazz.newIntArray (-1, [1, 0, 0, -1, -3, 0, -1, 0, 0, -2, -3, -1, -2, -5, 6, 1, 0, -6, -5, -1, -1, 0, -1, -8]),  Clazz.newIntArray (-1, [1, 0, 1, 0, 0, -1, 0, 1, -1, -1, -3, 0, -2, -3, 1, 2, 1, -2, -3, -1, 0, 0, 0, -8]),  Clazz.newIntArray (-1, [1, -1, 0, 0, -2, -1, 0, 0, -1, 0, -2, 0, -1, -3, 0, 1, 3, -5, -3, 0, 0, -1, 0, -8]),  Clazz.newIntArray (-1, [-6, 2, -4, -7, -8, -5, -7, -7, -3, -5, -2, -3, -4, 0, -6, -2, -5, 17, 0, -6, -5, -6, -4, -8]),  Clazz.newIntArray (-1, [-3, -4, -2, -4, 0, -4, -4, -5, 0, -1, -1, -4, -2, 7, -5, -3, -3, 0, 10, -2, -3, -4, -2, -8]),  Clazz.newIntArray (-1, [0, -2, -2, -2, -2, -2, -2, -1, -2, 4, 2, -2, 2, -1, -1, -1, 0, -6, -2, 4, -2, -2, -1, -8]),  Clazz.newIntArray (-1, [0, -1, 2, 3, -4, 1, 3, 0, 1, -2, -3, 1, -2, -4, -1, 0, 0, -5, -3, -2, 3, 2, -1, -8]),  Clazz.newIntArray (-1, [0, 0, 1, 3, -5, 3, 3, 0, 2, -2, -3, 0, -2, -5, 0, 0, -1, -6, -4, -2, 2, 3, -1, -8]),  Clazz.newIntArray (-1, [0, -1, 0, -1, -3, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, 0, 0, -4, -2, -1, -1, -1, -1, -8]),  Clazz.newIntArray (-1, [-8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, 1])]));
+c$.ssHash = c$.prototype.ssHash =  new java.util.Hashtable ();
+{
+jalview.schemes.ResidueProperties.ssHash.put ("H", java.awt.Color.magenta);
+jalview.schemes.ResidueProperties.ssHash.put ("E", java.awt.Color.yellow);
+jalview.schemes.ResidueProperties.ssHash.put ("-", java.awt.Color.white);
+jalview.schemes.ResidueProperties.ssHash.put (".", java.awt.Color.white);
+jalview.schemes.ResidueProperties.ssHash.put ("S", java.awt.Color.cyan);
+jalview.schemes.ResidueProperties.ssHash.put ("T", java.awt.Color.blue);
+jalview.schemes.ResidueProperties.ssHash.put ("G", java.awt.Color.pink);
+jalview.schemes.ResidueProperties.ssHash.put ("I", java.awt.Color.pink);
+jalview.schemes.ResidueProperties.ssHash.put ("B", java.awt.Color.yellow);
+}Clazz.defineStatics (c$,
+"DNA",  Clazz.newArray (-1, [ Clazz.newIntArray (-1, [10, -8, -8, -8, -8, 1, 1, 1, -8, 1, 1]),  Clazz.newIntArray (-1, [-8, 10, -8, -8, -8, 1, 1, -8, 1, 1, 1]),  Clazz.newIntArray (-1, [-8, -8, 10, -8, -8, 1, 1, 1, -8, 1, 1]),  Clazz.newIntArray (-1, [-8, -8, -8, 10, 10, 1, 1, -8, 1, 1, 1]),  Clazz.newIntArray (-1, [-8, -8, -8, 10, 10, 1, 1, -8, 1, 1, 1]),  Clazz.newIntArray (-1, [1, 1, 1, 1, 1, 10, 0, 0, 0, 1, 1]),  Clazz.newIntArray (-1, [1, 1, 1, 1, 1, 0, 10, 0, 0, 1, 1]),  Clazz.newIntArray (-1, [1, -8, 1, -8, -8, 0, 0, 10, -8, 1, 1]),  Clazz.newIntArray (-1, [-8, 1, -8, 1, 1, 0, 0, -8, 10, 1, 1]),  Clazz.newIntArray (-1, [1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 1]),  Clazz.newIntArray (-1, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])]));
+{
+jalview.schemes.ResidueProperties.scoreMatrices.put ("BLOSUM62",  new jalview.schemes.ScoreMatrix ("BLOSUM62", jalview.schemes.ResidueProperties.BLOSUM62, 0));
+jalview.schemes.ResidueProperties.scoreMatrices.put ("PAM250",  new jalview.schemes.ScoreMatrix ("PAM250", jalview.schemes.ResidueProperties.PAM250, 0));
+jalview.schemes.ResidueProperties.scoreMatrices.put ("DNA",  new jalview.schemes.ScoreMatrix ("DNA", jalview.schemes.ResidueProperties.DNA, 1));
+}c$.pidColours = c$.prototype.pidColours =  Clazz.newArray (-1, [jalview.schemes.ResidueProperties.midBlue,  new java.awt.Color (153, 153, 255),  new java.awt.Color (204, 204, 255)]);
+Clazz.defineStatics (c$,
+"pidThresholds",  Clazz.newFloatArray (-1, [80, 60, 40]));
+c$.codonHash = c$.prototype.codonHash =  new java.util.HashMap ();
+c$.Lys = c$.prototype.Lys =  new java.util.ArrayList ();
+c$.Asn = c$.prototype.Asn =  new java.util.ArrayList ();
+c$.Gln = c$.prototype.Gln =  new java.util.ArrayList ();
+c$.His = c$.prototype.His =  new java.util.ArrayList ();
+c$.Glu = c$.prototype.Glu =  new java.util.ArrayList ();
+c$.Asp = c$.prototype.Asp =  new java.util.ArrayList ();
+c$.Tyr = c$.prototype.Tyr =  new java.util.ArrayList ();
+c$.Thr = c$.prototype.Thr =  new java.util.ArrayList ();
+c$.Pro = c$.prototype.Pro =  new java.util.ArrayList ();
+c$.Ala = c$.prototype.Ala =  new java.util.ArrayList ();
+c$.Ser = c$.prototype.Ser =  new java.util.ArrayList ();
+c$.Arg = c$.prototype.Arg =  new java.util.ArrayList ();
+c$.Gly = c$.prototype.Gly =  new java.util.ArrayList ();
+c$.Trp = c$.prototype.Trp =  new java.util.ArrayList ();
+c$.Cys = c$.prototype.Cys =  new java.util.ArrayList ();
+c$.Ile = c$.prototype.Ile =  new java.util.ArrayList ();
+c$.Met = c$.prototype.Met =  new java.util.ArrayList ();
+c$.Leu = c$.prototype.Leu =  new java.util.ArrayList ();
+c$.Val = c$.prototype.Val =  new java.util.ArrayList ();
+c$.Phe = c$.prototype.Phe =  new java.util.ArrayList ();
+c$.STOP = c$.prototype.STOP =  new java.util.ArrayList ();
+Clazz.defineStatics (c$,
+"START", "ATG");
+{
+jalview.schemes.ResidueProperties.codonHash.put ("K", jalview.schemes.ResidueProperties.Lys);
+jalview.schemes.ResidueProperties.codonHash.put ("N", jalview.schemes.ResidueProperties.Asn);
+jalview.schemes.ResidueProperties.codonHash.put ("Q", jalview.schemes.ResidueProperties.Gln);
+jalview.schemes.ResidueProperties.codonHash.put ("H", jalview.schemes.ResidueProperties.His);
+jalview.schemes.ResidueProperties.codonHash.put ("E", jalview.schemes.ResidueProperties.Glu);
+jalview.schemes.ResidueProperties.codonHash.put ("D", jalview.schemes.ResidueProperties.Asp);
+jalview.schemes.ResidueProperties.codonHash.put ("Y", jalview.schemes.ResidueProperties.Tyr);
+jalview.schemes.ResidueProperties.codonHash.put ("T", jalview.schemes.ResidueProperties.Thr);
+jalview.schemes.ResidueProperties.codonHash.put ("P", jalview.schemes.ResidueProperties.Pro);
+jalview.schemes.ResidueProperties.codonHash.put ("A", jalview.schemes.ResidueProperties.Ala);
+jalview.schemes.ResidueProperties.codonHash.put ("S", jalview.schemes.ResidueProperties.Ser);
+jalview.schemes.ResidueProperties.codonHash.put ("R", jalview.schemes.ResidueProperties.Arg);
+jalview.schemes.ResidueProperties.codonHash.put ("G", jalview.schemes.ResidueProperties.Gly);
+jalview.schemes.ResidueProperties.codonHash.put ("W", jalview.schemes.ResidueProperties.Trp);
+jalview.schemes.ResidueProperties.codonHash.put ("C", jalview.schemes.ResidueProperties.Cys);
+jalview.schemes.ResidueProperties.codonHash.put ("I", jalview.schemes.ResidueProperties.Ile);
+jalview.schemes.ResidueProperties.codonHash.put ("M", jalview.schemes.ResidueProperties.Met);
+jalview.schemes.ResidueProperties.codonHash.put ("L", jalview.schemes.ResidueProperties.Leu);
+jalview.schemes.ResidueProperties.codonHash.put ("V", jalview.schemes.ResidueProperties.Val);
+jalview.schemes.ResidueProperties.codonHash.put ("F", jalview.schemes.ResidueProperties.Phe);
+jalview.schemes.ResidueProperties.codonHash.put ("STOP", jalview.schemes.ResidueProperties.STOP);
+}c$.ambiguityCodes = c$.prototype.ambiguityCodes =  new java.util.Hashtable ();
+c$.codonHash2 = c$.prototype.codonHash2 =  new java.util.Hashtable ();
+c$._ambiguityCodes = c$.prototype._ambiguityCodes =  new java.util.Hashtable ();
+{
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("R",  Clazz.newArray (-1, ["A", "G"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("Y",  Clazz.newArray (-1, ["T", "C"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("W",  Clazz.newArray (-1, ["A", "T"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("S",  Clazz.newArray (-1, ["G", "C"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("M",  Clazz.newArray (-1, ["A", "C"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("K",  Clazz.newArray (-1, ["G", "T"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("H",  Clazz.newArray (-1, ["A", "T", "C"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("B",  Clazz.newArray (-1, ["G", "T", "C"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("V",  Clazz.newArray (-1, ["G", "A", "C"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("D",  Clazz.newArray (-1, ["G", "A", "T"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("N",  Clazz.newArray (-1, ["G", "A", "T", "C"]));
+jalview.schemes.ResidueProperties.codonHash2.put ("AAA", "K");
+jalview.schemes.ResidueProperties.codonHash2.put ("AAG", "K");
+jalview.schemes.ResidueProperties.codonHash2.put ("AAC", "N");
+jalview.schemes.ResidueProperties.codonHash2.put ("AAT", "N");
+jalview.schemes.ResidueProperties.codonHash2.put ("CAA", "Q");
+jalview.schemes.ResidueProperties.codonHash2.put ("CAG", "Q");
+jalview.schemes.ResidueProperties.codonHash2.put ("CAC", "H");
+jalview.schemes.ResidueProperties.codonHash2.put ("CAT", "H");
+jalview.schemes.ResidueProperties.codonHash2.put ("GAA", "E");
+jalview.schemes.ResidueProperties.codonHash2.put ("GAG", "E");
+jalview.schemes.ResidueProperties.codonHash2.put ("GAC", "D");
+jalview.schemes.ResidueProperties.codonHash2.put ("GAT", "D");
+jalview.schemes.ResidueProperties.codonHash2.put ("TAC", "Y");
+jalview.schemes.ResidueProperties.codonHash2.put ("TAT", "Y");
+jalview.schemes.ResidueProperties.codonHash2.put ("ACA", "T");
+jalview.schemes.ResidueProperties.codonHash2.put ("ACC", "T");
+jalview.schemes.ResidueProperties.codonHash2.put ("ACT", "T");
+jalview.schemes.ResidueProperties.codonHash2.put ("ACG", "T");
+jalview.schemes.ResidueProperties.codonHash2.put ("CCA", "P");
+jalview.schemes.ResidueProperties.codonHash2.put ("CCG", "P");
+jalview.schemes.ResidueProperties.codonHash2.put ("CCC", "P");
+jalview.schemes.ResidueProperties.codonHash2.put ("CCT", "P");
+jalview.schemes.ResidueProperties.codonHash2.put ("GCA", "A");
+jalview.schemes.ResidueProperties.codonHash2.put ("GCG", "A");
+jalview.schemes.ResidueProperties.codonHash2.put ("GCC", "A");
+jalview.schemes.ResidueProperties.codonHash2.put ("GCT", "A");
+jalview.schemes.ResidueProperties.codonHash2.put ("TCA", "S");
+jalview.schemes.ResidueProperties.codonHash2.put ("TCG", "S");
+jalview.schemes.ResidueProperties.codonHash2.put ("TCC", "S");
+jalview.schemes.ResidueProperties.codonHash2.put ("TCT", "S");
+jalview.schemes.ResidueProperties.codonHash2.put ("AGC", "S");
+jalview.schemes.ResidueProperties.codonHash2.put ("AGT", "S");
+jalview.schemes.ResidueProperties.codonHash2.put ("AGA", "R");
+jalview.schemes.ResidueProperties.codonHash2.put ("AGG", "R");
+jalview.schemes.ResidueProperties.codonHash2.put ("CGA", "R");
+jalview.schemes.ResidueProperties.codonHash2.put ("CGG", "R");
+jalview.schemes.ResidueProperties.codonHash2.put ("CGC", "R");
+jalview.schemes.ResidueProperties.codonHash2.put ("CGT", "R");
+jalview.schemes.ResidueProperties.codonHash2.put ("GGA", "G");
+jalview.schemes.ResidueProperties.codonHash2.put ("GGG", "G");
+jalview.schemes.ResidueProperties.codonHash2.put ("GGC", "G");
+jalview.schemes.ResidueProperties.codonHash2.put ("GGT", "G");
+jalview.schemes.ResidueProperties.codonHash2.put ("TGA", "*");
+jalview.schemes.ResidueProperties.codonHash2.put ("TAA", "*");
+jalview.schemes.ResidueProperties.codonHash2.put ("TAG", "*");
+jalview.schemes.ResidueProperties.codonHash2.put ("TGG", "W");
+jalview.schemes.ResidueProperties.codonHash2.put ("TGC", "C");
+jalview.schemes.ResidueProperties.codonHash2.put ("TGT", "C");
+jalview.schemes.ResidueProperties.codonHash2.put ("ATA", "I");
+jalview.schemes.ResidueProperties.codonHash2.put ("ATC", "I");
+jalview.schemes.ResidueProperties.codonHash2.put ("ATT", "I");
+jalview.schemes.ResidueProperties.codonHash2.put ("ATG", "M");
+jalview.schemes.ResidueProperties.codonHash2.put ("CTA", "L");
+jalview.schemes.ResidueProperties.codonHash2.put ("CTG", "L");
+jalview.schemes.ResidueProperties.codonHash2.put ("CTC", "L");
+jalview.schemes.ResidueProperties.codonHash2.put ("CTT", "L");
+jalview.schemes.ResidueProperties.codonHash2.put ("TTA", "L");
+jalview.schemes.ResidueProperties.codonHash2.put ("TTG", "L");
+jalview.schemes.ResidueProperties.codonHash2.put ("GTA", "V");
+jalview.schemes.ResidueProperties.codonHash2.put ("GTG", "V");
+jalview.schemes.ResidueProperties.codonHash2.put ("GTC", "V");
+jalview.schemes.ResidueProperties.codonHash2.put ("GTT", "V");
+jalview.schemes.ResidueProperties.codonHash2.put ("TTC", "F");
+jalview.schemes.ResidueProperties.codonHash2.put ("TTT", "F");
+jalview.schemes.ResidueProperties.buildAmbiguityCodonSet ();
+}{
+jalview.schemes.ResidueProperties.Lys.add ("AAA");
+jalview.schemes.ResidueProperties.Lys.add ("AAG");
+jalview.schemes.ResidueProperties.Asn.add ("AAC");
+jalview.schemes.ResidueProperties.Asn.add ("AAT");
+jalview.schemes.ResidueProperties.Gln.add ("CAA");
+jalview.schemes.ResidueProperties.Gln.add ("CAG");
+jalview.schemes.ResidueProperties.His.add ("CAC");
+jalview.schemes.ResidueProperties.His.add ("CAT");
+jalview.schemes.ResidueProperties.Glu.add ("GAA");
+jalview.schemes.ResidueProperties.Glu.add ("GAG");
+jalview.schemes.ResidueProperties.Asp.add ("GAC");
+jalview.schemes.ResidueProperties.Asp.add ("GAT");
+jalview.schemes.ResidueProperties.Tyr.add ("TAC");
+jalview.schemes.ResidueProperties.Tyr.add ("TAT");
+jalview.schemes.ResidueProperties.Thr.add ("ACA");
+jalview.schemes.ResidueProperties.Thr.add ("ACG");
+jalview.schemes.ResidueProperties.Thr.add ("ACC");
+jalview.schemes.ResidueProperties.Thr.add ("ACT");
+jalview.schemes.ResidueProperties.Pro.add ("CCA");
+jalview.schemes.ResidueProperties.Pro.add ("CCG");
+jalview.schemes.ResidueProperties.Pro.add ("CCC");
+jalview.schemes.ResidueProperties.Pro.add ("CCT");
+jalview.schemes.ResidueProperties.Ala.add ("GCA");
+jalview.schemes.ResidueProperties.Ala.add ("GCG");
+jalview.schemes.ResidueProperties.Ala.add ("GCC");
+jalview.schemes.ResidueProperties.Ala.add ("GCT");
+jalview.schemes.ResidueProperties.Ser.add ("TCA");
+jalview.schemes.ResidueProperties.Ser.add ("TCG");
+jalview.schemes.ResidueProperties.Ser.add ("TCC");
+jalview.schemes.ResidueProperties.Ser.add ("TCT");
+jalview.schemes.ResidueProperties.Ser.add ("AGC");
+jalview.schemes.ResidueProperties.Ser.add ("AGT");
+jalview.schemes.ResidueProperties.Arg.add ("AGA");
+jalview.schemes.ResidueProperties.Arg.add ("AGG");
+jalview.schemes.ResidueProperties.Arg.add ("CGA");
+jalview.schemes.ResidueProperties.Arg.add ("CGG");
+jalview.schemes.ResidueProperties.Arg.add ("CGC");
+jalview.schemes.ResidueProperties.Arg.add ("CGT");
+jalview.schemes.ResidueProperties.Gly.add ("GGA");
+jalview.schemes.ResidueProperties.Gly.add ("GGG");
+jalview.schemes.ResidueProperties.Gly.add ("GGC");
+jalview.schemes.ResidueProperties.Gly.add ("GGT");
+jalview.schemes.ResidueProperties.STOP.add ("TGA");
+jalview.schemes.ResidueProperties.STOP.add ("TAA");
+jalview.schemes.ResidueProperties.STOP.add ("TAG");
+jalview.schemes.ResidueProperties.Trp.add ("TGG");
+jalview.schemes.ResidueProperties.Cys.add ("TGC");
+jalview.schemes.ResidueProperties.Cys.add ("TGT");
+jalview.schemes.ResidueProperties.Ile.add ("ATA");
+jalview.schemes.ResidueProperties.Ile.add ("ATC");
+jalview.schemes.ResidueProperties.Ile.add ("ATT");
+jalview.schemes.ResidueProperties.Met.add ("ATG");
+jalview.schemes.ResidueProperties.Leu.add ("CTA");
+jalview.schemes.ResidueProperties.Leu.add ("CTG");
+jalview.schemes.ResidueProperties.Leu.add ("CTC");
+jalview.schemes.ResidueProperties.Leu.add ("CTT");
+jalview.schemes.ResidueProperties.Leu.add ("TTA");
+jalview.schemes.ResidueProperties.Leu.add ("TTG");
+jalview.schemes.ResidueProperties.Val.add ("GTA");
+jalview.schemes.ResidueProperties.Val.add ("GTG");
+jalview.schemes.ResidueProperties.Val.add ("GTC");
+jalview.schemes.ResidueProperties.Val.add ("GTT");
+jalview.schemes.ResidueProperties.Phe.add ("TTC");
+jalview.schemes.ResidueProperties.Phe.add ("TTT");
+}c$.propHash = c$.prototype.propHash =  new java.util.Hashtable ();
+c$.hydrophobic = c$.prototype.hydrophobic =  new java.util.Hashtable ();
+c$.polar = c$.prototype.polar =  new java.util.Hashtable ();
+c$.small = c$.prototype.small =  new java.util.Hashtable ();
+c$.positive = c$.prototype.positive =  new java.util.Hashtable ();
+c$.negative = c$.prototype.negative =  new java.util.Hashtable ();
+c$.charged = c$.prototype.charged =  new java.util.Hashtable ();
+c$.aromatic = c$.prototype.aromatic =  new java.util.Hashtable ();
+c$.aliphatic = c$.prototype.aliphatic =  new java.util.Hashtable ();
+c$.tiny = c$.prototype.tiny =  new java.util.Hashtable ();
+c$.proline = c$.prototype.proline =  new java.util.Hashtable ();
+{
+jalview.schemes.ResidueProperties.hydrophobic.put ("I",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("L",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("V",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("C",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("A",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("G",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("M",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("F",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("Y",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("W",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("H",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("K",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("X",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("*",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("R",  new Integer (0));
+jalview.schemes.ResidueProperties.hydrophobic.put ("E",  new Integer (0));
+jalview.schemes.ResidueProperties.hydrophobic.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.hydrophobic.put ("D",  new Integer (0));
+jalview.schemes.ResidueProperties.hydrophobic.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.hydrophobic.put ("S",  new Integer (0));
+jalview.schemes.ResidueProperties.hydrophobic.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.hydrophobic.put ("P",  new Integer (0));
+}{
+jalview.schemes.ResidueProperties.polar.put ("Y",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("W",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("H",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("K",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("R",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("E",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("Q",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("D",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("N",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("S",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("T",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("X",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("*",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("V",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("A",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("G",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("P",  new Integer (0));
+}{
+jalview.schemes.ResidueProperties.small.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("V",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("C",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("A",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("G",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("Y",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("W",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("H",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("K",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("R",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("E",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("D",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("N",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("S",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("T",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("P",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.positive.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("V",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("A",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("G",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("Y",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("W",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("H",  new Integer (1));
+jalview.schemes.ResidueProperties.positive.put ("K",  new Integer (1));
+jalview.schemes.ResidueProperties.positive.put ("R",  new Integer (1));
+jalview.schemes.ResidueProperties.positive.put ("E",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("D",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("S",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("P",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.positive.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.negative.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("V",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("A",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("G",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("Y",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("W",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("H",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("K",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("R",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("E",  new Integer (1));
+jalview.schemes.ResidueProperties.negative.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("D",  new Integer (1));
+jalview.schemes.ResidueProperties.negative.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("S",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("P",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.negative.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.charged.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("V",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("A",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("G",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("Y",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("W",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("H",  new Integer (1));
+jalview.schemes.ResidueProperties.charged.put ("K",  new Integer (1));
+jalview.schemes.ResidueProperties.charged.put ("R",  new Integer (1));
+jalview.schemes.ResidueProperties.charged.put ("E",  new Integer (1));
+jalview.schemes.ResidueProperties.charged.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("D",  new Integer (1));
+jalview.schemes.ResidueProperties.charged.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("S",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("P",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.charged.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.aromatic.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("V",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("A",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("G",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("F",  new Integer (1));
+jalview.schemes.ResidueProperties.aromatic.put ("Y",  new Integer (1));
+jalview.schemes.ResidueProperties.aromatic.put ("W",  new Integer (1));
+jalview.schemes.ResidueProperties.aromatic.put ("H",  new Integer (1));
+jalview.schemes.ResidueProperties.aromatic.put ("K",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("R",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("E",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("D",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("S",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("P",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.aromatic.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.aliphatic.put ("I",  new Integer (1));
+jalview.schemes.ResidueProperties.aliphatic.put ("L",  new Integer (1));
+jalview.schemes.ResidueProperties.aliphatic.put ("V",  new Integer (1));
+jalview.schemes.ResidueProperties.aliphatic.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("A",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("G",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("Y",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("W",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("H",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("K",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("R",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("E",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("D",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("S",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("P",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.aliphatic.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.tiny.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("V",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("A",  new Integer (1));
+jalview.schemes.ResidueProperties.tiny.put ("G",  new Integer (1));
+jalview.schemes.ResidueProperties.tiny.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("Y",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("W",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("H",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("K",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("R",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("E",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("D",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("S",  new Integer (1));
+jalview.schemes.ResidueProperties.tiny.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("P",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.tiny.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.proline.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("V",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("A",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("G",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("Y",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("W",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("H",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("K",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("R",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("E",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("D",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("S",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("P",  new Integer (1));
+jalview.schemes.ResidueProperties.proline.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.proline.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.propHash.put ("hydrophobic", jalview.schemes.ResidueProperties.hydrophobic);
+jalview.schemes.ResidueProperties.propHash.put ("small", jalview.schemes.ResidueProperties.small);
+jalview.schemes.ResidueProperties.propHash.put ("positive", jalview.schemes.ResidueProperties.positive);
+jalview.schemes.ResidueProperties.propHash.put ("negative", jalview.schemes.ResidueProperties.negative);
+jalview.schemes.ResidueProperties.propHash.put ("charged", jalview.schemes.ResidueProperties.charged);
+jalview.schemes.ResidueProperties.propHash.put ("aromatic", jalview.schemes.ResidueProperties.aromatic);
+jalview.schemes.ResidueProperties.propHash.put ("aliphatic", jalview.schemes.ResidueProperties.aliphatic);
+jalview.schemes.ResidueProperties.propHash.put ("tiny", jalview.schemes.ResidueProperties.tiny);
+jalview.schemes.ResidueProperties.propHash.put ("proline", jalview.schemes.ResidueProperties.proline);
+jalview.schemes.ResidueProperties.propHash.put ("polar", jalview.schemes.ResidueProperties.polar);
+}{
+var propMatrixF =  Clazz.newIntArray (23, 23, 0);
+var propMatrixPos =  Clazz.newIntArray (23, 23, 0);
+var propMatrixEpos =  Clazz.newIntArray (23, 23, 0);
+for (var i = 0; i < 23; i++) {
+var maxF = 0;
+var maxP = 0;
+var maxEP = 0;
+var ic = "";
+if (jalview.schemes.ResidueProperties.aa.length > i) {
+ic += jalview.schemes.ResidueProperties.aa[i];
+} else {
+ic = "-";
+}for (var j = i + 1; j < 23; j++) {
+var jc = "";
+if (jalview.schemes.ResidueProperties.aa.length > j) {
+jc += jalview.schemes.ResidueProperties.aa[j];
+} else {
+jc = "-";
+}propMatrixF[i][j] = 0;
+propMatrixPos[i][j] = 0;
+propMatrixEpos[i][j] = 0;
+for (var en = jalview.schemes.ResidueProperties.propHash.keys (); en.hasMoreElements (); ) {
+var ph = en.nextElement ();
+var pph = jalview.schemes.ResidueProperties.propHash.get (ph);
+if (pph.get (ic) != null && pph.get (jc) != null) {
+var icp = pph.get (ic).intValue ();
+var jcp = pph.get (jc).intValue ();
+propMatrixPos[i][j] += icp == jcp && icp > 0 ? 2 : 0;
+propMatrixPos[j][i] += icp == jcp && icp > 0 ? 2 : 0;
+propMatrixF[i][j] += icp == jcp ? 2 : 0;
+propMatrixF[j][i] += icp == jcp ? 2 : 0;
+propMatrixEpos[i][j] += icp == jcp ? (1 + icp * 2) : 0;
+propMatrixEpos[j][i] += icp == jcp ? (1 + icp * 2) : 0;
+}}
+if (maxF < propMatrixF[i][j]) {
+maxF = propMatrixF[i][j];
+}if (maxP < propMatrixPos[i][j]) {
+maxP = propMatrixPos[i][j];
+}if (maxEP < propMatrixEpos[i][j]) {
+maxEP = propMatrixEpos[i][j];
+}}
+propMatrixF[i][i] = maxF;
+propMatrixPos[i][i] = maxP;
+propMatrixEpos[i][i] = maxEP;
+}
+jalview.schemes.ResidueProperties.scoreMatrices.put ("PID",  new jalview.analysis.scoremodels.PIDScoreModel ());
+jalview.schemes.ResidueProperties.scoreMatrices.put ("Displayed Features",  new jalview.analysis.scoremodels.FeatureScoreModel ());
+}Clazz.defineStatics (c$,
+"toDssp3State", null);
+{
+jalview.schemes.ResidueProperties.toDssp3State =  new java.util.Hashtable ();
+jalview.schemes.ResidueProperties.toDssp3State.put ("H", "H");
+jalview.schemes.ResidueProperties.toDssp3State.put ("E", "E");
+jalview.schemes.ResidueProperties.toDssp3State.put ("C", " ");
+jalview.schemes.ResidueProperties.toDssp3State.put (" ", " ");
+jalview.schemes.ResidueProperties.toDssp3State.put ("T", " ");
+jalview.schemes.ResidueProperties.toDssp3State.put ("B", "E");
+jalview.schemes.ResidueProperties.toDssp3State.put ("G", "H");
+jalview.schemes.ResidueProperties.toDssp3State.put ("I", "H");
+jalview.schemes.ResidueProperties.toDssp3State.put ("X", " ");
+}Clazz.defineStatics (c$,
+"toRNAssState", null,
+"RNAcloseParen",  Clazz.newBooleanArray (255, false));
+{
+jalview.schemes.ResidueProperties.toRNAssState =  new java.util.Hashtable ();
+jalview.schemes.ResidueProperties.toRNAssState.put (")", "(");
+jalview.schemes.ResidueProperties.toRNAssState.put ("(", "(");
+jalview.schemes.ResidueProperties.toRNAssState.put ("]", "[");
+jalview.schemes.ResidueProperties.toRNAssState.put ("[", "[");
+jalview.schemes.ResidueProperties.toRNAssState.put ("{", "{");
+jalview.schemes.ResidueProperties.toRNAssState.put ("}", "{");
+jalview.schemes.ResidueProperties.toRNAssState.put (">", ">");
+jalview.schemes.ResidueProperties.toRNAssState.put ("<", ">");
+jalview.schemes.ResidueProperties.toRNAssState.put ("A", "A");
+jalview.schemes.ResidueProperties.toRNAssState.put ("a", "A");
+jalview.schemes.ResidueProperties.toRNAssState.put ("B", "B");
+jalview.schemes.ResidueProperties.toRNAssState.put ("b", "B");
+jalview.schemes.ResidueProperties.toRNAssState.put ("C", "C");
+jalview.schemes.ResidueProperties.toRNAssState.put ("c", "C");
+jalview.schemes.ResidueProperties.toRNAssState.put ("D", "D");
+jalview.schemes.ResidueProperties.toRNAssState.put ("d", "D");
+jalview.schemes.ResidueProperties.toRNAssState.put ("E", "E");
+jalview.schemes.ResidueProperties.toRNAssState.put ("e", "E");
+jalview.schemes.ResidueProperties.toRNAssState.put ("F", "F");
+jalview.schemes.ResidueProperties.toRNAssState.put ("f", "F");
+jalview.schemes.ResidueProperties.toRNAssState.put ("G", "G");
+jalview.schemes.ResidueProperties.toRNAssState.put ("g", "G");
+jalview.schemes.ResidueProperties.toRNAssState.put ("H", "H");
+jalview.schemes.ResidueProperties.toRNAssState.put ("h", "H");
+jalview.schemes.ResidueProperties.toRNAssState.put ("I", "I");
+jalview.schemes.ResidueProperties.toRNAssState.put ("i", "I");
+jalview.schemes.ResidueProperties.toRNAssState.put ("J", "J");
+jalview.schemes.ResidueProperties.toRNAssState.put ("j", "J");
+jalview.schemes.ResidueProperties.toRNAssState.put ("K", "K");
+jalview.schemes.ResidueProperties.toRNAssState.put ("k", "K");
+jalview.schemes.ResidueProperties.toRNAssState.put ("L", "L");
+jalview.schemes.ResidueProperties.toRNAssState.put ("l", "L");
+jalview.schemes.ResidueProperties.toRNAssState.put ("M", "M");
+jalview.schemes.ResidueProperties.toRNAssState.put ("m", "M");
+jalview.schemes.ResidueProperties.toRNAssState.put ("N", "N");
+jalview.schemes.ResidueProperties.toRNAssState.put ("n", "N");
+jalview.schemes.ResidueProperties.toRNAssState.put ("O", "O");
+jalview.schemes.ResidueProperties.toRNAssState.put ("o", "O");
+jalview.schemes.ResidueProperties.toRNAssState.put ("P", "P");
+jalview.schemes.ResidueProperties.toRNAssState.put ("p", "P");
+jalview.schemes.ResidueProperties.toRNAssState.put ("Q", "Q");
+jalview.schemes.ResidueProperties.toRNAssState.put ("q", "Q");
+jalview.schemes.ResidueProperties.toRNAssState.put ("R", "R");
+jalview.schemes.ResidueProperties.toRNAssState.put ("r", "R");
+jalview.schemes.ResidueProperties.toRNAssState.put ("S", "S");
+jalview.schemes.ResidueProperties.toRNAssState.put ("s", "S");
+jalview.schemes.ResidueProperties.toRNAssState.put ("T", "T");
+jalview.schemes.ResidueProperties.toRNAssState.put ("t", "T");
+jalview.schemes.ResidueProperties.toRNAssState.put ("U", "U");
+jalview.schemes.ResidueProperties.toRNAssState.put ("u", "U");
+jalview.schemes.ResidueProperties.toRNAssState.put ("V", "V");
+jalview.schemes.ResidueProperties.toRNAssState.put ("v", "V");
+jalview.schemes.ResidueProperties.toRNAssState.put ("W", "W");
+jalview.schemes.ResidueProperties.toRNAssState.put ("w", "W");
+jalview.schemes.ResidueProperties.toRNAssState.put ("X", "X");
+jalview.schemes.ResidueProperties.toRNAssState.put ("x", "X");
+jalview.schemes.ResidueProperties.toRNAssState.put ("Y", "Y");
+jalview.schemes.ResidueProperties.toRNAssState.put ("y", "Y");
+jalview.schemes.ResidueProperties.toRNAssState.put ("Z", "Z");
+jalview.schemes.ResidueProperties.toRNAssState.put ("z", "Z");
+for (var p = 0; p < jalview.schemes.ResidueProperties.RNAcloseParen.length; p++) {
+jalview.schemes.ResidueProperties.RNAcloseParen[p] = false;
+}
+for (var k, $k = jalview.schemes.ResidueProperties.toRNAssState.keySet ().iterator (); $k.hasNext () && ((k = $k.next ()) || true);) {
+jalview.schemes.ResidueProperties.RNAcloseParen[k.charCodeAt (0)] = k.charAt (0) != jalview.schemes.ResidueProperties.toRNAssState.get (k).charAt (0);
+}
+}});
index 5027bdf..f097a40 100644 (file)
@@ -1,43 +1,43 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.ScoreColourScheme", ["jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.awt.Color"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.min = 0;\r
-this.max = 0;\r
-this.scores = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "ScoreColourScheme", jalview.schemes.ResidueColourScheme);\r
-Clazz.makeConstructor (c$, \r
-function (symbolIndex, scores, min, max) {\r
-Clazz.superConstructor (this, jalview.schemes.ScoreColourScheme, [symbolIndex]);\r
-this.scores = scores;\r
-this.min = min;\r
-this.max = max;\r
-var i;\r
-var iSize = scores.length;\r
-this.colors =  new Array (scores.length);\r
-for (i = 0; i < iSize; i++) {\r
-var red = (scores[i] - min) / (max - min);\r
-if (red > 1.0) {\r
-red = 1.0;\r
-}if (red < 0.0) {\r
-red = 0.0;\r
-}this.colors[i] = this.makeColour (red);\r
-}\r
-}, "~A,~A,~N,~N");\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c, j, seq) {\r
-if (this.threshold > 0) {\r
-if (!this.aboveThreshold (c, j)) {\r
-return java.awt.Color.white;\r
-}}if (jalview.util.Comparison.isGap (c)) {\r
-return java.awt.Color.white;\r
-}var currentColour = this.colors[jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)]];\r
-if (this.conservationColouring) {\r
-currentColour = this.applyConservation (currentColour, j);\r
-}return currentColour;\r
-}, "~S,~N,jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "makeColour", \r
-function (c) {\r
-return  new java.awt.Color (c, 0.0, 1.0 - c);\r
-}, "~N");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.ScoreColourScheme", ["jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.awt.Color"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.min = 0;
+this.max = 0;
+this.scores = null;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "ScoreColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz.makeConstructor (c$, 
+function (symbolIndex, scores, min, max) {
+Clazz.superConstructor (this, jalview.schemes.ScoreColourScheme, [symbolIndex]);
+this.scores = scores;
+this.min = min;
+this.max = max;
+var i;
+var iSize = scores.length;
+this.colors =  new Array (scores.length);
+for (i = 0; i < iSize; i++) {
+var red = (scores[i] - min) / (max - min);
+if (red > 1.0) {
+red = 1.0;
+}if (red < 0.0) {
+red = 0.0;
+}this.colors[i] = this.makeColour (red);
+}
+}, "~A,~A,~N,~N");
+Clazz.defineMethod (c$, "findColour", 
+function (c, j, seq) {
+if (this.threshold > 0) {
+if (!this.aboveThreshold (c, j)) {
+return java.awt.Color.white;
+}}if (jalview.util.Comparison.isGap (c)) {
+return java.awt.Color.white;
+}var currentColour = this.colors[jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)]];
+if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "makeColour", 
+function (c) {
+return  new java.awt.Color (c, 0.0, 1.0 - c);
+}, "~N");
+});
index a12c842..401ab41 100644 (file)
@@ -1,86 +1,86 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.analysis.scoremodels.PairwiseSeqScoreModel", "jalview.api.analysis.ScoreModelI"], "jalview.schemes.ScoreMatrix", ["jalview.schemes.ResidueProperties", "java.lang.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.name = null;\r
-this.matrix = null;\r
-this.type = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "ScoreMatrix", jalview.analysis.scoremodels.PairwiseSeqScoreModel, jalview.api.analysis.ScoreModelI);\r
-Clazz.overrideMethod (c$, "getName", \r
-function () {\r
-return this.name;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (name, matrix, type) {\r
-Clazz.superConstructor (this, jalview.schemes.ScoreMatrix, []);\r
-this.matrix = matrix;\r
-this.type = type;\r
-this.name = name;\r
-}, "~S,~A,~N");\r
-Clazz.overrideMethod (c$, "isDNA", \r
-function () {\r
-return this.type == 1;\r
-});\r
-Clazz.overrideMethod (c$, "isProtein", \r
-function () {\r
-return this.type == 0;\r
-});\r
-Clazz.overrideMethod (c$, "getMatrix", \r
-function () {\r
-return this.matrix;\r
-});\r
-Clazz.defineMethod (c$, "getPairwiseScore", \r
-function (A1, A2) {\r
-return this.getPairwiseScore (A1.charAt (0), A2.charAt (0));\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "getPairwiseScore", \r
-function (c, d) {\r
-var pog = 0;\r
-try {\r
-var a = (this.type == 0) ? jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)] : jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)];\r
-var b = (this.type == 0) ? jalview.schemes.ResidueProperties.aaIndex[d.charCodeAt (0)] : jalview.schemes.ResidueProperties.nucleotideIndex[d.charCodeAt (0)];\r
-pog = this.matrix[a][b];\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return pog;\r
-}, "~S,~S");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return this.outputMatrix (false);\r
-});\r
-Clazz.defineMethod (c$, "outputMatrix", \r
-function (html) {\r
-var sb =  new StringBuffer ();\r
-var symbols = (this.type == 0) ? jalview.schemes.ResidueProperties.aaIndex : jalview.schemes.ResidueProperties.nucleotideIndex;\r
-var symMax = (this.type == 0) ? 23 : 10;\r
-var header = true;\r
-if (html) {\r
-sb.append ("<table border=\"1\">");\r
-}for (var sym = 'A'; sym <= 'Z'; sym = String.fromCharCode (sym.charCodeAt (0) + 1)) {\r
-if (symbols[sym.charCodeAt (0)] >= 0 && symbols[sym.charCodeAt (0)] < symMax) {\r
-if (header) {\r
-sb.append (html ? "<tr><td></td>" : "");\r
-for (var sym2 = 'A'; sym2 <= 'Z'; sym2 = String.fromCharCode (sym2.charCodeAt (0) + 1)) {\r
-if (symbols[sym2.charCodeAt (0)] >= 0 && symbols[sym2.charCodeAt (0)] < symMax) {\r
-sb.append ((html ? "<td>&nbsp;" : "\t") + sym2 + (html ? "&nbsp;</td>" : ""));\r
-}}\r
-header = false;\r
-sb.append (html ? "</tr>\n" : "\n");\r
-}if (html) {\r
-sb.append ("<tr>");\r
-}sb.append ((html ? "<td>" : "") + sym + (html ? "</td>" : ""));\r
-for (var sym2 = 'A'; sym2 <= 'Z'; sym2 = String.fromCharCode (sym2.charCodeAt (0) + 1)) {\r
-if (symbols[sym2.charCodeAt (0)] >= 0 && symbols[sym2.charCodeAt (0)] < symMax) {\r
-sb.append ((html ? "<td>" : "\t") + this.matrix[symbols[sym.charCodeAt (0)]][symbols[sym2.charCodeAt (0)]] + (html ? "</td>" : ""));\r
-}}\r
-sb.append (html ? "</tr>\n" : "\n");\r
-}}\r
-if (html) {\r
-sb.append ("</table>");\r
-}return sb.toString ();\r
-}, "~B");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.analysis.scoremodels.PairwiseSeqScoreModel", "jalview.api.analysis.ScoreModelI"], "jalview.schemes.ScoreMatrix", ["jalview.schemes.ResidueProperties", "java.lang.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.name = null;
+this.matrix = null;
+this.type = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "ScoreMatrix", jalview.analysis.scoremodels.PairwiseSeqScoreModel, jalview.api.analysis.ScoreModelI);
+Clazz.overrideMethod (c$, "getName", 
+function () {
+return this.name;
+});
+Clazz.makeConstructor (c$, 
+function (name, matrix, type) {
+Clazz.superConstructor (this, jalview.schemes.ScoreMatrix, []);
+this.matrix = matrix;
+this.type = type;
+this.name = name;
+}, "~S,~A,~N");
+Clazz.overrideMethod (c$, "isDNA", 
+function () {
+return this.type == 1;
+});
+Clazz.overrideMethod (c$, "isProtein", 
+function () {
+return this.type == 0;
+});
+Clazz.overrideMethod (c$, "getMatrix", 
+function () {
+return this.matrix;
+});
+Clazz.defineMethod (c$, "getPairwiseScore", 
+function (A1, A2) {
+return this.getPairwiseScore (A1.charAt (0), A2.charAt (0));
+}, "~S,~S");
+Clazz.defineMethod (c$, "getPairwiseScore", 
+function (c, d) {
+var pog = 0;
+try {
+var a = (this.type == 0) ? jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)] : jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)];
+var b = (this.type == 0) ? jalview.schemes.ResidueProperties.aaIndex[d.charCodeAt (0)] : jalview.schemes.ResidueProperties.nucleotideIndex[d.charCodeAt (0)];
+pog = this.matrix[a][b];
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+return pog;
+}, "~S,~S");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return this.outputMatrix (false);
+});
+Clazz.defineMethod (c$, "outputMatrix", 
+function (html) {
+var sb =  new StringBuffer ();
+var symbols = (this.type == 0) ? jalview.schemes.ResidueProperties.aaIndex : jalview.schemes.ResidueProperties.nucleotideIndex;
+var symMax = (this.type == 0) ? 23 : 10;
+var header = true;
+if (html) {
+sb.append ("<table border=\"1\">");
+}for (var sym = 'A'; sym <= 'Z'; sym = String.fromCharCode (sym.charCodeAt (0) + 1)) {
+if (symbols[sym.charCodeAt (0)] >= 0 && symbols[sym.charCodeAt (0)] < symMax) {
+if (header) {
+sb.append (html ? "<tr><td></td>" : "");
+for (var sym2 = 'A'; sym2 <= 'Z'; sym2 = String.fromCharCode (sym2.charCodeAt (0) + 1)) {
+if (symbols[sym2.charCodeAt (0)] >= 0 && symbols[sym2.charCodeAt (0)] < symMax) {
+sb.append ((html ? "<td>&nbsp;" : "\t") + sym2 + (html ? "&nbsp;</td>" : ""));
+}}
+header = false;
+sb.append (html ? "</tr>\n" : "\n");
+}if (html) {
+sb.append ("<tr>");
+}sb.append ((html ? "<td>" : "") + sym + (html ? "</td>" : ""));
+for (var sym2 = 'A'; sym2 <= 'Z'; sym2 = String.fromCharCode (sym2.charCodeAt (0) + 1)) {
+if (symbols[sym2.charCodeAt (0)] >= 0 && symbols[sym2.charCodeAt (0)] < symMax) {
+sb.append ((html ? "<td>" : "\t") + this.matrix[symbols[sym.charCodeAt (0)]][symbols[sym2.charCodeAt (0)]] + (html ? "</td>" : ""));
+}}
+sb.append (html ? "</tr>\n" : "\n");
+}}
+if (html) {
+sb.append ("</table>");
+}return sb.toString ();
+}, "~B");
+});
index cf2f6bf..7ccf062 100644 (file)
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.StrandColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {\r
-c$ = Clazz.declareType (jalview.schemes, "StrandColourScheme", jalview.schemes.ScoreColourScheme);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.schemes.StrandColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.strand, 0.37, 1.7]);\r
-});\r
-Clazz.overrideMethod (c$, "makeColour", \r
-function (c) {\r
-return  new java.awt.Color (c, c, 1.0 - c);\r
-}, "~N");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.StrandColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz.declareType (jalview.schemes, "StrandColourScheme", jalview.schemes.ScoreColourScheme);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.schemes.StrandColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.strand, 0.37, 1.7]);
+});
+Clazz.overrideMethod (c$, "makeColour", 
+function (c) {
+return  new java.awt.Color (c, c, 1.0 - c);
+}, "~N");
+});
index 0952425..6350ad9 100644 (file)
@@ -1,45 +1,45 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ResidueColourScheme", "java.awt.Color"], "jalview.schemes.TCoffeeColourScheme", ["jalview.datamodel.AlignmentI", "java.util.ArrayList", "$.IdentityHashMap"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.seqMap = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "TCoffeeColourScheme", jalview.schemes.ResidueColourScheme);\r
-Clazz.makeConstructor (c$, \r
-function (alignment) {\r
-Clazz.superConstructor (this, jalview.schemes.TCoffeeColourScheme, []);\r
-this.alignmentChanged (alignment, null);\r
-}, "jalview.datamodel.AnnotatedCollectionI");\r
-Clazz.overrideMethod (c$, "alignmentChanged", \r
-function (alignment, hiddenReps) {\r
-var annots =  new java.util.ArrayList ();\r
-this.seqMap =  new java.util.IdentityHashMap ();\r
-var alcontext = Clazz.instanceOf (alignment, jalview.datamodel.AlignmentI) ? alignment : alignment.getContext ();\r
-var w = 0;\r
-for (var al, $al = alcontext.findAnnotation ("TCoffeeScore").iterator (); $al.hasNext () && ((al = $al.next ()) || true);) {\r
-if (al.sequenceRef != null && !al.belowAlignment) {\r
-annots.add (al);\r
-if (w < al.annotations.length) {\r
-w = al.annotations.length;\r
-}var scores =  new Array (al.annotations.length);\r
-var i = 0;\r
-for (var an, $an = 0, $$an = al.annotations; $an < $$an.length && ((an = $$an[$an]) || true); $an++) {\r
-scores[i++] = (an != null) ? an.colour : java.awt.Color.white;\r
-}\r
-this.seqMap.put (al.sequenceRef, scores);\r
-}}\r
-}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c, j, seq) {\r
-var cols;\r
-if (this.seqMap == null || (cols = this.seqMap.get (seq)) == null) {\r
-return java.awt.Color.white;\r
-}if (j < 0 || j >= cols.length) {\r
-return java.awt.Color.white;\r
-}return cols[j];\r
-}, "~S,~N,jalview.datamodel.SequenceI");\r
-Clazz.overrideMethod (c$, "applyTo", \r
-function (sg, hiddenRepSequences) {\r
-return  new jalview.schemes.TCoffeeColourScheme (sg);\r
-}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");\r
-c$.$colors = c$.prototype.$colors =  Clazz.newArray (-1, [ new java.awt.Color (102, 102, 255),  new java.awt.Color (0, 255, 0),  new java.awt.Color (102, 255, 0),  new java.awt.Color (204, 255, 0),  new java.awt.Color (255, 255, 0),  new java.awt.Color (255, 204, 0),  new java.awt.Color (255, 153, 0),  new java.awt.Color (255, 102, 0),  new java.awt.Color (255, 51, 0),  new java.awt.Color (255, 34, 0)]);\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ResidueColourScheme", "java.awt.Color"], "jalview.schemes.TCoffeeColourScheme", ["jalview.datamodel.AlignmentI", "java.util.ArrayList", "$.IdentityHashMap"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.seqMap = null;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "TCoffeeColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz.makeConstructor (c$, 
+function (alignment) {
+Clazz.superConstructor (this, jalview.schemes.TCoffeeColourScheme, []);
+this.alignmentChanged (alignment, null);
+}, "jalview.datamodel.AnnotatedCollectionI");
+Clazz.overrideMethod (c$, "alignmentChanged", 
+function (alignment, hiddenReps) {
+var annots =  new java.util.ArrayList ();
+this.seqMap =  new java.util.IdentityHashMap ();
+var alcontext = Clazz.instanceOf (alignment, jalview.datamodel.AlignmentI) ? alignment : alignment.getContext ();
+var w = 0;
+for (var al, $al = alcontext.findAnnotation ("TCoffeeScore").iterator (); $al.hasNext () && ((al = $al.next ()) || true);) {
+if (al.sequenceRef != null && !al.belowAlignment) {
+annots.add (al);
+if (w < al.annotations.length) {
+w = al.annotations.length;
+}var scores =  new Array (al.annotations.length);
+var i = 0;
+for (var an, $an = 0, $$an = al.annotations; $an < $$an.length && ((an = $$an[$an]) || true); $an++) {
+scores[i++] = (an != null) ? an.colour : java.awt.Color.white;
+}
+this.seqMap.put (al.sequenceRef, scores);
+}}
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz.defineMethod (c$, "findColour", 
+function (c, j, seq) {
+var cols;
+if (this.seqMap == null || (cols = this.seqMap.get (seq)) == null) {
+return java.awt.Color.white;
+}if (j < 0 || j >= cols.length) {
+return java.awt.Color.white;
+}return cols[j];
+}, "~S,~N,jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "applyTo", 
+function (sg, hiddenRepSequences) {
+return  new jalview.schemes.TCoffeeColourScheme (sg);
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+c$.$colors = c$.prototype.$colors =  Clazz.newArray (-1, [ new java.awt.Color (102, 102, 255),  new java.awt.Color (0, 255, 0),  new java.awt.Color (102, 255, 0),  new java.awt.Color (204, 255, 0),  new java.awt.Color (255, 255, 0),  new java.awt.Color (255, 204, 0),  new java.awt.Color (255, 153, 0),  new java.awt.Color (255, 102, 0),  new java.awt.Color (255, 51, 0),  new java.awt.Color (255, 34, 0)]);
+});
index 156c6fc..65bba75 100644 (file)
@@ -1,8 +1,8 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.TaylorColourScheme", ["jalview.schemes.ResidueProperties"], function () {\r
-c$ = Clazz.declareType (jalview.schemes, "TaylorColourScheme", jalview.schemes.ResidueColourScheme);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.schemes.TaylorColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.taylor, 0]);\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.TaylorColourScheme", ["jalview.schemes.ResidueProperties"], function () {
+c$ = Clazz.declareType (jalview.schemes, "TaylorColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.schemes.TaylorColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.taylor, 0]);
+});
+});
index 74fe374..7e440d8 100644 (file)
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.TurnColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {\r
-c$ = Clazz.declareType (jalview.schemes, "TurnColourScheme", jalview.schemes.ScoreColourScheme);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.schemes.TurnColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.turn, 0.47, 1.56]);\r
-});\r
-Clazz.overrideMethod (c$, "makeColour", \r
-function (c) {\r
-return  new java.awt.Color (c, 1 - c, 1 - c);\r
-}, "~N");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.TurnColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz.declareType (jalview.schemes, "TurnColourScheme", jalview.schemes.ScoreColourScheme);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.schemes.TurnColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.turn, 0.47, 1.56]);
+});
+Clazz.overrideMethod (c$, "makeColour", 
+function (c) {
+return  new java.awt.Color (c, 1 - c, 1 - c);
+}, "~N");
+});
index c6ab601..5ca8ca9 100644 (file)
Binary files a/bin/jalview/schemes/UserColourScheme.class and b/bin/jalview/schemes/UserColourScheme.class differ
index dcf5f86..ee83987 100644 (file)
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.UserColourScheme", ["jalview.schemes.ColourSchemeProperty", "$.ResidueProperties", "java.awt.Color", "java.util.StringTokenizer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.lowerCaseColours = null;\r
-this.schemeName = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.schemes, "UserColourScheme", jalview.schemes.ResidueColourScheme);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.schemes.UserColourScheme, [jalview.schemes.ResidueProperties.aaIndex]);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (newColors) {\r
-Clazz.superConstructor (this, jalview.schemes.UserColourScheme, [jalview.schemes.ResidueProperties.aaIndex]);\r
-this.colors = newColors;\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "applyTo", \r
-function (sg, hiddenRepSequences) {\r
-var usc =  new jalview.schemes.UserColourScheme (this.colors);\r
-if (this.lowerCaseColours != null) {\r
-usc.schemeName =  String.instantialize (this.schemeName);\r
-usc.lowerCaseColours =  new Array (this.lowerCaseColours.length);\r
-System.arraycopy (this.lowerCaseColours, 0, usc.lowerCaseColours, 0, this.lowerCaseColours.length);\r
-}return usc;\r
-}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");\r
-Clazz.makeConstructor (c$, \r
-function (colour) {\r
-Clazz.superConstructor (this, jalview.schemes.UserColourScheme, [jalview.schemes.ResidueProperties.aaIndex]);\r
-var col = this.getColourFromString (colour);\r
-if (col == null) {\r
-System.out.println ("Unknown colour!! " + colour);\r
-col = this.createColourFromName (colour);\r
-}this.colors =  new Array (24);\r
-for (var i = 0; i < 24; i++) {\r
-this.colors[i] = col;\r
-}\r
-this.schemeName = colour;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getColours", \r
-function () {\r
-return this.colors;\r
-});\r
-Clazz.defineMethod (c$, "getLowerCaseColours", \r
-function () {\r
-return this.lowerCaseColours;\r
-});\r
-Clazz.defineMethod (c$, "setName", \r
-function (name) {\r
-this.schemeName = name;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getName", \r
-function () {\r
-return this.schemeName;\r
-});\r
-Clazz.defineMethod (c$, "getColourFromString", \r
-function (colour) {\r
-colour = colour.trim ();\r
-var col = null;\r
-try {\r
-var value = Integer.parseInt (colour, 16);\r
-col =  new java.awt.Color (value);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, NumberFormatException)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-if (col == null) {\r
-col = jalview.schemes.ColourSchemeProperty.getAWTColorFromName (colour);\r
-}if (col == null) {\r
-try {\r
-var st =  new java.util.StringTokenizer (colour, ",");\r
-var r = Integer.parseInt (st.nextToken ());\r
-var g = Integer.parseInt (st.nextToken ());\r
-var b = Integer.parseInt (st.nextToken ());\r
-col =  new java.awt.Color (r, g, b);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}return col;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "createColourFromName", \r
-function (name) {\r
-var r;\r
-var g;\r
-var b;\r
-var lsize = name.length;\r
-var start = 0;\r
-var end = Clazz.doubleToInt (lsize / 3);\r
-var rgbOffset = Math.abs (name.hashCode () % 10) * 15;\r
-r = Math.abs (name.substring (start, end).hashCode () + rgbOffset) % 210 + 20;\r
-start = end;\r
-end += Clazz.doubleToInt (lsize / 3);\r
-if (end > lsize) {\r
-end = lsize;\r
-}g = Math.abs (name.substring (start, end).hashCode () + rgbOffset) % 210 + 20;\r
-b = Math.abs (name.substring (end).hashCode () + rgbOffset) % 210 + 20;\r
-var color =  new java.awt.Color (r, g, b);\r
-return color;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "parseAppletParameter", \r
-function (paramValue) {\r
-var st =  new java.util.StringTokenizer (paramValue, ";");\r
-var st2;\r
-var token = null;\r
-var colour;\r
-var residues;\r
-try {\r
-while (st.hasMoreElements ()) {\r
-token = st.nextToken ().trim ();\r
-residues = token.substring (0, token.indexOf ("="));\r
-colour = token.substring (token.indexOf ("=") + 1);\r
-st2 =  new java.util.StringTokenizer (residues, " ,");\r
-while (st2.hasMoreTokens ()) {\r
-token = st2.nextToken ();\r
-if (jalview.schemes.ResidueProperties.aaIndex[token.charCodeAt (0)] == -1) {\r
-continue;\r
-}var colIndex = jalview.schemes.ResidueProperties.aaIndex[token.charCodeAt (0)];\r
-if (token.equalsIgnoreCase ("lowerCase")) {\r
-if (this.lowerCaseColours == null) {\r
-this.lowerCaseColours =  new Array (23);\r
-}for (var i = 0; i < 23; i++) {\r
-if (this.lowerCaseColours[i] == null) {\r
-this.lowerCaseColours[i] = this.getColourFromString (colour);\r
-}}\r
-continue;\r
-}if (token.equals (token.toLowerCase ())) {\r
-if (this.lowerCaseColours == null) {\r
-this.lowerCaseColours =  new Array (23);\r
-}this.lowerCaseColours[colIndex] = this.getColourFromString (colour);\r
-} else {\r
-this.colors[colIndex] = this.getColourFromString (colour);\r
-}}\r
-}\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.out.println ("Error parsing userDefinedColours:\n" + token + "\n" + ex);\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}, "~S");\r
-Clazz.defineMethod (c$, "findColour", \r
-function (c, j, seq) {\r
-var currentColour;\r
-var index = jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)];\r
-if ((this.threshold == 0) || this.aboveThreshold (c, j)) {\r
-if (this.lowerCaseColours != null && 'a' <= c && c <= 'z') {\r
-currentColour = this.lowerCaseColours[index];\r
-} else {\r
-currentColour = this.colors[index];\r
-}} else {\r
-currentColour = java.awt.Color.white;\r
-}if (this.conservationColouring) {\r
-currentColour = this.applyConservation (currentColour, j);\r
-}return currentColour;\r
-}, "~S,~N,jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "setLowerCaseColours", \r
-function (lcolours) {\r
-this.lowerCaseColours = lcolours;\r
-}, "~A");\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.UserColourScheme", ["jalview.schemes.ColourSchemeProperty", "$.ResidueProperties", "java.awt.Color", "java.util.StringTokenizer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.lowerCaseColours = null;
+this.schemeName = null;
+Clazz.instantialize (this, arguments);
+}, jalview.schemes, "UserColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.schemes.UserColourScheme, [jalview.schemes.ResidueProperties.aaIndex]);
+});
+Clazz.makeConstructor (c$, 
+function (newColors) {
+Clazz.superConstructor (this, jalview.schemes.UserColourScheme, [jalview.schemes.ResidueProperties.aaIndex]);
+this.colors = newColors;
+}, "~A");
+Clazz.overrideMethod (c$, "applyTo", 
+function (sg, hiddenRepSequences) {
+var usc =  new jalview.schemes.UserColourScheme (this.colors);
+if (this.lowerCaseColours != null) {
+usc.schemeName =  String.instantialize (this.schemeName);
+usc.lowerCaseColours =  new Array (this.lowerCaseColours.length);
+System.arraycopy (this.lowerCaseColours, 0, usc.lowerCaseColours, 0, this.lowerCaseColours.length);
+}return usc;
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz.makeConstructor (c$, 
+function (colour) {
+Clazz.superConstructor (this, jalview.schemes.UserColourScheme, [jalview.schemes.ResidueProperties.aaIndex]);
+var col = this.getColourFromString (colour);
+if (col == null) {
+System.out.println ("Unknown colour!! " + colour);
+col = this.createColourFromName (colour);
+}this.colors =  new Array (24);
+for (var i = 0; i < 24; i++) {
+this.colors[i] = col;
+}
+this.schemeName = colour;
+}, "~S");
+Clazz.defineMethod (c$, "getColours", 
+function () {
+return this.colors;
+});
+Clazz.defineMethod (c$, "getLowerCaseColours", 
+function () {
+return this.lowerCaseColours;
+});
+Clazz.defineMethod (c$, "setName", 
+function (name) {
+this.schemeName = name;
+}, "~S");
+Clazz.defineMethod (c$, "getName", 
+function () {
+return this.schemeName;
+});
+Clazz.defineMethod (c$, "getColourFromString", 
+function (colour) {
+colour = colour.trim ();
+var col = null;
+try {
+var value = Integer.parseInt (colour, 16);
+col =  new java.awt.Color (value);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+if (col == null) {
+col = jalview.schemes.ColourSchemeProperty.getAWTColorFromName (colour);
+}if (col == null) {
+try {
+var st =  new java.util.StringTokenizer (colour, ",");
+var r = Integer.parseInt (st.nextToken ());
+var g = Integer.parseInt (st.nextToken ());
+var b = Integer.parseInt (st.nextToken ());
+col =  new java.awt.Color (r, g, b);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}return col;
+}, "~S");
+Clazz.defineMethod (c$, "createColourFromName", 
+function (name) {
+var r;
+var g;
+var b;
+var lsize = name.length;
+var start = 0;
+var end = Clazz.doubleToInt (lsize / 3);
+var rgbOffset = Math.abs (name.hashCode () % 10) * 15;
+r = Math.abs (name.substring (start, end).hashCode () + rgbOffset) % 210 + 20;
+start = end;
+end += Clazz.doubleToInt (lsize / 3);
+if (end > lsize) {
+end = lsize;
+}g = Math.abs (name.substring (start, end).hashCode () + rgbOffset) % 210 + 20;
+b = Math.abs (name.substring (end).hashCode () + rgbOffset) % 210 + 20;
+var color =  new java.awt.Color (r, g, b);
+return color;
+}, "~S");
+Clazz.defineMethod (c$, "parseAppletParameter", 
+function (paramValue) {
+var st =  new java.util.StringTokenizer (paramValue, ";");
+var st2;
+var token = null;
+var colour;
+var residues;
+try {
+while (st.hasMoreElements ()) {
+token = st.nextToken ().trim ();
+residues = token.substring (0, token.indexOf ("="));
+colour = token.substring (token.indexOf ("=") + 1);
+st2 =  new java.util.StringTokenizer (residues, " ,");
+while (st2.hasMoreTokens ()) {
+token = st2.nextToken ();
+if (jalview.schemes.ResidueProperties.aaIndex[token.charCodeAt (0)] == -1) {
+continue;
+}var colIndex = jalview.schemes.ResidueProperties.aaIndex[token.charCodeAt (0)];
+if (token.equalsIgnoreCase ("lowerCase")) {
+if (this.lowerCaseColours == null) {
+this.lowerCaseColours =  new Array (23);
+}for (var i = 0; i < 23; i++) {
+if (this.lowerCaseColours[i] == null) {
+this.lowerCaseColours[i] = this.getColourFromString (colour);
+}}
+continue;
+}if (token.equals (token.toLowerCase ())) {
+if (this.lowerCaseColours == null) {
+this.lowerCaseColours =  new Array (23);
+}this.lowerCaseColours[colIndex] = this.getColourFromString (colour);
+} else {
+this.colors[colIndex] = this.getColourFromString (colour);
+}}
+}
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.out.println ("Error parsing userDefinedColours:\n" + token + "\n" + ex);
+} else {
+throw ex;
+}
+}
+}, "~S");
+Clazz.defineMethod (c$, "findColour", 
+function (c, j, seq) {
+var currentColour;
+var index = jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)];
+if ((this.threshold == 0) || this.aboveThreshold (c, j)) {
+if (this.lowerCaseColours != null && 'a' <= c && c <= 'z') {
+currentColour = this.lowerCaseColours[index];
+} else {
+currentColour = this.colors[index];
+}} else {
+currentColour = java.awt.Color.white;
+}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "setLowerCaseColours", 
+function (lcolours) {
+this.lowerCaseColours = lcolours;
+}, "~A");
+});
index fc253d3..b63064e 100644 (file)
@@ -1,8 +1,8 @@
-Clazz.declarePackage ("jalview.schemes");\r
-Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.ZappoColourScheme", ["jalview.schemes.ResidueProperties"], function () {\r
-c$ = Clazz.declareType (jalview.schemes, "ZappoColourScheme", jalview.schemes.ResidueColourScheme);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.schemes.ZappoColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.zappo, 0]);\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.schemes");
+Clazz.load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.ZappoColourScheme", ["jalview.schemes.ResidueProperties"], function () {
+c$ = Clazz.declareType (jalview.schemes, "ZappoColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.schemes.ZappoColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.zappo, 0]);
+});
+});
index 045573a..5891eb2 100644 (file)
@@ -1,5 +1,5 @@
-var path = ClazzLoader.getClasspathFor ("jalview.schemes.package");\r
-path = path.substring (0, path.lastIndexOf ("package.js"));\r
-ClazzLoader.jarClasspath (path + "ClustalxColourScheme.js", [\r
-"jalview.schemes.ConsensusColour",\r
-"$.ClustalxColourScheme"]);\r
+var path = ClazzLoader.getClasspathFor ("jalview.schemes.package");
+path = path.substring (0, path.lastIndexOf ("package.js"));
+ClazzLoader.jarClasspath (path + "ClustalxColourScheme.js", [
+"jalview.schemes.ConsensusColour",
+"$.ClustalxColourScheme"]);
index 979d03f..d293108 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.structure");\r
-Clazz.declareInterface (jalview.structure, "AlignmentViewPanelListener");\r
+Clazz.declarePackage ("jalview.structure");
+Clazz.declareInterface (jalview.structure, "AlignmentViewPanelListener");
index 3e50bc2..0023fdc 100644 (file)
@@ -1,35 +1,35 @@
-Clazz.declarePackage ("jalview.structure");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.pdbFile = null;\r
-this.chain = null;\r
-this.pdbResNum = 0;\r
-this.atomIndex = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.structure, "AtomSpec");\r
-Clazz.makeConstructor (c$, \r
-function (pdbFile, chain, resNo, atomNo) {\r
-this.pdbFile = pdbFile;\r
-this.chain = chain;\r
-this.pdbResNum = resNo;\r
-this.atomIndex = atomNo;\r
-}, "~S,~S,~N,~N");\r
-Clazz.defineMethod (c$, "getPdbFile", \r
-function () {\r
-return this.pdbFile;\r
-});\r
-Clazz.defineMethod (c$, "getChain", \r
-function () {\r
-return this.chain;\r
-});\r
-Clazz.defineMethod (c$, "getPdbResNum", \r
-function () {\r
-return this.pdbResNum;\r
-});\r
-Clazz.defineMethod (c$, "getAtomIndex", \r
-function () {\r
-return this.atomIndex;\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "pdbFile: " + this.pdbFile + ", chain: " + this.chain + ", res: " + this.pdbResNum + ", atom: " + this.atomIndex;\r
-});\r
+Clazz.declarePackage ("jalview.structure");
+c$ = Clazz.decorateAsClass (function () {
+this.pdbFile = null;
+this.chain = null;
+this.pdbResNum = 0;
+this.atomIndex = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.structure, "AtomSpec");
+Clazz.makeConstructor (c$, 
+function (pdbFile, chain, resNo, atomNo) {
+this.pdbFile = pdbFile;
+this.chain = chain;
+this.pdbResNum = resNo;
+this.atomIndex = atomNo;
+}, "~S,~S,~N,~N");
+Clazz.defineMethod (c$, "getPdbFile", 
+function () {
+return this.pdbFile;
+});
+Clazz.defineMethod (c$, "getChain", 
+function () {
+return this.chain;
+});
+Clazz.defineMethod (c$, "getPdbResNum", 
+function () {
+return this.pdbResNum;
+});
+Clazz.defineMethod (c$, "getAtomIndex", 
+function () {
+return this.atomIndex;
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "pdbFile: " + this.pdbFile + ", chain: " + this.chain + ", res: " + this.pdbResNum + ", atom: " + this.atomIndex;
+});
index 5f0c290..8901ca3 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.structure");\r
-Clazz.declareInterface (jalview.structure, "CommandListener");\r
+Clazz.declarePackage ("jalview.structure");
+Clazz.declareInterface (jalview.structure, "CommandListener");
index d9e73f4..b16a9bc 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.structure");\r
-Clazz.declareInterface (jalview.structure, "SecondaryStructureListener");\r
+Clazz.declarePackage ("jalview.structure");
+Clazz.declareInterface (jalview.structure, "SecondaryStructureListener");
index f7ce6dc..6dc17bd 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.structure");\r
-Clazz.declareInterface (jalview.structure, "SelectionListener");\r
+Clazz.declarePackage ("jalview.structure");
+Clazz.declareInterface (jalview.structure, "SelectionListener");
index 995ec35..7bb91f3 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.structure");\r
-Clazz.declareInterface (jalview.structure, "SelectionSource");\r
+Clazz.declarePackage ("jalview.structure");
+Clazz.declareInterface (jalview.structure, "SelectionSource");
index 026c9c1..6ff05ae 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.structure");\r
-Clazz.declareInterface (jalview.structure, "SequenceListener");\r
+Clazz.declarePackage ("jalview.structure");
+Clazz.declareInterface (jalview.structure, "SequenceListener");
index 47bde4f..e5ea9ef 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.structure");\r
-Clazz.declareInterface (jalview.structure, "StructureListener");\r
+Clazz.declarePackage ("jalview.structure");
+Clazz.declareInterface (jalview.structure, "StructureListener");
index 8cf2f33..40c774f 100644 (file)
@@ -1,69 +1,69 @@
-Clazz.declarePackage ("jalview.structure");\r
-Clazz.load (null, "jalview.structure.StructureMapping", ["jalview.datamodel.AlignmentAnnotation"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.mappingDetails = null;\r
-this.sequence = null;\r
-this.pdbfile = null;\r
-this.pdbid = null;\r
-this.pdbchain = null;\r
-this.mapping = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.structure, "StructureMapping");\r
-Clazz.makeConstructor (c$, \r
-function (seq, pdbfile, pdbid, chain, mapping, mappingDetails) {\r
-this.sequence = seq;\r
-this.pdbfile = pdbfile;\r
-this.pdbid = pdbid;\r
-this.pdbchain = chain;\r
-this.mapping = mapping;\r
-this.mappingDetails = mappingDetails;\r
-}, "jalview.datamodel.SequenceI,~S,~S,~S,~A,~S");\r
-Clazz.defineMethod (c$, "getSequence", \r
-function () {\r
-return this.sequence;\r
-});\r
-Clazz.defineMethod (c$, "getChain", \r
-function () {\r
-return this.pdbchain;\r
-});\r
-Clazz.defineMethod (c$, "getPdbId", \r
-function () {\r
-return this.pdbid;\r
-});\r
-Clazz.defineMethod (c$, "getAtomNum", \r
-function (seqpos) {\r
-if (this.mapping.length > seqpos) {\r
-return this.mapping[seqpos][1];\r
-} else {\r
-return 0;\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "getPDBResNum", \r
-function (seqpos) {\r
-if (this.mapping.length > seqpos) {\r
-return this.mapping[seqpos][0];\r
-} else {\r
-return 0;\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "getSeqPos", \r
-function (pdbResNum) {\r
-for (var i = 0; i < this.mapping.length; i++) {\r
-if (this.mapping[i][0] == pdbResNum) {\r
-return i;\r
-}}\r
-return -1;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "transfer", \r
-function (ana) {\r
-var ala_copy =  new jalview.datamodel.AlignmentAnnotation (ana);\r
-var ds = this.sequence;\r
-while (ds.getDatasetSequence () != null) {\r
-ds = ds.getDatasetSequence ();\r
-}\r
-ala_copy.remap (ds, this.mapping, -1, -1, 0);\r
-ds.addAlignmentAnnotation (ala_copy);\r
-if (ds !== this.sequence) {\r
-ala_copy =  new jalview.datamodel.AlignmentAnnotation (ala_copy);\r
-this.sequence.addAlignmentAnnotation (ala_copy);\r
-}return ala_copy;\r
-}, "jalview.datamodel.AlignmentAnnotation");\r
-});\r
+Clazz.declarePackage ("jalview.structure");
+Clazz.load (null, "jalview.structure.StructureMapping", ["jalview.datamodel.AlignmentAnnotation"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.mappingDetails = null;
+this.sequence = null;
+this.pdbfile = null;
+this.pdbid = null;
+this.pdbchain = null;
+this.mapping = null;
+Clazz.instantialize (this, arguments);
+}, jalview.structure, "StructureMapping");
+Clazz.makeConstructor (c$, 
+function (seq, pdbfile, pdbid, chain, mapping, mappingDetails) {
+this.sequence = seq;
+this.pdbfile = pdbfile;
+this.pdbid = pdbid;
+this.pdbchain = chain;
+this.mapping = mapping;
+this.mappingDetails = mappingDetails;
+}, "jalview.datamodel.SequenceI,~S,~S,~S,~A,~S");
+Clazz.defineMethod (c$, "getSequence", 
+function () {
+return this.sequence;
+});
+Clazz.defineMethod (c$, "getChain", 
+function () {
+return this.pdbchain;
+});
+Clazz.defineMethod (c$, "getPdbId", 
+function () {
+return this.pdbid;
+});
+Clazz.defineMethod (c$, "getAtomNum", 
+function (seqpos) {
+if (this.mapping.length > seqpos) {
+return this.mapping[seqpos][1];
+} else {
+return 0;
+}}, "~N");
+Clazz.defineMethod (c$, "getPDBResNum", 
+function (seqpos) {
+if (this.mapping.length > seqpos) {
+return this.mapping[seqpos][0];
+} else {
+return 0;
+}}, "~N");
+Clazz.defineMethod (c$, "getSeqPos", 
+function (pdbResNum) {
+for (var i = 0; i < this.mapping.length; i++) {
+if (this.mapping[i][0] == pdbResNum) {
+return i;
+}}
+return -1;
+}, "~N");
+Clazz.defineMethod (c$, "transfer", 
+function (ana) {
+var ala_copy =  new jalview.datamodel.AlignmentAnnotation (ana);
+var ds = this.sequence;
+while (ds.getDatasetSequence () != null) {
+ds = ds.getDatasetSequence ();
+}
+ala_copy.remap (ds, this.mapping, -1, -1, 0);
+ds.addAlignmentAnnotation (ala_copy);
+if (ds !== this.sequence) {
+ala_copy =  new jalview.datamodel.AlignmentAnnotation (ala_copy);
+this.sequence.addAlignmentAnnotation (ala_copy);
+}return ala_copy;
+}, "jalview.datamodel.AlignmentAnnotation");
+});
index 2f615c6..97ef9f5 100644 (file)
@@ -1,13 +1,13 @@
-Clazz.declarePackage ("jalview.structure");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.mapping = null;\r
-this.commands = null;\r
-this.handledBy = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.structure, "StructureMappingcommandSet");\r
-Clazz.makeConstructor (c$, \r
-function (handledBy, files, commands) {\r
-this.mapping = files;\r
-this.handledBy = handledBy;\r
-this.commands = commands;\r
-}, "~O,~S,~A");\r
+Clazz.declarePackage ("jalview.structure");
+c$ = Clazz.decorateAsClass (function () {
+this.mapping = null;
+this.commands = null;
+this.handledBy = null;
+Clazz.instantialize (this, arguments);
+}, jalview.structure, "StructureMappingcommandSet");
+Clazz.makeConstructor (c$, 
+function (handledBy, files, commands) {
+this.mapping = files;
+this.handledBy = handledBy;
+this.commands = commands;
+}, "~O,~S,~A");
index bd3d0d7..837803e 100644 (file)
Binary files a/bin/jalview/structure/StructureSelectionManager.class and b/bin/jalview/structure/StructureSelectionManager.class differ
index 681a2a7..cdbab51 100644 (file)
-Clazz.declarePackage ("jalview.structure");\r
-Clazz.load (["java.util.ArrayList", "$.HashMap", "$.LinkedHashSet", "$.Vector"], "jalview.structure.StructureSelectionManager", ["MCview.PDBfile", "jalview.analysis.AlignSeq", "jalview.commands.EditCommand", "$.OrderCommand", "jalview.datamodel.Mapping", "$.SearchResults", "jalview.io.AppletFormatAdapter", "jalview.structure.AtomSpec", "$.SecondaryStructureListener", "$.SequenceListener", "$.StructureListener", "$.StructureMapping", "$.VamsasListener", "jalview.util.MappingUtils", "$.MessageManager", "java.lang.Error", "$.NullPointerException", "$.StringBuilder", "java.util.Arrays", "$.Collections", "$.IdentityHashMap"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.mappings = null;\r
-this.processSecondaryStructure = false;\r
-this.secStructServices = false;\r
-this.addTempFacAnnot = false;\r
-this.seqmappings = null;\r
-this.seqMappingRefCounts = null;\r
-this.commandListeners = null;\r
-this.sel_listeners = null;\r
-this.pdbIdFileName = null;\r
-this.pdbFileNameId = null;\r
-this.relaySeqMappings = true;\r
-this.listeners = null;\r
-this.handlingVamsasMo = false;\r
-this.lastmsg = 0;\r
-this.view_listeners = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.structure, "StructureSelectionManager");\r
-Clazz.prepareFields (c$, function () {\r
-this.mappings =  new java.util.ArrayList ();\r
-this.seqmappings =  new java.util.LinkedHashSet ();\r
-this.seqMappingRefCounts =  new java.util.HashMap ();\r
-this.commandListeners =  new java.util.ArrayList ();\r
-this.sel_listeners =  new java.util.ArrayList ();\r
-this.pdbIdFileName =  new java.util.HashMap ();\r
-this.pdbFileNameId =  new java.util.HashMap ();\r
-this.listeners =  new java.util.Vector ();\r
-this.view_listeners =  new java.util.Vector ();\r
-});\r
-Clazz.defineMethod (c$, "isSecStructServices", \r
-function () {\r
-return this.secStructServices;\r
-});\r
-Clazz.defineMethod (c$, "setSecStructServices", \r
-function (secStructServices) {\r
-this.secStructServices = secStructServices;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isAddTempFacAnnot", \r
-function () {\r
-return this.addTempFacAnnot;\r
-});\r
-Clazz.defineMethod (c$, "setAddTempFacAnnot", \r
-function (addTempFacAnnot) {\r
-this.addTempFacAnnot = addTempFacAnnot;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isProcessSecondaryStructure", \r
-function () {\r
-return this.processSecondaryStructure;\r
-});\r
-Clazz.defineMethod (c$, "setProcessSecondaryStructure", \r
-function (enable) {\r
-this.processSecondaryStructure = enable;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "reportMapping", \r
-function () {\r
-if (this.mappings.isEmpty ()) {\r
-System.err.println ("reportMapping: No PDB/Sequence mappings.");\r
-} else {\r
-System.err.println ("reportMapping: There are " + this.mappings.size () + " mappings.");\r
-var i = 0;\r
-for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {\r
-System.err.println ("mapping " + i++ + " : " + sm.pdbfile);\r
-}\r
-}});\r
-Clazz.defineMethod (c$, "registerPDBFile", \r
-function (idForFile, absoluteFile) {\r
-this.pdbIdFileName.put (idForFile, absoluteFile);\r
-this.pdbFileNameId.put (absoluteFile, idForFile);\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "findIdForPDBFile", \r
-function (idOrFile) {\r
-var id = this.pdbFileNameId.get (idOrFile);\r
-return id;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "findFileForPDBId", \r
-function (idOrFile) {\r
-var id = this.pdbIdFileName.get (idOrFile);\r
-return id;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "isPDBFileRegistered", \r
-function (idOrFile) {\r
-return this.pdbFileNameId.containsKey (idOrFile) || this.pdbIdFileName.containsKey (idOrFile);\r
-}, "~S");\r
-c$.getStructureSelectionManager = Clazz.defineMethod (c$, "getStructureSelectionManager", \r
-function (context) {\r
-if (context == null) {\r
-if (jalview.structure.StructureSelectionManager.nullProvider == null) {\r
-if (jalview.structure.StructureSelectionManager.instances != null) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_structure_selection_manager_null"),  new NullPointerException (jalview.util.MessageManager.getString ("exception.ssm_context_is_null")));\r
-} else {\r
-jalview.structure.StructureSelectionManager.nullProvider =  new jalview.structure.StructureSelectionManager ();\r
-}return jalview.structure.StructureSelectionManager.nullProvider;\r
-}}if (jalview.structure.StructureSelectionManager.instances == null) {\r
-jalview.structure.StructureSelectionManager.instances =  new java.util.IdentityHashMap ();\r
-}var instance = jalview.structure.StructureSelectionManager.instances.get (context);\r
-if (instance == null) {\r
-if (jalview.structure.StructureSelectionManager.nullProvider != null) {\r
-instance = jalview.structure.StructureSelectionManager.nullProvider;\r
-} else {\r
-instance =  new jalview.structure.StructureSelectionManager ();\r
-}jalview.structure.StructureSelectionManager.instances.put (context, instance);\r
-}return instance;\r
-}, "jalview.api.StructureSelectionManagerProvider");\r
-Clazz.defineMethod (c$, "setRelaySeqMappings", \r
-function (relay) {\r
-this.relaySeqMappings = relay;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isRelaySeqMappingsEnabled", \r
-function () {\r
-return this.relaySeqMappings;\r
-});\r
-Clazz.defineMethod (c$, "addStructureViewerListener", \r
-function (svl) {\r
-if (!this.listeners.contains (svl)) {\r
-this.listeners.addElement (svl);\r
-}}, "~O");\r
-Clazz.defineMethod (c$, "alreadyMappedToFile", \r
-function (pdbid) {\r
-for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {\r
-if (sm.getPdbId ().equals (pdbid)) {\r
-return sm.pdbfile;\r
-}}\r
-return null;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setMapping", \r
-function (sequence, targetChains, pdbFile, protocol) {\r
-return this.setMapping (true, sequence, targetChains, pdbFile, protocol);\r
-}, "~A,~A,~S,~S");\r
-Clazz.defineMethod (c$, "setMapping", \r
-function (forStructureView, sequence, targetChains, pdbFile, protocol) {\r
-var parseSecStr = this.processSecondaryStructure;\r
-if (this.isPDBFileRegistered (pdbFile)) {\r
-for (var sq, $sq = 0, $$sq = sequence; $sq < $$sq.length && ((sq = $$sq[$sq]) || true); $sq++) {\r
-var ds = sq;\r
-while (ds.getDatasetSequence () != null) {\r
-ds = ds.getDatasetSequence ();\r
-}\r
-;if (ds.getAnnotation () != null) {\r
-for (var ala, $ala = 0, $$ala = ds.getAnnotation (); $ala < $$ala.length && ((ala = $$ala[$ala]) || true); $ala++) {\r
-if (MCview.PDBfile.isCalcIdForFile (ala, this.findIdForPDBFile (pdbFile))) {\r
-parseSecStr = false;\r
-}}\r
-}}\r
-}var pdb = null;\r
-try {\r
-pdb =  new MCview.PDBfile (this.addTempFacAnnot, parseSecStr, this.secStructServices, pdbFile, protocol);\r
-if (pdb.id != null && pdb.id.trim ().length > 0 && jalview.io.AppletFormatAdapter.FILE.equals (protocol)) {\r
-this.registerPDBFile (pdb.id.trim (), pdbFile);\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-return null;\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-var targetChain;\r
-for (var s = 0; s < sequence.length; s++) {\r
-var infChain = true;\r
-var seq = sequence[s];\r
-if (targetChains != null && targetChains[s] != null) {\r
-infChain = false;\r
-targetChain = targetChains[s];\r
-} else if (seq.getName ().indexOf ("|") > -1) {\r
-targetChain = seq.getName ().substring (seq.getName ().lastIndexOf ("|") + 1);\r
-if (targetChain.length > 1) {\r
-if (targetChain.trim ().length == 0) {\r
-targetChain = " ";\r
-} else {\r
-targetChain = "";\r
-}}} else {\r
-targetChain = "";\r
-}var max = -10;\r
-var maxAlignseq = null;\r
-var maxChainId = " ";\r
-var maxChain = null;\r
-var first = true;\r
-for (var chain, $chain = pdb.chains.iterator (); $chain.hasNext () && ((chain = $chain.next ()) || true);) {\r
-if (targetChain.length > 0 && !targetChain.equals (chain.id) && !infChain) {\r
-continue;\r
-}var type = chain.isNa ? "dna" : "pep";\r
-var as = jalview.analysis.AlignSeq.doGlobalNWAlignment (seq, chain.sequence, type);\r
-if (first || as.maxscore > max || (as.maxscore == max && chain.id.equals (targetChain))) {\r
-first = false;\r
-maxChain = chain;\r
-max = as.maxscore;\r
-maxAlignseq = as;\r
-maxChainId = chain.id;\r
-}}\r
-if (maxChain == null) {\r
-continue;\r
-}var mappingDetails =  new StringBuilder (128);\r
-mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("PDB Sequence is :").append (jalview.structure.StructureSelectionManager.NEWLINE).append ("Sequence = ").append (maxChain.sequence.getSequenceAsString ());\r
-mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("No of residues = ").append (maxChain.residues.size ()).append (jalview.structure.StructureSelectionManager.NEWLINE).append (jalview.structure.StructureSelectionManager.NEWLINE);\r
-var ps = ((Clazz.isClassDefined ("jalview.structure.StructureSelectionManager$1") ? 0 : jalview.structure.StructureSelectionManager.$StructureSelectionManager$1$ ()), Clazz.innerTypeInstance (jalview.structure.StructureSelectionManager$1, this, Clazz.cloneFinals ("mappingDetails", mappingDetails), System.out));\r
-maxAlignseq.printAlignment (ps);\r
-mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("PDB start/end ");\r
-mappingDetails.append (String.valueOf (maxAlignseq.seq2start)).append (" ");\r
-mappingDetails.append (String.valueOf (maxAlignseq.seq2end));\r
-mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("SEQ start/end ");\r
-mappingDetails.append (String.valueOf (maxAlignseq.seq1start + seq.getStart () - 1)).append (" ");\r
-mappingDetails.append (String.valueOf (maxAlignseq.seq1end + seq.getEnd () - 1));\r
-maxChain.makeExactMapping (maxAlignseq, seq);\r
-var sqmpping = maxAlignseq.getMappingFromS1 (false);\r
-var omap =  new jalview.datamodel.Mapping (sqmpping.getMap ().getInverse ());\r
-maxChain.transferRESNUMFeatures (seq, null);\r
-var mapping =  Clazz.newIntArray (seq.findPosition (seq.getLength ()) + 2, 2, 0);\r
-var resNum = -10000;\r
-var index = 0;\r
-do {\r
-var tmp = maxChain.atoms.elementAt (index);\r
-if (resNum != tmp.resNumber && tmp.alignmentMapping != -1) {\r
-resNum = tmp.resNumber;\r
-mapping[tmp.alignmentMapping + 1][0] = tmp.resNumber;\r
-mapping[tmp.alignmentMapping + 1][1] = tmp.atomIndex;\r
-}index++;\r
-} while (index < maxChain.atoms.size ());\r
-if (protocol.equals (jalview.io.AppletFormatAdapter.PASTE)) {\r
-pdbFile = "INLINE" + pdb.id;\r
-}var newMapping =  new jalview.structure.StructureMapping (seq, pdbFile, pdb.id, maxChainId, mapping, mappingDetails.toString ());\r
-if (forStructureView) {\r
-this.mappings.add (newMapping);\r
-}maxChain.transferResidueAnnotation (newMapping, sqmpping);\r
-}\r
-return pdb;\r
-}, "~B,~A,~A,~S,~S");\r
-Clazz.defineMethod (c$, "removeStructureViewerListener", \r
-function (svl, pdbfiles) {\r
-this.listeners.removeElement (svl);\r
-if (Clazz.instanceOf (svl, jalview.structure.SequenceListener)) {\r
-for (var i = 0; i < this.listeners.size (); i++) {\r
-if (Clazz.instanceOf (this.listeners.elementAt (i), jalview.structure.StructureListener)) {\r
-(this.listeners.elementAt (i)).releaseReferences (svl);\r
-}}\r
-}if (pdbfiles == null) {\r
-return;\r
-}var pdbs =  new java.util.ArrayList (java.util.Arrays.asList (pdbfiles));\r
-var sl;\r
-for (var i = 0; i < this.listeners.size (); i++) {\r
-if (Clazz.instanceOf (this.listeners.elementAt (i), jalview.structure.StructureListener)) {\r
-sl = this.listeners.elementAt (i);\r
-for (var pdbfile, $pdbfile = 0, $$pdbfile = sl.getPdbFile (); $pdbfile < $$pdbfile.length && ((pdbfile = $$pdbfile[$pdbfile]) || true); $pdbfile++) {\r
-pdbs.remove (pdbfile);\r
-}\r
-}}\r
-if (pdbs.size () > 0) {\r
-var tmp =  new java.util.ArrayList ();\r
-for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {\r
-if (!pdbs.contains (sm.pdbfile)) {\r
-tmp.add (sm);\r
-}}\r
-this.mappings = tmp;\r
-}}, "~O,~A");\r
-Clazz.defineMethod (c$, "mouseOverStructure", \r
-function (pdbResNum, chain, pdbfile) {\r
-var atomSpec =  new jalview.structure.AtomSpec (pdbfile, chain, pdbResNum, 0);\r
-var atoms = java.util.Collections.singletonList (atomSpec);\r
-this.mouseOverStructure (atoms);\r
-}, "~N,~S,~S");\r
-Clazz.defineMethod (c$, "mouseOverStructure", \r
-function (atoms) {\r
-if (this.listeners == null) {\r
-return;\r
-}var hasSequenceListener = false;\r
-for (var i = 0; i < this.listeners.size (); i++) {\r
-if (Clazz.instanceOf (this.listeners.elementAt (i), jalview.structure.SequenceListener)) {\r
-hasSequenceListener = true;\r
-}}\r
-if (!hasSequenceListener) {\r
-return;\r
-}var results =  new jalview.datamodel.SearchResults ();\r
-for (var atom, $atom = atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {\r
-var lastseq = null;\r
-var lastipos = -1;\r
-for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {\r
-if (sm.pdbfile.equals (atom.getPdbFile ()) && sm.pdbchain.equals (atom.getChain ())) {\r
-var indexpos = sm.getSeqPos (atom.getPdbResNum ());\r
-if (lastipos != indexpos && lastseq !== sm.sequence) {\r
-results.addResult (sm.sequence, indexpos, indexpos);\r
-lastipos = indexpos;\r
-lastseq = sm.sequence;\r
-for (var acf, $acf = this.seqmappings.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {\r
-acf.markMappedRegion (sm.sequence, indexpos, results);\r
-}\r
-}}}\r
-}\r
-for (var li, $li = this.listeners.iterator (); $li.hasNext () && ((li = $li.next ()) || true);) {\r
-if (Clazz.instanceOf (li, jalview.structure.SequenceListener)) {\r
-(li).highlightSequence (results);\r
-}}\r
-}, "java.util.List");\r
-Clazz.defineMethod (c$, "mouseOverSequence", \r
-function (seq, indexpos, index, source) {\r
-var hasSequenceListeners = this.handlingVamsasMo || !this.seqmappings.isEmpty ();\r
-var results = null;\r
-if (index == -1) {\r
-index = seq.findPosition (indexpos);\r
-}for (var i = 0; i < this.listeners.size (); i++) {\r
-var listener = this.listeners.elementAt (i);\r
-if (listener === source) {\r
-continue;\r
-}if (Clazz.instanceOf (listener, jalview.structure.StructureListener)) {\r
-this.highlightStructure (listener, seq, index);\r
-} else {\r
-if (Clazz.instanceOf (listener, jalview.structure.SequenceListener)) {\r
-var seqListener = listener;\r
-if (hasSequenceListeners && seqListener.getVamsasSource () !== source) {\r
-if (this.relaySeqMappings) {\r
-if (results == null) {\r
-results = jalview.util.MappingUtils.buildSearchResults (seq, index, this.seqmappings);\r
-}if (this.handlingVamsasMo) {\r
-results.addResult (seq, index, index);\r
-}seqListener.highlightSequence (results);\r
-}}} else if (Clazz.instanceOf (listener, jalview.structure.VamsasListener) && !this.handlingVamsasMo) {\r
-(listener).mouseOverSequence (seq, indexpos, source);\r
-} else if (Clazz.instanceOf (listener, jalview.structure.SecondaryStructureListener)) {\r
-(listener).mouseOverSequence (seq, indexpos, index);\r
-}}}\r
-}, "jalview.datamodel.SequenceI,~N,~N,jalview.structure.VamsasSource");\r
-Clazz.defineMethod (c$, "highlightStructure", \r
-function (sl, seq, index) {\r
-if (!sl.isListeningFor (seq)) {\r
-return;\r
-}var atomNo;\r
-var atoms =  new java.util.ArrayList ();\r
-for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {\r
-if (sm.sequence === seq || sm.sequence === seq.getDatasetSequence ()) {\r
-atomNo = sm.getAtomNum (index);\r
-if (atomNo > 0) {\r
-atoms.add ( new jalview.structure.AtomSpec (sm.pdbfile, sm.pdbchain, sm.getPDBResNum (index), atomNo));\r
-}}}\r
-sl.highlightAtoms (atoms);\r
-}, "jalview.structure.StructureListener,jalview.datamodel.SequenceI,~N");\r
-Clazz.defineMethod (c$, "mouseOverVamsasSequence", \r
-function (sequenceI, position, source) {\r
-this.handlingVamsasMo = true;\r
-var msg = sequenceI.hashCode () * (1 + position);\r
-if (this.lastmsg != msg) {\r
-this.lastmsg = msg;\r
-this.mouseOverSequence (sequenceI, position, -1, source);\r
-}this.handlingVamsasMo = false;\r
-}, "jalview.datamodel.SequenceI,~N,jalview.structure.VamsasSource");\r
-Clazz.defineMethod (c$, "colourSequenceFromStructure", \r
-function (seq, pdbid) {\r
-return null;\r
-}, "jalview.datamodel.SequenceI,~S");\r
-Clazz.defineMethod (c$, "structureSelectionChanged", \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "sequenceSelectionChanged", \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "sequenceColoursChanged", \r
-function (source) {\r
-var sl;\r
-for (var i = 0; i < this.listeners.size (); i++) {\r
-if (Clazz.instanceOf (this.listeners.elementAt (i), jalview.structure.StructureListener)) {\r
-sl = this.listeners.elementAt (i);\r
-sl.updateColours (source);\r
-}}\r
-}, "~O");\r
-Clazz.defineMethod (c$, "getMapping", \r
-function (pdbfile) {\r
-var tmp =  new java.util.ArrayList ();\r
-for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {\r
-if (sm.pdbfile.equals (pdbfile)) {\r
-tmp.add (sm);\r
-}}\r
-return tmp.toArray ( new Array (tmp.size ()));\r
-}, "~S");\r
-Clazz.defineMethod (c$, "printMappings", \r
-function (pdbfile, seqs) {\r
-if (pdbfile == null || seqs == null || seqs.isEmpty ()) {\r
-return "";\r
-}var sb =  new StringBuilder (64);\r
-for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {\r
-if (sm.pdbfile.equals (pdbfile) && seqs.contains (sm.sequence)) {\r
-sb.append (sm.mappingDetails);\r
-sb.append (jalview.structure.StructureSelectionManager.NEWLINE);\r
-sb.append ("=====================");\r
-sb.append (jalview.structure.StructureSelectionManager.NEWLINE);\r
-}}\r
-sb.append (jalview.structure.StructureSelectionManager.NEWLINE);\r
-return sb.toString ();\r
-}, "~S,java.util.List");\r
-Clazz.defineMethod (c$, "removeMappings", \r
-function (set) {\r
-if (set != null) {\r
-for (var acf, $acf = set.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {\r
-this.removeMapping (acf);\r
-}\r
-}}, "java.util.Set");\r
-Clazz.defineMethod (c$, "removeMapping", \r
-function (acf) {\r
-if (acf != null && this.seqmappings.contains (acf)) {\r
-var count = (this.seqMappingRefCounts.get (acf)).intValue ();\r
-count--;\r
-if (count > 0) {\r
-this.seqMappingRefCounts.put (acf, new Integer (count));\r
-} else {\r
-this.seqmappings.remove (acf);\r
-this.seqMappingRefCounts.remove (acf);\r
-}}}, "jalview.datamodel.AlignedCodonFrame");\r
-Clazz.defineMethod (c$, "addMappings", \r
-function (set) {\r
-if (set != null) {\r
-for (var acf, $acf = set.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {\r
-this.addMapping (acf);\r
-}\r
-}}, "java.util.Set");\r
-Clazz.defineMethod (c$, "addMapping", \r
-function (acf) {\r
-if (acf != null) {\r
-if (this.seqmappings.contains (acf)) {\r
-this.seqMappingRefCounts.put (acf, new Integer ((this.seqMappingRefCounts.get (acf)).intValue () + 1));\r
-} else {\r
-this.seqmappings.add (acf);\r
-this.seqMappingRefCounts.put (acf, new Integer (1));\r
-}}}, "jalview.datamodel.AlignedCodonFrame");\r
-Clazz.defineMethod (c$, "addSelectionListener", \r
-function (selecter) {\r
-if (!this.sel_listeners.contains (selecter)) {\r
-this.sel_listeners.add (selecter);\r
-}}, "jalview.structure.SelectionListener");\r
-Clazz.defineMethod (c$, "removeSelectionListener", \r
-function (toremove) {\r
-if (this.sel_listeners.contains (toremove)) {\r
-this.sel_listeners.remove (toremove);\r
-}}, "jalview.structure.SelectionListener");\r
-Clazz.defineMethod (c$, "sendSelection", \r
-function (selection, colsel, source) {\r
-for (var slis, $slis = this.sel_listeners.iterator (); $slis.hasNext () && ((slis = $slis.next ()) || true);) {\r
-if (slis !== source) {\r
-slis.selection (selection, colsel, source);\r
-}}\r
-}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");\r
-Clazz.defineMethod (c$, "sendViewPosition", \r
-function (source, startRes, endRes, startSeq, endSeq) {\r
-if (this.view_listeners != null && this.view_listeners.size () > 0) {\r
-var listeners = this.view_listeners.elements ();\r
-while (listeners.hasMoreElements ()) {\r
-var slis = listeners.nextElement ();\r
-if (slis !== source) {\r
-slis.viewPosition (startRes, endRes, startSeq, endSeq, source);\r
-};}\r
-}}, "jalview.api.AlignmentViewPanel,~N,~N,~N,~N");\r
-c$.release = Clazz.defineMethod (c$, "release", \r
-function (jalviewLite) {\r
-{\r
-if (jalview.structure.StructureSelectionManager.instances == null) {\r
-return;\r
-}var mnger = (jalview.structure.StructureSelectionManager.instances.get (jalviewLite));\r
-if (mnger != null) {\r
-jalview.structure.StructureSelectionManager.instances.remove (jalviewLite);\r
-try {\r
-mnger.finalize ();\r
-} catch (x) {\r
-}\r
-}}}, "jalview.api.StructureSelectionManagerProvider");\r
-Clazz.defineMethod (c$, "registerPDBEntry", \r
-function (pdbentry) {\r
-if (pdbentry.getFile () != null && pdbentry.getFile ().trim ().length > 0) {\r
-this.registerPDBFile (pdbentry.getId (), pdbentry.getFile ());\r
-}}, "jalview.datamodel.PDBEntry");\r
-Clazz.defineMethod (c$, "addCommandListener", \r
-function (cl) {\r
-if (!this.commandListeners.contains (cl)) {\r
-this.commandListeners.add (cl);\r
-}}, "jalview.structure.CommandListener");\r
-Clazz.defineMethod (c$, "hasCommandListener", \r
-function (cl) {\r
-return this.commandListeners.contains (cl);\r
-}, "jalview.structure.CommandListener");\r
-Clazz.defineMethod (c$, "removeCommandListener", \r
-function (l) {\r
-return this.commandListeners.remove (l);\r
-}, "jalview.structure.CommandListener");\r
-Clazz.defineMethod (c$, "commandPerformed", \r
-function (command, undo, source) {\r
-for (var listener, $listener = this.commandListeners.iterator (); $listener.hasNext () && ((listener = $listener.next ()) || true);) {\r
-listener.mirrorCommand (command, undo, this, source);\r
-}\r
-}, "jalview.commands.CommandI,~B,jalview.structure.VamsasSource");\r
-Clazz.defineMethod (c$, "mapCommand", \r
-function (command, undo, mapTo, gapChar) {\r
-if (Clazz.instanceOf (command, jalview.commands.EditCommand)) {\r
-return jalview.util.MappingUtils.mapEditCommand (command, undo, mapTo, gapChar, this.seqmappings);\r
-} else if (Clazz.instanceOf (command, jalview.commands.OrderCommand)) {\r
-return jalview.util.MappingUtils.mapOrderCommand (command, undo, mapTo, this.seqmappings);\r
-}return null;\r
-}, "jalview.commands.CommandI,~B,jalview.datamodel.AlignmentI,~S");\r
-c$.$StructureSelectionManager$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.structure, "StructureSelectionManager$1", java.io.PrintStream);\r
-Clazz.defineMethod (c$, "print", \r
-function (x) {\r
-this.f$.mappingDetails.append (x);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "println", \r
-function () {\r
-this.f$.mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE);\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.NEWLINE = c$.prototype.NEWLINE = System.lineSeparator ();\r
-Clazz.defineStatics (c$,\r
-"instances", null,\r
-"nullProvider", null);\r
-});\r
+Clazz.declarePackage ("jalview.structure");
+Clazz.load (["java.util.ArrayList", "$.HashMap", "$.LinkedHashSet", "$.Vector"], "jalview.structure.StructureSelectionManager", ["MCview.PDBfile", "jalview.analysis.AlignSeq", "jalview.commands.EditCommand", "$.OrderCommand", "jalview.datamodel.Mapping", "$.SearchResults", "jalview.io.AppletFormatAdapter", "jalview.structure.AtomSpec", "$.SecondaryStructureListener", "$.SequenceListener", "$.StructureListener", "$.StructureMapping", "$.VamsasListener", "jalview.util.MappingUtils", "$.MessageManager", "java.lang.Error", "$.NullPointerException", "$.StringBuilder", "java.util.Arrays", "$.Collections", "$.IdentityHashMap"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.mappings = null;
+this.processSecondaryStructure = false;
+this.secStructServices = false;
+this.addTempFacAnnot = false;
+this.seqmappings = null;
+this.seqMappingRefCounts = null;
+this.commandListeners = null;
+this.sel_listeners = null;
+this.pdbIdFileName = null;
+this.pdbFileNameId = null;
+this.relaySeqMappings = true;
+this.listeners = null;
+this.handlingVamsasMo = false;
+this.lastmsg = 0;
+this.view_listeners = null;
+Clazz.instantialize (this, arguments);
+}, jalview.structure, "StructureSelectionManager");
+Clazz.prepareFields (c$, function () {
+this.mappings =  new java.util.ArrayList ();
+this.seqmappings =  new java.util.LinkedHashSet ();
+this.seqMappingRefCounts =  new java.util.HashMap ();
+this.commandListeners =  new java.util.ArrayList ();
+this.sel_listeners =  new java.util.ArrayList ();
+this.pdbIdFileName =  new java.util.HashMap ();
+this.pdbFileNameId =  new java.util.HashMap ();
+this.listeners =  new java.util.Vector ();
+this.view_listeners =  new java.util.Vector ();
+});
+Clazz.defineMethod (c$, "isSecStructServices", 
+function () {
+return this.secStructServices;
+});
+Clazz.defineMethod (c$, "setSecStructServices", 
+function (secStructServices) {
+this.secStructServices = secStructServices;
+}, "~B");
+Clazz.defineMethod (c$, "isAddTempFacAnnot", 
+function () {
+return this.addTempFacAnnot;
+});
+Clazz.defineMethod (c$, "setAddTempFacAnnot", 
+function (addTempFacAnnot) {
+this.addTempFacAnnot = addTempFacAnnot;
+}, "~B");
+Clazz.defineMethod (c$, "isProcessSecondaryStructure", 
+function () {
+return this.processSecondaryStructure;
+});
+Clazz.defineMethod (c$, "setProcessSecondaryStructure", 
+function (enable) {
+this.processSecondaryStructure = enable;
+}, "~B");
+Clazz.defineMethod (c$, "reportMapping", 
+function () {
+if (this.mappings.isEmpty ()) {
+System.err.println ("reportMapping: No PDB/Sequence mappings.");
+} else {
+System.err.println ("reportMapping: There are " + this.mappings.size () + " mappings.");
+var i = 0;
+for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {
+System.err.println ("mapping " + i++ + " : " + sm.pdbfile);
+}
+}});
+Clazz.defineMethod (c$, "registerPDBFile", 
+function (idForFile, absoluteFile) {
+this.pdbIdFileName.put (idForFile, absoluteFile);
+this.pdbFileNameId.put (absoluteFile, idForFile);
+}, "~S,~S");
+Clazz.defineMethod (c$, "findIdForPDBFile", 
+function (idOrFile) {
+var id = this.pdbFileNameId.get (idOrFile);
+return id;
+}, "~S");
+Clazz.defineMethod (c$, "findFileForPDBId", 
+function (idOrFile) {
+var id = this.pdbIdFileName.get (idOrFile);
+return id;
+}, "~S");
+Clazz.defineMethod (c$, "isPDBFileRegistered", 
+function (idOrFile) {
+return this.pdbFileNameId.containsKey (idOrFile) || this.pdbIdFileName.containsKey (idOrFile);
+}, "~S");
+c$.getStructureSelectionManager = Clazz.defineMethod (c$, "getStructureSelectionManager", 
+function (context) {
+if (context == null) {
+if (jalview.structure.StructureSelectionManager.nullProvider == null) {
+if (jalview.structure.StructureSelectionManager.instances != null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_structure_selection_manager_null"),  new NullPointerException (jalview.util.MessageManager.getString ("exception.ssm_context_is_null")));
+} else {
+jalview.structure.StructureSelectionManager.nullProvider =  new jalview.structure.StructureSelectionManager ();
+}return jalview.structure.StructureSelectionManager.nullProvider;
+}}if (jalview.structure.StructureSelectionManager.instances == null) {
+jalview.structure.StructureSelectionManager.instances =  new java.util.IdentityHashMap ();
+}var instance = jalview.structure.StructureSelectionManager.instances.get (context);
+if (instance == null) {
+if (jalview.structure.StructureSelectionManager.nullProvider != null) {
+instance = jalview.structure.StructureSelectionManager.nullProvider;
+} else {
+instance =  new jalview.structure.StructureSelectionManager ();
+}jalview.structure.StructureSelectionManager.instances.put (context, instance);
+}return instance;
+}, "jalview.api.StructureSelectionManagerProvider");
+Clazz.defineMethod (c$, "setRelaySeqMappings", 
+function (relay) {
+this.relaySeqMappings = relay;
+}, "~B");
+Clazz.defineMethod (c$, "isRelaySeqMappingsEnabled", 
+function () {
+return this.relaySeqMappings;
+});
+Clazz.defineMethod (c$, "addStructureViewerListener", 
+function (svl) {
+if (!this.listeners.contains (svl)) {
+this.listeners.addElement (svl);
+}}, "~O");
+Clazz.defineMethod (c$, "alreadyMappedToFile", 
+function (pdbid) {
+for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {
+if (sm.getPdbId ().equals (pdbid)) {
+return sm.pdbfile;
+}}
+return null;
+}, "~S");
+Clazz.defineMethod (c$, "setMapping", 
+function (sequence, targetChains, pdbFile, protocol) {
+return this.setMapping (true, sequence, targetChains, pdbFile, protocol);
+}, "~A,~A,~S,~S");
+Clazz.defineMethod (c$, "setMapping", 
+function (forStructureView, sequence, targetChains, pdbFile, protocol) {
+var parseSecStr = this.processSecondaryStructure;
+if (this.isPDBFileRegistered (pdbFile)) {
+for (var sq, $sq = 0, $$sq = sequence; $sq < $$sq.length && ((sq = $$sq[$sq]) || true); $sq++) {
+var ds = sq;
+while (ds.getDatasetSequence () != null) {
+ds = ds.getDatasetSequence ();
+}
+;if (ds.getAnnotation () != null) {
+for (var ala, $ala = 0, $$ala = ds.getAnnotation (); $ala < $$ala.length && ((ala = $$ala[$ala]) || true); $ala++) {
+if (MCview.PDBfile.isCalcIdForFile (ala, this.findIdForPDBFile (pdbFile))) {
+parseSecStr = false;
+}}
+}}
+}var pdb = null;
+try {
+pdb =  new MCview.PDBfile (this.addTempFacAnnot, parseSecStr, this.secStructServices, pdbFile, protocol);
+if (pdb.id != null && pdb.id.trim ().length > 0 && jalview.io.AppletFormatAdapter.FILE.equals (protocol)) {
+this.registerPDBFile (pdb.id.trim (), pdbFile);
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+return null;
+} else {
+throw ex;
+}
+}
+var targetChain;
+for (var s = 0; s < sequence.length; s++) {
+var infChain = true;
+var seq = sequence[s];
+if (targetChains != null && targetChains[s] != null) {
+infChain = false;
+targetChain = targetChains[s];
+} else if (seq.getName ().indexOf ("|") > -1) {
+targetChain = seq.getName ().substring (seq.getName ().lastIndexOf ("|") + 1);
+if (targetChain.length > 1) {
+if (targetChain.trim ().length == 0) {
+targetChain = " ";
+} else {
+targetChain = "";
+}}} else {
+targetChain = "";
+}var max = -10;
+var maxAlignseq = null;
+var maxChainId = " ";
+var maxChain = null;
+var first = true;
+for (var chain, $chain = pdb.chains.iterator (); $chain.hasNext () && ((chain = $chain.next ()) || true);) {
+if (targetChain.length > 0 && !targetChain.equals (chain.id) && !infChain) {
+continue;
+}var type = chain.isNa ? "dna" : "pep";
+var as = jalview.analysis.AlignSeq.doGlobalNWAlignment (seq, chain.sequence, type);
+if (first || as.maxscore > max || (as.maxscore == max && chain.id.equals (targetChain))) {
+first = false;
+maxChain = chain;
+max = as.maxscore;
+maxAlignseq = as;
+maxChainId = chain.id;
+}}
+if (maxChain == null) {
+continue;
+}var mappingDetails =  new StringBuilder (128);
+mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("PDB Sequence is :").append (jalview.structure.StructureSelectionManager.NEWLINE).append ("Sequence = ").append (maxChain.sequence.getSequenceAsString ());
+mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("No of residues = ").append (maxChain.residues.size ()).append (jalview.structure.StructureSelectionManager.NEWLINE).append (jalview.structure.StructureSelectionManager.NEWLINE);
+var ps = ((Clazz.isClassDefined ("jalview.structure.StructureSelectionManager$1") ? 0 : jalview.structure.StructureSelectionManager.$StructureSelectionManager$1$ ()), Clazz.innerTypeInstance (jalview.structure.StructureSelectionManager$1, this, Clazz.cloneFinals ("mappingDetails", mappingDetails), System.out));
+maxAlignseq.printAlignment (ps);
+mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("PDB start/end ");
+mappingDetails.append (String.valueOf (maxAlignseq.seq2start)).append (" ");
+mappingDetails.append (String.valueOf (maxAlignseq.seq2end));
+mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("SEQ start/end ");
+mappingDetails.append (String.valueOf (maxAlignseq.seq1start + seq.getStart () - 1)).append (" ");
+mappingDetails.append (String.valueOf (maxAlignseq.seq1end + seq.getEnd () - 1));
+maxChain.makeExactMapping (maxAlignseq, seq);
+var sqmpping = maxAlignseq.getMappingFromS1 (false);
+var omap =  new jalview.datamodel.Mapping (sqmpping.getMap ().getInverse ());
+maxChain.transferRESNUMFeatures (seq, null);
+var mapping =  Clazz.newIntArray (seq.findPosition (seq.getLength ()) + 2, 2, 0);
+var resNum = -10000;
+var index = 0;
+do {
+var tmp = maxChain.atoms.elementAt (index);
+if (resNum != tmp.resNumber && tmp.alignmentMapping != -1) {
+resNum = tmp.resNumber;
+mapping[tmp.alignmentMapping + 1][0] = tmp.resNumber;
+mapping[tmp.alignmentMapping + 1][1] = tmp.atomIndex;
+}index++;
+} while (index < maxChain.atoms.size ());
+if (protocol.equals (jalview.io.AppletFormatAdapter.PASTE)) {
+pdbFile = "INLINE" + pdb.id;
+}var newMapping =  new jalview.structure.StructureMapping (seq, pdbFile, pdb.id, maxChainId, mapping, mappingDetails.toString ());
+if (forStructureView) {
+this.mappings.add (newMapping);
+}maxChain.transferResidueAnnotation (newMapping, sqmpping);
+}
+return pdb;
+}, "~B,~A,~A,~S,~S");
+Clazz.defineMethod (c$, "removeStructureViewerListener", 
+function (svl, pdbfiles) {
+this.listeners.removeElement (svl);
+if (Clazz.instanceOf (svl, jalview.structure.SequenceListener)) {
+for (var i = 0; i < this.listeners.size (); i++) {
+if (Clazz.instanceOf (this.listeners.elementAt (i), jalview.structure.StructureListener)) {
+(this.listeners.elementAt (i)).releaseReferences (svl);
+}}
+}if (pdbfiles == null) {
+return;
+}var pdbs =  new java.util.ArrayList (java.util.Arrays.asList (pdbfiles));
+var sl;
+for (var i = 0; i < this.listeners.size (); i++) {
+if (Clazz.instanceOf (this.listeners.elementAt (i), jalview.structure.StructureListener)) {
+sl = this.listeners.elementAt (i);
+for (var pdbfile, $pdbfile = 0, $$pdbfile = sl.getPdbFile (); $pdbfile < $$pdbfile.length && ((pdbfile = $$pdbfile[$pdbfile]) || true); $pdbfile++) {
+pdbs.remove (pdbfile);
+}
+}}
+if (pdbs.size () > 0) {
+var tmp =  new java.util.ArrayList ();
+for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {
+if (!pdbs.contains (sm.pdbfile)) {
+tmp.add (sm);
+}}
+this.mappings = tmp;
+}}, "~O,~A");
+Clazz.defineMethod (c$, "mouseOverStructure", 
+function (pdbResNum, chain, pdbfile) {
+var atomSpec =  new jalview.structure.AtomSpec (pdbfile, chain, pdbResNum, 0);
+var atoms = java.util.Collections.singletonList (atomSpec);
+this.mouseOverStructure (atoms);
+}, "~N,~S,~S");
+Clazz.defineMethod (c$, "mouseOverStructure", 
+function (atoms) {
+if (this.listeners == null) {
+return;
+}var hasSequenceListener = false;
+for (var i = 0; i < this.listeners.size (); i++) {
+if (Clazz.instanceOf (this.listeners.elementAt (i), jalview.structure.SequenceListener)) {
+hasSequenceListener = true;
+}}
+if (!hasSequenceListener) {
+return;
+}var results =  new jalview.datamodel.SearchResults ();
+for (var atom, $atom = atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {
+var lastseq = null;
+var lastipos = -1;
+for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {
+if (sm.pdbfile.equals (atom.getPdbFile ()) && sm.pdbchain.equals (atom.getChain ())) {
+var indexpos = sm.getSeqPos (atom.getPdbResNum ());
+if (lastipos != indexpos && lastseq !== sm.sequence) {
+results.addResult (sm.sequence, indexpos, indexpos);
+lastipos = indexpos;
+lastseq = sm.sequence;
+for (var acf, $acf = this.seqmappings.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+acf.markMappedRegion (sm.sequence, indexpos, results);
+}
+}}}
+}
+for (var li, $li = this.listeners.iterator (); $li.hasNext () && ((li = $li.next ()) || true);) {
+if (Clazz.instanceOf (li, jalview.structure.SequenceListener)) {
+(li).highlightSequence (results);
+}}
+}, "java.util.List");
+Clazz.defineMethod (c$, "mouseOverSequence", 
+function (seq, indexpos, index, source) {
+var hasSequenceListeners = this.handlingVamsasMo || !this.seqmappings.isEmpty ();
+var results = null;
+if (index == -1) {
+index = seq.findPosition (indexpos);
+}for (var i = 0; i < this.listeners.size (); i++) {
+var listener = this.listeners.elementAt (i);
+if (listener === source) {
+continue;
+}if (Clazz.instanceOf (listener, jalview.structure.StructureListener)) {
+this.highlightStructure (listener, seq, index);
+} else {
+if (Clazz.instanceOf (listener, jalview.structure.SequenceListener)) {
+var seqListener = listener;
+if (hasSequenceListeners && seqListener.getVamsasSource () !== source) {
+if (this.relaySeqMappings) {
+if (results == null) {
+results = jalview.util.MappingUtils.buildSearchResults (seq, index, this.seqmappings);
+}if (this.handlingVamsasMo) {
+results.addResult (seq, index, index);
+}seqListener.highlightSequence (results);
+}}} else if (Clazz.instanceOf (listener, jalview.structure.VamsasListener) && !this.handlingVamsasMo) {
+(listener).mouseOverSequence (seq, indexpos, source);
+} else if (Clazz.instanceOf (listener, jalview.structure.SecondaryStructureListener)) {
+(listener).mouseOverSequence (seq, indexpos, index);
+}}}
+}, "jalview.datamodel.SequenceI,~N,~N,jalview.structure.VamsasSource");
+Clazz.defineMethod (c$, "highlightStructure", 
+function (sl, seq, index) {
+if (!sl.isListeningFor (seq)) {
+return;
+}var atomNo;
+var atoms =  new java.util.ArrayList ();
+for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {
+if (sm.sequence === seq || sm.sequence === seq.getDatasetSequence ()) {
+atomNo = sm.getAtomNum (index);
+if (atomNo > 0) {
+atoms.add ( new jalview.structure.AtomSpec (sm.pdbfile, sm.pdbchain, sm.getPDBResNum (index), atomNo));
+}}}
+sl.highlightAtoms (atoms);
+}, "jalview.structure.StructureListener,jalview.datamodel.SequenceI,~N");
+Clazz.defineMethod (c$, "mouseOverVamsasSequence", 
+function (sequenceI, position, source) {
+this.handlingVamsasMo = true;
+var msg = sequenceI.hashCode () * (1 + position);
+if (this.lastmsg != msg) {
+this.lastmsg = msg;
+this.mouseOverSequence (sequenceI, position, -1, source);
+}this.handlingVamsasMo = false;
+}, "jalview.datamodel.SequenceI,~N,jalview.structure.VamsasSource");
+Clazz.defineMethod (c$, "colourSequenceFromStructure", 
+function (seq, pdbid) {
+return null;
+}, "jalview.datamodel.SequenceI,~S");
+Clazz.defineMethod (c$, "structureSelectionChanged", 
+function () {
+});
+Clazz.defineMethod (c$, "sequenceSelectionChanged", 
+function () {
+});
+Clazz.defineMethod (c$, "sequenceColoursChanged", 
+function (source) {
+var sl;
+for (var i = 0; i < this.listeners.size (); i++) {
+if (Clazz.instanceOf (this.listeners.elementAt (i), jalview.structure.StructureListener)) {
+sl = this.listeners.elementAt (i);
+sl.updateColours (source);
+}}
+}, "~O");
+Clazz.defineMethod (c$, "getMapping", 
+function (pdbfile) {
+var tmp =  new java.util.ArrayList ();
+for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {
+if (sm.pdbfile.equals (pdbfile)) {
+tmp.add (sm);
+}}
+return tmp.toArray ( new Array (tmp.size ()));
+}, "~S");
+Clazz.defineMethod (c$, "printMappings", 
+function (pdbfile, seqs) {
+if (pdbfile == null || seqs == null || seqs.isEmpty ()) {
+return "";
+}var sb =  new StringBuilder (64);
+for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {
+if (sm.pdbfile.equals (pdbfile) && seqs.contains (sm.sequence)) {
+sb.append (sm.mappingDetails);
+sb.append (jalview.structure.StructureSelectionManager.NEWLINE);
+sb.append ("=====================");
+sb.append (jalview.structure.StructureSelectionManager.NEWLINE);
+}}
+sb.append (jalview.structure.StructureSelectionManager.NEWLINE);
+return sb.toString ();
+}, "~S,java.util.List");
+Clazz.defineMethod (c$, "removeMappings", 
+function (set) {
+if (set != null) {
+for (var acf, $acf = set.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+this.removeMapping (acf);
+}
+}}, "java.util.Set");
+Clazz.defineMethod (c$, "removeMapping", 
+function (acf) {
+if (acf != null && this.seqmappings.contains (acf)) {
+var count = (this.seqMappingRefCounts.get (acf)).intValue ();
+count--;
+if (count > 0) {
+this.seqMappingRefCounts.put (acf, new Integer (count));
+} else {
+this.seqmappings.remove (acf);
+this.seqMappingRefCounts.remove (acf);
+}}}, "jalview.datamodel.AlignedCodonFrame");
+Clazz.defineMethod (c$, "addMappings", 
+function (set) {
+if (set != null) {
+for (var acf, $acf = set.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+this.addMapping (acf);
+}
+}}, "java.util.Set");
+Clazz.defineMethod (c$, "addMapping", 
+function (acf) {
+if (acf != null) {
+if (this.seqmappings.contains (acf)) {
+this.seqMappingRefCounts.put (acf, new Integer ((this.seqMappingRefCounts.get (acf)).intValue () + 1));
+} else {
+this.seqmappings.add (acf);
+this.seqMappingRefCounts.put (acf, new Integer (1));
+}}}, "jalview.datamodel.AlignedCodonFrame");
+Clazz.defineMethod (c$, "addSelectionListener", 
+function (selecter) {
+if (!this.sel_listeners.contains (selecter)) {
+this.sel_listeners.add (selecter);
+}}, "jalview.structure.SelectionListener");
+Clazz.defineMethod (c$, "removeSelectionListener", 
+function (toremove) {
+if (this.sel_listeners.contains (toremove)) {
+this.sel_listeners.remove (toremove);
+}}, "jalview.structure.SelectionListener");
+Clazz.defineMethod (c$, "sendSelection", 
+function (selection, colsel, source) {
+for (var slis, $slis = this.sel_listeners.iterator (); $slis.hasNext () && ((slis = $slis.next ()) || true);) {
+if (slis !== source) {
+slis.selection (selection, colsel, source);
+}}
+}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
+Clazz.defineMethod (c$, "sendViewPosition", 
+function (source, startRes, endRes, startSeq, endSeq) {
+if (this.view_listeners != null && this.view_listeners.size () > 0) {
+var listeners = this.view_listeners.elements ();
+while (listeners.hasMoreElements ()) {
+var slis = listeners.nextElement ();
+if (slis !== source) {
+slis.viewPosition (startRes, endRes, startSeq, endSeq, source);
+};}
+}}, "jalview.api.AlignmentViewPanel,~N,~N,~N,~N");
+c$.release = Clazz.defineMethod (c$, "release", 
+function (jalviewLite) {
+{
+if (jalview.structure.StructureSelectionManager.instances == null) {
+return;
+}var mnger = (jalview.structure.StructureSelectionManager.instances.get (jalviewLite));
+if (mnger != null) {
+jalview.structure.StructureSelectionManager.instances.remove (jalviewLite);
+try {
+mnger.finalize ();
+} catch (x) {
+}
+}}}, "jalview.api.StructureSelectionManagerProvider");
+Clazz.defineMethod (c$, "registerPDBEntry", 
+function (pdbentry) {
+if (pdbentry.getFile () != null && pdbentry.getFile ().trim ().length > 0) {
+this.registerPDBFile (pdbentry.getId (), pdbentry.getFile ());
+}}, "jalview.datamodel.PDBEntry");
+Clazz.defineMethod (c$, "addCommandListener", 
+function (cl) {
+if (!this.commandListeners.contains (cl)) {
+this.commandListeners.add (cl);
+}}, "jalview.structure.CommandListener");
+Clazz.defineMethod (c$, "hasCommandListener", 
+function (cl) {
+return this.commandListeners.contains (cl);
+}, "jalview.structure.CommandListener");
+Clazz.defineMethod (c$, "removeCommandListener", 
+function (l) {
+return this.commandListeners.remove (l);
+}, "jalview.structure.CommandListener");
+Clazz.defineMethod (c$, "commandPerformed", 
+function (command, undo, source) {
+for (var listener, $listener = this.commandListeners.iterator (); $listener.hasNext () && ((listener = $listener.next ()) || true);) {
+listener.mirrorCommand (command, undo, this, source);
+}
+}, "jalview.commands.CommandI,~B,jalview.structure.VamsasSource");
+Clazz.defineMethod (c$, "mapCommand", 
+function (command, undo, mapTo, gapChar) {
+if (Clazz.instanceOf (command, jalview.commands.EditCommand)) {
+return jalview.util.MappingUtils.mapEditCommand (command, undo, mapTo, gapChar, this.seqmappings);
+} else if (Clazz.instanceOf (command, jalview.commands.OrderCommand)) {
+return jalview.util.MappingUtils.mapOrderCommand (command, undo, mapTo, this.seqmappings);
+}return null;
+}, "jalview.commands.CommandI,~B,jalview.datamodel.AlignmentI,~S");
+c$.$StructureSelectionManager$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.structure, "StructureSelectionManager$1", java.io.PrintStream);
+Clazz.defineMethod (c$, "print", 
+function (x) {
+this.f$.mappingDetails.append (x);
+}, "~S");
+Clazz.defineMethod (c$, "println", 
+function () {
+this.f$.mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE);
+});
+c$ = Clazz.p0p ();
+};
+c$.NEWLINE = c$.prototype.NEWLINE = System.lineSeparator ();
+Clazz.defineStatics (c$,
+"instances", null,
+"nullProvider", null);
+});
index 4d4fcbc..3e2c764 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.structure");\r
-Clazz.declareInterface (jalview.structure, "VamsasListener");\r
+Clazz.declarePackage ("jalview.structure");
+Clazz.declareInterface (jalview.structure, "VamsasListener");
index a910ac7..6654402 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("jalview.structure");\r
-Clazz.declareInterface (jalview.structure, "VamsasSource");\r
+Clazz.declarePackage ("jalview.structure");
+Clazz.declareInterface (jalview.structure, "VamsasSource");
index 41ab261..db598fb 100644 (file)
Binary files a/bin/jalview/structures/models/AAStructureBindingModel.class and b/bin/jalview/structures/models/AAStructureBindingModel.class differ
index f64bb34..a66cb14 100644 (file)
-Clazz.declarePackage ("jalview.structures.models");\r
-Clazz.load (["jalview.api.StructureSelectionManagerProvider", "jalview.structure.StructureListener", "jalview.structures.models.SequenceStructureBindingModel"], "jalview.structures.models.AAStructureBindingModel", ["jalview.util.Comparison", "$.MessageManager", "java.lang.Error", "$.StringBuilder", "java.util.ArrayList", "$.Arrays"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.ssm = null;\r
-this.pdbEntry = null;\r
-this.sequence = null;\r
-this.chains = null;\r
-this.protocol = null;\r
-this.colourBySequence = true;\r
-this.nucleotide = false;\r
-if (!Clazz.isClassDefined ("jalview.structures.models.AAStructureBindingModel.SuperposeData")) {\r
-jalview.structures.models.AAStructureBindingModel.$AAStructureBindingModel$SuperposeData$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.structures.models, "AAStructureBindingModel", jalview.structures.models.SequenceStructureBindingModel, [jalview.structure.StructureListener, jalview.api.StructureSelectionManagerProvider]);\r
-Clazz.makeConstructor (c$, \r
-function (ssm, seqs) {\r
-Clazz.superConstructor (this, jalview.structures.models.AAStructureBindingModel, []);\r
-this.ssm = ssm;\r
-this.sequence = seqs;\r
-}, "jalview.structure.StructureSelectionManager,~A");\r
-Clazz.makeConstructor (c$, \r
-function (ssm, pdbentry, sequenceIs, chains, protocol) {\r
-Clazz.superConstructor (this, jalview.structures.models.AAStructureBindingModel, []);\r
-this.ssm = ssm;\r
-this.sequence = sequenceIs;\r
-this.nucleotide = jalview.util.Comparison.isNucleotide2 (sequenceIs);\r
-this.chains = chains;\r
-this.pdbEntry = pdbentry;\r
-this.protocol = protocol;\r
-if (chains == null) {\r
-this.chains =  new Array (pdbentry.length);\r
-}}, "jalview.structure.StructureSelectionManager,~A,~A,~A,~S");\r
-Clazz.defineMethod (c$, "getSsm", \r
-function () {\r
-return this.ssm;\r
-});\r
-Clazz.defineMethod (c$, "getPdbEntry", \r
-function (i) {\r
-return (this.pdbEntry != null && this.pdbEntry.length > i) ? this.pdbEntry[i] : null;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "hasPdbId", \r
-function (pdbId) {\r
-if (this.pdbEntry != null) {\r
-for (var pdb, $pdb = 0, $$pdb = this.pdbEntry; $pdb < $$pdb.length && ((pdb = $$pdb[$pdb]) || true); $pdb++) {\r
-if (pdb.getId ().equals (pdbId)) {\r
-return true;\r
-}}\r
-}return false;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getPdbCount", \r
-function () {\r
-return this.pdbEntry == null ? 0 : this.pdbEntry.length;\r
-});\r
-Clazz.defineMethod (c$, "getSequence", \r
-function () {\r
-return this.sequence;\r
-});\r
-Clazz.defineMethod (c$, "getChains", \r
-function () {\r
-return this.chains;\r
-});\r
-Clazz.defineMethod (c$, "getProtocol", \r
-function () {\r
-return this.protocol;\r
-});\r
-Clazz.defineMethod (c$, "setPdbentry", \r
-function (pdbentry) {\r
-this.pdbEntry = pdbentry;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "setSequence", \r
-function (sequence) {\r
-this.sequence = sequence;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "setChains", \r
-function (chains) {\r
-this.chains = chains;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "getViewerTitle", \r
-function (viewerName, verbose) {\r
-if (this.getSequence () == null || this.getSequence ().length < 1 || this.getPdbCount () < 1 || this.getSequence ()[0].length < 1) {\r
-return ("Jalview " + viewerName + " Window");\r
-}var title =  new StringBuilder (64);\r
-var pdbEntry = this.getPdbEntry (0);\r
-title.append (viewerName + " view for " + this.getSequence ()[0][0].getName () + ":" + pdbEntry.getId ());\r
-if (verbose) {\r
-if (pdbEntry.getProperty () != null) {\r
-if (pdbEntry.getProperty ().get ("method") != null) {\r
-title.append (" Method: ");\r
-title.append (pdbEntry.getProperty ().get ("method"));\r
-}if (pdbEntry.getProperty ().get ("chains") != null) {\r
-title.append (" Chain:");\r
-title.append (pdbEntry.getProperty ().get ("chains"));\r
-}}}return title.toString ();\r
-}, "~S,~B");\r
-Clazz.defineMethod (c$, "releaseUIResources", \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "isColourBySequence", \r
-function () {\r
-return this.colourBySequence;\r
-});\r
-Clazz.defineMethod (c$, "setColourBySequence", \r
-function (colourBySequence) {\r
-this.colourBySequence = colourBySequence;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "addSequenceAndChain", \r
-function (pe, seq, tchain) {\r
-if (pe < 0 || pe >= this.getPdbCount ()) {\r
-throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_no_pdbentry_from_index",  Clazz.newArray (-1, [Integer.$valueOf (pe).toString ()])));\r
-}var nullChain = "TheNullChain";\r
-var s =  new java.util.ArrayList ();\r
-var c =  new java.util.ArrayList ();\r
-if (this.getChains () == null) {\r
-this.setChains ( new Array (this.getPdbCount ()));\r
-}if (this.getSequence ()[pe] != null) {\r
-for (var i = 0; i < this.getSequence ()[pe].length; i++) {\r
-s.add (this.getSequence ()[pe][i]);\r
-if (this.getChains ()[pe] != null) {\r
-if (i < this.getChains ()[pe].length) {\r
-c.add (this.getChains ()[pe][i]);\r
-} else {\r
-c.add ("TheNullChain");\r
-}} else {\r
-if (tchain != null && tchain.length > 0) {\r
-c.add ("TheNullChain");\r
-}}}\r
-}for (var i = 0; i < seq.length; i++) {\r
-if (!s.contains (seq[i])) {\r
-s.add (seq[i]);\r
-if (tchain != null && i < tchain.length) {\r
-c.add (tchain[i] == null ? "TheNullChain" : tchain[i]);\r
-}}}\r
-var tmp = s.toArray ( new Array (s.size ()));\r
-this.getSequence ()[pe] = tmp;\r
-if (c.size () > 0) {\r
-var tch = c.toArray ( new Array (c.size ()));\r
-for (var i = 0; i < tch.length; i++) {\r
-if (tch[i] === "TheNullChain") {\r
-tch[i] = null;\r
-}}\r
-this.getChains ()[pe] = tch;\r
-} else {\r
-this.getChains ()[pe] = null;\r
-}}, "~N,~A,~A");\r
-Clazz.defineMethod (c$, "addSequenceAndChain", \r
-function (pdbe, seq, chns) {\r
-var v =  new java.util.ArrayList ();\r
-var rtn =  new java.util.ArrayList ();\r
-for (var i = 0; i < this.getPdbCount (); i++) {\r
-v.add (this.getPdbEntry (i));\r
-}\r
-for (var i = 0; i < pdbe.length; i++) {\r
-var r = v.indexOf (pdbe[i]);\r
-if (r == -1 || r >= this.getPdbCount ()) {\r
-rtn.add ( Clazz.newIntArray (-1, [v.size (), i]));\r
-v.add (pdbe[i]);\r
-} else {\r
-this.addSequenceAndChain (r, seq[i], chns[i]);\r
-}}\r
-pdbe = v.toArray ( new Array (v.size ()));\r
-this.setPdbentry (pdbe);\r
-if (rtn.size () > 0) {\r
-var sqs =  new Array (this.getPdbCount ());\r
-var sch =  new Array (this.getPdbCount ());\r
-System.arraycopy (this.getSequence (), 0, sqs, 0, this.getSequence ().length);\r
-System.arraycopy (this.getChains (), 0, sch, 0, this.getChains ().length);\r
-this.setSequence (sqs);\r
-this.setChains (sch);\r
-pdbe =  new Array (rtn.size ());\r
-for (var r = 0; r < pdbe.length; r++) {\r
-var stri = (rtn.get (r));\r
-pdbe[r] = this.getPdbEntry (stri[0]);\r
-this.addSequenceAndChain (stri[0], seq[stri[1]], chns[stri[1]]);\r
-}\r
-} else {\r
-pdbe = null;\r
-}return pdbe;\r
-}, "~A,~A,~A");\r
-Clazz.defineMethod (c$, "addSequence", \r
-function (pe, seq) {\r
-this.addSequenceAndChain (pe, seq, null);\r
-}, "~N,~A");\r
-Clazz.defineMethod (c$, "addSequenceForStructFile", \r
-function (pdbFile, seq) {\r
-for (var pe = 0; pe < this.getPdbCount (); pe++) {\r
-if (this.getPdbEntry (pe).getFile ().equals (pdbFile)) {\r
-this.addSequence (pe, seq);\r
-}}\r
-}, "~S,~A");\r
-Clazz.defineMethod (c$, "isNucleotide", \r
-function () {\r
-return this.nucleotide;\r
-});\r
-Clazz.defineMethod (c$, "printMappings", \r
-function () {\r
-if (this.pdbEntry == null) {\r
-return "";\r
-}var sb =  new StringBuilder (128);\r
-for (var pdbe = 0; pdbe < this.getPdbCount (); pdbe++) {\r
-var pdbfile = this.getPdbEntry (pdbe).getFile ();\r
-var seqs = java.util.Arrays.asList (this.getSequence ()[pdbe]);\r
-sb.append (this.getSsm ().printMappings (pdbfile, seqs));\r
-}\r
-return sb.toString ();\r
-});\r
-Clazz.defineMethod (c$, "getMappedPosition", \r
-function (seq, alignedPos, mapping) {\r
-if (alignedPos >= seq.getLength ()) {\r
-return -1;\r
-}if (jalview.util.Comparison.isGap (seq.getCharAt (alignedPos))) {\r
-return -1;\r
-}var seqPos = seq.findPosition (alignedPos);\r
-var pos = mapping.getPDBResNum (seqPos);\r
-return pos;\r
-}, "jalview.datamodel.SequenceI,~N,jalview.structure.StructureMapping");\r
-Clazz.defineMethod (c$, "findSuperposableResidues", \r
-function (alignment, matched, structures) {\r
-var refStructure = -1;\r
-var files = this.getPdbFile ();\r
-for (var pdbfnum = 0; pdbfnum < files.length; pdbfnum++) {\r
-var mappings = this.getSsm ().getMapping (files[pdbfnum]);\r
-var lastPos = -1;\r
-var seqCountForPdbFile = this.getSequence ()[pdbfnum].length;\r
-for (var s = 0; s < seqCountForPdbFile; s++) {\r
-for (var mapping, $mapping = 0, $$mapping = mappings; $mapping < $$mapping.length && ((mapping = $$mapping[$mapping]) || true); $mapping++) {\r
-var theSequence = this.getSequence ()[pdbfnum][s];\r
-if (mapping.getSequence () === theSequence && alignment.findIndex (theSequence) > -1) {\r
-if (refStructure < 0) {\r
-refStructure = pdbfnum;\r
-}for (var r = 0; r < matched.length; r++) {\r
-if (!matched[r]) {\r
-continue;\r
-}var pos = this.getMappedPosition (theSequence, r, mapping);\r
-if (pos < 1 || pos == lastPos) {\r
-matched[r] = false;\r
-continue;\r
-}lastPos = pos;\r
-structures[pdbfnum].pdbResNo[r] = pos;\r
-}\r
-var chain = mapping.getChain ();\r
-if (chain != null && chain.trim ().length > 0) {\r
-structures[pdbfnum].chain = chain;\r
-}structures[pdbfnum].pdbId = mapping.getPdbId ();\r
-structures[pdbfnum].isRna = theSequence.getRNA () != null;\r
-s = seqCountForPdbFile;\r
-break;\r
-}}\r
-}\r
-}\r
-return refStructure;\r
-}, "jalview.datamodel.AlignmentI,~A,~A");\r
-Clazz.defineMethod (c$, "waitForFileLoad", \r
-function (files) {\r
-var starttime = System.currentTimeMillis ();\r
-var endTime = 10000 + 1000 * files.length + starttime;\r
-var notLoaded = null;\r
-var waiting = true;\r
-while (waiting && System.currentTimeMillis () < endTime) {\r
-waiting = false;\r
-for (var file, $file = 0, $$file = files; $file < $$file.length && ((file = $$file[$file]) || true); $file++) {\r
-notLoaded = file;\r
-try {\r
-var sm = this.getSsm ().getMapping (file);\r
-if (sm == null || sm.length == 0) {\r
-waiting = true;\r
-}} catch (x) {\r
-waiting = true;\r
-}\r
-}\r
-}\r
-if (waiting) {\r
-System.err.println ("Timed out waiting for structure viewer to load file " + notLoaded);\r
-return false;\r
-}return true;\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "isListeningFor", \r
-function (seq) {\r
-if (this.sequence != null) {\r
-for (var seqs, $seqs = 0, $$seqs = this.sequence; $seqs < $$seqs.length && ((seqs = $$seqs[$seqs]) || true); $seqs++) {\r
-if (seqs != null) {\r
-for (var s, $s = 0, $$s = seqs; $s < $$s.length && ((s = $$s[$s]) || true); $s++) {\r
-if (s === seq) {\r
-return true;\r
-}}\r
-}}\r
-}return false;\r
-}, "jalview.datamodel.SequenceI");\r
-c$.$AAStructureBindingModel$SuperposeData$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.filename = null;\r
-this.pdbId = null;\r
-this.chain = "";\r
-this.isRna = false;\r
-this.pdbResNo = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.structures.models.AAStructureBindingModel, "SuperposeData");\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-this.pdbResNo =  Clazz.newIntArray (a, 0);\r
-}, "~N");\r
-c$ = Clazz.p0p ();\r
-};\r
-});\r
+Clazz.declarePackage ("jalview.structures.models");
+Clazz.load (["jalview.api.StructureSelectionManagerProvider", "jalview.structure.StructureListener", "jalview.structures.models.SequenceStructureBindingModel"], "jalview.structures.models.AAStructureBindingModel", ["jalview.util.Comparison", "$.MessageManager", "java.lang.Error", "$.StringBuilder", "java.util.ArrayList", "$.Arrays"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.ssm = null;
+this.pdbEntry = null;
+this.sequence = null;
+this.chains = null;
+this.protocol = null;
+this.colourBySequence = true;
+this.nucleotide = false;
+if (!Clazz.isClassDefined ("jalview.structures.models.AAStructureBindingModel.SuperposeData")) {
+jalview.structures.models.AAStructureBindingModel.$AAStructureBindingModel$SuperposeData$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.structures.models, "AAStructureBindingModel", jalview.structures.models.SequenceStructureBindingModel, [jalview.structure.StructureListener, jalview.api.StructureSelectionManagerProvider]);
+Clazz.makeConstructor (c$, 
+function (ssm, seqs) {
+Clazz.superConstructor (this, jalview.structures.models.AAStructureBindingModel, []);
+this.ssm = ssm;
+this.sequence = seqs;
+}, "jalview.structure.StructureSelectionManager,~A");
+Clazz.makeConstructor (c$, 
+function (ssm, pdbentry, sequenceIs, chains, protocol) {
+Clazz.superConstructor (this, jalview.structures.models.AAStructureBindingModel, []);
+this.ssm = ssm;
+this.sequence = sequenceIs;
+this.nucleotide = jalview.util.Comparison.isNucleotide2 (sequenceIs);
+this.chains = chains;
+this.pdbEntry = pdbentry;
+this.protocol = protocol;
+if (chains == null) {
+this.chains =  new Array (pdbentry.length);
+}}, "jalview.structure.StructureSelectionManager,~A,~A,~A,~S");
+Clazz.defineMethod (c$, "getSsm", 
+function () {
+return this.ssm;
+});
+Clazz.defineMethod (c$, "getPdbEntry", 
+function (i) {
+return (this.pdbEntry != null && this.pdbEntry.length > i) ? this.pdbEntry[i] : null;
+}, "~N");
+Clazz.defineMethod (c$, "hasPdbId", 
+function (pdbId) {
+if (this.pdbEntry != null) {
+for (var pdb, $pdb = 0, $$pdb = this.pdbEntry; $pdb < $$pdb.length && ((pdb = $$pdb[$pdb]) || true); $pdb++) {
+if (pdb.getId ().equals (pdbId)) {
+return true;
+}}
+}return false;
+}, "~S");
+Clazz.defineMethod (c$, "getPdbCount", 
+function () {
+return this.pdbEntry == null ? 0 : this.pdbEntry.length;
+});
+Clazz.defineMethod (c$, "getSequence", 
+function () {
+return this.sequence;
+});
+Clazz.defineMethod (c$, "getChains", 
+function () {
+return this.chains;
+});
+Clazz.defineMethod (c$, "getProtocol", 
+function () {
+return this.protocol;
+});
+Clazz.defineMethod (c$, "setPdbentry", 
+function (pdbentry) {
+this.pdbEntry = pdbentry;
+}, "~A");
+Clazz.defineMethod (c$, "setSequence", 
+function (sequence) {
+this.sequence = sequence;
+}, "~A");
+Clazz.defineMethod (c$, "setChains", 
+function (chains) {
+this.chains = chains;
+}, "~A");
+Clazz.defineMethod (c$, "getViewerTitle", 
+function (viewerName, verbose) {
+if (this.getSequence () == null || this.getSequence ().length < 1 || this.getPdbCount () < 1 || this.getSequence ()[0].length < 1) {
+return ("Jalview " + viewerName + " Window");
+}var title =  new StringBuilder (64);
+var pdbEntry = this.getPdbEntry (0);
+title.append (viewerName + " view for " + this.getSequence ()[0][0].getName () + ":" + pdbEntry.getId ());
+if (verbose) {
+if (pdbEntry.getProperty () != null) {
+if (pdbEntry.getProperty ().get ("method") != null) {
+title.append (" Method: ");
+title.append (pdbEntry.getProperty ().get ("method"));
+}if (pdbEntry.getProperty ().get ("chains") != null) {
+title.append (" Chain:");
+title.append (pdbEntry.getProperty ().get ("chains"));
+}}}return title.toString ();
+}, "~S,~B");
+Clazz.defineMethod (c$, "releaseUIResources", 
+function () {
+});
+Clazz.defineMethod (c$, "isColourBySequence", 
+function () {
+return this.colourBySequence;
+});
+Clazz.defineMethod (c$, "setColourBySequence", 
+function (colourBySequence) {
+this.colourBySequence = colourBySequence;
+}, "~B");
+Clazz.defineMethod (c$, "addSequenceAndChain", 
+function (pe, seq, tchain) {
+if (pe < 0 || pe >= this.getPdbCount ()) {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_no_pdbentry_from_index",  Clazz.newArray (-1, [Integer.$valueOf (pe).toString ()])));
+}var nullChain = "TheNullChain";
+var s =  new java.util.ArrayList ();
+var c =  new java.util.ArrayList ();
+if (this.getChains () == null) {
+this.setChains ( new Array (this.getPdbCount ()));
+}if (this.getSequence ()[pe] != null) {
+for (var i = 0; i < this.getSequence ()[pe].length; i++) {
+s.add (this.getSequence ()[pe][i]);
+if (this.getChains ()[pe] != null) {
+if (i < this.getChains ()[pe].length) {
+c.add (this.getChains ()[pe][i]);
+} else {
+c.add ("TheNullChain");
+}} else {
+if (tchain != null && tchain.length > 0) {
+c.add ("TheNullChain");
+}}}
+}for (var i = 0; i < seq.length; i++) {
+if (!s.contains (seq[i])) {
+s.add (seq[i]);
+if (tchain != null && i < tchain.length) {
+c.add (tchain[i] == null ? "TheNullChain" : tchain[i]);
+}}}
+var tmp = s.toArray ( new Array (s.size ()));
+this.getSequence ()[pe] = tmp;
+if (c.size () > 0) {
+var tch = c.toArray ( new Array (c.size ()));
+for (var i = 0; i < tch.length; i++) {
+if (tch[i] === "TheNullChain") {
+tch[i] = null;
+}}
+this.getChains ()[pe] = tch;
+} else {
+this.getChains ()[pe] = null;
+}}, "~N,~A,~A");
+Clazz.defineMethod (c$, "addSequenceAndChain", 
+function (pdbe, seq, chns) {
+var v =  new java.util.ArrayList ();
+var rtn =  new java.util.ArrayList ();
+for (var i = 0; i < this.getPdbCount (); i++) {
+v.add (this.getPdbEntry (i));
+}
+for (var i = 0; i < pdbe.length; i++) {
+var r = v.indexOf (pdbe[i]);
+if (r == -1 || r >= this.getPdbCount ()) {
+rtn.add ( Clazz.newIntArray (-1, [v.size (), i]));
+v.add (pdbe[i]);
+} else {
+this.addSequenceAndChain (r, seq[i], chns[i]);
+}}
+pdbe = v.toArray ( new Array (v.size ()));
+this.setPdbentry (pdbe);
+if (rtn.size () > 0) {
+var sqs =  new Array (this.getPdbCount ());
+var sch =  new Array (this.getPdbCount ());
+System.arraycopy (this.getSequence (), 0, sqs, 0, this.getSequence ().length);
+System.arraycopy (this.getChains (), 0, sch, 0, this.getChains ().length);
+this.setSequence (sqs);
+this.setChains (sch);
+pdbe =  new Array (rtn.size ());
+for (var r = 0; r < pdbe.length; r++) {
+var stri = (rtn.get (r));
+pdbe[r] = this.getPdbEntry (stri[0]);
+this.addSequenceAndChain (stri[0], seq[stri[1]], chns[stri[1]]);
+}
+} else {
+pdbe = null;
+}return pdbe;
+}, "~A,~A,~A");
+Clazz.defineMethod (c$, "addSequence", 
+function (pe, seq) {
+this.addSequenceAndChain (pe, seq, null);
+}, "~N,~A");
+Clazz.defineMethod (c$, "addSequenceForStructFile", 
+function (pdbFile, seq) {
+for (var pe = 0; pe < this.getPdbCount (); pe++) {
+if (this.getPdbEntry (pe).getFile ().equals (pdbFile)) {
+this.addSequence (pe, seq);
+}}
+}, "~S,~A");
+Clazz.defineMethod (c$, "isNucleotide", 
+function () {
+return this.nucleotide;
+});
+Clazz.defineMethod (c$, "printMappings", 
+function () {
+if (this.pdbEntry == null) {
+return "";
+}var sb =  new StringBuilder (128);
+for (var pdbe = 0; pdbe < this.getPdbCount (); pdbe++) {
+var pdbfile = this.getPdbEntry (pdbe).getFile ();
+var seqs = java.util.Arrays.asList (this.getSequence ()[pdbe]);
+sb.append (this.getSsm ().printMappings (pdbfile, seqs));
+}
+return sb.toString ();
+});
+Clazz.defineMethod (c$, "getMappedPosition", 
+function (seq, alignedPos, mapping) {
+if (alignedPos >= seq.getLength ()) {
+return -1;
+}if (jalview.util.Comparison.isGap (seq.getCharAt (alignedPos))) {
+return -1;
+}var seqPos = seq.findPosition (alignedPos);
+var pos = mapping.getPDBResNum (seqPos);
+return pos;
+}, "jalview.datamodel.SequenceI,~N,jalview.structure.StructureMapping");
+Clazz.defineMethod (c$, "findSuperposableResidues", 
+function (alignment, matched, structures) {
+var refStructure = -1;
+var files = this.getPdbFile ();
+for (var pdbfnum = 0; pdbfnum < files.length; pdbfnum++) {
+var mappings = this.getSsm ().getMapping (files[pdbfnum]);
+var lastPos = -1;
+var seqCountForPdbFile = this.getSequence ()[pdbfnum].length;
+for (var s = 0; s < seqCountForPdbFile; s++) {
+for (var mapping, $mapping = 0, $$mapping = mappings; $mapping < $$mapping.length && ((mapping = $$mapping[$mapping]) || true); $mapping++) {
+var theSequence = this.getSequence ()[pdbfnum][s];
+if (mapping.getSequence () === theSequence && alignment.findIndex (theSequence) > -1) {
+if (refStructure < 0) {
+refStructure = pdbfnum;
+}for (var r = 0; r < matched.length; r++) {
+if (!matched[r]) {
+continue;
+}var pos = this.getMappedPosition (theSequence, r, mapping);
+if (pos < 1 || pos == lastPos) {
+matched[r] = false;
+continue;
+}lastPos = pos;
+structures[pdbfnum].pdbResNo[r] = pos;
+}
+var chain = mapping.getChain ();
+if (chain != null && chain.trim ().length > 0) {
+structures[pdbfnum].chain = chain;
+}structures[pdbfnum].pdbId = mapping.getPdbId ();
+structures[pdbfnum].isRna = theSequence.getRNA () != null;
+s = seqCountForPdbFile;
+break;
+}}
+}
+}
+return refStructure;
+}, "jalview.datamodel.AlignmentI,~A,~A");
+Clazz.defineMethod (c$, "waitForFileLoad", 
+function (files) {
+var starttime = System.currentTimeMillis ();
+var endTime = 10000 + 1000 * files.length + starttime;
+var notLoaded = null;
+var waiting = true;
+while (waiting && System.currentTimeMillis () < endTime) {
+waiting = false;
+for (var file, $file = 0, $$file = files; $file < $$file.length && ((file = $$file[$file]) || true); $file++) {
+notLoaded = file;
+try {
+var sm = this.getSsm ().getMapping (file);
+if (sm == null || sm.length == 0) {
+waiting = true;
+}} catch (x) {
+waiting = true;
+}
+}
+}
+if (waiting) {
+System.err.println ("Timed out waiting for structure viewer to load file " + notLoaded);
+return false;
+}return true;
+}, "~A");
+Clazz.overrideMethod (c$, "isListeningFor", 
+function (seq) {
+if (this.sequence != null) {
+for (var seqs, $seqs = 0, $$seqs = this.sequence; $seqs < $$seqs.length && ((seqs = $$seqs[$seqs]) || true); $seqs++) {
+if (seqs != null) {
+for (var s, $s = 0, $$s = seqs; $s < $$s.length && ((s = $$s[$s]) || true); $s++) {
+if (s === seq) {
+return true;
+}}
+}}
+}return false;
+}, "jalview.datamodel.SequenceI");
+c$.$AAStructureBindingModel$SuperposeData$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.filename = null;
+this.pdbId = null;
+this.chain = "";
+this.isRna = false;
+this.pdbResNo = null;
+Clazz.instantialize (this, arguments);
+}, jalview.structures.models.AAStructureBindingModel, "SuperposeData");
+Clazz.makeConstructor (c$, 
+function (a) {
+this.pdbResNo =  Clazz.newIntArray (a, 0);
+}, "~N");
+c$ = Clazz.p0p ();
+};
+});
index 98e8875..f9d2e7a 100644 (file)
@@ -1,24 +1,24 @@
-Clazz.declarePackage ("jalview.structures.models");\r
-Clazz.load (["jalview.api.SequenceStructureBinding"], "jalview.structures.models.SequenceStructureBindingModel", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.loadingFromArchive = false;\r
-this.loadingFinished = true;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.structures.models, "SequenceStructureBindingModel", null, jalview.api.SequenceStructureBinding);\r
-Clazz.overrideMethod (c$, "setLoadingFromArchive", \r
-function (loadingFromArchive) {\r
-this.loadingFromArchive = loadingFromArchive;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "isLoadingFromArchive", \r
-function () {\r
-return this.loadingFromArchive && !this.loadingFinished;\r
-});\r
-Clazz.overrideMethod (c$, "isLoadingFinished", \r
-function () {\r
-return this.loadingFinished;\r
-});\r
-Clazz.overrideMethod (c$, "setFinishedLoadingFromArchive", \r
-function (finishedLoading) {\r
-this.loadingFinished = finishedLoading;\r
-}, "~B");\r
-});\r
+Clazz.declarePackage ("jalview.structures.models");
+Clazz.load (["jalview.api.SequenceStructureBinding"], "jalview.structures.models.SequenceStructureBindingModel", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.loadingFromArchive = false;
+this.loadingFinished = true;
+Clazz.instantialize (this, arguments);
+}, jalview.structures.models, "SequenceStructureBindingModel", null, jalview.api.SequenceStructureBinding);
+Clazz.overrideMethod (c$, "setLoadingFromArchive", 
+function (loadingFromArchive) {
+this.loadingFromArchive = loadingFromArchive;
+}, "~B");
+Clazz.overrideMethod (c$, "isLoadingFromArchive", 
+function () {
+return this.loadingFromArchive && !this.loadingFinished;
+});
+Clazz.overrideMethod (c$, "isLoadingFinished", 
+function () {
+return this.loadingFinished;
+});
+Clazz.overrideMethod (c$, "setFinishedLoadingFromArchive", 
+function (finishedLoading) {
+this.loadingFinished = finishedLoading;
+}, "~B");
+});
diff --git a/bin/jalview/util/AWTConsole.js b/bin/jalview/util/AWTConsole.js
deleted file mode 100644 (file)
index d03b9fa..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (["java.awt.event.ActionListener", "$.WindowAdapter", "$.WindowListener", "java.io.PipedInputStream"], "jalview.util.AWTConsole", ["jalview.util.MessageManager", "java.awt.BorderLayout", "$.Button", "$.Dimension", "$.Frame", "$.GraphicsEnvironment", "$.Panel", "$.TextArea", "$.Toolkit", "java.io.PipedOutputStream", "java.lang.NullPointerException", "$.Thread"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.frame = null;\r
-this.textArea = null;\r
-this.reader = null;\r
-this.reader2 = null;\r
-this.quit = false;\r
-this.pin = null;\r
-this.pin2 = null;\r
-this.errorThrower = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util, "AWTConsole", java.awt.event.WindowAdapter, [java.awt.event.WindowListener, java.awt.event.ActionListener, Runnable]);\r
-Clazz.prepareFields (c$, function () {\r
-this.pin =  new java.io.PipedInputStream ();\r
-this.pin2 =  new java.io.PipedInputStream ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.util.AWTConsole, []);\r
-this.frame =  new java.awt.Frame ("Java Console");\r
-var screenSize = java.awt.Toolkit.getDefaultToolkit ().getScreenSize ();\r
-var frameSize =  new java.awt.Dimension ((Clazz.doubleToInt (screenSize.width / 2)), (Clazz.doubleToInt (screenSize.height / 2)));\r
-var x = (Clazz.doubleToInt (frameSize.width / 2));\r
-var y = (Clazz.doubleToInt (frameSize.height / 2));\r
-this.frame.setBounds (x, y, frameSize.width, frameSize.height);\r
-this.textArea =  new java.awt.TextArea ();\r
-this.textArea.setEditable (false);\r
-var button =  new java.awt.Button ("clear");\r
-var panel =  new java.awt.Panel ();\r
-panel.setLayout ( new java.awt.BorderLayout ());\r
-panel.add (this.textArea, "Center");\r
-panel.add (button, "South");\r
-this.frame.add (panel);\r
-this.frame.setVisible (true);\r
-this.frame.addWindowListener (this);\r
-button.addActionListener (this);\r
-try {\r
-var pout =  new java.io.PipedOutputStream (this.pin);\r
-System.setOut ( new java.io.PrintStream (pout, true));\r
-} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, java.io.IOException)) {\r
-var io = e$$;\r
-{\r
-this.textArea.append ("Couldn't redirect STDOUT to this console\n" + io.getMessage ());\r
-}\r
-} else if (Clazz.exceptionOf (e$$, SecurityException)) {\r
-var se = e$$;\r
-{\r
-this.textArea.append ("Couldn't redirect STDOUT to this console\n" + se.getMessage ());\r
-}\r
-} else {\r
-throw e$$;\r
-}\r
-}\r
-try {\r
-var pout2 =  new java.io.PipedOutputStream (this.pin2);\r
-System.setErr ( new java.io.PrintStream (pout2, true));\r
-} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, java.io.IOException)) {\r
-var io = e$$;\r
-{\r
-this.textArea.append ("Couldn't redirect STDERR to this console\n" + io.getMessage ());\r
-}\r
-} else if (Clazz.exceptionOf (e$$, SecurityException)) {\r
-var se = e$$;\r
-{\r
-this.textArea.append ("Couldn't redirect STDERR to this console\n" + se.getMessage ());\r
-}\r
-} else {\r
-throw e$$;\r
-}\r
-}\r
-this.quit = false;\r
-this.reader =  new Thread (this);\r
-this.reader.setDaemon (true);\r
-this.reader.start ();\r
-this.reader2 =  new Thread (this);\r
-this.reader2.setDaemon (true);\r
-this.reader2.start ();\r
-System.out.println ("Hello World 2");\r
-System.out.println ("All fonts available to Graphic2D:\n");\r
-var ge = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment ();\r
-var fontNames = ge.getAvailableFontFamilyNames ();\r
-for (var n = 0; n < fontNames.length; n++) System.out.println (fontNames[n]);\r
-\r
-System.out.println ("\nLets throw an error on this console");\r
-this.errorThrower =  new Thread (this);\r
-this.errorThrower.setDaemon (true);\r
-this.errorThrower.start ();\r
-});\r
-Clazz.overrideMethod (c$, "windowClosed", \r
-function (evt) {\r
-this.quit = true;\r
-this.notifyAll ();\r
-try {\r
-this.reader.join (1000);\r
-this.pin.close ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-try {\r
-this.reader2.join (1000);\r
-this.pin2.close ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-System.exit (0);\r
-}, "java.awt.event.WindowEvent");\r
-Clazz.overrideMethod (c$, "windowClosing", \r
-function (evt) {\r
-this.frame.setVisible (false);\r
-this.frame.dispose ();\r
-}, "java.awt.event.WindowEvent");\r
-Clazz.overrideMethod (c$, "actionPerformed", \r
-function (evt) {\r
-this.textArea.setText ("");\r
-}, "java.awt.event.ActionEvent");\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-try {\r
-while (Thread.currentThread () === this.reader) {\r
-try {\r
-this.wait (100);\r
-} catch (ie) {\r
-if (Clazz.exceptionOf (ie, InterruptedException)) {\r
-} else {\r
-throw ie;\r
-}\r
-}\r
-if (this.pin.available () != 0) {\r
-var input = this.readLine (this.pin);\r
-this.textArea.append (input);\r
-}if (this.quit) return;\r
-}\r
-while (Thread.currentThread () === this.reader2) {\r
-try {\r
-this.wait (100);\r
-} catch (ie) {\r
-if (Clazz.exceptionOf (ie, InterruptedException)) {\r
-} else {\r
-throw ie;\r
-}\r
-}\r
-if (this.pin2.available () != 0) {\r
-var input = this.readLine (this.pin2);\r
-this.textArea.append (input);\r
-}if (this.quit) return;\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-this.textArea.append ("\nConsole reports an Internal error.");\r
-this.textArea.append ("The error is: " + e);\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (Thread.currentThread () === this.errorThrower) {\r
-try {\r
-this.wait (1000);\r
-} catch (ie) {\r
-if (Clazz.exceptionOf (ie, InterruptedException)) {\r
-} else {\r
-throw ie;\r
-}\r
-}\r
-throw  new NullPointerException (jalview.util.MessageManager.getString ("exception.application_test_npe"));\r
-}});\r
-Clazz.defineMethod (c$, "readLine", \r
-function ($in) {\r
-var input = "";\r
-do {\r
-var available = $in.available ();\r
-if (available == 0) break;\r
-var b =  Clazz.newByteArray (available, 0);\r
-$in.read (b);\r
-input = input +  String.instantialize (b, 0, b.length);\r
-} while (!input.endsWith ("\n") && !input.endsWith ("\r\n") && !this.quit);\r
-return input;\r
-}, "java.io.PipedInputStream");\r
-});\r
diff --git a/bin/jalview/util/BrowserLauncher.js b/bin/jalview/util/BrowserLauncher.js
deleted file mode 100644 (file)
index 0b28b4c..0000000
+++ /dev/null
@@ -1,487 +0,0 @@
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (null, "jalview.util.BrowserLauncher", ["jalview.bin.Cache", "jalview.util.MessageManager", "java.io.File", "$.IOException", "java.lang.Double", "$.Runtime"], function () {\r
-c$ = Clazz.declareType (jalview.util, "BrowserLauncher");\r
-c$.loadClasses = Clazz.defineMethod (c$, "loadClasses", \r
-($fz = function () {\r
-switch (jalview.util.BrowserLauncher.jvm) {\r
-case 0:\r
-try {\r
-var aeTargetClass = Class.forName ("com.apple.MacOS.AETarget");\r
-var osUtilsClass = Class.forName ("com.apple.MacOS.OSUtils");\r
-var appleEventClass = Class.forName ("com.apple.MacOS.AppleEvent");\r
-var aeClass = Class.forName ("com.apple.MacOS.ae");\r
-jalview.util.BrowserLauncher.aeDescClass = Class.forName ("com.apple.MacOS.AEDesc");\r
-jalview.util.BrowserLauncher.aeTargetConstructor = aeTargetClass.getDeclaredConstructor ( Clazz.newArray (-1, [Number]));\r
-jalview.util.BrowserLauncher.appleEventConstructor = appleEventClass.getDeclaredConstructor ( Clazz.newArray (-1, [Number, Number, aeTargetClass, Number, Number]));\r
-jalview.util.BrowserLauncher.aeDescConstructor = jalview.util.BrowserLauncher.aeDescClass.getDeclaredConstructor ( Clazz.newArray (-1, [String]));\r
-jalview.util.BrowserLauncher.makeOSType = osUtilsClass.getDeclaredMethod ("makeOSType",  Clazz.newArray (-1, [String]));\r
-jalview.util.BrowserLauncher.putParameter = appleEventClass.getDeclaredMethod ("putParameter",  Clazz.newArray (-1, [Number, jalview.util.BrowserLauncher.aeDescClass]));\r
-jalview.util.BrowserLauncher.sendNoReply = appleEventClass.getDeclaredMethod ("sendNoReply",  Clazz.newArray (-1, []));\r
-var keyDirectObjectField = aeClass.getDeclaredField ("keyDirectObject");\r
-jalview.util.BrowserLauncher.keyDirectObject = keyDirectObjectField.get (null);\r
-var autoGenerateReturnIDField = appleEventClass.getDeclaredField ("kAutoGenerateReturnID");\r
-jalview.util.BrowserLauncher.kAutoGenerateReturnID = autoGenerateReturnIDField.get (null);\r
-var anyTransactionIDField = appleEventClass.getDeclaredField ("kAnyTransactionID");\r
-jalview.util.BrowserLauncher.kAnyTransactionID = anyTransactionIDField.get (null);\r
-} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, ClassNotFoundException)) {\r
-var cnfe = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = cnfe.getMessage ();\r
-return false;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, NoSuchMethodException)) {\r
-var nsme = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = nsme.getMessage ();\r
-return false;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, NoSuchFieldException)) {\r
-var nsfe = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = nsfe.getMessage ();\r
-return false;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
-var iae = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = iae.getMessage ();\r
-return false;\r
-}\r
-} else {\r
-throw e$$;\r
-}\r
-}\r
-break;\r
-case 1:\r
-try {\r
-jalview.util.BrowserLauncher.mrjFileUtilsClass = Class.forName ("com.apple.mrj.MRJFileUtils");\r
-jalview.util.BrowserLauncher.mrjOSTypeClass = Class.forName ("com.apple.mrj.MRJOSType");\r
-var systemFolderField = jalview.util.BrowserLauncher.mrjFileUtilsClass.getDeclaredField ("kSystemFolderType");\r
-jalview.util.BrowserLauncher.kSystemFolderType = systemFolderField.get (null);\r
-jalview.util.BrowserLauncher.findFolder = jalview.util.BrowserLauncher.mrjFileUtilsClass.getDeclaredMethod ("findFolder",  Clazz.newArray (-1, [jalview.util.BrowserLauncher.mrjOSTypeClass]));\r
-jalview.util.BrowserLauncher.getFileCreator = jalview.util.BrowserLauncher.mrjFileUtilsClass.getDeclaredMethod ("getFileCreator",  Clazz.newArray (-1, [java.io.File]));\r
-jalview.util.BrowserLauncher.getFileType = jalview.util.BrowserLauncher.mrjFileUtilsClass.getDeclaredMethod ("getFileType",  Clazz.newArray (-1, [java.io.File]));\r
-} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, ClassNotFoundException)) {\r
-var cnfe = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = cnfe.getMessage ();\r
-return false;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, NoSuchFieldException)) {\r
-var nsfe = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = nsfe.getMessage ();\r
-return false;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, NoSuchMethodException)) {\r
-var nsme = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = nsme.getMessage ();\r
-return false;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, SecurityException)) {\r
-var se = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = se.getMessage ();\r
-return false;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
-var iae = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = iae.getMessage ();\r
-return false;\r
-}\r
-} else {\r
-throw e$$;\r
-}\r
-}\r
-break;\r
-case 3:\r
-try {\r
-var linker = Class.forName ("com.apple.mrj.jdirect.Linker");\r
-var constructor = linker.getConstructor ( Clazz.newArray (-1, [Class]));\r
-jalview.util.BrowserLauncher.linkage = constructor.newInstance ( Clazz.newArray (-1, [jalview.util.BrowserLauncher]));\r
-} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, ClassNotFoundException)) {\r
-var cnfe = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = cnfe.getMessage ();\r
-return false;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, NoSuchMethodException)) {\r
-var nsme = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = nsme.getMessage ();\r
-return false;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {\r
-var ite = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = ite.getMessage ();\r
-return false;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, InstantiationException)) {\r
-var ie = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = ie.getMessage ();\r
-return false;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
-var iae = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = iae.getMessage ();\r
-return false;\r
-}\r
-} else {\r
-throw e$$;\r
-}\r
-}\r
-break;\r
-case 4:\r
-try {\r
-jalview.util.BrowserLauncher.mrjFileUtilsClass = Class.forName ("com.apple.mrj.MRJFileUtils");\r
-jalview.util.BrowserLauncher.$openURL = jalview.util.BrowserLauncher.mrjFileUtilsClass.getDeclaredMethod ("openURL",  Clazz.newArray (-1, [String]));\r
-} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, ClassNotFoundException)) {\r
-var cnfe = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = cnfe.getMessage ();\r
-return false;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, NoSuchMethodException)) {\r
-var nsme = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = nsme.getMessage ();\r
-return false;\r
-}\r
-} else {\r
-throw e$$;\r
-}\r
-}\r
-break;\r
-default:\r
-break;\r
-}\r
-return true;\r
-}, $fz.isPrivate = true, $fz));\r
-c$.locateBrowser = Clazz.defineMethod (c$, "locateBrowser", \r
-($fz = function () {\r
-if (jalview.util.BrowserLauncher.browser != null) {\r
-return jalview.util.BrowserLauncher.browser;\r
-}switch (jalview.util.BrowserLauncher.jvm) {\r
-case 0:\r
-try {\r
-var finderCreatorCode = jalview.util.BrowserLauncher.makeOSType.invoke (null,  Clazz.newArray (-1, ["MACS"]));\r
-var aeTarget = jalview.util.BrowserLauncher.aeTargetConstructor.newInstance ( Clazz.newArray (-1, [finderCreatorCode]));\r
-var gurlType = jalview.util.BrowserLauncher.makeOSType.invoke (null,  Clazz.newArray (-1, ["GURL"]));\r
-var appleEvent = jalview.util.BrowserLauncher.appleEventConstructor.newInstance ( Clazz.newArray (-1, [gurlType, gurlType, aeTarget, jalview.util.BrowserLauncher.kAutoGenerateReturnID, jalview.util.BrowserLauncher.kAnyTransactionID]));\r
-return appleEvent;\r
-} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
-var iae = e$$;\r
-{\r
-jalview.util.BrowserLauncher.browser = null;\r
-jalview.util.BrowserLauncher.errorMessage = iae.getMessage ();\r
-return jalview.util.BrowserLauncher.browser;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, InstantiationException)) {\r
-var ie = e$$;\r
-{\r
-jalview.util.BrowserLauncher.browser = null;\r
-jalview.util.BrowserLauncher.errorMessage = ie.getMessage ();\r
-return jalview.util.BrowserLauncher.browser;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {\r
-var ite = e$$;\r
-{\r
-jalview.util.BrowserLauncher.browser = null;\r
-jalview.util.BrowserLauncher.errorMessage = ite.getMessage ();\r
-return jalview.util.BrowserLauncher.browser;\r
-}\r
-} else {\r
-throw e$$;\r
-}\r
-}\r
-case 1:\r
-var systemFolder;\r
-try {\r
-systemFolder = jalview.util.BrowserLauncher.findFolder.invoke (null,  Clazz.newArray (-1, [jalview.util.BrowserLauncher.kSystemFolderType]));\r
-} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, IllegalArgumentException)) {\r
-var iare = e$$;\r
-{\r
-jalview.util.BrowserLauncher.browser = null;\r
-jalview.util.BrowserLauncher.errorMessage = iare.getMessage ();\r
-return jalview.util.BrowserLauncher.browser;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
-var iae = e$$;\r
-{\r
-jalview.util.BrowserLauncher.browser = null;\r
-jalview.util.BrowserLauncher.errorMessage = iae.getMessage ();\r
-return jalview.util.BrowserLauncher.browser;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {\r
-var ite = e$$;\r
-{\r
-jalview.util.BrowserLauncher.browser = null;\r
-jalview.util.BrowserLauncher.errorMessage = ite.getTargetException ().getClass () + ": " + ite.getTargetException ().getMessage ();\r
-return jalview.util.BrowserLauncher.browser;\r
-}\r
-} else {\r
-throw e$$;\r
-}\r
-}\r
-var systemFolderFiles = systemFolder.list ();\r
-for (var i = 0; i < systemFolderFiles.length; i++) {\r
-try {\r
-var file =  new java.io.File (systemFolder, systemFolderFiles[i]);\r
-if (!file.isFile ()) {\r
-continue;\r
-}var fileType = jalview.util.BrowserLauncher.getFileType.invoke (null,  Clazz.newArray (-1, [file]));\r
-if ("FNDR".equals (fileType.toString ())) {\r
-var fileCreator = jalview.util.BrowserLauncher.getFileCreator.invoke (null,  Clazz.newArray (-1, [file]));\r
-if ("MACS".equals (fileCreator.toString ())) {\r
-jalview.util.BrowserLauncher.browser = file.toString ();\r
-return jalview.util.BrowserLauncher.browser;\r
-}}} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, IllegalArgumentException)) {\r
-var iare = e$$;\r
-{\r
-jalview.util.BrowserLauncher.errorMessage = iare.getMessage ();\r
-return null;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
-var iae = e$$;\r
-{\r
-jalview.util.BrowserLauncher.browser = null;\r
-jalview.util.BrowserLauncher.errorMessage = iae.getMessage ();\r
-return jalview.util.BrowserLauncher.browser;\r
-}\r
-} else if (Clazz.exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {\r
-var ite = e$$;\r
-{\r
-jalview.util.BrowserLauncher.browser = null;\r
-jalview.util.BrowserLauncher.errorMessage = ite.getTargetException ().getClass () + ": " + ite.getTargetException ().getMessage ();\r
-return jalview.util.BrowserLauncher.browser;\r
-}\r
-} else {\r
-throw e$$;\r
-}\r
-}\r
-}\r
-jalview.util.BrowserLauncher.browser = null;\r
-break;\r
-case 3:\r
-case 4:\r
-jalview.util.BrowserLauncher.browser = "";\r
-break;\r
-case 5:\r
-jalview.util.BrowserLauncher.browser = "cmd.exe";\r
-break;\r
-case 6:\r
-jalview.util.BrowserLauncher.browser = "command.com";\r
-break;\r
-case -1:\r
-default:\r
-jalview.util.BrowserLauncher.browser = jalview.bin.Cache.getDefault ("DEFAULT_BROWSER", "firefox");\r
-break;\r
-}\r
-return jalview.util.BrowserLauncher.browser;\r
-}, $fz.isPrivate = true, $fz));\r
-c$.resetBrowser = Clazz.defineMethod (c$, "resetBrowser", \r
-function () {\r
-jalview.util.BrowserLauncher.browser = null;\r
-});\r
-c$.openURL = Clazz.defineMethod (c$, "openURL", \r
-function (url) {\r
-if (!jalview.util.BrowserLauncher.loadedWithoutErrors) {\r
-throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.browser_not_found",  Clazz.newArray (-1, [jalview.util.BrowserLauncher.errorMessage])));\r
-}var browser = jalview.util.BrowserLauncher.locateBrowser ();\r
-if (browser == null) {\r
-throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.browser_unable_to_locate",  Clazz.newArray (-1, [jalview.util.BrowserLauncher.errorMessage])));\r
-}switch (jalview.util.BrowserLauncher.jvm) {\r
-case 0:\r
-var aeDesc = null;\r
-try {\r
-aeDesc = jalview.util.BrowserLauncher.aeDescConstructor.newInstance ( Clazz.newArray (-1, [url]));\r
-jalview.util.BrowserLauncher.putParameter.invoke (browser,  Clazz.newArray (-1, [jalview.util.BrowserLauncher.keyDirectObject, aeDesc]));\r
-jalview.util.BrowserLauncher.sendNoReply.invoke (browser,  Clazz.newArray (-1, []));\r
-} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {\r
-var ite = e$$;\r
-{\r
-throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.invocation_target_exception_creating_aedesc",  Clazz.newArray (-1, [ite.getMessage ()])));\r
-}\r
-} else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
-var iae = e$$;\r
-{\r
-throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.illegal_access_building_apple_evt",  Clazz.newArray (-1, [iae.getMessage ()])));\r
-}\r
-} else if (Clazz.exceptionOf (e$$, InstantiationException)) {\r
-var ie = e$$;\r
-{\r
-throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.illegal_access_building_apple_evt",  Clazz.newArray (-1, [ie.getMessage ()])));\r
-}\r
-} else {\r
-throw e$$;\r
-}\r
-} finally {\r
-aeDesc = null;\r
-browser = null;\r
-}\r
-break;\r
-case 1:\r
-Runtime.getRuntime ().exec ( Clazz.newArray (-1, [browser, url]));\r
-break;\r
-case 3:\r
-var instance =  Clazz.newIntArray (1, 0);\r
-var result = jalview.util.BrowserLauncher.ICStart (instance, 0);\r
-if (result == 0) {\r
-var selectionStart =  Clazz.newIntArray (-1, [0]);\r
-var urlBytes = url.getBytes ();\r
-var selectionEnd =  Clazz.newIntArray (-1, [urlBytes.length]);\r
-result = jalview.util.BrowserLauncher.ICLaunchURL (instance[0],  Clazz.newByteArray (-1, [0]), urlBytes, urlBytes.length, selectionStart, selectionEnd);\r
-if (result == 0) {\r
-jalview.util.BrowserLauncher.ICStop (instance);\r
-} else {\r
-throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.unable_to_launch_url",  Clazz.newArray (-1, [Integer.$valueOf (result).toString ()])));\r
-}} else {\r
-throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.unable_to_create_internet_config",  Clazz.newArray (-1, [Integer.$valueOf (result).toString ()])));\r
-}break;\r
-case 4:\r
-try {\r
-jalview.util.BrowserLauncher.$openURL.invoke (null,  Clazz.newArray (-1, [url]));\r
-} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {\r
-var ite = e$$;\r
-{\r
-throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.invocation_target_calling_url",  Clazz.newArray (-1, [ite.getMessage ()])));\r
-}\r
-} else if (Clazz.exceptionOf (e$$, IllegalAccessException)) {\r
-var iae = e$$;\r
-{\r
-throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.illegal_access_calling_url",  Clazz.newArray (-1, [iae.getMessage ()])));\r
-}\r
-} else {\r
-throw e$$;\r
-}\r
-}\r
-break;\r
-case 5:\r
-case 6:\r
-var process = Runtime.getRuntime ().exec ( Clazz.newArray (-1, [browser, "/c", "start", "\"\"", '"' + url + '"']));\r
-try {\r
-process.waitFor ();\r
-process.exitValue ();\r
-} catch (ie) {\r
-if (Clazz.exceptionOf (ie, InterruptedException)) {\r
-throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.interrupted_launching_browser",  Clazz.newArray (-1, [ie.getMessage ()])));\r
-} else {\r
-throw ie;\r
-}\r
-}\r
-break;\r
-case -1:\r
-process = Runtime.getRuntime ().exec ( Clazz.newArray (-1, [browser, "-remote", "openURL(" + url + ", new-window" + ")"]));\r
-try {\r
-var exitCode = process.waitFor ();\r
-if (exitCode != 0) {\r
-Runtime.getRuntime ().exec ( Clazz.newArray (-1, [browser, url]));\r
-}} catch (ie) {\r
-if (Clazz.exceptionOf (ie, InterruptedException)) {\r
-throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.interrupted_launching_browser",  Clazz.newArray (-1, [ie.getMessage ()])));\r
-} else {\r
-throw ie;\r
-}\r
-}\r
-break;\r
-default:\r
-Runtime.getRuntime ().exec ( Clazz.newArray (-1, [browser, url]));\r
-break;\r
-}\r
-}, "~S");\r
-Clazz.defineStatics (c$,\r
-"jvm", 0,\r
-"browser", null,\r
-"loadedWithoutErrors", false,\r
-"mrjFileUtilsClass", null,\r
-"mrjOSTypeClass", null,\r
-"aeDescClass", null,\r
-"aeTargetConstructor", null,\r
-"appleEventConstructor", null,\r
-"aeDescConstructor", null,\r
-"findFolder", null,\r
-"getFileCreator", null,\r
-"getFileType", null,\r
-"$openURL", null,\r
-"makeOSType", null,\r
-"putParameter", null,\r
-"sendNoReply", null,\r
-"kSystemFolderType", null,\r
-"keyDirectObject", null,\r
-"kAutoGenerateReturnID", null,\r
-"kAnyTransactionID", null,\r
-"linkage", null,\r
-"JDirect_MacOSX", "/System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework/HIToolbox",\r
-"MRJ_2_0", 0,\r
-"MRJ_2_1", 1,\r
-"MRJ_3_0", 3,\r
-"MRJ_3_1", 4,\r
-"WINDOWS_NT", 5,\r
-"WINDOWS_9x", 6,\r
-"OTHER", -1,\r
-"FINDER_TYPE", "FNDR",\r
-"FINDER_CREATOR", "MACS",\r
-"GURL_EVENT", "GURL",\r
-"FIRST_WINDOWS_PARAMETER", "/c",\r
-"SECOND_WINDOWS_PARAMETER", "start",\r
-"THIRD_WINDOWS_PARAMETER", "\"\"",\r
-"NETSCAPE_REMOTE_PARAMETER", "-remote",\r
-"NETSCAPE_OPEN_PARAMETER_START", "openURL(",\r
-"NETSCAPE_OPEN_NEW_WINDOW", ", new-window",\r
-"NETSCAPE_OPEN_PARAMETER_END", ")",\r
-"errorMessage", null);\r
-{\r
-jalview.util.BrowserLauncher.loadedWithoutErrors = true;\r
-var osName = System.getProperty ("os.name");\r
-if (osName.startsWith ("Mac OS")) {\r
-var mrjVersion = System.getProperty ("mrj.version");\r
-var majorMRJVersion;\r
-if (mrjVersion == null) {\r
-majorMRJVersion = "3.1";\r
-} else {\r
-majorMRJVersion = mrjVersion.substring (0, 3);\r
-}try {\r
-var version = Double.$valueOf (majorMRJVersion).doubleValue ();\r
-if (version == 2) {\r
-jalview.util.BrowserLauncher.jvm = 0;\r
-} else if ((version >= 2.1) && (version < 3)) {\r
-jalview.util.BrowserLauncher.jvm = 1;\r
-} else if (version == 3.0) {\r
-jalview.util.BrowserLauncher.jvm = 3;\r
-} else if (version >= 3.1) {\r
-jalview.util.BrowserLauncher.jvm = 4;\r
-} else {\r
-jalview.util.BrowserLauncher.loadedWithoutErrors = false;\r
-jalview.util.BrowserLauncher.errorMessage = "Unsupported MRJ version: " + version;\r
-}} catch (nfe) {\r
-if (Clazz.exceptionOf (nfe, NumberFormatException)) {\r
-jalview.util.BrowserLauncher.loadedWithoutErrors = false;\r
-jalview.util.BrowserLauncher.errorMessage = "Invalid MRJ version: " + mrjVersion;\r
-} else {\r
-throw nfe;\r
-}\r
-}\r
-} else if (osName.startsWith ("Windows")) {\r
-if (osName.indexOf ("9") != -1) {\r
-jalview.util.BrowserLauncher.jvm = 6;\r
-} else {\r
-jalview.util.BrowserLauncher.jvm = 5;\r
-}} else {\r
-jalview.util.BrowserLauncher.jvm = -1;\r
-}if (jalview.util.BrowserLauncher.loadedWithoutErrors) {\r
-jalview.util.BrowserLauncher.loadedWithoutErrors = jalview.util.BrowserLauncher.loadClasses ();\r
-}}});\r
index 129c265..ed016da 100644 (file)
@@ -1,30 +1,30 @@
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (null, "jalview.util.ColorUtils", ["java.awt.Color", "java.util.Random"], function () {\r
-c$ = Clazz.declareType (jalview.util, "ColorUtils");\r
-c$.generateRandomColor = Clazz.defineMethod (c$, "generateRandomColor", \r
-function (mix) {\r
-var random =  new java.util.Random ();\r
-var red = random.nextInt (256);\r
-var green = random.nextInt (256);\r
-var blue = random.nextInt (256);\r
-if (mix != null) {\r
-red = Clazz.doubleToInt ((red + mix.getRed ()) / 2);\r
-green = Clazz.doubleToInt ((green + mix.getGreen ()) / 2);\r
-blue = Clazz.doubleToInt ((blue + mix.getBlue ()) / 2);\r
-}var color =  new java.awt.Color (red, green, blue);\r
-return color;\r
-}, "java.awt.Color");\r
-c$.toTkCode = Clazz.defineMethod (c$, "toTkCode", \r
-function (colour) {\r
-var colstring = "#" + ((colour.getRed () < 16) ? "0" : "") + Integer.toHexString (colour.getRed ()) + ((colour.getGreen () < 16) ? "0" : "") + Integer.toHexString (colour.getGreen ()) + ((colour.getBlue () < 16) ? "0" : "") + Integer.toHexString (colour.getBlue ());\r
-return colstring;\r
-}, "java.awt.Color");\r
-c$.darkerThan = Clazz.defineMethod (c$, "darkerThan", \r
-function (col) {\r
-return col == null ? null : col.darker ().darker ().darker ();\r
-}, "java.awt.Color");\r
-c$.brighterThan = Clazz.defineMethod (c$, "brighterThan", \r
-function (col) {\r
-return col == null ? null : col.brighter ().brighter ().brighter ();\r
-}, "java.awt.Color");\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (null, "jalview.util.ColorUtils", ["java.awt.Color", "java.util.Random"], function () {
+c$ = Clazz.declareType (jalview.util, "ColorUtils");
+c$.generateRandomColor = Clazz.defineMethod (c$, "generateRandomColor", 
+function (mix) {
+var random =  new java.util.Random ();
+var red = random.nextInt (256);
+var green = random.nextInt (256);
+var blue = random.nextInt (256);
+if (mix != null) {
+red = Clazz.doubleToInt ((red + mix.getRed ()) / 2);
+green = Clazz.doubleToInt ((green + mix.getGreen ()) / 2);
+blue = Clazz.doubleToInt ((blue + mix.getBlue ()) / 2);
+}var color =  new java.awt.Color (red, green, blue);
+return color;
+}, "java.awt.Color");
+c$.toTkCode = Clazz.defineMethod (c$, "toTkCode", 
+function (colour) {
+var colstring = "#" + ((colour.getRed () < 16) ? "0" : "") + Integer.toHexString (colour.getRed ()) + ((colour.getGreen () < 16) ? "0" : "") + Integer.toHexString (colour.getGreen ()) + ((colour.getBlue () < 16) ? "0" : "") + Integer.toHexString (colour.getBlue ());
+return colstring;
+}, "java.awt.Color");
+c$.darkerThan = Clazz.defineMethod (c$, "darkerThan", 
+function (col) {
+return col == null ? null : col.darker ().darker ().darker ();
+}, "java.awt.Color");
+c$.brighterThan = Clazz.defineMethod (c$, "brighterThan", 
+function (col) {
+return col == null ? null : col.brighter ().brighter ().brighter ();
+}, "java.awt.Color");
+});
index 096f532..590a80c 100644 (file)
Binary files a/bin/jalview/util/Comparison.class and b/bin/jalview/util/Comparison.class differ
index e46a616..29499bb 100644 (file)
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (null, "jalview.util.Comparison", ["java.util.ArrayList"], function () {\r
-c$ = Clazz.declareType (jalview.util, "Comparison");\r
-c$.compare = Clazz.defineMethod (c$, "compare", \r
-function (ii, jj) {\r
-return jalview.util.Comparison.compare (ii, jj, 0, ii.getLength () - 1);\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");\r
-c$.compare = Clazz.defineMethod (c$, "compare", \r
-function (ii, jj, start, end) {\r
-var si = ii.getSequenceAsString ();\r
-var sj = jj.getSequenceAsString ();\r
-var ilen = si.length - 1;\r
-var jlen = sj.length - 1;\r
-while (jalview.util.Comparison.isGap (si.charAt (start + ilen))) {\r
-ilen--;\r
-}\r
-while (jalview.util.Comparison.isGap (sj.charAt (start + jlen))) {\r
-jlen--;\r
-}\r
-var count = 0;\r
-var match = 0;\r
-var pid = -1;\r
-if (ilen > jlen) {\r
-for (var j = 0; j < jlen; j++) {\r
-if (si.substring (start + j, start + j + 1).equals (sj.substring (start + j, start + j + 1))) {\r
-match++;\r
-}count++;\r
-}\r
-pid = match / ilen * 100;\r
-} else {\r
-for (var j = 0; j < jlen; j++) {\r
-if (si.substring (start + j, start + j + 1).equals (sj.substring (start + j, start + j + 1))) {\r
-match++;\r
-}count++;\r
-}\r
-pid = match / jlen * 100;\r
-}return pid;\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~N,~N");\r
-c$.PID = Clazz.defineMethod (c$, "PID", \r
-function (seq1, seq2) {\r
-return jalview.util.Comparison.PID (seq1, seq2, 0, seq1.length);\r
-}, "~S,~S");\r
-c$.PID = Clazz.defineMethod (c$, "PID", \r
-function (seq1, seq2, start, end) {\r
-return jalview.util.Comparison.PID (seq1, seq2, start, end, true, false);\r
-}, "~S,~S,~N,~N");\r
-c$.PID = Clazz.defineMethod (c$, "PID", \r
-function (seq1, seq2, start, end, wcGaps, ungappedOnly) {\r
-var s1len = seq1.length;\r
-var s2len = seq2.length;\r
-var len = Math.min (s1len, s2len);\r
-if (end < len) {\r
-len = end;\r
-}if (len < start) {\r
-start = len - 1;\r
-}var elen = len - start;\r
-var bad = 0;\r
-var chr1;\r
-var chr2;\r
-var agap;\r
-for (var i = start; i < len; i++) {\r
-chr1 = seq1.charAt (i);\r
-chr2 = seq2.charAt (i);\r
-agap = jalview.util.Comparison.isGap (chr1) || jalview.util.Comparison.isGap (chr2);\r
-if ('a' <= chr1 && chr1 <= 'z') {\r
-chr1 = String.fromCharCode (chr1.charCodeAt (0) - 32);\r
-}if ('a' <= chr2 && chr2 <= 'z') {\r
-chr2 = String.fromCharCode (chr2.charCodeAt (0) - 32);\r
-}if (chr1 != chr2) {\r
-if (agap) {\r
-if (ungappedOnly) {\r
-elen--;\r
-} else if (!wcGaps) {\r
-bad++;\r
-}} else {\r
-bad++;\r
-}}}\r
-if (elen < 1) {\r
-return 0;\r
-}return (100 * (elen - bad)) / elen;\r
-}, "~S,~S,~N,~N,~B,~B");\r
-c$.isGap = Clazz.defineMethod (c$, "isGap", \r
-function (c) {\r
-return (c == '-' || c == '.' || c == ' ') ? true : false;\r
-}, "~S");\r
-c$.isNucleotide = Clazz.defineMethod (c$, "isNucleotide", \r
-function (seqs) {\r
-if (seqs == null) {\r
-return false;\r
-}var ntCount = 0;\r
-var aaCount = 0;\r
-for (var seq, $seq = 0, $$seq = seqs; $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {\r
-if (seq == null) {\r
-continue;\r
-}for (var c, $c = 0, $$c = seq.getSequence (); $c < $$c.length && ((c = $$c[$c]) || true); $c++) {\r
-if ('a' <= c && c <= 'z') {\r
-c = String.fromCharCode (c.charCodeAt (0) - 32);\r
-}if (c == 'A' || c == 'G' || c == 'C' || c == 'T' || c == 'U') {\r
-ntCount++;\r
-} else if (!jalview.util.Comparison.isGap (c)) {\r
-aaCount++;\r
-}}\r
-}\r
-if (ntCount * 100 > 85 * (ntCount + aaCount)) {\r
-return true;\r
-} else {\r
-return false;\r
-}}, "~A");\r
-c$.isNucleotide2 = Clazz.defineMethod (c$, "isNucleotide2", \r
-function (seqs) {\r
-if (seqs == null) {\r
-return false;\r
-}var flattened =  new java.util.ArrayList ();\r
-for (var ss, $ss = 0, $$ss = seqs; $ss < $$ss.length && ((ss = $$ss[$ss]) || true); $ss++) {\r
-for (var s, $s = 0, $$s = ss; $s < $$s.length && ((s = $$s[$s]) || true); $s++) {\r
-flattened.add (s);\r
-}\r
-}\r
-var oneDArray = flattened.toArray ( new Array (flattened.size ()));\r
-return jalview.util.Comparison.isNucleotide (oneDArray);\r
-}, "~A");\r
-Clazz.defineStatics (c$,\r
-"EIGHTY_FIVE", 85,\r
-"TO_UPPER_CASE", 32,\r
-"GAP_SPACE", ' ',\r
-"GAP_DOT", '.',\r
-"GAP_DASH", '-');\r
-c$.GapChars = c$.prototype.GapChars =  String.instantialize ( Clazz.newCharArray (-1, [' ', '.', '-']));\r
-Clazz.defineStatics (c$,\r
-"caseShift", 32);\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (null, "jalview.util.Comparison", ["java.util.ArrayList"], function () {
+c$ = Clazz.declareType (jalview.util, "Comparison");
+c$.compare = Clazz.defineMethod (c$, "compare", 
+function (ii, jj) {
+return jalview.util.Comparison.compare (ii, jj, 0, ii.getLength () - 1);
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+c$.compare = Clazz.defineMethod (c$, "compare", 
+function (ii, jj, start, end) {
+var si = ii.getSequenceAsString ();
+var sj = jj.getSequenceAsString ();
+var ilen = si.length - 1;
+var jlen = sj.length - 1;
+while (jalview.util.Comparison.isGap (si.charAt (start + ilen))) {
+ilen--;
+}
+while (jalview.util.Comparison.isGap (sj.charAt (start + jlen))) {
+jlen--;
+}
+var count = 0;
+var match = 0;
+var pid = -1;
+if (ilen > jlen) {
+for (var j = 0; j < jlen; j++) {
+if (si.substring (start + j, start + j + 1).equals (sj.substring (start + j, start + j + 1))) {
+match++;
+}count++;
+}
+pid = match / ilen * 100;
+} else {
+for (var j = 0; j < jlen; j++) {
+if (si.substring (start + j, start + j + 1).equals (sj.substring (start + j, start + j + 1))) {
+match++;
+}count++;
+}
+pid = match / jlen * 100;
+}return pid;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~N,~N");
+c$.PID = Clazz.defineMethod (c$, "PID", 
+function (seq1, seq2) {
+return jalview.util.Comparison.PID (seq1, seq2, 0, seq1.length);
+}, "~S,~S");
+c$.PID = Clazz.defineMethod (c$, "PID", 
+function (seq1, seq2, start, end) {
+return jalview.util.Comparison.PID (seq1, seq2, start, end, true, false);
+}, "~S,~S,~N,~N");
+c$.PID = Clazz.defineMethod (c$, "PID", 
+function (seq1, seq2, start, end, wcGaps, ungappedOnly) {
+var s1len = seq1.length;
+var s2len = seq2.length;
+var len = Math.min (s1len, s2len);
+if (end < len) {
+len = end;
+}if (len < start) {
+start = len - 1;
+}var elen = len - start;
+var bad = 0;
+var chr1;
+var chr2;
+var agap;
+for (var i = start; i < len; i++) {
+chr1 = seq1.charAt (i);
+chr2 = seq2.charAt (i);
+agap = jalview.util.Comparison.isGap (chr1) || jalview.util.Comparison.isGap (chr2);
+if ('a' <= chr1 && chr1 <= 'z') {
+chr1 = String.fromCharCode (chr1.charCodeAt (0) - 32);
+}if ('a' <= chr2 && chr2 <= 'z') {
+chr2 = String.fromCharCode (chr2.charCodeAt (0) - 32);
+}if (chr1 != chr2) {
+if (agap) {
+if (ungappedOnly) {
+elen--;
+} else if (!wcGaps) {
+bad++;
+}} else {
+bad++;
+}}}
+if (elen < 1) {
+return 0;
+}return (100 * (elen - bad)) / elen;
+}, "~S,~S,~N,~N,~B,~B");
+c$.isGap = Clazz.defineMethod (c$, "isGap", 
+function (c) {
+return (c == '-' || c == '.' || c == ' ') ? true : false;
+}, "~S");
+c$.isNucleotide = Clazz.defineMethod (c$, "isNucleotide", 
+function (seqs) {
+if (seqs == null) {
+return false;
+}var ntCount = 0;
+var aaCount = 0;
+for (var seq, $seq = 0, $$seq = seqs; $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
+if (seq == null) {
+continue;
+}for (var c, $c = 0, $$c = seq.getSequence (); $c < $$c.length && ((c = $$c[$c]) || true); $c++) {
+if ('a' <= c && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) - 32);
+}if (c == 'A' || c == 'G' || c == 'C' || c == 'T' || c == 'U') {
+ntCount++;
+} else if (!jalview.util.Comparison.isGap (c)) {
+aaCount++;
+}}
+}
+if (ntCount * 100 > 85 * (ntCount + aaCount)) {
+return true;
+} else {
+return false;
+}}, "~A");
+c$.isNucleotide2 = Clazz.defineMethod (c$, "isNucleotide2", 
+function (seqs) {
+if (seqs == null) {
+return false;
+}var flattened =  new java.util.ArrayList ();
+for (var ss, $ss = 0, $$ss = seqs; $ss < $$ss.length && ((ss = $$ss[$ss]) || true); $ss++) {
+for (var s, $s = 0, $$s = ss; $s < $$s.length && ((s = $$s[$s]) || true); $s++) {
+flattened.add (s);
+}
+}
+var oneDArray = flattened.toArray ( new Array (flattened.size ()));
+return jalview.util.Comparison.isNucleotide (oneDArray);
+}, "~A");
+Clazz.defineStatics (c$,
+"EIGHTY_FIVE", 85,
+"TO_UPPER_CASE", 32,
+"GAP_SPACE", ' ',
+"GAP_DOT", '.',
+"GAP_DASH", '-');
+c$.GapChars = c$.prototype.GapChars =  String.instantialize ( Clazz.newCharArray (-1, [' ', '.', '-']));
+Clazz.defineStatics (c$,
+"caseShift", 32);
+});
index fae2024..0686bf2 100644 (file)
Binary files a/bin/jalview/util/DBRefUtils.class and b/bin/jalview/util/DBRefUtils.class differ
index 051cde7..b27f196 100644 (file)
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (["java.util.HashMap"], "jalview.util.DBRefUtils", ["jalview.datamodel.DBRefEntry", "$.DBRefSource", "$.PDBEntry", "jalview.jsdev.RegExp", "java.util.ArrayList", "$.Hashtable"], function () {\r
-c$ = Clazz.declareType (jalview.util, "DBRefUtils");\r
-c$.selectRefs = Clazz.defineMethod (c$, "selectRefs", \r
-function (dbrefs, sources) {\r
-if (dbrefs == null) {\r
-return null;\r
-}if (sources == null) {\r
-return dbrefs;\r
-}var srcs =  new java.util.HashMap ();\r
-var res =  new java.util.ArrayList ();\r
-for (var i = 0; i < sources.length; i++) {\r
-srcs.put ( String.instantialize (sources[i]),  new Integer (i));\r
-}\r
-for (var i = 0, j = dbrefs.length; i < j; i++) {\r
-if (srcs.containsKey (dbrefs[i].getSource ())) {\r
-res.add (dbrefs[i]);\r
-}}\r
-if (res.size () > 0) {\r
-var reply =  new Array (res.size ());\r
-return res.toArray (reply);\r
-}res = null;\r
-return null;\r
-}, "~A,~A");\r
-c$.isDasCoordinateSystem = Clazz.defineMethod (c$, "isDasCoordinateSystem", \r
-function (string, dBRefEntry) {\r
-if (string == null || dBRefEntry == null) {\r
-return false;\r
-}var coordsys = jalview.util.DBRefUtils.dasCoordinateSystemsLookup.get (string.toLowerCase ());\r
-return coordsys == null ? false : coordsys.equals (dBRefEntry.getSource ());\r
-}, "~S,jalview.datamodel.DBRefEntry");\r
-c$.getCanonicalName = Clazz.defineMethod (c$, "getCanonicalName", \r
-function (source) {\r
-if (source == null) {\r
-return null;\r
-}var canonical = jalview.util.DBRefUtils.canonicalSourceNameLookup.get (source.toLowerCase ());\r
-return canonical == null ? source : canonical;\r
-}, "~S");\r
-c$.searchRefs = Clazz.defineMethod (c$, "searchRefs", \r
-function (ref, entry) {\r
-return jalview.util.DBRefUtils.searchRefs (ref, entry, jalview.util.DBRefUtils.matchDbAndIdAndEitherMapOrEquivalentMapList);\r
-}, "~A,jalview.datamodel.DBRefEntry");\r
-c$.searchRefs = Clazz.defineMethod (c$, "searchRefs", \r
-function (refs, entry, comparator) {\r
-if (refs == null || entry == null) {\r
-return null;\r
-}var rfs =  new java.util.ArrayList ();\r
-for (var i = 0; i < refs.length; i++) {\r
-if (comparator.matches (entry, refs[i])) {\r
-rfs.add (refs[i]);\r
-}}\r
-return rfs.size () == 0 ? null : rfs.toArray ( new Array (rfs.size ()));\r
-}, "~A,jalview.datamodel.DBRefEntry,jalview.util.DBRefUtils.DbRefComp");\r
-c$.parseToDbRef = Clazz.defineMethod (c$, "parseToDbRef", \r
-function (seq, dbname, version, acn) {\r
-var ref = null;\r
-if (dbname != null) {\r
-var locsrc = jalview.util.DBRefUtils.getCanonicalName (dbname);\r
-if (locsrc.equals (jalview.datamodel.DBRefSource.PDB)) {\r
-var r = jalview.jsdev.RegExp.newRegex (["([0-9][0-9A-Za-z]{3})\\s*(.?)\\s*;\\s*([0-9]+)-([0-9]+)"]);\r
-if (r.search (acn.trim ())) {\r
-var pdbid = r.stringMatchedI (1);\r
-var chaincode = r.stringMatchedI (2);\r
-if (chaincode == null) {\r
-chaincode = " ";\r
-}if (chaincode.equals (" ")) {\r
-chaincode = "_";\r
-}ref =  new jalview.datamodel.DBRefEntry (locsrc, version, pdbid + chaincode);\r
-var pdbr =  new jalview.datamodel.PDBEntry ();\r
-pdbr.setId (pdbid);\r
-pdbr.setType (jalview.datamodel.PDBEntry.Type.PDB);\r
-pdbr.setProperty ( new java.util.Hashtable ());\r
-pdbr.setChainCode (chaincode);\r
-seq.addPDBId (pdbr);\r
-} else {\r
-System.err.println ("Malformed PDB DR line:" + acn);\r
-}} else {\r
-ref =  new jalview.datamodel.DBRefEntry (locsrc, version, acn);\r
-}}if (ref != null) {\r
-seq.addDBRef (ref);\r
-}return ref;\r
-}, "jalview.datamodel.SequenceI,~S,~S,~S");\r
-c$.$DBRefUtils$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.util, "DBRefUtils$1", null, jalview.util.DBRefUtils.DbRefComp);\r
-Clazz.defineMethod (c$, "matches", \r
-function (refa, refb) {\r
-if (refa.getSource () == null || refb.getSource ().equals (refa.getSource ())) {\r
-if (refa.getVersion () == null || refb.getVersion ().equals (refa.getVersion ())) {\r
-if (refa.getAccessionId () == null || refb.getAccessionId ().equals (refa.getAccessionId ())) {\r
-if (refa.getMap () == null || (refb.getMap () != null && refb.getMap ().equals (refa.getMap ()))) {\r
-return true;\r
-}}}}return false;\r
-}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$DBRefUtils$2$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.util, "DBRefUtils$2", null, jalview.util.DBRefUtils.DbRefComp);\r
-Clazz.defineMethod (c$, "matches", \r
-function (refa, refb) {\r
-if ((refa.getSource () == null || refb.getSource () == null) || refb.getSource ().equals (refa.getSource ())) {\r
-if ((refa.getVersion () == null || refb.getVersion () == null) || refb.getVersion ().equals (refa.getVersion ())) {\r
-if ((refa.getAccessionId () == null || refb.getAccessionId () == null) || refb.getAccessionId ().equals (refa.getAccessionId ())) {\r
-if ((refa.getMap () == null || refb.getMap () == null) || (refb.getMap () != null && refb.getMap ().equals (refa.getMap ()))) {\r
-return true;\r
-}}}}return false;\r
-}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$DBRefUtils$3$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.util, "DBRefUtils$3", null, jalview.util.DBRefUtils.DbRefComp);\r
-Clazz.defineMethod (c$, "matches", \r
-function (refa, refb) {\r
-if (refa.getSource () != null && refb.getSource () != null && refb.getSource ().equals (refa.getSource ())) {\r
-if (refa.getAccessionId () != null && refb.getAccessionId () != null || refb.getAccessionId ().equals (refa.getAccessionId ())) {\r
-if ((refa.getMap () == null || refb.getMap () == null) || (refa.getMap () != null && refb.getMap () != null && refb.getMap ().equals (refa.getMap ()))) {\r
-return true;\r
-}}}return false;\r
-}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$DBRefUtils$4$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.util, "DBRefUtils$4", null, jalview.util.DBRefUtils.DbRefComp);\r
-Clazz.defineMethod (c$, "matches", \r
-function (refa, refb) {\r
-if (refa.getSource () != null && refb.getSource () != null && refb.getSource ().equals (refa.getSource ())) {\r
-if (refa.getAccessionId () != null && refb.getAccessionId () != null || refb.getAccessionId ().equals (refa.getAccessionId ())) {\r
-if ((refa.getMap () == null && refb.getMap () == null) || (refa.getMap () != null && refb.getMap () != null)) {\r
-if ((refb.getMap ().getMap () == null && refa.getMap ().getMap () == null) || (refb.getMap ().getMap () != null && refa.getMap ().getMap () != null && refb.getMap ().getMap ().getInverse ().equals (refa.getMap ().getMap ()))) {\r
-return true;\r
-}}}}return false;\r
-}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$DBRefUtils$5$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.util, "DBRefUtils$5", null, jalview.util.DBRefUtils.DbRefComp);\r
-Clazz.defineMethod (c$, "matches", \r
-function (refa, refb) {\r
-if (refa.getSource () != null && refb.getSource () != null && refb.getSource ().equals (refa.getSource ())) {\r
-if (refa.getAccessionId () != null && refb.getAccessionId () != null || refb.getAccessionId ().equals (refa.getAccessionId ())) {\r
-if (refa.getMap () == null && refb.getMap () == null) {\r
-return true;\r
-}if (refa.getMap () != null && refb.getMap () != null && ((refb.getMap ().getMap () == null && refa.getMap ().getMap () == null) || (refb.getMap ().getMap () != null && refa.getMap ().getMap () != null && refb.getMap ().getMap ().equals (refa.getMap ().getMap ())))) {\r
-return true;\r
-}}}return false;\r
-}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$DBRefUtils$6$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.util, "DBRefUtils$6", null, jalview.util.DBRefUtils.DbRefComp);\r
-Clazz.defineMethod (c$, "matches", \r
-function (refa, refb) {\r
-if (refa.getSource () != null && refb.getSource () != null && refb.getSource ().equals (refa.getSource ())) {\r
-if (refa.getAccessionId () != null && refb.getAccessionId () != null && refb.getAccessionId ().equals (refa.getAccessionId ())) {\r
-if (refa.getMap () == null || refb.getMap () == null) {\r
-return true;\r
-}if ((refa.getMap () != null && refb.getMap () != null) && (refb.getMap ().getMap () == null && refa.getMap ().getMap () == null) || (refb.getMap ().getMap () != null && refa.getMap ().getMap () != null && (refb.getMap ().getMap ().equals (refa.getMap ().getMap ())))) {\r
-return true;\r
-}}}return false;\r
-}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.declareInterface (jalview.util.DBRefUtils, "DbRefComp");\r
-c$.canonicalSourceNameLookup = c$.prototype.canonicalSourceNameLookup =  new java.util.HashMap ();\r
-c$.dasCoordinateSystemsLookup = c$.prototype.dasCoordinateSystemsLookup =  new java.util.HashMap ();\r
-{\r
-jalview.util.DBRefUtils.canonicalSourceNameLookup.put ("uniprotkb/swiss-prot", jalview.datamodel.DBRefSource.UNIPROT);\r
-jalview.util.DBRefUtils.canonicalSourceNameLookup.put ("uniprotkb/trembl", jalview.datamodel.DBRefSource.UNIPROT);\r
-jalview.util.DBRefUtils.canonicalSourceNameLookup.put ("pdb", jalview.datamodel.DBRefSource.PDB);\r
-jalview.util.DBRefUtils.dasCoordinateSystemsLookup.put ("pdbresnum", jalview.datamodel.DBRefSource.PDB);\r
-jalview.util.DBRefUtils.dasCoordinateSystemsLookup.put ("uniprot", jalview.datamodel.DBRefSource.UNIPROT);\r
-jalview.util.DBRefUtils.dasCoordinateSystemsLookup.put ("embl", jalview.datamodel.DBRefSource.EMBL);\r
-}c$.matchNonNullonA = c$.prototype.matchNonNullonA = ((Clazz.isClassDefined ("jalview.util.DBRefUtils$1") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$1$ ()), Clazz.innerTypeInstance (jalview.util.DBRefUtils$1, this, null));\r
-c$.matchEitherNonNull = c$.prototype.matchEitherNonNull = ((Clazz.isClassDefined ("jalview.util.DBRefUtils$2") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$2$ ()), Clazz.innerTypeInstance (jalview.util.DBRefUtils$2, this, null));\r
-c$.matchDbAndIdAndEitherMap = c$.prototype.matchDbAndIdAndEitherMap = ((Clazz.isClassDefined ("jalview.util.DBRefUtils$3") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$3$ ()), Clazz.innerTypeInstance (jalview.util.DBRefUtils$3, this, null));\r
-c$.matchDbAndIdAndComplementaryMapList = c$.prototype.matchDbAndIdAndComplementaryMapList = ((Clazz.isClassDefined ("jalview.util.DBRefUtils$4") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$4$ ()), Clazz.innerTypeInstance (jalview.util.DBRefUtils$4, this, null));\r
-c$.matchDbAndIdAndEquivalentMapList = c$.prototype.matchDbAndIdAndEquivalentMapList = ((Clazz.isClassDefined ("jalview.util.DBRefUtils$5") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$5$ ()), Clazz.innerTypeInstance (jalview.util.DBRefUtils$5, this, null));\r
-c$.matchDbAndIdAndEitherMapOrEquivalentMapList = c$.prototype.matchDbAndIdAndEitherMapOrEquivalentMapList = ((Clazz.isClassDefined ("jalview.util.DBRefUtils$6") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$6$ ()), Clazz.innerTypeInstance (jalview.util.DBRefUtils$6, this, null));\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (["java.util.HashMap"], "jalview.util.DBRefUtils", ["jalview.datamodel.DBRefEntry", "$.DBRefSource", "$.PDBEntry", "jalview.jsdev.RegExp", "java.util.ArrayList", "$.Hashtable"], function () {
+c$ = Clazz.declareType (jalview.util, "DBRefUtils");
+c$.selectRefs = Clazz.defineMethod (c$, "selectRefs", 
+function (dbrefs, sources) {
+if (dbrefs == null) {
+return null;
+}if (sources == null) {
+return dbrefs;
+}var srcs =  new java.util.HashMap ();
+var res =  new java.util.ArrayList ();
+for (var i = 0; i < sources.length; i++) {
+srcs.put ( String.instantialize (sources[i]),  new Integer (i));
+}
+for (var i = 0, j = dbrefs.length; i < j; i++) {
+if (srcs.containsKey (dbrefs[i].getSource ())) {
+res.add (dbrefs[i]);
+}}
+if (res.size () > 0) {
+var reply =  new Array (res.size ());
+return res.toArray (reply);
+}res = null;
+return null;
+}, "~A,~A");
+c$.isDasCoordinateSystem = Clazz.defineMethod (c$, "isDasCoordinateSystem", 
+function (string, dBRefEntry) {
+if (string == null || dBRefEntry == null) {
+return false;
+}var coordsys = jalview.util.DBRefUtils.dasCoordinateSystemsLookup.get (string.toLowerCase ());
+return coordsys == null ? false : coordsys.equals (dBRefEntry.getSource ());
+}, "~S,jalview.datamodel.DBRefEntry");
+c$.getCanonicalName = Clazz.defineMethod (c$, "getCanonicalName", 
+function (source) {
+if (source == null) {
+return null;
+}var canonical = jalview.util.DBRefUtils.canonicalSourceNameLookup.get (source.toLowerCase ());
+return canonical == null ? source : canonical;
+}, "~S");
+c$.searchRefs = Clazz.defineMethod (c$, "searchRefs", 
+function (ref, entry) {
+return jalview.util.DBRefUtils.searchRefs (ref, entry, jalview.util.DBRefUtils.matchDbAndIdAndEitherMapOrEquivalentMapList);
+}, "~A,jalview.datamodel.DBRefEntry");
+c$.searchRefs = Clazz.defineMethod (c$, "searchRefs", 
+function (refs, entry, comparator) {
+if (refs == null || entry == null) {
+return null;
+}var rfs =  new java.util.ArrayList ();
+for (var i = 0; i < refs.length; i++) {
+if (comparator.matches (entry, refs[i])) {
+rfs.add (refs[i]);
+}}
+return rfs.size () == 0 ? null : rfs.toArray ( new Array (rfs.size ()));
+}, "~A,jalview.datamodel.DBRefEntry,jalview.util.DBRefUtils.DbRefComp");
+c$.parseToDbRef = Clazz.defineMethod (c$, "parseToDbRef", 
+function (seq, dbname, version, acn) {
+var ref = null;
+if (dbname != null) {
+var locsrc = jalview.util.DBRefUtils.getCanonicalName (dbname);
+if (locsrc.equals (jalview.datamodel.DBRefSource.PDB)) {
+var r = jalview.jsdev.RegExp.newRegex (["([0-9][0-9A-Za-z]{3})\\s*(.?)\\s*;\\s*([0-9]+)-([0-9]+)"]);
+if (r.search (acn.trim ())) {
+var pdbid = r.stringMatchedI (1);
+var chaincode = r.stringMatchedI (2);
+if (chaincode == null) {
+chaincode = " ";
+}if (chaincode.equals (" ")) {
+chaincode = "_";
+}ref =  new jalview.datamodel.DBRefEntry (locsrc, version, pdbid + chaincode);
+var pdbr =  new jalview.datamodel.PDBEntry ();
+pdbr.setId (pdbid);
+pdbr.setType (jalview.datamodel.PDBEntry.Type.PDB);
+pdbr.setProperty ( new java.util.Hashtable ());
+pdbr.setChainCode (chaincode);
+seq.addPDBId (pdbr);
+} else {
+System.err.println ("Malformed PDB DR line:" + acn);
+}} else {
+ref =  new jalview.datamodel.DBRefEntry (locsrc, version, acn);
+}}if (ref != null) {
+seq.addDBRef (ref);
+}return ref;
+}, "jalview.datamodel.SequenceI,~S,~S,~S");
+c$.$DBRefUtils$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.util, "DBRefUtils$1", null, jalview.util.DBRefUtils.DbRefComp);
+Clazz.defineMethod (c$, "matches", 
+function (refa, refb) {
+if (refa.getSource () == null || refb.getSource ().equals (refa.getSource ())) {
+if (refa.getVersion () == null || refb.getVersion ().equals (refa.getVersion ())) {
+if (refa.getAccessionId () == null || refb.getAccessionId ().equals (refa.getAccessionId ())) {
+if (refa.getMap () == null || (refb.getMap () != null && refb.getMap ().equals (refa.getMap ()))) {
+return true;
+}}}}return false;
+}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");
+c$ = Clazz.p0p ();
+};
+c$.$DBRefUtils$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.util, "DBRefUtils$2", null, jalview.util.DBRefUtils.DbRefComp);
+Clazz.defineMethod (c$, "matches", 
+function (refa, refb) {
+if ((refa.getSource () == null || refb.getSource () == null) || refb.getSource ().equals (refa.getSource ())) {
+if ((refa.getVersion () == null || refb.getVersion () == null) || refb.getVersion ().equals (refa.getVersion ())) {
+if ((refa.getAccessionId () == null || refb.getAccessionId () == null) || refb.getAccessionId ().equals (refa.getAccessionId ())) {
+if ((refa.getMap () == null || refb.getMap () == null) || (refb.getMap () != null && refb.getMap ().equals (refa.getMap ()))) {
+return true;
+}}}}return false;
+}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");
+c$ = Clazz.p0p ();
+};
+c$.$DBRefUtils$3$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.util, "DBRefUtils$3", null, jalview.util.DBRefUtils.DbRefComp);
+Clazz.defineMethod (c$, "matches", 
+function (refa, refb) {
+if (refa.getSource () != null && refb.getSource () != null && refb.getSource ().equals (refa.getSource ())) {
+if (refa.getAccessionId () != null && refb.getAccessionId () != null || refb.getAccessionId ().equals (refa.getAccessionId ())) {
+if ((refa.getMap () == null || refb.getMap () == null) || (refa.getMap () != null && refb.getMap () != null && refb.getMap ().equals (refa.getMap ()))) {
+return true;
+}}}return false;
+}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");
+c$ = Clazz.p0p ();
+};
+c$.$DBRefUtils$4$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.util, "DBRefUtils$4", null, jalview.util.DBRefUtils.DbRefComp);
+Clazz.defineMethod (c$, "matches", 
+function (refa, refb) {
+if (refa.getSource () != null && refb.getSource () != null && refb.getSource ().equals (refa.getSource ())) {
+if (refa.getAccessionId () != null && refb.getAccessionId () != null || refb.getAccessionId ().equals (refa.getAccessionId ())) {
+if ((refa.getMap () == null && refb.getMap () == null) || (refa.getMap () != null && refb.getMap () != null)) {
+if ((refb.getMap ().getMap () == null && refa.getMap ().getMap () == null) || (refb.getMap ().getMap () != null && refa.getMap ().getMap () != null && refb.getMap ().getMap ().getInverse ().equals (refa.getMap ().getMap ()))) {
+return true;
+}}}}return false;
+}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");
+c$ = Clazz.p0p ();
+};
+c$.$DBRefUtils$5$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.util, "DBRefUtils$5", null, jalview.util.DBRefUtils.DbRefComp);
+Clazz.defineMethod (c$, "matches", 
+function (refa, refb) {
+if (refa.getSource () != null && refb.getSource () != null && refb.getSource ().equals (refa.getSource ())) {
+if (refa.getAccessionId () != null && refb.getAccessionId () != null || refb.getAccessionId ().equals (refa.getAccessionId ())) {
+if (refa.getMap () == null && refb.getMap () == null) {
+return true;
+}if (refa.getMap () != null && refb.getMap () != null && ((refb.getMap ().getMap () == null && refa.getMap ().getMap () == null) || (refb.getMap ().getMap () != null && refa.getMap ().getMap () != null && refb.getMap ().getMap ().equals (refa.getMap ().getMap ())))) {
+return true;
+}}}return false;
+}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");
+c$ = Clazz.p0p ();
+};
+c$.$DBRefUtils$6$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.util, "DBRefUtils$6", null, jalview.util.DBRefUtils.DbRefComp);
+Clazz.defineMethod (c$, "matches", 
+function (refa, refb) {
+if (refa.getSource () != null && refb.getSource () != null && refb.getSource ().equals (refa.getSource ())) {
+if (refa.getAccessionId () != null && refb.getAccessionId () != null && refb.getAccessionId ().equals (refa.getAccessionId ())) {
+if (refa.getMap () == null || refb.getMap () == null) {
+return true;
+}if ((refa.getMap () != null && refb.getMap () != null) && (refb.getMap ().getMap () == null && refa.getMap ().getMap () == null) || (refb.getMap ().getMap () != null && refa.getMap ().getMap () != null && (refb.getMap ().getMap ().equals (refa.getMap ().getMap ())))) {
+return true;
+}}}return false;
+}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");
+c$ = Clazz.p0p ();
+};
+Clazz.declareInterface (jalview.util.DBRefUtils, "DbRefComp");
+c$.canonicalSourceNameLookup = c$.prototype.canonicalSourceNameLookup =  new java.util.HashMap ();
+c$.dasCoordinateSystemsLookup = c$.prototype.dasCoordinateSystemsLookup =  new java.util.HashMap ();
+{
+jalview.util.DBRefUtils.canonicalSourceNameLookup.put ("uniprotkb/swiss-prot", jalview.datamodel.DBRefSource.UNIPROT);
+jalview.util.DBRefUtils.canonicalSourceNameLookup.put ("uniprotkb/trembl", jalview.datamodel.DBRefSource.UNIPROT);
+jalview.util.DBRefUtils.canonicalSourceNameLookup.put ("pdb", jalview.datamodel.DBRefSource.PDB);
+jalview.util.DBRefUtils.dasCoordinateSystemsLookup.put ("pdbresnum", jalview.datamodel.DBRefSource.PDB);
+jalview.util.DBRefUtils.dasCoordinateSystemsLookup.put ("uniprot", jalview.datamodel.DBRefSource.UNIPROT);
+jalview.util.DBRefUtils.dasCoordinateSystemsLookup.put ("embl", jalview.datamodel.DBRefSource.EMBL);
+}c$.matchNonNullonA = c$.prototype.matchNonNullonA = ((Clazz.isClassDefined ("jalview.util.DBRefUtils$1") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$1$ ()), Clazz.innerTypeInstance (jalview.util.DBRefUtils$1, this, null));
+c$.matchEitherNonNull = c$.prototype.matchEitherNonNull = ((Clazz.isClassDefined ("jalview.util.DBRefUtils$2") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$2$ ()), Clazz.innerTypeInstance (jalview.util.DBRefUtils$2, this, null));
+c$.matchDbAndIdAndEitherMap = c$.prototype.matchDbAndIdAndEitherMap = ((Clazz.isClassDefined ("jalview.util.DBRefUtils$3") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$3$ ()), Clazz.innerTypeInstance (jalview.util.DBRefUtils$3, this, null));
+c$.matchDbAndIdAndComplementaryMapList = c$.prototype.matchDbAndIdAndComplementaryMapList = ((Clazz.isClassDefined ("jalview.util.DBRefUtils$4") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$4$ ()), Clazz.innerTypeInstance (jalview.util.DBRefUtils$4, this, null));
+c$.matchDbAndIdAndEquivalentMapList = c$.prototype.matchDbAndIdAndEquivalentMapList = ((Clazz.isClassDefined ("jalview.util.DBRefUtils$5") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$5$ ()), Clazz.innerTypeInstance (jalview.util.DBRefUtils$5, this, null));
+c$.matchDbAndIdAndEitherMapOrEquivalentMapList = c$.prototype.matchDbAndIdAndEitherMapOrEquivalentMapList = ((Clazz.isClassDefined ("jalview.util.DBRefUtils$6") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$6$ ()), Clazz.innerTypeInstance (jalview.util.DBRefUtils$6, this, null));
+});
index 43f3a99..c8b23d7 100644 (file)
Binary files a/bin/jalview/util/Format.class and b/bin/jalview/util/Format.class differ
index 739add8..95a3560 100644 (file)
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (null, "jalview.util.Format", ["java.lang.Character", "$.IllegalArgumentException", "$.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.width = 0;\r
-this.precision = 0;\r
-this.pre = null;\r
-this.post = null;\r
-this.leading_zeroes = false;\r
-this.show_plus = false;\r
-this.alternate = false;\r
-this.show_space = false;\r
-this.left_align = false;\r
-this.fmt = '\0';\r
-this.formatString = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util, "Format");\r
-Clazz.makeConstructor (c$, \r
-function (s) {\r
-this.formatString = s;\r
-this.width = 0;\r
-this.precision = -1;\r
-this.pre = "";\r
-this.post = "";\r
-this.leading_zeroes = false;\r
-this.show_plus = false;\r
-this.alternate = false;\r
-this.show_space = false;\r
-this.left_align = false;\r
-this.fmt = ' ';\r
-var length = s.length;\r
-var parse_state = 0;\r
-var i = 0;\r
-while (parse_state == 0) {\r
-if (i >= length) {\r
-parse_state = 5;\r
-} else if (s.charAt (i) == '%') {\r
-if (i < (length - 1)) {\r
-if (s.charAt (i + 1) == '%') {\r
-this.pre = this.pre + '%';\r
-i++;\r
-} else {\r
-parse_state = 1;\r
-}} else {\r
-throw  new IllegalArgumentException ();\r
-}} else {\r
-this.pre = this.pre + s.charAt (i);\r
-}i++;\r
-}\r
-while (parse_state == 1) {\r
-if (i >= length) {\r
-parse_state = 5;\r
-} else if (s.charAt (i) == ' ') {\r
-this.show_space = true;\r
-} else if (s.charAt (i) == '-') {\r
-this.left_align = true;\r
-} else if (s.charAt (i) == '+') {\r
-this.show_plus = true;\r
-} else if (s.charAt (i) == '0') {\r
-this.leading_zeroes = true;\r
-} else if (s.charAt (i) == '#') {\r
-this.alternate = true;\r
-} else {\r
-parse_state = 2;\r
-i--;\r
-}i++;\r
-}\r
-while (parse_state == 2) {\r
-if (i >= length) {\r
-parse_state = 5;\r
-} else if (('0' <= s.charAt (i)) && (s.charAt (i) <= '9')) {\r
-this.width = ((this.width * 10) + s.charCodeAt (i)) - 48;\r
-i++;\r
-} else if (s.charAt (i) == '.') {\r
-parse_state = 3;\r
-this.precision = 0;\r
-i++;\r
-} else {\r
-parse_state = 4;\r
-}}\r
-while (parse_state == 3) {\r
-if (i >= length) {\r
-parse_state = 5;\r
-} else if (('0' <= s.charAt (i)) && (s.charAt (i) <= '9')) {\r
-this.precision = ((this.precision * 10) + s.charCodeAt (i)) - 48;\r
-i++;\r
-} else {\r
-parse_state = 4;\r
-}}\r
-if (parse_state == 4) {\r
-if (i >= length) {\r
-parse_state = 5;\r
-} else {\r
-this.fmt = s.charAt (i);\r
-}i++;\r
-}if (i < length) {\r
-this.post = s.substring (i, length);\r
-}}, "~S");\r
-c$.getHexString = Clazz.defineMethod (c$, "getHexString", \r
-function (color) {\r
-var r;\r
-var g;\r
-var b;\r
-r = Integer.toHexString (color.getRed ());\r
-if (r.length < 2) {\r
-r = "0" + r;\r
-}g = Integer.toHexString (color.getGreen ());\r
-if (g.length < 2) {\r
-g = "0" + g;\r
-}b = Integer.toHexString (color.getBlue ());\r
-if (b.length < 2) {\r
-b = "0" + b;\r
-}return r + g + b;\r
-}, "java.awt.Color");\r
-c$.printDouble = Clazz.defineMethod (c$, "printDouble", \r
-function (s, fmt, x) {\r
-s.print ( new jalview.util.Format (fmt).formDouble (x));\r
-}, "java.io.PrintStream,~S,~N");\r
-c$.printLong = Clazz.defineMethod (c$, "printLong", \r
-function (s, fmt, x) {\r
-s.print ( new jalview.util.Format (fmt).formLong (x));\r
-}, "java.io.PrintStream,~S,~N");\r
-c$.printChar = Clazz.defineMethod (c$, "printChar", \r
-function (s, fmt, x) {\r
-s.print ( new jalview.util.Format (fmt).formChar (x));\r
-}, "java.io.PrintStream,~S,~S");\r
-c$.print = Clazz.defineMethod (c$, "print", \r
-function (s, fmt, x) {\r
-s.print ( new jalview.util.Format (fmt).form (x));\r
-}, "java.io.PrintStream,~S,~S");\r
-c$.atoi = Clazz.defineMethod (c$, "atoi", \r
-function (s) {\r
-return jalview.util.Format.atol (s);\r
-}, "~S");\r
-c$.atol = Clazz.defineMethod (c$, "atol", \r
-function (s) {\r
-var i = 0;\r
-while ((i < s.length) && Character.isWhitespace (s.charAt (i))) {\r
-i++;\r
-}\r
-if ((i < s.length) && (s.charAt (i) == '0')) {\r
-if (((i + 1) < s.length) && ((s.charAt (i + 1) == 'x') || (s.charAt (i + 1) == 'X'))) {\r
-return jalview.util.Format.parseLong (s.substring (i + 2), 16);\r
-} else {\r
-return jalview.util.Format.parseLong (s, 8);\r
-}} else {\r
-return jalview.util.Format.parseLong (s, 10);\r
-}}, "~S");\r
-c$.parseLong = Clazz.defineMethod (c$, "parseLong", \r
-($fz = function (s, base) {\r
-var i = 0;\r
-var sign = 1;\r
-var r = 0;\r
-while ((i < s.length) && Character.isWhitespace (s.charAt (i))) {\r
-i++;\r
-}\r
-if ((i < s.length) && (s.charAt (i) == '-')) {\r
-sign = -1;\r
-i++;\r
-} else if ((i < s.length) && (s.charAt (i) == '+')) {\r
-i++;\r
-}while (i < s.length) {\r
-var ch = s.charAt (i);\r
-if (('0' <= ch) && (ch.charCodeAt (0) < (48 + base))) {\r
-r = ((r * base) + ch.charCodeAt (0)) - 48;\r
-} else if (('A' <= ch) && (ch.charCodeAt (0) < ((65 + base) - 10))) {\r
-r = ((r * base) + ch.charCodeAt (0)) - 65 + 10;\r
-} else if (('a' <= ch) && (ch.charCodeAt (0) < ((97 + base) - 10))) {\r
-r = ((r * base) + ch.charCodeAt (0)) - 97 + 10;\r
-} else {\r
-return r * sign;\r
-}i++;\r
-}\r
-return r * sign;\r
-}, $fz.isPrivate = true, $fz), "~S,~N");\r
-c$.atof = Clazz.defineMethod (c$, "atof", \r
-function (s) {\r
-var i = 0;\r
-var sign = 1;\r
-var r = 0;\r
-var p = 1;\r
-var state = 0;\r
-while ((i < s.length) && Character.isWhitespace (s.charAt (i))) {\r
-i++;\r
-}\r
-if ((i < s.length) && (s.charAt (i) == '-')) {\r
-sign = -1;\r
-i++;\r
-} else if ((i < s.length) && (s.charAt (i) == '+')) {\r
-i++;\r
-}while (i < s.length) {\r
-var ch = s.charAt (i);\r
-if (('0' <= ch) && (ch <= '9')) {\r
-if (state == 0) {\r
-r = ((r * 10) + ch.charCodeAt (0)) - 48;\r
-} else if (state == 1) {\r
-p = p / 10;\r
-r = r + (p * (ch.charCodeAt (0) - 48));\r
-}} else if (ch == '.') {\r
-if (state == 0) {\r
-state = 1;\r
-} else {\r
-return sign * r;\r
-}} else if ((ch == 'e') || (ch == 'E')) {\r
-var e = jalview.util.Format.parseLong (s.substring (i + 1), 10);\r
-return sign * r * Math.pow (10, e);\r
-} else {\r
-return sign * r;\r
-}i++;\r
-}\r
-return sign * r;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "formDouble", \r
-function (x) {\r
-var r;\r
-if (this.precision < 0) {\r
-this.precision = 6;\r
-}var s = 1;\r
-if (x < 0) {\r
-x = -x;\r
-s = -1;\r
-}if (this.fmt == 'f') {\r
-r = this.fixed_format (x);\r
-} else if ((this.fmt == 'e') || (this.fmt == 'E') || (this.fmt == 'g') || (this.fmt == 'G')) {\r
-r = this.exp_format (x);\r
-} else {\r
-throw  new IllegalArgumentException ();\r
-}return this.pad (this.sign (s, r));\r
-}, "~N");\r
-Clazz.defineMethod (c$, "formLong", \r
-function (x) {\r
-var r;\r
-var s = 0;\r
-if ((this.fmt == 'd') || (this.fmt == 'i')) {\r
-if (x < 0) {\r
-r = ("" + x).substring (1);\r
-s = -1;\r
-} else {\r
-r = "" + x;\r
-s = 1;\r
-}} else if (this.fmt == 'o') {\r
-r = jalview.util.Format.convert (x, 3, 7, "01234567");\r
-} else if (this.fmt == 'x') {\r
-r = jalview.util.Format.convert (x, 4, 15, "0123456789abcdef");\r
-} else if (this.fmt == 'X') {\r
-r = jalview.util.Format.convert (x, 4, 15, "0123456789ABCDEF");\r
-} else {\r
-throw  new IllegalArgumentException ();\r
-}return this.pad (this.sign (s, r));\r
-}, "~N");\r
-Clazz.defineMethod (c$, "formChar", \r
-function (c) {\r
-if (this.fmt != 'c') {\r
-throw  new IllegalArgumentException ();\r
-}var r = "" + c;\r
-return this.pad (r);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "form", \r
-function (s) {\r
-if (this.fmt != 's') {\r
-throw  new IllegalArgumentException ();\r
-}if (this.precision >= 0) {\r
-s = s.substring (0, this.precision);\r
-}return this.pad (s);\r
-}, "~S");\r
-c$.repeat = Clazz.defineMethod (c$, "repeat", \r
-($fz = function (c, n) {\r
-if (n <= 0) {\r
-return "";\r
-}var s =  new StringBuffer (n);\r
-for (var i = 0; i < n; i++) {\r
-s.append (c);\r
-}\r
-return s.toString ();\r
-}, $fz.isPrivate = true, $fz), "~S,~N");\r
-c$.convert = Clazz.defineMethod (c$, "convert", \r
-($fz = function (x, n, m, d) {\r
-if (x == 0) {\r
-return "0";\r
-}var r = "";\r
-while (x != 0) {\r
-r = d.charAt ((x & m)) + r;\r
-x = x >>> n;\r
-}\r
-return r;\r
-}, $fz.isPrivate = true, $fz), "~N,~N,~N,~S");\r
-Clazz.defineMethod (c$, "pad", \r
-($fz = function (r) {\r
-var p = jalview.util.Format.repeat (' ', this.width - r.length);\r
-if (this.left_align) {\r
-return this.pre + r + p + this.post;\r
-} else {\r
-return this.pre + p + r + this.post;\r
-}}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "sign", \r
-($fz = function (s, r) {\r
-var p = "";\r
-if (s < 0) {\r
-p = "-";\r
-} else if (s > 0) {\r
-if (this.show_plus) {\r
-p = "+";\r
-} else if (this.show_space) {\r
-p = " ";\r
-}} else {\r
-if ((this.fmt == 'o') && this.alternate && (r.length > 0) && (r.charAt (0) != '0')) {\r
-p = "0";\r
-} else if ((this.fmt == 'x') && this.alternate) {\r
-p = "0x";\r
-} else if ((this.fmt == 'X') && this.alternate) {\r
-p = "0X";\r
-}}var w = 0;\r
-if (this.leading_zeroes) {\r
-w = this.width;\r
-} else if (((this.fmt == 'd') || (this.fmt == 'i') || (this.fmt == 'x') || (this.fmt == 'X') || (this.fmt == 'o')) && (this.precision > 0)) {\r
-w = this.precision;\r
-}return p + jalview.util.Format.repeat ('0', w - p.length - r.length) + r;\r
-}, $fz.isPrivate = true, $fz), "~N,~S");\r
-Clazz.defineMethod (c$, "fixed_format", \r
-($fz = function (d) {\r
-var removeTrailing = ((this.fmt == 'G') || (this.fmt == 'g')) && !this.alternate;\r
-if (d > 0x7FFFFFFFFFFFFFFF) {\r
-return this.exp_format (d);\r
-}if (this.precision == 0) {\r
-return Clazz.doubleToLong (d + 0.5) + (removeTrailing ? "" : ".");\r
-}var whole = Clazz.doubleToLong (d);\r
-var fr = d - whole;\r
-if ((fr >= 1) || (fr < 0)) {\r
-return this.exp_format (d);\r
-}var factor = 1;\r
-var leading_zeroes = "";\r
-for (var i = 1; (i <= this.precision) && (factor <= 0x7FFFFFFFFFFFFFFF); i++) {\r
-factor *= 10;\r
-leading_zeroes = leading_zeroes + "0";\r
-}\r
-var l = Clazz.doubleToLong ((factor * fr) + 0.5);\r
-if (l >= factor) {\r
-l = 0;\r
-whole++;\r
-}var z = leading_zeroes + l;\r
-z = "." + z.substring (z.length - this.precision, z.length);\r
-if (removeTrailing) {\r
-var t = z.length - 1;\r
-while ((t >= 0) && (z.charAt (t) == '0')) {\r
-t--;\r
-}\r
-if ((t >= 0) && (z.charAt (t) == '.')) {\r
-t--;\r
-}z = z.substring (0, t + 1);\r
-}return whole + z;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "exp_format", \r
-($fz = function (d) {\r
-var f = "";\r
-var e = 0;\r
-var dd = d;\r
-var factor = 1;\r
-if (d != 0) {\r
-while (dd > 10) {\r
-e++;\r
-factor /= 10;\r
-dd = dd / 10;\r
-}\r
-while (dd < 1) {\r
-e--;\r
-factor *= 10;\r
-dd = dd * 10;\r
-}\r
-}if (((this.fmt == 'g') || (this.fmt == 'G')) && (e >= -4) && (e < this.precision)) {\r
-return this.fixed_format (d);\r
-}d = d * factor;\r
-f = f + this.fixed_format (d);\r
-if ((this.fmt == 'e') || (this.fmt == 'g')) {\r
-f = f + "e";\r
-} else {\r
-f = f + "E";\r
-}var p = "000";\r
-if (e >= 0) {\r
-f = f + "+";\r
-p = p + e;\r
-} else {\r
-f = f + "-";\r
-p = p + (-e);\r
-}return f + p.substring (p.length - 3, p.length);\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return this.formatString;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (null, "jalview.util.Format", ["java.lang.Character", "$.IllegalArgumentException", "$.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.width = 0;
+this.precision = 0;
+this.pre = null;
+this.post = null;
+this.leading_zeroes = false;
+this.show_plus = false;
+this.alternate = false;
+this.show_space = false;
+this.left_align = false;
+this.fmt = '\0';
+this.formatString = null;
+Clazz.instantialize (this, arguments);
+}, jalview.util, "Format");
+Clazz.makeConstructor (c$, 
+function (s) {
+this.formatString = s;
+this.width = 0;
+this.precision = -1;
+this.pre = "";
+this.post = "";
+this.leading_zeroes = false;
+this.show_plus = false;
+this.alternate = false;
+this.show_space = false;
+this.left_align = false;
+this.fmt = ' ';
+var length = s.length;
+var parse_state = 0;
+var i = 0;
+while (parse_state == 0) {
+if (i >= length) {
+parse_state = 5;
+} else if (s.charAt (i) == '%') {
+if (i < (length - 1)) {
+if (s.charAt (i + 1) == '%') {
+this.pre = this.pre + '%';
+i++;
+} else {
+parse_state = 1;
+}} else {
+throw  new IllegalArgumentException ();
+}} else {
+this.pre = this.pre + s.charAt (i);
+}i++;
+}
+while (parse_state == 1) {
+if (i >= length) {
+parse_state = 5;
+} else if (s.charAt (i) == ' ') {
+this.show_space = true;
+} else if (s.charAt (i) == '-') {
+this.left_align = true;
+} else if (s.charAt (i) == '+') {
+this.show_plus = true;
+} else if (s.charAt (i) == '0') {
+this.leading_zeroes = true;
+} else if (s.charAt (i) == '#') {
+this.alternate = true;
+} else {
+parse_state = 2;
+i--;
+}i++;
+}
+while (parse_state == 2) {
+if (i >= length) {
+parse_state = 5;
+} else if (('0' <= s.charAt (i)) && (s.charAt (i) <= '9')) {
+this.width = ((this.width * 10) + s.charCodeAt (i)) - 48;
+i++;
+} else if (s.charAt (i) == '.') {
+parse_state = 3;
+this.precision = 0;
+i++;
+} else {
+parse_state = 4;
+}}
+while (parse_state == 3) {
+if (i >= length) {
+parse_state = 5;
+} else if (('0' <= s.charAt (i)) && (s.charAt (i) <= '9')) {
+this.precision = ((this.precision * 10) + s.charCodeAt (i)) - 48;
+i++;
+} else {
+parse_state = 4;
+}}
+if (parse_state == 4) {
+if (i >= length) {
+parse_state = 5;
+} else {
+this.fmt = s.charAt (i);
+}i++;
+}if (i < length) {
+this.post = s.substring (i, length);
+}}, "~S");
+c$.getHexString = Clazz.defineMethod (c$, "getHexString", 
+function (color) {
+var r;
+var g;
+var b;
+r = Integer.toHexString (color.getRed ());
+if (r.length < 2) {
+r = "0" + r;
+}g = Integer.toHexString (color.getGreen ());
+if (g.length < 2) {
+g = "0" + g;
+}b = Integer.toHexString (color.getBlue ());
+if (b.length < 2) {
+b = "0" + b;
+}return r + g + b;
+}, "java.awt.Color");
+c$.printDouble = Clazz.defineMethod (c$, "printDouble", 
+function (s, fmt, x) {
+s.print ( new jalview.util.Format (fmt).formDouble (x));
+}, "java.io.PrintStream,~S,~N");
+c$.printLong = Clazz.defineMethod (c$, "printLong", 
+function (s, fmt, x) {
+s.print ( new jalview.util.Format (fmt).formLong (x));
+}, "java.io.PrintStream,~S,~N");
+c$.printChar = Clazz.defineMethod (c$, "printChar", 
+function (s, fmt, x) {
+s.print ( new jalview.util.Format (fmt).formChar (x));
+}, "java.io.PrintStream,~S,~S");
+c$.print = Clazz.defineMethod (c$, "print", 
+function (s, fmt, x) {
+s.print ( new jalview.util.Format (fmt).form (x));
+}, "java.io.PrintStream,~S,~S");
+c$.atoi = Clazz.defineMethod (c$, "atoi", 
+function (s) {
+return jalview.util.Format.atol (s);
+}, "~S");
+c$.atol = Clazz.defineMethod (c$, "atol", 
+function (s) {
+var i = 0;
+while ((i < s.length) && Character.isWhitespace (s.charAt (i))) {
+i++;
+}
+if ((i < s.length) && (s.charAt (i) == '0')) {
+if (((i + 1) < s.length) && ((s.charAt (i + 1) == 'x') || (s.charAt (i + 1) == 'X'))) {
+return jalview.util.Format.parseLong (s.substring (i + 2), 16);
+} else {
+return jalview.util.Format.parseLong (s, 8);
+}} else {
+return jalview.util.Format.parseLong (s, 10);
+}}, "~S");
+c$.parseLong = Clazz.defineMethod (c$, "parseLong", 
+($fz = function (s, base) {
+var i = 0;
+var sign = 1;
+var r = 0;
+while ((i < s.length) && Character.isWhitespace (s.charAt (i))) {
+i++;
+}
+if ((i < s.length) && (s.charAt (i) == '-')) {
+sign = -1;
+i++;
+} else if ((i < s.length) && (s.charAt (i) == '+')) {
+i++;
+}while (i < s.length) {
+var ch = s.charAt (i);
+if (('0' <= ch) && (ch.charCodeAt (0) < (48 + base))) {
+r = ((r * base) + ch.charCodeAt (0)) - 48;
+} else if (('A' <= ch) && (ch.charCodeAt (0) < ((65 + base) - 10))) {
+r = ((r * base) + ch.charCodeAt (0)) - 65 + 10;
+} else if (('a' <= ch) && (ch.charCodeAt (0) < ((97 + base) - 10))) {
+r = ((r * base) + ch.charCodeAt (0)) - 97 + 10;
+} else {
+return r * sign;
+}i++;
+}
+return r * sign;
+}, $fz.isPrivate = true, $fz), "~S,~N");
+c$.atof = Clazz.defineMethod (c$, "atof", 
+function (s) {
+var i = 0;
+var sign = 1;
+var r = 0;
+var p = 1;
+var state = 0;
+while ((i < s.length) && Character.isWhitespace (s.charAt (i))) {
+i++;
+}
+if ((i < s.length) && (s.charAt (i) == '-')) {
+sign = -1;
+i++;
+} else if ((i < s.length) && (s.charAt (i) == '+')) {
+i++;
+}while (i < s.length) {
+var ch = s.charAt (i);
+if (('0' <= ch) && (ch <= '9')) {
+if (state == 0) {
+r = ((r * 10) + ch.charCodeAt (0)) - 48;
+} else if (state == 1) {
+p = p / 10;
+r = r + (p * (ch.charCodeAt (0) - 48));
+}} else if (ch == '.') {
+if (state == 0) {
+state = 1;
+} else {
+return sign * r;
+}} else if ((ch == 'e') || (ch == 'E')) {
+var e = jalview.util.Format.parseLong (s.substring (i + 1), 10);
+return sign * r * Math.pow (10, e);
+} else {
+return sign * r;
+}i++;
+}
+return sign * r;
+}, "~S");
+Clazz.defineMethod (c$, "formDouble", 
+function (x) {
+var r;
+if (this.precision < 0) {
+this.precision = 6;
+}var s = 1;
+if (x < 0) {
+x = -x;
+s = -1;
+}if (this.fmt == 'f') {
+r = this.fixed_format (x);
+} else if ((this.fmt == 'e') || (this.fmt == 'E') || (this.fmt == 'g') || (this.fmt == 'G')) {
+r = this.exp_format (x);
+} else {
+throw  new IllegalArgumentException ();
+}return this.pad (this.sign (s, r));
+}, "~N");
+Clazz.defineMethod (c$, "formLong", 
+function (x) {
+var r;
+var s = 0;
+if ((this.fmt == 'd') || (this.fmt == 'i')) {
+if (x < 0) {
+r = ("" + x).substring (1);
+s = -1;
+} else {
+r = "" + x;
+s = 1;
+}} else if (this.fmt == 'o') {
+r = jalview.util.Format.convert (x, 3, 7, "01234567");
+} else if (this.fmt == 'x') {
+r = jalview.util.Format.convert (x, 4, 15, "0123456789abcdef");
+} else if (this.fmt == 'X') {
+r = jalview.util.Format.convert (x, 4, 15, "0123456789ABCDEF");
+} else {
+throw  new IllegalArgumentException ();
+}return this.pad (this.sign (s, r));
+}, "~N");
+Clazz.defineMethod (c$, "formChar", 
+function (c) {
+if (this.fmt != 'c') {
+throw  new IllegalArgumentException ();
+}var r = "" + c;
+return this.pad (r);
+}, "~S");
+Clazz.defineMethod (c$, "form", 
+function (s) {
+if (this.fmt != 's') {
+throw  new IllegalArgumentException ();
+}if (this.precision >= 0) {
+s = s.substring (0, this.precision);
+}return this.pad (s);
+}, "~S");
+c$.repeat = Clazz.defineMethod (c$, "repeat", 
+($fz = function (c, n) {
+if (n <= 0) {
+return "";
+}var s =  new StringBuffer (n);
+for (var i = 0; i < n; i++) {
+s.append (c);
+}
+return s.toString ();
+}, $fz.isPrivate = true, $fz), "~S,~N");
+c$.convert = Clazz.defineMethod (c$, "convert", 
+($fz = function (x, n, m, d) {
+if (x == 0) {
+return "0";
+}var r = "";
+while (x != 0) {
+r = d.charAt ((x & m)) + r;
+x = x >>> n;
+}
+return r;
+}, $fz.isPrivate = true, $fz), "~N,~N,~N,~S");
+Clazz.defineMethod (c$, "pad", 
+($fz = function (r) {
+var p = jalview.util.Format.repeat (' ', this.width - r.length);
+if (this.left_align) {
+return this.pre + r + p + this.post;
+} else {
+return this.pre + p + r + this.post;
+}}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "sign", 
+($fz = function (s, r) {
+var p = "";
+if (s < 0) {
+p = "-";
+} else if (s > 0) {
+if (this.show_plus) {
+p = "+";
+} else if (this.show_space) {
+p = " ";
+}} else {
+if ((this.fmt == 'o') && this.alternate && (r.length > 0) && (r.charAt (0) != '0')) {
+p = "0";
+} else if ((this.fmt == 'x') && this.alternate) {
+p = "0x";
+} else if ((this.fmt == 'X') && this.alternate) {
+p = "0X";
+}}var w = 0;
+if (this.leading_zeroes) {
+w = this.width;
+} else if (((this.fmt == 'd') || (this.fmt == 'i') || (this.fmt == 'x') || (this.fmt == 'X') || (this.fmt == 'o')) && (this.precision > 0)) {
+w = this.precision;
+}return p + jalview.util.Format.repeat ('0', w - p.length - r.length) + r;
+}, $fz.isPrivate = true, $fz), "~N,~S");
+Clazz.defineMethod (c$, "fixed_format", 
+($fz = function (d) {
+var removeTrailing = ((this.fmt == 'G') || (this.fmt == 'g')) && !this.alternate;
+if (d > 0x7FFFFFFFFFFFFFFF) {
+return this.exp_format (d);
+}if (this.precision == 0) {
+return Clazz.doubleToLong (d + 0.5) + (removeTrailing ? "" : ".");
+}var whole = Clazz.doubleToLong (d);
+var fr = d - whole;
+if ((fr >= 1) || (fr < 0)) {
+return this.exp_format (d);
+}var factor = 1;
+var leading_zeroes = "";
+for (var i = 1; (i <= this.precision) && (factor <= 0x7FFFFFFFFFFFFFFF); i++) {
+factor *= 10;
+leading_zeroes = leading_zeroes + "0";
+}
+var l = Clazz.doubleToLong ((factor * fr) + 0.5);
+if (l >= factor) {
+l = 0;
+whole++;
+}var z = leading_zeroes + l;
+z = "." + z.substring (z.length - this.precision, z.length);
+if (removeTrailing) {
+var t = z.length - 1;
+while ((t >= 0) && (z.charAt (t) == '0')) {
+t--;
+}
+if ((t >= 0) && (z.charAt (t) == '.')) {
+t--;
+}z = z.substring (0, t + 1);
+}return whole + z;
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "exp_format", 
+($fz = function (d) {
+var f = "";
+var e = 0;
+var dd = d;
+var factor = 1;
+if (d != 0) {
+while (dd > 10) {
+e++;
+factor /= 10;
+dd = dd / 10;
+}
+while (dd < 1) {
+e--;
+factor *= 10;
+dd = dd * 10;
+}
+}if (((this.fmt == 'g') || (this.fmt == 'G')) && (e >= -4) && (e < this.precision)) {
+return this.fixed_format (d);
+}d = d * factor;
+f = f + this.fixed_format (d);
+if ((this.fmt == 'e') || (this.fmt == 'g')) {
+f = f + "e";
+} else {
+f = f + "E";
+}var p = "000";
+if (e >= 0) {
+f = f + "+";
+p = p + e;
+} else {
+f = f + "-";
+p = p + (-e);
+}return f + p.substring (p.length - 3, p.length);
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return this.formatString;
+});
+});
index 8eab61a..c9f543d 100644 (file)
Binary files a/bin/jalview/util/GroupUrlLink.class and b/bin/jalview/util/GroupUrlLink.class differ
index c6f0e7e..5535c1f 100644 (file)
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (["java.lang.Exception"], "jalview.util.GroupUrlLink", ["jalview.jsdev.RegExp", "jalview.util.MessageManager", "$.Platform", "$.QuickSort", "java.lang.Error", "$.StringBuffer", "java.util.Hashtable"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-if (!Clazz.isClassDefined ("jalview.util.GroupUrlLink.UrlStringTooLongException")) {\r
-jalview.util.GroupUrlLink.$GroupUrlLink$UrlStringTooLongException$ ();\r
-}\r
-this.url_prefix = null;\r
-this.target = null;\r
-this.label = null;\r
-this.url_suffix = null;\r
-this.separators = null;\r
-this.regexReplace = null;\r
-this.invalidMessage = null;\r
-this.segs = null;\r
-this.mtch = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util, "GroupUrlLink");\r
-Clazz.makeConstructor (c$, \r
-function (link) {\r
-var sep = link.indexOf ("|");\r
-this.segs =  Clazz.newIntArray (jalview.util.GroupUrlLink.tokens.length, 0);\r
-var ntoks = 0;\r
-for (var i = 0; i < this.segs.length; i++) {\r
-if ((this.segs[i] = link.indexOf ("$" + jalview.util.GroupUrlLink.tokens[i])) > -1) {\r
-ntoks++;\r
-}}\r
-if (ntoks == 0) {\r
-this.invalidMessage = "Group URL string must contain at least one of ";\r
-for (var i = 0; i < this.segs.length; i++) {\r
-this.invalidMessage += " '$" + jalview.util.GroupUrlLink.tokens[i] + "[=/regex=/]$'";\r
-}\r
-return;\r
-}var ptok =  Clazz.newIntArray (ntoks + 1, 0);\r
-var tmtch =  new Array (ntoks + 1);\r
-this.mtch =  new Array (ntoks);\r
-for (var i = 0, t = 0; i < this.segs.length; i++) {\r
-if (this.segs[i] > -1) {\r
-ptok[t] = this.segs[i];\r
-tmtch[t++] = jalview.util.GroupUrlLink.tokens[i];\r
-}}\r
-ptok[ntoks] = link.length;\r
-tmtch[ntoks] = "$$$$$$$$$";\r
-jalview.util.QuickSort.sortInt (ptok, tmtch);\r
-for (var i = 0; i < ntoks; i++) {\r
-this.mtch[i] = tmtch[i];\r
-}\r
-var p = sep;\r
-do {\r
-sep = p;\r
-p = link.indexOf ("|", sep + 1);\r
-} while (p > sep && p < ptok[0]);\r
-this.label = link.substring (0, sep);\r
-if (this.label.indexOf ("|") > -1) {\r
-this.target = this.label.substring (0, this.label.indexOf ("|"));\r
-} else if (this.label.indexOf (" ") > 2) {\r
-this.target = this.label.substring (0, this.label.indexOf (" "));\r
-} else {\r
-this.target = this.label;\r
-}this.url_prefix = link.substring (sep + 1, ptok[0]);\r
-this.url_suffix =  new Array (this.mtch.length);\r
-this.regexReplace =  new Array (this.mtch.length);\r
-for (var pass = 0; pass < this.mtch.length; pass++) {\r
-var mlength = 3 + this.mtch[pass].length;\r
-if (link.indexOf ("$" + this.mtch[pass] + "=/") == ptok[pass] && (p = link.indexOf ("/=$", ptok[pass] + mlength)) > ptok[pass] + mlength) {\r
-if (ptok[pass + 1] < p + 3) {\r
-this.invalidMessage = "Token regexes cannot contain other regexes (did you terminate the $" + this.mtch[pass] + " regex with a '/=$' ?";\r
-return;\r
-}this.url_suffix[pass] = link.substring (p + 3, ptok[pass + 1]);\r
-this.regexReplace[pass] = link.substring (ptok[pass] + mlength, p);\r
-try {\r
-var rg = jalview.jsdev.RegExp.perlCode ("/" + this.regexReplace[pass] + "/");\r
-if (rg == null) {\r
-this.invalidMessage = "Invalid Regular Expression : '" + this.regexReplace[pass] + "'\n";\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-this.invalidMessage = "Invalid Regular Expression : '" + this.regexReplace[pass] + "'\n";\r
-} else {\r
-throw e;\r
-}\r
-}\r
-} else {\r
-this.regexReplace[pass] = null;\r
-if ((p = link.indexOf ("$" + this.mtch[pass] + "$")) == ptok[pass]) {\r
-this.url_suffix[pass] = link.substring (p + this.mtch[pass].length + 2, ptok[pass + 1]);\r
-} else {\r
-this.invalidMessage = "Warning: invalid regex structure (after '" + this.mtch[0] + "') for URL link : " + link;\r
-}}}\r
-var pass = 0;\r
-this.separators =  new Array (this.url_suffix.length);\r
-var suffices = this.url_suffix[this.url_suffix.length - 1];\r
-var lastsep = ",";\r
-while ((p = suffices.indexOf ('|')) > -1) {\r
-this.separators[pass] = suffices.substring (p + 1);\r
-if (pass == 0) {\r
-this.url_suffix[this.url_suffix.length - 1] = suffices.substring (0, p);\r
-} else {\r
-lastsep = (this.separators[pass - 1] = this.separators[pass - 1].substring (0, p));\r
-}suffices = this.separators[pass];\r
-pass++;\r
-}\r
-if (pass > 0) {\r
-lastsep = this.separators[pass - 1];\r
-}while (pass < this.separators.length) {\r
-this.separators[pass++] = lastsep;\r
-}\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getUrl_suffix", \r
-function () {\r
-return this.url_suffix[this.url_suffix.length - 1];\r
-});\r
-Clazz.defineMethod (c$, "getUrl_prefix", \r
-function () {\r
-return this.url_prefix;\r
-});\r
-Clazz.defineMethod (c$, "getTarget", \r
-function () {\r
-return this.target;\r
-});\r
-Clazz.defineMethod (c$, "getLabel", \r
-function () {\r
-return this.label;\r
-});\r
-Clazz.defineMethod (c$, "getIDRegexReplace", \r
-function () {\r
-return this._replaceFor (jalview.util.GroupUrlLink.tokens[0]);\r
-});\r
-Clazz.defineMethod (c$, "_replaceFor", \r
-($fz = function (token) {\r
-for (var i = 0; i < this.mtch.length; i++) {\r
-if (this.segs[i] > -1 && this.mtch[i].equals (token)) {\r
-return this.regexReplace[i];\r
-}}\r
-return null;\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "getSeqRegexReplace", \r
-function () {\r
-return this._replaceFor (jalview.util.GroupUrlLink.tokens[1]);\r
-});\r
-Clazz.defineMethod (c$, "getInvalidMessage", \r
-function () {\r
-return this.invalidMessage;\r
-});\r
-Clazz.defineMethod (c$, "isValid", \r
-function () {\r
-return this.invalidMessage == null;\r
-});\r
-Clazz.defineMethod (c$, "makeUrls", \r
-function (idstrings, seqstrings, dsstring, onlyIfMatches) {\r
-var rstrings = this.replacementArgs (idstrings, seqstrings, dsstring);\r
-return this.makeUrls (rstrings, onlyIfMatches);\r
-}, "~A,~A,~S,~B");\r
-Clazz.defineMethod (c$, "replacementArgs", \r
-($fz = function (idstrings, seqstrings, dsstring) {\r
-var rstrings =  new java.util.Hashtable ();\r
-rstrings.put (jalview.util.GroupUrlLink.tokens[0], idstrings);\r
-rstrings.put (jalview.util.GroupUrlLink.tokens[1], seqstrings);\r
-rstrings.put (jalview.util.GroupUrlLink.tokens[2],  Clazz.newArray (-1, [dsstring]));\r
-if (idstrings.length != seqstrings.length) {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.idstring_seqstrings_only_one_per_sequence"));\r
-}return rstrings;\r
-}, $fz.isPrivate = true, $fz), "~A,~A,~S");\r
-Clazz.defineMethod (c$, "makeUrls", \r
-function (repstrings, onlyIfMatches) {\r
-return this.makeUrlsIf (true, repstrings, onlyIfMatches);\r
-}, "java.util.Hashtable,~B");\r
-Clazz.defineMethod (c$, "makeUrlStubs", \r
-function (ids, seqstr, string, b) {\r
-var rstrings = this.replacementArgs (ids, seqstr, string);\r
-var stubs = this.makeUrlsIf (false, rstrings, b);\r
-if (stubs != null) {\r
-return  Clazz.newArray (-1, [stubs[0], stubs[1], rstrings,  Clazz.newBooleanArray (-1, [b])]);\r
-}return null;\r
-}, "~A,~A,~S,~B");\r
-Clazz.defineMethod (c$, "constructFrom", \r
-function (stubs) {\r
-var results = this.makeUrlsIf (true, stubs[2], (stubs[3])[0]);\r
-return (results[3])[0];\r
-}, "~A");\r
-Clazz.defineMethod (c$, "makeUrlsIf", \r
-function (createFullUrl, repstrings, onlyIfMatches) {\r
-var pass = 0;\r
-var idseq =  new Array (this.mtch.length);\r
-var mins = 0;\r
-var maxs = 0;\r
-for (var i = 0; i < this.mtch.length; i++) {\r
-idseq[i] = repstrings.get (this.mtch[i]);\r
-if (idseq[i].length >= 1) {\r
-if (mins == 0 && idseq[i].length == 1) {\r
-mins = 1;\r
-}if (maxs < 2) {\r
-maxs = idseq[i].length;\r
-} else {\r
-if (maxs != idseq[i].length) {\r
-throw  new Error (jalview.util.MessageManager.formatMessage ("error.cannot_have_mixed_length_replacement_vectors",  Clazz.newArray (-1, [(this.mtch[i]), Integer.$valueOf (idseq[i].length).toString (), Integer.$valueOf (maxs).toString ()])));\r
-}}} else {\r
-throw  new Error (jalview.util.MessageManager.getString ("error.cannot_have_zero_length_vector_replacement_strings"));\r
-}}\r
-var matched =  new Array (idseq.length);\r
-var rgxs =  new Array (matched.length);\r
-for (pass = 0; pass < matched.length; pass++) {\r
-matched[pass] =  new StringBuffer ();\r
-if (this.regexReplace[pass] != null) {\r
-rgxs[pass] = jalview.jsdev.RegExp.perlCode ("/" + this.regexReplace[pass] + "/");\r
-} else {\r
-rgxs[pass] = null;\r
-}}\r
-var urllength = this.url_prefix.length;\r
-for (pass = 0; pass < matched.length; pass++) {\r
-urllength += this.url_suffix[pass].length;\r
-}\r
-var thismatched =  Clazz.newBooleanArray (maxs, false);\r
-var seqsmatched = 0;\r
-for (var sq = 0; sq < maxs; sq++) {\r
-thismatched[sq] = false;\r
-var thematches =  new Array (rgxs.length);\r
-for (pass = 0; pass < rgxs.length; pass++) {\r
-thematches[pass] =  new StringBuffer ();\r
-if (idseq[pass].length <= sq) {\r
-continue;\r
-}if (rgxs[pass] != null) {\r
-var rg = rgxs[pass];\r
-var rematchat = 0;\r
-while (rg.searchFrom (idseq[pass][sq], rematchat)) {\r
-rematchat = rg.matchedTo ();\r
-thismatched[sq] = new Boolean (thismatched[sq] | true).valueOf ();\r
-urllength += rg.charsMatched ();\r
-if ((urllength + 32) > jalview.util.Platform.getMaxCommandLineLength ()) {\r
-throw Clazz.innerTypeInstance (jalview.util.GroupUrlLink.UrlStringTooLongException, this, null, urllength);\r
-}if (!createFullUrl) {\r
-continue;\r
-}var ns = rg.numSubs ();\r
-if (ns == 0) {\r
-thematches[pass].append (rg.stringMatched ());\r
-} else {\r
-var subs =  new StringBuffer ();\r
-var s = 0;\r
-while (s <= ns) {\r
-if (s + 1 <= ns && rg.matchedToI (s) > -1 && rg.matchedToI (s + 1) > -1 && rg.matchedToI (s + 1) < rg.matchedToI (s)) {\r
-var r = s + 1;\r
-var rmtch =  new StringBuffer ();\r
-while (r <= ns && rg.matchedToI (r) <= rg.matchedToI (s)) {\r
-if (rg.matchedFromI (r) > -1) {\r
-rmtch.append (rg.stringMatchedI (r));\r
-}r++;\r
-}\r
-if (rmtch.length () > 0) {\r
-subs.append (rmtch);\r
-}s = r;\r
-} else {\r
-if (rg.matchedFromI (s) > -1) {\r
-subs.append (rg.stringMatchedI (s));\r
-}s++;\r
-}}\r
-thematches[pass].append (subs);\r
-}}\r
-} else {\r
-if (!onlyIfMatches) {\r
-thismatched[sq] = new Boolean (thismatched[sq] | true).valueOf ();\r
-urllength += idseq[pass][sq].length;\r
-if (createFullUrl) {\r
-thematches[pass] =  new StringBuffer (idseq[pass][sq]);\r
-}}}}\r
-if (thismatched[sq]) {\r
-if (createFullUrl) {\r
-for (pass = 0; pass < matched.length; pass++) {\r
-if (idseq[pass].length > 1 && matched[pass].length () > 0) {\r
-matched[pass].append (this.separators[pass]);\r
-}matched[pass].append (thematches[pass]);\r
-}\r
-}seqsmatched++;\r
-}}\r
-if (seqsmatched == 0 || (createFullUrl && matched[0].length () == 0)) {\r
-return null;\r
-}if ((urllength + 32) > jalview.util.Platform.getMaxCommandLineLength ()) {\r
-throw Clazz.innerTypeInstance (jalview.util.GroupUrlLink.UrlStringTooLongException, this, null, urllength);\r
-}if (!createFullUrl) {\r
-return  Clazz.newArray (-1, [ Clazz.newIntArray (-1, [seqsmatched]), thismatched]);\r
-}var submiturl =  new StringBuffer ();\r
-submiturl.append (this.url_prefix);\r
-for (pass = 0; pass < matched.length; pass++) {\r
-submiturl.append (matched[pass]);\r
-if (this.url_suffix[pass] != null) {\r
-submiturl.append (this.url_suffix[pass]);\r
-}}\r
-return  Clazz.newArray (-1, [ Clazz.newIntArray (-1, [seqsmatched]), thismatched, matched,  Clazz.newArray (-1, [submiturl.toString ()])]);\r
-}, "~B,java.util.Hashtable,~B");\r
-Clazz.defineMethod (c$, "getNumberInvolved", \r
-function (urlstub) {\r
-return (urlstub[0])[0];\r
-}, "~A");\r
-Clazz.defineMethod (c$, "getGroupURLType", \r
-function () {\r
-var r = 0;\r
-for (var pass = 0; pass < jalview.util.GroupUrlLink.tokens.length; pass++) {\r
-for (var i = 0; i < this.mtch.length; i++) {\r
-if (this.mtch[i].equals (jalview.util.GroupUrlLink.tokens[pass])) {\r
-r += 1 << pass;\r
-}}\r
-}\r
-return r;\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var result =  new StringBuffer ();\r
-result.append (this.label + "|" + this.url_prefix);\r
-var r;\r
-for (r = 0; r < this.url_suffix.length; r++) {\r
-result.append ("$");\r
-result.append (this.mtch[r]);\r
-if (this.regexReplace[r] != null) {\r
-result.append ("=/");\r
-result.append (this.regexReplace[r]);\r
-result.append ("/=");\r
-}result.append ("$");\r
-result.append (this.url_suffix[r]);\r
-}\r
-for (r = 0; r < this.separators.length; r++) {\r
-result.append ("|");\r
-result.append (this.separators[r]);\r
-}\r
-return result.toString ();\r
-});\r
-c$.formStrings = Clazz.defineMethod (c$, "formStrings", \r
-function (seqs) {\r
-var idset =  Clazz.newArray (2, seqs.length, null);\r
-for (var i = 0; i < seqs.length; i++) {\r
-idset[0][i] = seqs[i].getName ();\r
-idset[1][i] = seqs[i].getSequenceAsString ();\r
-}\r
-return idset;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "setLabel", \r
-function (newlabel) {\r
-this.label = newlabel;\r
-}, "~S");\r
-c$.$GroupUrlLink$UrlStringTooLongException$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.urlLength = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.GroupUrlLink, "UrlStringTooLongException", Exception);\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-Clazz.superConstructor (this, jalview.util.GroupUrlLink.UrlStringTooLongException, []);\r
-this.urlLength = a;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "Generated url is estimated to be too long (" + this.urlLength + ")";\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"tokens", null);\r
-{\r
-if (jalview.util.GroupUrlLink.tokens == null) {\r
-jalview.util.GroupUrlLink.tokens =  Clazz.newArray (-1, ["SEQUENCEIDS", "SEQUENCES", "DATASETID"]);\r
-}}Clazz.defineStatics (c$,\r
-"SEQUENCEIDS", 1,\r
-"SEQUENCES", 2,\r
-"DATASETID", 4);\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (["java.lang.Exception"], "jalview.util.GroupUrlLink", ["jalview.jsdev.RegExp", "jalview.util.MessageManager", "$.Platform", "$.QuickSort", "java.lang.Error", "$.StringBuffer", "java.util.Hashtable"], function () {
+c$ = Clazz.decorateAsClass (function () {
+if (!Clazz.isClassDefined ("jalview.util.GroupUrlLink.UrlStringTooLongException")) {
+jalview.util.GroupUrlLink.$GroupUrlLink$UrlStringTooLongException$ ();
+}
+this.url_prefix = null;
+this.target = null;
+this.label = null;
+this.url_suffix = null;
+this.separators = null;
+this.regexReplace = null;
+this.invalidMessage = null;
+this.segs = null;
+this.mtch = null;
+Clazz.instantialize (this, arguments);
+}, jalview.util, "GroupUrlLink");
+Clazz.makeConstructor (c$, 
+function (link) {
+var sep = link.indexOf ("|");
+this.segs =  Clazz.newIntArray (jalview.util.GroupUrlLink.tokens.length, 0);
+var ntoks = 0;
+for (var i = 0; i < this.segs.length; i++) {
+if ((this.segs[i] = link.indexOf ("$" + jalview.util.GroupUrlLink.tokens[i])) > -1) {
+ntoks++;
+}}
+if (ntoks == 0) {
+this.invalidMessage = "Group URL string must contain at least one of ";
+for (var i = 0; i < this.segs.length; i++) {
+this.invalidMessage += " '$" + jalview.util.GroupUrlLink.tokens[i] + "[=/regex=/]$'";
+}
+return;
+}var ptok =  Clazz.newIntArray (ntoks + 1, 0);
+var tmtch =  new Array (ntoks + 1);
+this.mtch =  new Array (ntoks);
+for (var i = 0, t = 0; i < this.segs.length; i++) {
+if (this.segs[i] > -1) {
+ptok[t] = this.segs[i];
+tmtch[t++] = jalview.util.GroupUrlLink.tokens[i];
+}}
+ptok[ntoks] = link.length;
+tmtch[ntoks] = "$$$$$$$$$";
+jalview.util.QuickSort.sortInt (ptok, tmtch);
+for (var i = 0; i < ntoks; i++) {
+this.mtch[i] = tmtch[i];
+}
+var p = sep;
+do {
+sep = p;
+p = link.indexOf ("|", sep + 1);
+} while (p > sep && p < ptok[0]);
+this.label = link.substring (0, sep);
+if (this.label.indexOf ("|") > -1) {
+this.target = this.label.substring (0, this.label.indexOf ("|"));
+} else if (this.label.indexOf (" ") > 2) {
+this.target = this.label.substring (0, this.label.indexOf (" "));
+} else {
+this.target = this.label;
+}this.url_prefix = link.substring (sep + 1, ptok[0]);
+this.url_suffix =  new Array (this.mtch.length);
+this.regexReplace =  new Array (this.mtch.length);
+for (var pass = 0; pass < this.mtch.length; pass++) {
+var mlength = 3 + this.mtch[pass].length;
+if (link.indexOf ("$" + this.mtch[pass] + "=/") == ptok[pass] && (p = link.indexOf ("/=$", ptok[pass] + mlength)) > ptok[pass] + mlength) {
+if (ptok[pass + 1] < p + 3) {
+this.invalidMessage = "Token regexes cannot contain other regexes (did you terminate the $" + this.mtch[pass] + " regex with a '/=$' ?";
+return;
+}this.url_suffix[pass] = link.substring (p + 3, ptok[pass + 1]);
+this.regexReplace[pass] = link.substring (ptok[pass] + mlength, p);
+try {
+var rg = jalview.jsdev.RegExp.perlCode ("/" + this.regexReplace[pass] + "/");
+if (rg == null) {
+this.invalidMessage = "Invalid Regular Expression : '" + this.regexReplace[pass] + "'\n";
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+this.invalidMessage = "Invalid Regular Expression : '" + this.regexReplace[pass] + "'\n";
+} else {
+throw e;
+}
+}
+} else {
+this.regexReplace[pass] = null;
+if ((p = link.indexOf ("$" + this.mtch[pass] + "$")) == ptok[pass]) {
+this.url_suffix[pass] = link.substring (p + this.mtch[pass].length + 2, ptok[pass + 1]);
+} else {
+this.invalidMessage = "Warning: invalid regex structure (after '" + this.mtch[0] + "') for URL link : " + link;
+}}}
+var pass = 0;
+this.separators =  new Array (this.url_suffix.length);
+var suffices = this.url_suffix[this.url_suffix.length - 1];
+var lastsep = ",";
+while ((p = suffices.indexOf ('|')) > -1) {
+this.separators[pass] = suffices.substring (p + 1);
+if (pass == 0) {
+this.url_suffix[this.url_suffix.length - 1] = suffices.substring (0, p);
+} else {
+lastsep = (this.separators[pass - 1] = this.separators[pass - 1].substring (0, p));
+}suffices = this.separators[pass];
+pass++;
+}
+if (pass > 0) {
+lastsep = this.separators[pass - 1];
+}while (pass < this.separators.length) {
+this.separators[pass++] = lastsep;
+}
+}, "~S");
+Clazz.defineMethod (c$, "getUrl_suffix", 
+function () {
+return this.url_suffix[this.url_suffix.length - 1];
+});
+Clazz.defineMethod (c$, "getUrl_prefix", 
+function () {
+return this.url_prefix;
+});
+Clazz.defineMethod (c$, "getTarget", 
+function () {
+return this.target;
+});
+Clazz.defineMethod (c$, "getLabel", 
+function () {
+return this.label;
+});
+Clazz.defineMethod (c$, "getIDRegexReplace", 
+function () {
+return this._replaceFor (jalview.util.GroupUrlLink.tokens[0]);
+});
+Clazz.defineMethod (c$, "_replaceFor", 
+($fz = function (token) {
+for (var i = 0; i < this.mtch.length; i++) {
+if (this.segs[i] > -1 && this.mtch[i].equals (token)) {
+return this.regexReplace[i];
+}}
+return null;
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "getSeqRegexReplace", 
+function () {
+return this._replaceFor (jalview.util.GroupUrlLink.tokens[1]);
+});
+Clazz.defineMethod (c$, "getInvalidMessage", 
+function () {
+return this.invalidMessage;
+});
+Clazz.defineMethod (c$, "isValid", 
+function () {
+return this.invalidMessage == null;
+});
+Clazz.defineMethod (c$, "makeUrls", 
+function (idstrings, seqstrings, dsstring, onlyIfMatches) {
+var rstrings = this.replacementArgs (idstrings, seqstrings, dsstring);
+return this.makeUrls (rstrings, onlyIfMatches);
+}, "~A,~A,~S,~B");
+Clazz.defineMethod (c$, "replacementArgs", 
+($fz = function (idstrings, seqstrings, dsstring) {
+var rstrings =  new java.util.Hashtable ();
+rstrings.put (jalview.util.GroupUrlLink.tokens[0], idstrings);
+rstrings.put (jalview.util.GroupUrlLink.tokens[1], seqstrings);
+rstrings.put (jalview.util.GroupUrlLink.tokens[2],  Clazz.newArray (-1, [dsstring]));
+if (idstrings.length != seqstrings.length) {
+throw  new Error (jalview.util.MessageManager.getString ("error.idstring_seqstrings_only_one_per_sequence"));
+}return rstrings;
+}, $fz.isPrivate = true, $fz), "~A,~A,~S");
+Clazz.defineMethod (c$, "makeUrls", 
+function (repstrings, onlyIfMatches) {
+return this.makeUrlsIf (true, repstrings, onlyIfMatches);
+}, "java.util.Hashtable,~B");
+Clazz.defineMethod (c$, "makeUrlStubs", 
+function (ids, seqstr, string, b) {
+var rstrings = this.replacementArgs (ids, seqstr, string);
+var stubs = this.makeUrlsIf (false, rstrings, b);
+if (stubs != null) {
+return  Clazz.newArray (-1, [stubs[0], stubs[1], rstrings,  Clazz.newBooleanArray (-1, [b])]);
+}return null;
+}, "~A,~A,~S,~B");
+Clazz.defineMethod (c$, "constructFrom", 
+function (stubs) {
+var results = this.makeUrlsIf (true, stubs[2], (stubs[3])[0]);
+return (results[3])[0];
+}, "~A");
+Clazz.defineMethod (c$, "makeUrlsIf", 
+function (createFullUrl, repstrings, onlyIfMatches) {
+var pass = 0;
+var idseq =  new Array (this.mtch.length);
+var mins = 0;
+var maxs = 0;
+for (var i = 0; i < this.mtch.length; i++) {
+idseq[i] = repstrings.get (this.mtch[i]);
+if (idseq[i].length >= 1) {
+if (mins == 0 && idseq[i].length == 1) {
+mins = 1;
+}if (maxs < 2) {
+maxs = idseq[i].length;
+} else {
+if (maxs != idseq[i].length) {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.cannot_have_mixed_length_replacement_vectors",  Clazz.newArray (-1, [(this.mtch[i]), Integer.$valueOf (idseq[i].length).toString (), Integer.$valueOf (maxs).toString ()])));
+}}} else {
+throw  new Error (jalview.util.MessageManager.getString ("error.cannot_have_zero_length_vector_replacement_strings"));
+}}
+var matched =  new Array (idseq.length);
+var rgxs =  new Array (matched.length);
+for (pass = 0; pass < matched.length; pass++) {
+matched[pass] =  new StringBuffer ();
+if (this.regexReplace[pass] != null) {
+rgxs[pass] = jalview.jsdev.RegExp.perlCode ("/" + this.regexReplace[pass] + "/");
+} else {
+rgxs[pass] = null;
+}}
+var urllength = this.url_prefix.length;
+for (pass = 0; pass < matched.length; pass++) {
+urllength += this.url_suffix[pass].length;
+}
+var thismatched =  Clazz.newBooleanArray (maxs, false);
+var seqsmatched = 0;
+for (var sq = 0; sq < maxs; sq++) {
+thismatched[sq] = false;
+var thematches =  new Array (rgxs.length);
+for (pass = 0; pass < rgxs.length; pass++) {
+thematches[pass] =  new StringBuffer ();
+if (idseq[pass].length <= sq) {
+continue;
+}if (rgxs[pass] != null) {
+var rg = rgxs[pass];
+var rematchat = 0;
+while (rg.searchFrom (idseq[pass][sq], rematchat)) {
+rematchat = rg.matchedTo ();
+thismatched[sq] = new Boolean (thismatched[sq] | true).valueOf ();
+urllength += rg.charsMatched ();
+if ((urllength + 32) > jalview.util.Platform.getMaxCommandLineLength ()) {
+throw Clazz.innerTypeInstance (jalview.util.GroupUrlLink.UrlStringTooLongException, this, null, urllength);
+}if (!createFullUrl) {
+continue;
+}var ns = rg.numSubs ();
+if (ns == 0) {
+thematches[pass].append (rg.stringMatched ());
+} else {
+var subs =  new StringBuffer ();
+var s = 0;
+while (s <= ns) {
+if (s + 1 <= ns && rg.matchedToI (s) > -1 && rg.matchedToI (s + 1) > -1 && rg.matchedToI (s + 1) < rg.matchedToI (s)) {
+var r = s + 1;
+var rmtch =  new StringBuffer ();
+while (r <= ns && rg.matchedToI (r) <= rg.matchedToI (s)) {
+if (rg.matchedFromI (r) > -1) {
+rmtch.append (rg.stringMatchedI (r));
+}r++;
+}
+if (rmtch.length () > 0) {
+subs.append (rmtch);
+}s = r;
+} else {
+if (rg.matchedFromI (s) > -1) {
+subs.append (rg.stringMatchedI (s));
+}s++;
+}}
+thematches[pass].append (subs);
+}}
+} else {
+if (!onlyIfMatches) {
+thismatched[sq] = new Boolean (thismatched[sq] | true).valueOf ();
+urllength += idseq[pass][sq].length;
+if (createFullUrl) {
+thematches[pass] =  new StringBuffer (idseq[pass][sq]);
+}}}}
+if (thismatched[sq]) {
+if (createFullUrl) {
+for (pass = 0; pass < matched.length; pass++) {
+if (idseq[pass].length > 1 && matched[pass].length () > 0) {
+matched[pass].append (this.separators[pass]);
+}matched[pass].append (thematches[pass]);
+}
+}seqsmatched++;
+}}
+if (seqsmatched == 0 || (createFullUrl && matched[0].length () == 0)) {
+return null;
+}if ((urllength + 32) > jalview.util.Platform.getMaxCommandLineLength ()) {
+throw Clazz.innerTypeInstance (jalview.util.GroupUrlLink.UrlStringTooLongException, this, null, urllength);
+}if (!createFullUrl) {
+return  Clazz.newArray (-1, [ Clazz.newIntArray (-1, [seqsmatched]), thismatched]);
+}var submiturl =  new StringBuffer ();
+submiturl.append (this.url_prefix);
+for (pass = 0; pass < matched.length; pass++) {
+submiturl.append (matched[pass]);
+if (this.url_suffix[pass] != null) {
+submiturl.append (this.url_suffix[pass]);
+}}
+return  Clazz.newArray (-1, [ Clazz.newIntArray (-1, [seqsmatched]), thismatched, matched,  Clazz.newArray (-1, [submiturl.toString ()])]);
+}, "~B,java.util.Hashtable,~B");
+Clazz.defineMethod (c$, "getNumberInvolved", 
+function (urlstub) {
+return (urlstub[0])[0];
+}, "~A");
+Clazz.defineMethod (c$, "getGroupURLType", 
+function () {
+var r = 0;
+for (var pass = 0; pass < jalview.util.GroupUrlLink.tokens.length; pass++) {
+for (var i = 0; i < this.mtch.length; i++) {
+if (this.mtch[i].equals (jalview.util.GroupUrlLink.tokens[pass])) {
+r += 1 << pass;
+}}
+}
+return r;
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var result =  new StringBuffer ();
+result.append (this.label + "|" + this.url_prefix);
+var r;
+for (r = 0; r < this.url_suffix.length; r++) {
+result.append ("$");
+result.append (this.mtch[r]);
+if (this.regexReplace[r] != null) {
+result.append ("=/");
+result.append (this.regexReplace[r]);
+result.append ("/=");
+}result.append ("$");
+result.append (this.url_suffix[r]);
+}
+for (r = 0; r < this.separators.length; r++) {
+result.append ("|");
+result.append (this.separators[r]);
+}
+return result.toString ();
+});
+c$.formStrings = Clazz.defineMethod (c$, "formStrings", 
+function (seqs) {
+var idset =  Clazz.newArray (2, seqs.length, null);
+for (var i = 0; i < seqs.length; i++) {
+idset[0][i] = seqs[i].getName ();
+idset[1][i] = seqs[i].getSequenceAsString ();
+}
+return idset;
+}, "~A");
+Clazz.defineMethod (c$, "setLabel", 
+function (newlabel) {
+this.label = newlabel;
+}, "~S");
+c$.$GroupUrlLink$UrlStringTooLongException$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.urlLength = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.util.GroupUrlLink, "UrlStringTooLongException", Exception);
+Clazz.makeConstructor (c$, 
+function (a) {
+Clazz.superConstructor (this, jalview.util.GroupUrlLink.UrlStringTooLongException, []);
+this.urlLength = a;
+}, "~N");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "Generated url is estimated to be too long (" + this.urlLength + ")";
+});
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"tokens", null);
+{
+if (jalview.util.GroupUrlLink.tokens == null) {
+jalview.util.GroupUrlLink.tokens =  Clazz.newArray (-1, ["SEQUENCEIDS", "SEQUENCES", "DATASETID"]);
+}}Clazz.defineStatics (c$,
+"SEQUENCEIDS", 1,
+"SEQUENCES", 2,
+"DATASETID", 4);
+});
index 8c02e1a..d5fddbf 100644 (file)
Binary files a/bin/jalview/util/MapList.class and b/bin/jalview/util/MapList.class differ
index ff777cc..e7281ac 100644 (file)
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (["java.util.ArrayList"], "jalview.util.MapList", ["java.lang.StringBuilder", "java.util.Arrays"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.fromShifts = null;\r
-this.toShifts = null;\r
-this.fromRatio = 0;\r
-this.toRatio = 0;\r
-this.fromLowest = 0;\r
-this.fromHighest = 0;\r
-this.toLowest = 0;\r
-this.toHighest = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util, "MapList");\r
-Clazz.prepareFields (c$, function () {\r
-this.fromShifts =  new java.util.ArrayList ();\r
-this.toShifts =  new java.util.ArrayList ();\r
-});\r
-Clazz.overrideMethod (c$, "equals", \r
-function (o) {\r
-if (o == null || !(Clazz.instanceOf (o, jalview.util.MapList))) {\r
-return false;\r
-}var obj = o;\r
-if (obj === this) {\r
-return true;\r
-}if (obj.fromRatio != this.fromRatio || obj.toRatio != this.toRatio || obj.fromShifts == null || obj.toShifts == null) {\r
-return false;\r
-}return java.util.Arrays.deepEquals (this.fromShifts.toArray (), obj.fromShifts.toArray ()) && java.util.Arrays.deepEquals (this.toShifts.toArray (), obj.toShifts.toArray ());\r
-}, "~O");\r
-Clazz.defineMethod (c$, "getFromRanges", \r
-function () {\r
-return this.fromShifts;\r
-});\r
-Clazz.defineMethod (c$, "getToRanges", \r
-function () {\r
-return this.toShifts;\r
-});\r
-c$.getRanges = Clazz.defineMethod (c$, "getRanges", \r
-function (shifts) {\r
-var rnges =  Clazz.newIntArray (2 * shifts.size (), 0);\r
-var i = 0;\r
-for (var r, $r = shifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {\r
-rnges[i++] = r[0];\r
-rnges[i++] = r[1];\r
-}\r
-return rnges;\r
-}, "java.util.List");\r
-Clazz.defineMethod (c$, "getFromRatio", \r
-function () {\r
-return this.fromRatio;\r
-});\r
-Clazz.defineMethod (c$, "getToRatio", \r
-function () {\r
-return this.toRatio;\r
-});\r
-Clazz.defineMethod (c$, "getFromLowest", \r
-function () {\r
-return this.fromLowest;\r
-});\r
-Clazz.defineMethod (c$, "getFromHighest", \r
-function () {\r
-return this.fromHighest;\r
-});\r
-Clazz.defineMethod (c$, "getToLowest", \r
-function () {\r
-return this.toLowest;\r
-});\r
-Clazz.defineMethod (c$, "getToHighest", \r
-function () {\r
-return this.toHighest;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (from, to, fromRatio, toRatio) {\r
-this.fromRatio = fromRatio;\r
-this.toRatio = toRatio;\r
-this.fromLowest = from[0];\r
-this.fromHighest = from[1];\r
-for (var i = 0; i < from.length; i += 2) {\r
-this.fromLowest = Math.min (this.fromLowest, from[i]);\r
-this.fromHighest = Math.max (this.fromHighest, from[i + 1]);\r
-this.fromShifts.add ( Clazz.newIntArray (-1, [from[i], from[i + 1]]));\r
-}\r
-this.toLowest = to[0];\r
-this.toHighest = to[1];\r
-for (var i = 0; i < to.length; i += 2) {\r
-this.toLowest = Math.min (this.toLowest, to[i]);\r
-this.toHighest = Math.max (this.toHighest, to[i + 1]);\r
-this.toShifts.add ( Clazz.newIntArray (-1, [to[i], to[i + 1]]));\r
-}\r
-}, "~A,~A,~N,~N");\r
-Clazz.makeConstructor (c$, \r
-function (map) {\r
-this.fromLowest = map.fromLowest;\r
-this.fromHighest = map.fromHighest;\r
-this.toLowest = map.toLowest;\r
-this.toHighest = map.toHighest;\r
-this.fromRatio = map.fromRatio;\r
-this.toRatio = map.toRatio;\r
-if (map.fromShifts != null) {\r
-for (var r, $r = map.fromShifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {\r
-this.fromShifts.add ( Clazz.newIntArray (-1, [r[0], r[1]]));\r
-}\r
-}if (map.toShifts != null) {\r
-for (var r, $r = map.toShifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {\r
-this.toShifts.add ( Clazz.newIntArray (-1, [r[0], r[1]]));\r
-}\r
-}}, "jalview.util.MapList");\r
-Clazz.makeConstructor (c$, \r
-function (fromRange, toRange, fromRatio, toRatio) {\r
-this.fromShifts = fromRange;\r
-this.toShifts = toRange;\r
-this.fromRatio = fromRatio;\r
-this.toRatio = toRatio;\r
-this.fromLowest = 2147483647;\r
-this.fromHighest = 0;\r
-for (var range, $range = fromRange.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {\r
-this.fromLowest = Math.min (this.fromLowest, range[0]);\r
-this.fromHighest = Math.max (this.fromHighest, range[1]);\r
-}\r
-this.toLowest = 2147483647;\r
-this.toHighest = 0;\r
-for (var range, $range = toRange.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {\r
-this.toLowest = Math.min (this.toLowest, range[0]);\r
-this.toHighest = Math.max (this.toHighest, range[1]);\r
-}\r
-}, "java.util.List,java.util.List,~N,~N");\r
-Clazz.defineMethod (c$, "makeFromMap", \r
-function () {\r
-return this.posMap (this.fromShifts, this.fromRatio, this.toShifts, this.toRatio);\r
-});\r
-Clazz.defineMethod (c$, "makeToMap", \r
-function () {\r
-return this.posMap (this.toShifts, this.toRatio, this.fromShifts, this.fromRatio);\r
-});\r
-Clazz.defineMethod (c$, "posMap", \r
-($fz = function (shiftTo, ratio, shiftFrom, toRatio) {\r
-var iv = 0;\r
-var ivSize = shiftTo.size ();\r
-if (iv >= ivSize) {\r
-return null;\r
-}var intv = shiftTo.get (iv++);\r
-var from = intv[0];\r
-var to = intv[1];\r
-if (from > to) {\r
-from = intv[1];\r
-to = intv[0];\r
-}while (iv < ivSize) {\r
-intv = shiftTo.get (iv++);\r
-if (intv[0] < from) {\r
-from = intv[0];\r
-}if (intv[1] < from) {\r
-from = intv[1];\r
-}if (intv[0] > to) {\r
-to = intv[0];\r
-}if (intv[1] > to) {\r
-to = intv[1];\r
-}}\r
-var tF = 0;\r
-var tT = 0;\r
-var mp =  Clazz.newIntArray (to - from + 2, 0);\r
-for (var i = 0; i < mp.length; i++) {\r
-var m = jalview.util.MapList.shift (i + from, shiftTo, ratio, shiftFrom, toRatio);\r
-if (m != null) {\r
-if (i == 0) {\r
-tF = tT = m[0];\r
-} else {\r
-if (m[0] < tF) {\r
-tF = m[0];\r
-}if (m[0] > tT) {\r
-tT = m[0];\r
-}}}mp[i] = m;\r
-}\r
-var map =  Clazz.newArray (-1, [ Clazz.newIntArray (-1, [from, to, tF, tT]),  Clazz.newIntArray (to - from + 2, 0)]);\r
-map[0][2] = tF;\r
-map[0][3] = tT;\r
-for (var i = 0; i < mp.length; i++) {\r
-if (mp[i] != null) {\r
-map[1][i] = mp[i][0] - tF;\r
-} else {\r
-map[1][i] = -1;\r
-}}\r
-return map;\r
-}, $fz.isPrivate = true, $fz), "java.util.List,~N,java.util.List,~N");\r
-Clazz.defineMethod (c$, "shiftFrom", \r
-function (pos) {\r
-return jalview.util.MapList.shift (pos, this.fromShifts, this.fromRatio, this.toShifts, this.toRatio);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "shiftTo", \r
-function (pos) {\r
-return jalview.util.MapList.shift (pos, this.toShifts, this.toRatio, this.fromShifts, this.fromRatio);\r
-}, "~N");\r
-c$.shift = Clazz.defineMethod (c$, "shift", \r
-function (pos, shiftTo, fromRatio, shiftFrom, toRatio) {\r
-var fromCount = jalview.util.MapList.countPos (shiftTo, pos);\r
-if (fromCount == null) {\r
-return null;\r
-}var fromRemainder = (fromCount[0] - 1) % fromRatio;\r
-var toCount = 1 + ((Clazz.doubleToInt ((fromCount[0] - 1) / fromRatio)) * toRatio);\r
-var toPos = jalview.util.MapList.countToPos (shiftFrom, toCount);\r
-if (toPos == null) {\r
-return null;\r
-}return  Clazz.newIntArray (-1, [toPos[0], fromRemainder, toPos[1]]);\r
-}, "~N,java.util.List,~N,java.util.List,~N");\r
-c$.countPos = Clazz.defineMethod (c$, "countPos", \r
-function (shiftTo, pos) {\r
-var count = 0;\r
-var intv;\r
-var iv = 0;\r
-var ivSize = shiftTo.size ();\r
-while (iv < ivSize) {\r
-intv = shiftTo.get (iv++);\r
-if (intv[0] <= intv[1]) {\r
-if (pos >= intv[0] && pos <= intv[1]) {\r
-return  Clazz.newIntArray (-1, [count + pos - intv[0] + 1, 1]);\r
-} else {\r
-count += intv[1] - intv[0] + 1;\r
-}} else {\r
-if (pos >= intv[1] && pos <= intv[0]) {\r
-return  Clazz.newIntArray (-1, [count + intv[0] - pos + 1, -1]);\r
-} else {\r
-count += intv[0] - intv[1] + 1;\r
-}}}\r
-return null;\r
-}, "java.util.List,~N");\r
-c$.countToPos = Clazz.defineMethod (c$, "countToPos", \r
-function (shiftFrom, pos) {\r
-var count = 0;\r
-var diff = 0;\r
-var iv = 0;\r
-var ivSize = shiftFrom.size ();\r
-var intv =  Clazz.newIntArray (-1, [0, 0]);\r
-while (iv < ivSize) {\r
-intv = shiftFrom.get (iv++);\r
-diff = intv[1] - intv[0];\r
-if (diff >= 0) {\r
-if (pos <= count + 1 + diff) {\r
-return  Clazz.newIntArray (-1, [pos - count - 1 + intv[0], 1]);\r
-} else {\r
-count += 1 + diff;\r
-}} else {\r
-if (pos <= count + 1 - diff) {\r
-return  Clazz.newIntArray (-1, [intv[0] - (pos - count - 1), -1]);\r
-} else {\r
-count += 1 - diff;\r
-}}}\r
-return null;\r
-}, "java.util.List,~N");\r
-Clazz.defineMethod (c$, "locateInFrom", \r
-function (start, end) {\r
-var fromStart = this.shiftTo (start);\r
-var fromEnd = this.shiftTo (end);\r
-return jalview.util.MapList.getIntervals (this.fromShifts, fromStart, fromEnd, this.fromRatio);\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "locateInTo", \r
-function (start, end) {\r
-var toStart = this.shiftFrom (start);\r
-var toEnd = this.shiftFrom (end);\r
-return jalview.util.MapList.getIntervals (this.toShifts, toStart, toEnd, this.toRatio);\r
-}, "~N,~N");\r
-c$.getIntervals = Clazz.defineMethod (c$, "getIntervals", \r
-function (shiftFrom, fromStart, fromEnd, fromRatio2) {\r
-if (fromStart == null || fromEnd == null) {\r
-return null;\r
-}var startpos;\r
-var endpos;\r
-startpos = fromStart[0];\r
-endpos = fromEnd[0];\r
-var endindx = (fromRatio2 - 1);\r
-var intv = 0;\r
-var intvSize = shiftFrom.size ();\r
-var iv;\r
-var i = 0;\r
-var fs = -1;\r
-var fe_s = -1;\r
-var fe = -1;\r
-while (intv < intvSize && (fs == -1 || fe == -1)) {\r
-iv = shiftFrom.get (intv++);\r
-if (fe_s > -1) {\r
-endpos = iv[0];\r
-endindx--;\r
-}if (iv[0] <= iv[1]) {\r
-if (fs == -1 && startpos >= iv[0] && startpos <= iv[1]) {\r
-fs = i;\r
-}if (endpos >= iv[0] && endpos <= iv[1]) {\r
-if (fe_s == -1) {\r
-fe_s = i;\r
-}if (fe_s != -1) {\r
-if (endpos + endindx <= iv[1]) {\r
-fe = i;\r
-endpos = endpos + endindx;\r
-} else {\r
-endindx -= iv[1] - endpos;\r
-}}}} else {\r
-if (fs == -1 && startpos <= iv[0] && startpos >= iv[1]) {\r
-fs = i;\r
-}if (endpos <= iv[0] && endpos >= iv[1]) {\r
-if (fe_s == -1) {\r
-fe_s = i;\r
-}if (fe_s != -1) {\r
-if (endpos - endindx >= iv[1]) {\r
-fe = i;\r
-endpos = endpos - endindx;\r
-} else {\r
-endindx -= endpos - iv[1];\r
-}}}}i++;\r
-}\r
-if (fs == fe && fe == -1) {\r
-return null;\r
-}var ranges =  new java.util.ArrayList ();\r
-if (fs <= fe) {\r
-intv = fs;\r
-i = fs;\r
-iv = shiftFrom.get (intv++);\r
-iv =  Clazz.newIntArray (-1, [iv[0], iv[1]]);\r
-if (i == fs) {\r
-iv[0] = startpos;\r
-}while (i != fe) {\r
-ranges.add (iv);\r
-iv = shiftFrom.get (intv++);\r
-iv =  Clazz.newIntArray (-1, [iv[0], iv[1]]);\r
-i++;\r
-}\r
-if (i == fe) {\r
-iv[1] = endpos;\r
-}ranges.add (iv);\r
-} else {\r
-i = shiftFrom.size () - 1;\r
-while (i > fs) {\r
-i--;\r
-}\r
-iv = shiftFrom.get (i);\r
-iv =  Clazz.newIntArray (-1, [iv[1], iv[0]]);\r
-if (i == fs) {\r
-iv[0] = startpos;\r
-}while (--i != fe) {\r
-ranges.add (iv);\r
-iv = shiftFrom.get (i);\r
-iv =  Clazz.newIntArray (-1, [iv[1], iv[0]]);\r
-}\r
-if (i == fe) {\r
-iv[1] = endpos;\r
-}ranges.add (iv);\r
-}var range = null;\r
-if (ranges != null && ranges.size () > 0) {\r
-range =  Clazz.newIntArray (ranges.size () * 2, 0);\r
-intv = 0;\r
-intvSize = ranges.size ();\r
-i = 0;\r
-while (intv < intvSize) {\r
-iv = ranges.get (intv);\r
-range[i++] = iv[0];\r
-range[i++] = iv[1];\r
-ranges.set (intv++, null);\r
-}\r
-}return range;\r
-}, "java.util.List,~A,~A,~N");\r
-Clazz.defineMethod (c$, "getToPosition", \r
-function (mpos) {\r
-var mp = this.shiftTo (mpos);\r
-if (mp != null) {\r
-return mp[0];\r
-}return mpos;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getToWord", \r
-function (mpos) {\r
-var mp = this.shiftTo (mpos);\r
-if (mp != null) {\r
-return  Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.getFromRatio () - 1)]);\r
-}return null;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getMappedPosition", \r
-function (pos) {\r
-var mp = this.shiftFrom (pos);\r
-if (mp != null) {\r
-return mp[0];\r
-}return pos;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getMappedWord", \r
-function (pos) {\r
-var mp = this.shiftFrom (pos);\r
-if (mp != null) {\r
-return  Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.getToRatio () - 1)]);\r
-}return null;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getInverse", \r
-function () {\r
-return  new jalview.util.MapList (this.getToRanges (), this.getFromRanges (), this.getToRatio (), this.getFromRatio ());\r
-});\r
-Clazz.defineMethod (c$, "containsEither", \r
-function (local, map) {\r
-if (local) {\r
-return ((this.getFromLowest () >= map.getFromLowest () && this.getFromHighest () <= map.getFromHighest ()) || (this.getFromLowest () <= map.getFromLowest () && this.getFromHighest () >= map.getFromHighest ()));\r
-} else {\r
-return ((this.getToLowest () >= map.getToLowest () && this.getToHighest () <= map.getToHighest ()) || (this.getToLowest () <= map.getToLowest () && this.getToHighest () >= map.getToHighest ()));\r
-}}, "~B,jalview.util.MapList");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var sb =  new StringBuilder (64);\r
-sb.append ("From (").append (this.fromRatio).append (":").append (this.toRatio).append (") [");\r
-for (var shift, $shift = this.fromShifts.iterator (); $shift.hasNext () && ((shift = $shift.next ()) || true);) {\r
-sb.append (" ").append (java.util.Arrays.toString (shift));\r
-}\r
-sb.append (" ] To [");\r
-for (var shift, $shift = this.toShifts.iterator (); $shift.hasNext () && ((shift = $shift.next ()) || true);) {\r
-sb.append (" ").append (java.util.Arrays.toString (shift));\r
-}\r
-sb.append (" ]");\r
-return sb.toString ();\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (["java.util.ArrayList"], "jalview.util.MapList", ["java.lang.StringBuilder", "java.util.Arrays"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.fromShifts = null;
+this.toShifts = null;
+this.fromRatio = 0;
+this.toRatio = 0;
+this.fromLowest = 0;
+this.fromHighest = 0;
+this.toLowest = 0;
+this.toHighest = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.util, "MapList");
+Clazz.prepareFields (c$, function () {
+this.fromShifts =  new java.util.ArrayList ();
+this.toShifts =  new java.util.ArrayList ();
+});
+Clazz.overrideMethod (c$, "equals", 
+function (o) {
+if (o == null || !(Clazz.instanceOf (o, jalview.util.MapList))) {
+return false;
+}var obj = o;
+if (obj === this) {
+return true;
+}if (obj.fromRatio != this.fromRatio || obj.toRatio != this.toRatio || obj.fromShifts == null || obj.toShifts == null) {
+return false;
+}return java.util.Arrays.deepEquals (this.fromShifts.toArray (), obj.fromShifts.toArray ()) && java.util.Arrays.deepEquals (this.toShifts.toArray (), obj.toShifts.toArray ());
+}, "~O");
+Clazz.defineMethod (c$, "getFromRanges", 
+function () {
+return this.fromShifts;
+});
+Clazz.defineMethod (c$, "getToRanges", 
+function () {
+return this.toShifts;
+});
+c$.getRanges = Clazz.defineMethod (c$, "getRanges", 
+function (shifts) {
+var rnges =  Clazz.newIntArray (2 * shifts.size (), 0);
+var i = 0;
+for (var r, $r = shifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
+rnges[i++] = r[0];
+rnges[i++] = r[1];
+}
+return rnges;
+}, "java.util.List");
+Clazz.defineMethod (c$, "getFromRatio", 
+function () {
+return this.fromRatio;
+});
+Clazz.defineMethod (c$, "getToRatio", 
+function () {
+return this.toRatio;
+});
+Clazz.defineMethod (c$, "getFromLowest", 
+function () {
+return this.fromLowest;
+});
+Clazz.defineMethod (c$, "getFromHighest", 
+function () {
+return this.fromHighest;
+});
+Clazz.defineMethod (c$, "getToLowest", 
+function () {
+return this.toLowest;
+});
+Clazz.defineMethod (c$, "getToHighest", 
+function () {
+return this.toHighest;
+});
+Clazz.makeConstructor (c$, 
+function (from, to, fromRatio, toRatio) {
+this.fromRatio = fromRatio;
+this.toRatio = toRatio;
+this.fromLowest = from[0];
+this.fromHighest = from[1];
+for (var i = 0; i < from.length; i += 2) {
+this.fromLowest = Math.min (this.fromLowest, from[i]);
+this.fromHighest = Math.max (this.fromHighest, from[i + 1]);
+this.fromShifts.add ( Clazz.newIntArray (-1, [from[i], from[i + 1]]));
+}
+this.toLowest = to[0];
+this.toHighest = to[1];
+for (var i = 0; i < to.length; i += 2) {
+this.toLowest = Math.min (this.toLowest, to[i]);
+this.toHighest = Math.max (this.toHighest, to[i + 1]);
+this.toShifts.add ( Clazz.newIntArray (-1, [to[i], to[i + 1]]));
+}
+}, "~A,~A,~N,~N");
+Clazz.makeConstructor (c$, 
+function (map) {
+this.fromLowest = map.fromLowest;
+this.fromHighest = map.fromHighest;
+this.toLowest = map.toLowest;
+this.toHighest = map.toHighest;
+this.fromRatio = map.fromRatio;
+this.toRatio = map.toRatio;
+if (map.fromShifts != null) {
+for (var r, $r = map.fromShifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
+this.fromShifts.add ( Clazz.newIntArray (-1, [r[0], r[1]]));
+}
+}if (map.toShifts != null) {
+for (var r, $r = map.toShifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
+this.toShifts.add ( Clazz.newIntArray (-1, [r[0], r[1]]));
+}
+}}, "jalview.util.MapList");
+Clazz.makeConstructor (c$, 
+function (fromRange, toRange, fromRatio, toRatio) {
+this.fromShifts = fromRange;
+this.toShifts = toRange;
+this.fromRatio = fromRatio;
+this.toRatio = toRatio;
+this.fromLowest = 2147483647;
+this.fromHighest = 0;
+for (var range, $range = fromRange.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {
+this.fromLowest = Math.min (this.fromLowest, range[0]);
+this.fromHighest = Math.max (this.fromHighest, range[1]);
+}
+this.toLowest = 2147483647;
+this.toHighest = 0;
+for (var range, $range = toRange.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {
+this.toLowest = Math.min (this.toLowest, range[0]);
+this.toHighest = Math.max (this.toHighest, range[1]);
+}
+}, "java.util.List,java.util.List,~N,~N");
+Clazz.defineMethod (c$, "makeFromMap", 
+function () {
+return this.posMap (this.fromShifts, this.fromRatio, this.toShifts, this.toRatio);
+});
+Clazz.defineMethod (c$, "makeToMap", 
+function () {
+return this.posMap (this.toShifts, this.toRatio, this.fromShifts, this.fromRatio);
+});
+Clazz.defineMethod (c$, "posMap", 
+($fz = function (shiftTo, ratio, shiftFrom, toRatio) {
+var iv = 0;
+var ivSize = shiftTo.size ();
+if (iv >= ivSize) {
+return null;
+}var intv = shiftTo.get (iv++);
+var from = intv[0];
+var to = intv[1];
+if (from > to) {
+from = intv[1];
+to = intv[0];
+}while (iv < ivSize) {
+intv = shiftTo.get (iv++);
+if (intv[0] < from) {
+from = intv[0];
+}if (intv[1] < from) {
+from = intv[1];
+}if (intv[0] > to) {
+to = intv[0];
+}if (intv[1] > to) {
+to = intv[1];
+}}
+var tF = 0;
+var tT = 0;
+var mp =  Clazz.newIntArray (to - from + 2, 0);
+for (var i = 0; i < mp.length; i++) {
+var m = jalview.util.MapList.shift (i + from, shiftTo, ratio, shiftFrom, toRatio);
+if (m != null) {
+if (i == 0) {
+tF = tT = m[0];
+} else {
+if (m[0] < tF) {
+tF = m[0];
+}if (m[0] > tT) {
+tT = m[0];
+}}}mp[i] = m;
+}
+var map =  Clazz.newArray (-1, [ Clazz.newIntArray (-1, [from, to, tF, tT]),  Clazz.newIntArray (to - from + 2, 0)]);
+map[0][2] = tF;
+map[0][3] = tT;
+for (var i = 0; i < mp.length; i++) {
+if (mp[i] != null) {
+map[1][i] = mp[i][0] - tF;
+} else {
+map[1][i] = -1;
+}}
+return map;
+}, $fz.isPrivate = true, $fz), "java.util.List,~N,java.util.List,~N");
+Clazz.defineMethod (c$, "shiftFrom", 
+function (pos) {
+return jalview.util.MapList.shift (pos, this.fromShifts, this.fromRatio, this.toShifts, this.toRatio);
+}, "~N");
+Clazz.defineMethod (c$, "shiftTo", 
+function (pos) {
+return jalview.util.MapList.shift (pos, this.toShifts, this.toRatio, this.fromShifts, this.fromRatio);
+}, "~N");
+c$.shift = Clazz.defineMethod (c$, "shift", 
+function (pos, shiftTo, fromRatio, shiftFrom, toRatio) {
+var fromCount = jalview.util.MapList.countPos (shiftTo, pos);
+if (fromCount == null) {
+return null;
+}var fromRemainder = (fromCount[0] - 1) % fromRatio;
+var toCount = 1 + ((Clazz.doubleToInt ((fromCount[0] - 1) / fromRatio)) * toRatio);
+var toPos = jalview.util.MapList.countToPos (shiftFrom, toCount);
+if (toPos == null) {
+return null;
+}return  Clazz.newIntArray (-1, [toPos[0], fromRemainder, toPos[1]]);
+}, "~N,java.util.List,~N,java.util.List,~N");
+c$.countPos = Clazz.defineMethod (c$, "countPos", 
+function (shiftTo, pos) {
+var count = 0;
+var intv;
+var iv = 0;
+var ivSize = shiftTo.size ();
+while (iv < ivSize) {
+intv = shiftTo.get (iv++);
+if (intv[0] <= intv[1]) {
+if (pos >= intv[0] && pos <= intv[1]) {
+return  Clazz.newIntArray (-1, [count + pos - intv[0] + 1, 1]);
+} else {
+count += intv[1] - intv[0] + 1;
+}} else {
+if (pos >= intv[1] && pos <= intv[0]) {
+return  Clazz.newIntArray (-1, [count + intv[0] - pos + 1, -1]);
+} else {
+count += intv[0] - intv[1] + 1;
+}}}
+return null;
+}, "java.util.List,~N");
+c$.countToPos = Clazz.defineMethod (c$, "countToPos", 
+function (shiftFrom, pos) {
+var count = 0;
+var diff = 0;
+var iv = 0;
+var ivSize = shiftFrom.size ();
+var intv =  Clazz.newIntArray (-1, [0, 0]);
+while (iv < ivSize) {
+intv = shiftFrom.get (iv++);
+diff = intv[1] - intv[0];
+if (diff >= 0) {
+if (pos <= count + 1 + diff) {
+return  Clazz.newIntArray (-1, [pos - count - 1 + intv[0], 1]);
+} else {
+count += 1 + diff;
+}} else {
+if (pos <= count + 1 - diff) {
+return  Clazz.newIntArray (-1, [intv[0] - (pos - count - 1), -1]);
+} else {
+count += 1 - diff;
+}}}
+return null;
+}, "java.util.List,~N");
+Clazz.defineMethod (c$, "locateInFrom", 
+function (start, end) {
+var fromStart = this.shiftTo (start);
+var fromEnd = this.shiftTo (end);
+return jalview.util.MapList.getIntervals (this.fromShifts, fromStart, fromEnd, this.fromRatio);
+}, "~N,~N");
+Clazz.defineMethod (c$, "locateInTo", 
+function (start, end) {
+var toStart = this.shiftFrom (start);
+var toEnd = this.shiftFrom (end);
+return jalview.util.MapList.getIntervals (this.toShifts, toStart, toEnd, this.toRatio);
+}, "~N,~N");
+c$.getIntervals = Clazz.defineMethod (c$, "getIntervals", 
+function (shiftFrom, fromStart, fromEnd, fromRatio2) {
+if (fromStart == null || fromEnd == null) {
+return null;
+}var startpos;
+var endpos;
+startpos = fromStart[0];
+endpos = fromEnd[0];
+var endindx = (fromRatio2 - 1);
+var intv = 0;
+var intvSize = shiftFrom.size ();
+var iv;
+var i = 0;
+var fs = -1;
+var fe_s = -1;
+var fe = -1;
+while (intv < intvSize && (fs == -1 || fe == -1)) {
+iv = shiftFrom.get (intv++);
+if (fe_s > -1) {
+endpos = iv[0];
+endindx--;
+}if (iv[0] <= iv[1]) {
+if (fs == -1 && startpos >= iv[0] && startpos <= iv[1]) {
+fs = i;
+}if (endpos >= iv[0] && endpos <= iv[1]) {
+if (fe_s == -1) {
+fe_s = i;
+}if (fe_s != -1) {
+if (endpos + endindx <= iv[1]) {
+fe = i;
+endpos = endpos + endindx;
+} else {
+endindx -= iv[1] - endpos;
+}}}} else {
+if (fs == -1 && startpos <= iv[0] && startpos >= iv[1]) {
+fs = i;
+}if (endpos <= iv[0] && endpos >= iv[1]) {
+if (fe_s == -1) {
+fe_s = i;
+}if (fe_s != -1) {
+if (endpos - endindx >= iv[1]) {
+fe = i;
+endpos = endpos - endindx;
+} else {
+endindx -= endpos - iv[1];
+}}}}i++;
+}
+if (fs == fe && fe == -1) {
+return null;
+}var ranges =  new java.util.ArrayList ();
+if (fs <= fe) {
+intv = fs;
+i = fs;
+iv = shiftFrom.get (intv++);
+iv =  Clazz.newIntArray (-1, [iv[0], iv[1]]);
+if (i == fs) {
+iv[0] = startpos;
+}while (i != fe) {
+ranges.add (iv);
+iv = shiftFrom.get (intv++);
+iv =  Clazz.newIntArray (-1, [iv[0], iv[1]]);
+i++;
+}
+if (i == fe) {
+iv[1] = endpos;
+}ranges.add (iv);
+} else {
+i = shiftFrom.size () - 1;
+while (i > fs) {
+i--;
+}
+iv = shiftFrom.get (i);
+iv =  Clazz.newIntArray (-1, [iv[1], iv[0]]);
+if (i == fs) {
+iv[0] = startpos;
+}while (--i != fe) {
+ranges.add (iv);
+iv = shiftFrom.get (i);
+iv =  Clazz.newIntArray (-1, [iv[1], iv[0]]);
+}
+if (i == fe) {
+iv[1] = endpos;
+}ranges.add (iv);
+}var range = null;
+if (ranges != null && ranges.size () > 0) {
+range =  Clazz.newIntArray (ranges.size () * 2, 0);
+intv = 0;
+intvSize = ranges.size ();
+i = 0;
+while (intv < intvSize) {
+iv = ranges.get (intv);
+range[i++] = iv[0];
+range[i++] = iv[1];
+ranges.set (intv++, null);
+}
+}return range;
+}, "java.util.List,~A,~A,~N");
+Clazz.defineMethod (c$, "getToPosition", 
+function (mpos) {
+var mp = this.shiftTo (mpos);
+if (mp != null) {
+return mp[0];
+}return mpos;
+}, "~N");
+Clazz.defineMethod (c$, "getToWord", 
+function (mpos) {
+var mp = this.shiftTo (mpos);
+if (mp != null) {
+return  Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.getFromRatio () - 1)]);
+}return null;
+}, "~N");
+Clazz.defineMethod (c$, "getMappedPosition", 
+function (pos) {
+var mp = this.shiftFrom (pos);
+if (mp != null) {
+return mp[0];
+}return pos;
+}, "~N");
+Clazz.defineMethod (c$, "getMappedWord", 
+function (pos) {
+var mp = this.shiftFrom (pos);
+if (mp != null) {
+return  Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.getToRatio () - 1)]);
+}return null;
+}, "~N");
+Clazz.defineMethod (c$, "getInverse", 
+function () {
+return  new jalview.util.MapList (this.getToRanges (), this.getFromRanges (), this.getToRatio (), this.getFromRatio ());
+});
+Clazz.defineMethod (c$, "containsEither", 
+function (local, map) {
+if (local) {
+return ((this.getFromLowest () >= map.getFromLowest () && this.getFromHighest () <= map.getFromHighest ()) || (this.getFromLowest () <= map.getFromLowest () && this.getFromHighest () >= map.getFromHighest ()));
+} else {
+return ((this.getToLowest () >= map.getToLowest () && this.getToHighest () <= map.getToHighest ()) || (this.getToLowest () <= map.getToLowest () && this.getToHighest () >= map.getToHighest ()));
+}}, "~B,jalview.util.MapList");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var sb =  new StringBuilder (64);
+sb.append ("From (").append (this.fromRatio).append (":").append (this.toRatio).append (") [");
+for (var shift, $shift = this.fromShifts.iterator (); $shift.hasNext () && ((shift = $shift.next ()) || true);) {
+sb.append (" ").append (java.util.Arrays.toString (shift));
+}
+sb.append (" ] To [");
+for (var shift, $shift = this.toShifts.iterator (); $shift.hasNext () && ((shift = $shift.next ()) || true);) {
+sb.append (" ").append (java.util.Arrays.toString (shift));
+}
+sb.append (" ]");
+return sb.toString ();
+});
+});
index e5f76b9..487e30d 100644 (file)
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (null, "jalview.util.MappingUtils", ["jalview.analysis.AlignmentSorter", "jalview.commands.EditCommand", "$.OrderCommand", "jalview.datamodel.AlignmentOrder", "$.ColumnSelection", "$.SearchResults", "$.Sequence", "$.SequenceGroup", "jalview.util.Comparison", "$.StringUtils", "java.util.ArrayList", "$.Collections", "$.HashMap"], function () {\r
-c$ = Clazz.declareType (jalview.util, "MappingUtils");\r
-c$.mapCutOrPaste = Clazz.defineMethod (c$, "mapCutOrPaste", \r
-function (edit, undo, targetSeqs, result, mappings) {\r
-var action = edit.getAction ();\r
-if (undo) {\r
-action = action.getUndoAction ();\r
-}System.err.println ("MappingUtils.mapCutOrPaste not yet implemented");\r
-}, "jalview.commands.EditCommand.Edit,~B,java.util.List,jalview.commands.EditCommand,java.util.Set");\r
-c$.mapEditCommand = Clazz.defineMethod (c$, "mapEditCommand", \r
-function (command, undo, mapTo, gapChar, mappings) {\r
-if (!mapTo.isNucleotide ()) {\r
-return null;\r
-}var targetCopies =  new java.util.HashMap ();\r
-for (var seq, $seq = mapTo.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-var ds = seq.getDatasetSequence ();\r
-if (ds != null) {\r
-var copy =  new jalview.datamodel.Sequence (seq);\r
-copy.setDatasetSequence (ds);\r
-targetCopies.put (ds, copy);\r
-}}\r
-var originalSequences = command.priorState (undo);\r
-var result =  new jalview.commands.EditCommand ();\r
-var edits = command.getEditIterator (!undo);\r
-while (edits.hasNext ()) {\r
-var edit = edits.next ();\r
-if (edit.getAction () === jalview.commands.EditCommand.Action.CUT || edit.getAction () === jalview.commands.EditCommand.Action.PASTE) {\r
-jalview.util.MappingUtils.mapCutOrPaste (edit, undo, mapTo.getSequences (), result, mappings);\r
-} else if (edit.getAction () === jalview.commands.EditCommand.Action.INSERT_GAP || edit.getAction () === jalview.commands.EditCommand.Action.DELETE_GAP) {\r
-jalview.util.MappingUtils.mapInsertOrDelete (edit, undo, originalSequences, mapTo.getSequences (), targetCopies, gapChar, result, mappings);\r
-}}\r
-return result.getSize () > 0 ? result : null;\r
-}, "jalview.commands.EditCommand,~B,jalview.datamodel.AlignmentI,~S,java.util.Set");\r
-c$.mapInsertOrDelete = Clazz.defineMethod (c$, "mapInsertOrDelete", \r
-function (edit, undo, originalSequences, targetSeqs, targetCopies, gapChar, result, mappings) {\r
-var action = edit.getAction ();\r
-if (undo) {\r
-action = action.getUndoAction ();\r
-}var count = edit.getNumber ();\r
-var editPos = edit.getPosition ();\r
-for (var seq, $seq = 0, $$seq = edit.getSequences (); $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {\r
-var ds = seq.getDatasetSequence ();\r
-if (ds == null) {\r
-continue;\r
-}var actedOn = originalSequences.get (ds);\r
-var seqpos = actedOn.findPosition (editPos);\r
-var sr = jalview.util.MappingUtils.buildSearchResults (seq, seqpos, mappings);\r
-if (!sr.isEmpty ()) {\r
-for (var targetSeq, $targetSeq = targetSeqs.iterator (); $targetSeq.hasNext () && ((targetSeq = $targetSeq.next ()) || true);) {\r
-ds = targetSeq.getDatasetSequence ();\r
-if (ds == null) {\r
-continue;\r
-}var copyTarget = targetCopies.get (ds);\r
-var match = sr.getResults (copyTarget, 0, copyTarget.getLength ());\r
-if (match != null) {\r
-var ratio = 3;\r
-var mappedCount = count * 3;\r
-var mappedEditPos = action === jalview.commands.EditCommand.Action.DELETE_GAP ? match[0] - mappedCount : match[0];\r
-var e = resultClazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, action,  Clazz.newArray (-1, [targetSeq]), mappedEditPos, mappedCount, gapChar);\r
-result.addEdit (e);\r
-if (action === jalview.commands.EditCommand.Action.INSERT_GAP) {\r
-copyTarget.setSequence ( String.instantialize (jalview.util.StringUtils.insertCharAt (copyTarget.getSequence (), mappedEditPos, mappedCount, gapChar)));\r
-} else if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {\r
-copyTarget.setSequence ( String.instantialize (jalview.util.StringUtils.deleteChars (copyTarget.getSequence (), mappedEditPos, mappedEditPos + mappedCount)));\r
-}}}\r
-}if (action === jalview.commands.EditCommand.Action.INSERT_GAP) {\r
-actedOn.setSequence ( String.instantialize (jalview.util.StringUtils.insertCharAt (actedOn.getSequence (), editPos, count, gapChar)));\r
-} else if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {\r
-actedOn.setSequence ( String.instantialize (jalview.util.StringUtils.deleteChars (actedOn.getSequence (), editPos, editPos + count)));\r
-}}\r
-}, "jalview.commands.EditCommand.Edit,~B,java.util.Map,java.util.List,java.util.Map,~S,jalview.commands.EditCommand,java.util.Set");\r
-c$.buildSearchResults = Clazz.defineMethod (c$, "buildSearchResults", \r
-function (seq, index, seqmappings) {\r
-var results =  new jalview.datamodel.SearchResults ();\r
-jalview.util.MappingUtils.addSearchResults (results, seq, index, seqmappings);\r
-return results;\r
-}, "jalview.datamodel.SequenceI,~N,java.util.Set");\r
-c$.addSearchResults = Clazz.defineMethod (c$, "addSearchResults", \r
-function (results, seq, index, seqmappings) {\r
-if (index >= seq.getStart () && index <= seq.getEnd ()) {\r
-for (var acf, $acf = seqmappings.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {\r
-acf.markMappedRegion (seq, index, results);\r
-}\r
-}}, "jalview.datamodel.SearchResults,jalview.datamodel.SequenceI,~N,java.util.Set");\r
-c$.mapSequenceGroup = Clazz.defineMethod (c$, "mapSequenceGroup", \r
-function (sg, mapFrom, mapTo) {\r
-var targetIsNucleotide = mapTo.isNucleotide ();\r
-var protein = targetIsNucleotide ? mapFrom : mapTo;\r
-var codonFrames = protein.getAlignment ().getCodonFrames ();\r
-var mappedGroup =  new jalview.datamodel.SequenceGroup (sg);\r
-mappedGroup.cs = mapTo.getGlobalColourScheme ();\r
-mappedGroup.clear ();\r
-var minStartCol = -1;\r
-var maxEndCol = -1;\r
-var selectionStartRes = sg.getStartRes ();\r
-var selectionEndRes = sg.getEndRes ();\r
-for (var selected, $selected = sg.getSequences ().iterator (); $selected.hasNext () && ((selected = $selected.next ()) || true);) {\r
-var firstUngappedPos = selectionStartRes;\r
-while (firstUngappedPos <= selectionEndRes && jalview.util.Comparison.isGap (selected.getCharAt (firstUngappedPos))) {\r
-firstUngappedPos++;\r
-}\r
-if (firstUngappedPos > selectionEndRes) {\r
-continue;\r
-}var lastUngappedPos = selectionEndRes;\r
-while (lastUngappedPos >= selectionStartRes && jalview.util.Comparison.isGap (selected.getCharAt (lastUngappedPos))) {\r
-lastUngappedPos--;\r
-}\r
-var startResiduePos = selected.findPosition (firstUngappedPos);\r
-var endResiduePos = selected.findPosition (lastUngappedPos);\r
-for (var acf, $acf = codonFrames.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {\r
-var mappedSequence = targetIsNucleotide ? acf.getDnaForAaSeq (selected) : acf.getAaForDnaSeq (selected);\r
-if (mappedSequence != null) {\r
-for (var seq, $seq = mapTo.getAlignment ().getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-var mappedStartResidue = 0;\r
-var mappedEndResidue = 0;\r
-if (seq.getDatasetSequence () === mappedSequence) {\r
-var sr = jalview.util.MappingUtils.buildSearchResults (selected, startResiduePos, java.util.Collections.singleton (acf));\r
-for (var m, $m = sr.getResults ().iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {\r
-mappedStartResidue = m.getStart ();\r
-mappedEndResidue = m.getEnd ();\r
-}\r
-sr = jalview.util.MappingUtils.buildSearchResults (selected, endResiduePos, java.util.Collections.singleton (acf));\r
-for (var m, $m = sr.getResults ().iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {\r
-mappedStartResidue = Math.min (mappedStartResidue, m.getStart ());\r
-mappedEndResidue = Math.max (mappedEndResidue, m.getEnd ());\r
-}\r
-var mappedStartCol = seq.findIndex (mappedStartResidue) - 1;\r
-minStartCol = minStartCol == -1 ? mappedStartCol : Math.min (minStartCol, mappedStartCol);\r
-var mappedEndCol = seq.findIndex (mappedEndResidue) - 1;\r
-maxEndCol = maxEndCol == -1 ? mappedEndCol : Math.max (maxEndCol, mappedEndCol);\r
-mappedGroup.addSequence (seq, false);\r
-break;\r
-}}\r
-}}\r
-}\r
-mappedGroup.setStartRes (minStartCol < 0 ? 0 : minStartCol);\r
-mappedGroup.setEndRes (maxEndCol < 0 ? 0 : maxEndCol);\r
-return mappedGroup;\r
-}, "jalview.datamodel.SequenceGroup,jalview.api.AlignViewportI,jalview.api.AlignViewportI");\r
-c$.mapOrderCommand = Clazz.defineMethod (c$, "mapOrderCommand", \r
-function (command, undo, mapTo, mappings) {\r
-var sortOrder = command.getSequenceOrder (undo);\r
-var mappedOrder =  new java.util.ArrayList ();\r
-var j = 0;\r
-var mappingToNucleotide = mapTo.isNucleotide ();\r
-for (var seq, $seq = 0, $$seq = sortOrder; $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {\r
-for (var acf, $acf = mappings.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {\r
-var mappedSeq = mappingToNucleotide ? acf.getDnaForAaSeq (seq) : acf.getAaForDnaSeq (seq);\r
-if (mappedSeq != null) {\r
-for (var seq2, $seq2 = mapTo.getSequences ().iterator (); $seq2.hasNext () && ((seq2 = $seq2.next ()) || true);) {\r
-if (seq2.getDatasetSequence () === mappedSeq) {\r
-mappedOrder.add (seq2);\r
-j++;\r
-break;\r
-}}\r
-}}\r
-}\r
-if (j == 0) {\r
-return null;\r
-}if (j < mapTo.getHeight ()) {\r
-for (var seq, $seq = mapTo.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-if (!mappedOrder.contains (seq)) {\r
-mappedOrder.add (seq);\r
-}}\r
-}var mappedOrderArray = mappedOrder.toArray ( new Array (mappedOrder.size ()));\r
-var oldOrder = mapTo.getSequencesArray ();\r
-jalview.analysis.AlignmentSorter.sortBy (mapTo,  new jalview.datamodel.AlignmentOrder (mappedOrderArray));\r
-var result =  new jalview.commands.OrderCommand (command.getDescription (), oldOrder, mapTo);\r
-return result;\r
-}, "jalview.commands.OrderCommand,~B,jalview.datamodel.AlignmentI,java.util.Set");\r
-c$.mapColumnSelection = Clazz.defineMethod (c$, "mapColumnSelection", \r
-function (colsel, mapFrom, mapTo) {\r
-var targetIsNucleotide = mapTo.isNucleotide ();\r
-var protein = targetIsNucleotide ? mapFrom : mapTo;\r
-var codonFrames = protein.getAlignment ().getCodonFrames ();\r
-var mappedColumns =  new jalview.datamodel.ColumnSelection ();\r
-if (colsel == null) {\r
-return mappedColumns;\r
-}var fromGapChar = mapFrom.getAlignment ().getGapCharacter ();\r
-for (var obj, $obj = colsel.getSelected ().iterator (); $obj.hasNext () && ((obj = $obj.next ()) || true);) {\r
-var col = (obj).intValue ();\r
-var mappedToMin = 2147483647;\r
-var mappedToMax = -2147483648;\r
-for (var fromSeq, $fromSeq = mapFrom.getAlignment ().getSequences ().iterator (); $fromSeq.hasNext () && ((fromSeq = $fromSeq.next ()) || true);) {\r
-if (fromSeq.getCharAt (col) == fromGapChar) {\r
-continue;\r
-}var residuePos = fromSeq.findPosition (col);\r
-var sr = jalview.util.MappingUtils.buildSearchResults (fromSeq, residuePos, codonFrames);\r
-for (var m, $m = sr.getResults ().iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {\r
-var mappedStartResidue = m.getStart ();\r
-var mappedEndResidue = m.getEnd ();\r
-var mappedSeq = m.getSequence ();\r
-for (var toSeq, $toSeq = mapTo.getAlignment ().getSequences ().iterator (); $toSeq.hasNext () && ((toSeq = $toSeq.next ()) || true);) {\r
-if (toSeq.getDatasetSequence () === mappedSeq) {\r
-var mappedStartCol = toSeq.findIndex (mappedStartResidue);\r
-var mappedEndCol = toSeq.findIndex (mappedEndResidue);\r
-mappedToMin = Math.min (mappedToMin, mappedStartCol);\r
-mappedToMax = Math.max (mappedToMax, mappedEndCol);\r
-break;\r
-}}\r
-}\r
-}\r
-for (var i = mappedToMin; i <= mappedToMax; i++) {\r
-mappedColumns.addElement (i - 1);\r
-}\r
-}\r
-return mappedColumns;\r
-}, "jalview.datamodel.ColumnSelection,jalview.api.AlignViewportI,jalview.api.AlignViewportI");\r
-c$.findCodonFor = Clazz.defineMethod (c$, "findCodonFor", \r
-function (seq, col, mappings) {\r
-var dsPos = seq.findPosition (col);\r
-for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {\r
-if (mapping.involvesSequence (seq)) {\r
-return mapping.getMappedCodon (seq.getDatasetSequence (), dsPos);\r
-}}\r
-return null;\r
-}, "jalview.datamodel.SequenceI,~N,java.util.Set");\r
-c$.flattenRanges = Clazz.defineMethod (c$, "flattenRanges", \r
-function (ranges) {\r
-var count = 0;\r
-for (var i = 0; i < ranges.length - 1; i += 2) {\r
-count += ranges[i + 1] - ranges[i] + 1;\r
-}\r
-var result =  Clazz.newIntArray (count, 0);\r
-var k = 0;\r
-for (var i = 0; i < ranges.length - 1; i += 2) {\r
-for (var j = ranges[i]; j <= ranges[i + 1]; j++) {\r
-result[k++] = j;\r
-}\r
-}\r
-return result;\r
-}, "~A");\r
-c$.findMappingsForSequence = Clazz.defineMethod (c$, "findMappingsForSequence", \r
-function (sequence, mappings) {\r
-var result =  new java.util.ArrayList ();\r
-if (sequence == null || mappings == null) {\r
-return result;\r
-}for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {\r
-if (mapping.involvesSequence (sequence)) {\r
-result.add (mapping);\r
-}}\r
-return result;\r
-}, "jalview.datamodel.SequenceI,java.util.Set");\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (null, "jalview.util.MappingUtils", ["jalview.analysis.AlignmentSorter", "jalview.commands.EditCommand", "$.OrderCommand", "jalview.datamodel.AlignmentOrder", "$.ColumnSelection", "$.SearchResults", "$.Sequence", "$.SequenceGroup", "jalview.util.Comparison", "$.StringUtils", "java.util.ArrayList", "$.Collections", "$.HashMap"], function () {
+c$ = Clazz.declareType (jalview.util, "MappingUtils");
+c$.mapCutOrPaste = Clazz.defineMethod (c$, "mapCutOrPaste", 
+function (edit, undo, targetSeqs, result, mappings) {
+var action = edit.getAction ();
+if (undo) {
+action = action.getUndoAction ();
+}System.err.println ("MappingUtils.mapCutOrPaste not yet implemented");
+}, "jalview.commands.EditCommand.Edit,~B,java.util.List,jalview.commands.EditCommand,java.util.Set");
+c$.mapEditCommand = Clazz.defineMethod (c$, "mapEditCommand", 
+function (command, undo, mapTo, gapChar, mappings) {
+if (!mapTo.isNucleotide ()) {
+return null;
+}var targetCopies =  new java.util.HashMap ();
+for (var seq, $seq = mapTo.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+var ds = seq.getDatasetSequence ();
+if (ds != null) {
+var copy =  new jalview.datamodel.Sequence (seq);
+copy.setDatasetSequence (ds);
+targetCopies.put (ds, copy);
+}}
+var originalSequences = command.priorState (undo);
+var result =  new jalview.commands.EditCommand ();
+var edits = command.getEditIterator (!undo);
+while (edits.hasNext ()) {
+var edit = edits.next ();
+if (edit.getAction () === jalview.commands.EditCommand.Action.CUT || edit.getAction () === jalview.commands.EditCommand.Action.PASTE) {
+jalview.util.MappingUtils.mapCutOrPaste (edit, undo, mapTo.getSequences (), result, mappings);
+} else if (edit.getAction () === jalview.commands.EditCommand.Action.INSERT_GAP || edit.getAction () === jalview.commands.EditCommand.Action.DELETE_GAP) {
+jalview.util.MappingUtils.mapInsertOrDelete (edit, undo, originalSequences, mapTo.getSequences (), targetCopies, gapChar, result, mappings);
+}}
+return result.getSize () > 0 ? result : null;
+}, "jalview.commands.EditCommand,~B,jalview.datamodel.AlignmentI,~S,java.util.Set");
+c$.mapInsertOrDelete = Clazz.defineMethod (c$, "mapInsertOrDelete", 
+function (edit, undo, originalSequences, targetSeqs, targetCopies, gapChar, result, mappings) {
+var action = edit.getAction ();
+if (undo) {
+action = action.getUndoAction ();
+}var count = edit.getNumber ();
+var editPos = edit.getPosition ();
+for (var seq, $seq = 0, $$seq = edit.getSequences (); $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
+var ds = seq.getDatasetSequence ();
+if (ds == null) {
+continue;
+}var actedOn = originalSequences.get (ds);
+var seqpos = actedOn.findPosition (editPos);
+var sr = jalview.util.MappingUtils.buildSearchResults (seq, seqpos, mappings);
+if (!sr.isEmpty ()) {
+for (var targetSeq, $targetSeq = targetSeqs.iterator (); $targetSeq.hasNext () && ((targetSeq = $targetSeq.next ()) || true);) {
+ds = targetSeq.getDatasetSequence ();
+if (ds == null) {
+continue;
+}var copyTarget = targetCopies.get (ds);
+var match = sr.getResults (copyTarget, 0, copyTarget.getLength ());
+if (match != null) {
+var ratio = 3;
+var mappedCount = count * 3;
+var mappedEditPos = action === jalview.commands.EditCommand.Action.DELETE_GAP ? match[0] - mappedCount : match[0];
+var e = resultClazz.innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, action,  Clazz.newArray (-1, [targetSeq]), mappedEditPos, mappedCount, gapChar);
+result.addEdit (e);
+if (action === jalview.commands.EditCommand.Action.INSERT_GAP) {
+copyTarget.setSequence ( String.instantialize (jalview.util.StringUtils.insertCharAt (copyTarget.getSequence (), mappedEditPos, mappedCount, gapChar)));
+} else if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {
+copyTarget.setSequence ( String.instantialize (jalview.util.StringUtils.deleteChars (copyTarget.getSequence (), mappedEditPos, mappedEditPos + mappedCount)));
+}}}
+}if (action === jalview.commands.EditCommand.Action.INSERT_GAP) {
+actedOn.setSequence ( String.instantialize (jalview.util.StringUtils.insertCharAt (actedOn.getSequence (), editPos, count, gapChar)));
+} else if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {
+actedOn.setSequence ( String.instantialize (jalview.util.StringUtils.deleteChars (actedOn.getSequence (), editPos, editPos + count)));
+}}
+}, "jalview.commands.EditCommand.Edit,~B,java.util.Map,java.util.List,java.util.Map,~S,jalview.commands.EditCommand,java.util.Set");
+c$.buildSearchResults = Clazz.defineMethod (c$, "buildSearchResults", 
+function (seq, index, seqmappings) {
+var results =  new jalview.datamodel.SearchResults ();
+jalview.util.MappingUtils.addSearchResults (results, seq, index, seqmappings);
+return results;
+}, "jalview.datamodel.SequenceI,~N,java.util.Set");
+c$.addSearchResults = Clazz.defineMethod (c$, "addSearchResults", 
+function (results, seq, index, seqmappings) {
+if (index >= seq.getStart () && index <= seq.getEnd ()) {
+for (var acf, $acf = seqmappings.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+acf.markMappedRegion (seq, index, results);
+}
+}}, "jalview.datamodel.SearchResults,jalview.datamodel.SequenceI,~N,java.util.Set");
+c$.mapSequenceGroup = Clazz.defineMethod (c$, "mapSequenceGroup", 
+function (sg, mapFrom, mapTo) {
+var targetIsNucleotide = mapTo.isNucleotide ();
+var protein = targetIsNucleotide ? mapFrom : mapTo;
+var codonFrames = protein.getAlignment ().getCodonFrames ();
+var mappedGroup =  new jalview.datamodel.SequenceGroup (sg);
+mappedGroup.cs = mapTo.getGlobalColourScheme ();
+mappedGroup.clear ();
+var minStartCol = -1;
+var maxEndCol = -1;
+var selectionStartRes = sg.getStartRes ();
+var selectionEndRes = sg.getEndRes ();
+for (var selected, $selected = sg.getSequences ().iterator (); $selected.hasNext () && ((selected = $selected.next ()) || true);) {
+var firstUngappedPos = selectionStartRes;
+while (firstUngappedPos <= selectionEndRes && jalview.util.Comparison.isGap (selected.getCharAt (firstUngappedPos))) {
+firstUngappedPos++;
+}
+if (firstUngappedPos > selectionEndRes) {
+continue;
+}var lastUngappedPos = selectionEndRes;
+while (lastUngappedPos >= selectionStartRes && jalview.util.Comparison.isGap (selected.getCharAt (lastUngappedPos))) {
+lastUngappedPos--;
+}
+var startResiduePos = selected.findPosition (firstUngappedPos);
+var endResiduePos = selected.findPosition (lastUngappedPos);
+for (var acf, $acf = codonFrames.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+var mappedSequence = targetIsNucleotide ? acf.getDnaForAaSeq (selected) : acf.getAaForDnaSeq (selected);
+if (mappedSequence != null) {
+for (var seq, $seq = mapTo.getAlignment ().getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+var mappedStartResidue = 0;
+var mappedEndResidue = 0;
+if (seq.getDatasetSequence () === mappedSequence) {
+var sr = jalview.util.MappingUtils.buildSearchResults (selected, startResiduePos, java.util.Collections.singleton (acf));
+for (var m, $m = sr.getResults ().iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+mappedStartResidue = m.getStart ();
+mappedEndResidue = m.getEnd ();
+}
+sr = jalview.util.MappingUtils.buildSearchResults (selected, endResiduePos, java.util.Collections.singleton (acf));
+for (var m, $m = sr.getResults ().iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+mappedStartResidue = Math.min (mappedStartResidue, m.getStart ());
+mappedEndResidue = Math.max (mappedEndResidue, m.getEnd ());
+}
+var mappedStartCol = seq.findIndex (mappedStartResidue) - 1;
+minStartCol = minStartCol == -1 ? mappedStartCol : Math.min (minStartCol, mappedStartCol);
+var mappedEndCol = seq.findIndex (mappedEndResidue) - 1;
+maxEndCol = maxEndCol == -1 ? mappedEndCol : Math.max (maxEndCol, mappedEndCol);
+mappedGroup.addSequence (seq, false);
+break;
+}}
+}}
+}
+mappedGroup.setStartRes (minStartCol < 0 ? 0 : minStartCol);
+mappedGroup.setEndRes (maxEndCol < 0 ? 0 : maxEndCol);
+return mappedGroup;
+}, "jalview.datamodel.SequenceGroup,jalview.api.AlignViewportI,jalview.api.AlignViewportI");
+c$.mapOrderCommand = Clazz.defineMethod (c$, "mapOrderCommand", 
+function (command, undo, mapTo, mappings) {
+var sortOrder = command.getSequenceOrder (undo);
+var mappedOrder =  new java.util.ArrayList ();
+var j = 0;
+var mappingToNucleotide = mapTo.isNucleotide ();
+for (var seq, $seq = 0, $$seq = sortOrder; $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
+for (var acf, $acf = mappings.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+var mappedSeq = mappingToNucleotide ? acf.getDnaForAaSeq (seq) : acf.getAaForDnaSeq (seq);
+if (mappedSeq != null) {
+for (var seq2, $seq2 = mapTo.getSequences ().iterator (); $seq2.hasNext () && ((seq2 = $seq2.next ()) || true);) {
+if (seq2.getDatasetSequence () === mappedSeq) {
+mappedOrder.add (seq2);
+j++;
+break;
+}}
+}}
+}
+if (j == 0) {
+return null;
+}if (j < mapTo.getHeight ()) {
+for (var seq, $seq = mapTo.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+if (!mappedOrder.contains (seq)) {
+mappedOrder.add (seq);
+}}
+}var mappedOrderArray = mappedOrder.toArray ( new Array (mappedOrder.size ()));
+var oldOrder = mapTo.getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortBy (mapTo,  new jalview.datamodel.AlignmentOrder (mappedOrderArray));
+var result =  new jalview.commands.OrderCommand (command.getDescription (), oldOrder, mapTo);
+return result;
+}, "jalview.commands.OrderCommand,~B,jalview.datamodel.AlignmentI,java.util.Set");
+c$.mapColumnSelection = Clazz.defineMethod (c$, "mapColumnSelection", 
+function (colsel, mapFrom, mapTo) {
+var targetIsNucleotide = mapTo.isNucleotide ();
+var protein = targetIsNucleotide ? mapFrom : mapTo;
+var codonFrames = protein.getAlignment ().getCodonFrames ();
+var mappedColumns =  new jalview.datamodel.ColumnSelection ();
+if (colsel == null) {
+return mappedColumns;
+}var fromGapChar = mapFrom.getAlignment ().getGapCharacter ();
+for (var obj, $obj = colsel.getSelected ().iterator (); $obj.hasNext () && ((obj = $obj.next ()) || true);) {
+var col = (obj).intValue ();
+var mappedToMin = 2147483647;
+var mappedToMax = -2147483648;
+for (var fromSeq, $fromSeq = mapFrom.getAlignment ().getSequences ().iterator (); $fromSeq.hasNext () && ((fromSeq = $fromSeq.next ()) || true);) {
+if (fromSeq.getCharAt (col) == fromGapChar) {
+continue;
+}var residuePos = fromSeq.findPosition (col);
+var sr = jalview.util.MappingUtils.buildSearchResults (fromSeq, residuePos, codonFrames);
+for (var m, $m = sr.getResults ().iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+var mappedStartResidue = m.getStart ();
+var mappedEndResidue = m.getEnd ();
+var mappedSeq = m.getSequence ();
+for (var toSeq, $toSeq = mapTo.getAlignment ().getSequences ().iterator (); $toSeq.hasNext () && ((toSeq = $toSeq.next ()) || true);) {
+if (toSeq.getDatasetSequence () === mappedSeq) {
+var mappedStartCol = toSeq.findIndex (mappedStartResidue);
+var mappedEndCol = toSeq.findIndex (mappedEndResidue);
+mappedToMin = Math.min (mappedToMin, mappedStartCol);
+mappedToMax = Math.max (mappedToMax, mappedEndCol);
+break;
+}}
+}
+}
+for (var i = mappedToMin; i <= mappedToMax; i++) {
+mappedColumns.addElement (i - 1);
+}
+}
+return mappedColumns;
+}, "jalview.datamodel.ColumnSelection,jalview.api.AlignViewportI,jalview.api.AlignViewportI");
+c$.findCodonFor = Clazz.defineMethod (c$, "findCodonFor", 
+function (seq, col, mappings) {
+var dsPos = seq.findPosition (col);
+for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {
+if (mapping.involvesSequence (seq)) {
+return mapping.getMappedCodon (seq.getDatasetSequence (), dsPos);
+}}
+return null;
+}, "jalview.datamodel.SequenceI,~N,java.util.Set");
+c$.flattenRanges = Clazz.defineMethod (c$, "flattenRanges", 
+function (ranges) {
+var count = 0;
+for (var i = 0; i < ranges.length - 1; i += 2) {
+count += ranges[i + 1] - ranges[i] + 1;
+}
+var result =  Clazz.newIntArray (count, 0);
+var k = 0;
+for (var i = 0; i < ranges.length - 1; i += 2) {
+for (var j = ranges[i]; j <= ranges[i + 1]; j++) {
+result[k++] = j;
+}
+}
+return result;
+}, "~A");
+c$.findMappingsForSequence = Clazz.defineMethod (c$, "findMappingsForSequence", 
+function (sequence, mappings) {
+var result =  new java.util.ArrayList ();
+if (sequence == null || mappings == null) {
+return result;
+}for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {
+if (mapping.involvesSequence (sequence)) {
+result.add (mapping);
+}}
+return result;
+}, "jalview.datamodel.SequenceI,java.util.Set");
+});
index be41395..c37487c 100644 (file)
Binary files a/bin/jalview/util/MessageManager.class and b/bin/jalview/util/MessageManager.class differ
index 44350e0..4283582 100644 (file)
@@ -1,73 +1,73 @@
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (["java.text.MessageFormat", "java.util.logging.Logger"], "jalview.util.MessageManager", ["java.util.Locale", "$.ResourceBundle", "java.util.logging.Level"], function () {\r
-c$ = Clazz.declareType (jalview.util, "MessageManager");\r
-c$.getString = Clazz.defineMethod (c$, "getString", \r
-function (key) {\r
-var value = "[missing key] " + key;\r
-try {\r
-value = jalview.util.MessageManager.rb.getString (key);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-jalview.util.MessageManager.log.warning ("I18N missing: " + jalview.util.MessageManager.loc + "\t" + key);\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return value;\r
-}, "~S");\r
-c$.getLocale = Clazz.defineMethod (c$, "getLocale", \r
-function () {\r
-return jalview.util.MessageManager.loc;\r
-});\r
-c$.formatMessage = Clazz.defineMethod (c$, "formatMessage", \r
-function (key, params) {\r
-return java.text.MessageFormat.format (jalview.util.MessageManager.getString (key), params);\r
-}, "~S,~A");\r
-c$.formatMessage = Clazz.defineMethod (c$, "formatMessage", \r
-function (key, params) {\r
-return java.text.MessageFormat.format (jalview.util.MessageManager.getString (key), params);\r
-}, "~S,~A");\r
-c$.getStringOrReturn = Clazz.defineMethod (c$, "getStringOrReturn", \r
-function (keyroot, name) {\r
-var smkey = keyroot + name.toLowerCase ().replaceAll (" ", "");\r
-try {\r
-name = jalview.util.MessageManager.rb.getString (smkey);\r
-} catch (x) {\r
-if (Clazz.exceptionOf (x, Exception)) {\r
-jalview.util.MessageManager.log.finest ("I18N missing key with root " + keyroot + ": " + jalview.util.MessageManager.loc + "\t" + smkey);\r
-} else {\r
-throw x;\r
-}\r
-}\r
-return name;\r
-}, "~S,~S");\r
-Clazz.defineStatics (c$,\r
-"rb", null);\r
-c$.log = c$.prototype.log = java.util.logging.Logger.getLogger (jalview.util.MessageManager.getCanonicalName ());\r
-Clazz.defineStatics (c$,\r
-"loc", null);\r
-{\r
-try {\r
-jalview.util.MessageManager.loc = java.util.Locale.getDefault ();\r
-jalview.util.MessageManager.log.info ("Getting messages for lang: " + jalview.util.MessageManager.loc);\r
-jalview.util.MessageManager.rb = java.util.ResourceBundle.getBundle ("lang.Messages", jalview.util.MessageManager.loc);\r
-if (jalview.util.MessageManager.rb == null || jalview.util.MessageManager.log.isLoggable (java.util.logging.Level.FINEST)) {\r
-jalview.util.MessageManager.log.finest ("Language keys: " + jalview.util.MessageManager.rb.keySet ());\r
-}} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, Exception)) {\r
-var q = e$$;\r
-{\r
-jalview.util.MessageManager.log.warning ("Exception when initting Locale for i18n messages\n" + q.getMessage ());\r
-q.printStackTrace ();\r
-}\r
-} else if (Clazz.exceptionOf (e$$, Error)) {\r
-var v = e$$;\r
-{\r
-jalview.util.MessageManager.log.warning ("Error when initting Locale for i18n messages\n" + v.getMessage ());\r
-v.printStackTrace ();\r
-}\r
-} else {\r
-throw e$$;\r
-}\r
-}\r
-}});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (["java.text.MessageFormat", "java.util.logging.Logger"], "jalview.util.MessageManager", ["java.util.Locale", "$.ResourceBundle", "java.util.logging.Level"], function () {
+c$ = Clazz.declareType (jalview.util, "MessageManager");
+c$.getString = Clazz.defineMethod (c$, "getString", 
+function (key) {
+var value = "[missing key] " + key;
+try {
+value = jalview.util.MessageManager.rb.getString (key);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+jalview.util.MessageManager.log.warning ("I18N missing: " + jalview.util.MessageManager.loc + "\t" + key);
+} else {
+throw e;
+}
+}
+return value;
+}, "~S");
+c$.getLocale = Clazz.defineMethod (c$, "getLocale", 
+function () {
+return jalview.util.MessageManager.loc;
+});
+c$.formatMessage = Clazz.defineMethod (c$, "formatMessage", 
+function (key, params) {
+return java.text.MessageFormat.format (jalview.util.MessageManager.getString (key), params);
+}, "~S,~A");
+c$.formatMessage = Clazz.defineMethod (c$, "formatMessage", 
+function (key, params) {
+return java.text.MessageFormat.format (jalview.util.MessageManager.getString (key), params);
+}, "~S,~A");
+c$.getStringOrReturn = Clazz.defineMethod (c$, "getStringOrReturn", 
+function (keyroot, name) {
+var smkey = keyroot + name.toLowerCase ().replaceAll (" ", "");
+try {
+name = jalview.util.MessageManager.rb.getString (smkey);
+} catch (x) {
+if (Clazz.exceptionOf (x, Exception)) {
+jalview.util.MessageManager.log.finest ("I18N missing key with root " + keyroot + ": " + jalview.util.MessageManager.loc + "\t" + smkey);
+} else {
+throw x;
+}
+}
+return name;
+}, "~S,~S");
+Clazz.defineStatics (c$,
+"rb", null);
+c$.log = c$.prototype.log = java.util.logging.Logger.getLogger (jalview.util.MessageManager.getCanonicalName ());
+Clazz.defineStatics (c$,
+"loc", null);
+{
+try {
+jalview.util.MessageManager.loc = java.util.Locale.getDefault ();
+jalview.util.MessageManager.log.info ("Getting messages for lang: " + jalview.util.MessageManager.loc);
+jalview.util.MessageManager.rb = java.util.ResourceBundle.getBundle ("lang.Messages", jalview.util.MessageManager.loc);
+if (jalview.util.MessageManager.rb == null || jalview.util.MessageManager.log.isLoggable (java.util.logging.Level.FINEST)) {
+jalview.util.MessageManager.log.finest ("Language keys: " + jalview.util.MessageManager.rb.keySet ());
+}} catch (e$$) {
+if (Clazz.exceptionOf (e$$, Exception)) {
+var q = e$$;
+{
+jalview.util.MessageManager.log.warning ("Exception when initting Locale for i18n messages\n" + q.getMessage ());
+q.printStackTrace ();
+}
+} else if (Clazz.exceptionOf (e$$, Error)) {
+var v = e$$;
+{
+jalview.util.MessageManager.log.warning ("Error when initting Locale for i18n messages\n" + v.getMessage ());
+v.printStackTrace ();
+}
+} else {
+throw e$$;
+}
+}
+}});
index 4160bc9..3c62b7d 100644 (file)
Binary files a/bin/jalview/util/ParseHtmlBodyAndLinks.class and b/bin/jalview/util/ParseHtmlBodyAndLinks.class differ
index bf67f6a..8e41548 100644 (file)
@@ -1,78 +1,78 @@
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (["java.lang.StringBuffer", "java.util.ArrayList", "java.util.regex.Pattern"], "jalview.util.ParseHtmlBodyAndLinks", ["java.util.StringTokenizer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.orig = null;\r
-this.htmlContent = true;\r
-this.links = null;\r
-this.sb = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util, "ParseHtmlBodyAndLinks");\r
-Clazz.prepareFields (c$, function () {\r
-this.links =  new java.util.ArrayList ();\r
-this.sb =  new StringBuffer ();\r
-});\r
-Clazz.defineMethod (c$, "getOrig", \r
-function () {\r
-return this.orig;\r
-});\r
-Clazz.defineMethod (c$, "isHtmlContent", \r
-function () {\r
-return this.htmlContent;\r
-});\r
-Clazz.defineMethod (c$, "getContent", \r
-function () {\r
-return this.sb.toString ();\r
-});\r
-Clazz.defineMethod (c$, "getLinks", \r
-function () {\r
-return this.links;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (description, removeHTML, newline) {\r
-if (description == null || description.length == 0) {\r
-this.htmlContent = false;\r
-return;\r
-}if (description.toUpperCase ().indexOf ("<HTML>") == -1) {\r
-this.htmlContent = false;\r
-}this.orig = description;\r
-var st =  new java.util.StringTokenizer (description, "<");\r
-var token;\r
-var link;\r
-var startTag;\r
-var tag = null;\r
-while (st.hasMoreElements ()) {\r
-token = st.nextToken ("&>");\r
-if (token.equalsIgnoreCase ("html") || token.startsWith ("/")) {\r
-continue;\r
-}tag = null;\r
-startTag = token.indexOf ("<");\r
-if (startTag > -1) {\r
-tag = token.substring (startTag + 1);\r
-token = token.substring (0, startTag);\r
-}if (tag != null && tag.toUpperCase ().startsWith ("A HREF=")) {\r
-if (token.length > 0) {\r
-this.sb.append (token);\r
-}link = tag.substring (tag.indexOf ("\"") + 1, tag.length - 1);\r
-var label = st.nextToken ("<>");\r
-this.links.add (label + "|" + link);\r
-this.sb.append (label + "%LINK%");\r
-} else if (tag != null && tag.equalsIgnoreCase ("br")) {\r
-this.sb.append (newline);\r
-} else if (token.startsWith ("lt;")) {\r
-this.sb.append ("<" + token.substring (3));\r
-} else if (token.startsWith ("gt;")) {\r
-this.sb.append (">" + token.substring (3));\r
-} else if (token.startsWith ("amp;")) {\r
-this.sb.append ("&" + token.substring (4));\r
-} else {\r
-this.sb.append (token);\r
-}}\r
-if (removeHTML && !this.htmlContent) {\r
-this.sb =  new StringBuffer (jalview.util.ParseHtmlBodyAndLinks.LEFT_ANGLE_BRACKET_PATTERN.matcher (description).replaceAll ("&lt;"));\r
-}}, "~S,~B,~S");\r
-Clazz.defineMethod (c$, "getNonHtmlContent", \r
-function () {\r
-return this.isHtmlContent () ? this.sb.toString () : this.orig;\r
-});\r
-c$.LEFT_ANGLE_BRACKET_PATTERN = c$.prototype.LEFT_ANGLE_BRACKET_PATTERN = java.util.regex.Pattern.compile ("<");\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (["java.lang.StringBuffer", "java.util.ArrayList", "java.util.regex.Pattern"], "jalview.util.ParseHtmlBodyAndLinks", ["java.util.StringTokenizer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.orig = null;
+this.htmlContent = true;
+this.links = null;
+this.sb = null;
+Clazz.instantialize (this, arguments);
+}, jalview.util, "ParseHtmlBodyAndLinks");
+Clazz.prepareFields (c$, function () {
+this.links =  new java.util.ArrayList ();
+this.sb =  new StringBuffer ();
+});
+Clazz.defineMethod (c$, "getOrig", 
+function () {
+return this.orig;
+});
+Clazz.defineMethod (c$, "isHtmlContent", 
+function () {
+return this.htmlContent;
+});
+Clazz.defineMethod (c$, "getContent", 
+function () {
+return this.sb.toString ();
+});
+Clazz.defineMethod (c$, "getLinks", 
+function () {
+return this.links;
+});
+Clazz.makeConstructor (c$, 
+function (description, removeHTML, newline) {
+if (description == null || description.length == 0) {
+this.htmlContent = false;
+return;
+}if (description.toUpperCase ().indexOf ("<HTML>") == -1) {
+this.htmlContent = false;
+}this.orig = description;
+var st =  new java.util.StringTokenizer (description, "<");
+var token;
+var link;
+var startTag;
+var tag = null;
+while (st.hasMoreElements ()) {
+token = st.nextToken ("&>");
+if (token.equalsIgnoreCase ("html") || token.startsWith ("/")) {
+continue;
+}tag = null;
+startTag = token.indexOf ("<");
+if (startTag > -1) {
+tag = token.substring (startTag + 1);
+token = token.substring (0, startTag);
+}if (tag != null && tag.toUpperCase ().startsWith ("A HREF=")) {
+if (token.length > 0) {
+this.sb.append (token);
+}link = tag.substring (tag.indexOf ("\"") + 1, tag.length - 1);
+var label = st.nextToken ("<>");
+this.links.add (label + "|" + link);
+this.sb.append (label + "%LINK%");
+} else if (tag != null && tag.equalsIgnoreCase ("br")) {
+this.sb.append (newline);
+} else if (token.startsWith ("lt;")) {
+this.sb.append ("<" + token.substring (3));
+} else if (token.startsWith ("gt;")) {
+this.sb.append (">" + token.substring (3));
+} else if (token.startsWith ("amp;")) {
+this.sb.append ("&" + token.substring (4));
+} else {
+this.sb.append (token);
+}}
+if (removeHTML && !this.htmlContent) {
+this.sb =  new StringBuffer (jalview.util.ParseHtmlBodyAndLinks.LEFT_ANGLE_BRACKET_PATTERN.matcher (description).replaceAll ("&lt;"));
+}}, "~S,~B,~S");
+Clazz.defineMethod (c$, "getNonHtmlContent", 
+function () {
+return this.isHtmlContent () ? this.sb.toString () : this.orig;
+});
+c$.LEFT_ANGLE_BRACKET_PATTERN = c$.prototype.LEFT_ANGLE_BRACKET_PATTERN = java.util.regex.Pattern.compile ("<");
+});
index d349bdb..e599669 100644 (file)
@@ -1,30 +1,30 @@
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (null, "jalview.util.Platform", ["java.lang.StringBuffer"], function () {\r
-c$ = Clazz.declareType (jalview.util, "Platform");\r
-c$.isAMac = Clazz.defineMethod (c$, "isAMac", \r
-function () {\r
-return java.lang.System.getProperty ("os.name").indexOf ("Mac") > -1;\r
-});\r
-c$.isHeadless = Clazz.defineMethod (c$, "isHeadless", \r
-function () {\r
-var hdls = java.lang.System.getProperty ("java.awt.headless");\r
-return hdls != null && hdls.equals ("true");\r
-});\r
-c$.getMaxCommandLineLength = Clazz.defineMethod (c$, "getMaxCommandLineLength", \r
-function () {\r
-return 2046;\r
-});\r
-c$.escapeString = Clazz.defineMethod (c$, "escapeString", \r
-function (file) {\r
-var f =  new StringBuffer ();\r
-var p = 0;\r
-var lastp = 0;\r
-while ((p = file.indexOf ('\\', lastp)) > -1) {\r
-f.append (file.subSequence (lastp, p));\r
-f.append ("\\\\");\r
-lastp = p + 1;\r
-}\r
-f.append (file.substring (lastp));\r
-return f.toString ();\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (null, "jalview.util.Platform", ["java.lang.StringBuffer"], function () {
+c$ = Clazz.declareType (jalview.util, "Platform");
+c$.isAMac = Clazz.defineMethod (c$, "isAMac", 
+function () {
+return java.lang.System.getProperty ("os.name").indexOf ("Mac") > -1;
+});
+c$.isHeadless = Clazz.defineMethod (c$, "isHeadless", 
+function () {
+var hdls = java.lang.System.getProperty ("java.awt.headless");
+return hdls != null && hdls.equals ("true");
+});
+c$.getMaxCommandLineLength = Clazz.defineMethod (c$, "getMaxCommandLineLength", 
+function () {
+return 2046;
+});
+c$.escapeString = Clazz.defineMethod (c$, "escapeString", 
+function (file) {
+var f =  new StringBuffer ();
+var p = 0;
+var lastp = 0;
+while ((p = file.indexOf ('\\', lastp)) > -1) {
+f.append (file.subSequence (lastp, p));
+f.append ("\\\\");
+lastp = p + 1;
+}
+f.append (file.substring (lastp));
+return f.toString ();
+}, "~S");
+});
index a0960b5..f8fb52f 100644 (file)
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (null, "jalview.util.QuickSort", ["java.lang.Float", "java.util.Arrays"], function () {\r
-c$ = Clazz.declareType (jalview.util, "QuickSort");\r
-c$.sortInt = Clazz.defineMethod (c$, "sortInt", \r
-function (arr, s) {\r
-jalview.util.QuickSort.sortInt (arr, 0, arr.length - 1, s);\r
-}, "~A,~A");\r
-c$.sortFloatObject = Clazz.defineMethod (c$, "sortFloatObject", \r
-function (arr, s) {\r
-jalview.util.QuickSort.sortFloat (arr, 0, arr.length - 1, s);\r
-}, "~A,~A");\r
-c$.sortDouble = Clazz.defineMethod (c$, "sortDouble", \r
-function (arr, s) {\r
-jalview.util.QuickSort.sortDouble (arr, 0, arr.length - 1, s);\r
-}, "~A,~A");\r
-c$.sort = Clazz.defineMethod (c$, "sort", \r
-function (arr, s) {\r
-jalview.util.QuickSort.stringSort (arr, 0, arr.length - 1, s);\r
-}, "~A,~A");\r
-c$.stringSort = Clazz.defineMethod (c$, "stringSort", \r
-($fz = function (arr, p, r, s) {\r
-var q;\r
-if (p < r) {\r
-q = jalview.util.QuickSort.stringPartition (arr, p, r, s);\r
-jalview.util.QuickSort.stringSort (arr, p, q, s);\r
-jalview.util.QuickSort.stringSort (arr, q + 1, r, s);\r
-}}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");\r
-c$.sortFloat = Clazz.defineMethod (c$, "sortFloat", \r
-($fz = function (arr, p, r, s) {\r
-var q;\r
-if (p < r) {\r
-q = jalview.util.QuickSort.partitionFloat (arr, p, r, s);\r
-jalview.util.QuickSort.sortFloat (arr, p, q, s);\r
-jalview.util.QuickSort.sortFloat (arr, q + 1, r, s);\r
-}}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");\r
-c$.sortInt = Clazz.defineMethod (c$, "sortInt", \r
-($fz = function (arr, p, r, s) {\r
-var q;\r
-if (p < r) {\r
-q = jalview.util.QuickSort.partitionInt (arr, p, r, s);\r
-jalview.util.QuickSort.sortInt (arr, p, q, s);\r
-jalview.util.QuickSort.sortInt (arr, q + 1, r, s);\r
-}}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");\r
-c$.partitionFloat = Clazz.defineMethod (c$, "partitionFloat", \r
-($fz = function (arr, p, r, s) {\r
-var x = arr[p];\r
-var i = p - 1;\r
-var j = r + 1;\r
-while (true) {\r
-do {\r
-j = j - 1;\r
-} while (arr[j] > x);\r
-do {\r
-i = i + 1;\r
-} while (arr[i] < x);\r
-if (i < j) {\r
-var tmp = arr[i];\r
-arr[i] = arr[j];\r
-arr[j] = tmp;\r
-var tmp2 = s[i];\r
-s[i] = s[j];\r
-s[j] = tmp2;\r
-} else {\r
-return j;\r
-}}\r
-}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");\r
-c$.partitionInt = Clazz.defineMethod (c$, "partitionInt", \r
-($fz = function (arr, p, r, s) {\r
-var x = arr[p];\r
-var i = p - 1;\r
-var j = r + 1;\r
-while (true) {\r
-do {\r
-j = j - 1;\r
-} while (arr[j] > x);\r
-do {\r
-i = i + 1;\r
-} while (arr[i] < x);\r
-if (i < j) {\r
-var tmp = arr[i];\r
-arr[i] = arr[j];\r
-arr[j] = tmp;\r
-var tmp2 = s[i];\r
-s[i] = s[j];\r
-s[j] = tmp2;\r
-} else {\r
-return j;\r
-}}\r
-}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");\r
-c$.stringPartition = Clazz.defineMethod (c$, "stringPartition", \r
-($fz = function (arr, p, r, s) {\r
-var x = arr[p];\r
-var i = p - 1;\r
-var j = r + 1;\r
-while (true) {\r
-do {\r
-j = j - 1;\r
-} while (arr[j].compareTo (x) < 0);\r
-do {\r
-i = i + 1;\r
-} while (arr[i].compareTo (x) > 0);\r
-if (i < j) {\r
-var tmp = arr[i];\r
-arr[i] = arr[j];\r
-arr[j] = tmp;\r
-var tmp2 = s[i];\r
-s[i] = s[j];\r
-s[j] = tmp2;\r
-} else {\r
-return j;\r
-}}\r
-}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");\r
-c$.sortFloatChar = Clazz.defineMethod (c$, "sortFloatChar", \r
-function (arr, s) {\r
-var f1 =  Clazz.newFloatArray (arr.length, 0);\r
-var s1 =  Clazz.newCharArray (s.length, '\0');\r
-var nextZeroValue = 0;\r
-var nextNonZeroValue = arr.length - 1;\r
-for (var i = 0; i < arr.length; i++) {\r
-var val = arr[i];\r
-if (val > 0) {\r
-f1[nextNonZeroValue] = val;\r
-s1[nextNonZeroValue] = s[i];\r
-nextNonZeroValue--;\r
-} else {\r
-f1[nextZeroValue] = val;\r
-s1[nextZeroValue] = s[i];\r
-nextZeroValue++;\r
-}}\r
-System.arraycopy (f1, 0, arr, 0, nextZeroValue);\r
-System.arraycopy (s1, 0, s, 0, nextZeroValue);\r
-if (nextZeroValue == arr.length) {\r
-return;\r
-}var nonZeroFloats = java.util.Arrays.copyOfRange (f1, nextZeroValue, f1.length);\r
-var nonZeroChars = java.util.Arrays.copyOfRange (s1, nextZeroValue, s1.length);\r
-jalview.util.QuickSort.externalSortFloat (nonZeroFloats, nonZeroChars);\r
-System.arraycopy (nonZeroFloats, 0, arr, nextZeroValue, nonZeroFloats.length);\r
-System.arraycopy (nonZeroChars, 0, s, nextZeroValue, nonZeroChars.length);\r
-}, "~A,~A");\r
-c$.externalSortFloat = Clazz.defineMethod (c$, "externalSortFloat", \r
-($fz = function (arr, s) {\r
-var length = arr.length;\r
-var indices = jalview.util.QuickSort.makeIndexArray (length);\r
-java.util.Arrays.sort (indices,  new jalview.util.QuickSort.FloatComparator (arr));\r
-var sortedFloats =  Clazz.newFloatArray (length, 0);\r
-var sortedChars =  Clazz.newCharArray (s.length, '\0');\r
-for (var i = 0; i < length; i++) {\r
-sortedFloats[i] = arr[indices[i]];\r
-sortedChars[i] = s[indices[i]];\r
-}\r
-System.arraycopy (sortedFloats, 0, arr, 0, length);\r
-System.arraycopy (sortedChars, 0, s, 0, s.length);\r
-}, $fz.isPrivate = true, $fz), "~A,~A");\r
-c$.makeIndexArray = Clazz.defineMethod (c$, "makeIndexArray", \r
-($fz = function (length) {\r
-var indices =  new Array (length);\r
-for (var i = 0; i < length; i++) {\r
-indices[i] = new Integer (i);\r
-}\r
-return indices;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-c$.sortIntChar = Clazz.defineMethod (c$, "sortIntChar", \r
-function (arr, s) {\r
-var f1 =  Clazz.newIntArray (arr.length, 0);\r
-var s1 =  Clazz.newCharArray (s.length, '\0');\r
-var nextZeroValue = 0;\r
-var nextNonZeroValue = arr.length - 1;\r
-for (var i = 0; i < arr.length; i++) {\r
-var val = arr[i];\r
-if (val > 0) {\r
-f1[nextNonZeroValue] = val;\r
-s1[nextNonZeroValue] = s[i];\r
-nextNonZeroValue--;\r
-} else {\r
-f1[nextZeroValue] = val;\r
-s1[nextZeroValue] = s[i];\r
-nextZeroValue++;\r
-}}\r
-System.arraycopy (f1, 0, arr, 0, nextZeroValue);\r
-System.arraycopy (s1, 0, s, 0, nextZeroValue);\r
-if (nextZeroValue == arr.length) {\r
-return;\r
-}var nonZeroInts = java.util.Arrays.copyOfRange (f1, nextZeroValue, f1.length);\r
-var nonZeroChars = java.util.Arrays.copyOfRange (s1, nextZeroValue, s1.length);\r
-jalview.util.QuickSort.externalSortInt (nonZeroInts, nonZeroChars);\r
-System.arraycopy (nonZeroInts, 0, arr, nextZeroValue, nonZeroInts.length);\r
-System.arraycopy (nonZeroChars, 0, s, nextZeroValue, nonZeroChars.length);\r
-}, "~A,~A");\r
-c$.externalSortInt = Clazz.defineMethod (c$, "externalSortInt", \r
-($fz = function (arr, s) {\r
-var length = arr.length;\r
-var indices = jalview.util.QuickSort.makeIndexArray (length);\r
-java.util.Arrays.sort (indices,  new jalview.util.QuickSort.IntComparator (arr));\r
-var sortedInts =  Clazz.newIntArray (length, 0);\r
-var sortedChars =  Clazz.newCharArray (s.length, '\0');\r
-for (var i = 0; i < length; i++) {\r
-sortedInts[i] = arr[indices[i]];\r
-sortedChars[i] = s[indices[i]];\r
-}\r
-System.arraycopy (sortedInts, 0, arr, 0, length);\r
-System.arraycopy (sortedChars, 0, s, 0, s.length);\r
-}, $fz.isPrivate = true, $fz), "~A,~A");\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.values = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.QuickSort, "FloatComparator", null, java.util.Comparator);\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-this.values = a;\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "compare", \r
-function (a, b) {\r
-return Float.compare (this.values[a.intValue ()], this.values[b]);\r
-}, "Integer,Integer");\r
-c$ = Clazz.p0p ();\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.values = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.QuickSort, "IntComparator", null, java.util.Comparator);\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-this.values = a;\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "compare", \r
-function (a, b) {\r
-return Integer.compare (this.values[a], this.values[b]);\r
-}, "Integer,Integer");\r
-c$ = Clazz.p0p ();\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (null, "jalview.util.QuickSort", ["java.lang.Float", "java.util.Arrays"], function () {
+c$ = Clazz.declareType (jalview.util, "QuickSort");
+c$.sortInt = Clazz.defineMethod (c$, "sortInt", 
+function (arr, s) {
+jalview.util.QuickSort.sortInt (arr, 0, arr.length - 1, s);
+}, "~A,~A");
+c$.sortFloatObject = Clazz.defineMethod (c$, "sortFloatObject", 
+function (arr, s) {
+jalview.util.QuickSort.sortFloat (arr, 0, arr.length - 1, s);
+}, "~A,~A");
+c$.sortDouble = Clazz.defineMethod (c$, "sortDouble", 
+function (arr, s) {
+jalview.util.QuickSort.sortDouble (arr, 0, arr.length - 1, s);
+}, "~A,~A");
+c$.sort = Clazz.defineMethod (c$, "sort", 
+function (arr, s) {
+jalview.util.QuickSort.stringSort (arr, 0, arr.length - 1, s);
+}, "~A,~A");
+c$.stringSort = Clazz.defineMethod (c$, "stringSort", 
+($fz = function (arr, p, r, s) {
+var q;
+if (p < r) {
+q = jalview.util.QuickSort.stringPartition (arr, p, r, s);
+jalview.util.QuickSort.stringSort (arr, p, q, s);
+jalview.util.QuickSort.stringSort (arr, q + 1, r, s);
+}}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");
+c$.sortFloat = Clazz.defineMethod (c$, "sortFloat", 
+($fz = function (arr, p, r, s) {
+var q;
+if (p < r) {
+q = jalview.util.QuickSort.partitionFloat (arr, p, r, s);
+jalview.util.QuickSort.sortFloat (arr, p, q, s);
+jalview.util.QuickSort.sortFloat (arr, q + 1, r, s);
+}}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");
+c$.sortInt = Clazz.defineMethod (c$, "sortInt", 
+($fz = function (arr, p, r, s) {
+var q;
+if (p < r) {
+q = jalview.util.QuickSort.partitionInt (arr, p, r, s);
+jalview.util.QuickSort.sortInt (arr, p, q, s);
+jalview.util.QuickSort.sortInt (arr, q + 1, r, s);
+}}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");
+c$.partitionFloat = Clazz.defineMethod (c$, "partitionFloat", 
+($fz = function (arr, p, r, s) {
+var x = arr[p];
+var i = p - 1;
+var j = r + 1;
+while (true) {
+do {
+j = j - 1;
+} while (arr[j] > x);
+do {
+i = i + 1;
+} while (arr[i] < x);
+if (i < j) {
+var tmp = arr[i];
+arr[i] = arr[j];
+arr[j] = tmp;
+var tmp2 = s[i];
+s[i] = s[j];
+s[j] = tmp2;
+} else {
+return j;
+}}
+}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");
+c$.partitionInt = Clazz.defineMethod (c$, "partitionInt", 
+($fz = function (arr, p, r, s) {
+var x = arr[p];
+var i = p - 1;
+var j = r + 1;
+while (true) {
+do {
+j = j - 1;
+} while (arr[j] > x);
+do {
+i = i + 1;
+} while (arr[i] < x);
+if (i < j) {
+var tmp = arr[i];
+arr[i] = arr[j];
+arr[j] = tmp;
+var tmp2 = s[i];
+s[i] = s[j];
+s[j] = tmp2;
+} else {
+return j;
+}}
+}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");
+c$.stringPartition = Clazz.defineMethod (c$, "stringPartition", 
+($fz = function (arr, p, r, s) {
+var x = arr[p];
+var i = p - 1;
+var j = r + 1;
+while (true) {
+do {
+j = j - 1;
+} while (arr[j].compareTo (x) < 0);
+do {
+i = i + 1;
+} while (arr[i].compareTo (x) > 0);
+if (i < j) {
+var tmp = arr[i];
+arr[i] = arr[j];
+arr[j] = tmp;
+var tmp2 = s[i];
+s[i] = s[j];
+s[j] = tmp2;
+} else {
+return j;
+}}
+}, $fz.isPrivate = true, $fz), "~A,~N,~N,~A");
+c$.sortFloatChar = Clazz.defineMethod (c$, "sortFloatChar", 
+function (arr, s) {
+var f1 =  Clazz.newFloatArray (arr.length, 0);
+var s1 =  Clazz.newCharArray (s.length, '\0');
+var nextZeroValue = 0;
+var nextNonZeroValue = arr.length - 1;
+for (var i = 0; i < arr.length; i++) {
+var val = arr[i];
+if (val > 0) {
+f1[nextNonZeroValue] = val;
+s1[nextNonZeroValue] = s[i];
+nextNonZeroValue--;
+} else {
+f1[nextZeroValue] = val;
+s1[nextZeroValue] = s[i];
+nextZeroValue++;
+}}
+System.arraycopy (f1, 0, arr, 0, nextZeroValue);
+System.arraycopy (s1, 0, s, 0, nextZeroValue);
+if (nextZeroValue == arr.length) {
+return;
+}var nonZeroFloats = java.util.Arrays.copyOfRange (f1, nextZeroValue, f1.length);
+var nonZeroChars = java.util.Arrays.copyOfRange (s1, nextZeroValue, s1.length);
+jalview.util.QuickSort.externalSortFloat (nonZeroFloats, nonZeroChars);
+System.arraycopy (nonZeroFloats, 0, arr, nextZeroValue, nonZeroFloats.length);
+System.arraycopy (nonZeroChars, 0, s, nextZeroValue, nonZeroChars.length);
+}, "~A,~A");
+c$.externalSortFloat = Clazz.defineMethod (c$, "externalSortFloat", 
+($fz = function (arr, s) {
+var length = arr.length;
+var indices = jalview.util.QuickSort.makeIndexArray (length);
+java.util.Arrays.sort (indices,  new jalview.util.QuickSort.FloatComparator (arr));
+var sortedFloats =  Clazz.newFloatArray (length, 0);
+var sortedChars =  Clazz.newCharArray (s.length, '\0');
+for (var i = 0; i < length; i++) {
+sortedFloats[i] = arr[indices[i]];
+sortedChars[i] = s[indices[i]];
+}
+System.arraycopy (sortedFloats, 0, arr, 0, length);
+System.arraycopy (sortedChars, 0, s, 0, s.length);
+}, $fz.isPrivate = true, $fz), "~A,~A");
+c$.makeIndexArray = Clazz.defineMethod (c$, "makeIndexArray", 
+($fz = function (length) {
+var indices =  new Array (length);
+for (var i = 0; i < length; i++) {
+indices[i] = new Integer (i);
+}
+return indices;
+}, $fz.isPrivate = true, $fz), "~N");
+c$.sortIntChar = Clazz.defineMethod (c$, "sortIntChar", 
+function (arr, s) {
+var f1 =  Clazz.newIntArray (arr.length, 0);
+var s1 =  Clazz.newCharArray (s.length, '\0');
+var nextZeroValue = 0;
+var nextNonZeroValue = arr.length - 1;
+for (var i = 0; i < arr.length; i++) {
+var val = arr[i];
+if (val > 0) {
+f1[nextNonZeroValue] = val;
+s1[nextNonZeroValue] = s[i];
+nextNonZeroValue--;
+} else {
+f1[nextZeroValue] = val;
+s1[nextZeroValue] = s[i];
+nextZeroValue++;
+}}
+System.arraycopy (f1, 0, arr, 0, nextZeroValue);
+System.arraycopy (s1, 0, s, 0, nextZeroValue);
+if (nextZeroValue == arr.length) {
+return;
+}var nonZeroInts = java.util.Arrays.copyOfRange (f1, nextZeroValue, f1.length);
+var nonZeroChars = java.util.Arrays.copyOfRange (s1, nextZeroValue, s1.length);
+jalview.util.QuickSort.externalSortInt (nonZeroInts, nonZeroChars);
+System.arraycopy (nonZeroInts, 0, arr, nextZeroValue, nonZeroInts.length);
+System.arraycopy (nonZeroChars, 0, s, nextZeroValue, nonZeroChars.length);
+}, "~A,~A");
+c$.externalSortInt = Clazz.defineMethod (c$, "externalSortInt", 
+($fz = function (arr, s) {
+var length = arr.length;
+var indices = jalview.util.QuickSort.makeIndexArray (length);
+java.util.Arrays.sort (indices,  new jalview.util.QuickSort.IntComparator (arr));
+var sortedInts =  Clazz.newIntArray (length, 0);
+var sortedChars =  Clazz.newCharArray (s.length, '\0');
+for (var i = 0; i < length; i++) {
+sortedInts[i] = arr[indices[i]];
+sortedChars[i] = s[indices[i]];
+}
+System.arraycopy (sortedInts, 0, arr, 0, length);
+System.arraycopy (sortedChars, 0, s, 0, s.length);
+}, $fz.isPrivate = true, $fz), "~A,~A");
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+this.values = null;
+Clazz.instantialize (this, arguments);
+}, jalview.util.QuickSort, "FloatComparator", null, java.util.Comparator);
+Clazz.makeConstructor (c$, 
+function (a) {
+this.values = a;
+}, "~A");
+Clazz.overrideMethod (c$, "compare", 
+function (a, b) {
+return Float.compare (this.values[a.intValue ()], this.values[b]);
+}, "Integer,Integer");
+c$ = Clazz.p0p ();
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+this.values = null;
+Clazz.instantialize (this, arguments);
+}, jalview.util.QuickSort, "IntComparator", null, java.util.Comparator);
+Clazz.makeConstructor (c$, 
+function (a) {
+this.values = a;
+}, "~A");
+Clazz.overrideMethod (c$, "compare", 
+function (a, b) {
+return Integer.compare (this.values[a], this.values[b]);
+}, "Integer,Integer");
+c$ = Clazz.p0p ();
+});
index f9edbc8..66e861f 100644 (file)
@@ -1,23 +1,23 @@
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (["java.util.Iterator"], "jalview.util.ReverseListIterator", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.iterator = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util, "ReverseListIterator", null, java.util.Iterator);\r
-Clazz.makeConstructor (c$, \r
-function (stuff) {\r
-this.iterator = stuff.listIterator (stuff.size ());\r
-}, "java.util.List");\r
-Clazz.overrideMethod (c$, "hasNext", \r
-function () {\r
-return this.iterator.hasPrevious ();\r
-});\r
-Clazz.overrideMethod (c$, "next", \r
-function () {\r
-return this.iterator.previous ();\r
-});\r
-Clazz.overrideMethod (c$, "remove", \r
-function () {\r
-this.iterator.remove ();\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (["java.util.Iterator"], "jalview.util.ReverseListIterator", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.iterator = null;
+Clazz.instantialize (this, arguments);
+}, jalview.util, "ReverseListIterator", null, java.util.Iterator);
+Clazz.makeConstructor (c$, 
+function (stuff) {
+this.iterator = stuff.listIterator (stuff.size ());
+}, "java.util.List");
+Clazz.overrideMethod (c$, "hasNext", 
+function () {
+return this.iterator.hasPrevious ();
+});
+Clazz.overrideMethod (c$, "next", 
+function () {
+return this.iterator.previous ();
+});
+Clazz.overrideMethod (c$, "remove", 
+function () {
+this.iterator.remove ();
+});
+});
index 29a9645..258fe14 100644 (file)
@@ -1,67 +1,67 @@
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (null, "jalview.util.ShiftList", ["java.util.ArrayList"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.shifts = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util, "ShiftList");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.shifts =  new java.util.ArrayList ();\r
-});\r
-Clazz.defineMethod (c$, "addShift", \r
-function (pos, shift) {\r
-{\r
-var sidx = 0;\r
-var rshift = null;\r
-while (sidx < this.shifts.size () && (rshift = this.shifts.get (sidx))[0] < pos) {\r
-sidx++;\r
-}\r
-if (sidx == this.shifts.size ()) {\r
-this.shifts.add (sidx,  Clazz.newIntArray (-1, [pos, shift]));\r
-} else {\r
-rshift[1] += shift;\r
-}}}, "~N,~N");\r
-Clazz.defineMethod (c$, "shift", \r
-function (pos) {\r
-if (this.shifts.size () == 0) {\r
-return pos;\r
-}var shifted = pos;\r
-var sidx = 0;\r
-var rshift;\r
-while (sidx < this.shifts.size () && (rshift = (this.shifts.get (sidx++)))[0] <= pos) {\r
-shifted += rshift[1];\r
-}\r
-return shifted;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "clear", \r
-function () {\r
-this.shifts.clear ();\r
-});\r
-Clazz.defineMethod (c$, "getInverse", \r
-function () {\r
-var inverse =  new jalview.util.ShiftList ();\r
-{\r
-if (this.shifts != null) {\r
-for (var sh, $sh = this.shifts.iterator (); $sh.hasNext () && ((sh = $sh.next ()) || true);) {\r
-if (sh != null) {\r
-inverse.shifts.add ( Clazz.newIntArray (-1, [sh[0], -sh[1]]));\r
-}}\r
-}}return inverse;\r
-});\r
-c$.parseMap = Clazz.defineMethod (c$, "parseMap", \r
-function (gapMap) {\r
-var shiftList = null;\r
-if (gapMap != null && gapMap.length > 0) {\r
-shiftList =  new jalview.util.ShiftList ();\r
-for (var i = 0, p = 0; i < gapMap.length; p++, i++) {\r
-if (p != gapMap[i]) {\r
-shiftList.addShift (p, gapMap[i] - p);\r
-p = gapMap[i];\r
-}}\r
-}return shiftList;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "getShifts", \r
-function () {\r
-return this.shifts;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (null, "jalview.util.ShiftList", ["java.util.ArrayList"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.shifts = null;
+Clazz.instantialize (this, arguments);
+}, jalview.util, "ShiftList");
+Clazz.makeConstructor (c$, 
+function () {
+this.shifts =  new java.util.ArrayList ();
+});
+Clazz.defineMethod (c$, "addShift", 
+function (pos, shift) {
+{
+var sidx = 0;
+var rshift = null;
+while (sidx < this.shifts.size () && (rshift = this.shifts.get (sidx))[0] < pos) {
+sidx++;
+}
+if (sidx == this.shifts.size ()) {
+this.shifts.add (sidx,  Clazz.newIntArray (-1, [pos, shift]));
+} else {
+rshift[1] += shift;
+}}}, "~N,~N");
+Clazz.defineMethod (c$, "shift", 
+function (pos) {
+if (this.shifts.size () == 0) {
+return pos;
+}var shifted = pos;
+var sidx = 0;
+var rshift;
+while (sidx < this.shifts.size () && (rshift = (this.shifts.get (sidx++)))[0] <= pos) {
+shifted += rshift[1];
+}
+return shifted;
+}, "~N");
+Clazz.defineMethod (c$, "clear", 
+function () {
+this.shifts.clear ();
+});
+Clazz.defineMethod (c$, "getInverse", 
+function () {
+var inverse =  new jalview.util.ShiftList ();
+{
+if (this.shifts != null) {
+for (var sh, $sh = this.shifts.iterator (); $sh.hasNext () && ((sh = $sh.next ()) || true);) {
+if (sh != null) {
+inverse.shifts.add ( Clazz.newIntArray (-1, [sh[0], -sh[1]]));
+}}
+}}return inverse;
+});
+c$.parseMap = Clazz.defineMethod (c$, "parseMap", 
+function (gapMap) {
+var shiftList = null;
+if (gapMap != null && gapMap.length > 0) {
+shiftList =  new jalview.util.ShiftList ();
+for (var i = 0, p = 0; i < gapMap.length; p++, i++) {
+if (p != gapMap[i]) {
+shiftList.addShift (p, gapMap[i] - p);
+p = gapMap[i];
+}}
+}return shiftList;
+}, "~A");
+Clazz.defineMethod (c$, "getShifts", 
+function () {
+return this.shifts;
+});
+});
index fd878bf..0b21437 100644 (file)
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (["java.util.regex.Pattern"], "jalview.util.StringUtils", ["java.lang.StringBuffer", "java.util.ArrayList"], function () {\r
-c$ = Clazz.declareType (jalview.util, "StringUtils");\r
-c$.insertCharAt = Clazz.defineMethod (c$, "insertCharAt", \r
-function ($in, position, count, ch) {\r
-var tmp =  Clazz.newCharArray ($in.length + count, '\0');\r
-if (position >= $in.length) {\r
-System.arraycopy ($in, 0, tmp, 0, $in.length);\r
-position = $in.length;\r
-} else {\r
-System.arraycopy ($in, 0, tmp, 0, position);\r
-}var index = position;\r
-while (count > 0) {\r
-tmp[index++] = ch;\r
-count--;\r
-}\r
-if (position < $in.length) {\r
-System.arraycopy ($in, position, tmp, index, $in.length - position);\r
-}return tmp;\r
-}, "~A,~N,~N,~S");\r
-c$.deleteChars = Clazz.defineMethod (c$, "deleteChars", \r
-function ($in, from, to) {\r
-if (from >= $in.length || from < 0) {\r
-return $in;\r
-}var tmp;\r
-if (to >= $in.length) {\r
-tmp =  Clazz.newCharArray (from, '\0');\r
-System.arraycopy ($in, 0, tmp, 0, from);\r
-to = $in.length;\r
-} else {\r
-tmp =  Clazz.newCharArray ($in.length - to + from, '\0');\r
-System.arraycopy ($in, 0, tmp, 0, from);\r
-System.arraycopy ($in, to, tmp, from, $in.length - to);\r
-}return tmp;\r
-}, "~A,~N,~N");\r
-c$.getLastToken = Clazz.defineMethod (c$, "getLastToken", \r
-function (input, token) {\r
-if (input == null) {\r
-return null;\r
-}if (token == null) {\r
-return input;\r
-}var st = input.$plit (token);\r
-return st[st.length - 1];\r
-}, "~S,~S");\r
-c$.separatorListToArray = Clazz.defineMethod (c$, "separatorListToArray", \r
-function (input, delimiter) {\r
-var seplen = delimiter.length;\r
-if (input == null || input.equals ("") || input.equals (delimiter)) {\r
-return null;\r
-}var jv =  new java.util.ArrayList ();\r
-var cp = 0;\r
-var pos;\r
-var escape;\r
-var wasescaped = false;\r
-var wasquoted = false;\r
-var lstitem = null;\r
-while ((pos = input.indexOf (delimiter, cp)) >= cp) {\r
-escape = (pos > 0 && input.charAt (pos - 1) == '\\') ? -1 : 0;\r
-if (wasescaped || wasquoted) {\r
-jv.set (jv.size () - 1, lstitem = lstitem + delimiter + input.substring (cp, pos + escape));\r
-} else {\r
-jv.add (lstitem = input.substring (cp, pos + escape));\r
-}cp = pos + seplen;\r
-wasescaped = escape == -1;\r
-wasquoted = jalview.util.StringUtils.DELIMITERS_PATTERN.matcher (lstitem).matches ();\r
-}\r
-if (cp < input.length) {\r
-var c = input.substring (cp);\r
-if (wasescaped || wasquoted) {\r
-jv.set (jv.size () - 1, lstitem + delimiter + c);\r
-} else {\r
-if (!c.equals (delimiter)) {\r
-jv.add (c);\r
-}}}if (jv.size () > 0) {\r
-var v = jv.toArray ( new Array (jv.size ()));\r
-jv.clear ();\r
-if (false) {\r
-System.err.println ("Array from '" + delimiter + "' separated List:\n" + v.length);\r
-for (var i = 0; i < v.length; i++) {\r
-System.err.println ("item " + i + " '" + v[i] + "'");\r
-}\r
-}return v;\r
-}if (false) {\r
-System.err.println ("Empty Array from '" + delimiter + "' separated List");\r
-}return null;\r
-}, "~S,~S");\r
-c$.arrayToSeparatorList = Clazz.defineMethod (c$, "arrayToSeparatorList", \r
-function (list, separator) {\r
-var v =  new StringBuffer ();\r
-if (list != null && list.length > 0) {\r
-for (var i = 0, iSize = list.length; i < iSize; i++) {\r
-if (list[i] != null) {\r
-if (v.length () > 0) {\r
-v.append (separator);\r
-}v.append (list[i]);\r
-}}\r
-if (false) {\r
-System.err.println ("Returning '" + separator + "' separated List:\n");\r
-System.err.println (v);\r
-}return v.toString ();\r
-}if (false) {\r
-System.err.println ("Returning empty '" + separator + "' separated List\n");\r
-}return "" + separator;\r
-}, "~A,~S");\r
-c$.DELIMITERS_PATTERN = c$.prototype.DELIMITERS_PATTERN = java.util.regex.Pattern.compile (".*='[^']*(?!')");\r
-Clazz.defineStatics (c$,\r
-"DEBUG", false);\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (["java.util.regex.Pattern"], "jalview.util.StringUtils", ["java.lang.StringBuffer", "java.util.ArrayList"], function () {
+c$ = Clazz.declareType (jalview.util, "StringUtils");
+c$.insertCharAt = Clazz.defineMethod (c$, "insertCharAt", 
+function ($in, position, count, ch) {
+var tmp =  Clazz.newCharArray ($in.length + count, '\0');
+if (position >= $in.length) {
+System.arraycopy ($in, 0, tmp, 0, $in.length);
+position = $in.length;
+} else {
+System.arraycopy ($in, 0, tmp, 0, position);
+}var index = position;
+while (count > 0) {
+tmp[index++] = ch;
+count--;
+}
+if (position < $in.length) {
+System.arraycopy ($in, position, tmp, index, $in.length - position);
+}return tmp;
+}, "~A,~N,~N,~S");
+c$.deleteChars = Clazz.defineMethod (c$, "deleteChars", 
+function ($in, from, to) {
+if (from >= $in.length || from < 0) {
+return $in;
+}var tmp;
+if (to >= $in.length) {
+tmp =  Clazz.newCharArray (from, '\0');
+System.arraycopy ($in, 0, tmp, 0, from);
+to = $in.length;
+} else {
+tmp =  Clazz.newCharArray ($in.length - to + from, '\0');
+System.arraycopy ($in, 0, tmp, 0, from);
+System.arraycopy ($in, to, tmp, from, $in.length - to);
+}return tmp;
+}, "~A,~N,~N");
+c$.getLastToken = Clazz.defineMethod (c$, "getLastToken", 
+function (input, token) {
+if (input == null) {
+return null;
+}if (token == null) {
+return input;
+}var st = input.$plit (token);
+return st[st.length - 1];
+}, "~S,~S");
+c$.separatorListToArray = Clazz.defineMethod (c$, "separatorListToArray", 
+function (input, delimiter) {
+var seplen = delimiter.length;
+if (input == null || input.equals ("") || input.equals (delimiter)) {
+return null;
+}var jv =  new java.util.ArrayList ();
+var cp = 0;
+var pos;
+var escape;
+var wasescaped = false;
+var wasquoted = false;
+var lstitem = null;
+while ((pos = input.indexOf (delimiter, cp)) >= cp) {
+escape = (pos > 0 && input.charAt (pos - 1) == '\\') ? -1 : 0;
+if (wasescaped || wasquoted) {
+jv.set (jv.size () - 1, lstitem = lstitem + delimiter + input.substring (cp, pos + escape));
+} else {
+jv.add (lstitem = input.substring (cp, pos + escape));
+}cp = pos + seplen;
+wasescaped = escape == -1;
+wasquoted = jalview.util.StringUtils.DELIMITERS_PATTERN.matcher (lstitem).matches ();
+}
+if (cp < input.length) {
+var c = input.substring (cp);
+if (wasescaped || wasquoted) {
+jv.set (jv.size () - 1, lstitem + delimiter + c);
+} else {
+if (!c.equals (delimiter)) {
+jv.add (c);
+}}}if (jv.size () > 0) {
+var v = jv.toArray ( new Array (jv.size ()));
+jv.clear ();
+if (false) {
+System.err.println ("Array from '" + delimiter + "' separated List:\n" + v.length);
+for (var i = 0; i < v.length; i++) {
+System.err.println ("item " + i + " '" + v[i] + "'");
+}
+}return v;
+}if (false) {
+System.err.println ("Empty Array from '" + delimiter + "' separated List");
+}return null;
+}, "~S,~S");
+c$.arrayToSeparatorList = Clazz.defineMethod (c$, "arrayToSeparatorList", 
+function (list, separator) {
+var v =  new StringBuffer ();
+if (list != null && list.length > 0) {
+for (var i = 0, iSize = list.length; i < iSize; i++) {
+if (list[i] != null) {
+if (v.length () > 0) {
+v.append (separator);
+}v.append (list[i]);
+}}
+if (false) {
+System.err.println ("Returning '" + separator + "' separated List:\n");
+System.err.println (v);
+}return v.toString ();
+}if (false) {
+System.err.println ("Returning empty '" + separator + "' separated List\n");
+}return "" + separator;
+}, "~A,~S");
+c$.DELIMITERS_PATTERN = c$.prototype.DELIMITERS_PATTERN = java.util.regex.Pattern.compile (".*='[^']*(?!')");
+Clazz.defineStatics (c$,
+"DEBUG", false);
+});
index 44ff978..dcc7fea 100644 (file)
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (["java.awt.event.MouseAdapter", "javax.swing.Icon", "javax.swing.event.TableModelListener", "javax.swing.table.AbstractTableModel", "$.TableCellRenderer", "java.util.ArrayList", "$.HashMap"], "jalview.util.TableSorter", ["java.awt.Color", "java.util.Arrays", "javax.swing.JLabel", "javax.swing.event.TableModelEvent"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.tableModel = null;\r
-this.viewToModel = null;\r
-this.modelToView = null;\r
-this.tableHeader = null;\r
-this.mouseListener = null;\r
-this.tableModelListener = null;\r
-this.columnComparators = null;\r
-this.sortingColumns = null;\r
-if (!Clazz.isClassDefined ("jalview.util.TableSorter.Row")) {\r
-jalview.util.TableSorter.$TableSorter$Row$ ();\r
-}\r
-if (!Clazz.isClassDefined ("jalview.util.TableSorter.TableModelHandler")) {\r
-jalview.util.TableSorter.$TableSorter$TableModelHandler$ ();\r
-}\r
-if (!Clazz.isClassDefined ("jalview.util.TableSorter.MouseHandler")) {\r
-jalview.util.TableSorter.$TableSorter$MouseHandler$ ();\r
-}\r
-if (!Clazz.isClassDefined ("jalview.util.TableSorter.SortableHeaderRenderer")) {\r
-jalview.util.TableSorter.$TableSorter$SortableHeaderRenderer$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util, "TableSorter", javax.swing.table.AbstractTableModel);\r
-Clazz.prepareFields (c$, function () {\r
-this.columnComparators =  new java.util.HashMap ();\r
-this.sortingColumns =  new java.util.ArrayList ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, jalview.util.TableSorter, []);\r
-this.mouseListener = Clazz.innerTypeInstance (jalview.util.TableSorter.MouseHandler, this, null);\r
-this.tableModelListener = Clazz.innerTypeInstance (jalview.util.TableSorter.TableModelHandler, this, null);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (tableModel) {\r
-this.construct ();\r
-this.setTableModel (tableModel);\r
-}, "javax.swing.table.TableModel");\r
-Clazz.makeConstructor (c$, \r
-function (tableModel, tableHeader) {\r
-this.construct ();\r
-this.setTableHeader (tableHeader);\r
-this.setTableModel (tableModel);\r
-}, "javax.swing.table.TableModel,javax.swing.table.JTableHeader");\r
-Clazz.defineMethod (c$, "clearSortingState", \r
-($fz = function () {\r
-this.viewToModel = null;\r
-this.modelToView = null;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "getTableModel", \r
-function () {\r
-return this.tableModel;\r
-});\r
-Clazz.defineMethod (c$, "setTableModel", \r
-function (tableModel) {\r
-if (this.tableModel != null) {\r
-this.tableModel.removeTableModelListener (this.tableModelListener);\r
-}this.tableModel = tableModel;\r
-if (this.tableModel != null) {\r
-this.tableModel.addTableModelListener (this.tableModelListener);\r
-}this.clearSortingState ();\r
-this.fireTableStructureChanged ();\r
-}, "javax.swing.table.TableModel");\r
-Clazz.defineMethod (c$, "getTableHeader", \r
-function () {\r
-return this.tableHeader;\r
-});\r
-Clazz.defineMethod (c$, "setTableHeader", \r
-function (tableHeader) {\r
-if (this.tableHeader != null) {\r
-this.tableHeader.removeMouseListener (this.mouseListener);\r
-var defaultRenderer = this.tableHeader.getDefaultRenderer ();\r
-if (Clazz.instanceOf (defaultRenderer, jalview.util.TableSorter.SortableHeaderRenderer)) {\r
-this.tableHeader.setDefaultRenderer ((defaultRenderer).tableCellRenderer);\r
-}}this.tableHeader = tableHeader;\r
-if (this.tableHeader != null) {\r
-this.tableHeader.addMouseListener (this.mouseListener);\r
-this.tableHeader.setDefaultRenderer (Clazz.innerTypeInstance (jalview.util.TableSorter.SortableHeaderRenderer, this, null, this.tableHeader.getDefaultRenderer ()));\r
-}}, "javax.swing.table.JTableHeader");\r
-Clazz.defineMethod (c$, "isSorting", \r
-function () {\r
-return this.sortingColumns.size () != 0;\r
-});\r
-Clazz.defineMethod (c$, "getDirective", \r
-($fz = function (column) {\r
-for (var i = 0; i < this.sortingColumns.size (); i++) {\r
-var directive = this.sortingColumns.get (i);\r
-if (directive.column == column) {\r
-return directive;\r
-}}\r
-return jalview.util.TableSorter.EMPTY_DIRECTIVE;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "getSortingStatus", \r
-function (column) {\r
-return this.getDirective (column).direction;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "sortingStatusChanged", \r
-($fz = function () {\r
-this.clearSortingState ();\r
-this.fireTableDataChanged ();\r
-if (this.tableHeader != null) {\r
-this.tableHeader.repaint ();\r
-}}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "setSortingStatus", \r
-function (column, status) {\r
-var directive = this.getDirective (column);\r
-if (directive !== jalview.util.TableSorter.EMPTY_DIRECTIVE) {\r
-this.sortingColumns.remove (directive);\r
-}if (status != 0) {\r
-this.sortingColumns.add ( new jalview.util.TableSorter.Directive (column, status));\r
-}this.sortingStatusChanged ();\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getHeaderRendererIcon", \r
-function (column, size) {\r
-var directive = this.getDirective (column);\r
-if (directive === jalview.util.TableSorter.EMPTY_DIRECTIVE) {\r
-return null;\r
-}return  new jalview.util.TableSorter.Arrow (directive.direction == -1, size, this.sortingColumns.indexOf (directive));\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "cancelSorting", \r
-($fz = function () {\r
-this.sortingColumns.clear ();\r
-this.sortingStatusChanged ();\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "setColumnComparator", \r
-function (type, comparator) {\r
-if (comparator == null) {\r
-this.columnComparators.remove (type);\r
-} else {\r
-this.columnComparators.put (type, comparator);\r
-}}, "Class,java.util.Comparator");\r
-Clazz.defineMethod (c$, "getComparator", \r
-function (column) {\r
-var columnType = this.tableModel.getColumnClass (column);\r
-var comparator = this.columnComparators.get (columnType);\r
-if (comparator != null) {\r
-return comparator;\r
-}if (Comparable.isAssignableFrom (columnType)) {\r
-return jalview.util.TableSorter.COMPARABLE_COMAPRATOR;\r
-}return jalview.util.TableSorter.LEXICAL_COMPARATOR;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getViewToModel", \r
-($fz = function () {\r
-if (this.viewToModel == null) {\r
-var tableModelRowCount = this.tableModel.getRowCount ();\r
-this.viewToModel =  new Array (tableModelRowCount);\r
-for (var row = 0; row < tableModelRowCount; row++) {\r
-this.viewToModel[row] = Clazz.innerTypeInstance (jalview.util.TableSorter.Row, this, null, row);\r
-}\r
-if (this.isSorting ()) {\r
-java.util.Arrays.sort (this.viewToModel);\r
-}}return this.viewToModel;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "modelIndex", \r
-function (viewIndex) {\r
-return this.getViewToModel ()[viewIndex].modelIndex;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getModelToView", \r
-($fz = function () {\r
-if (this.modelToView == null) {\r
-var n = this.getViewToModel ().length;\r
-this.modelToView =  Clazz.newIntArray (n, 0);\r
-for (var i = 0; i < n; i++) {\r
-this.modelToView[this.modelIndex (i)] = i;\r
-}\r
-}return this.modelToView;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "getRowCount", \r
-function () {\r
-return (this.tableModel == null) ? 0 : this.tableModel.getRowCount ();\r
-});\r
-Clazz.defineMethod (c$, "getColumnCount", \r
-function () {\r
-return (this.tableModel == null) ? 0 : this.tableModel.getColumnCount ();\r
-});\r
-Clazz.overrideMethod (c$, "getColumnName", \r
-function (column) {\r
-return this.tableModel.getColumnName (column);\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "getColumnClass", \r
-function (column) {\r
-return this.tableModel.getColumnClass (column);\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "isCellEditable", \r
-function (row, column) {\r
-return this.tableModel.isCellEditable (this.modelIndex (row), column);\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getValueAt", \r
-function (row, column) {\r
-return this.tableModel.getValueAt (this.modelIndex (row), column);\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "setValueAt", \r
-function (aValue, row, column) {\r
-this.tableModel.setValueAt (aValue, this.modelIndex (row), column);\r
-}, "~O,~N,~N");\r
-c$.$TableSorter$Row$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.modelIndex = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.TableSorter, "Row", null, Comparable);\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-this.modelIndex = a;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "compareTo", \r
-function (a) {\r
-var b = this.modelIndex;\r
-var c = (a).modelIndex;\r
-for (var d = this.b$["jalview.util.TableSorter"].sortingColumns.iterator (); d.hasNext (); ) {\r
-var e = d.next ();\r
-var f = e.column;\r
-var g = this.b$["jalview.util.TableSorter"].tableModel.getValueAt (b, f);\r
-var h = this.b$["jalview.util.TableSorter"].tableModel.getValueAt (c, f);\r
-var i = 0;\r
-if (g == null && h == null) {\r
-i = 0;\r
-} else if (g == null) {\r
-i = -1;\r
-} else if (h == null) {\r
-i = 1;\r
-} else {\r
-i = this.b$["jalview.util.TableSorter"].getComparator (f).compare (g, h);\r
-}if (i != 0) {\r
-return e.direction == -1 ? -i : i;\r
-}}\r
-return 0;\r
-}, "~O");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$TableSorter$TableModelHandler$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.TableSorter, "TableModelHandler", null, javax.swing.event.TableModelListener);\r
-Clazz.overrideMethod (c$, "tableChanged", \r
-function (a) {\r
-if (!this.b$["jalview.util.TableSorter"].isSorting ()) {\r
-this.b$["jalview.util.TableSorter"].clearSortingState ();\r
-this.b$["jalview.util.TableSorter"].fireTableChanged (a);\r
-return;\r
-}if (a.getFirstRow () == -1) {\r
-this.b$["jalview.util.TableSorter"].cancelSorting ();\r
-this.b$["jalview.util.TableSorter"].fireTableChanged (a);\r
-return;\r
-}var b = a.getColumn ();\r
-if (a.getFirstRow () == a.getLastRow () && b != -1 && this.b$["jalview.util.TableSorter"].getSortingStatus (b) == 0 && this.b$["jalview.util.TableSorter"].modelToView != null) {\r
-var c = this.b$["jalview.util.TableSorter"].getModelToView ()[a.getFirstRow ()];\r
-this.b$["jalview.util.TableSorter"].fireTableChanged ( new javax.swing.event.TableModelEvent (this.b$["jalview.util.TableSorter"], c, c, b, a.getType ()));\r
-return;\r
-}this.b$["jalview.util.TableSorter"].clearSortingState ();\r
-this.b$["jalview.util.TableSorter"].fireTableDataChanged ();\r
-return;\r
-}, "javax.swing.event.TableModelEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$TableSorter$MouseHandler$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.TableSorter, "MouseHandler", java.awt.event.MouseAdapter);\r
-Clazz.overrideMethod (c$, "mouseClicked", \r
-function (a) {\r
-var b = a.getSource ();\r
-var c = b.getColumnModel ();\r
-var d = c.getColumnIndexAtX (a.getX ());\r
-var e = c.getColumn (d).getModelIndex ();\r
-if (e != -1) {\r
-var f = this.b$["jalview.util.TableSorter"].getSortingStatus (e);\r
-if (!a.isControlDown ()) {\r
-this.b$["jalview.util.TableSorter"].cancelSorting ();\r
-}f = f + (a.isShiftDown () ? -1 : 1);\r
-f = (f + 4) % 3 - 1;\r
-this.b$["jalview.util.TableSorter"].setSortingStatus (e, f);\r
-}}, "java.awt.event.MouseEvent");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$TableSorter$SortableHeaderRenderer$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.tableCellRenderer = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.TableSorter, "SortableHeaderRenderer", null, javax.swing.table.TableCellRenderer);\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-this.tableCellRenderer = a;\r
-}, "javax.swing.table.TableCellRenderer");\r
-Clazz.defineMethod (c$, "getTableCellRendererComponent", \r
-function (a, b, c, d, e, f) {\r
-var g = this.tableCellRenderer.getTableCellRendererComponent (a, b, c, d, e, f);\r
-if (Clazz.instanceOf (g, javax.swing.JLabel)) {\r
-var h = g;\r
-h.setHorizontalTextPosition (2);\r
-var i = a.convertColumnIndexToModel (f);\r
-h.setIcon (this.b$["jalview.util.TableSorter"].getHeaderRendererIcon (i, h.getFont ().getSize ()));\r
-}return g;\r
-}, "javax.swing.JTable,~O,~B,~B,~N,~N");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$TableSorter$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.util, "TableSorter$1", null, java.util.Comparator);\r
-Clazz.defineMethod (c$, "compare", \r
-function (o1, o2) {\r
-return (o1).compareTo (o2);\r
-}, "~O,~O");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$TableSorter$2$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (jalview.util, "TableSorter$2", null, java.util.Comparator);\r
-Clazz.defineMethod (c$, "compare", \r
-function (o1, o2) {\r
-return o1.toString ().compareTo (o2.toString ());\r
-}, "~O,~O");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.descending = false;\r
-this.size = 0;\r
-this.priority = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.TableSorter, "Arrow", null, javax.swing.Icon);\r
-Clazz.makeConstructor (c$, \r
-function (a, b, c) {\r
-this.descending = a;\r
-this.size = b;\r
-this.priority = c;\r
-}, "~B,~N,~N");\r
-Clazz.overrideMethod (c$, "paintIcon", \r
-function (a, b, c, d) {\r
-var e = a == null ? java.awt.Color.GRAY : a.getBackground ();\r
-var f = Clazz.doubleToInt (Clazz.doubleToInt (this.size / 2) * Math.pow (0.8, this.priority));\r
-var g = this.descending ? f : -f;\r
-d = d + Clazz.doubleToInt (5 * this.size / 6) + (this.descending ? -g : 0);\r
-var h = this.descending ? 1 : -1;\r
-b.translate (c, d);\r
-b.setColor (e.darker ());\r
-b.drawLine (Clazz.doubleToInt (f / 2), g, 0, 0);\r
-b.drawLine (Clazz.doubleToInt (f / 2), g + h, 0, h);\r
-b.setColor (e.brighter ());\r
-b.drawLine (Clazz.doubleToInt (f / 2), g, f, 0);\r
-b.drawLine (Clazz.doubleToInt (f / 2), g + h, f, h);\r
-if (this.descending) {\r
-b.setColor (e.darker ().darker ());\r
-} else {\r
-b.setColor (e.brighter ().brighter ());\r
-}b.drawLine (f, 0, 0, 0);\r
-b.setColor (e);\r
-b.translate (-c, -d);\r
-}, "java.awt.Component,java.awt.Graphics,~N,~N");\r
-Clazz.overrideMethod (c$, "getIconWidth", \r
-function () {\r
-return this.size;\r
-});\r
-Clazz.overrideMethod (c$, "getIconHeight", \r
-function () {\r
-return this.size;\r
-});\r
-c$ = Clazz.p0p ();\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.column = 0;\r
-this.direction = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util.TableSorter, "Directive");\r
-Clazz.makeConstructor (c$, \r
-function (a, b) {\r
-this.column = a;\r
-this.direction = b;\r
-}, "~N,~N");\r
-c$ = Clazz.p0p ();\r
-Clazz.defineStatics (c$,\r
-"DESCENDING", -1,\r
-"NOT_SORTED", 0,\r
-"ASCENDING", 1);\r
-c$.EMPTY_DIRECTIVE = c$.prototype.EMPTY_DIRECTIVE =  new jalview.util.TableSorter.Directive (-1, 0);\r
-c$.COMPARABLE_COMAPRATOR = c$.prototype.COMPARABLE_COMAPRATOR = ((Clazz.isClassDefined ("jalview.util.TableSorter$1") ? 0 : jalview.util.TableSorter.$TableSorter$1$ ()), Clazz.innerTypeInstance (jalview.util.TableSorter$1, this, null));\r
-c$.LEXICAL_COMPARATOR = c$.prototype.LEXICAL_COMPARATOR = ((Clazz.isClassDefined ("jalview.util.TableSorter$2") ? 0 : jalview.util.TableSorter.$TableSorter$2$ ()), Clazz.innerTypeInstance (jalview.util.TableSorter$2, this, null));\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (["java.awt.event.MouseAdapter", "javax.swing.Icon", "javax.swing.event.TableModelListener", "javax.swing.table.AbstractTableModel", "$.TableCellRenderer", "java.util.ArrayList", "$.HashMap"], "jalview.util.TableSorter", ["java.awt.Color", "java.util.Arrays", "javax.swing.JLabel", "javax.swing.event.TableModelEvent"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.tableModel = null;
+this.viewToModel = null;
+this.modelToView = null;
+this.tableHeader = null;
+this.mouseListener = null;
+this.tableModelListener = null;
+this.columnComparators = null;
+this.sortingColumns = null;
+if (!Clazz.isClassDefined ("jalview.util.TableSorter.Row")) {
+jalview.util.TableSorter.$TableSorter$Row$ ();
+}
+if (!Clazz.isClassDefined ("jalview.util.TableSorter.TableModelHandler")) {
+jalview.util.TableSorter.$TableSorter$TableModelHandler$ ();
+}
+if (!Clazz.isClassDefined ("jalview.util.TableSorter.MouseHandler")) {
+jalview.util.TableSorter.$TableSorter$MouseHandler$ ();
+}
+if (!Clazz.isClassDefined ("jalview.util.TableSorter.SortableHeaderRenderer")) {
+jalview.util.TableSorter.$TableSorter$SortableHeaderRenderer$ ();
+}
+Clazz.instantialize (this, arguments);
+}, jalview.util, "TableSorter", javax.swing.table.AbstractTableModel);
+Clazz.prepareFields (c$, function () {
+this.columnComparators =  new java.util.HashMap ();
+this.sortingColumns =  new java.util.ArrayList ();
+});
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, jalview.util.TableSorter, []);
+this.mouseListener = Clazz.innerTypeInstance (jalview.util.TableSorter.MouseHandler, this, null);
+this.tableModelListener = Clazz.innerTypeInstance (jalview.util.TableSorter.TableModelHandler, this, null);
+});
+Clazz.makeConstructor (c$, 
+function (tableModel) {
+this.construct ();
+this.setTableModel (tableModel);
+}, "javax.swing.table.TableModel");
+Clazz.makeConstructor (c$, 
+function (tableModel, tableHeader) {
+this.construct ();
+this.setTableHeader (tableHeader);
+this.setTableModel (tableModel);
+}, "javax.swing.table.TableModel,javax.swing.table.JTableHeader");
+Clazz.defineMethod (c$, "clearSortingState", 
+($fz = function () {
+this.viewToModel = null;
+this.modelToView = null;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getTableModel", 
+function () {
+return this.tableModel;
+});
+Clazz.defineMethod (c$, "setTableModel", 
+function (tableModel) {
+if (this.tableModel != null) {
+this.tableModel.removeTableModelListener (this.tableModelListener);
+}this.tableModel = tableModel;
+if (this.tableModel != null) {
+this.tableModel.addTableModelListener (this.tableModelListener);
+}this.clearSortingState ();
+this.fireTableStructureChanged ();
+}, "javax.swing.table.TableModel");
+Clazz.defineMethod (c$, "getTableHeader", 
+function () {
+return this.tableHeader;
+});
+Clazz.defineMethod (c$, "setTableHeader", 
+function (tableHeader) {
+if (this.tableHeader != null) {
+this.tableHeader.removeMouseListener (this.mouseListener);
+var defaultRenderer = this.tableHeader.getDefaultRenderer ();
+if (Clazz.instanceOf (defaultRenderer, jalview.util.TableSorter.SortableHeaderRenderer)) {
+this.tableHeader.setDefaultRenderer ((defaultRenderer).tableCellRenderer);
+}}this.tableHeader = tableHeader;
+if (this.tableHeader != null) {
+this.tableHeader.addMouseListener (this.mouseListener);
+this.tableHeader.setDefaultRenderer (Clazz.innerTypeInstance (jalview.util.TableSorter.SortableHeaderRenderer, this, null, this.tableHeader.getDefaultRenderer ()));
+}}, "javax.swing.table.JTableHeader");
+Clazz.defineMethod (c$, "isSorting", 
+function () {
+return this.sortingColumns.size () != 0;
+});
+Clazz.defineMethod (c$, "getDirective", 
+($fz = function (column) {
+for (var i = 0; i < this.sortingColumns.size (); i++) {
+var directive = this.sortingColumns.get (i);
+if (directive.column == column) {
+return directive;
+}}
+return jalview.util.TableSorter.EMPTY_DIRECTIVE;
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "getSortingStatus", 
+function (column) {
+return this.getDirective (column).direction;
+}, "~N");
+Clazz.defineMethod (c$, "sortingStatusChanged", 
+($fz = function () {
+this.clearSortingState ();
+this.fireTableDataChanged ();
+if (this.tableHeader != null) {
+this.tableHeader.repaint ();
+}}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "setSortingStatus", 
+function (column, status) {
+var directive = this.getDirective (column);
+if (directive !== jalview.util.TableSorter.EMPTY_DIRECTIVE) {
+this.sortingColumns.remove (directive);
+}if (status != 0) {
+this.sortingColumns.add ( new jalview.util.TableSorter.Directive (column, status));
+}this.sortingStatusChanged ();
+}, "~N,~N");
+Clazz.defineMethod (c$, "getHeaderRendererIcon", 
+function (column, size) {
+var directive = this.getDirective (column);
+if (directive === jalview.util.TableSorter.EMPTY_DIRECTIVE) {
+return null;
+}return  new jalview.util.TableSorter.Arrow (directive.direction == -1, size, this.sortingColumns.indexOf (directive));
+}, "~N,~N");
+Clazz.defineMethod (c$, "cancelSorting", 
+($fz = function () {
+this.sortingColumns.clear ();
+this.sortingStatusChanged ();
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "setColumnComparator", 
+function (type, comparator) {
+if (comparator == null) {
+this.columnComparators.remove (type);
+} else {
+this.columnComparators.put (type, comparator);
+}}, "Class,java.util.Comparator");
+Clazz.defineMethod (c$, "getComparator", 
+function (column) {
+var columnType = this.tableModel.getColumnClass (column);
+var comparator = this.columnComparators.get (columnType);
+if (comparator != null) {
+return comparator;
+}if (Comparable.isAssignableFrom (columnType)) {
+return jalview.util.TableSorter.COMPARABLE_COMAPRATOR;
+}return jalview.util.TableSorter.LEXICAL_COMPARATOR;
+}, "~N");
+Clazz.defineMethod (c$, "getViewToModel", 
+($fz = function () {
+if (this.viewToModel == null) {
+var tableModelRowCount = this.tableModel.getRowCount ();
+this.viewToModel =  new Array (tableModelRowCount);
+for (var row = 0; row < tableModelRowCount; row++) {
+this.viewToModel[row] = Clazz.innerTypeInstance (jalview.util.TableSorter.Row, this, null, row);
+}
+if (this.isSorting ()) {
+java.util.Arrays.sort (this.viewToModel);
+}}return this.viewToModel;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "modelIndex", 
+function (viewIndex) {
+return this.getViewToModel ()[viewIndex].modelIndex;
+}, "~N");
+Clazz.defineMethod (c$, "getModelToView", 
+($fz = function () {
+if (this.modelToView == null) {
+var n = this.getViewToModel ().length;
+this.modelToView =  Clazz.newIntArray (n, 0);
+for (var i = 0; i < n; i++) {
+this.modelToView[this.modelIndex (i)] = i;
+}
+}return this.modelToView;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getRowCount", 
+function () {
+return (this.tableModel == null) ? 0 : this.tableModel.getRowCount ();
+});
+Clazz.defineMethod (c$, "getColumnCount", 
+function () {
+return (this.tableModel == null) ? 0 : this.tableModel.getColumnCount ();
+});
+Clazz.overrideMethod (c$, "getColumnName", 
+function (column) {
+return this.tableModel.getColumnName (column);
+}, "~N");
+Clazz.overrideMethod (c$, "getColumnClass", 
+function (column) {
+return this.tableModel.getColumnClass (column);
+}, "~N");
+Clazz.overrideMethod (c$, "isCellEditable", 
+function (row, column) {
+return this.tableModel.isCellEditable (this.modelIndex (row), column);
+}, "~N,~N");
+Clazz.defineMethod (c$, "getValueAt", 
+function (row, column) {
+return this.tableModel.getValueAt (this.modelIndex (row), column);
+}, "~N,~N");
+Clazz.overrideMethod (c$, "setValueAt", 
+function (aValue, row, column) {
+this.tableModel.setValueAt (aValue, this.modelIndex (row), column);
+}, "~O,~N,~N");
+c$.$TableSorter$Row$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.modelIndex = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.util.TableSorter, "Row", null, Comparable);
+Clazz.makeConstructor (c$, 
+function (a) {
+this.modelIndex = a;
+}, "~N");
+Clazz.overrideMethod (c$, "compareTo", 
+function (a) {
+var b = this.modelIndex;
+var c = (a).modelIndex;
+for (var d = this.b$["jalview.util.TableSorter"].sortingColumns.iterator (); d.hasNext (); ) {
+var e = d.next ();
+var f = e.column;
+var g = this.b$["jalview.util.TableSorter"].tableModel.getValueAt (b, f);
+var h = this.b$["jalview.util.TableSorter"].tableModel.getValueAt (c, f);
+var i = 0;
+if (g == null && h == null) {
+i = 0;
+} else if (g == null) {
+i = -1;
+} else if (h == null) {
+i = 1;
+} else {
+i = this.b$["jalview.util.TableSorter"].getComparator (f).compare (g, h);
+}if (i != 0) {
+return e.direction == -1 ? -i : i;
+}}
+return 0;
+}, "~O");
+c$ = Clazz.p0p ();
+};
+c$.$TableSorter$TableModelHandler$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+Clazz.instantialize (this, arguments);
+}, jalview.util.TableSorter, "TableModelHandler", null, javax.swing.event.TableModelListener);
+Clazz.overrideMethod (c$, "tableChanged", 
+function (a) {
+if (!this.b$["jalview.util.TableSorter"].isSorting ()) {
+this.b$["jalview.util.TableSorter"].clearSortingState ();
+this.b$["jalview.util.TableSorter"].fireTableChanged (a);
+return;
+}if (a.getFirstRow () == -1) {
+this.b$["jalview.util.TableSorter"].cancelSorting ();
+this.b$["jalview.util.TableSorter"].fireTableChanged (a);
+return;
+}var b = a.getColumn ();
+if (a.getFirstRow () == a.getLastRow () && b != -1 && this.b$["jalview.util.TableSorter"].getSortingStatus (b) == 0 && this.b$["jalview.util.TableSorter"].modelToView != null) {
+var c = this.b$["jalview.util.TableSorter"].getModelToView ()[a.getFirstRow ()];
+this.b$["jalview.util.TableSorter"].fireTableChanged ( new javax.swing.event.TableModelEvent (this.b$["jalview.util.TableSorter"], c, c, b, a.getType ()));
+return;
+}this.b$["jalview.util.TableSorter"].clearSortingState ();
+this.b$["jalview.util.TableSorter"].fireTableDataChanged ();
+return;
+}, "javax.swing.event.TableModelEvent");
+c$ = Clazz.p0p ();
+};
+c$.$TableSorter$MouseHandler$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+Clazz.instantialize (this, arguments);
+}, jalview.util.TableSorter, "MouseHandler", java.awt.event.MouseAdapter);
+Clazz.overrideMethod (c$, "mouseClicked", 
+function (a) {
+var b = a.getSource ();
+var c = b.getColumnModel ();
+var d = c.getColumnIndexAtX (a.getX ());
+var e = c.getColumn (d).getModelIndex ();
+if (e != -1) {
+var f = this.b$["jalview.util.TableSorter"].getSortingStatus (e);
+if (!a.isControlDown ()) {
+this.b$["jalview.util.TableSorter"].cancelSorting ();
+}f = f + (a.isShiftDown () ? -1 : 1);
+f = (f + 4) % 3 - 1;
+this.b$["jalview.util.TableSorter"].setSortingStatus (e, f);
+}}, "java.awt.event.MouseEvent");
+c$ = Clazz.p0p ();
+};
+c$.$TableSorter$SortableHeaderRenderer$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.tableCellRenderer = null;
+Clazz.instantialize (this, arguments);
+}, jalview.util.TableSorter, "SortableHeaderRenderer", null, javax.swing.table.TableCellRenderer);
+Clazz.makeConstructor (c$, 
+function (a) {
+this.tableCellRenderer = a;
+}, "javax.swing.table.TableCellRenderer");
+Clazz.defineMethod (c$, "getTableCellRendererComponent", 
+function (a, b, c, d, e, f) {
+var g = this.tableCellRenderer.getTableCellRendererComponent (a, b, c, d, e, f);
+if (Clazz.instanceOf (g, javax.swing.JLabel)) {
+var h = g;
+h.setHorizontalTextPosition (2);
+var i = a.convertColumnIndexToModel (f);
+h.setIcon (this.b$["jalview.util.TableSorter"].getHeaderRendererIcon (i, h.getFont ().getSize ()));
+}return g;
+}, "javax.swing.JTable,~O,~B,~B,~N,~N");
+c$ = Clazz.p0p ();
+};
+c$.$TableSorter$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.util, "TableSorter$1", null, java.util.Comparator);
+Clazz.defineMethod (c$, "compare", 
+function (o1, o2) {
+return (o1).compareTo (o2);
+}, "~O,~O");
+c$ = Clazz.p0p ();
+};
+c$.$TableSorter$2$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (jalview.util, "TableSorter$2", null, java.util.Comparator);
+Clazz.defineMethod (c$, "compare", 
+function (o1, o2) {
+return o1.toString ().compareTo (o2.toString ());
+}, "~O,~O");
+c$ = Clazz.p0p ();
+};
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+this.descending = false;
+this.size = 0;
+this.priority = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.util.TableSorter, "Arrow", null, javax.swing.Icon);
+Clazz.makeConstructor (c$, 
+function (a, b, c) {
+this.descending = a;
+this.size = b;
+this.priority = c;
+}, "~B,~N,~N");
+Clazz.overrideMethod (c$, "paintIcon", 
+function (a, b, c, d) {
+var e = a == null ? java.awt.Color.GRAY : a.getBackground ();
+var f = Clazz.doubleToInt (Clazz.doubleToInt (this.size / 2) * Math.pow (0.8, this.priority));
+var g = this.descending ? f : -f;
+d = d + Clazz.doubleToInt (5 * this.size / 6) + (this.descending ? -g : 0);
+var h = this.descending ? 1 : -1;
+b.translate (c, d);
+b.setColor (e.darker ());
+b.drawLine (Clazz.doubleToInt (f / 2), g, 0, 0);
+b.drawLine (Clazz.doubleToInt (f / 2), g + h, 0, h);
+b.setColor (e.brighter ());
+b.drawLine (Clazz.doubleToInt (f / 2), g, f, 0);
+b.drawLine (Clazz.doubleToInt (f / 2), g + h, f, h);
+if (this.descending) {
+b.setColor (e.darker ().darker ());
+} else {
+b.setColor (e.brighter ().brighter ());
+}b.drawLine (f, 0, 0, 0);
+b.setColor (e);
+b.translate (-c, -d);
+}, "java.awt.Component,java.awt.Graphics,~N,~N");
+Clazz.overrideMethod (c$, "getIconWidth", 
+function () {
+return this.size;
+});
+Clazz.overrideMethod (c$, "getIconHeight", 
+function () {
+return this.size;
+});
+c$ = Clazz.p0p ();
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+this.column = 0;
+this.direction = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.util.TableSorter, "Directive");
+Clazz.makeConstructor (c$, 
+function (a, b) {
+this.column = a;
+this.direction = b;
+}, "~N,~N");
+c$ = Clazz.p0p ();
+Clazz.defineStatics (c$,
+"DESCENDING", -1,
+"NOT_SORTED", 0,
+"ASCENDING", 1);
+c$.EMPTY_DIRECTIVE = c$.prototype.EMPTY_DIRECTIVE =  new jalview.util.TableSorter.Directive (-1, 0);
+c$.COMPARABLE_COMAPRATOR = c$.prototype.COMPARABLE_COMAPRATOR = ((Clazz.isClassDefined ("jalview.util.TableSorter$1") ? 0 : jalview.util.TableSorter.$TableSorter$1$ ()), Clazz.innerTypeInstance (jalview.util.TableSorter$1, this, null));
+c$.LEXICAL_COMPARATOR = c$.prototype.LEXICAL_COMPARATOR = ((Clazz.isClassDefined ("jalview.util.TableSorter$2") ? 0 : jalview.util.TableSorter.$TableSorter$2$ ()), Clazz.innerTypeInstance (jalview.util.TableSorter$2, this, null));
+});
index da2ea87..0e8bcb6 100644 (file)
Binary files a/bin/jalview/util/UrlLink.class and b/bin/jalview/util/UrlLink.class differ
index c50c6ae..a28894b 100644 (file)
-Clazz.declarePackage ("jalview.util");\r
-Clazz.load (null, "jalview.util.UrlLink", ["jalview.jsdev.RegExp", "java.util.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.url_suffix = null;\r
-this.url_prefix = null;\r
-this.target = null;\r
-this.label = null;\r
-this.regexReplace = null;\r
-this.dynamic = false;\r
-this.invalidMessage = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.util, "UrlLink");\r
-Clazz.makeConstructor (c$, \r
-function (link) {\r
-var sep = link.indexOf ("|");\r
-var psqid = link.indexOf ("$SEQUENCE_ID");\r
-if (psqid > -1) {\r
-this.dynamic = true;\r
-var p = sep;\r
-do {\r
-sep = p;\r
-p = link.indexOf ("|", sep + 1);\r
-} while (p > sep && p < psqid);\r
-this.label = link.substring (0, sep);\r
-if (this.label.indexOf ("|") > -1) {\r
-this.target = this.label.substring (0, this.label.indexOf ("|"));\r
-} else if (this.label.indexOf (" ") > 2) {\r
-this.target = this.label.substring (0, this.label.indexOf (" "));\r
-} else {\r
-this.target = this.label;\r
-}this.url_prefix = link.substring (sep + 1, psqid);\r
-if (link.indexOf ("$SEQUENCE_ID=/") == psqid && (p = link.indexOf ("/=$", psqid + 14)) > psqid + 14) {\r
-this.url_suffix = link.substring (p + 3);\r
-this.regexReplace = link.substring (psqid + 14, p);\r
-try {\r
-var rg = jalview.jsdev.RegExp.perlCode ("/" + this.regexReplace + "/");\r
-if (rg == null) {\r
-this.invalidMessage = "Invalid Regular Expression : '" + this.regexReplace + "'\n";\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-this.invalidMessage = "Invalid Regular Expression : '" + this.regexReplace + "'\n";\r
-} else {\r
-throw e;\r
-}\r
-}\r
-} else {\r
-this.regexReplace = null;\r
-if (link.indexOf ("$SEQUENCE_ID$") == psqid) {\r
-this.url_suffix = link.substring (psqid + 13);\r
-this.regexReplace = null;\r
-} else {\r
-this.invalidMessage = "Warning: invalid regex structure for URL link : " + link;\r
-}}} else {\r
-this.target = link.substring (0, sep);\r
-this.label = link.substring (0, sep = link.lastIndexOf ("|"));\r
-this.url_prefix = link.substring (sep + 1);\r
-this.regexReplace = null;\r
-this.url_suffix = null;\r
-}}, "~S");\r
-Clazz.defineMethod (c$, "getUrl_suffix", \r
-function () {\r
-return this.url_suffix;\r
-});\r
-Clazz.defineMethod (c$, "getUrl_prefix", \r
-function () {\r
-return this.url_prefix;\r
-});\r
-Clazz.defineMethod (c$, "getTarget", \r
-function () {\r
-return this.target;\r
-});\r
-Clazz.defineMethod (c$, "getLabel", \r
-function () {\r
-return this.label;\r
-});\r
-Clazz.defineMethod (c$, "getRegexReplace", \r
-function () {\r
-return this.regexReplace;\r
-});\r
-Clazz.defineMethod (c$, "getInvalidMessage", \r
-function () {\r
-return this.invalidMessage;\r
-});\r
-Clazz.defineMethod (c$, "isValid", \r
-function () {\r
-return this.invalidMessage == null;\r
-});\r
-Clazz.defineMethod (c$, "makeUrls", \r
-function (idstring, onlyIfMatches) {\r
-if (this.dynamic) {\r
-if (this.regexReplace != null) {\r
-var rg = jalview.jsdev.RegExp.perlCode ("/" + this.regexReplace + "/");\r
-if (rg.search (idstring)) {\r
-var ns = rg.numSubs ();\r
-if (ns == 0) {\r
-return  Clazz.newArray (-1, [rg.stringMatchedI (ns), this.url_prefix + rg.stringMatched () + this.url_suffix]);\r
-} else {\r
-for (var s = 0; s <= rg.numSubs (); s++) {\r
-System.err.println ("Sub " + s + " : " + rg.matchedFromI (s) + " : " + rg.matchedToI (s) + " : '" + rg.stringMatchedI (s) + "'");\r
-}\r
-var subs =  new java.util.Vector ();\r
-var s = 0;\r
-while (s <= ns) {\r
-if (s + 1 <= ns && rg.matchedToI (s) > -1 && rg.matchedToI (s + 1) > -1 && rg.matchedToI (s + 1) < rg.matchedToI (s)) {\r
-var r = s + 1;\r
-var mtch = "";\r
-while (r <= ns && rg.matchedToI (r) <= rg.matchedToI (s)) {\r
-if (rg.matchedFromI (r) > -1) {\r
-mtch += rg.stringMatchedI (r);\r
-}r++;\r
-}\r
-if (mtch.length > 0) {\r
-subs.addElement (mtch);\r
-subs.addElement (this.url_prefix + mtch + this.url_suffix);\r
-}s = r;\r
-} else {\r
-if (rg.matchedFromI (s) > -1) {\r
-subs.addElement (rg.stringMatchedI (s));\r
-subs.addElement (this.url_prefix + rg.stringMatchedI (s) + this.url_suffix);\r
-}s++;\r
-}}\r
-var res =  new Array (subs.size ());\r
-for (var r = 0, rs = subs.size (); r < rs; r++) {\r
-res[r] = subs.elementAt (r);\r
-}\r
-subs.removeAllElements ();\r
-return res;\r
-}}if (onlyIfMatches) {\r
-return null;\r
-}}if (idstring.indexOf ("|") > -1) {\r
-idstring = idstring.substring (idstring.lastIndexOf ("|") + 1);\r
-}return  Clazz.newArray (-1, [idstring, this.url_prefix + idstring + this.url_suffix]);\r
-} else {\r
-return  Clazz.newArray (-1, ["", this.url_prefix]);\r
-}}, "~S,~B");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return this.label + "|" + this.url_prefix + (this.dynamic ? ("$SEQUENCE_ID" + ((this.regexReplace != null) ? "=" + this.regexReplace + "=$" : "$")) : "") + ((this.url_suffix == null) ? "" : this.url_suffix);\r
-});\r
-Clazz.defineMethod (c$, "isDynamic", \r
-function () {\r
-return this.dynamic;\r
-});\r
-Clazz.defineMethod (c$, "setLabel", \r
-function (newlabel) {\r
-this.label = newlabel;\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("jalview.util");
+Clazz.load (null, "jalview.util.UrlLink", ["jalview.jsdev.RegExp", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.url_suffix = null;
+this.url_prefix = null;
+this.target = null;
+this.label = null;
+this.regexReplace = null;
+this.dynamic = false;
+this.invalidMessage = null;
+Clazz.instantialize (this, arguments);
+}, jalview.util, "UrlLink");
+Clazz.makeConstructor (c$, 
+function (link) {
+var sep = link.indexOf ("|");
+var psqid = link.indexOf ("$SEQUENCE_ID");
+if (psqid > -1) {
+this.dynamic = true;
+var p = sep;
+do {
+sep = p;
+p = link.indexOf ("|", sep + 1);
+} while (p > sep && p < psqid);
+this.label = link.substring (0, sep);
+if (this.label.indexOf ("|") > -1) {
+this.target = this.label.substring (0, this.label.indexOf ("|"));
+} else if (this.label.indexOf (" ") > 2) {
+this.target = this.label.substring (0, this.label.indexOf (" "));
+} else {
+this.target = this.label;
+}this.url_prefix = link.substring (sep + 1, psqid);
+if (link.indexOf ("$SEQUENCE_ID=/") == psqid && (p = link.indexOf ("/=$", psqid + 14)) > psqid + 14) {
+this.url_suffix = link.substring (p + 3);
+this.regexReplace = link.substring (psqid + 14, p);
+try {
+var rg = jalview.jsdev.RegExp.perlCode ("/" + this.regexReplace + "/");
+if (rg == null) {
+this.invalidMessage = "Invalid Regular Expression : '" + this.regexReplace + "'\n";
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+this.invalidMessage = "Invalid Regular Expression : '" + this.regexReplace + "'\n";
+} else {
+throw e;
+}
+}
+} else {
+this.regexReplace = null;
+if (link.indexOf ("$SEQUENCE_ID$") == psqid) {
+this.url_suffix = link.substring (psqid + 13);
+this.regexReplace = null;
+} else {
+this.invalidMessage = "Warning: invalid regex structure for URL link : " + link;
+}}} else {
+this.target = link.substring (0, sep);
+this.label = link.substring (0, sep = link.lastIndexOf ("|"));
+this.url_prefix = link.substring (sep + 1);
+this.regexReplace = null;
+this.url_suffix = null;
+}}, "~S");
+Clazz.defineMethod (c$, "getUrl_suffix", 
+function () {
+return this.url_suffix;
+});
+Clazz.defineMethod (c$, "getUrl_prefix", 
+function () {
+return this.url_prefix;
+});
+Clazz.defineMethod (c$, "getTarget", 
+function () {
+return this.target;
+});
+Clazz.defineMethod (c$, "getLabel", 
+function () {
+return this.label;
+});
+Clazz.defineMethod (c$, "getRegexReplace", 
+function () {
+return this.regexReplace;
+});
+Clazz.defineMethod (c$, "getInvalidMessage", 
+function () {
+return this.invalidMessage;
+});
+Clazz.defineMethod (c$, "isValid", 
+function () {
+return this.invalidMessage == null;
+});
+Clazz.defineMethod (c$, "makeUrls", 
+function (idstring, onlyIfMatches) {
+if (this.dynamic) {
+if (this.regexReplace != null) {
+var rg = jalview.jsdev.RegExp.perlCode ("/" + this.regexReplace + "/");
+if (rg.search (idstring)) {
+var ns = rg.numSubs ();
+if (ns == 0) {
+return  Clazz.newArray (-1, [rg.stringMatchedI (ns), this.url_prefix + rg.stringMatched () + this.url_suffix]);
+} else {
+for (var s = 0; s <= rg.numSubs (); s++) {
+System.err.println ("Sub " + s + " : " + rg.matchedFromI (s) + " : " + rg.matchedToI (s) + " : '" + rg.stringMatchedI (s) + "'");
+}
+var subs =  new java.util.Vector ();
+var s = 0;
+while (s <= ns) {
+if (s + 1 <= ns && rg.matchedToI (s) > -1 && rg.matchedToI (s + 1) > -1 && rg.matchedToI (s + 1) < rg.matchedToI (s)) {
+var r = s + 1;
+var mtch = "";
+while (r <= ns && rg.matchedToI (r) <= rg.matchedToI (s)) {
+if (rg.matchedFromI (r) > -1) {
+mtch += rg.stringMatchedI (r);
+}r++;
+}
+if (mtch.length > 0) {
+subs.addElement (mtch);
+subs.addElement (this.url_prefix + mtch + this.url_suffix);
+}s = r;
+} else {
+if (rg.matchedFromI (s) > -1) {
+subs.addElement (rg.stringMatchedI (s));
+subs.addElement (this.url_prefix + rg.stringMatchedI (s) + this.url_suffix);
+}s++;
+}}
+var res =  new Array (subs.size ());
+for (var r = 0, rs = subs.size (); r < rs; r++) {
+res[r] = subs.elementAt (r);
+}
+subs.removeAllElements ();
+return res;
+}}if (onlyIfMatches) {
+return null;
+}}if (idstring.indexOf ("|") > -1) {
+idstring = idstring.substring (idstring.lastIndexOf ("|") + 1);
+}return  Clazz.newArray (-1, [idstring, this.url_prefix + idstring + this.url_suffix]);
+} else {
+return  Clazz.newArray (-1, ["", this.url_prefix]);
+}}, "~S,~B");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return this.label + "|" + this.url_prefix + (this.dynamic ? ("$SEQUENCE_ID" + ((this.regexReplace != null) ? "=" + this.regexReplace + "=$" : "$")) : "") + ((this.url_suffix == null) ? "" : this.url_suffix);
+});
+Clazz.defineMethod (c$, "isDynamic", 
+function () {
+return this.dynamic;
+});
+Clazz.defineMethod (c$, "setLabel", 
+function (newlabel) {
+this.label = newlabel;
+}, "~S");
+});
diff --git a/bin/jalview/util/jarInputStreamProvider.js b/bin/jalview/util/jarInputStreamProvider.js
deleted file mode 100644 (file)
index 536a4ea..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Clazz.declarePackage ("jalview.util");\r
-Clazz.declareInterface (jalview.util, "jarInputStreamProvider");\r
index 6f07731..cdbd489 100644 (file)
-Clazz.declarePackage ("jalview.viewmodel");\r
-Clazz.load (["jalview.api.AlignViewportI", "jalview.structure.CommandListener", "$.VamsasSource", "jalview.datamodel.ColumnSelection", "jalview.viewmodel.styles.ViewStyle", "jalview.workers.AlignCalcManager", "java.beans.PropertyChangeSupport", "java.util.ArrayDeque", "$.HashMap"], "jalview.viewmodel.AlignmentViewport", ["jalview.analysis.Conservation", "jalview.datamodel.AlignmentAnnotation", "$.AlignmentView", "$.CigarArray", "$.Sequence", "$.SequenceGroup", "jalview.schemes.Blosum62ColourScheme", "$.PIDColourScheme", "$.ResidueProperties", "jalview.util.Comparison", "$.MappingUtils", "jalview.workers.ComplementConsensusThread", "$.ConsensusThread", "$.ConservationThread", "$.StrucConsensusThread", "java.awt.Color", "java.util.ArrayList", "$.BitSet", "$.Hashtable"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.viewStyle = null;\r
-this.codingComplement = null;\r
-this.featuresDisplayed = null;\r
-this.historyList = null;\r
-this.redoList = null;\r
-this.alignment = null;\r
-this.sequenceSetID = null;\r
-this.$isDataset = false;\r
-this.hiddenRepSequences = null;\r
-this.colSel = null;\r
-this.autoCalculateConsensus = true;\r
-this.autoCalculateStrucConsensus = true;\r
-this.ignoreGapsInConsensusCalculation = false;\r
-this.globalColourScheme = null;\r
-this.consensus = null;\r
-this.complementConsensus = null;\r
-this.strucConsensus = null;\r
-this.conservation = null;\r
-this.quality = null;\r
-this.groupConsensus = null;\r
-this.groupConservation = null;\r
-this.hconsensus = null;\r
-this.hcomplementConsensus = null;\r
-this.hStrucConsensus = null;\r
-this.hconservation = null;\r
-this.ConsPercGaps = 25;\r
-this.calculator = null;\r
-this.showGroupConservation = false;\r
-this.showGroupConsensus = false;\r
-this.showSequenceLogo = false;\r
-this.normaliseSequenceLogo = false;\r
-this.showConsensusHistogram = true;\r
-this.padGaps = false;\r
-this.sortByTree = false;\r
-this.selectionGroup = null;\r
-this.viewId = null;\r
-this.sgrouphash = -1;\r
-this.colselhash = -1;\r
-this.changeSupport = null;\r
-this.showConservation = true;\r
-this.showQuality = true;\r
-this.showConsensus = true;\r
-this.sequenceColours = null;\r
-this.sortAnnotationsBy = null;\r
-this.showAutocalculatedAbove = false;\r
-this.followHighlight = true;\r
-this.startRes = 0;\r
-this.endRes = 0;\r
-this.startSeq = 0;\r
-this.endSeq = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.viewmodel, "AlignmentViewport", null, [jalview.api.AlignViewportI, jalview.structure.CommandListener, jalview.structure.VamsasSource]);\r
-Clazz.prepareFields (c$, function () {\r
-this.viewStyle =  new jalview.viewmodel.styles.ViewStyle ();\r
-this.historyList =  new java.util.ArrayDeque ();\r
-this.redoList =  new java.util.ArrayDeque ();\r
-this.colSel =  new jalview.datamodel.ColumnSelection ();\r
-this.calculator =  new jalview.workers.AlignCalcManager ();\r
-this.changeSupport =  new java.beans.PropertyChangeSupport (this);\r
-this.sequenceColours =  new java.util.HashMap ();\r
-});\r
-Clazz.defineMethod (c$, "setFontName", \r
-function (name) {\r
-this.viewStyle.setFontName (name);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setFontStyle", \r
-function (style) {\r
-this.viewStyle.setFontStyle (style);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setFontSize", \r
-function (size) {\r
-this.viewStyle.setFontSize (size);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getFontStyle", \r
-function () {\r
-return this.viewStyle.getFontStyle ();\r
-});\r
-Clazz.defineMethod (c$, "getFontName", \r
-function () {\r
-return this.viewStyle.getFontName ();\r
-});\r
-Clazz.defineMethod (c$, "getFontSize", \r
-function () {\r
-return this.viewStyle.getFontSize ();\r
-});\r
-Clazz.defineMethod (c$, "setUpperCasebold", \r
-function (upperCasebold) {\r
-this.viewStyle.setUpperCasebold (upperCasebold);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isUpperCasebold", \r
-function () {\r
-return this.viewStyle.isUpperCasebold ();\r
-});\r
-Clazz.defineMethod (c$, "isSeqNameItalics", \r
-function () {\r
-return this.viewStyle.isSeqNameItalics ();\r
-});\r
-Clazz.defineMethod (c$, "setColourByReferenceSeq", \r
-function (colourByReferenceSeq) {\r
-this.viewStyle.setColourByReferenceSeq (colourByReferenceSeq);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setColourAppliesToAllGroups", \r
-function (b) {\r
-this.viewStyle.setColourAppliesToAllGroups (b);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getColourAppliesToAllGroups", \r
-function () {\r
-return this.viewStyle.getColourAppliesToAllGroups ();\r
-});\r
-Clazz.defineMethod (c$, "getAbovePIDThreshold", \r
-function () {\r
-return this.viewStyle.getAbovePIDThreshold ();\r
-});\r
-Clazz.defineMethod (c$, "setIncrement", \r
-function (inc) {\r
-this.viewStyle.setIncrement (inc);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getIncrement", \r
-function () {\r
-return this.viewStyle.getIncrement ();\r
-});\r
-Clazz.defineMethod (c$, "setConservationSelected", \r
-function (b) {\r
-this.viewStyle.setConservationSelected (b);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setShowHiddenMarkers", \r
-function (show) {\r
-this.viewStyle.setShowHiddenMarkers (show);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getShowHiddenMarkers", \r
-function () {\r
-return this.viewStyle.getShowHiddenMarkers ();\r
-});\r
-Clazz.defineMethod (c$, "setScaleRightWrapped", \r
-function (b) {\r
-this.viewStyle.setScaleRightWrapped (b);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setScaleLeftWrapped", \r
-function (b) {\r
-this.viewStyle.setScaleLeftWrapped (b);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setScaleAboveWrapped", \r
-function (b) {\r
-this.viewStyle.setScaleAboveWrapped (b);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getScaleLeftWrapped", \r
-function () {\r
-return this.viewStyle.getScaleLeftWrapped ();\r
-});\r
-Clazz.defineMethod (c$, "getScaleAboveWrapped", \r
-function () {\r
-return this.viewStyle.getScaleAboveWrapped ();\r
-});\r
-Clazz.defineMethod (c$, "getScaleRightWrapped", \r
-function () {\r
-return this.viewStyle.getScaleRightWrapped ();\r
-});\r
-Clazz.defineMethod (c$, "setAbovePIDThreshold", \r
-function (b) {\r
-this.viewStyle.setAbovePIDThreshold (b);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setThreshold", \r
-function (thresh) {\r
-this.viewStyle.setThreshold (thresh);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getThreshold", \r
-function () {\r
-return this.viewStyle.getThreshold ();\r
-});\r
-Clazz.defineMethod (c$, "getShowJVSuffix", \r
-function () {\r
-return this.viewStyle.getShowJVSuffix ();\r
-});\r
-Clazz.defineMethod (c$, "setShowJVSuffix", \r
-function (b) {\r
-this.viewStyle.setShowJVSuffix (b);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setWrapAlignment", \r
-function (state) {\r
-this.viewStyle.setWrapAlignment (state);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setShowText", \r
-function (state) {\r
-this.viewStyle.setShowText (state);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setRenderGaps", \r
-function (state) {\r
-this.viewStyle.setRenderGaps (state);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getColourText", \r
-function () {\r
-return this.viewStyle.getColourText ();\r
-});\r
-Clazz.defineMethod (c$, "setColourText", \r
-function (state) {\r
-this.viewStyle.setColourText (state);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getWrapAlignment", \r
-function () {\r
-return this.viewStyle.getWrapAlignment ();\r
-});\r
-Clazz.defineMethod (c$, "getShowText", \r
-function () {\r
-return this.viewStyle.getShowText ();\r
-});\r
-Clazz.defineMethod (c$, "getWrappedWidth", \r
-function () {\r
-return this.viewStyle.getWrappedWidth ();\r
-});\r
-Clazz.defineMethod (c$, "setWrappedWidth", \r
-function (w) {\r
-this.viewStyle.setWrappedWidth (w);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getCharHeight", \r
-function () {\r
-return this.viewStyle.getCharHeight ();\r
-});\r
-Clazz.defineMethod (c$, "setCharHeight", \r
-function (h) {\r
-this.viewStyle.setCharHeight (h);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getCharWidth", \r
-function () {\r
-return this.viewStyle.getCharWidth ();\r
-});\r
-Clazz.defineMethod (c$, "setCharWidth", \r
-function (w) {\r
-this.viewStyle.setCharWidth (w);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getShowBoxes", \r
-function () {\r
-return this.viewStyle.getShowBoxes ();\r
-});\r
-Clazz.defineMethod (c$, "getShowUnconserved", \r
-function () {\r
-return this.viewStyle.getShowUnconserved ();\r
-});\r
-Clazz.defineMethod (c$, "setShowUnconserved", \r
-function (showunconserved) {\r
-this.viewStyle.setShowUnconserved (showunconserved);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setSeqNameItalics", \r
-function (default1) {\r
-this.viewStyle.setSeqNameItalics (default1);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getAlignment", \r
-function () {\r
-return this.alignment;\r
-});\r
-Clazz.overrideMethod (c$, "getGapCharacter", \r
-function () {\r
-return this.alignment.getGapCharacter ();\r
-});\r
-Clazz.defineMethod (c$, "setDataset", \r
-function (b) {\r
-this.$isDataset = b;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isDataset", \r
-function () {\r
-return this.$isDataset;\r
-});\r
-Clazz.overrideMethod (c$, "setGlobalColourScheme", \r
-function (cs) {\r
-this.globalColourScheme = cs;\r
-var recalc = false;\r
-if (cs != null) {\r
-cs.setConservationApplied (recalc = this.getConservationSelected ());\r
-if (this.getAbovePIDThreshold () || Clazz.instanceOf (cs, jalview.schemes.PIDColourScheme) || Clazz.instanceOf (cs, jalview.schemes.Blosum62ColourScheme)) {\r
-recalc = true;\r
-cs.setThreshold (this.viewStyle.getThreshold (), this.ignoreGapsInConsensusCalculation);\r
-} else {\r
-cs.setThreshold (0, this.ignoreGapsInConsensusCalculation);\r
-}if (recalc) {\r
-cs.setConsensus (this.hconsensus);\r
-cs.setConservation (this.hconservation);\r
-}cs.alignmentChanged (this.alignment, this.hiddenRepSequences);\r
-}if (this.getColourAppliesToAllGroups ()) {\r
-for (var sg, $sg = this.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-if (cs == null) {\r
-sg.cs = null;\r
-continue;\r
-}sg.cs = cs.applyTo (sg, this.getHiddenRepSequences ());\r
-sg.setConsPercGaps (this.ConsPercGaps);\r
-if (this.getAbovePIDThreshold () || Clazz.instanceOf (cs, jalview.schemes.PIDColourScheme) || Clazz.instanceOf (cs, jalview.schemes.Blosum62ColourScheme)) {\r
-sg.cs.setThreshold (this.viewStyle.getThreshold (), this.isIgnoreGapsConsensus ());\r
-recalc = true;\r
-} else {\r
-sg.cs.setThreshold (0, this.isIgnoreGapsConsensus ());\r
-}if (this.getConservationSelected ()) {\r
-sg.cs.setConservationApplied (true);\r
-recalc = true;\r
-} else {\r
-sg.cs.setConservation (null);\r
-}if (recalc) {\r
-sg.recalcConservation ();\r
-} else {\r
-sg.cs.alignmentChanged (sg, this.hiddenRepSequences);\r
-}}\r
-}}, "jalview.schemes.ColourSchemeI");\r
-Clazz.overrideMethod (c$, "getGlobalColourScheme", \r
-function () {\r
-return this.globalColourScheme;\r
-});\r
-Clazz.overrideMethod (c$, "setConservation", \r
-function (cons) {\r
-this.hconservation = cons;\r
-}, "jalview.analysis.Conservation");\r
-Clazz.overrideMethod (c$, "getConsPercGaps", \r
-function () {\r
-return this.ConsPercGaps;\r
-});\r
-Clazz.overrideMethod (c$, "setSequenceConsensusHash", \r
-function (hconsensus) {\r
-this.hconsensus = hconsensus;\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "setComplementConsensusHash", \r
-function (hconsensus) {\r
-this.hcomplementConsensus = hconsensus;\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "getSequenceConsensusHash", \r
-function () {\r
-return this.hconsensus;\r
-});\r
-Clazz.overrideMethod (c$, "getComplementConsensusHash", \r
-function () {\r
-return this.hcomplementConsensus;\r
-});\r
-Clazz.overrideMethod (c$, "getRnaStructureConsensusHash", \r
-function () {\r
-return this.hStrucConsensus;\r
-});\r
-Clazz.overrideMethod (c$, "setRnaStructureConsensusHash", \r
-function (hStrucConsensus) {\r
-this.hStrucConsensus = hStrucConsensus;\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "getAlignmentQualityAnnot", \r
-function () {\r
-return this.quality;\r
-});\r
-Clazz.overrideMethod (c$, "getAlignmentConservationAnnotation", \r
-function () {\r
-return this.conservation;\r
-});\r
-Clazz.overrideMethod (c$, "getAlignmentConsensusAnnotation", \r
-function () {\r
-return this.consensus;\r
-});\r
-Clazz.overrideMethod (c$, "getComplementConsensusAnnotation", \r
-function () {\r
-return this.complementConsensus;\r
-});\r
-Clazz.overrideMethod (c$, "getAlignmentStrucConsensusAnnotation", \r
-function () {\r
-return this.strucConsensus;\r
-});\r
-Clazz.defineMethod (c$, "updateConservation", \r
-function (ap) {\r
-if (this.alignment.isNucleotide () || this.conservation == null || !this.autoCalculateConsensus) {\r
-return;\r
-}if (this.calculator.getRegisteredWorkersOfClass (jalview.workers.ConservationThread) == null) {\r
-this.calculator.registerWorker ( new jalview.workers.ConservationThread (this, ap));\r
-}}, "jalview.api.AlignmentViewPanel");\r
-Clazz.defineMethod (c$, "updateConsensus", \r
-function (ap) {\r
-if (this.consensus == null || !this.autoCalculateConsensus) {\r
-return;\r
-}if (this.calculator.getRegisteredWorkersOfClass (jalview.workers.ConsensusThread) == null) {\r
-this.calculator.registerWorker ( new jalview.workers.ConsensusThread (this, ap));\r
-}var al = this.getAlignment ();\r
-if (!al.isNucleotide () && al.getCodonFrames () != null && !al.getCodonFrames ().isEmpty ()) {\r
-if (this.calculator.getRegisteredWorkersOfClass (jalview.workers.ComplementConsensusThread) == null) {\r
-this.calculator.registerWorker ( new jalview.workers.ComplementConsensusThread (this, ap));\r
-}}}, "jalview.api.AlignmentViewPanel");\r
-Clazz.defineMethod (c$, "updateStrucConsensus", \r
-function (ap) {\r
-if (this.autoCalculateStrucConsensus && this.strucConsensus == null && this.alignment.isNucleotide () && this.alignment.hasRNAStructure ()) {\r
-this.initRNAStructure ();\r
-}if (this.strucConsensus == null || !this.autoCalculateStrucConsensus) {\r
-return;\r
-}if (this.calculator.getRegisteredWorkersOfClass (jalview.workers.StrucConsensusThread) == null) {\r
-this.calculator.registerWorker ( new jalview.workers.StrucConsensusThread (this, ap));\r
-}}, "jalview.api.AlignmentViewPanel");\r
-Clazz.defineMethod (c$, "isCalcInProgress", \r
-function () {\r
-return this.calculator.isWorking ();\r
-});\r
-Clazz.overrideMethod (c$, "isCalculationInProgress", \r
-function (alignmentAnnotation) {\r
-if (!alignmentAnnotation.autoCalculated) {\r
-return false;\r
-}if (this.calculator.workingInvolvedWith (alignmentAnnotation)) {\r
-return true;\r
-}return false;\r
-}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.overrideMethod (c$, "isClosed", \r
-function () {\r
-return this.alignment == null;\r
-});\r
-Clazz.overrideMethod (c$, "getCalcManager", \r
-function () {\r
-return this.calculator;\r
-});\r
-Clazz.overrideMethod (c$, "isShowSequenceLogo", \r
-function () {\r
-return this.showSequenceLogo;\r
-});\r
-Clazz.defineMethod (c$, "setShowSequenceLogo", \r
-function (showSequenceLogo) {\r
-if (showSequenceLogo != this.showSequenceLogo) {\r
-this.showSequenceLogo = showSequenceLogo;\r
-this.calculator.updateAnnotationFor (jalview.workers.ConsensusThread);\r
-this.calculator.updateAnnotationFor (jalview.workers.ComplementConsensusThread);\r
-this.calculator.updateAnnotationFor (jalview.workers.StrucConsensusThread);\r
-}this.showSequenceLogo = showSequenceLogo;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setShowConsensusHistogram", \r
-function (showConsensusHistogram) {\r
-this.showConsensusHistogram = showConsensusHistogram;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isShowGroupConservation", \r
-function () {\r
-return this.showGroupConservation;\r
-});\r
-Clazz.defineMethod (c$, "setShowGroupConservation", \r
-function (showGroupConservation) {\r
-this.showGroupConservation = showGroupConservation;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isShowGroupConsensus", \r
-function () {\r
-return this.showGroupConsensus;\r
-});\r
-Clazz.defineMethod (c$, "setShowGroupConsensus", \r
-function (showGroupConsensus) {\r
-this.showGroupConsensus = showGroupConsensus;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "isShowConsensusHistogram", \r
-function () {\r
-return this.showConsensusHistogram;\r
-});\r
-Clazz.overrideMethod (c$, "getSelectionGroup", \r
-function () {\r
-return this.selectionGroup;\r
-});\r
-Clazz.overrideMethod (c$, "setSelectionGroup", \r
-function (sg) {\r
-this.selectionGroup = sg;\r
-}, "jalview.datamodel.SequenceGroup");\r
-Clazz.defineMethod (c$, "setHiddenColumns", \r
-function (colsel) {\r
-this.colSel = colsel;\r
-}, "jalview.datamodel.ColumnSelection");\r
-Clazz.overrideMethod (c$, "getColumnSelection", \r
-function () {\r
-return this.colSel;\r
-});\r
-Clazz.overrideMethod (c$, "setColumnSelection", \r
-function (colSel) {\r
-this.colSel = colSel;\r
-if (colSel != null) {\r
-this.updateHiddenColumns ();\r
-}}, "jalview.datamodel.ColumnSelection");\r
-Clazz.overrideMethod (c$, "getHiddenRepSequences", \r
-function () {\r
-return this.hiddenRepSequences;\r
-});\r
-Clazz.overrideMethod (c$, "setHiddenRepSequences", \r
-function (hiddenRepSequences) {\r
-this.hiddenRepSequences = hiddenRepSequences;\r
-}, "java.util.Map");\r
-Clazz.overrideMethod (c$, "hasHiddenColumns", \r
-function () {\r
-return this.colSel != null && this.colSel.hasHiddenColumns ();\r
-});\r
-Clazz.defineMethod (c$, "updateHiddenColumns", \r
-function () {\r
-});\r
-Clazz.overrideMethod (c$, "hasHiddenRows", \r
-function () {\r
-return this.alignment.getHiddenSequences ().getSize () > 0;\r
-});\r
-Clazz.defineMethod (c$, "setSequenceSetId", \r
-function (newid) {\r
-if (this.sequenceSetID != null) {\r
-System.err.println ("Warning - overwriting a sequenceSetId for a viewport!");\r
-}this.sequenceSetID =  String.instantialize (newid);\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "getSequenceSetId", \r
-function () {\r
-if (this.sequenceSetID == null) {\r
-this.sequenceSetID = this.alignment.hashCode () + "";\r
-}return this.sequenceSetID;\r
-});\r
-Clazz.overrideMethod (c$, "getViewId", \r
-function () {\r
-if (this.viewId == null) {\r
-this.viewId = this.getSequenceSetId () + "." + this.hashCode () + "";\r
-}return this.viewId;\r
-});\r
-Clazz.defineMethod (c$, "setIgnoreGapsConsensus", \r
-function (b, ap) {\r
-this.ignoreGapsInConsensusCalculation = b;\r
-if (ap != null) {\r
-this.updateConsensus (ap);\r
-if (this.globalColourScheme != null) {\r
-this.globalColourScheme.setThreshold (this.globalColourScheme.getThreshold (), this.ignoreGapsInConsensusCalculation);\r
-}}}, "~B,jalview.api.AlignmentViewPanel");\r
-Clazz.defineMethod (c$, "isSelectionGroupChanged", \r
-function (b) {\r
-var hc = (this.selectionGroup == null || this.selectionGroup.getSize () == 0) ? -1 : this.selectionGroup.hashCode ();\r
-if (hc != -1 && hc != this.sgrouphash) {\r
-if (b) {\r
-this.sgrouphash = hc;\r
-}return true;\r
-}return false;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isColSelChanged", \r
-function (b) {\r
-var hc = (this.colSel == null || this.colSel.size () == 0) ? -1 : this.colSel.hashCode ();\r
-if (hc != -1 && hc != this.colselhash) {\r
-if (b) {\r
-this.colselhash = hc;\r
-}return true;\r
-}return false;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "isIgnoreGapsConsensus", \r
-function () {\r
-return this.ignoreGapsInConsensusCalculation;\r
-});\r
-Clazz.defineMethod (c$, "addPropertyChangeListener", \r
-function (listener) {\r
-this.changeSupport.addPropertyChangeListener (listener);\r
-}, "java.beans.PropertyChangeListener");\r
-Clazz.defineMethod (c$, "removePropertyChangeListener", \r
-function (listener) {\r
-this.changeSupport.removePropertyChangeListener (listener);\r
-}, "java.beans.PropertyChangeListener");\r
-Clazz.defineMethod (c$, "firePropertyChange", \r
-function (prop, oldvalue, newvalue) {\r
-this.changeSupport.firePropertyChange (prop, oldvalue, newvalue);\r
-}, "~S,~O,~O");\r
-Clazz.defineMethod (c$, "hideSelectedColumns", \r
-function () {\r
-if (this.colSel.size () < 1) {\r
-return;\r
-}this.colSel.hideSelectedColumns ();\r
-this.setSelectionGroup (null);\r
-});\r
-Clazz.defineMethod (c$, "hideColumns", \r
-function (start, end) {\r
-if (start == end) {\r
-this.colSel.hideColumns (start);\r
-} else {\r
-this.colSel.hideColumns (start, end);\r
-}}, "~N,~N");\r
-Clazz.defineMethod (c$, "showColumn", \r
-function (col) {\r
-this.colSel.revealHiddenColumns (col);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "showAllHiddenColumns", \r
-function () {\r
-this.colSel.revealAllHiddenColumns ();\r
-});\r
-Clazz.defineMethod (c$, "showAllHiddenSeqs", \r
-function () {\r
-if (this.alignment.getHiddenSequences ().getSize () > 0) {\r
-if (this.selectionGroup == null) {\r
-this.selectionGroup =  new jalview.datamodel.SequenceGroup ();\r
-this.selectionGroup.setEndRes (this.alignment.getWidth () - 1);\r
-}var tmp = this.alignment.getHiddenSequences ().showAll (this.hiddenRepSequences);\r
-for (var seq, $seq = tmp.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-this.selectionGroup.addSequence (seq, false);\r
-this.setSequenceAnnotationsVisible (seq, true);\r
-}\r
-this.hiddenRepSequences = null;\r
-this.firePropertyChange ("alignment", null, this.alignment.getSequences ());\r
-this.sendSelection ();\r
-}});\r
-Clazz.defineMethod (c$, "showSequence", \r
-function (index) {\r
-var tmp = this.alignment.getHiddenSequences ().showSequence (index, this.hiddenRepSequences);\r
-if (tmp.size () > 0) {\r
-if (this.selectionGroup == null) {\r
-this.selectionGroup =  new jalview.datamodel.SequenceGroup ();\r
-this.selectionGroup.setEndRes (this.alignment.getWidth () - 1);\r
-}for (var seq, $seq = tmp.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
-this.selectionGroup.addSequence (seq, false);\r
-this.setSequenceAnnotationsVisible (seq, true);\r
-}\r
-this.firePropertyChange ("alignment", null, this.alignment.getSequences ());\r
-this.sendSelection ();\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "hideAllSelectedSeqs", \r
-function () {\r
-if (this.selectionGroup == null || this.selectionGroup.getSize () < 1) {\r
-return;\r
-}var seqs = this.selectionGroup.getSequencesInOrder (this.alignment);\r
-this.hideSequence (seqs);\r
-this.setSelectionGroup (null);\r
-});\r
-Clazz.defineMethod (c$, "hideSequence", \r
-function (seq) {\r
-if (seq != null) {\r
-for (var i = 0; i < seq.length; i++) {\r
-this.alignment.getHiddenSequences ().hideSequence (seq[i]);\r
-this.setSequenceAnnotationsVisible (seq[i], false);\r
-}\r
-this.firePropertyChange ("alignment", null, this.alignment.getSequences ());\r
-}}, "~A");\r
-Clazz.defineMethod (c$, "setSequenceAnnotationsVisible", \r
-function (sequenceI, visible) {\r
-for (var ann, $ann = 0, $$ann = this.alignment.getAlignmentAnnotation (); $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {\r
-if (ann.sequenceRef === sequenceI) {\r
-ann.visible = visible;\r
-}}\r
-}, "jalview.datamodel.SequenceI,~B");\r
-Clazz.defineMethod (c$, "hideRepSequences", \r
-function (repSequence, sg) {\r
-var sSize = sg.getSize ();\r
-if (sSize < 2) {\r
-return;\r
-}if (this.hiddenRepSequences == null) {\r
-this.hiddenRepSequences =  new java.util.Hashtable ();\r
-}this.hiddenRepSequences.put (repSequence, sg);\r
-var seqs =  new Array (sSize - 1);\r
-var index = 0;\r
-for (var i = 0; i < sSize; i++) {\r
-if (sg.getSequenceAt (i) !== repSequence) {\r
-if (index == sSize - 1) {\r
-return;\r
-}seqs[index++] = sg.getSequenceAt (i);\r
-}}\r
-sg.setSeqrep (repSequence);\r
-sg.setHidereps (true);\r
-this.hideSequence (seqs);\r
-}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");\r
-Clazz.defineMethod (c$, "isHiddenRepSequence", \r
-function (seq) {\r
-return this.alignment.getSeqrep () === seq || (this.hiddenRepSequences != null && this.hiddenRepSequences.containsKey (seq));\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.defineMethod (c$, "getRepresentedSequences", \r
-function (seq) {\r
-return (this.hiddenRepSequences == null ? null : this.hiddenRepSequences.get (seq));\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.overrideMethod (c$, "adjustForHiddenSeqs", \r
-function (alignmentIndex) {\r
-return this.alignment.getHiddenSequences ().adjustForHiddenSeqs (alignmentIndex);\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "invertColumnSelection", \r
-function () {\r
-this.colSel.invertColumnSelection (0, this.alignment.getWidth ());\r
-});\r
-Clazz.overrideMethod (c$, "getSelectionAsNewSequence", \r
-function () {\r
-var sequences;\r
-if (this.selectionGroup == null || this.selectionGroup.getSize () == 0) {\r
-sequences = this.alignment.getSequencesArray ();\r
-var annots = this.alignment.getAlignmentAnnotation ();\r
-for (var i = 0; i < sequences.length; i++) {\r
-sequences[i] =  new jalview.datamodel.Sequence (sequences[i], annots);\r
-}\r
-} else {\r
-sequences = this.selectionGroup.getSelectionAsNewSequences (this.alignment);\r
-}return sequences;\r
-});\r
-Clazz.overrideMethod (c$, "getSequenceSelection", \r
-function () {\r
-var sequences = null;\r
-if (this.selectionGroup != null) {\r
-sequences = this.selectionGroup.getSequencesInOrder (this.alignment);\r
-}if (sequences == null) {\r
-sequences = this.alignment.getSequencesArray ();\r
-}return sequences;\r
-});\r
-Clazz.overrideMethod (c$, "getViewAsCigars", \r
-function (selectedRegionOnly) {\r
-return  new jalview.datamodel.CigarArray (this.alignment, this.colSel, (selectedRegionOnly ? this.selectionGroup : null));\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getAlignmentView", \r
-function (selectedOnly) {\r
-return this.getAlignmentView (selectedOnly, false);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getAlignmentView", \r
-function (selectedOnly, markGroups) {\r
-return  new jalview.datamodel.AlignmentView (this.alignment, this.colSel, this.selectionGroup, this.colSel != null && this.colSel.hasHiddenColumns (), selectedOnly, markGroups);\r
-}, "~B,~B");\r
-Clazz.overrideMethod (c$, "getViewAsString", \r
-function (selectedRegionOnly) {\r
-var selection = null;\r
-var seqs = null;\r
-var i;\r
-var iSize;\r
-var start = 0;\r
-var end = 0;\r
-if (selectedRegionOnly && this.selectionGroup != null) {\r
-iSize = this.selectionGroup.getSize ();\r
-seqs = this.selectionGroup.getSequencesInOrder (this.alignment);\r
-start = this.selectionGroup.getStartRes ();\r
-end = this.selectionGroup.getEndRes () + 1;\r
-} else {\r
-iSize = this.alignment.getHeight ();\r
-seqs = this.alignment.getSequencesArray ();\r
-end = this.alignment.getWidth ();\r
-}selection =  new Array (iSize);\r
-if (this.colSel != null && this.colSel.hasHiddenColumns ()) {\r
-selection = this.colSel.getVisibleSequenceStrings (start, end, seqs);\r
-} else {\r
-for (i = 0; i < iSize; i++) {\r
-selection[i] = seqs[i].getSequenceAsString (start, end);\r
-}\r
-}return selection;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "getVisibleRegionBoundaries", \r
-function (min, max) {\r
-var regions =  new java.util.ArrayList ();\r
-var start = min;\r
-var end = max;\r
-do {\r
-if (this.colSel != null && this.colSel.hasHiddenColumns ()) {\r
-if (start == 0) {\r
-start = this.colSel.adjustForHiddenColumns (start);\r
-}end = this.colSel.getHiddenBoundaryRight (start);\r
-if (start == end) {\r
-end = max;\r
-}if (end > max) {\r
-end = max;\r
-}}regions.add ( Clazz.newIntArray (-1, [start, end]));\r
-if (this.colSel != null && this.colSel.hasHiddenColumns ()) {\r
-start = this.colSel.adjustForHiddenColumns (end);\r
-start = this.colSel.getHiddenBoundaryLeft (start) + 1;\r
-}} while (end < max);\r
-var startEnd =  Clazz.newIntArray (regions.size (), 2, 0);\r
-return regions;\r
-}, "~N,~N");\r
-Clazz.overrideMethod (c$, "getVisibleAlignmentAnnotation", \r
-function (selectedOnly) {\r
-var ala =  new java.util.ArrayList ();\r
-var aa;\r
-if ((aa = this.alignment.getAlignmentAnnotation ()) != null) {\r
-for (var annot, $annot = 0, $$annot = aa; $annot < $$annot.length && ((annot = $$annot[$annot]) || true); $annot++) {\r
-var clone =  new jalview.datamodel.AlignmentAnnotation (annot);\r
-if (selectedOnly && this.selectionGroup != null) {\r
-this.colSel.makeVisibleAnnotation (this.selectionGroup.getStartRes (), this.selectionGroup.getEndRes (), clone);\r
-} else {\r
-this.colSel.makeVisibleAnnotation (clone);\r
-}ala.add (clone);\r
-}\r
-}return ala;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "isPadGaps", \r
-function () {\r
-return this.padGaps;\r
-});\r
-Clazz.overrideMethod (c$, "setPadGaps", \r
-function (padGaps) {\r
-this.padGaps = padGaps;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "alignmentChanged", \r
-function (ap) {\r
-if (this.isPadGaps ()) {\r
-this.alignment.padGaps ();\r
-}if (this.autoCalculateConsensus) {\r
-this.updateConsensus (ap);\r
-}if (this.hconsensus != null && this.autoCalculateConsensus) {\r
-this.updateConservation (ap);\r
-}if (this.autoCalculateStrucConsensus) {\r
-this.updateStrucConsensus (ap);\r
-}var alWidth = this.alignment.getWidth ();\r
-var groups = this.alignment.getGroups ();\r
-if (groups != null) {\r
-for (var sg, $sg = groups.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-if (sg.getEndRes () > alWidth) {\r
-sg.setEndRes (alWidth - 1);\r
-}}\r
-}if (this.selectionGroup != null && this.selectionGroup.getEndRes () > alWidth) {\r
-this.selectionGroup.setEndRes (alWidth - 1);\r
-}this.resetAllColourSchemes ();\r
-this.calculator.restartWorkers ();\r
-}, "jalview.api.AlignmentViewPanel");\r
-Clazz.defineMethod (c$, "resetAllColourSchemes", \r
-function () {\r
-var cs = this.globalColourScheme;\r
-if (cs != null) {\r
-cs.alignmentChanged (this.alignment, this.hiddenRepSequences);\r
-cs.setConsensus (this.hconsensus);\r
-if (cs.conservationApplied ()) {\r
-cs.setConservation (jalview.analysis.Conservation.calculateConservation ("All", jalview.schemes.ResidueProperties.propHash, 3, this.alignment.getSequences (), 0, this.alignment.getWidth (), false, this.getConsPercGaps (), false));\r
-}}for (var sg, $sg = this.alignment.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-if (sg.cs != null) {\r
-sg.cs.alignmentChanged (sg, this.hiddenRepSequences);\r
-}sg.recalcConservation ();\r
-}\r
-});\r
-Clazz.defineMethod (c$, "initAutoAnnotation", \r
-function () {\r
-if (this.hconsensus == null && !this.$isDataset) {\r
-if (!this.alignment.isNucleotide ()) {\r
-this.initConservation ();\r
-this.initQuality ();\r
-} else {\r
-this.initRNAStructure ();\r
-}this.consensus =  new jalview.datamodel.AlignmentAnnotation ("Consensus", "PID",  new Array (1), 0, 100, 1);\r
-this.initConsensus (this.consensus);\r
-this.initComplementConsensus ();\r
-}});\r
-Clazz.defineMethod (c$, "initComplementConsensus", \r
-function () {\r
-if (!this.alignment.isNucleotide ()) {\r
-var codonMappings = this.alignment.getCodonFrames ();\r
-if (codonMappings != null && !codonMappings.isEmpty ()) {\r
-this.complementConsensus =  new jalview.datamodel.AlignmentAnnotation ("cDNA Consensus", "PID for cDNA",  new Array (1), 0, 100, 1);\r
-this.initConsensus (this.complementConsensus);\r
-}}});\r
-Clazz.defineMethod (c$, "initConsensus", \r
-($fz = function (aa) {\r
-aa.hasText = true;\r
-aa.autoCalculated = true;\r
-if (this.showConsensus) {\r
-this.alignment.addAnnotation (aa);\r
-}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.defineMethod (c$, "initConservation", \r
-($fz = function () {\r
-if (this.showConservation) {\r
-if (this.conservation == null) {\r
-this.conservation =  new jalview.datamodel.AlignmentAnnotation ("Conservation", "Conservation of total alignment less than " + this.getConsPercGaps () + "% gaps",  new Array (1), 0, 11, 1);\r
-this.conservation.hasText = true;\r
-this.conservation.autoCalculated = true;\r
-this.alignment.addAnnotation (this.conservation);\r
-}}}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "initQuality", \r
-($fz = function () {\r
-if (this.showQuality) {\r
-if (this.quality == null) {\r
-this.quality =  new jalview.datamodel.AlignmentAnnotation ("Quality", "Alignment Quality based on Blosum62 scores",  new Array (1), 0, 11, 1);\r
-this.quality.hasText = true;\r
-this.quality.autoCalculated = true;\r
-this.alignment.addAnnotation (this.quality);\r
-}}}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "initRNAStructure", \r
-($fz = function () {\r
-if (this.alignment.hasRNAStructure () && this.strucConsensus == null) {\r
-this.strucConsensus =  new jalview.datamodel.AlignmentAnnotation ("StrucConsensus", "PID",  new Array (1), 0, 100, 1);\r
-this.strucConsensus.hasText = true;\r
-this.strucConsensus.autoCalculated = true;\r
-if (this.showConsensus) {\r
-this.alignment.addAnnotation (this.strucConsensus);\r
-}}}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "calcPanelHeight", \r
-function () {\r
-var anns = this.getAlignment ().getAlignmentAnnotation ();\r
-var height = 0;\r
-var charHeight = this.getCharHeight ();\r
-if (anns != null) {\r
-var graphgrp =  new java.util.BitSet ();\r
-for (var aa, $aa = 0, $$aa = anns; $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {\r
-if (aa == null) {\r
-System.err.println ("Null annotation row: ignoring.");\r
-continue;\r
-}if (!aa.visible) {\r
-continue;\r
-}if (aa.graphGroup > -1) {\r
-if (graphgrp.get (aa.graphGroup)) {\r
-continue;\r
-} else {\r
-graphgrp.set (aa.graphGroup);\r
-}}aa.height = 0;\r
-if (aa.hasText) {\r
-aa.height += charHeight;\r
-}if (aa.hasIcons) {\r
-aa.height += 16;\r
-}if (aa.graph > 0) {\r
-aa.height += aa.graphHeight;\r
-}if (aa.height == 0) {\r
-aa.height = 20;\r
-}height += aa.height;\r
-}\r
-}if (height == 0) {\r
-height = 20;\r
-}return height;\r
-});\r
-Clazz.overrideMethod (c$, "updateGroupAnnotationSettings", \r
-function (applyGlobalSettings, preserveNewGroupSettings) {\r
-var updateCalcs = false;\r
-var conv = this.isShowGroupConservation ();\r
-var cons = this.isShowGroupConsensus ();\r
-var showprf = this.isShowSequenceLogo ();\r
-var showConsHist = this.isShowConsensusHistogram ();\r
-var normLogo = this.isNormaliseSequenceLogo ();\r
-var sortg = true;\r
-var aan = this.alignment.getAlignmentAnnotation ();\r
-var oldrfs =  new java.util.ArrayList ();\r
-if (aan != null) {\r
-for (var an = 0; an < aan.length; an++) {\r
-if (aan[an].autoCalculated && aan[an].groupRef != null) {\r
-oldrfs.add (aan[an].groupRef);\r
-this.alignment.deleteAnnotation (aan[an], false);\r
-}}\r
-}if (this.alignment.getGroups () != null) {\r
-for (var sg, $sg = this.alignment.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-updateCalcs = false;\r
-if (applyGlobalSettings || (!preserveNewGroupSettings && !oldrfs.contains (sg))) {\r
-sg.setshowSequenceLogo (showprf);\r
-sg.setShowConsensusHistogram (showConsHist);\r
-sg.setNormaliseSequenceLogo (normLogo);\r
-}if (conv) {\r
-updateCalcs = true;\r
-this.alignment.addAnnotation (sg.getConservationRow (), 0);\r
-}if (cons) {\r
-updateCalcs = true;\r
-this.alignment.addAnnotation (sg.getConsensus (), 0);\r
-}if (updateCalcs) {\r
-sg.recalcConservation ();\r
-}}\r
-}oldrfs.clear ();\r
-}, "~B,~B");\r
-Clazz.defineMethod (c$, "isDisplayReferenceSeq", \r
-function () {\r
-return this.alignment.hasSeqrep () && this.viewStyle.isDisplayReferenceSeq ();\r
-});\r
-Clazz.defineMethod (c$, "setDisplayReferenceSeq", \r
-function (displayReferenceSeq) {\r
-this.viewStyle.setDisplayReferenceSeq (displayReferenceSeq);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isColourByReferenceSeq", \r
-function () {\r
-return this.alignment.hasSeqrep () && this.viewStyle.isColourByReferenceSeq ();\r
-});\r
-Clazz.overrideMethod (c$, "getSequenceColour", \r
-function (seq) {\r
-var sqc = this.sequenceColours.get (seq);\r
-return (sqc == null ? java.awt.Color.white : sqc);\r
-}, "jalview.datamodel.SequenceI");\r
-Clazz.overrideMethod (c$, "setSequenceColour", \r
-function (seq, col) {\r
-if (col == null) {\r
-this.sequenceColours.remove (seq);\r
-} else {\r
-this.sequenceColours.put (seq, col);\r
-}}, "jalview.datamodel.SequenceI,java.awt.Color");\r
-Clazz.overrideMethod (c$, "updateSequenceIdColours", \r
-function () {\r
-for (var sg, $sg = this.alignment.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {\r
-if (sg.idColour != null) {\r
-for (var s, $s = sg.getSequences (this.getHiddenRepSequences ()).iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {\r
-this.sequenceColours.put (s, sg.idColour);\r
-}\r
-}}\r
-});\r
-Clazz.overrideMethod (c$, "clearSequenceColours", \r
-function () {\r
-this.sequenceColours.clear ();\r
-});\r
-Clazz.defineMethod (c$, "getCodingComplement", \r
-function () {\r
-return this.codingComplement;\r
-});\r
-Clazz.defineMethod (c$, "setCodingComplement", \r
-function (av) {\r
-if (this === av) {\r
-System.err.println ("Ignoring recursive setCodingComplement request");\r
-} else {\r
-this.codingComplement = av;\r
-if (av.getCodingComplement () !== this) {\r
-av.setCodingComplement (this);\r
-}}}, "jalview.api.AlignViewportI");\r
-Clazz.overrideMethod (c$, "isNucleotide", \r
-function () {\r
-return this.getAlignment () == null ? false : this.getAlignment ().isNucleotide ();\r
-});\r
-Clazz.overrideMethod (c$, "getFeaturesDisplayed", \r
-function () {\r
-return this.featuresDisplayed;\r
-});\r
-Clazz.overrideMethod (c$, "setFeaturesDisplayed", \r
-function (featuresDisplayedI) {\r
-this.featuresDisplayed = featuresDisplayedI;\r
-}, "jalview.api.FeaturesDisplayedI");\r
-Clazz.overrideMethod (c$, "areFeaturesDisplayed", \r
-function () {\r
-return this.featuresDisplayed != null && this.featuresDisplayed.getRegisterdFeaturesCount () > 0;\r
-});\r
-Clazz.defineMethod (c$, "setShowSequenceFeatures", \r
-function (b) {\r
-this.viewStyle.setShowSequenceFeatures (b);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isShowSequenceFeatures", \r
-function () {\r
-return this.viewStyle.isShowSequenceFeatures ();\r
-});\r
-Clazz.defineMethod (c$, "setShowSequenceFeaturesHeight", \r
-function (selected) {\r
-this.viewStyle.setShowSequenceFeaturesHeight (selected);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isShowSequenceFeaturesHeight", \r
-function () {\r
-return this.viewStyle.isShowSequenceFeaturesHeight ();\r
-});\r
-Clazz.defineMethod (c$, "setShowAnnotation", \r
-function (b) {\r
-this.viewStyle.setShowAnnotation (b);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isShowAnnotation", \r
-function () {\r
-return this.viewStyle.isShowAnnotation ();\r
-});\r
-Clazz.defineMethod (c$, "isRightAlignIds", \r
-function () {\r
-return this.viewStyle.isRightAlignIds ();\r
-});\r
-Clazz.defineMethod (c$, "setRightAlignIds", \r
-function (rightAlignIds) {\r
-this.viewStyle.setRightAlignIds (rightAlignIds);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getConservationSelected", \r
-function () {\r
-return this.viewStyle.getConservationSelected ();\r
-});\r
-Clazz.defineMethod (c$, "setShowBoxes", \r
-function (state) {\r
-this.viewStyle.setShowBoxes (state);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getTextColour", \r
-function () {\r
-return this.viewStyle.getTextColour ();\r
-});\r
-Clazz.defineMethod (c$, "getTextColour2", \r
-function () {\r
-return this.viewStyle.getTextColour2 ();\r
-});\r
-Clazz.defineMethod (c$, "getThresholdTextColour", \r
-function () {\r
-return this.viewStyle.getThresholdTextColour ();\r
-});\r
-Clazz.defineMethod (c$, "isConservationColourSelected", \r
-function () {\r
-return this.viewStyle.isConservationColourSelected ();\r
-});\r
-Clazz.defineMethod (c$, "isRenderGaps", \r
-function () {\r
-return this.viewStyle.isRenderGaps ();\r
-});\r
-Clazz.defineMethod (c$, "isShowColourText", \r
-function () {\r
-return this.viewStyle.isShowColourText ();\r
-});\r
-Clazz.defineMethod (c$, "setConservationColourSelected", \r
-function (conservationColourSelected) {\r
-this.viewStyle.setConservationColourSelected (conservationColourSelected);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setShowColourText", \r
-function (showColourText) {\r
-this.viewStyle.setShowColourText (showColourText);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setTextColour", \r
-function (textColour) {\r
-this.viewStyle.setTextColour (textColour);\r
-}, "java.awt.Color");\r
-Clazz.defineMethod (c$, "setThresholdTextColour", \r
-function (thresholdTextColour) {\r
-this.viewStyle.setThresholdTextColour (thresholdTextColour);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setTextColour2", \r
-function (textColour2) {\r
-this.viewStyle.setTextColour2 (textColour2);\r
-}, "java.awt.Color");\r
-Clazz.overrideMethod (c$, "getViewStyle", \r
-function () {\r
-return  new jalview.viewmodel.styles.ViewStyle (this.viewStyle);\r
-});\r
-Clazz.overrideMethod (c$, "setViewStyle", \r
-function (settingsForView) {\r
-this.viewStyle =  new jalview.viewmodel.styles.ViewStyle (settingsForView);\r
-}, "jalview.api.ViewStyleI");\r
-Clazz.defineMethod (c$, "sameStyle", \r
-function (them) {\r
-return this.viewStyle.sameStyle (them);\r
-}, "jalview.api.ViewStyleI");\r
-Clazz.defineMethod (c$, "getIdWidth", \r
-function () {\r
-return this.viewStyle.getIdWidth ();\r
-});\r
-Clazz.defineMethod (c$, "setIdWidth", \r
-function (i) {\r
-this.viewStyle.setIdWidth (i);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "isCentreColumnLabels", \r
-function () {\r
-return this.viewStyle.isCentreColumnLabels ();\r
-});\r
-Clazz.defineMethod (c$, "setCentreColumnLabels", \r
-function (centreColumnLabels) {\r
-this.viewStyle.setCentreColumnLabels (centreColumnLabels);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setShowDBRefs", \r
-function (showdbrefs) {\r
-this.viewStyle.setShowDBRefs (showdbrefs);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isShowDBRefs", \r
-function () {\r
-return this.viewStyle.isShowDBRefs ();\r
-});\r
-Clazz.defineMethod (c$, "isShowNPFeats", \r
-function () {\r
-return this.viewStyle.isShowNPFeats ();\r
-});\r
-Clazz.defineMethod (c$, "setShowNPFeats", \r
-function (shownpfeats) {\r
-this.viewStyle.setShowNPFeats (shownpfeats);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "addToHistoryList", \r
-function (command) {\r
-if (this.historyList != null) {\r
-this.historyList.push (command);\r
-this.broadcastCommand (command, false);\r
-}}, "jalview.commands.CommandI");\r
-Clazz.defineMethod (c$, "broadcastCommand", \r
-function (command, undo) {\r
-this.getStructureSelectionManager ().commandPerformed (command, undo, this.getVamsasSource ());\r
-}, "jalview.commands.CommandI,~B");\r
-Clazz.defineMethod (c$, "addToRedoList", \r
-function (command) {\r
-if (this.redoList != null) {\r
-this.redoList.push (command);\r
-}this.broadcastCommand (command, true);\r
-}, "jalview.commands.CommandI");\r
-Clazz.defineMethod (c$, "clearRedoList", \r
-function () {\r
-if (this.redoList != null) {\r
-this.redoList.clear ();\r
-}});\r
-Clazz.defineMethod (c$, "setHistoryList", \r
-function (list) {\r
-this.historyList = list;\r
-}, "java.util.Deque");\r
-Clazz.defineMethod (c$, "getHistoryList", \r
-function () {\r
-return this.historyList;\r
-});\r
-Clazz.defineMethod (c$, "setRedoList", \r
-function (list) {\r
-this.redoList = list;\r
-}, "java.util.Deque");\r
-Clazz.defineMethod (c$, "getRedoList", \r
-function () {\r
-return this.redoList;\r
-});\r
-Clazz.overrideMethod (c$, "getVamsasSource", \r
-function () {\r
-return this;\r
-});\r
-Clazz.defineMethod (c$, "getSortAnnotationsBy", \r
-function () {\r
-return this.sortAnnotationsBy;\r
-});\r
-Clazz.defineMethod (c$, "setSortAnnotationsBy", \r
-function (sortAnnotationsBy) {\r
-this.sortAnnotationsBy = sortAnnotationsBy;\r
-}, "jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");\r
-Clazz.defineMethod (c$, "isShowAutocalculatedAbove", \r
-function () {\r
-return this.showAutocalculatedAbove;\r
-});\r
-Clazz.defineMethod (c$, "setShowAutocalculatedAbove", \r
-function (showAutocalculatedAbove) {\r
-this.showAutocalculatedAbove = showAutocalculatedAbove;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isScaleProteinAsCdna", \r
-function () {\r
-return this.viewStyle.isScaleProteinAsCdna ();\r
-});\r
-Clazz.defineMethod (c$, "setScaleProteinAsCdna", \r
-function (b) {\r
-this.viewStyle.setScaleProteinAsCdna (b);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isFollowHighlight", \r
-function () {\r
-return this.followHighlight;\r
-});\r
-Clazz.overrideMethod (c$, "setFollowHighlight", \r
-function (b) {\r
-this.followHighlight = b;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getStartRes", \r
-function () {\r
-return this.startRes;\r
-});\r
-Clazz.overrideMethod (c$, "getEndRes", \r
-function () {\r
-return this.endRes;\r
-});\r
-Clazz.defineMethod (c$, "getStartSeq", \r
-function () {\r
-return this.startSeq;\r
-});\r
-Clazz.defineMethod (c$, "setStartRes", \r
-function (res) {\r
-this.startRes = res;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setStartSeq", \r
-function (seq) {\r
-this.startSeq = seq;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setEndRes", \r
-function (res) {\r
-if (res > this.alignment.getWidth () - 1) {\r
-res = this.alignment.getWidth () - 1;\r
-}if (res < 0) {\r
-res = 0;\r
-}this.endRes = res;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setEndSeq", \r
-function (seq) {\r
-if (seq > this.alignment.getHeight ()) {\r
-seq = this.alignment.getHeight ();\r
-}if (seq < 0) {\r
-seq = 0;\r
-}this.endSeq = seq;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getEndSeq", \r
-function () {\r
-return this.endSeq;\r
-});\r
-Clazz.defineMethod (c$, "findComplementScrollTarget", \r
-function (sr) {\r
-var complement = this.getCodingComplement ();\r
-if (complement == null || !complement.isFollowHighlight ()) {\r
-return 0;\r
-}var iAmProtein = !this.getAlignment ().isNucleotide ();\r
-var proteinAlignment = iAmProtein ? this.getAlignment () : complement.getAlignment ();\r
-if (proteinAlignment == null) {\r
-return 0;\r
-}var mappings = proteinAlignment.getCodonFrames ();\r
-var seqOffset = 0;\r
-var sequence = null;\r
-var middleColumn = this.getStartRes () + Clazz.doubleToInt ((this.getEndRes () - this.getStartRes ()) / 2);\r
-var hiddenSequences = this.getAlignment ().getHiddenSequences ();\r
-for (var seqNo = this.getStartSeq (); seqNo < this.getEndSeq (); seqNo++, seqOffset++) {\r
-sequence = this.getAlignment ().getSequenceAt (seqNo);\r
-if (hiddenSequences != null && hiddenSequences.isHidden (sequence)) {\r
-continue;\r
-}if (jalview.util.Comparison.isGap (sequence.getCharAt (middleColumn))) {\r
-continue;\r
-}var seqMappings = jalview.util.MappingUtils.findMappingsForSequence (sequence, mappings);\r
-if (!seqMappings.isEmpty ()) {\r
-break;\r
-}}\r
-if (sequence == null) {\r
-return 0;\r
-}jalview.util.MappingUtils.addSearchResults (sr, sequence, sequence.findPosition (middleColumn), mappings);\r
-return seqOffset;\r
-}, "jalview.datamodel.SearchResults");\r
-});\r
+Clazz.declarePackage ("jalview.viewmodel");
+Clazz.load (["jalview.api.AlignViewportI", "jalview.structure.CommandListener", "$.VamsasSource", "jalview.datamodel.ColumnSelection", "jalview.viewmodel.styles.ViewStyle", "jalview.workers.AlignCalcManager", "java.beans.PropertyChangeSupport", "java.util.ArrayDeque", "$.HashMap"], "jalview.viewmodel.AlignmentViewport", ["jalview.analysis.Conservation", "jalview.datamodel.AlignmentAnnotation", "$.AlignmentView", "$.CigarArray", "$.Sequence", "$.SequenceGroup", "jalview.schemes.Blosum62ColourScheme", "$.PIDColourScheme", "$.ResidueProperties", "jalview.util.Comparison", "$.MappingUtils", "jalview.workers.ComplementConsensusThread", "$.ConsensusThread", "$.ConservationThread", "$.StrucConsensusThread", "java.awt.Color", "java.util.ArrayList", "$.BitSet", "$.Hashtable"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.viewStyle = null;
+this.codingComplement = null;
+this.featuresDisplayed = null;
+this.historyList = null;
+this.redoList = null;
+this.alignment = null;
+this.sequenceSetID = null;
+this.$isDataset = false;
+this.hiddenRepSequences = null;
+this.colSel = null;
+this.autoCalculateConsensus = true;
+this.autoCalculateStrucConsensus = true;
+this.ignoreGapsInConsensusCalculation = false;
+this.globalColourScheme = null;
+this.consensus = null;
+this.complementConsensus = null;
+this.strucConsensus = null;
+this.conservation = null;
+this.quality = null;
+this.groupConsensus = null;
+this.groupConservation = null;
+this.hconsensus = null;
+this.hcomplementConsensus = null;
+this.hStrucConsensus = null;
+this.hconservation = null;
+this.ConsPercGaps = 25;
+this.calculator = null;
+this.showGroupConservation = false;
+this.showGroupConsensus = false;
+this.showSequenceLogo = false;
+this.normaliseSequenceLogo = false;
+this.showConsensusHistogram = true;
+this.padGaps = false;
+this.sortByTree = false;
+this.selectionGroup = null;
+this.viewId = null;
+this.sgrouphash = -1;
+this.colselhash = -1;
+this.changeSupport = null;
+this.showConservation = true;
+this.showQuality = true;
+this.showConsensus = true;
+this.sequenceColours = null;
+this.sortAnnotationsBy = null;
+this.showAutocalculatedAbove = false;
+this.followHighlight = true;
+this.startRes = 0;
+this.endRes = 0;
+this.startSeq = 0;
+this.endSeq = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.viewmodel, "AlignmentViewport", null, [jalview.api.AlignViewportI, jalview.structure.CommandListener, jalview.structure.VamsasSource]);
+Clazz.prepareFields (c$, function () {
+this.viewStyle =  new jalview.viewmodel.styles.ViewStyle ();
+this.historyList =  new java.util.ArrayDeque ();
+this.redoList =  new java.util.ArrayDeque ();
+this.colSel =  new jalview.datamodel.ColumnSelection ();
+this.calculator =  new jalview.workers.AlignCalcManager ();
+this.changeSupport =  new java.beans.PropertyChangeSupport (this);
+this.sequenceColours =  new java.util.HashMap ();
+});
+Clazz.defineMethod (c$, "setFontName", 
+function (name) {
+this.viewStyle.setFontName (name);
+}, "~S");
+Clazz.defineMethod (c$, "setFontStyle", 
+function (style) {
+this.viewStyle.setFontStyle (style);
+}, "~N");
+Clazz.defineMethod (c$, "setFontSize", 
+function (size) {
+this.viewStyle.setFontSize (size);
+}, "~N");
+Clazz.defineMethod (c$, "getFontStyle", 
+function () {
+return this.viewStyle.getFontStyle ();
+});
+Clazz.defineMethod (c$, "getFontName", 
+function () {
+return this.viewStyle.getFontName ();
+});
+Clazz.defineMethod (c$, "getFontSize", 
+function () {
+return this.viewStyle.getFontSize ();
+});
+Clazz.defineMethod (c$, "setUpperCasebold", 
+function (upperCasebold) {
+this.viewStyle.setUpperCasebold (upperCasebold);
+}, "~B");
+Clazz.defineMethod (c$, "isUpperCasebold", 
+function () {
+return this.viewStyle.isUpperCasebold ();
+});
+Clazz.defineMethod (c$, "isSeqNameItalics", 
+function () {
+return this.viewStyle.isSeqNameItalics ();
+});
+Clazz.defineMethod (c$, "setColourByReferenceSeq", 
+function (colourByReferenceSeq) {
+this.viewStyle.setColourByReferenceSeq (colourByReferenceSeq);
+}, "~B");
+Clazz.defineMethod (c$, "setColourAppliesToAllGroups", 
+function (b) {
+this.viewStyle.setColourAppliesToAllGroups (b);
+}, "~B");
+Clazz.defineMethod (c$, "getColourAppliesToAllGroups", 
+function () {
+return this.viewStyle.getColourAppliesToAllGroups ();
+});
+Clazz.defineMethod (c$, "getAbovePIDThreshold", 
+function () {
+return this.viewStyle.getAbovePIDThreshold ();
+});
+Clazz.defineMethod (c$, "setIncrement", 
+function (inc) {
+this.viewStyle.setIncrement (inc);
+}, "~N");
+Clazz.defineMethod (c$, "getIncrement", 
+function () {
+return this.viewStyle.getIncrement ();
+});
+Clazz.defineMethod (c$, "setConservationSelected", 
+function (b) {
+this.viewStyle.setConservationSelected (b);
+}, "~B");
+Clazz.defineMethod (c$, "setShowHiddenMarkers", 
+function (show) {
+this.viewStyle.setShowHiddenMarkers (show);
+}, "~B");
+Clazz.defineMethod (c$, "getShowHiddenMarkers", 
+function () {
+return this.viewStyle.getShowHiddenMarkers ();
+});
+Clazz.defineMethod (c$, "setScaleRightWrapped", 
+function (b) {
+this.viewStyle.setScaleRightWrapped (b);
+}, "~B");
+Clazz.defineMethod (c$, "setScaleLeftWrapped", 
+function (b) {
+this.viewStyle.setScaleLeftWrapped (b);
+}, "~B");
+Clazz.defineMethod (c$, "setScaleAboveWrapped", 
+function (b) {
+this.viewStyle.setScaleAboveWrapped (b);
+}, "~B");
+Clazz.defineMethod (c$, "getScaleLeftWrapped", 
+function () {
+return this.viewStyle.getScaleLeftWrapped ();
+});
+Clazz.defineMethod (c$, "getScaleAboveWrapped", 
+function () {
+return this.viewStyle.getScaleAboveWrapped ();
+});
+Clazz.defineMethod (c$, "getScaleRightWrapped", 
+function () {
+return this.viewStyle.getScaleRightWrapped ();
+});
+Clazz.defineMethod (c$, "setAbovePIDThreshold", 
+function (b) {
+this.viewStyle.setAbovePIDThreshold (b);
+}, "~B");
+Clazz.defineMethod (c$, "setThreshold", 
+function (thresh) {
+this.viewStyle.setThreshold (thresh);
+}, "~N");
+Clazz.defineMethod (c$, "getThreshold", 
+function () {
+return this.viewStyle.getThreshold ();
+});
+Clazz.defineMethod (c$, "getShowJVSuffix", 
+function () {
+return this.viewStyle.getShowJVSuffix ();
+});
+Clazz.defineMethod (c$, "setShowJVSuffix", 
+function (b) {
+this.viewStyle.setShowJVSuffix (b);
+}, "~B");
+Clazz.defineMethod (c$, "setWrapAlignment", 
+function (state) {
+this.viewStyle.setWrapAlignment (state);
+}, "~B");
+Clazz.defineMethod (c$, "setShowText", 
+function (state) {
+this.viewStyle.setShowText (state);
+}, "~B");
+Clazz.defineMethod (c$, "setRenderGaps", 
+function (state) {
+this.viewStyle.setRenderGaps (state);
+}, "~B");
+Clazz.defineMethod (c$, "getColourText", 
+function () {
+return this.viewStyle.getColourText ();
+});
+Clazz.defineMethod (c$, "setColourText", 
+function (state) {
+this.viewStyle.setColourText (state);
+}, "~B");
+Clazz.defineMethod (c$, "getWrapAlignment", 
+function () {
+return this.viewStyle.getWrapAlignment ();
+});
+Clazz.defineMethod (c$, "getShowText", 
+function () {
+return this.viewStyle.getShowText ();
+});
+Clazz.defineMethod (c$, "getWrappedWidth", 
+function () {
+return this.viewStyle.getWrappedWidth ();
+});
+Clazz.defineMethod (c$, "setWrappedWidth", 
+function (w) {
+this.viewStyle.setWrappedWidth (w);
+}, "~N");
+Clazz.defineMethod (c$, "getCharHeight", 
+function () {
+return this.viewStyle.getCharHeight ();
+});
+Clazz.defineMethod (c$, "setCharHeight", 
+function (h) {
+this.viewStyle.setCharHeight (h);
+}, "~N");
+Clazz.defineMethod (c$, "getCharWidth", 
+function () {
+return this.viewStyle.getCharWidth ();
+});
+Clazz.defineMethod (c$, "setCharWidth", 
+function (w) {
+this.viewStyle.setCharWidth (w);
+}, "~N");
+Clazz.defineMethod (c$, "getShowBoxes", 
+function () {
+return this.viewStyle.getShowBoxes ();
+});
+Clazz.defineMethod (c$, "getShowUnconserved", 
+function () {
+return this.viewStyle.getShowUnconserved ();
+});
+Clazz.defineMethod (c$, "setShowUnconserved", 
+function (showunconserved) {
+this.viewStyle.setShowUnconserved (showunconserved);
+}, "~B");
+Clazz.defineMethod (c$, "setSeqNameItalics", 
+function (default1) {
+this.viewStyle.setSeqNameItalics (default1);
+}, "~B");
+Clazz.defineMethod (c$, "getAlignment", 
+function () {
+return this.alignment;
+});
+Clazz.overrideMethod (c$, "getGapCharacter", 
+function () {
+return this.alignment.getGapCharacter ();
+});
+Clazz.defineMethod (c$, "setDataset", 
+function (b) {
+this.$isDataset = b;
+}, "~B");
+Clazz.defineMethod (c$, "isDataset", 
+function () {
+return this.$isDataset;
+});
+Clazz.overrideMethod (c$, "setGlobalColourScheme", 
+function (cs) {
+this.globalColourScheme = cs;
+var recalc = false;
+if (cs != null) {
+cs.setConservationApplied (recalc = this.getConservationSelected ());
+if (this.getAbovePIDThreshold () || Clazz.instanceOf (cs, jalview.schemes.PIDColourScheme) || Clazz.instanceOf (cs, jalview.schemes.Blosum62ColourScheme)) {
+recalc = true;
+cs.setThreshold (this.viewStyle.getThreshold (), this.ignoreGapsInConsensusCalculation);
+} else {
+cs.setThreshold (0, this.ignoreGapsInConsensusCalculation);
+}if (recalc) {
+cs.setConsensus (this.hconsensus);
+cs.setConservation (this.hconservation);
+}cs.alignmentChanged (this.alignment, this.hiddenRepSequences);
+}if (this.getColourAppliesToAllGroups ()) {
+for (var sg, $sg = this.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (cs == null) {
+sg.cs = null;
+continue;
+}sg.cs = cs.applyTo (sg, this.getHiddenRepSequences ());
+sg.setConsPercGaps (this.ConsPercGaps);
+if (this.getAbovePIDThreshold () || Clazz.instanceOf (cs, jalview.schemes.PIDColourScheme) || Clazz.instanceOf (cs, jalview.schemes.Blosum62ColourScheme)) {
+sg.cs.setThreshold (this.viewStyle.getThreshold (), this.isIgnoreGapsConsensus ());
+recalc = true;
+} else {
+sg.cs.setThreshold (0, this.isIgnoreGapsConsensus ());
+}if (this.getConservationSelected ()) {
+sg.cs.setConservationApplied (true);
+recalc = true;
+} else {
+sg.cs.setConservation (null);
+}if (recalc) {
+sg.recalcConservation ();
+} else {
+sg.cs.alignmentChanged (sg, this.hiddenRepSequences);
+}}
+}}, "jalview.schemes.ColourSchemeI");
+Clazz.overrideMethod (c$, "getGlobalColourScheme", 
+function () {
+return this.globalColourScheme;
+});
+Clazz.overrideMethod (c$, "setConservation", 
+function (cons) {
+this.hconservation = cons;
+}, "jalview.analysis.Conservation");
+Clazz.overrideMethod (c$, "getConsPercGaps", 
+function () {
+return this.ConsPercGaps;
+});
+Clazz.overrideMethod (c$, "setSequenceConsensusHash", 
+function (hconsensus) {
+this.hconsensus = hconsensus;
+}, "~A");
+Clazz.overrideMethod (c$, "setComplementConsensusHash", 
+function (hconsensus) {
+this.hcomplementConsensus = hconsensus;
+}, "~A");
+Clazz.overrideMethod (c$, "getSequenceConsensusHash", 
+function () {
+return this.hconsensus;
+});
+Clazz.overrideMethod (c$, "getComplementConsensusHash", 
+function () {
+return this.hcomplementConsensus;
+});
+Clazz.overrideMethod (c$, "getRnaStructureConsensusHash", 
+function () {
+return this.hStrucConsensus;
+});
+Clazz.overrideMethod (c$, "setRnaStructureConsensusHash", 
+function (hStrucConsensus) {
+this.hStrucConsensus = hStrucConsensus;
+}, "~A");
+Clazz.overrideMethod (c$, "getAlignmentQualityAnnot", 
+function () {
+return this.quality;
+});
+Clazz.overrideMethod (c$, "getAlignmentConservationAnnotation", 
+function () {
+return this.conservation;
+});
+Clazz.overrideMethod (c$, "getAlignmentConsensusAnnotation", 
+function () {
+return this.consensus;
+});
+Clazz.overrideMethod (c$, "getComplementConsensusAnnotation", 
+function () {
+return this.complementConsensus;
+});
+Clazz.overrideMethod (c$, "getAlignmentStrucConsensusAnnotation", 
+function () {
+return this.strucConsensus;
+});
+Clazz.defineMethod (c$, "updateConservation", 
+function (ap) {
+if (this.alignment.isNucleotide () || this.conservation == null || !this.autoCalculateConsensus) {
+return;
+}if (this.calculator.getRegisteredWorkersOfClass (jalview.workers.ConservationThread) == null) {
+this.calculator.registerWorker ( new jalview.workers.ConservationThread (this, ap));
+}}, "jalview.api.AlignmentViewPanel");
+Clazz.defineMethod (c$, "updateConsensus", 
+function (ap) {
+if (this.consensus == null || !this.autoCalculateConsensus) {
+return;
+}if (this.calculator.getRegisteredWorkersOfClass (jalview.workers.ConsensusThread) == null) {
+this.calculator.registerWorker ( new jalview.workers.ConsensusThread (this, ap));
+}var al = this.getAlignment ();
+if (!al.isNucleotide () && al.getCodonFrames () != null && !al.getCodonFrames ().isEmpty ()) {
+if (this.calculator.getRegisteredWorkersOfClass (jalview.workers.ComplementConsensusThread) == null) {
+this.calculator.registerWorker ( new jalview.workers.ComplementConsensusThread (this, ap));
+}}}, "jalview.api.AlignmentViewPanel");
+Clazz.defineMethod (c$, "updateStrucConsensus", 
+function (ap) {
+if (this.autoCalculateStrucConsensus && this.strucConsensus == null && this.alignment.isNucleotide () && this.alignment.hasRNAStructure ()) {
+this.initRNAStructure ();
+}if (this.strucConsensus == null || !this.autoCalculateStrucConsensus) {
+return;
+}if (this.calculator.getRegisteredWorkersOfClass (jalview.workers.StrucConsensusThread) == null) {
+this.calculator.registerWorker ( new jalview.workers.StrucConsensusThread (this, ap));
+}}, "jalview.api.AlignmentViewPanel");
+Clazz.defineMethod (c$, "isCalcInProgress", 
+function () {
+return this.calculator.isWorking ();
+});
+Clazz.overrideMethod (c$, "isCalculationInProgress", 
+function (alignmentAnnotation) {
+if (!alignmentAnnotation.autoCalculated) {
+return false;
+}if (this.calculator.workingInvolvedWith (alignmentAnnotation)) {
+return true;
+}return false;
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.overrideMethod (c$, "isClosed", 
+function () {
+return this.alignment == null;
+});
+Clazz.overrideMethod (c$, "getCalcManager", 
+function () {
+return this.calculator;
+});
+Clazz.overrideMethod (c$, "isShowSequenceLogo", 
+function () {
+return this.showSequenceLogo;
+});
+Clazz.defineMethod (c$, "setShowSequenceLogo", 
+function (showSequenceLogo) {
+if (showSequenceLogo != this.showSequenceLogo) {
+this.showSequenceLogo = showSequenceLogo;
+this.calculator.updateAnnotationFor (jalview.workers.ConsensusThread);
+this.calculator.updateAnnotationFor (jalview.workers.ComplementConsensusThread);
+this.calculator.updateAnnotationFor (jalview.workers.StrucConsensusThread);
+}this.showSequenceLogo = showSequenceLogo;
+}, "~B");
+Clazz.defineMethod (c$, "setShowConsensusHistogram", 
+function (showConsensusHistogram) {
+this.showConsensusHistogram = showConsensusHistogram;
+}, "~B");
+Clazz.defineMethod (c$, "isShowGroupConservation", 
+function () {
+return this.showGroupConservation;
+});
+Clazz.defineMethod (c$, "setShowGroupConservation", 
+function (showGroupConservation) {
+this.showGroupConservation = showGroupConservation;
+}, "~B");
+Clazz.defineMethod (c$, "isShowGroupConsensus", 
+function () {
+return this.showGroupConsensus;
+});
+Clazz.defineMethod (c$, "setShowGroupConsensus", 
+function (showGroupConsensus) {
+this.showGroupConsensus = showGroupConsensus;
+}, "~B");
+Clazz.overrideMethod (c$, "isShowConsensusHistogram", 
+function () {
+return this.showConsensusHistogram;
+});
+Clazz.overrideMethod (c$, "getSelectionGroup", 
+function () {
+return this.selectionGroup;
+});
+Clazz.overrideMethod (c$, "setSelectionGroup", 
+function (sg) {
+this.selectionGroup = sg;
+}, "jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "setHiddenColumns", 
+function (colsel) {
+this.colSel = colsel;
+}, "jalview.datamodel.ColumnSelection");
+Clazz.overrideMethod (c$, "getColumnSelection", 
+function () {
+return this.colSel;
+});
+Clazz.overrideMethod (c$, "setColumnSelection", 
+function (colSel) {
+this.colSel = colSel;
+if (colSel != null) {
+this.updateHiddenColumns ();
+}}, "jalview.datamodel.ColumnSelection");
+Clazz.overrideMethod (c$, "getHiddenRepSequences", 
+function () {
+return this.hiddenRepSequences;
+});
+Clazz.overrideMethod (c$, "setHiddenRepSequences", 
+function (hiddenRepSequences) {
+this.hiddenRepSequences = hiddenRepSequences;
+}, "java.util.Map");
+Clazz.overrideMethod (c$, "hasHiddenColumns", 
+function () {
+return this.colSel != null && this.colSel.hasHiddenColumns ();
+});
+Clazz.defineMethod (c$, "updateHiddenColumns", 
+function () {
+});
+Clazz.overrideMethod (c$, "hasHiddenRows", 
+function () {
+return this.alignment.getHiddenSequences ().getSize () > 0;
+});
+Clazz.defineMethod (c$, "setSequenceSetId", 
+function (newid) {
+if (this.sequenceSetID != null) {
+System.err.println ("Warning - overwriting a sequenceSetId for a viewport!");
+}this.sequenceSetID =  String.instantialize (newid);
+}, "~S");
+Clazz.overrideMethod (c$, "getSequenceSetId", 
+function () {
+if (this.sequenceSetID == null) {
+this.sequenceSetID = this.alignment.hashCode () + "";
+}return this.sequenceSetID;
+});
+Clazz.overrideMethod (c$, "getViewId", 
+function () {
+if (this.viewId == null) {
+this.viewId = this.getSequenceSetId () + "." + this.hashCode () + "";
+}return this.viewId;
+});
+Clazz.defineMethod (c$, "setIgnoreGapsConsensus", 
+function (b, ap) {
+this.ignoreGapsInConsensusCalculation = b;
+if (ap != null) {
+this.updateConsensus (ap);
+if (this.globalColourScheme != null) {
+this.globalColourScheme.setThreshold (this.globalColourScheme.getThreshold (), this.ignoreGapsInConsensusCalculation);
+}}}, "~B,jalview.api.AlignmentViewPanel");
+Clazz.defineMethod (c$, "isSelectionGroupChanged", 
+function (b) {
+var hc = (this.selectionGroup == null || this.selectionGroup.getSize () == 0) ? -1 : this.selectionGroup.hashCode ();
+if (hc != -1 && hc != this.sgrouphash) {
+if (b) {
+this.sgrouphash = hc;
+}return true;
+}return false;
+}, "~B");
+Clazz.defineMethod (c$, "isColSelChanged", 
+function (b) {
+var hc = (this.colSel == null || this.colSel.size () == 0) ? -1 : this.colSel.hashCode ();
+if (hc != -1 && hc != this.colselhash) {
+if (b) {
+this.colselhash = hc;
+}return true;
+}return false;
+}, "~B");
+Clazz.overrideMethod (c$, "isIgnoreGapsConsensus", 
+function () {
+return this.ignoreGapsInConsensusCalculation;
+});
+Clazz.defineMethod (c$, "addPropertyChangeListener", 
+function (listener) {
+this.changeSupport.addPropertyChangeListener (listener);
+}, "java.beans.PropertyChangeListener");
+Clazz.defineMethod (c$, "removePropertyChangeListener", 
+function (listener) {
+this.changeSupport.removePropertyChangeListener (listener);
+}, "java.beans.PropertyChangeListener");
+Clazz.defineMethod (c$, "firePropertyChange", 
+function (prop, oldvalue, newvalue) {
+this.changeSupport.firePropertyChange (prop, oldvalue, newvalue);
+}, "~S,~O,~O");
+Clazz.defineMethod (c$, "hideSelectedColumns", 
+function () {
+if (this.colSel.size () < 1) {
+return;
+}this.colSel.hideSelectedColumns ();
+this.setSelectionGroup (null);
+});
+Clazz.defineMethod (c$, "hideColumns", 
+function (start, end) {
+if (start == end) {
+this.colSel.hideColumns (start);
+} else {
+this.colSel.hideColumns (start, end);
+}}, "~N,~N");
+Clazz.defineMethod (c$, "showColumn", 
+function (col) {
+this.colSel.revealHiddenColumns (col);
+}, "~N");
+Clazz.defineMethod (c$, "showAllHiddenColumns", 
+function () {
+this.colSel.revealAllHiddenColumns ();
+});
+Clazz.defineMethod (c$, "showAllHiddenSeqs", 
+function () {
+if (this.alignment.getHiddenSequences ().getSize () > 0) {
+if (this.selectionGroup == null) {
+this.selectionGroup =  new jalview.datamodel.SequenceGroup ();
+this.selectionGroup.setEndRes (this.alignment.getWidth () - 1);
+}var tmp = this.alignment.getHiddenSequences ().showAll (this.hiddenRepSequences);
+for (var seq, $seq = tmp.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+this.selectionGroup.addSequence (seq, false);
+this.setSequenceAnnotationsVisible (seq, true);
+}
+this.hiddenRepSequences = null;
+this.firePropertyChange ("alignment", null, this.alignment.getSequences ());
+this.sendSelection ();
+}});
+Clazz.defineMethod (c$, "showSequence", 
+function (index) {
+var tmp = this.alignment.getHiddenSequences ().showSequence (index, this.hiddenRepSequences);
+if (tmp.size () > 0) {
+if (this.selectionGroup == null) {
+this.selectionGroup =  new jalview.datamodel.SequenceGroup ();
+this.selectionGroup.setEndRes (this.alignment.getWidth () - 1);
+}for (var seq, $seq = tmp.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+this.selectionGroup.addSequence (seq, false);
+this.setSequenceAnnotationsVisible (seq, true);
+}
+this.firePropertyChange ("alignment", null, this.alignment.getSequences ());
+this.sendSelection ();
+}}, "~N");
+Clazz.defineMethod (c$, "hideAllSelectedSeqs", 
+function () {
+if (this.selectionGroup == null || this.selectionGroup.getSize () < 1) {
+return;
+}var seqs = this.selectionGroup.getSequencesInOrder (this.alignment);
+this.hideSequence (seqs);
+this.setSelectionGroup (null);
+});
+Clazz.defineMethod (c$, "hideSequence", 
+function (seq) {
+if (seq != null) {
+for (var i = 0; i < seq.length; i++) {
+this.alignment.getHiddenSequences ().hideSequence (seq[i]);
+this.setSequenceAnnotationsVisible (seq[i], false);
+}
+this.firePropertyChange ("alignment", null, this.alignment.getSequences ());
+}}, "~A");
+Clazz.defineMethod (c$, "setSequenceAnnotationsVisible", 
+function (sequenceI, visible) {
+for (var ann, $ann = 0, $$ann = this.alignment.getAlignmentAnnotation (); $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {
+if (ann.sequenceRef === sequenceI) {
+ann.visible = visible;
+}}
+}, "jalview.datamodel.SequenceI,~B");
+Clazz.defineMethod (c$, "hideRepSequences", 
+function (repSequence, sg) {
+var sSize = sg.getSize ();
+if (sSize < 2) {
+return;
+}if (this.hiddenRepSequences == null) {
+this.hiddenRepSequences =  new java.util.Hashtable ();
+}this.hiddenRepSequences.put (repSequence, sg);
+var seqs =  new Array (sSize - 1);
+var index = 0;
+for (var i = 0; i < sSize; i++) {
+if (sg.getSequenceAt (i) !== repSequence) {
+if (index == sSize - 1) {
+return;
+}seqs[index++] = sg.getSequenceAt (i);
+}}
+sg.setSeqrep (repSequence);
+sg.setHidereps (true);
+this.hideSequence (seqs);
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");
+Clazz.defineMethod (c$, "isHiddenRepSequence", 
+function (seq) {
+return this.alignment.getSeqrep () === seq || (this.hiddenRepSequences != null && this.hiddenRepSequences.containsKey (seq));
+}, "jalview.datamodel.SequenceI");
+Clazz.defineMethod (c$, "getRepresentedSequences", 
+function (seq) {
+return (this.hiddenRepSequences == null ? null : this.hiddenRepSequences.get (seq));
+}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "adjustForHiddenSeqs", 
+function (alignmentIndex) {
+return this.alignment.getHiddenSequences ().adjustForHiddenSeqs (alignmentIndex);
+}, "~N");
+Clazz.overrideMethod (c$, "invertColumnSelection", 
+function () {
+this.colSel.invertColumnSelection (0, this.alignment.getWidth ());
+});
+Clazz.overrideMethod (c$, "getSelectionAsNewSequence", 
+function () {
+var sequences;
+if (this.selectionGroup == null || this.selectionGroup.getSize () == 0) {
+sequences = this.alignment.getSequencesArray ();
+var annots = this.alignment.getAlignmentAnnotation ();
+for (var i = 0; i < sequences.length; i++) {
+sequences[i] =  new jalview.datamodel.Sequence (sequences[i], annots);
+}
+} else {
+sequences = this.selectionGroup.getSelectionAsNewSequences (this.alignment);
+}return sequences;
+});
+Clazz.overrideMethod (c$, "getSequenceSelection", 
+function () {
+var sequences = null;
+if (this.selectionGroup != null) {
+sequences = this.selectionGroup.getSequencesInOrder (this.alignment);
+}if (sequences == null) {
+sequences = this.alignment.getSequencesArray ();
+}return sequences;
+});
+Clazz.overrideMethod (c$, "getViewAsCigars", 
+function (selectedRegionOnly) {
+return  new jalview.datamodel.CigarArray (this.alignment, this.colSel, (selectedRegionOnly ? this.selectionGroup : null));
+}, "~B");
+Clazz.defineMethod (c$, "getAlignmentView", 
+function (selectedOnly) {
+return this.getAlignmentView (selectedOnly, false);
+}, "~B");
+Clazz.defineMethod (c$, "getAlignmentView", 
+function (selectedOnly, markGroups) {
+return  new jalview.datamodel.AlignmentView (this.alignment, this.colSel, this.selectionGroup, this.colSel != null && this.colSel.hasHiddenColumns (), selectedOnly, markGroups);
+}, "~B,~B");
+Clazz.overrideMethod (c$, "getViewAsString", 
+function (selectedRegionOnly) {
+var selection = null;
+var seqs = null;
+var i;
+var iSize;
+var start = 0;
+var end = 0;
+if (selectedRegionOnly && this.selectionGroup != null) {
+iSize = this.selectionGroup.getSize ();
+seqs = this.selectionGroup.getSequencesInOrder (this.alignment);
+start = this.selectionGroup.getStartRes ();
+end = this.selectionGroup.getEndRes () + 1;
+} else {
+iSize = this.alignment.getHeight ();
+seqs = this.alignment.getSequencesArray ();
+end = this.alignment.getWidth ();
+}selection =  new Array (iSize);
+if (this.colSel != null && this.colSel.hasHiddenColumns ()) {
+selection = this.colSel.getVisibleSequenceStrings (start, end, seqs);
+} else {
+for (i = 0; i < iSize; i++) {
+selection[i] = seqs[i].getSequenceAsString (start, end);
+}
+}return selection;
+}, "~B");
+Clazz.overrideMethod (c$, "getVisibleRegionBoundaries", 
+function (min, max) {
+var regions =  new java.util.ArrayList ();
+var start = min;
+var end = max;
+do {
+if (this.colSel != null && this.colSel.hasHiddenColumns ()) {
+if (start == 0) {
+start = this.colSel.adjustForHiddenColumns (start);
+}end = this.colSel.getHiddenBoundaryRight (start);
+if (start == end) {
+end = max;
+}if (end > max) {
+end = max;
+}}regions.add ( Clazz.newIntArray (-1, [start, end]));
+if (this.colSel != null && this.colSel.hasHiddenColumns ()) {
+start = this.colSel.adjustForHiddenColumns (end);
+start = this.colSel.getHiddenBoundaryLeft (start) + 1;
+}} while (end < max);
+var startEnd =  Clazz.newIntArray (regions.size (), 2, 0);
+return regions;
+}, "~N,~N");
+Clazz.overrideMethod (c$, "getVisibleAlignmentAnnotation", 
+function (selectedOnly) {
+var ala =  new java.util.ArrayList ();
+var aa;
+if ((aa = this.alignment.getAlignmentAnnotation ()) != null) {
+for (var annot, $annot = 0, $$annot = aa; $annot < $$annot.length && ((annot = $$annot[$annot]) || true); $annot++) {
+var clone =  new jalview.datamodel.AlignmentAnnotation (annot);
+if (selectedOnly && this.selectionGroup != null) {
+this.colSel.makeVisibleAnnotation (this.selectionGroup.getStartRes (), this.selectionGroup.getEndRes (), clone);
+} else {
+this.colSel.makeVisibleAnnotation (clone);
+}ala.add (clone);
+}
+}return ala;
+}, "~B");
+Clazz.overrideMethod (c$, "isPadGaps", 
+function () {
+return this.padGaps;
+});
+Clazz.overrideMethod (c$, "setPadGaps", 
+function (padGaps) {
+this.padGaps = padGaps;
+}, "~B");
+Clazz.overrideMethod (c$, "alignmentChanged", 
+function (ap) {
+if (this.isPadGaps ()) {
+this.alignment.padGaps ();
+}if (this.autoCalculateConsensus) {
+this.updateConsensus (ap);
+}if (this.hconsensus != null && this.autoCalculateConsensus) {
+this.updateConservation (ap);
+}if (this.autoCalculateStrucConsensus) {
+this.updateStrucConsensus (ap);
+}var alWidth = this.alignment.getWidth ();
+var groups = this.alignment.getGroups ();
+if (groups != null) {
+for (var sg, $sg = groups.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.getEndRes () > alWidth) {
+sg.setEndRes (alWidth - 1);
+}}
+}if (this.selectionGroup != null && this.selectionGroup.getEndRes () > alWidth) {
+this.selectionGroup.setEndRes (alWidth - 1);
+}this.resetAllColourSchemes ();
+this.calculator.restartWorkers ();
+}, "jalview.api.AlignmentViewPanel");
+Clazz.defineMethod (c$, "resetAllColourSchemes", 
+function () {
+var cs = this.globalColourScheme;
+if (cs != null) {
+cs.alignmentChanged (this.alignment, this.hiddenRepSequences);
+cs.setConsensus (this.hconsensus);
+if (cs.conservationApplied ()) {
+cs.setConservation (jalview.analysis.Conservation.calculateConservation ("All", jalview.schemes.ResidueProperties.propHash, 3, this.alignment.getSequences (), 0, this.alignment.getWidth (), false, this.getConsPercGaps (), false));
+}}for (var sg, $sg = this.alignment.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.cs != null) {
+sg.cs.alignmentChanged (sg, this.hiddenRepSequences);
+}sg.recalcConservation ();
+}
+});
+Clazz.defineMethod (c$, "initAutoAnnotation", 
+function () {
+if (this.hconsensus == null && !this.$isDataset) {
+if (!this.alignment.isNucleotide ()) {
+this.initConservation ();
+this.initQuality ();
+} else {
+this.initRNAStructure ();
+}this.consensus =  new jalview.datamodel.AlignmentAnnotation ("Consensus", "PID",  new Array (1), 0, 100, 1);
+this.initConsensus (this.consensus);
+this.initComplementConsensus ();
+}});
+Clazz.defineMethod (c$, "initComplementConsensus", 
+function () {
+if (!this.alignment.isNucleotide ()) {
+var codonMappings = this.alignment.getCodonFrames ();
+if (codonMappings != null && !codonMappings.isEmpty ()) {
+this.complementConsensus =  new jalview.datamodel.AlignmentAnnotation ("cDNA Consensus", "PID for cDNA",  new Array (1), 0, 100, 1);
+this.initConsensus (this.complementConsensus);
+}}});
+Clazz.defineMethod (c$, "initConsensus", 
+($fz = function (aa) {
+aa.hasText = true;
+aa.autoCalculated = true;
+if (this.showConsensus) {
+this.alignment.addAnnotation (aa);
+}}, $fz.isPrivate = true, $fz), "jalview.datamodel.AlignmentAnnotation");
+Clazz.defineMethod (c$, "initConservation", 
+($fz = function () {
+if (this.showConservation) {
+if (this.conservation == null) {
+this.conservation =  new jalview.datamodel.AlignmentAnnotation ("Conservation", "Conservation of total alignment less than " + this.getConsPercGaps () + "% gaps",  new Array (1), 0, 11, 1);
+this.conservation.hasText = true;
+this.conservation.autoCalculated = true;
+this.alignment.addAnnotation (this.conservation);
+}}}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "initQuality", 
+($fz = function () {
+if (this.showQuality) {
+if (this.quality == null) {
+this.quality =  new jalview.datamodel.AlignmentAnnotation ("Quality", "Alignment Quality based on Blosum62 scores",  new Array (1), 0, 11, 1);
+this.quality.hasText = true;
+this.quality.autoCalculated = true;
+this.alignment.addAnnotation (this.quality);
+}}}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "initRNAStructure", 
+($fz = function () {
+if (this.alignment.hasRNAStructure () && this.strucConsensus == null) {
+this.strucConsensus =  new jalview.datamodel.AlignmentAnnotation ("StrucConsensus", "PID",  new Array (1), 0, 100, 1);
+this.strucConsensus.hasText = true;
+this.strucConsensus.autoCalculated = true;
+if (this.showConsensus) {
+this.alignment.addAnnotation (this.strucConsensus);
+}}}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "calcPanelHeight", 
+function () {
+var anns = this.getAlignment ().getAlignmentAnnotation ();
+var height = 0;
+var charHeight = this.getCharHeight ();
+if (anns != null) {
+var graphgrp =  new java.util.BitSet ();
+for (var aa, $aa = 0, $$aa = anns; $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
+if (aa == null) {
+System.err.println ("Null annotation row: ignoring.");
+continue;
+}if (!aa.visible) {
+continue;
+}if (aa.graphGroup > -1) {
+if (graphgrp.get (aa.graphGroup)) {
+continue;
+} else {
+graphgrp.set (aa.graphGroup);
+}}aa.height = 0;
+if (aa.hasText) {
+aa.height += charHeight;
+}if (aa.hasIcons) {
+aa.height += 16;
+}if (aa.graph > 0) {
+aa.height += aa.graphHeight;
+}if (aa.height == 0) {
+aa.height = 20;
+}height += aa.height;
+}
+}if (height == 0) {
+height = 20;
+}return height;
+});
+Clazz.overrideMethod (c$, "updateGroupAnnotationSettings", 
+function (applyGlobalSettings, preserveNewGroupSettings) {
+var updateCalcs = false;
+var conv = this.isShowGroupConservation ();
+var cons = this.isShowGroupConsensus ();
+var showprf = this.isShowSequenceLogo ();
+var showConsHist = this.isShowConsensusHistogram ();
+var normLogo = this.isNormaliseSequenceLogo ();
+var sortg = true;
+var aan = this.alignment.getAlignmentAnnotation ();
+var oldrfs =  new java.util.ArrayList ();
+if (aan != null) {
+for (var an = 0; an < aan.length; an++) {
+if (aan[an].autoCalculated && aan[an].groupRef != null) {
+oldrfs.add (aan[an].groupRef);
+this.alignment.deleteAnnotation (aan[an], false);
+}}
+}if (this.alignment.getGroups () != null) {
+for (var sg, $sg = this.alignment.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+updateCalcs = false;
+if (applyGlobalSettings || (!preserveNewGroupSettings && !oldrfs.contains (sg))) {
+sg.setshowSequenceLogo (showprf);
+sg.setShowConsensusHistogram (showConsHist);
+sg.setNormaliseSequenceLogo (normLogo);
+}if (conv) {
+updateCalcs = true;
+this.alignment.addAnnotation (sg.getConservationRow (), 0);
+}if (cons) {
+updateCalcs = true;
+this.alignment.addAnnotation (sg.getConsensus (), 0);
+}if (updateCalcs) {
+sg.recalcConservation ();
+}}
+}oldrfs.clear ();
+}, "~B,~B");
+Clazz.defineMethod (c$, "isDisplayReferenceSeq", 
+function () {
+return this.alignment.hasSeqrep () && this.viewStyle.isDisplayReferenceSeq ();
+});
+Clazz.defineMethod (c$, "setDisplayReferenceSeq", 
+function (displayReferenceSeq) {
+this.viewStyle.setDisplayReferenceSeq (displayReferenceSeq);
+}, "~B");
+Clazz.defineMethod (c$, "isColourByReferenceSeq", 
+function () {
+return this.alignment.hasSeqrep () && this.viewStyle.isColourByReferenceSeq ();
+});
+Clazz.overrideMethod (c$, "getSequenceColour", 
+function (seq) {
+var sqc = this.sequenceColours.get (seq);
+return (sqc == null ? java.awt.Color.white : sqc);
+}, "jalview.datamodel.SequenceI");
+Clazz.overrideMethod (c$, "setSequenceColour", 
+function (seq, col) {
+if (col == null) {
+this.sequenceColours.remove (seq);
+} else {
+this.sequenceColours.put (seq, col);
+}}, "jalview.datamodel.SequenceI,java.awt.Color");
+Clazz.overrideMethod (c$, "updateSequenceIdColours", 
+function () {
+for (var sg, $sg = this.alignment.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.idColour != null) {
+for (var s, $s = sg.getSequences (this.getHiddenRepSequences ()).iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {
+this.sequenceColours.put (s, sg.idColour);
+}
+}}
+});
+Clazz.overrideMethod (c$, "clearSequenceColours", 
+function () {
+this.sequenceColours.clear ();
+});
+Clazz.defineMethod (c$, "getCodingComplement", 
+function () {
+return this.codingComplement;
+});
+Clazz.defineMethod (c$, "setCodingComplement", 
+function (av) {
+if (this === av) {
+System.err.println ("Ignoring recursive setCodingComplement request");
+} else {
+this.codingComplement = av;
+if (av.getCodingComplement () !== this) {
+av.setCodingComplement (this);
+}}}, "jalview.api.AlignViewportI");
+Clazz.overrideMethod (c$, "isNucleotide", 
+function () {
+return this.getAlignment () == null ? false : this.getAlignment ().isNucleotide ();
+});
+Clazz.overrideMethod (c$, "getFeaturesDisplayed", 
+function () {
+return this.featuresDisplayed;
+});
+Clazz.overrideMethod (c$, "setFeaturesDisplayed", 
+function (featuresDisplayedI) {
+this.featuresDisplayed = featuresDisplayedI;
+}, "jalview.api.FeaturesDisplayedI");
+Clazz.overrideMethod (c$, "areFeaturesDisplayed", 
+function () {
+return this.featuresDisplayed != null && this.featuresDisplayed.getRegisterdFeaturesCount () > 0;
+});
+Clazz.defineMethod (c$, "setShowSequenceFeatures", 
+function (b) {
+this.viewStyle.setShowSequenceFeatures (b);
+}, "~B");
+Clazz.defineMethod (c$, "isShowSequenceFeatures", 
+function () {
+return this.viewStyle.isShowSequenceFeatures ();
+});
+Clazz.defineMethod (c$, "setShowSequenceFeaturesHeight", 
+function (selected) {
+this.viewStyle.setShowSequenceFeaturesHeight (selected);
+}, "~B");
+Clazz.defineMethod (c$, "isShowSequenceFeaturesHeight", 
+function () {
+return this.viewStyle.isShowSequenceFeaturesHeight ();
+});
+Clazz.defineMethod (c$, "setShowAnnotation", 
+function (b) {
+this.viewStyle.setShowAnnotation (b);
+}, "~B");
+Clazz.defineMethod (c$, "isShowAnnotation", 
+function () {
+return this.viewStyle.isShowAnnotation ();
+});
+Clazz.defineMethod (c$, "isRightAlignIds", 
+function () {
+return this.viewStyle.isRightAlignIds ();
+});
+Clazz.defineMethod (c$, "setRightAlignIds", 
+function (rightAlignIds) {
+this.viewStyle.setRightAlignIds (rightAlignIds);
+}, "~B");
+Clazz.defineMethod (c$, "getConservationSelected", 
+function () {
+return this.viewStyle.getConservationSelected ();
+});
+Clazz.defineMethod (c$, "setShowBoxes", 
+function (state) {
+this.viewStyle.setShowBoxes (state);
+}, "~B");
+Clazz.defineMethod (c$, "getTextColour", 
+function () {
+return this.viewStyle.getTextColour ();
+});
+Clazz.defineMethod (c$, "getTextColour2", 
+function () {
+return this.viewStyle.getTextColour2 ();
+});
+Clazz.defineMethod (c$, "getThresholdTextColour", 
+function () {
+return this.viewStyle.getThresholdTextColour ();
+});
+Clazz.defineMethod (c$, "isConservationColourSelected", 
+function () {
+return this.viewStyle.isConservationColourSelected ();
+});
+Clazz.defineMethod (c$, "isRenderGaps", 
+function () {
+return this.viewStyle.isRenderGaps ();
+});
+Clazz.defineMethod (c$, "isShowColourText", 
+function () {
+return this.viewStyle.isShowColourText ();
+});
+Clazz.defineMethod (c$, "setConservationColourSelected", 
+function (conservationColourSelected) {
+this.viewStyle.setConservationColourSelected (conservationColourSelected);
+}, "~B");
+Clazz.defineMethod (c$, "setShowColourText", 
+function (showColourText) {
+this.viewStyle.setShowColourText (showColourText);
+}, "~B");
+Clazz.defineMethod (c$, "setTextColour", 
+function (textColour) {
+this.viewStyle.setTextColour (textColour);
+}, "java.awt.Color");
+Clazz.defineMethod (c$, "setThresholdTextColour", 
+function (thresholdTextColour) {
+this.viewStyle.setThresholdTextColour (thresholdTextColour);
+}, "~N");
+Clazz.defineMethod (c$, "setTextColour2", 
+function (textColour2) {
+this.viewStyle.setTextColour2 (textColour2);
+}, "java.awt.Color");
+Clazz.overrideMethod (c$, "getViewStyle", 
+function () {
+return  new jalview.viewmodel.styles.ViewStyle (this.viewStyle);
+});
+Clazz.overrideMethod (c$, "setViewStyle", 
+function (settingsForView) {
+this.viewStyle =  new jalview.viewmodel.styles.ViewStyle (settingsForView);
+}, "jalview.api.ViewStyleI");
+Clazz.defineMethod (c$, "sameStyle", 
+function (them) {
+return this.viewStyle.sameStyle (them);
+}, "jalview.api.ViewStyleI");
+Clazz.defineMethod (c$, "getIdWidth", 
+function () {
+return this.viewStyle.getIdWidth ();
+});
+Clazz.defineMethod (c$, "setIdWidth", 
+function (i) {
+this.viewStyle.setIdWidth (i);
+}, "~N");
+Clazz.defineMethod (c$, "isCentreColumnLabels", 
+function () {
+return this.viewStyle.isCentreColumnLabels ();
+});
+Clazz.defineMethod (c$, "setCentreColumnLabels", 
+function (centreColumnLabels) {
+this.viewStyle.setCentreColumnLabels (centreColumnLabels);
+}, "~B");
+Clazz.defineMethod (c$, "setShowDBRefs", 
+function (showdbrefs) {
+this.viewStyle.setShowDBRefs (showdbrefs);
+}, "~B");
+Clazz.defineMethod (c$, "isShowDBRefs", 
+function () {
+return this.viewStyle.isShowDBRefs ();
+});
+Clazz.defineMethod (c$, "isShowNPFeats", 
+function () {
+return this.viewStyle.isShowNPFeats ();
+});
+Clazz.defineMethod (c$, "setShowNPFeats", 
+function (shownpfeats) {
+this.viewStyle.setShowNPFeats (shownpfeats);
+}, "~B");
+Clazz.defineMethod (c$, "addToHistoryList", 
+function (command) {
+if (this.historyList != null) {
+this.historyList.push (command);
+this.broadcastCommand (command, false);
+}}, "jalview.commands.CommandI");
+Clazz.defineMethod (c$, "broadcastCommand", 
+function (command, undo) {
+this.getStructureSelectionManager ().commandPerformed (command, undo, this.getVamsasSource ());
+}, "jalview.commands.CommandI,~B");
+Clazz.defineMethod (c$, "addToRedoList", 
+function (command) {
+if (this.redoList != null) {
+this.redoList.push (command);
+}this.broadcastCommand (command, true);
+}, "jalview.commands.CommandI");
+Clazz.defineMethod (c$, "clearRedoList", 
+function () {
+if (this.redoList != null) {
+this.redoList.clear ();
+}});
+Clazz.defineMethod (c$, "setHistoryList", 
+function (list) {
+this.historyList = list;
+}, "java.util.Deque");
+Clazz.defineMethod (c$, "getHistoryList", 
+function () {
+return this.historyList;
+});
+Clazz.defineMethod (c$, "setRedoList", 
+function (list) {
+this.redoList = list;
+}, "java.util.Deque");
+Clazz.defineMethod (c$, "getRedoList", 
+function () {
+return this.redoList;
+});
+Clazz.overrideMethod (c$, "getVamsasSource", 
+function () {
+return this;
+});
+Clazz.defineMethod (c$, "getSortAnnotationsBy", 
+function () {
+return this.sortAnnotationsBy;
+});
+Clazz.defineMethod (c$, "setSortAnnotationsBy", 
+function (sortAnnotationsBy) {
+this.sortAnnotationsBy = sortAnnotationsBy;
+}, "jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");
+Clazz.defineMethod (c$, "isShowAutocalculatedAbove", 
+function () {
+return this.showAutocalculatedAbove;
+});
+Clazz.defineMethod (c$, "setShowAutocalculatedAbove", 
+function (showAutocalculatedAbove) {
+this.showAutocalculatedAbove = showAutocalculatedAbove;
+}, "~B");
+Clazz.defineMethod (c$, "isScaleProteinAsCdna", 
+function () {
+return this.viewStyle.isScaleProteinAsCdna ();
+});
+Clazz.defineMethod (c$, "setScaleProteinAsCdna", 
+function (b) {
+this.viewStyle.setScaleProteinAsCdna (b);
+}, "~B");
+Clazz.defineMethod (c$, "isFollowHighlight", 
+function () {
+return this.followHighlight;
+});
+Clazz.overrideMethod (c$, "setFollowHighlight", 
+function (b) {
+this.followHighlight = b;
+}, "~B");
+Clazz.defineMethod (c$, "getStartRes", 
+function () {
+return this.startRes;
+});
+Clazz.overrideMethod (c$, "getEndRes", 
+function () {
+return this.endRes;
+});
+Clazz.defineMethod (c$, "getStartSeq", 
+function () {
+return this.startSeq;
+});
+Clazz.defineMethod (c$, "setStartRes", 
+function (res) {
+this.startRes = res;
+}, "~N");
+Clazz.defineMethod (c$, "setStartSeq", 
+function (seq) {
+this.startSeq = seq;
+}, "~N");
+Clazz.defineMethod (c$, "setEndRes", 
+function (res) {
+if (res > this.alignment.getWidth () - 1) {
+res = this.alignment.getWidth () - 1;
+}if (res < 0) {
+res = 0;
+}this.endRes = res;
+}, "~N");
+Clazz.defineMethod (c$, "setEndSeq", 
+function (seq) {
+if (seq > this.alignment.getHeight ()) {
+seq = this.alignment.getHeight ();
+}if (seq < 0) {
+seq = 0;
+}this.endSeq = seq;
+}, "~N");
+Clazz.defineMethod (c$, "getEndSeq", 
+function () {
+return this.endSeq;
+});
+Clazz.defineMethod (c$, "findComplementScrollTarget", 
+function (sr) {
+var complement = this.getCodingComplement ();
+if (complement == null || !complement.isFollowHighlight ()) {
+return 0;
+}var iAmProtein = !this.getAlignment ().isNucleotide ();
+var proteinAlignment = iAmProtein ? this.getAlignment () : complement.getAlignment ();
+if (proteinAlignment == null) {
+return 0;
+}var mappings = proteinAlignment.getCodonFrames ();
+var seqOffset = 0;
+var sequence = null;
+var middleColumn = this.getStartRes () + Clazz.doubleToInt ((this.getEndRes () - this.getStartRes ()) / 2);
+var hiddenSequences = this.getAlignment ().getHiddenSequences ();
+for (var seqNo = this.getStartSeq (); seqNo < this.getEndSeq (); seqNo++, seqOffset++) {
+sequence = this.getAlignment ().getSequenceAt (seqNo);
+if (hiddenSequences != null && hiddenSequences.isHidden (sequence)) {
+continue;
+}if (jalview.util.Comparison.isGap (sequence.getCharAt (middleColumn))) {
+continue;
+}var seqMappings = jalview.util.MappingUtils.findMappingsForSequence (sequence, mappings);
+if (!seqMappings.isEmpty ()) {
+break;
+}}
+if (sequence == null) {
+return 0;
+}jalview.util.MappingUtils.addSearchResults (sr, sequence, sequence.findPosition (middleColumn), mappings);
+return seqOffset;
+}, "jalview.datamodel.SearchResults");
+});
index 25ba04c..47bb240 100644 (file)
Binary files a/bin/jalview/viewmodel/PCAModel.class and b/bin/jalview/viewmodel/PCAModel.class differ
index cdb9868..7527935 100644 (file)
-Clazz.declarePackage ("jalview.viewmodel");\r
-Clazz.load (null, "jalview.viewmodel.PCAModel", ["jalview.analysis.PCA", "jalview.datamodel.SequencePoint", "java.lang.StringBuffer", "java.util.Vector"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.pca = null;\r
-this.top = 0;\r
-this.seqstrings = null;\r
-this.seqs = null;\r
-this.score_matrix = null;\r
-this.nucleotide = false;\r
-this.points = null;\r
-this.jvCalcMode = true;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.viewmodel, "PCAModel");\r
-Clazz.makeConstructor (c$, \r
-function (seqstrings2, seqs2, nucleotide2) {\r
-this.seqstrings = seqstrings2;\r
-this.seqs = seqs2;\r
-this.nucleotide = nucleotide2;\r
-this.score_matrix = nucleotide2 ? "PID" : "BLOSUM62";\r
-}, "jalview.datamodel.AlignmentView,~A,~B");\r
-Clazz.defineMethod (c$, "isJvCalcMode", \r
-function () {\r
-return this.jvCalcMode;\r
-});\r
-Clazz.defineMethod (c$, "run", \r
-function () {\r
-this.pca =  new jalview.analysis.PCA (this.seqstrings.getSequenceStrings (' '), this.nucleotide, this.score_matrix);\r
-this.pca.setJvCalcMode (this.jvCalcMode);\r
-this.pca.run ();\r
-var ii = 0;\r
-while ((ii < this.seqs.length) && (this.seqs[ii] != null)) {\r
-ii++;\r
-}\r
-var comps =  Clazz.newDoubleArray (ii, ii, 0);\r
-for (var i = 0; i < ii; i++) {\r
-if (this.pca.getEigenvalue (i) > 1e-4) {\r
-comps[i] = this.pca.component (i);\r
-}}\r
-this.top = this.pca.getM ().rows - 1;\r
-this.points =  new java.util.Vector ();\r
-var scores = this.pca.getComponents (this.top - 1, this.top - 2, this.top - 3, 100);\r
-for (var i = 0; i < this.pca.getM ().rows; i++) {\r
-var sp =  new jalview.datamodel.SequencePoint (this.seqs[i], scores[i]);\r
-this.points.addElement (sp);\r
-}\r
-});\r
-Clazz.defineMethod (c$, "updateRc", \r
-function (rc) {\r
-rc.setPoints (this.points, this.pca.getM ().rows);\r
-}, "jalview.api.RotatableCanvasI");\r
-Clazz.defineMethod (c$, "isNucleotide", \r
-function () {\r
-return this.nucleotide;\r
-});\r
-Clazz.defineMethod (c$, "setNucleotide", \r
-function (nucleotide) {\r
-this.nucleotide = nucleotide;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getTop", \r
-function () {\r
-return this.top;\r
-});\r
-Clazz.defineMethod (c$, "updateRcView", \r
-function (dim1, dim2, dim3) {\r
-var scores = this.pca.getComponents (dim1 - 1, dim2 - 1, dim3 - 1, 100);\r
-for (var i = 0; i < this.pca.getM ().rows; i++) {\r
-(this.points.elementAt (i)).coord = scores[i];\r
-}\r
-}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "getDetails", \r
-function () {\r
-return this.pca.getDetails ();\r
-});\r
-Clazz.defineMethod (c$, "getSeqtrings", \r
-function () {\r
-return this.seqstrings;\r
-});\r
-Clazz.defineMethod (c$, "getPointsasCsv", \r
-function (transformed, xdim, ydim, zdim) {\r
-var csv =  new StringBuffer ();\r
-csv.append ("\"Sequence\"");\r
-if (transformed) {\r
-csv.append (",");\r
-csv.append (xdim);\r
-csv.append (",");\r
-csv.append (ydim);\r
-csv.append (",");\r
-csv.append (zdim);\r
-} else {\r
-for (var d = 1, dmax = this.pca.component (1).length; d <= dmax; d++) {\r
-csv.append ("," + d);\r
-}\r
-}csv.append ("\n");\r
-for (var s = 0; s < this.seqs.length; s++) {\r
-csv.append ("\"" + this.seqs[s].getName () + "\"");\r
-var fl;\r
-if (!transformed) {\r
-fl = this.pca.component (s);\r
-for (var d = fl.length - 1; d >= 0; d--) {\r
-csv.append (",");\r
-csv.append (fl[d]);\r
-}\r
-} else {\r
-fl = this.getPointPosition (s);\r
-for (var d = 0; d < fl.length; d++) {\r
-csv.append (",");\r
-csv.append (fl[d]);\r
-}\r
-}csv.append ("\n");\r
-}\r
-return csv.toString ();\r
-}, "~B,~N,~N,~N");\r
-Clazz.defineMethod (c$, "getPointPosition", \r
-function (s) {\r
-var pts =  Clazz.newDoubleArray (3, 0);\r
-var p = this.points.elementAt (s).coord;\r
-pts[0] = p[0];\r
-pts[1] = p[1];\r
-pts[2] = p[2];\r
-return pts;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setJvCalcMode", \r
-function (state) {\r
-this.jvCalcMode = state;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getScore_matrix", \r
-function () {\r
-return this.score_matrix;\r
-});\r
-Clazz.defineMethod (c$, "setScore_matrix", \r
-function (score_matrix) {\r
-this.score_matrix = score_matrix;\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("jalview.viewmodel");
+Clazz.load (null, "jalview.viewmodel.PCAModel", ["jalview.analysis.PCA", "jalview.datamodel.SequencePoint", "java.lang.StringBuffer", "java.util.Vector"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.pca = null;
+this.top = 0;
+this.seqstrings = null;
+this.seqs = null;
+this.score_matrix = null;
+this.nucleotide = false;
+this.points = null;
+this.jvCalcMode = true;
+Clazz.instantialize (this, arguments);
+}, jalview.viewmodel, "PCAModel");
+Clazz.makeConstructor (c$, 
+function (seqstrings2, seqs2, nucleotide2) {
+this.seqstrings = seqstrings2;
+this.seqs = seqs2;
+this.nucleotide = nucleotide2;
+this.score_matrix = nucleotide2 ? "PID" : "BLOSUM62";
+}, "jalview.datamodel.AlignmentView,~A,~B");
+Clazz.defineMethod (c$, "isJvCalcMode", 
+function () {
+return this.jvCalcMode;
+});
+Clazz.defineMethod (c$, "run", 
+function () {
+this.pca =  new jalview.analysis.PCA (this.seqstrings.getSequenceStrings (' '), this.nucleotide, this.score_matrix);
+this.pca.setJvCalcMode (this.jvCalcMode);
+this.pca.run ();
+var ii = 0;
+while ((ii < this.seqs.length) && (this.seqs[ii] != null)) {
+ii++;
+}
+var comps =  Clazz.newDoubleArray (ii, ii, 0);
+for (var i = 0; i < ii; i++) {
+if (this.pca.getEigenvalue (i) > 1e-4) {
+comps[i] = this.pca.component (i);
+}}
+this.top = this.pca.getM ().rows - 1;
+this.points =  new java.util.Vector ();
+var scores = this.pca.getComponents (this.top - 1, this.top - 2, this.top - 3, 100);
+for (var i = 0; i < this.pca.getM ().rows; i++) {
+var sp =  new jalview.datamodel.SequencePoint (this.seqs[i], scores[i]);
+this.points.addElement (sp);
+}
+});
+Clazz.defineMethod (c$, "updateRc", 
+function (rc) {
+rc.setPoints (this.points, this.pca.getM ().rows);
+}, "jalview.api.RotatableCanvasI");
+Clazz.defineMethod (c$, "isNucleotide", 
+function () {
+return this.nucleotide;
+});
+Clazz.defineMethod (c$, "setNucleotide", 
+function (nucleotide) {
+this.nucleotide = nucleotide;
+}, "~B");
+Clazz.defineMethod (c$, "getTop", 
+function () {
+return this.top;
+});
+Clazz.defineMethod (c$, "updateRcView", 
+function (dim1, dim2, dim3) {
+var scores = this.pca.getComponents (dim1 - 1, dim2 - 1, dim3 - 1, 100);
+for (var i = 0; i < this.pca.getM ().rows; i++) {
+(this.points.elementAt (i)).coord = scores[i];
+}
+}, "~N,~N,~N");
+Clazz.defineMethod (c$, "getDetails", 
+function () {
+return this.pca.getDetails ();
+});
+Clazz.defineMethod (c$, "getSeqtrings", 
+function () {
+return this.seqstrings;
+});
+Clazz.defineMethod (c$, "getPointsasCsv", 
+function (transformed, xdim, ydim, zdim) {
+var csv =  new StringBuffer ();
+csv.append ("\"Sequence\"");
+if (transformed) {
+csv.append (",");
+csv.append ("" + xdim);
+csv.append (",");
+csv.append ("" + ydim);
+csv.append (",");
+csv.append ("" + zdim);
+} else {
+for (var d = 1, dmax = this.pca.component (1).length; d <= dmax; d++) {
+csv.append ("," + d);
+}
+}csv.append ("\n");
+for (var s = 0; s < this.seqs.length; s++) {
+csv.append ("\"" + this.seqs[s].getName () + "\"");
+var fl;
+if (!transformed) {
+fl = this.pca.component (s);
+for (var d = fl.length - 1; d >= 0; d--) {
+csv.append (",");
+csv.append (fl[d]);
+}
+} else {
+fl = this.getPointPosition (s);
+for (var d = 0; d < fl.length; d++) {
+csv.append (",");
+csv.append (fl[d]);
+}
+}csv.append ("\n");
+}
+return csv.toString ();
+}, "~B,~N,~N,~N");
+Clazz.defineMethod (c$, "getPointPosition", 
+function (s) {
+var pts =  Clazz.newDoubleArray (3, 0);
+var p = this.points.elementAt (s).coord;
+pts[0] = p[0];
+pts[1] = p[1];
+pts[2] = p[2];
+return pts;
+}, "~N");
+Clazz.defineMethod (c$, "setJvCalcMode", 
+function (state) {
+this.jvCalcMode = state;
+}, "~B");
+Clazz.defineMethod (c$, "getScore_matrix", 
+function () {
+return this.score_matrix;
+});
+Clazz.defineMethod (c$, "setScore_matrix", 
+function (score_matrix) {
+this.score_matrix = score_matrix;
+}, "~S");
+});
index 7daaad4..5fd34a4 100644 (file)
@@ -1,83 +1,83 @@
-Clazz.declarePackage ("jalview.viewmodel.annotationfilter");\r
-Clazz.load (["java.lang.Enum", "java.util.ArrayList"], "jalview.viewmodel.annotationfilter.AnnotationFilterParameter", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.thresholdType = null;\r
-this.thresholdValue = 0;\r
-this.filterAlphaHelix = false;\r
-this.filterBetaSheet = false;\r
-this.filterTurn = false;\r
-this.regexString = null;\r
-this.regexSearchFields = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.viewmodel.annotationfilter, "AnnotationFilterParameter");\r
-Clazz.prepareFields (c$, function () {\r
-this.regexSearchFields =  new java.util.ArrayList ();\r
-});\r
-Clazz.defineMethod (c$, "getThresholdType", \r
-function () {\r
-return this.thresholdType;\r
-});\r
-Clazz.defineMethod (c$, "setThresholdType", \r
-function (thresholdType) {\r
-this.thresholdType = thresholdType;\r
-}, "jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType");\r
-Clazz.defineMethod (c$, "getThresholdValue", \r
-function () {\r
-return this.thresholdValue;\r
-});\r
-Clazz.defineMethod (c$, "setThresholdValue", \r
-function (thresholdValue) {\r
-this.thresholdValue = thresholdValue;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getRegexString", \r
-function () {\r
-return this.regexString;\r
-});\r
-Clazz.defineMethod (c$, "setRegexString", \r
-function (regexString) {\r
-this.regexString = regexString;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getRegexSearchFields", \r
-function () {\r
-return this.regexSearchFields;\r
-});\r
-Clazz.defineMethod (c$, "addRegexSearchField", \r
-function (regexSearchField) {\r
-this.regexSearchFields.add (regexSearchField);\r
-}, "jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField");\r
-Clazz.defineMethod (c$, "isFilterAlphaHelix", \r
-function () {\r
-return this.filterAlphaHelix;\r
-});\r
-Clazz.defineMethod (c$, "setFilterAlphaHelix", \r
-function (alphaHelix) {\r
-this.filterAlphaHelix = alphaHelix;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isFilterBetaSheet", \r
-function () {\r
-return this.filterBetaSheet;\r
-});\r
-Clazz.defineMethod (c$, "setFilterBetaSheet", \r
-function (betaSheet) {\r
-this.filterBetaSheet = betaSheet;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isFilterTurn", \r
-function () {\r
-return this.filterTurn;\r
-});\r
-Clazz.defineMethod (c$, "setFilterTurn", \r
-function (turn) {\r
-this.filterTurn = turn;\r
-}, "~B");\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter, "ThresholdType", Enum);\r
-Clazz.defineEnumConstant (c$, "NO_THRESHOLD", 0, []);\r
-Clazz.defineEnumConstant (c$, "BELOW_THRESHOLD", 1, []);\r
-Clazz.defineEnumConstant (c$, "ABOVE_THRESHOLD", 2, []);\r
-c$ = Clazz.p0p ();\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter, "SearchableAnnotationField", Enum);\r
-Clazz.defineEnumConstant (c$, "DISPLAY_STRING", 0, []);\r
-Clazz.defineEnumConstant (c$, "DESCRIPTION", 1, []);\r
-c$ = Clazz.p0p ();\r
-});\r
+Clazz.declarePackage ("jalview.viewmodel.annotationfilter");
+Clazz.load (["java.lang.Enum", "java.util.ArrayList"], "jalview.viewmodel.annotationfilter.AnnotationFilterParameter", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.thresholdType = null;
+this.thresholdValue = 0;
+this.filterAlphaHelix = false;
+this.filterBetaSheet = false;
+this.filterTurn = false;
+this.regexString = null;
+this.regexSearchFields = null;
+Clazz.instantialize (this, arguments);
+}, jalview.viewmodel.annotationfilter, "AnnotationFilterParameter");
+Clazz.prepareFields (c$, function () {
+this.regexSearchFields =  new java.util.ArrayList ();
+});
+Clazz.defineMethod (c$, "getThresholdType", 
+function () {
+return this.thresholdType;
+});
+Clazz.defineMethod (c$, "setThresholdType", 
+function (thresholdType) {
+this.thresholdType = thresholdType;
+}, "jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType");
+Clazz.defineMethod (c$, "getThresholdValue", 
+function () {
+return this.thresholdValue;
+});
+Clazz.defineMethod (c$, "setThresholdValue", 
+function (thresholdValue) {
+this.thresholdValue = thresholdValue;
+}, "~N");
+Clazz.defineMethod (c$, "getRegexString", 
+function () {
+return this.regexString;
+});
+Clazz.defineMethod (c$, "setRegexString", 
+function (regexString) {
+this.regexString = regexString;
+}, "~S");
+Clazz.defineMethod (c$, "getRegexSearchFields", 
+function () {
+return this.regexSearchFields;
+});
+Clazz.defineMethod (c$, "addRegexSearchField", 
+function (regexSearchField) {
+this.regexSearchFields.add (regexSearchField);
+}, "jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField");
+Clazz.defineMethod (c$, "isFilterAlphaHelix", 
+function () {
+return this.filterAlphaHelix;
+});
+Clazz.defineMethod (c$, "setFilterAlphaHelix", 
+function (alphaHelix) {
+this.filterAlphaHelix = alphaHelix;
+}, "~B");
+Clazz.defineMethod (c$, "isFilterBetaSheet", 
+function () {
+return this.filterBetaSheet;
+});
+Clazz.defineMethod (c$, "setFilterBetaSheet", 
+function (betaSheet) {
+this.filterBetaSheet = betaSheet;
+}, "~B");
+Clazz.defineMethod (c$, "isFilterTurn", 
+function () {
+return this.filterTurn;
+});
+Clazz.defineMethod (c$, "setFilterTurn", 
+function (turn) {
+this.filterTurn = turn;
+}, "~B");
+Clazz.pu$h ();
+c$ = Clazz.declareType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter, "ThresholdType", Enum);
+Clazz.defineEnumConstant (c$, "NO_THRESHOLD", 0, []);
+Clazz.defineEnumConstant (c$, "BELOW_THRESHOLD", 1, []);
+Clazz.defineEnumConstant (c$, "ABOVE_THRESHOLD", 2, []);
+c$ = Clazz.p0p ();
+Clazz.pu$h ();
+c$ = Clazz.declareType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter, "SearchableAnnotationField", Enum);
+Clazz.defineEnumConstant (c$, "DISPLAY_STRING", 0, []);
+Clazz.defineEnumConstant (c$, "DESCRIPTION", 1, []);
+c$ = Clazz.p0p ();
+});
index 5f33a88..cd148bd 100644 (file)
Binary files a/bin/jalview/viewmodel/seqfeatures/FeatureRendererModel.class and b/bin/jalview/viewmodel/seqfeatures/FeatureRendererModel.class differ
index cd53bbe..985bdda 100644 (file)
-Clazz.declarePackage ("jalview.viewmodel.seqfeatures");\r
-Clazz.load (["jalview.api.FeatureRenderer", "java.beans.PropertyChangeSupport", "java.lang.Boolean", "java.util.Hashtable", "java.util.concurrent.ConcurrentHashMap"], "jalview.viewmodel.seqfeatures.FeatureRendererModel", ["jalview.schemes.GraduatedColor", "$.UserColourScheme", "jalview.util.QuickSort", "jalview.viewmodel.seqfeatures.FeatureRendererSettings", "$.FeaturesDisplayed", "java.awt.Color", "java.lang.Error", "$.Float", "java.util.ArrayList", "$.Arrays"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.transparency = 1.0;\r
-this.featureColours = null;\r
-this.featureGroups = null;\r
-this.currentColour = null;\r
-this.renderOrder = null;\r
-this.changeSupport = null;\r
-this.av = null;\r
-this.minmax = null;\r
-this.newFeatureAdded = false;\r
-this.findingFeatures = false;\r
-this.firing = null;\r
-this.featureOrder = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.viewmodel.seqfeatures, "FeatureRendererModel", null, jalview.api.FeatureRenderer);\r
-Clazz.prepareFields (c$, function () {\r
-this.featureColours =  new java.util.concurrent.ConcurrentHashMap ();\r
-this.featureGroups =  new java.util.concurrent.ConcurrentHashMap ();\r
-this.changeSupport =  new java.beans.PropertyChangeSupport (this);\r
-this.minmax =  new java.util.Hashtable ();\r
-this.firing = Boolean.FALSE;\r
-});\r
-Clazz.overrideMethod (c$, "getViewport", \r
-function () {\r
-return this.av;\r
-});\r
-Clazz.defineMethod (c$, "getSettings", \r
-function () {\r
-return  new jalview.viewmodel.seqfeatures.FeatureRendererSettings (this);\r
-});\r
-Clazz.defineMethod (c$, "transferSettings", \r
-function (fr) {\r
-this.renderOrder = fr.renderOrder;\r
-this.featureGroups = fr.featureGroups;\r
-this.featureColours = fr.featureColours;\r
-this.transparency = fr.transparency;\r
-this.featureOrder = fr.featureOrder;\r
-}, "jalview.viewmodel.seqfeatures.FeatureRendererSettings");\r
-Clazz.defineMethod (c$, "transferSettings", \r
-function (_fr) {\r
-var fr = _fr;\r
-var frs =  new jalview.viewmodel.seqfeatures.FeatureRendererSettings (fr);\r
-this.renderOrder = frs.renderOrder;\r
-this.featureGroups = frs.featureGroups;\r
-this.featureColours = frs.featureColours;\r
-this.transparency = frs.transparency;\r
-this.featureOrder = frs.featureOrder;\r
-if (this.av != null && this.av !== fr.getViewport ()) {\r
-if (_fr.getFeaturesDisplayed () != null) {\r
-var fd = this.getFeaturesDisplayed ();\r
-if (fd == null) {\r
-this.setFeaturesDisplayedFrom (_fr.getFeaturesDisplayed ());\r
-} else {\r
-{\r
-fd.clear ();\r
-var fdisp = _fr.getFeaturesDisplayed ().getVisibleFeatures ();\r
-while (fdisp.hasNext ()) {\r
-fd.setVisible (fdisp.next ());\r
-}\r
-}}}}}, "jalview.api.FeatureRenderer");\r
-Clazz.defineMethod (c$, "setFeaturesDisplayedFrom", \r
-function (featuresDisplayed) {\r
-this.av.setFeaturesDisplayed ( new jalview.viewmodel.seqfeatures.FeaturesDisplayed (featuresDisplayed));\r
-}, "jalview.api.FeaturesDisplayedI");\r
-Clazz.overrideMethod (c$, "setVisible", \r
-function (featureType) {\r
-var fdi = this.av.getFeaturesDisplayed ();\r
-if (fdi == null) {\r
-this.av.setFeaturesDisplayed (fdi =  new jalview.viewmodel.seqfeatures.FeaturesDisplayed ());\r
-}if (!fdi.isRegistered (featureType)) {\r
-this.pushFeatureType (java.util.Arrays.asList ( Clazz.newArray (-1, [featureType])));\r
-}fdi.setVisible (featureType);\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "setAllVisible", \r
-function (featureTypes) {\r
-var fdi = this.av.getFeaturesDisplayed ();\r
-if (fdi == null) {\r
-this.av.setFeaturesDisplayed (fdi =  new jalview.viewmodel.seqfeatures.FeaturesDisplayed ());\r
-}var nft =  new java.util.ArrayList ();\r
-for (var featureType, $featureType = featureTypes.iterator (); $featureType.hasNext () && ((featureType = $featureType.next ()) || true);) {\r
-if (!fdi.isRegistered (featureType)) {\r
-nft.add (featureType);\r
-}}\r
-if (nft.size () > 0) {\r
-this.pushFeatureType (nft);\r
-}fdi.setAllVisible (featureTypes);\r
-}, "java.util.List");\r
-Clazz.defineMethod (c$, "pushFeatureType", \r
-($fz = function (types) {\r
-var ts = types.size ();\r
-var neworder =  new Array ((this.renderOrder == null ? 0 : this.renderOrder.length) + ts);\r
-types.toArray (neworder);\r
-if (this.renderOrder != null) {\r
-System.arraycopy (neworder, 0, neworder, this.renderOrder.length, ts);\r
-System.arraycopy (this.renderOrder, 0, neworder, 0, this.renderOrder.length);\r
-}this.renderOrder = neworder;\r
-}, $fz.isPrivate = true, $fz), "java.util.List");\r
-Clazz.defineMethod (c$, "getMinMax", \r
-function () {\r
-return this.minmax;\r
-});\r
-Clazz.defineMethod (c$, "normaliseScore", \r
-function (sequenceFeature) {\r
-var mm = (this.minmax.get (sequenceFeature.type))[0];\r
-var r =  Clazz.newByteArray (-1, [0, 255]);\r
-if (mm != null) {\r
-if (r[0] != 0 || mm[0] < 0.0) {\r
-r[0] = 1;\r
-r[1] = Clazz.doubleToByte (Clazz.doubleToInt (128.0) + 127.0 * (sequenceFeature.score / mm[1]));\r
-} else {\r
-r[1] = Clazz.floatToByte (Clazz.doubleToInt (255.0) * (sequenceFeature.score / mm[1]));\r
-}}return r;\r
-}, "jalview.datamodel.SequenceFeature");\r
-Clazz.defineMethod (c$, "updateFeatures", \r
-function () {\r
-if (this.av.getFeaturesDisplayed () == null || this.renderOrder == null || this.newFeatureAdded) {\r
-this.findAllFeatures ();\r
-if (this.av.getFeaturesDisplayed ().getVisibleFeatureCount () < 1) {\r
-return false;\r
-}}return true;\r
-});\r
-Clazz.defineMethod (c$, "findAllFeatures", \r
-function () {\r
-{\r
-if (this.firing.equals (Boolean.FALSE)) {\r
-this.firing = Boolean.TRUE;\r
-this.findAllFeatures (true);\r
-this.changeSupport.firePropertyChange ("changeSupport", null, null);\r
-this.firing = Boolean.FALSE;\r
-}}});\r
-Clazz.overrideMethod (c$, "findFeaturesAtRes", \r
-function (sequence, res) {\r
-var tmp =  new java.util.ArrayList ();\r
-var features = sequence.getSequenceFeatures ();\r
-if (features != null) {\r
-for (var i = 0; i < features.length; i++) {\r
-if (!this.av.areFeaturesDisplayed () || !this.av.getFeaturesDisplayed ().isVisible (features[i].getType ())) {\r
-continue;\r
-}if (features[i].featureGroup != null && this.featureGroups != null && this.featureGroups.containsKey (features[i].featureGroup) && !this.featureGroups.get (features[i].featureGroup).booleanValue ()) {\r
-continue;\r
-}if ((features[i].getBegin () <= res) && (features[i].getEnd () >= res)) {\r
-tmp.add (features[i]);\r
-}}\r
-}return tmp;\r
-}, "jalview.datamodel.SequenceI,~N");\r
-Clazz.defineMethod (c$, "findAllFeatures", \r
-function (newMadeVisible) {\r
-this.newFeatureAdded = false;\r
-if (this.findingFeatures) {\r
-this.newFeatureAdded = true;\r
-return;\r
-}this.findingFeatures = true;\r
-if (this.av.getFeaturesDisplayed () == null) {\r
-this.av.setFeaturesDisplayed ( new jalview.viewmodel.seqfeatures.FeaturesDisplayed ());\r
-}var featuresDisplayed = this.av.getFeaturesDisplayed ();\r
-var allfeatures =  new java.util.ArrayList ();\r
-var oldfeatures =  new java.util.ArrayList ();\r
-if (this.renderOrder != null) {\r
-for (var i = 0; i < this.renderOrder.length; i++) {\r
-if (this.renderOrder[i] != null) {\r
-oldfeatures.add (this.renderOrder[i]);\r
-}}\r
-}if (this.minmax == null) {\r
-this.minmax =  new java.util.Hashtable ();\r
-}var alignment = this.av.getAlignment ();\r
-for (var i = 0; i < alignment.getHeight (); i++) {\r
-var asq = alignment.getSequenceAt (i);\r
-var features = asq.getSequenceFeatures ();\r
-if (features == null) {\r
-continue;\r
-}var index = 0;\r
-while (index < features.length) {\r
-if (!featuresDisplayed.isRegistered (features[index].getType ())) {\r
-var fgrp = features[index].getFeatureGroup ();\r
-if (fgrp != null) {\r
-var groupDisplayed = this.featureGroups.get (fgrp);\r
-if (groupDisplayed == null) {\r
-groupDisplayed = Boolean.$valueOf (newMadeVisible);\r
-this.featureGroups.put (fgrp, groupDisplayed);\r
-}if (!groupDisplayed.booleanValue ()) {\r
-index++;\r
-continue;\r
-}}if (!(features[index].begin == 0 && features[index].end == 0)) {\r
-if (newMadeVisible && !oldfeatures.contains (features[index].getType ())) {\r
-featuresDisplayed.setVisible (features[index].getType ());\r
-this.setOrder (features[index].getType (), 0);\r
-}}}if (!allfeatures.contains (features[index].getType ())) {\r
-allfeatures.add (features[index].getType ());\r
-}if (!Float.isNaN (features[index].score)) {\r
-var nonpos = features[index].getBegin () >= 1 ? 0 : 1;\r
-var mm = this.minmax.get (features[index].getType ());\r
-if (mm == null) {\r
-mm =  Clazz.newArray (-1, [null, null]);\r
-this.minmax.put (features[index].getType (), mm);\r
-}if (mm[nonpos] == null) {\r
-mm[nonpos] =  Clazz.newFloatArray (-1, [features[index].score, features[index].score]);\r
-} else {\r
-if (mm[nonpos][0] > features[index].score) {\r
-mm[nonpos][0] = features[index].score;\r
-}if (mm[nonpos][1] < features[index].score) {\r
-mm[nonpos][1] = features[index].score;\r
-}}}index++;\r
-}\r
-}\r
-this.updateRenderOrder (allfeatures);\r
-this.findingFeatures = false;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "updateRenderOrder", \r
-($fz = function (allFeatures) {\r
-var allfeatures =  new java.util.ArrayList (allFeatures);\r
-var oldRender = this.renderOrder;\r
-this.renderOrder =  new Array (allfeatures.size ());\r
-var mmrange;\r
-var fc = null;\r
-var initOrders = (this.featureOrder == null);\r
-var opos = 0;\r
-if (oldRender != null && oldRender.length > 0) {\r
-for (var j = 0; j < oldRender.length; j++) {\r
-if (oldRender[j] != null) {\r
-if (initOrders) {\r
-this.setOrder (oldRender[j], (1 - (1 + j) / oldRender.length));\r
-}if (allfeatures.contains (oldRender[j])) {\r
-this.renderOrder[opos++] = oldRender[j];\r
-allfeatures.remove (oldRender[j]);\r
-if (this.minmax != null) {\r
-mmrange = this.minmax.get (oldRender[j]);\r
-if (mmrange != null) {\r
-fc = this.featureColours.get (oldRender[j]);\r
-if (fc != null && Clazz.instanceOf (fc, jalview.schemes.GraduatedColor) && (fc).isAutoScale ()) {\r
-(fc).updateBounds ((mmrange)[0][0], (mmrange)[0][1]);\r
-}}}}}}\r
-}if (allfeatures.size () == 0) {\r
-return;\r
-}var i = allfeatures.size () - 1;\r
-var iSize = i;\r
-var sort = false;\r
-var newf =  new Array (allfeatures.size ());\r
-var sortOrder =  Clazz.newFloatArray (allfeatures.size (), 0);\r
-for (var newfeat, $newfeat = allfeatures.iterator (); $newfeat.hasNext () && ((newfeat = $newfeat.next ()) || true);) {\r
-newf[i] = newfeat;\r
-if (this.minmax != null) {\r
-mmrange = this.minmax.get (newf[i]);\r
-if (mmrange != null) {\r
-fc = this.featureColours.get (newf[i]);\r
-if (fc != null && Clazz.instanceOf (fc, jalview.schemes.GraduatedColor) && (fc).isAutoScale ()) {\r
-(fc).updateBounds ((mmrange)[0][0], (mmrange)[0][1]);\r
-}}}if (initOrders || !this.featureOrder.containsKey (newf[i])) {\r
-var denom = initOrders ? allfeatures.size () : this.featureOrder.size ();\r
-this.setOrder (newf[i], i / denom);\r
-}sortOrder[i] = 2 - (this.featureOrder.get (newf[i])).floatValue ();\r
-if (i < iSize) {\r
-sort = sort || sortOrder[i] > sortOrder[i + 1];\r
-}i--;\r
-}\r
-if (iSize > 1 && sort) {\r
-jalview.util.QuickSort.sortFloatObject (sortOrder, newf);\r
-}sortOrder = null;\r
-System.arraycopy (newf, 0, this.renderOrder, opos, newf.length);\r
-}, $fz.isPrivate = true, $fz), "java.util.List");\r
-Clazz.overrideMethod (c$, "getFeatureStyle", \r
-function (featureType) {\r
-var fc = this.featureColours.get (featureType);\r
-if (fc == null) {\r
-var ucs =  new jalview.schemes.UserColourScheme ();\r
-var col = ucs.createColourFromName (featureType);\r
-this.featureColours.put (featureType, fc = col);\r
-}return fc;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getColour", \r
-function (featureType) {\r
-var fc = this.getFeatureStyle (featureType);\r
-if (Clazz.instanceOf (fc, java.awt.Color)) {\r
-return fc;\r
-} else {\r
-if (Clazz.instanceOf (fc, jalview.schemes.GraduatedColor)) {\r
-return (fc).getMaxColor ();\r
-}}throw  new Error ("Implementation Error: Unrecognised render object " + fc.getClass () + " for features of type " + featureType);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getColour", \r
-function (feature) {\r
-var fc = this.getFeatureStyle (feature.getType ());\r
-if (Clazz.instanceOf (fc, java.awt.Color)) {\r
-return fc;\r
-} else {\r
-if (Clazz.instanceOf (fc, jalview.schemes.GraduatedColor)) {\r
-return (fc).findColor (feature);\r
-}}throw  new Error ("Implementation Error: Unrecognised render object " + fc.getClass () + " for features of type " + feature.getType ());\r
-}, "jalview.datamodel.SequenceFeature");\r
-Clazz.defineMethod (c$, "showFeature", \r
-function (sequenceFeature) {\r
-var fc = this.getFeatureStyle (sequenceFeature.type);\r
-if (Clazz.instanceOf (fc, jalview.schemes.GraduatedColor)) {\r
-return (fc).isColored (sequenceFeature);\r
-} else {\r
-return true;\r
-}}, "jalview.datamodel.SequenceFeature");\r
-Clazz.defineMethod (c$, "showFeatureOfType", \r
-function (type) {\r
-return this.av.getFeaturesDisplayed ().isVisible (type);\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "setColour", \r
-function (featureType, col) {\r
-{\r
-this.featureColours.put (featureType, col);\r
-}}, "~S,~O");\r
-Clazz.defineMethod (c$, "setTransparency", \r
-function (value) {\r
-this.transparency = value;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getTransparency", \r
-function () {\r
-return this.transparency;\r
-});\r
-Clazz.defineMethod (c$, "setOrder", \r
-function (type, position) {\r
-if (this.featureOrder == null) {\r
-this.featureOrder =  new java.util.Hashtable ();\r
-}this.featureOrder.put (type,  new Float (position));\r
-return position;\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "getOrder", \r
-function (type) {\r
-if (this.featureOrder != null) {\r
-if (this.featureOrder.containsKey (type)) {\r
-return (this.featureOrder.get (type)).floatValue ();\r
-}}return -1;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "getFeatureColours", \r
-function () {\r
-return  new java.util.concurrent.ConcurrentHashMap (this.featureColours);\r
-});\r
-Clazz.defineMethod (c$, "setFeaturePriority", \r
-function (data) {\r
-this.setFeaturePriority (data, true);\r
-}, "~A");\r
-Clazz.defineMethod (c$, "setFeaturePriority", \r
-function (data, visibleNew) {\r
-var av_featuresdisplayed = null;\r
-if (visibleNew) {\r
-if ((av_featuresdisplayed = this.av.getFeaturesDisplayed ()) != null) {\r
-this.av.getFeaturesDisplayed ().clear ();\r
-} else {\r
-this.av.setFeaturesDisplayed (av_featuresdisplayed =  new jalview.viewmodel.seqfeatures.FeaturesDisplayed ());\r
-}} else {\r
-av_featuresdisplayed = this.av.getFeaturesDisplayed ();\r
-}if (data == null) {\r
-return;\r
-}this.renderOrder =  new Array (data.length);\r
-if (data.length > 0) {\r
-for (var i = 0; i < data.length; i++) {\r
-var type = data[i][0].toString ();\r
-this.setColour (type, data[i][1]);\r
-if ((data[i][2]).booleanValue ()) {\r
-av_featuresdisplayed.setVisible (type);\r
-}this.renderOrder[data.length - i - 1] = type;\r
-}\r
-}}, "~A,~B");\r
-Clazz.defineMethod (c$, "addPropertyChangeListener", \r
-function (listener) {\r
-this.changeSupport.addPropertyChangeListener (listener);\r
-}, "java.beans.PropertyChangeListener");\r
-Clazz.defineMethod (c$, "removePropertyChangeListener", \r
-function (listener) {\r
-this.changeSupport.removePropertyChangeListener (listener);\r
-}, "java.beans.PropertyChangeListener");\r
-Clazz.defineMethod (c$, "getAllFeatureColours", \r
-function () {\r
-return this.featureColours.keySet ();\r
-});\r
-Clazz.defineMethod (c$, "clearRenderOrder", \r
-function () {\r
-this.renderOrder = null;\r
-});\r
-Clazz.defineMethod (c$, "hasRenderOrder", \r
-function () {\r
-return this.renderOrder != null;\r
-});\r
-Clazz.defineMethod (c$, "getRenderOrder", \r
-function () {\r
-if (this.renderOrder == null) {\r
-return java.util.Arrays.asList ( Clazz.newArray (-1, []));\r
-}return java.util.Arrays.asList (this.renderOrder);\r
-});\r
-Clazz.defineMethod (c$, "getFeatureGroupsSize", \r
-function () {\r
-return this.featureGroups != null ? 0 : this.featureGroups.size ();\r
-});\r
-Clazz.overrideMethod (c$, "getFeatureGroups", \r
-function () {\r
-return (this.featureGroups == null) ? java.util.Arrays.asList ( new Array (0)) : java.util.Arrays.asList (this.featureGroups.keySet ().toArray ( new Array (0)));\r
-});\r
-Clazz.defineMethod (c$, "checkGroupVisibility", \r
-function (group, newGroupsVisible) {\r
-if (this.featureGroups == null) {\r
-}if (this.featureGroups.containsKey (group)) {\r
-return this.featureGroups.get (group).booleanValue ();\r
-}if (newGroupsVisible) {\r
-this.featureGroups.put (group,  new Boolean (true));\r
-return true;\r
-}return false;\r
-}, "~S,~B");\r
-Clazz.overrideMethod (c$, "getGroups", \r
-function (visible) {\r
-if (this.featureGroups != null) {\r
-var gp =  new java.util.ArrayList ();\r
-for (var grp, $grp = this.featureGroups.keySet ().iterator (); $grp.hasNext () && ((grp = $grp.next ()) || true);) {\r
-var state = this.featureGroups.get (grp);\r
-if (state.booleanValue () == visible) {\r
-gp.add (grp);\r
-}}\r
-return gp;\r
-}return null;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setGroupVisibility", \r
-function (group, visible) {\r
-this.featureGroups.put (group,  new Boolean (visible));\r
-}, "~S,~B");\r
-Clazz.defineMethod (c$, "setGroupVisibility", \r
-function (toset, visible) {\r
-if (toset != null && toset.size () > 0 && this.featureGroups != null) {\r
-var rdrw = false;\r
-for (var gst, $gst = toset.iterator (); $gst.hasNext () && ((gst = $gst.next ()) || true);) {\r
-var st = this.featureGroups.get (gst);\r
-this.featureGroups.put (gst,  new Boolean (visible));\r
-if (st != null) {\r
-rdrw = rdrw || (visible != st.booleanValue ());\r
-}}\r
-if (rdrw) {\r
-}}}, "java.util.List,~B");\r
-Clazz.overrideMethod (c$, "getDisplayedFeatureCols", \r
-function () {\r
-var fcols =  new java.util.Hashtable ();\r
-if (this.getViewport ().getFeaturesDisplayed () == null) {\r
-return fcols;\r
-}var en = this.getViewport ().getFeaturesDisplayed ().getVisibleFeatures ();\r
-while (en.hasNext ()) {\r
-var col = en.next ();\r
-fcols.put (col, this.getColour (col));\r
-}\r
-return fcols;\r
-});\r
-Clazz.defineMethod (c$, "getFeaturesDisplayed", \r
-function () {\r
-return this.av.getFeaturesDisplayed ();\r
-});\r
-Clazz.overrideMethod (c$, "getDisplayedFeatureTypes", \r
-function () {\r
-var typ = null;\r
-typ = this.getRenderOrder ().toArray ( new Array (0));\r
-var feature_disp = this.av.getFeaturesDisplayed ();\r
-if (feature_disp != null) {\r
-{\r
-for (var i = 0; i < typ.length; i++) {\r
-if (!feature_disp.isVisible (typ[i])) {\r
-typ[i] = null;\r
-}}\r
-}}return typ;\r
-});\r
-Clazz.overrideMethod (c$, "getDisplayedFeatureGroups", \r
-function () {\r
-var gps = null;\r
-var _gps =  new java.util.ArrayList ();\r
-var en = this.getFeatureGroups ().iterator ();\r
-var g = 0;\r
-var valid = false;\r
-while (en.hasNext ()) {\r
-var gp = en.next ();\r
-if (this.checkGroupVisibility (gp, false)) {\r
-valid = true;\r
-_gps.add (gp);\r
-}if (!valid) {\r
-return null;\r
-} else {\r
-gps =  new Array (_gps.size ());\r
-_gps.toArray (gps);\r
-}}\r
-return gps;\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.viewmodel.seqfeatures");
+Clazz.load (["jalview.api.FeatureRenderer", "java.beans.PropertyChangeSupport", "java.lang.Boolean", "java.util.Hashtable", "java.util.concurrent.ConcurrentHashMap"], "jalview.viewmodel.seqfeatures.FeatureRendererModel", ["jalview.schemes.GraduatedColor", "$.UserColourScheme", "jalview.util.QuickSort", "jalview.viewmodel.seqfeatures.FeatureRendererSettings", "$.FeaturesDisplayed", "java.awt.Color", "java.lang.Error", "$.Float", "java.util.ArrayList", "$.Arrays"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.transparency = 1.0;
+this.featureColours = null;
+this.featureGroups = null;
+this.currentColour = null;
+this.renderOrder = null;
+this.changeSupport = null;
+this.av = null;
+this.minmax = null;
+this.newFeatureAdded = false;
+this.findingFeatures = false;
+this.firing = null;
+this.featureOrder = null;
+Clazz.instantialize (this, arguments);
+}, jalview.viewmodel.seqfeatures, "FeatureRendererModel", null, jalview.api.FeatureRenderer);
+Clazz.prepareFields (c$, function () {
+this.featureColours =  new java.util.concurrent.ConcurrentHashMap ();
+this.featureGroups =  new java.util.concurrent.ConcurrentHashMap ();
+this.changeSupport =  new java.beans.PropertyChangeSupport (this);
+this.minmax =  new java.util.Hashtable ();
+this.firing = Boolean.FALSE;
+});
+Clazz.overrideMethod (c$, "getViewport", 
+function () {
+return this.av;
+});
+Clazz.defineMethod (c$, "getSettings", 
+function () {
+return  new jalview.viewmodel.seqfeatures.FeatureRendererSettings (this);
+});
+Clazz.defineMethod (c$, "transferSettings", 
+function (fr) {
+this.renderOrder = fr.renderOrder;
+this.featureGroups = fr.featureGroups;
+this.featureColours = fr.featureColours;
+this.transparency = fr.transparency;
+this.featureOrder = fr.featureOrder;
+}, "jalview.viewmodel.seqfeatures.FeatureRendererSettings");
+Clazz.defineMethod (c$, "transferSettings", 
+function (_fr) {
+var fr = _fr;
+var frs =  new jalview.viewmodel.seqfeatures.FeatureRendererSettings (fr);
+this.renderOrder = frs.renderOrder;
+this.featureGroups = frs.featureGroups;
+this.featureColours = frs.featureColours;
+this.transparency = frs.transparency;
+this.featureOrder = frs.featureOrder;
+if (this.av != null && this.av !== fr.getViewport ()) {
+if (_fr.getFeaturesDisplayed () != null) {
+var fd = this.getFeaturesDisplayed ();
+if (fd == null) {
+this.setFeaturesDisplayedFrom (_fr.getFeaturesDisplayed ());
+} else {
+{
+fd.clear ();
+var fdisp = _fr.getFeaturesDisplayed ().getVisibleFeatures ();
+while (fdisp.hasNext ()) {
+fd.setVisible (fdisp.next ());
+}
+}}}}}, "jalview.api.FeatureRenderer");
+Clazz.defineMethod (c$, "setFeaturesDisplayedFrom", 
+function (featuresDisplayed) {
+this.av.setFeaturesDisplayed ( new jalview.viewmodel.seqfeatures.FeaturesDisplayed (featuresDisplayed));
+}, "jalview.api.FeaturesDisplayedI");
+Clazz.overrideMethod (c$, "setVisible", 
+function (featureType) {
+var fdi = this.av.getFeaturesDisplayed ();
+if (fdi == null) {
+this.av.setFeaturesDisplayed (fdi =  new jalview.viewmodel.seqfeatures.FeaturesDisplayed ());
+}if (!fdi.isRegistered (featureType)) {
+this.pushFeatureType (java.util.Arrays.asList ( Clazz.newArray (-1, [featureType])));
+}fdi.setVisible (featureType);
+}, "~S");
+Clazz.overrideMethod (c$, "setAllVisible", 
+function (featureTypes) {
+var fdi = this.av.getFeaturesDisplayed ();
+if (fdi == null) {
+this.av.setFeaturesDisplayed (fdi =  new jalview.viewmodel.seqfeatures.FeaturesDisplayed ());
+}var nft =  new java.util.ArrayList ();
+for (var featureType, $featureType = featureTypes.iterator (); $featureType.hasNext () && ((featureType = $featureType.next ()) || true);) {
+if (!fdi.isRegistered (featureType)) {
+nft.add (featureType);
+}}
+if (nft.size () > 0) {
+this.pushFeatureType (nft);
+}fdi.setAllVisible (featureTypes);
+}, "java.util.List");
+Clazz.defineMethod (c$, "pushFeatureType", 
+($fz = function (types) {
+var ts = types.size ();
+var neworder =  new Array ((this.renderOrder == null ? 0 : this.renderOrder.length) + ts);
+types.toArray (neworder);
+if (this.renderOrder != null) {
+System.arraycopy (neworder, 0, neworder, this.renderOrder.length, ts);
+System.arraycopy (this.renderOrder, 0, neworder, 0, this.renderOrder.length);
+}this.renderOrder = neworder;
+}, $fz.isPrivate = true, $fz), "java.util.List");
+Clazz.defineMethod (c$, "getMinMax", 
+function () {
+return this.minmax;
+});
+Clazz.defineMethod (c$, "normaliseScore", 
+function (sequenceFeature) {
+var mm = (this.minmax.get (sequenceFeature.type))[0];
+var r =  Clazz.newByteArray (-1, [0, 255]);
+if (mm != null) {
+if (r[0] != 0 || mm[0] < 0.0) {
+r[0] = 1;
+r[1] = Clazz.doubleToByte (Clazz.doubleToInt (128.0) + 127.0 * (sequenceFeature.score / mm[1]));
+} else {
+r[1] = Clazz.floatToByte (Clazz.doubleToInt (255.0) * (sequenceFeature.score / mm[1]));
+}}return r;
+}, "jalview.datamodel.SequenceFeature");
+Clazz.defineMethod (c$, "updateFeatures", 
+function () {
+if (this.av.getFeaturesDisplayed () == null || this.renderOrder == null || this.newFeatureAdded) {
+this.findAllFeatures ();
+if (this.av.getFeaturesDisplayed ().getVisibleFeatureCount () < 1) {
+return false;
+}}return true;
+});
+Clazz.defineMethod (c$, "findAllFeatures", 
+function () {
+{
+if (this.firing.equals (Boolean.FALSE)) {
+this.firing = Boolean.TRUE;
+this.findAllFeatures (true);
+this.changeSupport.firePropertyChange ("changeSupport", null, null);
+this.firing = Boolean.FALSE;
+}}});
+Clazz.overrideMethod (c$, "findFeaturesAtRes", 
+function (sequence, res) {
+var tmp =  new java.util.ArrayList ();
+var features = sequence.getSequenceFeatures ();
+if (features != null) {
+for (var i = 0; i < features.length; i++) {
+if (!this.av.areFeaturesDisplayed () || !this.av.getFeaturesDisplayed ().isVisible (features[i].getType ())) {
+continue;
+}if (features[i].featureGroup != null && this.featureGroups != null && this.featureGroups.containsKey (features[i].featureGroup) && !this.featureGroups.get (features[i].featureGroup).booleanValue ()) {
+continue;
+}if ((features[i].getBegin () <= res) && (features[i].getEnd () >= res)) {
+tmp.add (features[i]);
+}}
+}return tmp;
+}, "jalview.datamodel.SequenceI,~N");
+Clazz.defineMethod (c$, "findAllFeatures", 
+function (newMadeVisible) {
+this.newFeatureAdded = false;
+if (this.findingFeatures) {
+this.newFeatureAdded = true;
+return;
+}this.findingFeatures = true;
+if (this.av.getFeaturesDisplayed () == null) {
+this.av.setFeaturesDisplayed ( new jalview.viewmodel.seqfeatures.FeaturesDisplayed ());
+}var featuresDisplayed = this.av.getFeaturesDisplayed ();
+var allfeatures =  new java.util.ArrayList ();
+var oldfeatures =  new java.util.ArrayList ();
+if (this.renderOrder != null) {
+for (var i = 0; i < this.renderOrder.length; i++) {
+if (this.renderOrder[i] != null) {
+oldfeatures.add (this.renderOrder[i]);
+}}
+}if (this.minmax == null) {
+this.minmax =  new java.util.Hashtable ();
+}var alignment = this.av.getAlignment ();
+for (var i = 0; i < alignment.getHeight (); i++) {
+var asq = alignment.getSequenceAt (i);
+var features = asq.getSequenceFeatures ();
+if (features == null) {
+continue;
+}var index = 0;
+while (index < features.length) {
+if (!featuresDisplayed.isRegistered (features[index].getType ())) {
+var fgrp = features[index].getFeatureGroup ();
+if (fgrp != null) {
+var groupDisplayed = this.featureGroups.get (fgrp);
+if (groupDisplayed == null) {
+groupDisplayed = Boolean.$valueOf (newMadeVisible);
+this.featureGroups.put (fgrp, groupDisplayed);
+}if (!groupDisplayed.booleanValue ()) {
+index++;
+continue;
+}}if (!(features[index].begin == 0 && features[index].end == 0)) {
+if (newMadeVisible && !oldfeatures.contains (features[index].getType ())) {
+featuresDisplayed.setVisible (features[index].getType ());
+this.setOrder (features[index].getType (), 0);
+}}}if (!allfeatures.contains (features[index].getType ())) {
+allfeatures.add (features[index].getType ());
+}if (!Float.isNaN (features[index].score)) {
+var nonpos = features[index].getBegin () >= 1 ? 0 : 1;
+var mm = this.minmax.get (features[index].getType ());
+if (mm == null) {
+mm =  Clazz.newArray (-1, [null, null]);
+this.minmax.put (features[index].getType (), mm);
+}if (mm[nonpos] == null) {
+mm[nonpos] =  Clazz.newFloatArray (-1, [features[index].score, features[index].score]);
+} else {
+if (mm[nonpos][0] > features[index].score) {
+mm[nonpos][0] = features[index].score;
+}if (mm[nonpos][1] < features[index].score) {
+mm[nonpos][1] = features[index].score;
+}}}index++;
+}
+}
+this.updateRenderOrder (allfeatures);
+this.findingFeatures = false;
+}, "~B");
+Clazz.defineMethod (c$, "updateRenderOrder", 
+($fz = function (allFeatures) {
+var allfeatures =  new java.util.ArrayList (allFeatures);
+var oldRender = this.renderOrder;
+this.renderOrder =  new Array (allfeatures.size ());
+var mmrange;
+var fc = null;
+var initOrders = (this.featureOrder == null);
+var opos = 0;
+if (oldRender != null && oldRender.length > 0) {
+for (var j = 0; j < oldRender.length; j++) {
+if (oldRender[j] != null) {
+if (initOrders) {
+this.setOrder (oldRender[j], (1 - (1 + j) / oldRender.length));
+}if (allfeatures.contains (oldRender[j])) {
+this.renderOrder[opos++] = oldRender[j];
+allfeatures.remove (oldRender[j]);
+if (this.minmax != null) {
+mmrange = this.minmax.get (oldRender[j]);
+if (mmrange != null) {
+fc = this.featureColours.get (oldRender[j]);
+if (fc != null && Clazz.instanceOf (fc, jalview.schemes.GraduatedColor) && (fc).isAutoScale ()) {
+(fc).updateBounds ((mmrange)[0][0], (mmrange)[0][1]);
+}}}}}}
+}if (allfeatures.size () == 0) {
+return;
+}var i = allfeatures.size () - 1;
+var iSize = i;
+var sort = false;
+var newf =  new Array (allfeatures.size ());
+var sortOrder =  Clazz.newFloatArray (allfeatures.size (), 0);
+for (var newfeat, $newfeat = allfeatures.iterator (); $newfeat.hasNext () && ((newfeat = $newfeat.next ()) || true);) {
+newf[i] = newfeat;
+if (this.minmax != null) {
+mmrange = this.minmax.get (newf[i]);
+if (mmrange != null) {
+fc = this.featureColours.get (newf[i]);
+if (fc != null && Clazz.instanceOf (fc, jalview.schemes.GraduatedColor) && (fc).isAutoScale ()) {
+(fc).updateBounds ((mmrange)[0][0], (mmrange)[0][1]);
+}}}if (initOrders || !this.featureOrder.containsKey (newf[i])) {
+var denom = initOrders ? allfeatures.size () : this.featureOrder.size ();
+this.setOrder (newf[i], i / denom);
+}sortOrder[i] = 2 - (this.featureOrder.get (newf[i])).floatValue ();
+if (i < iSize) {
+sort = sort || sortOrder[i] > sortOrder[i + 1];
+}i--;
+}
+if (iSize > 1 && sort) {
+jalview.util.QuickSort.sortFloatObject (sortOrder, newf);
+}sortOrder = null;
+System.arraycopy (newf, 0, this.renderOrder, opos, newf.length);
+}, $fz.isPrivate = true, $fz), "java.util.List");
+Clazz.overrideMethod (c$, "getFeatureStyle", 
+function (featureType) {
+var fc = this.featureColours.get (featureType);
+if (fc == null) {
+var ucs =  new jalview.schemes.UserColourScheme ();
+var col = ucs.createColourFromName (featureType);
+this.featureColours.put (featureType, fc = col);
+}return fc;
+}, "~S");
+Clazz.defineMethod (c$, "getColour", 
+function (featureType) {
+var fc = this.getFeatureStyle (featureType);
+if (Clazz.instanceOf (fc, java.awt.Color)) {
+return fc;
+} else {
+if (Clazz.instanceOf (fc, jalview.schemes.GraduatedColor)) {
+return (fc).getMaxColor ();
+}}throw  new Error ("Implementation Error: Unrecognised render object " + fc.getClass () + " for features of type " + featureType);
+}, "~S");
+Clazz.defineMethod (c$, "getColour", 
+function (feature) {
+var fc = this.getFeatureStyle (feature.getType ());
+if (Clazz.instanceOf (fc, java.awt.Color)) {
+return fc;
+} else {
+if (Clazz.instanceOf (fc, jalview.schemes.GraduatedColor)) {
+return (fc).findColor (feature);
+}}throw  new Error ("Implementation Error: Unrecognised render object " + fc.getClass () + " for features of type " + feature.getType ());
+}, "jalview.datamodel.SequenceFeature");
+Clazz.defineMethod (c$, "showFeature", 
+function (sequenceFeature) {
+var fc = this.getFeatureStyle (sequenceFeature.type);
+if (Clazz.instanceOf (fc, jalview.schemes.GraduatedColor)) {
+return (fc).isColored (sequenceFeature);
+} else {
+return true;
+}}, "jalview.datamodel.SequenceFeature");
+Clazz.defineMethod (c$, "showFeatureOfType", 
+function (type) {
+return this.av.getFeaturesDisplayed ().isVisible (type);
+}, "~S");
+Clazz.overrideMethod (c$, "setColour", 
+function (featureType, col) {
+{
+this.featureColours.put (featureType, col);
+}}, "~S,~O");
+Clazz.defineMethod (c$, "setTransparency", 
+function (value) {
+this.transparency = value;
+}, "~N");
+Clazz.defineMethod (c$, "getTransparency", 
+function () {
+return this.transparency;
+});
+Clazz.defineMethod (c$, "setOrder", 
+function (type, position) {
+if (this.featureOrder == null) {
+this.featureOrder =  new java.util.Hashtable ();
+}this.featureOrder.put (type,  new Float (position));
+return position;
+}, "~S,~N");
+Clazz.defineMethod (c$, "getOrder", 
+function (type) {
+if (this.featureOrder != null) {
+if (this.featureOrder.containsKey (type)) {
+return (this.featureOrder.get (type)).floatValue ();
+}}return -1;
+}, "~S");
+Clazz.overrideMethod (c$, "getFeatureColours", 
+function () {
+return  new java.util.concurrent.ConcurrentHashMap (this.featureColours);
+});
+Clazz.defineMethod (c$, "setFeaturePriority", 
+function (data) {
+this.setFeaturePriority (data, true);
+}, "~A");
+Clazz.defineMethod (c$, "setFeaturePriority", 
+function (data, visibleNew) {
+var av_featuresdisplayed = null;
+if (visibleNew) {
+if ((av_featuresdisplayed = this.av.getFeaturesDisplayed ()) != null) {
+this.av.getFeaturesDisplayed ().clear ();
+} else {
+this.av.setFeaturesDisplayed (av_featuresdisplayed =  new jalview.viewmodel.seqfeatures.FeaturesDisplayed ());
+}} else {
+av_featuresdisplayed = this.av.getFeaturesDisplayed ();
+}if (data == null) {
+return;
+}this.renderOrder =  new Array (data.length);
+if (data.length > 0) {
+for (var i = 0; i < data.length; i++) {
+var type = data[i][0].toString ();
+this.setColour (type, data[i][1]);
+if ((data[i][2]).booleanValue ()) {
+av_featuresdisplayed.setVisible (type);
+}this.renderOrder[data.length - i - 1] = type;
+}
+}}, "~A,~B");
+Clazz.defineMethod (c$, "addPropertyChangeListener", 
+function (listener) {
+this.changeSupport.addPropertyChangeListener (listener);
+}, "java.beans.PropertyChangeListener");
+Clazz.defineMethod (c$, "removePropertyChangeListener", 
+function (listener) {
+this.changeSupport.removePropertyChangeListener (listener);
+}, "java.beans.PropertyChangeListener");
+Clazz.defineMethod (c$, "getAllFeatureColours", 
+function () {
+return this.featureColours.keySet ();
+});
+Clazz.defineMethod (c$, "clearRenderOrder", 
+function () {
+this.renderOrder = null;
+});
+Clazz.defineMethod (c$, "hasRenderOrder", 
+function () {
+return this.renderOrder != null;
+});
+Clazz.defineMethod (c$, "getRenderOrder", 
+function () {
+if (this.renderOrder == null) {
+return java.util.Arrays.asList ( Clazz.newArray (-1, []));
+}return java.util.Arrays.asList (this.renderOrder);
+});
+Clazz.defineMethod (c$, "getFeatureGroupsSize", 
+function () {
+return this.featureGroups != null ? 0 : this.featureGroups.size ();
+});
+Clazz.overrideMethod (c$, "getFeatureGroups", 
+function () {
+return (this.featureGroups == null) ? java.util.Arrays.asList ( new Array (0)) : java.util.Arrays.asList (this.featureGroups.keySet ().toArray ( new Array (0)));
+});
+Clazz.defineMethod (c$, "checkGroupVisibility", 
+function (group, newGroupsVisible) {
+if (this.featureGroups == null) {
+}if (this.featureGroups.containsKey (group)) {
+return this.featureGroups.get (group).booleanValue ();
+}if (newGroupsVisible) {
+this.featureGroups.put (group,  new Boolean (true));
+return true;
+}return false;
+}, "~S,~B");
+Clazz.overrideMethod (c$, "getGroups", 
+function (visible) {
+if (this.featureGroups != null) {
+var gp =  new java.util.ArrayList ();
+for (var grp, $grp = this.featureGroups.keySet ().iterator (); $grp.hasNext () && ((grp = $grp.next ()) || true);) {
+var state = this.featureGroups.get (grp);
+if (state.booleanValue () == visible) {
+gp.add (grp);
+}}
+return gp;
+}return null;
+}, "~B");
+Clazz.defineMethod (c$, "setGroupVisibility", 
+function (group, visible) {
+this.featureGroups.put (group,  new Boolean (visible));
+}, "~S,~B");
+Clazz.defineMethod (c$, "setGroupVisibility", 
+function (toset, visible) {
+if (toset != null && toset.size () > 0 && this.featureGroups != null) {
+var rdrw = false;
+for (var gst, $gst = toset.iterator (); $gst.hasNext () && ((gst = $gst.next ()) || true);) {
+var st = this.featureGroups.get (gst);
+this.featureGroups.put (gst,  new Boolean (visible));
+if (st != null) {
+rdrw = rdrw || (visible != st.booleanValue ());
+}}
+if (rdrw) {
+}}}, "java.util.List,~B");
+Clazz.overrideMethod (c$, "getDisplayedFeatureCols", 
+function () {
+var fcols =  new java.util.Hashtable ();
+if (this.getViewport ().getFeaturesDisplayed () == null) {
+return fcols;
+}var en = this.getViewport ().getFeaturesDisplayed ().getVisibleFeatures ();
+while (en.hasNext ()) {
+var col = en.next ();
+fcols.put (col, this.getColour (col));
+}
+return fcols;
+});
+Clazz.defineMethod (c$, "getFeaturesDisplayed", 
+function () {
+return this.av.getFeaturesDisplayed ();
+});
+Clazz.overrideMethod (c$, "getDisplayedFeatureTypes", 
+function () {
+var typ = null;
+typ = this.getRenderOrder ().toArray ( new Array (0));
+var feature_disp = this.av.getFeaturesDisplayed ();
+if (feature_disp != null) {
+{
+for (var i = 0; i < typ.length; i++) {
+if (!feature_disp.isVisible (typ[i])) {
+typ[i] = null;
+}}
+}}return typ;
+});
+Clazz.overrideMethod (c$, "getDisplayedFeatureGroups", 
+function () {
+var gps = null;
+var _gps =  new java.util.ArrayList ();
+var en = this.getFeatureGroups ().iterator ();
+var g = 0;
+var valid = false;
+while (en.hasNext ()) {
+var gp = en.next ();
+if (this.checkGroupVisibility (gp, false)) {
+valid = true;
+_gps.add (gp);
+}if (!valid) {
+return null;
+} else {
+gps =  new Array (_gps.size ());
+_gps.toArray (gps);
+}}
+return gps;
+});
+});
index f166a1b..187a380 100644 (file)
@@ -1,43 +1,43 @@
-Clazz.declarePackage ("jalview.viewmodel.seqfeatures");\r
-Clazz.load (null, "jalview.viewmodel.seqfeatures.FeatureRendererSettings", ["jalview.schemes.GraduatedColor", "java.util.Arrays", "java.util.concurrent.ConcurrentHashMap"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.renderOrder = null;\r
-this.featureGroups = null;\r
-this.featureColours = null;\r
-this.transparency = 0;\r
-this.featureOrder = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.viewmodel.seqfeatures, "FeatureRendererSettings", null, Cloneable);\r
-Clazz.makeConstructor (c$, \r
-function (renderOrder, featureGroups, featureColours, transparency, featureOrder) {\r
-this.renderOrder = java.util.Arrays.copyOf (renderOrder, renderOrder.length);\r
-this.featureGroups =  new java.util.concurrent.ConcurrentHashMap (featureGroups);\r
-this.featureColours =  new java.util.concurrent.ConcurrentHashMap (featureColours);\r
-this.transparency = transparency;\r
-this.featureOrder =  new java.util.concurrent.ConcurrentHashMap (featureOrder);\r
-}, "~A,java.util.Hashtable,java.util.Hashtable,~N,java.util.Hashtable");\r
-Clazz.makeConstructor (c$, \r
-function (fr) {\r
-this.renderOrder = null;\r
-this.featureGroups =  new java.util.concurrent.ConcurrentHashMap ();\r
-this.featureColours =  new java.util.concurrent.ConcurrentHashMap ();\r
-this.featureOrder =  new java.util.concurrent.ConcurrentHashMap ();\r
-if (fr.renderOrder != null) {\r
-this.renderOrder =  new Array (fr.renderOrder.length);\r
-System.arraycopy (fr.renderOrder, 0, this.renderOrder, 0, fr.renderOrder.length);\r
-}if (fr.featureGroups != null) {\r
-this.featureGroups =  new java.util.concurrent.ConcurrentHashMap (fr.featureGroups);\r
-}if (fr.featureColours != null) {\r
-this.featureColours =  new java.util.concurrent.ConcurrentHashMap (fr.featureColours);\r
-}var en = fr.featureColours.keySet ().iterator ();\r
-while (en.hasNext ()) {\r
-var next = en.next ();\r
-var val = this.featureColours.get (next);\r
-if (Clazz.instanceOf (val, jalview.schemes.GraduatedColor)) {\r
-this.featureColours.put (next,  new jalview.schemes.GraduatedColor (val));\r
-}}\r
-this.transparency = fr.transparency;\r
-if (fr.featureOrder != null) {\r
-this.featureOrder =  new java.util.concurrent.ConcurrentHashMap (fr.featureOrder);\r
-}}, "jalview.viewmodel.seqfeatures.FeatureRendererModel");\r
-});\r
+Clazz.declarePackage ("jalview.viewmodel.seqfeatures");
+Clazz.load (null, "jalview.viewmodel.seqfeatures.FeatureRendererSettings", ["jalview.schemes.GraduatedColor", "java.util.Arrays", "java.util.concurrent.ConcurrentHashMap"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.renderOrder = null;
+this.featureGroups = null;
+this.featureColours = null;
+this.transparency = 0;
+this.featureOrder = null;
+Clazz.instantialize (this, arguments);
+}, jalview.viewmodel.seqfeatures, "FeatureRendererSettings", null, Cloneable);
+Clazz.makeConstructor (c$, 
+function (renderOrder, featureGroups, featureColours, transparency, featureOrder) {
+this.renderOrder = java.util.Arrays.copyOf (renderOrder, renderOrder.length);
+this.featureGroups =  new java.util.concurrent.ConcurrentHashMap (featureGroups);
+this.featureColours =  new java.util.concurrent.ConcurrentHashMap (featureColours);
+this.transparency = transparency;
+this.featureOrder =  new java.util.concurrent.ConcurrentHashMap (featureOrder);
+}, "~A,java.util.Hashtable,java.util.Hashtable,~N,java.util.Hashtable");
+Clazz.makeConstructor (c$, 
+function (fr) {
+this.renderOrder = null;
+this.featureGroups =  new java.util.concurrent.ConcurrentHashMap ();
+this.featureColours =  new java.util.concurrent.ConcurrentHashMap ();
+this.featureOrder =  new java.util.concurrent.ConcurrentHashMap ();
+if (fr.renderOrder != null) {
+this.renderOrder =  new Array (fr.renderOrder.length);
+System.arraycopy (fr.renderOrder, 0, this.renderOrder, 0, fr.renderOrder.length);
+}if (fr.featureGroups != null) {
+this.featureGroups =  new java.util.concurrent.ConcurrentHashMap (fr.featureGroups);
+}if (fr.featureColours != null) {
+this.featureColours =  new java.util.concurrent.ConcurrentHashMap (fr.featureColours);
+}var en = fr.featureColours.keySet ().iterator ();
+while (en.hasNext ()) {
+var next = en.next ();
+var val = this.featureColours.get (next);
+if (Clazz.instanceOf (val, jalview.schemes.GraduatedColor)) {
+this.featureColours.put (next,  new jalview.schemes.GraduatedColor (val));
+}}
+this.transparency = fr.transparency;
+if (fr.featureOrder != null) {
+this.featureOrder =  new java.util.concurrent.ConcurrentHashMap (fr.featureOrder);
+}}, "jalview.viewmodel.seqfeatures.FeatureRendererModel");
+});
index 72b72b5..6623fc4 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("jalview.viewmodel.seqfeatures");\r
-Clazz.load (["jalview.api.FeatureSettingsModelI"], "jalview.viewmodel.seqfeatures.FeatureSettingsModel", null, function () {\r
-c$ = Clazz.declareType (jalview.viewmodel.seqfeatures, "FeatureSettingsModel", null, jalview.api.FeatureSettingsModelI);\r
-});\r
+Clazz.declarePackage ("jalview.viewmodel.seqfeatures");
+Clazz.load (["jalview.api.FeatureSettingsModelI"], "jalview.viewmodel.seqfeatures.FeatureSettingsModel", null, function () {
+c$ = Clazz.declareType (jalview.viewmodel.seqfeatures, "FeatureSettingsModel", null, jalview.api.FeatureSettingsModelI);
+});
index 8f0de99..32ddafc 100644 (file)
@@ -1,68 +1,68 @@
-Clazz.declarePackage ("jalview.viewmodel.seqfeatures");\r
-Clazz.load (["jalview.api.FeaturesDisplayedI", "java.util.HashSet"], "jalview.viewmodel.seqfeatures.FeaturesDisplayed", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.featuresDisplayed = null;\r
-this.featuresRegistered = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.viewmodel.seqfeatures, "FeaturesDisplayed", null, jalview.api.FeaturesDisplayedI);\r
-Clazz.prepareFields (c$, function () {\r
-this.featuresDisplayed =  new java.util.HashSet ();\r
-this.featuresRegistered =  new java.util.HashSet ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (featuresDisplayed2) {\r
-var fdisp = featuresDisplayed2.getVisibleFeatures ();\r
-var ftype;\r
-while (fdisp.hasNext ()) {\r
-ftype = fdisp.next ();\r
-this.featuresDisplayed.add (ftype);\r
-this.featuresRegistered.add (ftype);\r
-}\r
-}, "jalview.api.FeaturesDisplayedI");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "getVisibleFeatures", \r
-function () {\r
-return this.featuresDisplayed.iterator ();\r
-});\r
-Clazz.overrideMethod (c$, "isVisible", \r
-function (featureType) {\r
-return this.featuresDisplayed.contains (featureType);\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "areVisible", \r
-function (featureTypes) {\r
-return this.featuresDisplayed.containsAll (featureTypes);\r
-}, "java.util.Collection");\r
-Clazz.overrideMethod (c$, "clear", \r
-function () {\r
-this.featuresDisplayed.clear ();\r
-this.featuresRegistered.clear ();\r
-});\r
-Clazz.overrideMethod (c$, "setAllVisible", \r
-function (makeVisible) {\r
-this.featuresDisplayed.addAll (makeVisible);\r
-this.featuresRegistered.addAll (makeVisible);\r
-}, "java.util.Collection");\r
-Clazz.overrideMethod (c$, "setAllRegisteredVisible", \r
-function () {\r
-this.featuresDisplayed.addAll (this.featuresRegistered);\r
-});\r
-Clazz.overrideMethod (c$, "setVisible", \r
-function (featureType) {\r
-this.featuresDisplayed.add (featureType);\r
-this.featuresRegistered.add (featureType);\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "isRegistered", \r
-function (type) {\r
-return this.featuresRegistered.contains (type);\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "getVisibleFeatureCount", \r
-function () {\r
-return this.featuresDisplayed.size ();\r
-});\r
-Clazz.overrideMethod (c$, "getRegisterdFeaturesCount", \r
-function () {\r
-return this.featuresRegistered.size ();\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.viewmodel.seqfeatures");
+Clazz.load (["jalview.api.FeaturesDisplayedI", "java.util.HashSet"], "jalview.viewmodel.seqfeatures.FeaturesDisplayed", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.featuresDisplayed = null;
+this.featuresRegistered = null;
+Clazz.instantialize (this, arguments);
+}, jalview.viewmodel.seqfeatures, "FeaturesDisplayed", null, jalview.api.FeaturesDisplayedI);
+Clazz.prepareFields (c$, function () {
+this.featuresDisplayed =  new java.util.HashSet ();
+this.featuresRegistered =  new java.util.HashSet ();
+});
+Clazz.makeConstructor (c$, 
+function (featuresDisplayed2) {
+var fdisp = featuresDisplayed2.getVisibleFeatures ();
+var ftype;
+while (fdisp.hasNext ()) {
+ftype = fdisp.next ();
+this.featuresDisplayed.add (ftype);
+this.featuresRegistered.add (ftype);
+}
+}, "jalview.api.FeaturesDisplayedI");
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.defineMethod (c$, "getVisibleFeatures", 
+function () {
+return this.featuresDisplayed.iterator ();
+});
+Clazz.overrideMethod (c$, "isVisible", 
+function (featureType) {
+return this.featuresDisplayed.contains (featureType);
+}, "~S");
+Clazz.overrideMethod (c$, "areVisible", 
+function (featureTypes) {
+return this.featuresDisplayed.containsAll (featureTypes);
+}, "java.util.Collection");
+Clazz.overrideMethod (c$, "clear", 
+function () {
+this.featuresDisplayed.clear ();
+this.featuresRegistered.clear ();
+});
+Clazz.overrideMethod (c$, "setAllVisible", 
+function (makeVisible) {
+this.featuresDisplayed.addAll (makeVisible);
+this.featuresRegistered.addAll (makeVisible);
+}, "java.util.Collection");
+Clazz.overrideMethod (c$, "setAllRegisteredVisible", 
+function () {
+this.featuresDisplayed.addAll (this.featuresRegistered);
+});
+Clazz.overrideMethod (c$, "setVisible", 
+function (featureType) {
+this.featuresDisplayed.add (featureType);
+this.featuresRegistered.add (featureType);
+}, "~S");
+Clazz.overrideMethod (c$, "isRegistered", 
+function (type) {
+return this.featuresRegistered.contains (type);
+}, "~S");
+Clazz.overrideMethod (c$, "getVisibleFeatureCount", 
+function () {
+return this.featuresDisplayed.size ();
+});
+Clazz.overrideMethod (c$, "getRegisterdFeaturesCount", 
+function () {
+return this.featuresRegistered.size ();
+});
+});
index f41fe5d..8ec10fa 100644 (file)
-Clazz.declarePackage ("jalview.viewmodel.styles");\r
-Clazz.load (["jalview.api.ViewStyleI", "java.awt.Color"], "jalview.viewmodel.styles.ViewStyle", ["java.lang.Boolean"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.abovePIDThreshold = false;\r
-this.charHeight = 0;\r
-this.charWidth = 0;\r
-this.idWidth = -1;\r
-this.colourAppliesToAllGroups = false;\r
-this.centreColumnLabels = false;\r
-this.showdbrefs = false;\r
-this.shownpfeats = false;\r
-this.colourByReferenceSeq = false;\r
-this.conservationColourSelected = false;\r
-this.displayReferenceSeq = false;\r
-this.increment = 0;\r
-this.renderGaps = true;\r
-this.rightAlignIds = false;\r
-this.scaleAboveWrapped = false;\r
-this.scaleLeftWrapped = true;\r
-this.scaleRightWrapped = true;\r
-this.seqNameItalics = false;\r
-this.showAnnotation = true;\r
-this.showBoxes = true;\r
-this.showColourText = false;\r
-this.showHiddenMarkers = true;\r
-this.showJVSuffix = true;\r
-this.showSeqFeaturesHeight = false;\r
-this.showSequenceFeatures = false;\r
-this.showText = true;\r
-this.showUnconserved = false;\r
-this.textColour = null;\r
-this.textColour2 = null;\r
-this.threshold = 0;\r
-this.thresholdTextColour = 0;\r
-this.upperCasebold = false;\r
-this.fontName = null;\r
-this.fontSize = 0;\r
-this.scaleProteinAsCdna = true;\r
-this.wrapAlignment = false;\r
-this.wrappedWidth = 0;\r
-this.fontStyle = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.viewmodel.styles, "ViewStyle", null, jalview.api.ViewStyleI);\r
-Clazz.prepareFields (c$, function () {\r
-this.textColour = java.awt.Color.black;\r
-this.textColour2 = java.awt.Color.white;\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (vs) {\r
-this.setAbovePIDThreshold (vs.getAbovePIDThreshold ());\r
-this.setCentreColumnLabels (vs.isCentreColumnLabels ());\r
-this.setCharHeight (vs.getCharHeight ());\r
-this.setCharWidth (vs.getCharWidth ());\r
-this.setColourAppliesToAllGroups (vs.getColourAppliesToAllGroups ());\r
-this.setColourByReferenceSeq (vs.isColourByReferenceSeq ());\r
-this.setColourText (vs.getColourText ());\r
-this.setConservationColourSelected (vs.isConservationColourSelected ());\r
-this.setConservationSelected (vs.getConservationSelected ());\r
-this.setDisplayReferenceSeq (vs.isDisplayReferenceSeq ());\r
-this.setFontName (vs.getFontName ());\r
-this.setFontSize (vs.getFontSize ());\r
-this.setFontStyle (vs.getFontStyle ());\r
-this.setIdWidth (vs.getIdWidth ());\r
-this.setIncrement (vs.getIncrement ());\r
-this.setRenderGaps (vs.isRenderGaps ());\r
-this.setRightAlignIds (vs.isRightAlignIds ());\r
-this.setScaleAboveWrapped (vs.getScaleAboveWrapped ());\r
-this.setScaleLeftWrapped (vs.getScaleLeftWrapped ());\r
-this.setScaleProteinAsCdna (vs.isScaleProteinAsCdna ());\r
-this.setScaleRightWrapped (vs.getScaleRightWrapped ());\r
-this.setSeqNameItalics (vs.isSeqNameItalics ());\r
-this.setShowAnnotation (vs.isShowAnnotation ());\r
-this.setShowBoxes (vs.getShowBoxes ());\r
-this.setShowColourText (vs.isShowColourText ());\r
-this.setShowDBRefs (vs.isShowDBRefs ());\r
-this.setShowHiddenMarkers (vs.getShowHiddenMarkers ());\r
-this.setShowJVSuffix (vs.getShowJVSuffix ());\r
-this.setShowNPFeats (vs.isShowNPFeats ());\r
-this.setShowSequenceFeaturesHeight (vs.isShowSequenceFeaturesHeight ());\r
-this.setShowSequenceFeatures (vs.isShowSequenceFeatures ());\r
-this.setShowText (vs.getShowText ());\r
-this.setShowUnconserved (vs.getShowUnconserved ());\r
-this.setTextColour (vs.getTextColour ());\r
-this.setTextColour2 (vs.getTextColour2 ());\r
-this.setThreshold (vs.getThreshold ());\r
-this.setThresholdTextColour (vs.getThresholdTextColour ());\r
-this.setUpperCasebold (vs.isUpperCasebold ());\r
-this.setWrapAlignment (vs.getWrapAlignment ());\r
-this.setWrappedWidth (vs.getWrappedWidth ());\r
-}, "jalview.api.ViewStyleI");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.overrideMethod (c$, "equals", \r
-function (other) {\r
-if (other == null || !(Clazz.instanceOf (other, jalview.viewmodel.styles.ViewStyle))) {\r
-return false;\r
-}var vs = other;\r
-var match = (this.getAbovePIDThreshold () == vs.getAbovePIDThreshold () && this.isCentreColumnLabels () == vs.isCentreColumnLabels () && this.getCharHeight () == vs.getCharHeight () && this.getCharWidth () == vs.getCharWidth () && this.getColourAppliesToAllGroups () == vs.getColourAppliesToAllGroups () && this.isColourByReferenceSeq () == vs.isColourByReferenceSeq () && this.getColourText () == vs.getColourText () && this.isConservationColourSelected () == vs.isConservationColourSelected () && this.getConservationSelected () == vs.getConservationSelected () && this.isDisplayReferenceSeq () == vs.isDisplayReferenceSeq () && this.getFontSize () == vs.getFontSize () && this.getFontStyle () == vs.getFontStyle () && this.getIdWidth () == vs.getIdWidth () && this.getIncrement () == vs.getIncrement () && this.isRenderGaps () == vs.isRenderGaps () && this.isRightAlignIds () == vs.isRightAlignIds () && this.getScaleAboveWrapped () == vs.getScaleAboveWrapped () && this.getScaleLeftWrapped () == vs.getScaleLeftWrapped () && this.isScaleProteinAsCdna () == vs.isScaleProteinAsCdna () && this.getScaleRightWrapped () == vs.getScaleRightWrapped () && this.isSeqNameItalics () == vs.isSeqNameItalics () && this.isShowAnnotation () == vs.isShowAnnotation () && this.getShowBoxes () == vs.getShowBoxes () && this.isShowColourText () == vs.isShowColourText () && this.isShowDBRefs () == vs.isShowDBRefs () && this.getShowHiddenMarkers () == vs.getShowHiddenMarkers () && this.getShowJVSuffix () == vs.getShowJVSuffix () && this.isShowNPFeats () == vs.isShowNPFeats () && this.isShowSequenceFeaturesHeight () == vs.isShowSequenceFeaturesHeight () && this.isShowSequenceFeatures () == vs.isShowSequenceFeatures () && this.getShowText () == vs.getShowText () && this.getShowUnconserved () == vs.getShowUnconserved () && this.getThreshold () == vs.getThreshold () && this.getThresholdTextColour () == vs.getThresholdTextColour () && this.isUpperCasebold () == vs.isUpperCasebold () && this.getWrapAlignment () == vs.getWrapAlignment () && this.getWrappedWidth () == vs.getWrappedWidth ());\r
-match = match && String.valueOf (this.getFontName ()).equals (String.valueOf (vs.getFontName ()));\r
-match = match && String.valueOf (this.getTextColour ()).equals (String.valueOf (vs.getTextColour ()));\r
-match = match && String.valueOf (this.getTextColour2 ()).equals (String.valueOf (vs.getTextColour2 ()));\r
-return match;\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "hashCode", \r
-function () {\r
-var hash = 0;\r
-var m = 1;\r
-hash += m++ * Boolean.$valueOf (this.abovePIDThreshold).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.centreColumnLabels).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.colourAppliesToAllGroups).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.displayReferenceSeq).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.renderGaps).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.rightAlignIds).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.scaleProteinAsCdna).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.scaleRightWrapped).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.seqNameItalics).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.showAnnotation).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.showBoxes).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.showdbrefs).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.showJVSuffix).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.showSequenceFeatures).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.showUnconserved).hashCode ();\r
-hash += m++ * Boolean.$valueOf (this.wrapAlignment).hashCode ();\r
-hash += m++ * this.charHeight;\r
-hash += m++ * this.charWidth;\r
-hash += m++ * this.fontSize;\r
-hash += m++ * this.fontStyle;\r
-hash += m++ * this.idWidth;\r
-hash += String.valueOf (this.fontName).hashCode ();\r
-return hash;\r
-});\r
-Clazz.defineMethod (c$, "isUpperCasebold", \r
-function () {\r
-return this.upperCasebold;\r
-});\r
-Clazz.overrideMethod (c$, "setUpperCasebold", \r
-function (upperCasebold) {\r
-this.upperCasebold = upperCasebold;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "getAbovePIDThreshold", \r
-function () {\r
-return this.abovePIDThreshold;\r
-});\r
-Clazz.defineMethod (c$, "getCharHeight", \r
-function () {\r
-return this.charHeight;\r
-});\r
-Clazz.defineMethod (c$, "getCharWidth", \r
-function () {\r
-return this.charWidth;\r
-});\r
-Clazz.defineMethod (c$, "getColourAppliesToAllGroups", \r
-function () {\r
-return this.colourAppliesToAllGroups;\r
-});\r
-Clazz.defineMethod (c$, "getColourText", \r
-function () {\r
-return this.showColourText;\r
-});\r
-Clazz.defineMethod (c$, "getConservationSelected", \r
-function () {\r
-return this.conservationColourSelected;\r
-});\r
-Clazz.defineMethod (c$, "getIncrement", \r
-function () {\r
-return this.increment;\r
-});\r
-Clazz.defineMethod (c$, "getScaleAboveWrapped", \r
-function () {\r
-return this.scaleAboveWrapped;\r
-});\r
-Clazz.defineMethod (c$, "getScaleLeftWrapped", \r
-function () {\r
-return this.scaleLeftWrapped;\r
-});\r
-Clazz.defineMethod (c$, "getScaleRightWrapped", \r
-function () {\r
-return this.scaleRightWrapped;\r
-});\r
-Clazz.defineMethod (c$, "getShowBoxes", \r
-function () {\r
-return this.showBoxes;\r
-});\r
-Clazz.defineMethod (c$, "getShowHiddenMarkers", \r
-function () {\r
-return this.showHiddenMarkers;\r
-});\r
-Clazz.defineMethod (c$, "getShowJVSuffix", \r
-function () {\r
-return this.showJVSuffix;\r
-});\r
-Clazz.defineMethod (c$, "getShowText", \r
-function () {\r
-return this.showText;\r
-});\r
-Clazz.defineMethod (c$, "getShowUnconserved", \r
-function () {\r
-return this.showUnconserved;\r
-});\r
-Clazz.defineMethod (c$, "getTextColour", \r
-function () {\r
-return this.textColour;\r
-});\r
-Clazz.defineMethod (c$, "getTextColour2", \r
-function () {\r
-return this.textColour2;\r
-});\r
-Clazz.defineMethod (c$, "getThreshold", \r
-function () {\r
-return this.threshold;\r
-});\r
-Clazz.defineMethod (c$, "getThresholdTextColour", \r
-function () {\r
-return this.thresholdTextColour;\r
-});\r
-Clazz.defineMethod (c$, "getWrapAlignment", \r
-function () {\r
-return this.wrapAlignment;\r
-});\r
-Clazz.defineMethod (c$, "getWrappedWidth", \r
-function () {\r
-return this.wrappedWidth;\r
-});\r
-Clazz.defineMethod (c$, "isColourByReferenceSeq", \r
-function () {\r
-return this.colourByReferenceSeq;\r
-});\r
-Clazz.defineMethod (c$, "isConservationColourSelected", \r
-function () {\r
-return this.conservationColourSelected;\r
-});\r
-Clazz.defineMethod (c$, "isDisplayReferenceSeq", \r
-function () {\r
-return this.displayReferenceSeq;\r
-});\r
-Clazz.defineMethod (c$, "isRenderGaps", \r
-function () {\r
-return this.renderGaps;\r
-});\r
-Clazz.defineMethod (c$, "isRightAlignIds", \r
-function () {\r
-return this.rightAlignIds;\r
-});\r
-Clazz.defineMethod (c$, "isSeqNameItalics", \r
-function () {\r
-return this.seqNameItalics;\r
-});\r
-Clazz.defineMethod (c$, "isShowAnnotation", \r
-function () {\r
-return this.showAnnotation;\r
-});\r
-Clazz.defineMethod (c$, "isShowColourText", \r
-function () {\r
-return this.showColourText;\r
-});\r
-Clazz.defineMethod (c$, "isShowSequenceFeaturesHeight", \r
-function () {\r
-return this.showSeqFeaturesHeight;\r
-});\r
-Clazz.defineMethod (c$, "isShowSequenceFeatures", \r
-function () {\r
-return this.showSequenceFeatures;\r
-});\r
-Clazz.overrideMethod (c$, "setAbovePIDThreshold", \r
-function (b) {\r
-this.abovePIDThreshold = b;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setCharHeight", \r
-function (h) {\r
-this.charHeight = h;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "setCharWidth", \r
-function (w) {\r
-this.charWidth = w;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "setColourAppliesToAllGroups", \r
-function (b) {\r
-this.colourAppliesToAllGroups = b;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setColourByReferenceSeq", \r
-function (colourByReferenceSeq) {\r
-this.colourByReferenceSeq = colourByReferenceSeq;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setColourText", \r
-function (state) {\r
-this.showColourText = state;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setConservationColourSelected", \r
-function (conservationColourSelected) {\r
-this.conservationColourSelected = conservationColourSelected;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setConservationSelected", \r
-function (b) {\r
-this.conservationColourSelected = b;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setDisplayReferenceSeq", \r
-function (displayReferenceSeq) {\r
-this.displayReferenceSeq = displayReferenceSeq;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setIncrement", \r
-function (inc) {\r
-this.increment = inc;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "setRenderGaps", \r
-function (state) {\r
-this.renderGaps = state;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setRightAlignIds", \r
-function (rightAlignIds) {\r
-this.rightAlignIds = rightAlignIds;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setScaleAboveWrapped", \r
-function (b) {\r
-this.scaleAboveWrapped = b;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setScaleLeftWrapped", \r
-function (b) {\r
-this.scaleLeftWrapped = b;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setScaleRightWrapped", \r
-function (b) {\r
-this.scaleRightWrapped = b;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setSeqNameItalics", \r
-function (italics) {\r
-this.seqNameItalics = italics;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setShowAnnotation", \r
-function (b) {\r
-this.showAnnotation = b;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setShowBoxes", \r
-function (state) {\r
-this.showBoxes = state;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setShowColourText", \r
-function (showColourText) {\r
-this.showColourText = showColourText;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setShowHiddenMarkers", \r
-function (show) {\r
-this.showHiddenMarkers = show;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setShowJVSuffix", \r
-function (b) {\r
-this.showJVSuffix = b;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setShowSequenceFeaturesHeight", \r
-function (selected) {\r
-this.showSeqFeaturesHeight = selected;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setShowSequenceFeatures", \r
-function (b) {\r
-this.showSequenceFeatures = b;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setShowText", \r
-function (state) {\r
-this.showText = state;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setShowUnconserved", \r
-function (showunconserved) {\r
-this.showUnconserved = showunconserved;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setTextColour", \r
-function (textColour) {\r
-this.textColour = textColour;\r
-}, "java.awt.Color");\r
-Clazz.overrideMethod (c$, "setTextColour2", \r
-function (textColour2) {\r
-this.textColour2 = textColour2;\r
-}, "java.awt.Color");\r
-Clazz.overrideMethod (c$, "setThreshold", \r
-function (thresh) {\r
-this.threshold = thresh;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "setThresholdTextColour", \r
-function (thresholdTextColour) {\r
-this.thresholdTextColour = thresholdTextColour;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "setWrapAlignment", \r
-function (state) {\r
-this.wrapAlignment = state;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "setWrappedWidth", \r
-function (w) {\r
-this.wrappedWidth = w;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "sameStyle", \r
-function (that) {\r
-return this.equals (that);\r
-}, "jalview.api.ViewStyleI");\r
-Clazz.defineMethod (c$, "getFontName", \r
-function () {\r
-return this.fontName;\r
-});\r
-Clazz.defineMethod (c$, "getFontSize", \r
-function () {\r
-return this.fontSize;\r
-});\r
-Clazz.defineMethod (c$, "getFontStyle", \r
-function () {\r
-return this.fontStyle;\r
-});\r
-Clazz.overrideMethod (c$, "setFontName", \r
-function (name) {\r
-this.fontName = name;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "setFontSize", \r
-function (size) {\r
-this.fontSize = size;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "setFontStyle", \r
-function (style) {\r
-this.fontStyle = style;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getIdWidth", \r
-function () {\r
-return this.idWidth;\r
-});\r
-Clazz.overrideMethod (c$, "setIdWidth", \r
-function (idWidth) {\r
-this.idWidth = idWidth;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "isCentreColumnLabels", \r
-function () {\r
-return this.centreColumnLabels;\r
-});\r
-Clazz.overrideMethod (c$, "setCentreColumnLabels", \r
-function (centreColumnLabels) {\r
-this.centreColumnLabels = centreColumnLabels;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isShowDBRefs", \r
-function () {\r
-return this.showdbrefs;\r
-});\r
-Clazz.overrideMethod (c$, "setShowDBRefs", \r
-function (showdbrefs) {\r
-this.showdbrefs = showdbrefs;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isShowNPFeats", \r
-function () {\r
-return this.shownpfeats;\r
-});\r
-Clazz.overrideMethod (c$, "setShowNPFeats", \r
-function (shownpfeats) {\r
-this.shownpfeats = shownpfeats;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "isScaleProteinAsCdna", \r
-function () {\r
-return this.scaleProteinAsCdna;\r
-});\r
-Clazz.overrideMethod (c$, "setScaleProteinAsCdna", \r
-function (b) {\r
-this.scaleProteinAsCdna = b;\r
-}, "~B");\r
-});\r
+Clazz.declarePackage ("jalview.viewmodel.styles");
+Clazz.load (["jalview.api.ViewStyleI", "java.awt.Color"], "jalview.viewmodel.styles.ViewStyle", ["java.lang.Boolean"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.abovePIDThreshold = false;
+this.charHeight = 0;
+this.charWidth = 0;
+this.idWidth = -1;
+this.colourAppliesToAllGroups = false;
+this.centreColumnLabels = false;
+this.showdbrefs = false;
+this.shownpfeats = false;
+this.colourByReferenceSeq = false;
+this.conservationColourSelected = false;
+this.displayReferenceSeq = false;
+this.increment = 0;
+this.renderGaps = true;
+this.rightAlignIds = false;
+this.scaleAboveWrapped = false;
+this.scaleLeftWrapped = true;
+this.scaleRightWrapped = true;
+this.seqNameItalics = false;
+this.showAnnotation = true;
+this.showBoxes = true;
+this.showColourText = false;
+this.showHiddenMarkers = true;
+this.showJVSuffix = true;
+this.showSeqFeaturesHeight = false;
+this.showSequenceFeatures = false;
+this.showText = true;
+this.showUnconserved = false;
+this.textColour = null;
+this.textColour2 = null;
+this.threshold = 0;
+this.thresholdTextColour = 0;
+this.upperCasebold = false;
+this.fontName = null;
+this.fontSize = 0;
+this.scaleProteinAsCdna = true;
+this.wrapAlignment = false;
+this.wrappedWidth = 0;
+this.fontStyle = 0;
+Clazz.instantialize (this, arguments);
+}, jalview.viewmodel.styles, "ViewStyle", null, jalview.api.ViewStyleI);
+Clazz.prepareFields (c$, function () {
+this.textColour = java.awt.Color.black;
+this.textColour2 = java.awt.Color.white;
+});
+Clazz.makeConstructor (c$, 
+function (vs) {
+this.setAbovePIDThreshold (vs.getAbovePIDThreshold ());
+this.setCentreColumnLabels (vs.isCentreColumnLabels ());
+this.setCharHeight (vs.getCharHeight ());
+this.setCharWidth (vs.getCharWidth ());
+this.setColourAppliesToAllGroups (vs.getColourAppliesToAllGroups ());
+this.setColourByReferenceSeq (vs.isColourByReferenceSeq ());
+this.setColourText (vs.getColourText ());
+this.setConservationColourSelected (vs.isConservationColourSelected ());
+this.setConservationSelected (vs.getConservationSelected ());
+this.setDisplayReferenceSeq (vs.isDisplayReferenceSeq ());
+this.setFontName (vs.getFontName ());
+this.setFontSize (vs.getFontSize ());
+this.setFontStyle (vs.getFontStyle ());
+this.setIdWidth (vs.getIdWidth ());
+this.setIncrement (vs.getIncrement ());
+this.setRenderGaps (vs.isRenderGaps ());
+this.setRightAlignIds (vs.isRightAlignIds ());
+this.setScaleAboveWrapped (vs.getScaleAboveWrapped ());
+this.setScaleLeftWrapped (vs.getScaleLeftWrapped ());
+this.setScaleProteinAsCdna (vs.isScaleProteinAsCdna ());
+this.setScaleRightWrapped (vs.getScaleRightWrapped ());
+this.setSeqNameItalics (vs.isSeqNameItalics ());
+this.setShowAnnotation (vs.isShowAnnotation ());
+this.setShowBoxes (vs.getShowBoxes ());
+this.setShowColourText (vs.isShowColourText ());
+this.setShowDBRefs (vs.isShowDBRefs ());
+this.setShowHiddenMarkers (vs.getShowHiddenMarkers ());
+this.setShowJVSuffix (vs.getShowJVSuffix ());
+this.setShowNPFeats (vs.isShowNPFeats ());
+this.setShowSequenceFeaturesHeight (vs.isShowSequenceFeaturesHeight ());
+this.setShowSequenceFeatures (vs.isShowSequenceFeatures ());
+this.setShowText (vs.getShowText ());
+this.setShowUnconserved (vs.getShowUnconserved ());
+this.setTextColour (vs.getTextColour ());
+this.setTextColour2 (vs.getTextColour2 ());
+this.setThreshold (vs.getThreshold ());
+this.setThresholdTextColour (vs.getThresholdTextColour ());
+this.setUpperCasebold (vs.isUpperCasebold ());
+this.setWrapAlignment (vs.getWrapAlignment ());
+this.setWrappedWidth (vs.getWrappedWidth ());
+}, "jalview.api.ViewStyleI");
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.overrideMethod (c$, "equals", 
+function (other) {
+if (other == null || !(Clazz.instanceOf (other, jalview.viewmodel.styles.ViewStyle))) {
+return false;
+}var vs = other;
+var match = (this.getAbovePIDThreshold () == vs.getAbovePIDThreshold () && this.isCentreColumnLabels () == vs.isCentreColumnLabels () && this.getCharHeight () == vs.getCharHeight () && this.getCharWidth () == vs.getCharWidth () && this.getColourAppliesToAllGroups () == vs.getColourAppliesToAllGroups () && this.isColourByReferenceSeq () == vs.isColourByReferenceSeq () && this.getColourText () == vs.getColourText () && this.isConservationColourSelected () == vs.isConservationColourSelected () && this.getConservationSelected () == vs.getConservationSelected () && this.isDisplayReferenceSeq () == vs.isDisplayReferenceSeq () && this.getFontSize () == vs.getFontSize () && this.getFontStyle () == vs.getFontStyle () && this.getIdWidth () == vs.getIdWidth () && this.getIncrement () == vs.getIncrement () && this.isRenderGaps () == vs.isRenderGaps () && this.isRightAlignIds () == vs.isRightAlignIds () && this.getScaleAboveWrapped () == vs.getScaleAboveWrapped () && this.getScaleLeftWrapped () == vs.getScaleLeftWrapped () && this.isScaleProteinAsCdna () == vs.isScaleProteinAsCdna () && this.getScaleRightWrapped () == vs.getScaleRightWrapped () && this.isSeqNameItalics () == vs.isSeqNameItalics () && this.isShowAnnotation () == vs.isShowAnnotation () && this.getShowBoxes () == vs.getShowBoxes () && this.isShowColourText () == vs.isShowColourText () && this.isShowDBRefs () == vs.isShowDBRefs () && this.getShowHiddenMarkers () == vs.getShowHiddenMarkers () && this.getShowJVSuffix () == vs.getShowJVSuffix () && this.isShowNPFeats () == vs.isShowNPFeats () && this.isShowSequenceFeaturesHeight () == vs.isShowSequenceFeaturesHeight () && this.isShowSequenceFeatures () == vs.isShowSequenceFeatures () && this.getShowText () == vs.getShowText () && this.getShowUnconserved () == vs.getShowUnconserved () && this.getThreshold () == vs.getThreshold () && this.getThresholdTextColour () == vs.getThresholdTextColour () && this.isUpperCasebold () == vs.isUpperCasebold () && this.getWrapAlignment () == vs.getWrapAlignment () && this.getWrappedWidth () == vs.getWrappedWidth ());
+match = match && String.valueOf (this.getFontName ()).equals (String.valueOf (vs.getFontName ()));
+match = match && String.valueOf (this.getTextColour ()).equals (String.valueOf (vs.getTextColour ()));
+match = match && String.valueOf (this.getTextColour2 ()).equals (String.valueOf (vs.getTextColour2 ()));
+return match;
+}, "~O");
+Clazz.overrideMethod (c$, "hashCode", 
+function () {
+var hash = 0;
+var m = 1;
+hash += m++ * Boolean.$valueOf (this.abovePIDThreshold).hashCode ();
+hash += m++ * Boolean.$valueOf (this.centreColumnLabels).hashCode ();
+hash += m++ * Boolean.$valueOf (this.colourAppliesToAllGroups).hashCode ();
+hash += m++ * Boolean.$valueOf (this.displayReferenceSeq).hashCode ();
+hash += m++ * Boolean.$valueOf (this.renderGaps).hashCode ();
+hash += m++ * Boolean.$valueOf (this.rightAlignIds).hashCode ();
+hash += m++ * Boolean.$valueOf (this.scaleProteinAsCdna).hashCode ();
+hash += m++ * Boolean.$valueOf (this.scaleRightWrapped).hashCode ();
+hash += m++ * Boolean.$valueOf (this.seqNameItalics).hashCode ();
+hash += m++ * Boolean.$valueOf (this.showAnnotation).hashCode ();
+hash += m++ * Boolean.$valueOf (this.showBoxes).hashCode ();
+hash += m++ * Boolean.$valueOf (this.showdbrefs).hashCode ();
+hash += m++ * Boolean.$valueOf (this.showJVSuffix).hashCode ();
+hash += m++ * Boolean.$valueOf (this.showSequenceFeatures).hashCode ();
+hash += m++ * Boolean.$valueOf (this.showUnconserved).hashCode ();
+hash += m++ * Boolean.$valueOf (this.wrapAlignment).hashCode ();
+hash += m++ * this.charHeight;
+hash += m++ * this.charWidth;
+hash += m++ * this.fontSize;
+hash += m++ * this.fontStyle;
+hash += m++ * this.idWidth;
+hash += String.valueOf (this.fontName).hashCode ();
+return hash;
+});
+Clazz.defineMethod (c$, "isUpperCasebold", 
+function () {
+return this.upperCasebold;
+});
+Clazz.overrideMethod (c$, "setUpperCasebold", 
+function (upperCasebold) {
+this.upperCasebold = upperCasebold;
+}, "~B");
+Clazz.defineMethod (c$, "getAbovePIDThreshold", 
+function () {
+return this.abovePIDThreshold;
+});
+Clazz.defineMethod (c$, "getCharHeight", 
+function () {
+return this.charHeight;
+});
+Clazz.defineMethod (c$, "getCharWidth", 
+function () {
+return this.charWidth;
+});
+Clazz.defineMethod (c$, "getColourAppliesToAllGroups", 
+function () {
+return this.colourAppliesToAllGroups;
+});
+Clazz.defineMethod (c$, "getColourText", 
+function () {
+return this.showColourText;
+});
+Clazz.defineMethod (c$, "getConservationSelected", 
+function () {
+return this.conservationColourSelected;
+});
+Clazz.defineMethod (c$, "getIncrement", 
+function () {
+return this.increment;
+});
+Clazz.defineMethod (c$, "getScaleAboveWrapped", 
+function () {
+return this.scaleAboveWrapped;
+});
+Clazz.defineMethod (c$, "getScaleLeftWrapped", 
+function () {
+return this.scaleLeftWrapped;
+});
+Clazz.defineMethod (c$, "getScaleRightWrapped", 
+function () {
+return this.scaleRightWrapped;
+});
+Clazz.defineMethod (c$, "getShowBoxes", 
+function () {
+return this.showBoxes;
+});
+Clazz.defineMethod (c$, "getShowHiddenMarkers", 
+function () {
+return this.showHiddenMarkers;
+});
+Clazz.defineMethod (c$, "getShowJVSuffix", 
+function () {
+return this.showJVSuffix;
+});
+Clazz.defineMethod (c$, "getShowText", 
+function () {
+return this.showText;
+});
+Clazz.defineMethod (c$, "getShowUnconserved", 
+function () {
+return this.showUnconserved;
+});
+Clazz.defineMethod (c$, "getTextColour", 
+function () {
+return this.textColour;
+});
+Clazz.defineMethod (c$, "getTextColour2", 
+function () {
+return this.textColour2;
+});
+Clazz.defineMethod (c$, "getThreshold", 
+function () {
+return this.threshold;
+});
+Clazz.defineMethod (c$, "getThresholdTextColour", 
+function () {
+return this.thresholdTextColour;
+});
+Clazz.defineMethod (c$, "getWrapAlignment", 
+function () {
+return this.wrapAlignment;
+});
+Clazz.defineMethod (c$, "getWrappedWidth", 
+function () {
+return this.wrappedWidth;
+});
+Clazz.defineMethod (c$, "isColourByReferenceSeq", 
+function () {
+return this.colourByReferenceSeq;
+});
+Clazz.defineMethod (c$, "isConservationColourSelected", 
+function () {
+return this.conservationColourSelected;
+});
+Clazz.defineMethod (c$, "isDisplayReferenceSeq", 
+function () {
+return this.displayReferenceSeq;
+});
+Clazz.defineMethod (c$, "isRenderGaps", 
+function () {
+return this.renderGaps;
+});
+Clazz.defineMethod (c$, "isRightAlignIds", 
+function () {
+return this.rightAlignIds;
+});
+Clazz.defineMethod (c$, "isSeqNameItalics", 
+function () {
+return this.seqNameItalics;
+});
+Clazz.defineMethod (c$, "isShowAnnotation", 
+function () {
+return this.showAnnotation;
+});
+Clazz.defineMethod (c$, "isShowColourText", 
+function () {
+return this.showColourText;
+});
+Clazz.defineMethod (c$, "isShowSequenceFeaturesHeight", 
+function () {
+return this.showSeqFeaturesHeight;
+});
+Clazz.defineMethod (c$, "isShowSequenceFeatures", 
+function () {
+return this.showSequenceFeatures;
+});
+Clazz.overrideMethod (c$, "setAbovePIDThreshold", 
+function (b) {
+this.abovePIDThreshold = b;
+}, "~B");
+Clazz.overrideMethod (c$, "setCharHeight", 
+function (h) {
+this.charHeight = h;
+}, "~N");
+Clazz.overrideMethod (c$, "setCharWidth", 
+function (w) {
+this.charWidth = w;
+}, "~N");
+Clazz.overrideMethod (c$, "setColourAppliesToAllGroups", 
+function (b) {
+this.colourAppliesToAllGroups = b;
+}, "~B");
+Clazz.overrideMethod (c$, "setColourByReferenceSeq", 
+function (colourByReferenceSeq) {
+this.colourByReferenceSeq = colourByReferenceSeq;
+}, "~B");
+Clazz.overrideMethod (c$, "setColourText", 
+function (state) {
+this.showColourText = state;
+}, "~B");
+Clazz.overrideMethod (c$, "setConservationColourSelected", 
+function (conservationColourSelected) {
+this.conservationColourSelected = conservationColourSelected;
+}, "~B");
+Clazz.overrideMethod (c$, "setConservationSelected", 
+function (b) {
+this.conservationColourSelected = b;
+}, "~B");
+Clazz.overrideMethod (c$, "setDisplayReferenceSeq", 
+function (displayReferenceSeq) {
+this.displayReferenceSeq = displayReferenceSeq;
+}, "~B");
+Clazz.overrideMethod (c$, "setIncrement", 
+function (inc) {
+this.increment = inc;
+}, "~N");
+Clazz.overrideMethod (c$, "setRenderGaps", 
+function (state) {
+this.renderGaps = state;
+}, "~B");
+Clazz.overrideMethod (c$, "setRightAlignIds", 
+function (rightAlignIds) {
+this.rightAlignIds = rightAlignIds;
+}, "~B");
+Clazz.overrideMethod (c$, "setScaleAboveWrapped", 
+function (b) {
+this.scaleAboveWrapped = b;
+}, "~B");
+Clazz.overrideMethod (c$, "setScaleLeftWrapped", 
+function (b) {
+this.scaleLeftWrapped = b;
+}, "~B");
+Clazz.overrideMethod (c$, "setScaleRightWrapped", 
+function (b) {
+this.scaleRightWrapped = b;
+}, "~B");
+Clazz.overrideMethod (c$, "setSeqNameItalics", 
+function (italics) {
+this.seqNameItalics = italics;
+}, "~B");
+Clazz.overrideMethod (c$, "setShowAnnotation", 
+function (b) {
+this.showAnnotation = b;
+}, "~B");
+Clazz.overrideMethod (c$, "setShowBoxes", 
+function (state) {
+this.showBoxes = state;
+}, "~B");
+Clazz.overrideMethod (c$, "setShowColourText", 
+function (showColourText) {
+this.showColourText = showColourText;
+}, "~B");
+Clazz.overrideMethod (c$, "setShowHiddenMarkers", 
+function (show) {
+this.showHiddenMarkers = show;
+}, "~B");
+Clazz.overrideMethod (c$, "setShowJVSuffix", 
+function (b) {
+this.showJVSuffix = b;
+}, "~B");
+Clazz.overrideMethod (c$, "setShowSequenceFeaturesHeight", 
+function (selected) {
+this.showSeqFeaturesHeight = selected;
+}, "~B");
+Clazz.overrideMethod (c$, "setShowSequenceFeatures", 
+function (b) {
+this.showSequenceFeatures = b;
+}, "~B");
+Clazz.overrideMethod (c$, "setShowText", 
+function (state) {
+this.showText = state;
+}, "~B");
+Clazz.overrideMethod (c$, "setShowUnconserved", 
+function (showunconserved) {
+this.showUnconserved = showunconserved;
+}, "~B");
+Clazz.overrideMethod (c$, "setTextColour", 
+function (textColour) {
+this.textColour = textColour;
+}, "java.awt.Color");
+Clazz.overrideMethod (c$, "setTextColour2", 
+function (textColour2) {
+this.textColour2 = textColour2;
+}, "java.awt.Color");
+Clazz.overrideMethod (c$, "setThreshold", 
+function (thresh) {
+this.threshold = thresh;
+}, "~N");
+Clazz.overrideMethod (c$, "setThresholdTextColour", 
+function (thresholdTextColour) {
+this.thresholdTextColour = thresholdTextColour;
+}, "~N");
+Clazz.overrideMethod (c$, "setWrapAlignment", 
+function (state) {
+this.wrapAlignment = state;
+}, "~B");
+Clazz.overrideMethod (c$, "setWrappedWidth", 
+function (w) {
+this.wrappedWidth = w;
+}, "~N");
+Clazz.overrideMethod (c$, "sameStyle", 
+function (that) {
+return this.equals (that);
+}, "jalview.api.ViewStyleI");
+Clazz.defineMethod (c$, "getFontName", 
+function () {
+return this.fontName;
+});
+Clazz.defineMethod (c$, "getFontSize", 
+function () {
+return this.fontSize;
+});
+Clazz.defineMethod (c$, "getFontStyle", 
+function () {
+return this.fontStyle;
+});
+Clazz.overrideMethod (c$, "setFontName", 
+function (name) {
+this.fontName = name;
+}, "~S");
+Clazz.overrideMethod (c$, "setFontSize", 
+function (size) {
+this.fontSize = size;
+}, "~N");
+Clazz.overrideMethod (c$, "setFontStyle", 
+function (style) {
+this.fontStyle = style;
+}, "~N");
+Clazz.defineMethod (c$, "getIdWidth", 
+function () {
+return this.idWidth;
+});
+Clazz.overrideMethod (c$, "setIdWidth", 
+function (idWidth) {
+this.idWidth = idWidth;
+}, "~N");
+Clazz.defineMethod (c$, "isCentreColumnLabels", 
+function () {
+return this.centreColumnLabels;
+});
+Clazz.overrideMethod (c$, "setCentreColumnLabels", 
+function (centreColumnLabels) {
+this.centreColumnLabels = centreColumnLabels;
+}, "~B");
+Clazz.defineMethod (c$, "isShowDBRefs", 
+function () {
+return this.showdbrefs;
+});
+Clazz.overrideMethod (c$, "setShowDBRefs", 
+function (showdbrefs) {
+this.showdbrefs = showdbrefs;
+}, "~B");
+Clazz.defineMethod (c$, "isShowNPFeats", 
+function () {
+return this.shownpfeats;
+});
+Clazz.overrideMethod (c$, "setShowNPFeats", 
+function (shownpfeats) {
+this.shownpfeats = shownpfeats;
+}, "~B");
+Clazz.defineMethod (c$, "isScaleProteinAsCdna", 
+function () {
+return this.scaleProteinAsCdna;
+});
+Clazz.overrideMethod (c$, "setScaleProteinAsCdna", 
+function (b) {
+this.scaleProteinAsCdna = b;
+}, "~B");
+});
index 7f25a9c..39105f8 100644 (file)
-Clazz.declarePackage ("jalview.workers");\r
-Clazz.load (["jalview.api.AlignCalcManagerI", "java.util.ArrayList", "$.Collections", "$.HashSet", "$.Hashtable"], "jalview.workers.AlignCalcManager", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.restartable = null;\r
-this.blackList = null;\r
-this.inProgress = null;\r
-this.updating = null;\r
-this.canUpdate = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.workers, "AlignCalcManager", null, jalview.api.AlignCalcManagerI);\r
-Clazz.prepareFields (c$, function () {\r
-this.restartable = java.util.Collections.synchronizedList ( new java.util.ArrayList ());\r
-this.blackList = java.util.Collections.synchronizedList ( new java.util.ArrayList ());\r
-this.inProgress = java.util.Collections.synchronizedMap ( new java.util.Hashtable ());\r
-this.updating = java.util.Collections.synchronizedMap ( new java.util.Hashtable ());\r
-this.canUpdate =  new java.util.HashSet ();\r
-});\r
-Clazz.overrideMethod (c$, "notifyStart", \r
-function (worker) {\r
-{\r
-var upd = this.updating.get (worker.getClass ());\r
-if (upd == null) {\r
-this.updating.put (worker.getClass (), upd = java.util.Collections.synchronizedList ( new java.util.ArrayList ()));\r
-}{\r
-upd.add (worker);\r
-}}}, "jalview.api.AlignCalcWorkerI");\r
-Clazz.overrideMethod (c$, "alreadyDoing", \r
-function (worker) {\r
-{\r
-return this.inProgress.containsKey (worker.getClass ());\r
-}}, "jalview.api.AlignCalcWorkerI");\r
-Clazz.overrideMethod (c$, "isPending", \r
-function (workingClass) {\r
-var upd;\r
-{\r
-upd = this.updating.get (workingClass.getClass ());\r
-if (upd == null) {\r
-return false;\r
-}{\r
-if (upd.size () > 1) {\r
-return true;\r
-}}return false;\r
-}}, "jalview.api.AlignCalcWorkerI");\r
-Clazz.defineMethod (c$, "numberLive", \r
-function (worker) {\r
-{\r
-var upd = this.updating.get (worker.getClass ());\r
-if (upd == null) {\r
-return 0;\r
-};return upd.size ();\r
-}}, "jalview.api.AlignCalcWorkerI");\r
-Clazz.overrideMethod (c$, "notifyWorking", \r
-function (worker) {\r
-{\r
-if (this.inProgress.get (worker.getClass ()) != null) {\r
-if (false) {\r
-System.err.println ("Warning: Multiple workers are running of type " + worker.getClass ());\r
-}return false;\r
-}this.inProgress.put (worker.getClass (), worker);\r
-}return true;\r
-}, "jalview.api.AlignCalcWorkerI");\r
-Clazz.overrideMethod (c$, "workerComplete", \r
-function (worker) {\r
-{\r
-this.inProgress.remove (worker.getClass ());\r
-var upd = this.updating.get (worker.getClass ());\r
-if (upd != null) {\r
-{\r
-upd.remove (worker);\r
-}this.canUpdate.add (worker);\r
-}}}, "jalview.api.AlignCalcWorkerI");\r
-Clazz.overrideMethod (c$, "workerCannotRun", \r
-function (worker) {\r
-{\r
-this.blackList.add (worker.getClass ());\r
-}}, "jalview.api.AlignCalcWorkerI");\r
-Clazz.defineMethod (c$, "isBlackListed", \r
-function (workerType) {\r
-{\r
-return this.blackList.contains (workerType);\r
-}}, "Class");\r
-Clazz.overrideMethod (c$, "startWorker", \r
-function (worker) {\r
-var workerAsThread = worker;\r
-if (workerAsThread.isAlive ()) {\r
-workerAsThread.interrupt ();\r
-worker = worker.getNewWorker ();\r
-}worker.setName (worker.getClass ().getName ());\r
-worker.start ();\r
-}, "jalview.api.AlignCalcWorkerI");\r
-Clazz.defineMethod (c$, "isWorking", \r
-function (worker) {\r
-{\r
-return worker != null && this.inProgress.get (worker.getClass ()) === worker;\r
-}}, "jalview.api.AlignCalcWorkerI");\r
-Clazz.defineMethod (c$, "isWorking", \r
-function () {\r
-{\r
-return this.inProgress.size () > 0;\r
-}});\r
-Clazz.overrideMethod (c$, "registerWorker", \r
-function (worker) {\r
-{\r
-if (!this.restartable.contains (worker)) {\r
-this.restartable.add (worker);\r
-}this.startWorker (worker);\r
-}}, "jalview.api.AlignCalcWorkerI");\r
-Clazz.overrideMethod (c$, "restartWorkers", \r
-function () {\r
-{\r
-for (var worker, $worker = this.restartable.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {\r
-this.startWorker (worker);\r
-}\r
-}});\r
-Clazz.overrideMethod (c$, "workingInvolvedWith", \r
-function (alignmentAnnotation) {\r
-{\r
-for (var worker, $worker = this.inProgress.values ().iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {\r
-if (worker.involves (alignmentAnnotation)) {\r
-return true;\r
-}}\r
-}{\r
-for (var workers, $workers = this.updating.values ().iterator (); $workers.hasNext () && ((workers = $workers.next ()) || true);) {\r
-for (var worker, $worker = workers.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {\r
-if (worker.involves (alignmentAnnotation)) {\r
-return true;\r
-}}\r
-}\r
-}return false;\r
-}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.overrideMethod (c$, "updateAnnotationFor", \r
-function (workerClass) {\r
-var workers;\r
-{\r
-workers = this.canUpdate.toArray ( new Array (0));\r
-}for (var worker, $worker = 0, $$worker = workers; $worker < $$worker.length && ((worker = $$worker[$worker]) || true); $worker++) {\r
-if (workerClass.equals (worker.getClass ())) {\r
-worker.updateAnnotation ();\r
-}}\r
-}, "Class");\r
-Clazz.overrideMethod (c$, "getRegisteredWorkersOfClass", \r
-function (workerClass) {\r
-var workingClass =  new java.util.ArrayList ();\r
-var workers;\r
-{\r
-workers = this.canUpdate.toArray ( new Array (this.canUpdate.size ()));\r
-}for (var worker, $worker = 0, $$worker = workers; $worker < $$worker.length && ((worker = $$worker[$worker]) || true); $worker++) {\r
-if (workerClass.equals (worker.getClass ())) {\r
-workingClass.add (worker);\r
-}}\r
-return (workingClass.size () == 0) ? null : workingClass;\r
-}, "Class");\r
-Clazz.overrideMethod (c$, "startRegisteredWorkersOfClass", \r
-function (workerClass) {\r
-var workers = this.getRegisteredWorkersOfClass (workerClass);\r
-if (workers == null) {\r
-return false;\r
-}for (var worker, $worker = workers.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {\r
-if (!this.isPending (worker)) {\r
-this.startWorker (worker);\r
-} else {\r
-System.err.println ("Pending exists for " + workerClass);\r
-}}\r
-return true;\r
-}, "Class");\r
-Clazz.overrideMethod (c$, "workerMayRun", \r
-function (worker) {\r
-{\r
-if (this.blackList.contains (worker.getClass ())) {\r
-this.blackList.remove (worker.getClass ());\r
-}}}, "jalview.api.AlignCalcWorkerI");\r
-Clazz.overrideMethod (c$, "removeRegisteredWorkersOfClass", \r
-function (typeToRemove) {\r
-var workers = this.getRegisteredWorkersOfClass (typeToRemove);\r
-var removable =  new java.util.ArrayList ();\r
-var toremovannot =  new java.util.HashSet ();\r
-{\r
-for (var worker, $worker = this.restartable.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {\r
-if (typeToRemove.equals (worker.getClass ())) {\r
-removable.add (worker);\r
-toremovannot.add (worker);\r
-}}\r
-this.restartable.removeAll (removable);\r
-}{\r
-for (var worker, $worker = this.canUpdate.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {\r
-if (typeToRemove.equals (worker.getClass ())) {\r
-removable.add (worker);\r
-toremovannot.add (worker);\r
-}}\r
-this.canUpdate.removeAll (removable);\r
-}}, "Class");\r
-});\r
+Clazz.declarePackage ("jalview.workers");
+Clazz.load (["jalview.api.AlignCalcManagerI", "java.util.ArrayList", "$.Collections", "$.HashSet", "$.Hashtable"], "jalview.workers.AlignCalcManager", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.restartable = null;
+this.blackList = null;
+this.inProgress = null;
+this.updating = null;
+this.canUpdate = null;
+Clazz.instantialize (this, arguments);
+}, jalview.workers, "AlignCalcManager", null, jalview.api.AlignCalcManagerI);
+Clazz.prepareFields (c$, function () {
+this.restartable = java.util.Collections.synchronizedList ( new java.util.ArrayList ());
+this.blackList = java.util.Collections.synchronizedList ( new java.util.ArrayList ());
+this.inProgress = java.util.Collections.synchronizedMap ( new java.util.Hashtable ());
+this.updating = java.util.Collections.synchronizedMap ( new java.util.Hashtable ());
+this.canUpdate =  new java.util.HashSet ();
+});
+Clazz.overrideMethod (c$, "notifyStart", 
+function (worker) {
+{
+var upd = this.updating.get (worker.getClass ());
+if (upd == null) {
+this.updating.put (worker.getClass (), upd = java.util.Collections.synchronizedList ( new java.util.ArrayList ()));
+}{
+upd.add (worker);
+}}}, "jalview.api.AlignCalcWorkerI");
+Clazz.overrideMethod (c$, "alreadyDoing", 
+function (worker) {
+{
+return this.inProgress.containsKey (worker.getClass ());
+}}, "jalview.api.AlignCalcWorkerI");
+Clazz.overrideMethod (c$, "isPending", 
+function (workingClass) {
+var upd;
+{
+upd = this.updating.get (workingClass.getClass ());
+if (upd == null) {
+return false;
+}{
+if (upd.size () > 1) {
+return true;
+}}return false;
+}}, "jalview.api.AlignCalcWorkerI");
+Clazz.defineMethod (c$, "numberLive", 
+function (worker) {
+{
+var upd = this.updating.get (worker.getClass ());
+if (upd == null) {
+return 0;
+};return upd.size ();
+}}, "jalview.api.AlignCalcWorkerI");
+Clazz.overrideMethod (c$, "notifyWorking", 
+function (worker) {
+{
+if (this.inProgress.get (worker.getClass ()) != null) {
+if (false) {
+System.err.println ("Warning: Multiple workers are running of type " + worker.getClass ());
+}return false;
+}this.inProgress.put (worker.getClass (), worker);
+}return true;
+}, "jalview.api.AlignCalcWorkerI");
+Clazz.overrideMethod (c$, "workerComplete", 
+function (worker) {
+{
+this.inProgress.remove (worker.getClass ());
+var upd = this.updating.get (worker.getClass ());
+if (upd != null) {
+{
+upd.remove (worker);
+}this.canUpdate.add (worker);
+}}}, "jalview.api.AlignCalcWorkerI");
+Clazz.overrideMethod (c$, "workerCannotRun", 
+function (worker) {
+{
+this.blackList.add (worker.getClass ());
+}}, "jalview.api.AlignCalcWorkerI");
+Clazz.defineMethod (c$, "isBlackListed", 
+function (workerType) {
+{
+return this.blackList.contains (workerType);
+}}, "Class");
+Clazz.overrideMethod (c$, "startWorker", 
+function (worker) {
+var workerAsThread = worker;
+if (workerAsThread.isAlive ()) {
+workerAsThread.interrupt ();
+worker = worker.getNewWorker ();
+}worker.setName (worker.getClass ().getName ());
+worker.start ();
+}, "jalview.api.AlignCalcWorkerI");
+Clazz.defineMethod (c$, "isWorking", 
+function (worker) {
+{
+return worker != null && this.inProgress.get (worker.getClass ()) === worker;
+}}, "jalview.api.AlignCalcWorkerI");
+Clazz.defineMethod (c$, "isWorking", 
+function () {
+{
+return this.inProgress.size () > 0;
+}});
+Clazz.overrideMethod (c$, "registerWorker", 
+function (worker) {
+{
+if (!this.restartable.contains (worker)) {
+this.restartable.add (worker);
+}this.startWorker (worker);
+}}, "jalview.api.AlignCalcWorkerI");
+Clazz.overrideMethod (c$, "restartWorkers", 
+function () {
+{
+for (var worker, $worker = this.restartable.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
+this.startWorker (worker);
+}
+}});
+Clazz.overrideMethod (c$, "workingInvolvedWith", 
+function (alignmentAnnotation) {
+{
+for (var worker, $worker = this.inProgress.values ().iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
+if (worker.involves (alignmentAnnotation)) {
+return true;
+}}
+}{
+for (var workers, $workers = this.updating.values ().iterator (); $workers.hasNext () && ((workers = $workers.next ()) || true);) {
+for (var worker, $worker = workers.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
+if (worker.involves (alignmentAnnotation)) {
+return true;
+}}
+}
+}return false;
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.overrideMethod (c$, "updateAnnotationFor", 
+function (workerClass) {
+var workers;
+{
+workers = this.canUpdate.toArray ( new Array (0));
+}for (var worker, $worker = 0, $$worker = workers; $worker < $$worker.length && ((worker = $$worker[$worker]) || true); $worker++) {
+if (workerClass.equals (worker.getClass ())) {
+worker.updateAnnotation ();
+}}
+}, "Class");
+Clazz.overrideMethod (c$, "getRegisteredWorkersOfClass", 
+function (workerClass) {
+var workingClass =  new java.util.ArrayList ();
+var workers;
+{
+workers = this.canUpdate.toArray ( new Array (this.canUpdate.size ()));
+}for (var worker, $worker = 0, $$worker = workers; $worker < $$worker.length && ((worker = $$worker[$worker]) || true); $worker++) {
+if (workerClass.equals (worker.getClass ())) {
+workingClass.add (worker);
+}}
+return (workingClass.size () == 0) ? null : workingClass;
+}, "Class");
+Clazz.overrideMethod (c$, "startRegisteredWorkersOfClass", 
+function (workerClass) {
+var workers = this.getRegisteredWorkersOfClass (workerClass);
+if (workers == null) {
+return false;
+}for (var worker, $worker = workers.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
+if (!this.isPending (worker)) {
+this.startWorker (worker);
+} else {
+System.err.println ("Pending exists for " + workerClass);
+}}
+return true;
+}, "Class");
+Clazz.overrideMethod (c$, "workerMayRun", 
+function (worker) {
+{
+if (this.blackList.contains (worker.getClass ())) {
+this.blackList.remove (worker.getClass ());
+}}}, "jalview.api.AlignCalcWorkerI");
+Clazz.overrideMethod (c$, "removeRegisteredWorkersOfClass", 
+function (typeToRemove) {
+var workers = this.getRegisteredWorkersOfClass (typeToRemove);
+var removable =  new java.util.ArrayList ();
+var toremovannot =  new java.util.HashSet ();
+{
+for (var worker, $worker = this.restartable.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
+if (typeToRemove.equals (worker.getClass ())) {
+removable.add (worker);
+toremovannot.add (worker);
+}}
+this.restartable.removeAll (removable);
+}{
+for (var worker, $worker = this.canUpdate.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
+if (typeToRemove.equals (worker.getClass ())) {
+removable.add (worker);
+toremovannot.add (worker);
+}}
+this.canUpdate.removeAll (removable);
+}}, "Class");
+});
index 43b690b..6636e6d 100644 (file)
@@ -1,54 +1,54 @@
-Clazz.declarePackage ("jalview.workers");\r
-Clazz.load (["jalview.api.AlignCalcWorkerI", "swingjs.JSThread"], "jalview.workers.AlignCalcWorker", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.iFirst = 0;\r
-this.iLast = 0;\r
-this.nPer = 2;\r
-this.started = 0;\r
-this.alignment = null;\r
-this.aWidth = 0;\r
-this.alignViewport = null;\r
-this.calcMan = null;\r
-this.ap = null;\r
-this.ourAnnots = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.workers, "AlignCalcWorker", swingjs.JSThread, jalview.api.AlignCalcWorkerI);\r
-Clazz.makeConstructor (c$, \r
-function (alignViewport, alignPanel) {\r
-Clazz.superConstructor (this, jalview.workers.AlignCalcWorker, [null, "AlignCalcWorker"]);\r
-this.alignViewport = alignViewport;\r
-this.calcMan = alignViewport.getCalcManager ();\r
-this.ap = alignPanel;\r
-}, "jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");\r
-Clazz.defineMethod (c$, "abortAndDestroy", \r
-function () {\r
-if (this.calcMan != null) {\r
-this.calcMan.workerComplete (this);\r
-}this.alignViewport = null;\r
-this.calcMan = null;\r
-this.ap = null;\r
-});\r
-Clazz.overrideMethod (c$, "involves", \r
-function (i) {\r
-return this.ourAnnots != null && this.ourAnnots.contains (i);\r
-}, "jalview.datamodel.AlignmentAnnotation");\r
-Clazz.overrideMethod (c$, "removeOurAnnotation", \r
-function () {\r
-if (this.ourAnnots != null && this.alignViewport != null) {\r
-var alignment = this.alignViewport.getAlignment ();\r
-{\r
-for (var aa, $aa = this.ourAnnots.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {\r
-alignment.deleteAnnotation (aa, true);\r
-}\r
-}}});\r
-Clazz.defineMethod (c$, "notifyDone", \r
-function () {\r
-if (this.ap != null) {\r
-this.ap.paintAlignment (true);\r
-}this.calcMan.workerComplete (this);\r
-});\r
-Clazz.defineStatics (c$,\r
-"LOOP_STANDBY", 3,\r
-"LOOP_CALCULATE", 4,\r
-"MS_MAX", 500);\r
-});\r
+Clazz.declarePackage ("jalview.workers");
+Clazz.load (["jalview.api.AlignCalcWorkerI", "swingjs.JSThread"], "jalview.workers.AlignCalcWorker", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.iFirst = 0;
+this.iLast = 0;
+this.nPer = 2;
+this.started = 0;
+this.alignment = null;
+this.aWidth = 0;
+this.alignViewport = null;
+this.calcMan = null;
+this.ap = null;
+this.ourAnnots = null;
+Clazz.instantialize (this, arguments);
+}, jalview.workers, "AlignCalcWorker", swingjs.JSThread, jalview.api.AlignCalcWorkerI);
+Clazz.makeConstructor (c$, 
+function (alignViewport, alignPanel) {
+Clazz.superConstructor (this, jalview.workers.AlignCalcWorker, [null, "AlignCalcWorker"]);
+this.alignViewport = alignViewport;
+this.calcMan = alignViewport.getCalcManager ();
+this.ap = alignPanel;
+}, "jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");
+Clazz.defineMethod (c$, "abortAndDestroy", 
+function () {
+if (this.calcMan != null) {
+this.calcMan.workerComplete (this);
+}this.alignViewport = null;
+this.calcMan = null;
+this.ap = null;
+});
+Clazz.overrideMethod (c$, "involves", 
+function (i) {
+return this.ourAnnots != null && this.ourAnnots.contains (i);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz.overrideMethod (c$, "removeOurAnnotation", 
+function () {
+if (this.ourAnnots != null && this.alignViewport != null) {
+var alignment = this.alignViewport.getAlignment ();
+{
+for (var aa, $aa = this.ourAnnots.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {
+alignment.deleteAnnotation (aa, true);
+}
+}}});
+Clazz.defineMethod (c$, "notifyDone", 
+function () {
+if (this.ap != null) {
+this.ap.paintAlignment (true);
+}this.calcMan.workerComplete (this);
+});
+Clazz.defineStatics (c$,
+"LOOP_STANDBY", 3,
+"LOOP_CALCULATE", 4,
+"MS_MAX", 500);
+});
index 641c3ba..17ece7f 100644 (file)
@@ -1,46 +1,46 @@
-Clazz.declarePackage ("jalview.workers");\r
-Clazz.load (["jalview.workers.ConsensusThread"], "jalview.workers.ComplementConsensusThread", ["jalview.analysis.AAFrequency"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.mappings = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.workers, "ComplementConsensusThread", jalview.workers.ConsensusThread);\r
-Clazz.overrideMethod (c$, "getNewWorker", \r
-function () {\r
-return  new jalview.workers.ComplementConsensusThread (this.alignViewport, this.ap);\r
-});\r
-Clazz.overrideMethod (c$, "getConsensusAnnotation", \r
-function () {\r
-return this.alignViewport.getComplementConsensusAnnotation ();\r
-});\r
-Clazz.overrideMethod (c$, "getViewportConsensus", \r
-function () {\r
-return this.alignViewport.getComplementConsensusHash ();\r
-});\r
-Clazz.defineMethod (c$, "initializeCalc", \r
-function () {\r
-this.mappings = this.alignment.getCodonFrames ();\r
-return (this.mappings != null && !this.mappings.isEmpty () && Clazz.superCall (this, jalview.workers.ComplementConsensusThread, "initializeCalc", []));\r
-});\r
-Clazz.overrideMethod (c$, "computeConsensus", \r
-function () {\r
-for (var i = 0; i < 3; i++) {\r
-try {\r
-jalview.analysis.AAFrequency.calculateCdna (this.alignment, this.mappings, this.hconsensus, this.iFirst, this.iLast);\r
-break;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.util.ConcurrentModificationException)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}\r
-});\r
-Clazz.overrideMethod (c$, "finalizeCalc", \r
-function () {\r
-this.alignViewport.setComplementConsensusHash (this.hconsensus);\r
-});\r
-Clazz.overrideMethod (c$, "deriveConsensus", \r
-function (consensusAnnotation, consensusData) {\r
-jalview.analysis.AAFrequency.completeCdnaConsensus (consensusAnnotation, consensusData, this.alignViewport.isShowSequenceLogo (), this.getSequences ().length);\r
-}, "jalview.datamodel.AlignmentAnnotation,~A");\r
-});\r
+Clazz.declarePackage ("jalview.workers");
+Clazz.load (["jalview.workers.ConsensusThread"], "jalview.workers.ComplementConsensusThread", ["jalview.analysis.AAFrequency"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.mappings = null;
+Clazz.instantialize (this, arguments);
+}, jalview.workers, "ComplementConsensusThread", jalview.workers.ConsensusThread);
+Clazz.overrideMethod (c$, "getNewWorker", 
+function () {
+return  new jalview.workers.ComplementConsensusThread (this.alignViewport, this.ap);
+});
+Clazz.overrideMethod (c$, "getConsensusAnnotation", 
+function () {
+return this.alignViewport.getComplementConsensusAnnotation ();
+});
+Clazz.overrideMethod (c$, "getViewportConsensus", 
+function () {
+return this.alignViewport.getComplementConsensusHash ();
+});
+Clazz.defineMethod (c$, "initializeCalc", 
+function () {
+this.mappings = this.alignment.getCodonFrames ();
+return (this.mappings != null && !this.mappings.isEmpty () && Clazz.superCall (this, jalview.workers.ComplementConsensusThread, "initializeCalc", []));
+});
+Clazz.overrideMethod (c$, "computeConsensus", 
+function () {
+for (var i = 0; i < 3; i++) {
+try {
+jalview.analysis.AAFrequency.calculateCdna (this.alignment, this.mappings, this.hconsensus, this.iFirst, this.iLast);
+break;
+} catch (e) {
+if (Clazz.exceptionOf (e, java.util.ConcurrentModificationException)) {
+} else {
+throw e;
+}
+}
+}
+});
+Clazz.overrideMethod (c$, "finalizeCalc", 
+function () {
+this.alignViewport.setComplementConsensusHash (this.hconsensus);
+});
+Clazz.overrideMethod (c$, "deriveConsensus", 
+function (consensusAnnotation, consensusData) {
+jalview.analysis.AAFrequency.completeCdnaConsensus (consensusAnnotation, consensusData, this.alignViewport.isShowSequenceLogo (), this.getSequences ().length);
+}, "jalview.datamodel.AlignmentAnnotation,~A");
+});
index 3f62035..089a18e 100644 (file)
-Clazz.declarePackage ("jalview.workers");\r
-Clazz.load (["jalview.api.AlignCalcWorkerI", "jalview.workers.AlignCalcWorker"], "jalview.workers.ConsensusThread", ["jalview.analysis.AAFrequency"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.hconsensus = null;\r
-this.aseqs = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.workers, "ConsensusThread", jalview.workers.AlignCalcWorker, jalview.api.AlignCalcWorkerI);\r
-Clazz.overrideMethod (c$, "getNewWorker", \r
-function () {\r
-return  new jalview.workers.ConsensusThread (this.alignViewport, this.ap);\r
-});\r
-Clazz.overrideMethod (c$, "run1", \r
-function (state) {\r
-while (!Thread.interrupted ()) {\r
-if (this.alignViewport.isClosed ()) {\r
-this.abortAndDestroy ();\r
-return;\r
-}try {\r
-switch (state) {\r
-case 0:\r
-if (this.calcMan.isPending (this)) return;\r
-this.calcMan.notifyStart (this);\r
-var consensus = this.getConsensusAnnotation ();\r
-if (consensus == null || this.calcMan.isPending (this)) {\r
-this.calcMan.workerComplete (this);\r
-return;\r
-}state = 3;\r
-break;\r
-case 3:\r
-while (!this.calcMan.notifyWorking (this)) {\r
-if (this.ap != null) {\r
-this.ap.paintAlignment (false);\r
-}try {\r
-if (this.sleepAndReturn (200, state)) return;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, InterruptedException)) {\r
-state = 2;\r
-break;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}\r
-if (this.alignViewport.isClosed ()) {\r
-this.abortAndDestroy ();\r
-state = 2;\r
-break;\r
-}this.alignment = this.alignViewport.getAlignment ();\r
-this.aWidth = -1;\r
-if (this.alignment == null || (this.aWidth = this.alignment.getWidth ()) < 0) {\r
-state = 2;\r
-}this.eraseConsensus (this.aWidth);\r
-state = (this.initializeCalc () ? 4 : 2);\r
-break;\r
-case 4:\r
-this.iFirst = this.iLast;\r
-this.iLast = Math.min (this.iLast + this.nPer, this.aWidth);\r
-if (this.iLast == this.iFirst) {\r
-state = 2;\r
-} else {\r
-this.computeConsensus ();\r
-if (this.sleepAndReturn (0, state)) return;\r
-}break;\r
-case 2:\r
-this.finalizeCalc ();\r
-this.updateAlignment ();\r
-this.notifyDone ();\r
-return;\r
-}\r
-} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, OutOfMemoryError)) {\r
-var error = e$$;\r
-{\r
-this.calcMan.workerCannotRun (this);\r
-this.ap.raiseOOMWarning ("calculating consensus", error);\r
-}\r
-} else {\r
-var e = e$$;\r
-{\r
-System.out.println ("Error in ConsensusThread: " + e);\r
-e.printStackTrace ();\r
-this.calcMan.workerComplete (this);\r
-}\r
-}\r
-}\r
-}\r
-}, "~N");\r
-Clazz.defineMethod (c$, "initializeCalc", \r
-function () {\r
-this.iLast = 0;\r
-this.hconsensus =  new Array (this.aWidth);\r
-this.aseqs = this.getSequences ();\r
-return true;\r
-});\r
-Clazz.defineMethod (c$, "computeConsensus", \r
-function () {\r
-this.started = System.currentTimeMillis ();\r
-jalview.analysis.AAFrequency.calculate (this.aseqs, this.iFirst, this.iLast, this.hconsensus, true);\r
-if (System.currentTimeMillis () - this.started < 500) this.nPer *= 2;\r
-});\r
-Clazz.defineMethod (c$, "finalizeCalc", \r
-function () {\r
-this.alignViewport.setSequenceConsensusHash (this.hconsensus);\r
-});\r
-Clazz.defineMethod (c$, "updateAlignment", \r
-function () {\r
-this.setColourSchemeConsensus (this.hconsensus);\r
-this.updateResultAnnotation (true);\r
-});\r
-Clazz.defineMethod (c$, "eraseConsensus", \r
-function (aWidth) {\r
-var consensus = this.getConsensusAnnotation ();\r
-consensus.annotations =  new Array (aWidth);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getSequences", \r
-function () {\r
-return this.alignViewport.getAlignment ().getSequencesArray ();\r
-});\r
-Clazz.defineMethod (c$, "setColourSchemeConsensus", \r
-function (hconsensus) {\r
-var globalColourScheme = this.alignViewport.getGlobalColourScheme ();\r
-if (globalColourScheme != null) {\r
-globalColourScheme.setConsensus (hconsensus);\r
-}}, "~A");\r
-Clazz.defineMethod (c$, "getConsensusAnnotation", \r
-function () {\r
-return this.alignViewport.getAlignmentConsensusAnnotation ();\r
-});\r
-Clazz.overrideMethod (c$, "updateAnnotation", \r
-function () {\r
-this.updateResultAnnotation (false);\r
-});\r
-Clazz.defineMethod (c$, "updateResultAnnotation", \r
-function (immediate) {\r
-var consensus = this.getConsensusAnnotation ();\r
-var hconsensus = this.getViewportConsensus ();\r
-if (immediate || !this.calcMan.isWorking (this) && consensus != null && hconsensus != null) {\r
-this.deriveConsensus (consensus, hconsensus);\r
-}}, "~B");\r
-Clazz.defineMethod (c$, "deriveConsensus", \r
-function (consensusAnnotation, consensusData) {\r
-var nseq = this.getSequences ().length;\r
-jalview.analysis.AAFrequency.completeConsensus (consensusAnnotation, consensusData, 0, consensusData.length, this.alignViewport.isIgnoreGapsConsensus (), this.alignViewport.isShowSequenceLogo (), nseq);\r
-}, "jalview.datamodel.AlignmentAnnotation,~A");\r
-Clazz.defineMethod (c$, "getViewportConsensus", \r
-function () {\r
-return this.alignViewport.getSequenceConsensusHash ();\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.workers");
+Clazz.load (["jalview.api.AlignCalcWorkerI", "jalview.workers.AlignCalcWorker"], "jalview.workers.ConsensusThread", ["jalview.analysis.AAFrequency"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.hconsensus = null;
+this.aseqs = null;
+Clazz.instantialize (this, arguments);
+}, jalview.workers, "ConsensusThread", jalview.workers.AlignCalcWorker, jalview.api.AlignCalcWorkerI);
+Clazz.overrideMethod (c$, "getNewWorker", 
+function () {
+return  new jalview.workers.ConsensusThread (this.alignViewport, this.ap);
+});
+Clazz.overrideMethod (c$, "run1", 
+function (state) {
+while (!Thread.interrupted ()) {
+if (this.alignViewport.isClosed ()) {
+this.abortAndDestroy ();
+return;
+}try {
+switch (state) {
+case 0:
+if (this.calcMan.isPending (this)) return;
+this.calcMan.notifyStart (this);
+var consensus = this.getConsensusAnnotation ();
+if (consensus == null || this.calcMan.isPending (this)) {
+this.calcMan.workerComplete (this);
+return;
+}state = 3;
+break;
+case 3:
+while (!this.calcMan.notifyWorking (this)) {
+if (this.ap != null) {
+this.ap.paintAlignment (false);
+}try {
+if (this.sleepAndReturn (200, state)) return;
+} catch (e) {
+if (Clazz.exceptionOf (e, InterruptedException)) {
+state = 2;
+break;
+} else {
+throw e;
+}
+}
+}
+if (this.alignViewport.isClosed ()) {
+this.abortAndDestroy ();
+state = 2;
+break;
+}this.alignment = this.alignViewport.getAlignment ();
+this.aWidth = -1;
+if (this.alignment == null || (this.aWidth = this.alignment.getWidth ()) < 0) {
+state = 2;
+}this.eraseConsensus (this.aWidth);
+state = (this.initializeCalc () ? 4 : 2);
+break;
+case 4:
+this.iFirst = this.iLast;
+this.iLast = Math.min (this.iLast + this.nPer, this.aWidth);
+if (this.iLast == this.iFirst) {
+state = 2;
+} else {
+this.computeConsensus ();
+if (this.sleepAndReturn (0, state)) return;
+}break;
+case 2:
+this.finalizeCalc ();
+this.updateAlignment ();
+this.notifyDone ();
+return;
+}
+} catch (e$$) {
+if (Clazz.exceptionOf (e$$, OutOfMemoryError)) {
+var error = e$$;
+{
+this.calcMan.workerCannotRun (this);
+this.ap.raiseOOMWarning ("calculating consensus", error);
+}
+} else {
+var e = e$$;
+{
+System.out.println ("Error in ConsensusThread: " + e);
+e.printStackTrace ();
+this.calcMan.workerComplete (this);
+}
+}
+}
+}
+}, "~N");
+Clazz.defineMethod (c$, "initializeCalc", 
+function () {
+this.iLast = 0;
+this.hconsensus =  new Array (this.aWidth);
+this.aseqs = this.getSequences ();
+return true;
+});
+Clazz.defineMethod (c$, "computeConsensus", 
+function () {
+this.started = System.currentTimeMillis ();
+jalview.analysis.AAFrequency.calculate (this.aseqs, this.iFirst, this.iLast, this.hconsensus, true);
+if (System.currentTimeMillis () - this.started < 500) this.nPer *= 2;
+});
+Clazz.defineMethod (c$, "finalizeCalc", 
+function () {
+this.alignViewport.setSequenceConsensusHash (this.hconsensus);
+});
+Clazz.defineMethod (c$, "updateAlignment", 
+function () {
+this.setColourSchemeConsensus (this.hconsensus);
+this.updateResultAnnotation (true);
+});
+Clazz.defineMethod (c$, "eraseConsensus", 
+function (aWidth) {
+var consensus = this.getConsensusAnnotation ();
+consensus.annotations =  new Array (aWidth);
+}, "~N");
+Clazz.defineMethod (c$, "getSequences", 
+function () {
+return this.alignViewport.getAlignment ().getSequencesArray ();
+});
+Clazz.defineMethod (c$, "setColourSchemeConsensus", 
+function (hconsensus) {
+var globalColourScheme = this.alignViewport.getGlobalColourScheme ();
+if (globalColourScheme != null) {
+globalColourScheme.setConsensus (hconsensus);
+}}, "~A");
+Clazz.defineMethod (c$, "getConsensusAnnotation", 
+function () {
+return this.alignViewport.getAlignmentConsensusAnnotation ();
+});
+Clazz.overrideMethod (c$, "updateAnnotation", 
+function () {
+this.updateResultAnnotation (false);
+});
+Clazz.defineMethod (c$, "updateResultAnnotation", 
+function (immediate) {
+var consensus = this.getConsensusAnnotation ();
+var hconsensus = this.getViewportConsensus ();
+if (immediate || !this.calcMan.isWorking (this) && consensus != null && hconsensus != null) {
+this.deriveConsensus (consensus, hconsensus);
+}}, "~B");
+Clazz.defineMethod (c$, "deriveConsensus", 
+function (consensusAnnotation, consensusData) {
+var nseq = this.getSequences ().length;
+jalview.analysis.AAFrequency.completeConsensus (consensusAnnotation, consensusData, 0, consensusData.length, this.alignViewport.isIgnoreGapsConsensus (), this.alignViewport.isShowSequenceLogo (), nseq);
+}, "jalview.datamodel.AlignmentAnnotation,~A");
+Clazz.defineMethod (c$, "getViewportConsensus", 
+function () {
+return this.alignViewport.getSequenceConsensusHash ();
+});
+});
index dc839a9..d790876 100644 (file)
-Clazz.declarePackage ("jalview.workers");\r
-Clazz.load (["jalview.api.AlignCalcWorkerI", "jalview.workers.AlignCalcWorker"], "jalview.workers.ConservationThread", ["jalview.analysis.Conservation", "jalview.schemes.ResidueProperties", "java.util.ArrayList"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.ConsPercGaps = 25;\r
-this.cons = null;\r
-this.conservation = null;\r
-this.quality = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.workers, "ConservationThread", jalview.workers.AlignCalcWorker, jalview.api.AlignCalcWorkerI);\r
-Clazz.overrideMethod (c$, "getNewWorker", \r
-function () {\r
-return  new jalview.workers.ConservationThread (this.alignViewport, this.ap);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (alignViewport, alignPanel) {\r
-Clazz.superConstructor (this, jalview.workers.ConservationThread, [alignViewport, alignPanel]);\r
-this.ConsPercGaps = alignViewport.getConsPercGaps ();\r
-}, "jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");\r
-Clazz.overrideMethod (c$, "run1", \r
-function (state) {\r
-while (!Thread.interrupted ()) {\r
-try {\r
-switch (state) {\r
-case 0:\r
-if (this.calcMan.isPending (this)) return;\r
-this.calcMan.notifyStart (this);\r
-state = 3;\r
-break;\r
-case 3:\r
-while (!this.calcMan.notifyWorking (this)) {\r
-if (this.ap != null) {\r
-this.ap.paintAlignment (false);\r
-}try {\r
-if (this.sleepAndReturn (200, state)) return;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, InterruptedException)) {\r
-state = 2;\r
-break;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}\r
-if (this.alignViewport.isClosed ()) {\r
-this.abortAndDestroy ();\r
-state = 2;\r
-break;\r
-}var ourAnnot =  new java.util.ArrayList ();\r
-this.alignment = this.alignViewport.getAlignment ();\r
-this.conservation = this.alignViewport.getAlignmentConservationAnnotation ();\r
-this.quality = this.alignViewport.getAlignmentQualityAnnot ();\r
-ourAnnot.add (this.conservation);\r
-ourAnnot.add (this.quality);\r
-this.ourAnnots = ourAnnot;\r
-this.ConsPercGaps = this.alignViewport.getConsPercGaps ();\r
-if (this.alignment == null || (this.aWidth = this.alignment.getWidth ()) < 0) {\r
-this.calcMan.workerComplete (this);\r
-return;\r
-}state = 4;\r
-break;\r
-case 4:\r
-this.iFirst = this.iLast;\r
-this.nPer = this.aWidth + 1;\r
-this.iLast = Math.min (this.iLast + this.nPer, this.aWidth);\r
-if (this.iLast == this.iFirst) {\r
-state = 2;\r
-} else {\r
-this.computeConsensus ();\r
-if (this.sleepAndReturn (0, state)) return;\r
-}break;\r
-case 2:\r
-this.updateResultAnnotation (true);\r
-this.notifyDone ();\r
-return;\r
-}\r
-} catch (e$$) {\r
-if (Clazz.exceptionOf (e$$, OutOfMemoryError)) {\r
-var error = e$$;\r
-{\r
-this.calcMan.workerCannotRun (this);\r
-this.ap.raiseOOMWarning ("calculating conservation", error);\r
-}\r
-} else {\r
-var e = e$$;\r
-{\r
-System.out.println ("Error in ConsensusThread: " + e);\r
-e.printStackTrace ();\r
-this.calcMan.workerComplete (this);\r
-}\r
-}\r
-}\r
-}\r
-}, "~N");\r
-Clazz.defineMethod (c$, "computeConsensus", \r
-($fz = function () {\r
-this.cons = jalview.analysis.Conservation.calculateConservation ("All", jalview.schemes.ResidueProperties.propHash, 3, this.alignment.getSequences (), 0, this.aWidth - 1, false, this.ConsPercGaps, this.quality != null);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "updateResultAnnotation", \r
-($fz = function (b) {\r
-if (b || !this.calcMan.isWorking (this) && this.cons != null && this.conservation != null && this.quality != null) {\r
-this.alignViewport.setConservation (this.cons);\r
-this.cons.completeAnnotations (this.conservation, this.quality, 0, this.aWidth);\r
-}}, $fz.isPrivate = true, $fz), "~B");\r
-Clazz.overrideMethod (c$, "updateAnnotation", \r
-function () {\r
-this.updateResultAnnotation (false);\r
-});\r
-});\r
+Clazz.declarePackage ("jalview.workers");
+Clazz.load (["jalview.api.AlignCalcWorkerI", "jalview.workers.AlignCalcWorker"], "jalview.workers.ConservationThread", ["jalview.analysis.Conservation", "jalview.schemes.ResidueProperties", "java.util.ArrayList"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.ConsPercGaps = 25;
+this.cons = null;
+this.conservation = null;
+this.quality = null;
+Clazz.instantialize (this, arguments);
+}, jalview.workers, "ConservationThread", jalview.workers.AlignCalcWorker, jalview.api.AlignCalcWorkerI);
+Clazz.overrideMethod (c$, "getNewWorker", 
+function () {
+return  new jalview.workers.ConservationThread (this.alignViewport, this.ap);
+});
+Clazz.makeConstructor (c$, 
+function (alignViewport, alignPanel) {
+Clazz.superConstructor (this, jalview.workers.ConservationThread, [alignViewport, alignPanel]);
+this.ConsPercGaps = alignViewport.getConsPercGaps ();
+}, "jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");
+Clazz.overrideMethod (c$, "run1", 
+function (state) {
+while (!Thread.interrupted ()) {
+try {
+switch (state) {
+case 0:
+if (this.calcMan.isPending (this)) return;
+this.calcMan.notifyStart (this);
+state = 3;
+break;
+case 3:
+while (!this.calcMan.notifyWorking (this)) {
+if (this.ap != null) {
+this.ap.paintAlignment (false);
+}try {
+if (this.sleepAndReturn (200, state)) return;
+} catch (e) {
+if (Clazz.exceptionOf (e, InterruptedException)) {
+state = 2;
+break;
+} else {
+throw e;
+}
+}
+}
+if (this.alignViewport.isClosed ()) {
+this.abortAndDestroy ();
+state = 2;
+break;
+}var ourAnnot =  new java.util.ArrayList ();
+this.alignment = this.alignViewport.getAlignment ();
+this.conservation = this.alignViewport.getAlignmentConservationAnnotation ();
+this.quality = this.alignViewport.getAlignmentQualityAnnot ();
+ourAnnot.add (this.conservation);
+ourAnnot.add (this.quality);
+this.ourAnnots = ourAnnot;
+this.ConsPercGaps = this.alignViewport.getConsPercGaps ();
+if (this.alignment == null || (this.aWidth = this.alignment.getWidth ()) < 0) {
+this.calcMan.workerComplete (this);
+return;
+}state = 4;
+break;
+case 4:
+this.iFirst = this.iLast;
+this.nPer = this.aWidth + 1;
+this.iLast = Math.min (this.iLast + this.nPer, this.aWidth);
+if (this.iLast == this.iFirst) {
+state = 2;
+} else {
+this.computeConsensus ();
+if (this.sleepAndReturn (0, state)) return;
+}break;
+case 2:
+this.updateResultAnnotation (true);
+this.notifyDone ();
+return;
+}
+} catch (e$$) {
+if (Clazz.exceptionOf (e$$, OutOfMemoryError)) {
+var error = e$$;
+{
+this.calcMan.workerCannotRun (this);
+this.ap.raiseOOMWarning ("calculating conservation", error);
+}
+} else {
+var e = e$$;
+{
+System.out.println ("Error in ConsensusThread: " + e);
+e.printStackTrace ();
+this.calcMan.workerComplete (this);
+}
+}
+}
+}
+}, "~N");
+Clazz.defineMethod (c$, "computeConsensus", 
+($fz = function () {
+this.cons = jalview.analysis.Conservation.calculateConservation ("All", jalview.schemes.ResidueProperties.propHash, 3, this.alignment.getSequences (), 0, this.aWidth - 1, false, this.ConsPercGaps, this.quality != null);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "updateResultAnnotation", 
+($fz = function (b) {
+if (b || !this.calcMan.isWorking (this) && this.cons != null && this.conservation != null && this.quality != null) {
+this.alignViewport.setConservation (this.cons);
+this.cons.completeAnnotations (this.conservation, this.quality, 0, this.aWidth);
+}}, $fz.isPrivate = true, $fz), "~B");
+Clazz.overrideMethod (c$, "updateAnnotation", 
+function () {
+this.updateResultAnnotation (false);
+});
+});
index 48b83a5..419bb43 100644 (file)
Binary files a/bin/jalview/workers/StrucConsensusThread.class and b/bin/jalview/workers/StrucConsensusThread.class differ
index 4010f84..dbe6d50 100644 (file)
@@ -1,95 +1,95 @@
-Clazz.declarePackage ("jalview.workers");\r
-Clazz.load (["jalview.api.AlignCalcWorkerI", "jalview.workers.AlignCalcWorker"], "jalview.workers.StrucConsensusThread", ["jalview.analysis.StructureFrequency", "java.lang.Thread"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.strucConsensus = null;\r
-this.hStrucConsensus = null;\r
-this.nseq = -1;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.workers, "StrucConsensusThread", jalview.workers.AlignCalcWorker, jalview.api.AlignCalcWorkerI);\r
-Clazz.overrideMethod (c$, "getNewWorker", \r
-function () {\r
-return  new jalview.workers.StrucConsensusThread (this.alignViewport, this.ap);\r
-});\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-try {\r
-if (this.calcMan.isPending (this)) {\r
-return;\r
-}this.calcMan.notifyStart (this);\r
-while (!this.calcMan.notifyWorking (this)) {\r
-try {\r
-if (this.ap != null) {\r
-}Thread.sleep (200);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}\r
-if (this.alignViewport.isClosed ()) {\r
-this.abortAndDestroy ();\r
-return;\r
-}var alignment = this.alignViewport.getAlignment ();\r
-var aWidth = -1;\r
-if (alignment == null || (aWidth = alignment.getWidth ()) < 0) {\r
-this.calcMan.workerComplete (this);\r
-return;\r
-}this.strucConsensus = this.alignViewport.getAlignmentStrucConsensusAnnotation ();\r
-this.hStrucConsensus = this.alignViewport.getRnaStructureConsensusHash ();\r
-this.strucConsensus.annotations = null;\r
-this.strucConsensus.annotations =  new Array (aWidth);\r
-this.hStrucConsensus =  new Array (aWidth);\r
-var aa = this.alignViewport.getAlignment ().getAlignmentAnnotation ();\r
-var rnaStruc = null;\r
-for (var i = 0; i < aa.length; i++) {\r
-if (aa[i].getRNAStruc () != null && aa[i].isValidStruc ()) {\r
-rnaStruc = aa[i];\r
-break;\r
-}}\r
-if (rnaStruc == null || !rnaStruc.isValidStruc ()) {\r
-this.calcMan.workerComplete (this);\r
-return;\r
-}try {\r
-var arr = alignment.getSequencesArray ();\r
-this.nseq = arr.length;\r
-jalview.analysis.StructureFrequency.calculate (arr, 0, alignment.getWidth (), this.hStrucConsensus, true, rnaStruc);\r
-} catch (x) {\r
-if (Clazz.exceptionOf (x, ArrayIndexOutOfBoundsException)) {\r
-this.calcMan.workerComplete (this);\r
-return;\r
-} else {\r
-throw x;\r
-}\r
-}\r
-this.alignViewport.setRnaStructureConsensusHash (this.hStrucConsensus);\r
-this.updateResultAnnotation (true);\r
-if (this.alignViewport.getGlobalColourScheme () != null) {\r
-this.alignViewport.getGlobalColourScheme ().setConsensus (this.hStrucConsensus);\r
-}} catch (error) {\r
-if (Clazz.exceptionOf (error, OutOfMemoryError)) {\r
-this.calcMan.workerCannotRun (this);\r
-this.ap.raiseOOMWarning ("calculating RNA structure consensus", error);\r
-} else {\r
-throw error;\r
-}\r
-} finally {\r
-this.calcMan.workerComplete (this);\r
-if (this.ap != null) {\r
-this.ap.paintAlignment (true);\r
-}}\r
-});\r
-Clazz.overrideMethod (c$, "updateAnnotation", \r
-function () {\r
-this.updateResultAnnotation (false);\r
-});\r
-Clazz.defineMethod (c$, "updateResultAnnotation", \r
-function (immediate) {\r
-if (immediate || !this.calcMan.isWorking (this) && this.strucConsensus != null && this.hStrucConsensus != null) {\r
-jalview.analysis.StructureFrequency.completeConsensus (this.strucConsensus, this.hStrucConsensus, 0, this.hStrucConsensus.length, this.alignViewport.isIgnoreGapsConsensus (), this.alignViewport.isShowSequenceLogo (), this.nseq);\r
-}}, "~B");\r
-Clazz.overrideMethod (c$, "run1", \r
-function (state) {\r
-}, "~N");\r
-});\r
+Clazz.declarePackage ("jalview.workers");
+Clazz.load (["jalview.api.AlignCalcWorkerI", "jalview.workers.AlignCalcWorker"], "jalview.workers.StrucConsensusThread", ["jalview.analysis.StructureFrequency", "java.lang.Thread"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.strucConsensus = null;
+this.hStrucConsensus = null;
+this.nseq = -1;
+Clazz.instantialize (this, arguments);
+}, jalview.workers, "StrucConsensusThread", jalview.workers.AlignCalcWorker, jalview.api.AlignCalcWorkerI);
+Clazz.overrideMethod (c$, "getNewWorker", 
+function () {
+return  new jalview.workers.StrucConsensusThread (this.alignViewport, this.ap);
+});
+Clazz.overrideMethod (c$, "run", 
+function () {
+try {
+if (this.calcMan.isPending (this)) {
+return;
+}this.calcMan.notifyStart (this);
+while (!this.calcMan.notifyWorking (this)) {
+try {
+if (this.ap != null) {
+}Thread.sleep (200);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}
+if (this.alignViewport.isClosed ()) {
+this.abortAndDestroy ();
+return;
+}var alignment = this.alignViewport.getAlignment ();
+var aWidth = -1;
+if (alignment == null || (aWidth = alignment.getWidth ()) < 0) {
+this.calcMan.workerComplete (this);
+return;
+}this.strucConsensus = this.alignViewport.getAlignmentStrucConsensusAnnotation ();
+this.hStrucConsensus = this.alignViewport.getRnaStructureConsensusHash ();
+this.strucConsensus.annotations = null;
+this.strucConsensus.annotations =  new Array (aWidth);
+this.hStrucConsensus =  new Array (aWidth);
+var aa = this.alignViewport.getAlignment ().getAlignmentAnnotation ();
+var rnaStruc = null;
+for (var i = 0; i < aa.length; i++) {
+if (aa[i].getRNAStruc () != null && aa[i].isValidStruc ()) {
+rnaStruc = aa[i];
+break;
+}}
+if (rnaStruc == null || !rnaStruc.isValidStruc ()) {
+this.calcMan.workerComplete (this);
+return;
+}try {
+var arr = alignment.getSequencesArray ();
+this.nseq = arr.length;
+jalview.analysis.StructureFrequency.calculate (arr, 0, alignment.getWidth (), this.hStrucConsensus, true, rnaStruc);
+} catch (x) {
+if (Clazz.exceptionOf (x, ArrayIndexOutOfBoundsException)) {
+this.calcMan.workerComplete (this);
+return;
+} else {
+throw x;
+}
+}
+this.alignViewport.setRnaStructureConsensusHash (this.hStrucConsensus);
+this.updateResultAnnotation (true);
+if (this.alignViewport.getGlobalColourScheme () != null) {
+this.alignViewport.getGlobalColourScheme ().setConsensus (this.hStrucConsensus);
+}} catch (error) {
+if (Clazz.exceptionOf (error, OutOfMemoryError)) {
+this.calcMan.workerCannotRun (this);
+this.ap.raiseOOMWarning ("calculating RNA structure consensus", error);
+} else {
+throw error;
+}
+} finally {
+this.calcMan.workerComplete (this);
+if (this.ap != null) {
+this.ap.paintAlignment (true);
+}}
+});
+Clazz.overrideMethod (c$, "updateAnnotation", 
+function () {
+this.updateResultAnnotation (false);
+});
+Clazz.defineMethod (c$, "updateResultAnnotation", 
+function (immediate) {
+if (immediate || !this.calcMan.isWorking (this) && this.strucConsensus != null && this.hStrucConsensus != null) {
+jalview.analysis.StructureFrequency.completeConsensus (this.strucConsensus, this.hStrucConsensus, 0, this.hStrucConsensus.length, this.alignViewport.isIgnoreGapsConsensus (), this.alignViewport.isShowSequenceLogo (), this.nseq);
+}}, "~B");
+Clazz.overrideMethod (c$, "run1", 
+function (state) {
+}, "~N");
+});
diff --git a/bin/java.policy.applet b/bin/java.policy.applet
deleted file mode 100644 (file)
index 35527af..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/* AUTOMATICALLY GENERATED ON Tue Apr 16 17:20:59 EDT 2002*/\r
-/* DO NOT EDIT */\r
-\r
-grant {\r
-  permission java.security.AllPermission;\r
-};\r
-\r
index 5b4de23..bd94c0d 100644 (file)
@@ -1 +1 @@
-Clazz.declarePackage ("javajs");\r
+Clazz.declarePackage ("javajs");
index 5b4de23..bd94c0d 100644 (file)
@@ -1 +1 @@
-Clazz.declarePackage ("javajs");\r
+Clazz.declarePackage ("javajs");
index c97ddaf..1fb861c 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "BytePoster");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "BytePoster");
index b5d1d99..b6e97f1 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "EigenInterface");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "EigenInterface");
index c5a4fa9..a80b250 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "EventManager");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "EventManager");
index a809538..f458d89 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "FontManager");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "FontManager");
index 0da5b99..8a2bbf9 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "GenericBinaryDocument");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "GenericBinaryDocument");
index 2696094..6127596 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("javajs.api");\r
-c$ = Clazz.declareInterface (javajs.api, "GenericCifDataParser");\r
-Clazz.defineStatics (c$,\r
-"NONE", -1);\r
+Clazz.declarePackage ("javajs.api");
+c$ = Clazz.declareInterface (javajs.api, "GenericCifDataParser");
+Clazz.defineStatics (c$,
+"NONE", -1);
index c5d0d77..ed0a0ee 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "GenericColor");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "GenericColor");
index 9a09815..deae68e 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "GenericFileInterface");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "GenericFileInterface");
index 16c01cb..fa18c18 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "GenericImageDialog");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "GenericImageDialog");
index f6a2e95..a7313d0 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "GenericImageEncoder");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "GenericImageEncoder");
index f4d2aad..787a669 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "GenericLineReader");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "GenericLineReader");
index d35fda0..8636834 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "GenericMenuInterface");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "GenericMenuInterface");
index d40a3a0..dad99c3 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "GenericMouseInterface");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "GenericMouseInterface");
index 00504e7..ae3869f 100644 (file)
@@ -1,11 +1,11 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.load (["javajs.api.FontManager"], "javajs.api.GenericPlatform", null, function () {\r
-c$ = Clazz.declareInterface (javajs.api, "GenericPlatform", javajs.api.FontManager);\r
-Clazz.defineStatics (c$,\r
-"CURSOR_DEFAULT", 0,\r
-"CURSOR_CROSSHAIR", 1,\r
-"CURSOR_WAIT", 3,\r
-"CURSOR_ZOOM", 8,\r
-"CURSOR_HAND", 12,\r
-"CURSOR_MOVE", 13);\r
-});\r
+Clazz.declarePackage ("javajs.api");
+Clazz.load (["javajs.api.FontManager"], "javajs.api.GenericPlatform", null, function () {
+c$ = Clazz.declareInterface (javajs.api, "GenericPlatform", javajs.api.FontManager);
+Clazz.defineStatics (c$,
+"CURSOR_DEFAULT", 0,
+"CURSOR_CROSSHAIR", 1,
+"CURSOR_WAIT", 3,
+"CURSOR_ZOOM", 8,
+"CURSOR_HAND", 12,
+"CURSOR_MOVE", 13);
+});
index 9e55715..d74cfea 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.load (["java.util.zip.ZipInputStream", "javajs.api.ZInputStream"], "javajs.api.GenericZipInputStream", null, function () {\r
-c$ = Clazz.declareType (javajs.api, "GenericZipInputStream", java.util.zip.ZipInputStream, javajs.api.ZInputStream);\r
-});\r
+Clazz.declarePackage ("javajs.api");
+Clazz.load (["java.util.zip.ZipInputStream", "javajs.api.ZInputStream"], "javajs.api.GenericZipInputStream", null, function () {
+c$ = Clazz.declareType (javajs.api, "GenericZipInputStream", java.util.zip.ZipInputStream, javajs.api.ZInputStream);
+});
index 00e6edf..902f592 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "GenericZipTools");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "GenericZipTools");
index b305eae..97473c7 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "HTMLElement");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "HTMLElement");
index 47438ca..538a5c1 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "HTMLWindowEvent");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "HTMLWindowEvent");
index 024bf74..8887be8 100644 (file)
@@ -1,16 +1,16 @@
-Clazz.declarePackage ("javajs.api");\r
-c$ = Clazz.declareType (javajs.api, "Interface");\r
-c$.getInterface = Clazz.defineMethod (c$, "getInterface", \r
-function (name) {\r
-try {\r
-var x = Class.forName (name);\r
-return (x == null ? null : x.newInstance ());\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println ("Interface.java Error creating instance for " + name + ": \n" + e);\r
-return null;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "~S");\r
+Clazz.declarePackage ("javajs.api");
+c$ = Clazz.declareType (javajs.api, "Interface");
+c$.getInterface = Clazz.defineMethod (c$, "getInterface", 
+function (name) {
+try {
+var x = Class.forName (name);
+return (x == null ? null : x.newInstance ());
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println ("Interface.java Error creating instance for " + name + ": \n" + e);
+return null;
+} else {
+throw e;
+}
+}
+}, "~S");
index 1086b93..ce34ecc 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "JSInterface");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "JSInterface");
index 9f5778f..e94f4b8 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "JSONEncodable");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "JSONEncodable");
index a499b01..0f1e805 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "JmolObjectInterface");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "JmolObjectInterface");
index 8cad055..32ed2dc 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "PlatformViewer");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "PlatformViewer");
index 0edd956..01512cd 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "SC");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "SC");
index 75f1f05..277bc34 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "SwingController");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "SwingController");
index abc5bb9..7a79598 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.api");\r
-Clazz.declareInterface (javajs.api, "ZInputStream");\r
+Clazz.declarePackage ("javajs.api");
+Clazz.declareInterface (javajs.api, "ZInputStream");
index 875b476..1686394 100644 (file)
@@ -1,10 +1,10 @@
-Clazz.declarePackage ("javajs.awt");\r
-Clazz.load (["javajs.awt.LayoutManager"], "javajs.awt.BorderLayout", null, function () {\r
-c$ = Clazz.declareType (javajs.awt, "BorderLayout", javajs.awt.LayoutManager);\r
-Clazz.defineStatics (c$,\r
-"CENTER", "Center",\r
-"NORTH", "North",\r
-"SOUTH", "South",\r
-"EAST", "East",\r
-"WEST", "West");\r
-});\r
+Clazz.declarePackage ("javajs.awt");
+Clazz.load (["javajs.awt.LayoutManager"], "javajs.awt.BorderLayout", null, function () {
+c$ = Clazz.declareType (javajs.awt, "BorderLayout", javajs.awt.LayoutManager);
+Clazz.defineStatics (c$,
+"CENTER", "Center",
+"NORTH", "North",
+"SOUTH", "South",
+"EAST", "East",
+"WEST", "West");
+});
index 1f168d2..725aa31 100644 (file)
@@ -1,43 +1,43 @@
-Clazz.declarePackage ("javajs.awt");\r
-Clazz.load (["javajs.api.GenericColor"], "javajs.awt.Color", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.argb = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.awt, "Color", null, javajs.api.GenericColor);\r
-Clazz.overrideMethod (c$, "getRGB", \r
-function () {\r
-return this.argb & 0x00FFFFFF;\r
-});\r
-Clazz.overrideMethod (c$, "getOpacity255", \r
-function () {\r
-return ((this.argb >> 24) & 0xFF);\r
-});\r
-Clazz.overrideMethod (c$, "setOpacity255", \r
-function (a) {\r
-this.argb = this.argb & 0xFFFFFF | ((a & 0xFF) << 24);\r
-}, "~N");\r
-c$.get1 = Clazz.defineMethod (c$, "get1", \r
-function (rgb) {\r
-var c =  new javajs.awt.Color ();\r
-c.argb = rgb | 0xFF000000;\r
-return c;\r
-}, "~N");\r
-c$.get3 = Clazz.defineMethod (c$, "get3", \r
-function (r, g, b) {\r
-return  new javajs.awt.Color ().set4 (r, g, b, 0xFF);\r
-}, "~N,~N,~N");\r
-c$.get4 = Clazz.defineMethod (c$, "get4", \r
-function (r, g, b, a) {\r
-return  new javajs.awt.Color ().set4 (r, g, b, a);\r
-}, "~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "set4", \r
-($fz = function (r, g, b, a) {\r
-this.argb = ((a << 24) | (r << 16) | (g << 8) | b) & 0xFFFFFFFF;\r
-return this;\r
-}, $fz.isPrivate = true, $fz), "~N,~N,~N,~N");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var s = ("00000000" + Integer.toHexString (this.argb));\r
-return "[0x" + s.substring (s.length - 8, s.length) + "]";\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.awt");
+Clazz.load (["javajs.api.GenericColor"], "javajs.awt.Color", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.argb = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.awt, "Color", null, javajs.api.GenericColor);
+Clazz.overrideMethod (c$, "getRGB", 
+function () {
+return this.argb & 0x00FFFFFF;
+});
+Clazz.overrideMethod (c$, "getOpacity255", 
+function () {
+return ((this.argb >> 24) & 0xFF);
+});
+Clazz.overrideMethod (c$, "setOpacity255", 
+function (a) {
+this.argb = this.argb & 0xFFFFFF | ((a & 0xFF) << 24);
+}, "~N");
+c$.get1 = Clazz.defineMethod (c$, "get1", 
+function (rgb) {
+var c =  new javajs.awt.Color ();
+c.argb = rgb | 0xFF000000;
+return c;
+}, "~N");
+c$.get3 = Clazz.defineMethod (c$, "get3", 
+function (r, g, b) {
+return  new javajs.awt.Color ().set4 (r, g, b, 0xFF);
+}, "~N,~N,~N");
+c$.get4 = Clazz.defineMethod (c$, "get4", 
+function (r, g, b, a) {
+return  new javajs.awt.Color ().set4 (r, g, b, a);
+}, "~N,~N,~N,~N");
+Clazz.defineMethod (c$, "set4", 
+($fz = function (r, g, b, a) {
+this.argb = ((a << 24) | (r << 16) | (g << 8) | b) & 0xFFFFFFFF;
+return this;
+}, $fz.isPrivate = true, $fz), "~N,~N,~N,~N");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var s = ("00000000" + Integer.toHexString (this.argb));
+return "[0x" + s.substring (s.length - 8, s.length) + "]";
+});
+});
index f17a3eb..20f1f1a 100644 (file)
-Clazz.declarePackage ("javajs.awt");\r
-Clazz.load (null, "javajs.awt.Component", ["javajs.util.CU"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.visible = false;\r
-this.enabled = true;\r
-this.text = null;\r
-this.name = null;\r
-this.width = 0;\r
-this.height = 0;\r
-this.id = null;\r
-this.parent = null;\r
-this.mouseListener = null;\r
-this.bgcolor = null;\r
-this.minWidth = 30;\r
-this.minHeight = 30;\r
-this.renderWidth = 0;\r
-this.renderHeight = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.awt, "Component");\r
-Clazz.defineMethod (c$, "setParent", \r
-function (p) {\r
-this.parent = p;\r
-}, "~O");\r
-Clazz.makeConstructor (c$, \r
-function (type) {\r
-this.id = javajs.awt.Component.newID (type);\r
-if (type == null) return;\r
-{\r
-SwingController.register(this, type);\r
-}}, "~S");\r
-c$.newID = Clazz.defineMethod (c$, "newID", \r
-function (type) {\r
-return type + ("" + Math.random ()).substring (3, 10);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setBackground", \r
-function (color) {\r
-this.bgcolor = color;\r
-}, "javajs.api.GenericColor");\r
-Clazz.defineMethod (c$, "setText", \r
-function (text) {\r
-this.text = text;\r
-{\r
-SwingController.setText(this);\r
-}}, "~S");\r
-Clazz.defineMethod (c$, "setName", \r
-function (name) {\r
-this.name = name;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getName", \r
-function () {\r
-return this.name;\r
-});\r
-Clazz.defineMethod (c$, "getParent", \r
-function () {\r
-return this.parent;\r
-});\r
-Clazz.defineMethod (c$, "setPreferredSize", \r
-function (dimension) {\r
-this.width = dimension.width;\r
-this.height = dimension.height;\r
-}, "javajs.awt.Dimension");\r
-Clazz.defineMethod (c$, "addMouseListener", \r
-function (listener) {\r
-this.mouseListener = listener;\r
-}, "~O");\r
-Clazz.defineMethod (c$, "getText", \r
-function () {\r
-return this.text;\r
-});\r
-Clazz.defineMethod (c$, "isEnabled", \r
-function () {\r
-return this.enabled;\r
-});\r
-Clazz.defineMethod (c$, "setEnabled", \r
-function (enabled) {\r
-this.enabled = enabled;\r
-{\r
-SwingController.setEnabled(this);\r
-}}, "~B");\r
-Clazz.defineMethod (c$, "isVisible", \r
-function () {\r
-return this.visible;\r
-});\r
-Clazz.defineMethod (c$, "setVisible", \r
-function (visible) {\r
-this.visible = visible;\r
-{\r
-SwingController.setVisible(this);\r
-}}, "~B");\r
-Clazz.defineMethod (c$, "getHeight", \r
-function () {\r
-return this.height;\r
-});\r
-Clazz.defineMethod (c$, "getWidth", \r
-function () {\r
-return this.width;\r
-});\r
-Clazz.defineMethod (c$, "setMinimumSize", \r
-function (d) {\r
-this.minWidth = d.width;\r
-this.minHeight = d.height;\r
-}, "javajs.awt.Dimension");\r
-Clazz.defineMethod (c$, "getSubcomponentWidth", \r
-function () {\r
-return this.width;\r
-});\r
-Clazz.defineMethod (c$, "getSubcomponentHeight", \r
-function () {\r
-return this.height;\r
-});\r
-Clazz.defineMethod (c$, "getCSSstyle", \r
-function (defaultPercentW, defaultPercentH) {\r
-var width = (this.renderWidth > 0 ? this.renderWidth : this.getSubcomponentWidth ());\r
-var height = (this.renderHeight > 0 ? this.renderHeight : this.getSubcomponentHeight ());\r
-return (width > 0 ? "width:" + width + "px;" : defaultPercentW > 0 ? "width:" + defaultPercentW + "%;" : "") + (height > 0 ? "height:" + height + "px;" : defaultPercentH > 0 ? "height:" + defaultPercentH + "%;" : "") + (this.bgcolor == null ? "" : "background-color:" + javajs.util.CU.toCSSString (this.bgcolor) + ";");\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "repaint", \r
-function () {\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.awt");
+Clazz.load (null, "javajs.awt.Component", ["javajs.util.CU"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.visible = false;
+this.enabled = true;
+this.text = null;
+this.name = null;
+this.width = 0;
+this.height = 0;
+this.id = null;
+this.parent = null;
+this.mouseListener = null;
+this.bgcolor = null;
+this.minWidth = 30;
+this.minHeight = 30;
+this.renderWidth = 0;
+this.renderHeight = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.awt, "Component");
+Clazz.defineMethod (c$, "setParent", 
+function (p) {
+this.parent = p;
+}, "~O");
+Clazz.makeConstructor (c$, 
+function (type) {
+this.id = javajs.awt.Component.newID (type);
+if (type == null) return;
+{
+SwingController.register(this, type);
+}}, "~S");
+c$.newID = Clazz.defineMethod (c$, "newID", 
+function (type) {
+return type + ("" + Math.random ()).substring (3, 10);
+}, "~S");
+Clazz.defineMethod (c$, "setBackground", 
+function (color) {
+this.bgcolor = color;
+}, "javajs.api.GenericColor");
+Clazz.defineMethod (c$, "setText", 
+function (text) {
+this.text = text;
+{
+SwingController.setText(this);
+}}, "~S");
+Clazz.defineMethod (c$, "setName", 
+function (name) {
+this.name = name;
+}, "~S");
+Clazz.defineMethod (c$, "getName", 
+function () {
+return this.name;
+});
+Clazz.defineMethod (c$, "getParent", 
+function () {
+return this.parent;
+});
+Clazz.defineMethod (c$, "setPreferredSize", 
+function (dimension) {
+this.width = dimension.width;
+this.height = dimension.height;
+}, "javajs.awt.Dimension");
+Clazz.defineMethod (c$, "addMouseListener", 
+function (listener) {
+this.mouseListener = listener;
+}, "~O");
+Clazz.defineMethod (c$, "getText", 
+function () {
+return this.text;
+});
+Clazz.defineMethod (c$, "isEnabled", 
+function () {
+return this.enabled;
+});
+Clazz.defineMethod (c$, "setEnabled", 
+function (enabled) {
+this.enabled = enabled;
+{
+SwingController.setEnabled(this);
+}}, "~B");
+Clazz.defineMethod (c$, "isVisible", 
+function () {
+return this.visible;
+});
+Clazz.defineMethod (c$, "setVisible", 
+function (visible) {
+this.visible = visible;
+{
+SwingController.setVisible(this);
+}}, "~B");
+Clazz.defineMethod (c$, "getHeight", 
+function () {
+return this.height;
+});
+Clazz.defineMethod (c$, "getWidth", 
+function () {
+return this.width;
+});
+Clazz.defineMethod (c$, "setMinimumSize", 
+function (d) {
+this.minWidth = d.width;
+this.minHeight = d.height;
+}, "javajs.awt.Dimension");
+Clazz.defineMethod (c$, "getSubcomponentWidth", 
+function () {
+return this.width;
+});
+Clazz.defineMethod (c$, "getSubcomponentHeight", 
+function () {
+return this.height;
+});
+Clazz.defineMethod (c$, "getCSSstyle", 
+function (defaultPercentW, defaultPercentH) {
+var width = (this.renderWidth > 0 ? this.renderWidth : this.getSubcomponentWidth ());
+var height = (this.renderHeight > 0 ? this.renderHeight : this.getSubcomponentHeight ());
+return (width > 0 ? "width:" + width + "px;" : defaultPercentW > 0 ? "width:" + defaultPercentW + "%;" : "") + (height > 0 ? "height:" + height + "px;" : defaultPercentH > 0 ? "height:" + defaultPercentH + "%;" : "") + (this.bgcolor == null ? "" : "background-color:" + javajs.util.CU.toCSSString (this.bgcolor) + ";");
+}, "~N,~N");
+Clazz.defineMethod (c$, "repaint", 
+function () {
+});
+});
index fe3fb75..5bb85ea 100644 (file)
@@ -1,65 +1,65 @@
-Clazz.declarePackage ("javajs.awt");\r
-Clazz.load (["javajs.awt.Component"], "javajs.awt.Container", ["javajs.util.Lst"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.list = null;\r
-this.cList = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.awt, "Container", javajs.awt.Component);\r
-Clazz.defineMethod (c$, "getComponent", \r
-function (i) {\r
-return this.list.get (i);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getComponentCount", \r
-function () {\r
-return (this.list == null ? 0 : this.list.size ());\r
-});\r
-Clazz.defineMethod (c$, "getComponents", \r
-function () {\r
-if (this.cList == null) {\r
-if (this.list == null) return  new Array (0);\r
-this.cList = this.list.toArray ();\r
-}return this.cList;\r
-});\r
-Clazz.defineMethod (c$, "add", \r
-function (component) {\r
-return this.addComponent (component);\r
-}, "javajs.awt.Component");\r
-Clazz.defineMethod (c$, "addComponent", \r
-function (component) {\r
-if (this.list == null) this.list =  new javajs.util.Lst ();\r
-this.list.addLast (component);\r
-this.cList = null;\r
-component.parent = this;\r
-return component;\r
-}, "javajs.awt.Component");\r
-Clazz.defineMethod (c$, "insertComponent", \r
-function (component, index) {\r
-if (this.list == null) return this.addComponent (component);\r
-this.list.add (index, component);\r
-this.cList = null;\r
-component.parent = this;\r
-return component;\r
-}, "javajs.awt.Component,~N");\r
-Clazz.defineMethod (c$, "remove", \r
-function (i) {\r
-var c = this.list.remove (i);\r
-c.parent = null;\r
-this.cList = null;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "removeAll", \r
-function () {\r
-if (this.list != null) {\r
-for (var i = this.list.size (); --i >= 0; ) this.list.get (i).parent = null;\r
-\r
-this.list.clear ();\r
-}this.cList = null;\r
-});\r
-Clazz.defineMethod (c$, "getSubcomponentWidth", \r
-function () {\r
-return (this.list != null && this.list.size () == 1 ? this.list.get (0).getSubcomponentWidth () : 0);\r
-});\r
-Clazz.defineMethod (c$, "getSubcomponentHeight", \r
-function () {\r
-return (this.list != null && this.list.size () == 1 ? this.list.get (0).getSubcomponentHeight () : 0);\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.awt");
+Clazz.load (["javajs.awt.Component"], "javajs.awt.Container", ["javajs.util.Lst"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.list = null;
+this.cList = null;
+Clazz.instantialize (this, arguments);
+}, javajs.awt, "Container", javajs.awt.Component);
+Clazz.defineMethod (c$, "getComponent", 
+function (i) {
+return this.list.get (i);
+}, "~N");
+Clazz.defineMethod (c$, "getComponentCount", 
+function () {
+return (this.list == null ? 0 : this.list.size ());
+});
+Clazz.defineMethod (c$, "getComponents", 
+function () {
+if (this.cList == null) {
+if (this.list == null) return  new Array (0);
+this.cList = this.list.toArray ();
+}return this.cList;
+});
+Clazz.defineMethod (c$, "add", 
+function (component) {
+return this.addComponent (component);
+}, "javajs.awt.Component");
+Clazz.defineMethod (c$, "addComponent", 
+function (component) {
+if (this.list == null) this.list =  new javajs.util.Lst ();
+this.list.addLast (component);
+this.cList = null;
+component.parent = this;
+return component;
+}, "javajs.awt.Component");
+Clazz.defineMethod (c$, "insertComponent", 
+function (component, index) {
+if (this.list == null) return this.addComponent (component);
+this.list.add (index, component);
+this.cList = null;
+component.parent = this;
+return component;
+}, "javajs.awt.Component,~N");
+Clazz.defineMethod (c$, "remove", 
+function (i) {
+var c = this.list.remove (i);
+c.parent = null;
+this.cList = null;
+}, "~N");
+Clazz.defineMethod (c$, "removeAll", 
+function () {
+if (this.list != null) {
+for (var i = this.list.size (); --i >= 0; ) this.list.get (i).parent = null;
+
+this.list.clear ();
+}this.cList = null;
+});
+Clazz.defineMethod (c$, "getSubcomponentWidth", 
+function () {
+return (this.list != null && this.list.size () == 1 ? this.list.get (0).getSubcomponentWidth () : 0);
+});
+Clazz.defineMethod (c$, "getSubcomponentHeight", 
+function () {
+return (this.list != null && this.list.size () == 1 ? this.list.get (0).getSubcomponentHeight () : 0);
+});
+});
index 4d21384..448d107 100644 (file)
@@ -1,16 +1,16 @@
-Clazz.declarePackage ("javajs.awt");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.width = 0;\r
-this.height = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.awt, "Dimension");\r
-Clazz.makeConstructor (c$, \r
-function (w, h) {\r
-this.set (w, h);\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "set", \r
-function (w, h) {\r
-this.width = w;\r
-this.height = h;\r
-return this;\r
-}, "~N,~N");\r
+Clazz.declarePackage ("javajs.awt");
+c$ = Clazz.decorateAsClass (function () {
+this.width = 0;
+this.height = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.awt, "Dimension");
+Clazz.makeConstructor (c$, 
+function (w, h) {
+this.set (w, h);
+}, "~N,~N");
+Clazz.defineMethod (c$, "set", 
+function (w, h) {
+this.width = w;
+this.height = h;
+return this;
+}, "~N,~N");
index a5f2df9..809c862 100644 (file)
-Clazz.declarePackage ("javajs.awt");\r
-Clazz.load (null, "javajs.awt.Font", ["javajs.util.AU"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.fid = 0;\r
-this.fontFace = null;\r
-this.fontStyle = null;\r
-this.fontSizeNominal = 0;\r
-this.idFontFace = 0;\r
-this.idFontStyle = 0;\r
-this.fontSize = 0;\r
-this.font = null;\r
-this.fontMetrics = null;\r
-this.manager = null;\r
-this.ascent = 0;\r
-this.descent = 0;\r
-this.isBold = false;\r
-this.isItalic = false;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.awt, "Font");\r
-Clazz.makeConstructor (c$, \r
-($fz = function (manager, fid, idFontFace, idFontStyle, fontSize, fontSizeNominal, graphics) {\r
-this.manager = manager;\r
-this.fid = fid;\r
-this.fontFace = javajs.awt.Font.fontFaces[idFontFace];\r
-this.fontStyle = javajs.awt.Font.fontStyles[idFontStyle];\r
-this.idFontFace = idFontFace;\r
-this.idFontStyle = idFontStyle;\r
-this.fontSize = fontSize;\r
-this.isBold = (idFontStyle & 1) == 1;\r
-this.isItalic = (idFontStyle & 2) == 2;\r
-this.fontSizeNominal = fontSizeNominal;\r
-this.font = manager.newFont (javajs.awt.Font.fontFaces[idFontFace], this.isBold, this.isItalic, fontSize);\r
-this.fontMetrics = manager.getFontMetrics (this, graphics);\r
-this.descent = manager.getFontDescent (this.fontMetrics);\r
-this.ascent = manager.getFontAscent (this.fontMetrics);\r
-}, $fz.isPrivate = true, $fz), "javajs.api.FontManager,~N,~N,~N,~N,~N,~O");\r
-c$.getFont3D = Clazz.defineMethod (c$, "getFont3D", \r
-function (fontID) {\r
-return javajs.awt.Font.font3ds[fontID & 0xFF];\r
-}, "~N");\r
-c$.createFont3D = Clazz.defineMethod (c$, "createFont3D", \r
-function (fontface, fontstyle, fontsize, fontsizeNominal, manager, graphicsForMetrics) {\r
-if (fontsize > 0xFF) fontsize = 0xFF;\r
-var fontsizeX16 = (Clazz.floatToInt (fontsize)) << 4;\r
-var fontkey = ((fontface & 3) | ((fontstyle & 3) << 2) | (fontsizeX16 << 4));\r
-for (var i = javajs.awt.Font.fontkeyCount; --i > 0; ) if (fontkey == javajs.awt.Font.fontkeys[i] && javajs.awt.Font.font3ds[i].fontSizeNominal == fontsizeNominal) return javajs.awt.Font.font3ds[i];\r
-\r
-var fontIndexNext = javajs.awt.Font.fontkeyCount++;\r
-if (fontIndexNext == javajs.awt.Font.fontkeys.length) javajs.awt.Font.fontkeys = javajs.util.AU.arrayCopyI (javajs.awt.Font.fontkeys, fontIndexNext + 8);\r
-javajs.awt.Font.font3ds = javajs.util.AU.arrayCopyObject (javajs.awt.Font.font3ds, fontIndexNext + 8);\r
-var font3d =  new javajs.awt.Font (manager, fontIndexNext, fontface, fontstyle, fontsize, fontsizeNominal, graphicsForMetrics);\r
-javajs.awt.Font.font3ds[fontIndexNext] = font3d;\r
-javajs.awt.Font.fontkeys[fontIndexNext] = fontkey;\r
-return font3d;\r
-}, "~N,~N,~N,~N,javajs.api.FontManager,~O");\r
-c$.getFontFaceID = Clazz.defineMethod (c$, "getFontFaceID", \r
-function (fontface) {\r
-return ("Monospaced".equalsIgnoreCase (fontface) ? 2 : "Serif".equalsIgnoreCase (fontface) ? 1 : 0);\r
-}, "~S");\r
-c$.getFontStyleID = Clazz.defineMethod (c$, "getFontStyleID", \r
-function (fontstyle) {\r
-for (var i = 4; --i >= 0; ) if (javajs.awt.Font.fontStyles[i].equalsIgnoreCase (fontstyle)) return i;\r
-\r
-return -1;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getAscent", \r
-function () {\r
-return this.ascent;\r
-});\r
-Clazz.defineMethod (c$, "getDescent", \r
-function () {\r
-return this.descent;\r
-});\r
-Clazz.defineMethod (c$, "getHeight", \r
-function () {\r
-return this.getAscent () + this.getDescent ();\r
-});\r
-Clazz.defineMethod (c$, "getFontMetrics", \r
-function () {\r
-return this.fontMetrics;\r
-});\r
-Clazz.defineMethod (c$, "stringWidth", \r
-function (text) {\r
-return this.manager.fontStringWidth (this, text);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getInfo", \r
-function () {\r
-return this.fontSizeNominal + " " + this.fontFace + " " + this.fontStyle;\r
-});\r
-Clazz.defineStatics (c$,\r
-"FONT_ALLOCATION_UNIT", 8,\r
-"fontkeyCount", 1,\r
-"fontkeys",  Clazz.newIntArray (8, 0));\r
-c$.font3ds = c$.prototype.font3ds =  new Array (8);\r
-Clazz.defineStatics (c$,\r
-"FONT_FACE_SANS", 0,\r
-"FONT_FACE_SERIF", 1,\r
-"FONT_FACE_MONO", 2,\r
-"fontFaces",  Clazz.newArray (-1, ["SansSerif", "Serif", "Monospaced", ""]),\r
-"FONT_STYLE_PLAIN", 0,\r
-"FONT_STYLE_BOLD", 1,\r
-"FONT_STYLE_ITALIC", 2,\r
-"FONT_STYLE_BOLDITALIC", 3,\r
-"fontStyles",  Clazz.newArray (-1, ["Plain", "Bold", "Italic", "BoldItalic"]));\r
-});\r
+Clazz.declarePackage ("javajs.awt");
+Clazz.load (null, "javajs.awt.Font", ["javajs.util.AU"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.fid = 0;
+this.fontFace = null;
+this.fontStyle = null;
+this.fontSizeNominal = 0;
+this.idFontFace = 0;
+this.idFontStyle = 0;
+this.fontSize = 0;
+this.font = null;
+this.fontMetrics = null;
+this.manager = null;
+this.ascent = 0;
+this.descent = 0;
+this.isBold = false;
+this.isItalic = false;
+Clazz.instantialize (this, arguments);
+}, javajs.awt, "Font");
+Clazz.makeConstructor (c$, 
+($fz = function (manager, fid, idFontFace, idFontStyle, fontSize, fontSizeNominal, graphics) {
+this.manager = manager;
+this.fid = fid;
+this.fontFace = javajs.awt.Font.fontFaces[idFontFace];
+this.fontStyle = javajs.awt.Font.fontStyles[idFontStyle];
+this.idFontFace = idFontFace;
+this.idFontStyle = idFontStyle;
+this.fontSize = fontSize;
+this.isBold = (idFontStyle & 1) == 1;
+this.isItalic = (idFontStyle & 2) == 2;
+this.fontSizeNominal = fontSizeNominal;
+this.font = manager.newFont (javajs.awt.Font.fontFaces[idFontFace], this.isBold, this.isItalic, fontSize);
+this.fontMetrics = manager.getFontMetrics (this, graphics);
+this.descent = manager.getFontDescent (this.fontMetrics);
+this.ascent = manager.getFontAscent (this.fontMetrics);
+}, $fz.isPrivate = true, $fz), "javajs.api.FontManager,~N,~N,~N,~N,~N,~O");
+c$.getFont3D = Clazz.defineMethod (c$, "getFont3D", 
+function (fontID) {
+return javajs.awt.Font.font3ds[fontID & 0xFF];
+}, "~N");
+c$.createFont3D = Clazz.defineMethod (c$, "createFont3D", 
+function (fontface, fontstyle, fontsize, fontsizeNominal, manager, graphicsForMetrics) {
+if (fontsize > 0xFF) fontsize = 0xFF;
+var fontsizeX16 = (Clazz.floatToInt (fontsize)) << 4;
+var fontkey = ((fontface & 3) | ((fontstyle & 3) << 2) | (fontsizeX16 << 4));
+for (var i = javajs.awt.Font.fontkeyCount; --i > 0; ) if (fontkey == javajs.awt.Font.fontkeys[i] && javajs.awt.Font.font3ds[i].fontSizeNominal == fontsizeNominal) return javajs.awt.Font.font3ds[i];
+
+var fontIndexNext = javajs.awt.Font.fontkeyCount++;
+if (fontIndexNext == javajs.awt.Font.fontkeys.length) javajs.awt.Font.fontkeys = javajs.util.AU.arrayCopyI (javajs.awt.Font.fontkeys, fontIndexNext + 8);
+javajs.awt.Font.font3ds = javajs.util.AU.arrayCopyObject (javajs.awt.Font.font3ds, fontIndexNext + 8);
+var font3d =  new javajs.awt.Font (manager, fontIndexNext, fontface, fontstyle, fontsize, fontsizeNominal, graphicsForMetrics);
+javajs.awt.Font.font3ds[fontIndexNext] = font3d;
+javajs.awt.Font.fontkeys[fontIndexNext] = fontkey;
+return font3d;
+}, "~N,~N,~N,~N,javajs.api.FontManager,~O");
+c$.getFontFaceID = Clazz.defineMethod (c$, "getFontFaceID", 
+function (fontface) {
+return ("Monospaced".equalsIgnoreCase (fontface) ? 2 : "Serif".equalsIgnoreCase (fontface) ? 1 : 0);
+}, "~S");
+c$.getFontStyleID = Clazz.defineMethod (c$, "getFontStyleID", 
+function (fontstyle) {
+for (var i = 4; --i >= 0; ) if (javajs.awt.Font.fontStyles[i].equalsIgnoreCase (fontstyle)) return i;
+
+return -1;
+}, "~S");
+Clazz.defineMethod (c$, "getAscent", 
+function () {
+return this.ascent;
+});
+Clazz.defineMethod (c$, "getDescent", 
+function () {
+return this.descent;
+});
+Clazz.defineMethod (c$, "getHeight", 
+function () {
+return this.getAscent () + this.getDescent ();
+});
+Clazz.defineMethod (c$, "getFontMetrics", 
+function () {
+return this.fontMetrics;
+});
+Clazz.defineMethod (c$, "stringWidth", 
+function (text) {
+return this.manager.fontStringWidth (this, text);
+}, "~S");
+Clazz.defineMethod (c$, "getInfo", 
+function () {
+return this.fontSizeNominal + " " + this.fontFace + " " + this.fontStyle;
+});
+Clazz.defineStatics (c$,
+"FONT_ALLOCATION_UNIT", 8,
+"fontkeyCount", 1,
+"fontkeys",  Clazz.newIntArray (8, 0));
+c$.font3ds = c$.prototype.font3ds =  new Array (8);
+Clazz.defineStatics (c$,
+"FONT_FACE_SANS", 0,
+"FONT_FACE_SERIF", 1,
+"FONT_FACE_MONO", 2,
+"fontFaces",  Clazz.newArray (-1, ["SansSerif", "Serif", "Monospaced", ""]),
+"FONT_STYLE_PLAIN", 0,
+"FONT_STYLE_BOLD", 1,
+"FONT_STYLE_ITALIC", 2,
+"FONT_STYLE_BOLDITALIC", 3,
+"fontStyles",  Clazz.newArray (-1, ["Plain", "Bold", "Italic", "BoldItalic"]));
+});
index 49c8b3a..93d4055 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.awt");\r
-c$ = Clazz.declareType (javajs.awt, "LayoutManager");\r
+Clazz.declarePackage ("javajs.awt");
+c$ = Clazz.declareType (javajs.awt, "LayoutManager");
index 11f0d44..5ff2dcc 100644 (file)
@@ -1,11 +1,11 @@
-Clazz.declarePackage ("javajs.awt.event");\r
-Clazz.load (["javajs.awt.event.Event"], "javajs.awt.event.ActionEvent", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.actionCommand = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.awt.event, "ActionEvent", javajs.awt.event.Event);\r
-Clazz.defineMethod (c$, "getActionCommand", \r
-function () {\r
-return this.actionCommand;\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.awt.event");
+Clazz.load (["javajs.awt.event.Event"], "javajs.awt.event.ActionEvent", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.actionCommand = null;
+Clazz.instantialize (this, arguments);
+}, javajs.awt.event, "ActionEvent", javajs.awt.event.Event);
+Clazz.defineMethod (c$, "getActionCommand", 
+function () {
+return this.actionCommand;
+});
+});
index c41017a..09f483e 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.awt.event");\r
-Clazz.declareInterface (javajs.awt.event, "ActionListener");\r
+Clazz.declarePackage ("javajs.awt.event");
+Clazz.declareInterface (javajs.awt.event, "ActionListener");
index 795e48f..522ac2f 100644 (file)
@@ -1,49 +1,49 @@
-Clazz.declarePackage ("javajs.awt.event");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.source = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.awt.event, "Event");\r
-Clazz.defineMethod (c$, "getSource", \r
-function () {\r
-return this.source;\r
-});\r
-Clazz.defineStatics (c$,\r
-"MOUSE_LEFT", 16,\r
-"MOUSE_MIDDLE", 8,\r
-"MOUSE_RIGHT", 4,\r
-"MOUSE_WHEEL", 32,\r
-"MAC_COMMAND", 20,\r
-"BUTTON_MASK", 28,\r
-"MOUSE_DOWN", 501,\r
-"MOUSE_UP", 502,\r
-"MOUSE_MOVE", 503,\r
-"MOUSE_ENTER", 504,\r
-"MOUSE_EXIT", 505,\r
-"MOUSE_DRAG", 506,\r
-"SHIFT_MASK", 1,\r
-"ALT_MASK", 8,\r
-"CTRL_MASK", 2,\r
-"CTRL_ALT", 10,\r
-"CTRL_SHIFT", 3,\r
-"META_MASK", 4,\r
-"VK_SHIFT", 16,\r
-"VK_ALT", 18,\r
-"VK_CONTROL", 17,\r
-"VK_META", 157,\r
-"VK_LEFT", 37,\r
-"VK_RIGHT", 39,\r
-"VK_PERIOD", 46,\r
-"VK_SPACE", 32,\r
-"VK_DOWN", 40,\r
-"VK_UP", 38,\r
-"VK_ESCAPE", 27,\r
-"VK_DELETE", 127,\r
-"VK_BACK_SPACE", 8,\r
-"VK_PAGE_DOWN", 34,\r
-"VK_PAGE_UP", 33,\r
-"MOVED", 0,\r
-"DRAGGED", 1,\r
-"CLICKED", 2,\r
-"WHEELED", 3,\r
-"PRESSED", 4,\r
-"RELEASED", 5);\r
+Clazz.declarePackage ("javajs.awt.event");
+c$ = Clazz.decorateAsClass (function () {
+this.source = null;
+Clazz.instantialize (this, arguments);
+}, javajs.awt.event, "Event");
+Clazz.defineMethod (c$, "getSource", 
+function () {
+return this.source;
+});
+Clazz.defineStatics (c$,
+"MOUSE_LEFT", 16,
+"MOUSE_MIDDLE", 8,
+"MOUSE_RIGHT", 4,
+"MOUSE_WHEEL", 32,
+"MAC_COMMAND", 20,
+"BUTTON_MASK", 28,
+"MOUSE_DOWN", 501,
+"MOUSE_UP", 502,
+"MOUSE_MOVE", 503,
+"MOUSE_ENTER", 504,
+"MOUSE_EXIT", 505,
+"MOUSE_DRAG", 506,
+"SHIFT_MASK", 1,
+"ALT_MASK", 8,
+"CTRL_MASK", 2,
+"CTRL_ALT", 10,
+"CTRL_SHIFT", 3,
+"META_MASK", 4,
+"VK_SHIFT", 16,
+"VK_ALT", 18,
+"VK_CONTROL", 17,
+"VK_META", 157,
+"VK_LEFT", 37,
+"VK_RIGHT", 39,
+"VK_PERIOD", 46,
+"VK_SPACE", 32,
+"VK_DOWN", 40,
+"VK_UP", 38,
+"VK_ESCAPE", 27,
+"VK_DELETE", 127,
+"VK_BACK_SPACE", 8,
+"VK_PAGE_DOWN", 34,
+"VK_PAGE_UP", 33,
+"MOVED", 0,
+"DRAGGED", 1,
+"CLICKED", 2,
+"WHEELED", 3,
+"PRESSED", 4,
+"RELEASED", 5);
index 8aa944f..b2722ab 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("javajs.awt.event");\r
-Clazz.load (["javajs.awt.event.Event"], "javajs.awt.event.ItemEvent", null, function () {\r
-c$ = Clazz.declareType (javajs.awt.event, "ItemEvent", javajs.awt.event.Event);\r
-});\r
+Clazz.declarePackage ("javajs.awt.event");
+Clazz.load (["javajs.awt.event.Event"], "javajs.awt.event.ItemEvent", null, function () {
+c$ = Clazz.declareType (javajs.awt.event, "ItemEvent", javajs.awt.event.Event);
+});
index efa578b..0017c88 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("javajs.awt.event");\r
-Clazz.load (["javajs.awt.event.Event"], "javajs.awt.event.WindowEvent", null, function () {\r
-c$ = Clazz.declareType (javajs.awt.event, "WindowEvent", javajs.awt.event.Event);\r
-});\r
+Clazz.declarePackage ("javajs.awt.event");
+Clazz.load (["javajs.awt.event.Event"], "javajs.awt.event.WindowEvent", null, function () {
+c$ = Clazz.declareType (javajs.awt.event, "WindowEvent", javajs.awt.event.Event);
+});
index bb9e9c5..7656d2f 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.awt.event");\r
-Clazz.declareInterface (javajs.awt.event, "WindowListener");\r
+Clazz.declarePackage ("javajs.awt.event");
+Clazz.declareInterface (javajs.awt.event, "WindowListener");
index 7f5c820..3442530 100644 (file)
-Clazz.declarePackage ("javajs.export");\r
-Clazz.load (null, "javajs.export.PDFCreator", ["java.lang.Double", "java.util.Hashtable", "javajs.export.PDFObject", "javajs.util.Lst", "$.SB"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.os = null;\r
-this.indirectObjects = null;\r
-this.root = null;\r
-this.graphics = null;\r
-this.pt = 0;\r
-this.xrefPt = 0;\r
-this.count = 0;\r
-this.height = 0;\r
-this.width = 0;\r
-this.fonts = null;\r
-this.images = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs["export"], "PDFCreator");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "setOutputStream", \r
-function (os) {\r
-this.os = os;\r
-}, "java.io.OutputStream");\r
-Clazz.defineMethod (c$, "newDocument", \r
-function (paperWidth, paperHeight, isLandscape) {\r
-this.width = (isLandscape ? paperHeight : paperWidth);\r
-this.height = (isLandscape ? paperWidth : paperHeight);\r
-System.out.println ("Creating PDF with width=" + this.width + " and height=" + this.height);\r
-this.fonts =  new java.util.Hashtable ();\r
-this.indirectObjects =  new javajs.util.Lst ();\r
-this.root = this.newObject ("Catalog");\r
-var pages = this.newObject ("Pages");\r
-var page = this.newObject ("Page");\r
-var pageContents = this.newObject (null);\r
-this.graphics = this.newObject ("XObject");\r
-this.root.addDef ("Pages", pages.getRef ());\r
-pages.addDef ("Count", "1");\r
-pages.addDef ("Kids", "[ " + page.getRef () + " ]");\r
-page.addDef ("Parent", pages.getRef ());\r
-page.addDef ("MediaBox", "[ 0 0 " + paperWidth + " " + paperHeight + " ]");\r
-if (isLandscape) page.addDef ("Rotate", "90");\r
-pageContents.addDef ("Length", "?");\r
-pageContents.append ((isLandscape ? "q 0 1 1 0 0 0 " : "q 1 0 0 -1 0 " + (paperHeight)) + " cm /" + this.graphics.getID () + " Do Q");\r
-page.addDef ("Contents", pageContents.getRef ());\r
-this.addProcSet (page);\r
-this.addProcSet (this.graphics);\r
-this.graphics.addDef ("Subtype", "/Form");\r
-this.graphics.addDef ("FormType", "1");\r
-this.graphics.addDef ("BBox", "[0 0 " + this.width + " " + this.height + "]");\r
-this.graphics.addDef ("Matrix", "[1 0 0 1 0 0]");\r
-this.graphics.addDef ("Length", "?");\r
-page.addResource ("XObject", this.graphics.getID (), this.graphics.getRef ());\r
-this.g ("q 1 w 1 J 1 j 10 M []0 d q ");\r
-this.clip (0, 0, this.width, this.height);\r
-}, "~N,~N,~B");\r
-Clazz.defineMethod (c$, "addProcSet", \r
-($fz = function (o) {\r
-o.addResource (null, "ProcSet", "[/PDF /Text /ImageB /ImageC /ImageI]");\r
-}, $fz.isPrivate = true, $fz), "javajs.export.PDFObject");\r
-Clazz.defineMethod (c$, "clip", \r
-($fz = function (x1, y1, x2, y2) {\r
-this.moveto (x1, y1);\r
-this.lineto (x2, y1);\r
-this.lineto (x2, y2);\r
-this.lineto (x1, y2);\r
-this.g ("h W n");\r
-}, $fz.isPrivate = true, $fz), "~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "moveto", \r
-function (x, y) {\r
-this.g (x + " " + y + " m");\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "lineto", \r
-function (x, y) {\r
-this.g (x + " " + y + " l");\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "newObject", \r
-($fz = function (type) {\r
-var o =  new javajs["export"].PDFObject (++this.count);\r
-if (type != null) o.addDef ("Type", "/" + type);\r
-this.indirectObjects.addLast (o);\r
-return o;\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "addInfo", \r
-function (data) {\r
-var info =  new java.util.Hashtable ();\r
-for (var e, $e = data.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) {\r
-var value = "(" + e.getValue ().$replace (')', '_').$replace ('(', '_') + ")";\r
-info.put (e.getKey (), value);\r
-}\r
-this.root.addDef ("Info", info);\r
-}, "java.util.Map");\r
-Clazz.defineMethod (c$, "addFontResource", \r
-($fz = function (fname) {\r
-var f = this.newObject ("Font");\r
-this.fonts.put (fname, f);\r
-f.addDef ("BaseFont", fname);\r
-f.addDef ("Encoding", "/WinAnsiEncoding");\r
-f.addDef ("Subtype", "/Type1");\r
-this.graphics.addResource ("Font", f.getID (), f.getRef ());\r
-return f;\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "addImageResource", \r
-function (newImage, width, height, buffer, isRGB) {\r
-var imageObj = this.newObject ("XObject");\r
-if (this.images == null) this.images =  new java.util.Hashtable ();\r
-this.images.put (newImage, imageObj);\r
-imageObj.addDef ("Subtype", "/Image");\r
-imageObj.addDef ("Length", "?");\r
-imageObj.addDef ("ColorSpace", isRGB ? "/DeviceRGB" : "/DeviceGray");\r
-imageObj.addDef ("BitsPerComponent", "8");\r
-imageObj.addDef ("Width", "" + width);\r
-imageObj.addDef ("Height", "" + height);\r
-this.graphics.addResource ("XObject", imageObj.getID (), imageObj.getRef ());\r
-var n = buffer.length;\r
-var stream =  Clazz.newByteArray (n * (isRGB ? 3 : 1), 0);\r
-if (isRGB) {\r
-for (var i = 0, pt = 0; i < n; i++) {\r
-stream[pt++] = ((buffer[i] >> 16) & 0xFF);\r
-stream[pt++] = ((buffer[i] >> 8) & 0xFF);\r
-stream[pt++] = (buffer[i] & 0xFF);\r
-}\r
-} else {\r
-for (var i = 0; i < n; i++) stream[i] = buffer[i];\r
-\r
-}imageObj.setStream (stream);\r
-this.graphics.addResource ("XObject", imageObj.getID (), imageObj.getRef ());\r
-}, "~O,~N,~N,~A,~B");\r
-Clazz.defineMethod (c$, "g", \r
-function (cmd) {\r
-this.graphics.append (cmd).appendC ('\n');\r
-}, "~S");\r
-Clazz.defineMethod (c$, "output", \r
-($fz = function (s) {\r
-var b = s.getBytes ();\r
-this.os.write (b, 0, b.length);\r
-this.pt += b.length;\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "closeDocument", \r
-function () {\r
-this.g ("Q Q");\r
-this.outputHeader ();\r
-this.writeObjects ();\r
-this.writeXRefTable ();\r
-this.writeTrailer ();\r
-this.os.flush ();\r
-this.os.close ();\r
-});\r
-Clazz.defineMethod (c$, "outputHeader", \r
-($fz = function () {\r
-this.output ("%PDF-1.3\n%");\r
-var b =  Clazz.newByteArray (-1, [-1, -1, -1, -1]);\r
-this.os.write (b, 0, b.length);\r
-this.pt += 4;\r
-this.output ("\n");\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "writeTrailer", \r
-($fz = function () {\r
-var trailer =  new javajs["export"].PDFObject (-2);\r
-this.output ("trailer");\r
-trailer.addDef ("Size", "" + this.indirectObjects.size ());\r
-trailer.addDef ("Root", this.root.getRef ());\r
-trailer.output (this.os);\r
-this.output ("startxref\n");\r
-this.output ("" + this.xrefPt + "\n");\r
-this.output ("%%EOF\n");\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "writeObjects", \r
-($fz = function () {\r
-var nObj = this.indirectObjects.size ();\r
-for (var i = 0; i < nObj; i++) {\r
-var o = this.indirectObjects.get (i);\r
-if (!o.isFont ()) continue;\r
-o.pt = this.pt;\r
-this.pt += o.output (this.os);\r
-}\r
-for (var i = 0; i < nObj; i++) {\r
-var o = this.indirectObjects.get (i);\r
-if (o.isFont ()) continue;\r
-o.pt = this.pt;\r
-this.pt += o.output (this.os);\r
-}\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "writeXRefTable", \r
-($fz = function () {\r
-this.xrefPt = this.pt;\r
-var nObj = this.indirectObjects.size ();\r
-var sb =  new javajs.util.SB ();\r
-sb.append ("xref\n0 " + (nObj + 1) + "\n0000000000 65535 f\r\n");\r
-for (var i = 0; i < nObj; i++) {\r
-var o = this.indirectObjects.get (i);\r
-var s = "0000000000" + o.pt;\r
-sb.append (s.substring (s.length - 10));\r
-sb.append (" 00000 n\r\n");\r
-}\r
-this.output (sb.toString ());\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "canDoLineTo", \r
-function () {\r
-return true;\r
-});\r
-Clazz.defineMethod (c$, "fill", \r
-function () {\r
-this.g ("f");\r
-});\r
-Clazz.defineMethod (c$, "stroke", \r
-function () {\r
-this.g ("S");\r
-});\r
-Clazz.defineMethod (c$, "doCircle", \r
-function (x, y, r, doFill) {\r
-var d = r * 4 * (Math.sqrt (2) - 1) / 3;\r
-var dx = x;\r
-var dy = y;\r
-this.g ((dx + r) + " " + dy + " m");\r
-this.g ((dx + r) + " " + (dy + d) + " " + (dx + d) + " " + (dy + r) + " " + (dx) + " " + (dy + r) + " " + " c");\r
-this.g ((dx - d) + " " + (dy + r) + " " + (dx - r) + " " + (dy + d) + " " + (dx - r) + " " + (dy) + " c");\r
-this.g ((dx - r) + " " + (dy - d) + " " + (dx - d) + " " + (dy - r) + " " + (dx) + " " + (dy - r) + " c");\r
-this.g ((dx + d) + " " + (dy - r) + " " + (dx + r) + " " + (dy - d) + " " + (dx + r) + " " + (dy) + " c");\r
-this.g (doFill ? "f" : "s");\r
-}, "~N,~N,~N,~B");\r
-Clazz.defineMethod (c$, "doPolygon", \r
-function (axPoints, ayPoints, nPoints, doFill) {\r
-this.moveto (axPoints[0], ayPoints[0]);\r
-for (var i = 1; i < nPoints; i++) this.lineto (axPoints[i], ayPoints[i]);\r
-\r
-this.g (doFill ? "f" : "s");\r
-}, "~A,~A,~N,~B");\r
-Clazz.defineMethod (c$, "doRect", \r
-function (x, y, width, height, doFill) {\r
-this.g (x + " " + y + " " + width + " " + height + " re " + (doFill ? "f" : "s"));\r
-}, "~N,~N,~N,~N,~B");\r
-Clazz.defineMethod (c$, "drawImage", \r
-function (image, destX0, destY0, destX1, destY1, srcX0, srcY0, srcX1, srcY1) {\r
-var imageObj = this.images.get (image);\r
-if (imageObj == null) return;\r
-this.g ("q");\r
-this.clip (destX0, destY0, destX1, destY1);\r
-var iw = Double.parseDouble (imageObj.getDef ("Width"));\r
-var ih = Double.parseDouble (imageObj.getDef ("Height"));\r
-var dw = (destX1 - destX0 + 1);\r
-var dh = (destY1 - destY0 + 1);\r
-var sw = (srcX1 - srcX0 + 1);\r
-var sh = (srcY1 - srcY0 + 1);\r
-var scaleX = dw / sw;\r
-var scaleY = dh / sh;\r
-var transX = destX0 - srcX0 * scaleX;\r
-var transY = destY0 + (ih - srcY0) * scaleY;\r
-this.g (scaleX * iw + " 0 0 " + -scaleY * ih + " " + transX + " " + transY + " cm");\r
-this.g ("/" + imageObj.getID () + " Do");\r
-this.g ("Q");\r
-}, "~O,~N,~N,~N,~N,~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "drawStringRotated", \r
-function (s, x, y, angle) {\r
-this.g ("q " + this.getRotation (angle) + " " + x + " " + y + " cm BT(" + s + ")Tj ET Q");\r
-}, "~S,~N,~N,~N");\r
-Clazz.defineMethod (c$, "getRotation", \r
-function (angle) {\r
-var cos = 0;\r
-var sin = 0;\r
-switch (angle) {\r
-case 0:\r
-cos = 1;\r
-break;\r
-case 90:\r
-sin = 1;\r
-break;\r
-case -90:\r
-sin = -1;\r
-break;\r
-case 180:\r
-cos = -1;\r
-break;\r
-default:\r
-var a = (angle / 180.0 * 3.141592653589793);\r
-cos = Math.cos (a);\r
-sin = Math.sin (a);\r
-if (Math.abs (cos) < 0.0001) cos = 0;\r
-if (Math.abs (sin) < 0.0001) sin = 0;\r
-}\r
-return cos + " " + sin + " " + sin + " " + -cos;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setColor", \r
-function (rgb, isFill) {\r
-this.g (rgb[0] + " " + rgb[1] + " " + rgb[2] + (isFill ? " rg" : " RG"));\r
-}, "~A,~B");\r
-Clazz.defineMethod (c$, "setFont", \r
-function (fname, size) {\r
-var f = this.fonts.get (fname);\r
-if (f == null) f = this.addFontResource (fname);\r
-this.g ("/" + f.getID () + " " + size + " Tf");\r
-}, "~S,~N");\r
-Clazz.defineMethod (c$, "setLineWidth", \r
-function (width) {\r
-this.g (width + " w");\r
-}, "~N");\r
-Clazz.defineMethod (c$, "translateScale", \r
-function (x, y, scale) {\r
-this.g (scale + " 0 0 " + scale + " " + x + " " + y + " cm");\r
-}, "~N,~N,~N");\r
-});\r
+Clazz.declarePackage ("javajs.export");
+Clazz.load (null, "javajs.export.PDFCreator", ["java.lang.Double", "java.util.Hashtable", "javajs.export.PDFObject", "javajs.util.Lst", "$.SB"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.os = null;
+this.indirectObjects = null;
+this.root = null;
+this.graphics = null;
+this.pt = 0;
+this.xrefPt = 0;
+this.count = 0;
+this.height = 0;
+this.width = 0;
+this.fonts = null;
+this.images = null;
+Clazz.instantialize (this, arguments);
+}, javajs["export"], "PDFCreator");
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.defineMethod (c$, "setOutputStream", 
+function (os) {
+this.os = os;
+}, "java.io.OutputStream");
+Clazz.defineMethod (c$, "newDocument", 
+function (paperWidth, paperHeight, isLandscape) {
+this.width = (isLandscape ? paperHeight : paperWidth);
+this.height = (isLandscape ? paperWidth : paperHeight);
+System.out.println ("Creating PDF with width=" + this.width + " and height=" + this.height);
+this.fonts =  new java.util.Hashtable ();
+this.indirectObjects =  new javajs.util.Lst ();
+this.root = this.newObject ("Catalog");
+var pages = this.newObject ("Pages");
+var page = this.newObject ("Page");
+var pageContents = this.newObject (null);
+this.graphics = this.newObject ("XObject");
+this.root.addDef ("Pages", pages.getRef ());
+pages.addDef ("Count", "1");
+pages.addDef ("Kids", "[ " + page.getRef () + " ]");
+page.addDef ("Parent", pages.getRef ());
+page.addDef ("MediaBox", "[ 0 0 " + paperWidth + " " + paperHeight + " ]");
+if (isLandscape) page.addDef ("Rotate", "90");
+pageContents.addDef ("Length", "?");
+pageContents.append ((isLandscape ? "q 0 1 1 0 0 0 " : "q 1 0 0 -1 0 " + (paperHeight)) + " cm /" + this.graphics.getID () + " Do Q");
+page.addDef ("Contents", pageContents.getRef ());
+this.addProcSet (page);
+this.addProcSet (this.graphics);
+this.graphics.addDef ("Subtype", "/Form");
+this.graphics.addDef ("FormType", "1");
+this.graphics.addDef ("BBox", "[0 0 " + this.width + " " + this.height + "]");
+this.graphics.addDef ("Matrix", "[1 0 0 1 0 0]");
+this.graphics.addDef ("Length", "?");
+page.addResource ("XObject", this.graphics.getID (), this.graphics.getRef ());
+this.g ("q 1 w 1 J 1 j 10 M []0 d q ");
+this.clip (0, 0, this.width, this.height);
+}, "~N,~N,~B");
+Clazz.defineMethod (c$, "addProcSet", 
+($fz = function (o) {
+o.addResource (null, "ProcSet", "[/PDF /Text /ImageB /ImageC /ImageI]");
+}, $fz.isPrivate = true, $fz), "javajs.export.PDFObject");
+Clazz.defineMethod (c$, "clip", 
+($fz = function (x1, y1, x2, y2) {
+this.moveto (x1, y1);
+this.lineto (x2, y1);
+this.lineto (x2, y2);
+this.lineto (x1, y2);
+this.g ("h W n");
+}, $fz.isPrivate = true, $fz), "~N,~N,~N,~N");
+Clazz.defineMethod (c$, "moveto", 
+function (x, y) {
+this.g (x + " " + y + " m");
+}, "~N,~N");
+Clazz.defineMethod (c$, "lineto", 
+function (x, y) {
+this.g (x + " " + y + " l");
+}, "~N,~N");
+Clazz.defineMethod (c$, "newObject", 
+($fz = function (type) {
+var o =  new javajs["export"].PDFObject (++this.count);
+if (type != null) o.addDef ("Type", "/" + type);
+this.indirectObjects.addLast (o);
+return o;
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "addInfo", 
+function (data) {
+var info =  new java.util.Hashtable ();
+for (var e, $e = data.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) {
+var value = "(" + e.getValue ().$replace (')', '_').$replace ('(', '_') + ")";
+info.put (e.getKey (), value);
+}
+this.root.addDef ("Info", info);
+}, "java.util.Map");
+Clazz.defineMethod (c$, "addFontResource", 
+($fz = function (fname) {
+var f = this.newObject ("Font");
+this.fonts.put (fname, f);
+f.addDef ("BaseFont", fname);
+f.addDef ("Encoding", "/WinAnsiEncoding");
+f.addDef ("Subtype", "/Type1");
+this.graphics.addResource ("Font", f.getID (), f.getRef ());
+return f;
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "addImageResource", 
+function (newImage, width, height, buffer, isRGB) {
+var imageObj = this.newObject ("XObject");
+if (this.images == null) this.images =  new java.util.Hashtable ();
+this.images.put (newImage, imageObj);
+imageObj.addDef ("Subtype", "/Image");
+imageObj.addDef ("Length", "?");
+imageObj.addDef ("ColorSpace", isRGB ? "/DeviceRGB" : "/DeviceGray");
+imageObj.addDef ("BitsPerComponent", "8");
+imageObj.addDef ("Width", "" + width);
+imageObj.addDef ("Height", "" + height);
+this.graphics.addResource ("XObject", imageObj.getID (), imageObj.getRef ());
+var n = buffer.length;
+var stream =  Clazz.newByteArray (n * (isRGB ? 3 : 1), 0);
+if (isRGB) {
+for (var i = 0, pt = 0; i < n; i++) {
+stream[pt++] = ((buffer[i] >> 16) & 0xFF);
+stream[pt++] = ((buffer[i] >> 8) & 0xFF);
+stream[pt++] = (buffer[i] & 0xFF);
+}
+} else {
+for (var i = 0; i < n; i++) stream[i] = buffer[i];
+
+}imageObj.setStream (stream);
+this.graphics.addResource ("XObject", imageObj.getID (), imageObj.getRef ());
+}, "~O,~N,~N,~A,~B");
+Clazz.defineMethod (c$, "g", 
+function (cmd) {
+this.graphics.append (cmd).appendC ('\n');
+}, "~S");
+Clazz.defineMethod (c$, "output", 
+($fz = function (s) {
+var b = s.getBytes ();
+this.os.write (b, 0, b.length);
+this.pt += b.length;
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "closeDocument", 
+function () {
+this.g ("Q Q");
+this.outputHeader ();
+this.writeObjects ();
+this.writeXRefTable ();
+this.writeTrailer ();
+this.os.flush ();
+this.os.close ();
+});
+Clazz.defineMethod (c$, "outputHeader", 
+($fz = function () {
+this.output ("%PDF-1.3\n%");
+var b =  Clazz.newByteArray (-1, [-1, -1, -1, -1]);
+this.os.write (b, 0, b.length);
+this.pt += 4;
+this.output ("\n");
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "writeTrailer", 
+($fz = function () {
+var trailer =  new javajs["export"].PDFObject (-2);
+this.output ("trailer");
+trailer.addDef ("Size", "" + this.indirectObjects.size ());
+trailer.addDef ("Root", this.root.getRef ());
+trailer.output (this.os);
+this.output ("startxref\n");
+this.output ("" + this.xrefPt + "\n");
+this.output ("%%EOF\n");
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "writeObjects", 
+($fz = function () {
+var nObj = this.indirectObjects.size ();
+for (var i = 0; i < nObj; i++) {
+var o = this.indirectObjects.get (i);
+if (!o.isFont ()) continue;
+o.pt = this.pt;
+this.pt += o.output (this.os);
+}
+for (var i = 0; i < nObj; i++) {
+var o = this.indirectObjects.get (i);
+if (o.isFont ()) continue;
+o.pt = this.pt;
+this.pt += o.output (this.os);
+}
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "writeXRefTable", 
+($fz = function () {
+this.xrefPt = this.pt;
+var nObj = this.indirectObjects.size ();
+var sb =  new javajs.util.SB ();
+sb.append ("xref\n0 " + (nObj + 1) + "\n0000000000 65535 f\r\n");
+for (var i = 0; i < nObj; i++) {
+var o = this.indirectObjects.get (i);
+var s = "0000000000" + o.pt;
+sb.append (s.substring (s.length - 10));
+sb.append (" 00000 n\r\n");
+}
+this.output (sb.toString ());
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "canDoLineTo", 
+function () {
+return true;
+});
+Clazz.defineMethod (c$, "fill", 
+function () {
+this.g ("f");
+});
+Clazz.defineMethod (c$, "stroke", 
+function () {
+this.g ("S");
+});
+Clazz.defineMethod (c$, "doCircle", 
+function (x, y, r, doFill) {
+var d = r * 4 * (Math.sqrt (2) - 1) / 3;
+var dx = x;
+var dy = y;
+this.g ((dx + r) + " " + dy + " m");
+this.g ((dx + r) + " " + (dy + d) + " " + (dx + d) + " " + (dy + r) + " " + (dx) + " " + (dy + r) + " " + " c");
+this.g ((dx - d) + " " + (dy + r) + " " + (dx - r) + " " + (dy + d) + " " + (dx - r) + " " + (dy) + " c");
+this.g ((dx - r) + " " + (dy - d) + " " + (dx - d) + " " + (dy - r) + " " + (dx) + " " + (dy - r) + " c");
+this.g ((dx + d) + " " + (dy - r) + " " + (dx + r) + " " + (dy - d) + " " + (dx + r) + " " + (dy) + " c");
+this.g (doFill ? "f" : "s");
+}, "~N,~N,~N,~B");
+Clazz.defineMethod (c$, "doPolygon", 
+function (axPoints, ayPoints, nPoints, doFill) {
+this.moveto (axPoints[0], ayPoints[0]);
+for (var i = 1; i < nPoints; i++) this.lineto (axPoints[i], ayPoints[i]);
+
+this.g (doFill ? "f" : "s");
+}, "~A,~A,~N,~B");
+Clazz.defineMethod (c$, "doRect", 
+function (x, y, width, height, doFill) {
+this.g (x + " " + y + " " + width + " " + height + " re " + (doFill ? "f" : "s"));
+}, "~N,~N,~N,~N,~B");
+Clazz.defineMethod (c$, "drawImage", 
+function (image, destX0, destY0, destX1, destY1, srcX0, srcY0, srcX1, srcY1) {
+var imageObj = this.images.get (image);
+if (imageObj == null) return;
+this.g ("q");
+this.clip (destX0, destY0, destX1, destY1);
+var iw = Double.parseDouble (imageObj.getDef ("Width"));
+var ih = Double.parseDouble (imageObj.getDef ("Height"));
+var dw = (destX1 - destX0 + 1);
+var dh = (destY1 - destY0 + 1);
+var sw = (srcX1 - srcX0 + 1);
+var sh = (srcY1 - srcY0 + 1);
+var scaleX = dw / sw;
+var scaleY = dh / sh;
+var transX = destX0 - srcX0 * scaleX;
+var transY = destY0 + (ih - srcY0) * scaleY;
+this.g (scaleX * iw + " 0 0 " + -scaleY * ih + " " + transX + " " + transY + " cm");
+this.g ("/" + imageObj.getID () + " Do");
+this.g ("Q");
+}, "~O,~N,~N,~N,~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "drawStringRotated", 
+function (s, x, y, angle) {
+this.g ("q " + this.getRotation (angle) + " " + x + " " + y + " cm BT(" + s + ")Tj ET Q");
+}, "~S,~N,~N,~N");
+Clazz.defineMethod (c$, "getRotation", 
+function (angle) {
+var cos = 0;
+var sin = 0;
+switch (angle) {
+case 0:
+cos = 1;
+break;
+case 90:
+sin = 1;
+break;
+case -90:
+sin = -1;
+break;
+case 180:
+cos = -1;
+break;
+default:
+var a = (angle / 180.0 * 3.141592653589793);
+cos = Math.cos (a);
+sin = Math.sin (a);
+if (Math.abs (cos) < 0.0001) cos = 0;
+if (Math.abs (sin) < 0.0001) sin = 0;
+}
+return cos + " " + sin + " " + sin + " " + -cos;
+}, "~N");
+Clazz.defineMethod (c$, "setColor", 
+function (rgb, isFill) {
+this.g (rgb[0] + " " + rgb[1] + " " + rgb[2] + (isFill ? " rg" : " RG"));
+}, "~A,~B");
+Clazz.defineMethod (c$, "setFont", 
+function (fname, size) {
+var f = this.fonts.get (fname);
+if (f == null) f = this.addFontResource (fname);
+this.g ("/" + f.getID () + " " + size + " Tf");
+}, "~S,~N");
+Clazz.defineMethod (c$, "setLineWidth", 
+function (width) {
+this.g (width + " w");
+}, "~N");
+Clazz.defineMethod (c$, "translateScale", 
+function (x, y, scale) {
+this.g (scale + " 0 0 " + scale + " " + x + " " + y + " cm");
+}, "~N,~N,~N");
+});
index c270a41..9a6e8fe 100644 (file)
Binary files a/bin/javajs/export/PDFObject.class and b/bin/javajs/export/PDFObject.class differ
index 2752622..ad20c61 100644 (file)
-Clazz.declarePackage ("javajs.export");\r
-Clazz.load (["javajs.util.SB"], "javajs.export.PDFObject", ["java.io.ByteArrayOutputStream", "java.util.Hashtable", "$.Map", "java.util.zip.Deflater", "$.DeflaterOutputStream"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.dictionary = null;\r
-this.stream = null;\r
-this.index = 0;\r
-this.type = null;\r
-this.len = 0;\r
-this.pt = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs["export"], "PDFObject", javajs.util.SB);\r
-Clazz.makeConstructor (c$, \r
-function (index) {\r
-Clazz.superConstructor (this, javajs["export"].PDFObject, []);\r
-this.index = index;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getRef", \r
-function () {\r
-return this.index + " 0 R";\r
-});\r
-Clazz.defineMethod (c$, "getID", \r
-function () {\r
-return this.type.substring (0, 1) + this.index;\r
-});\r
-Clazz.defineMethod (c$, "isFont", \r
-function () {\r
-return "Font".equals (this.type);\r
-});\r
-Clazz.defineMethod (c$, "setStream", \r
-function (stream) {\r
-this.stream = stream;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "getDef", \r
-function (key) {\r
-return this.dictionary.get (key);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "addDef", \r
-function (key, value) {\r
-if (this.dictionary == null) this.dictionary =  new java.util.Hashtable ();\r
-this.dictionary.put (key, value);\r
-if (key.equals ("Type")) this.type = (value).substring (1);\r
-}, "~S,~O");\r
-Clazz.defineMethod (c$, "setAsStream", \r
-function () {\r
-this.stream = this.toBytes (0, -1);\r
-this.setLength (0);\r
-});\r
-Clazz.defineMethod (c$, "output", \r
-function (os) {\r
-if (this.index > 0) {\r
-var s = this.index + " 0 obj\n";\r
-this.write (os, s.getBytes (), 0);\r
-}var streamLen = 0;\r
-if (this.dictionary != null) {\r
-if (this.dictionary.containsKey ("Length")) {\r
-if (this.stream == null) this.setAsStream ();\r
-streamLen = this.stream.length;\r
-var doDeflate = (streamLen > 1000);\r
-if (doDeflate) {\r
-var deflater =  new java.util.zip.Deflater (9);\r
-var outBytes =  new java.io.ByteArrayOutputStream (1024);\r
-var compBytes =  new java.util.zip.DeflaterOutputStream (outBytes, deflater);\r
-compBytes.write (this.stream, 0, streamLen);\r
-compBytes.finish ();\r
-this.stream = outBytes.toByteArray ();\r
-this.dictionary.put ("Filter", "/FlateDecode");\r
-streamLen = this.stream.length;\r
-}this.dictionary.put ("Length", "" + streamLen);\r
-}this.write (os, this.getDictionaryText (this.dictionary, "\n").getBytes (), 0);\r
-}if (this.length () > 0) this.write (os, this.toString ().getBytes (), 0);\r
-if (this.stream != null) {\r
-this.write (os, "stream\r\n".getBytes (), 0);\r
-this.write (os, this.stream, streamLen);\r
-this.write (os, "\r\nendstream\r\n".getBytes (), 0);\r
-}if (this.index > 0) this.write (os, "endobj\n".getBytes (), 0);\r
-return this.len;\r
-}, "java.io.OutputStream");\r
-Clazz.defineMethod (c$, "write", \r
-($fz = function (os, bytes, nBytes) {\r
-if (nBytes == 0) nBytes = bytes.length;\r
-this.len += nBytes;\r
-os.write (bytes, 0, nBytes);\r
-}, $fz.isPrivate = true, $fz), "java.io.OutputStream,~A,~N");\r
-Clazz.defineMethod (c$, "getDictionaryText", \r
-($fz = function (d, nl) {\r
-var sb =  new javajs.util.SB ();\r
-sb.append ("<<");\r
-if (d.containsKey ("Type")) sb.append ("/Type").appendO (d.get ("Type"));\r
-for (var e, $e = d.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) {\r
-var s = e.getKey ();\r
-if (s.equals ("Type") || s.startsWith ("!")) continue;\r
-sb.append ("/" + s);\r
-var o = e.getValue ();\r
-if (Clazz.instanceOf (o, java.util.Map)) {\r
-sb.append ((this.getDictionaryText (o, "")));\r
-continue;\r
-}s = e.getValue ();\r
-if (!s.startsWith ("/")) sb.append (" ");\r
-sb.appendO (s);\r
-}\r
-return (sb.length () > 3 ? sb.append (">>").append (nl).toString () : "");\r
-}, $fz.isPrivate = true, $fz), "java.util.Map,~S");\r
-Clazz.defineMethod (c$, "createSubdict", \r
-($fz = function (d0, dict) {\r
-var d = d0.get (dict);\r
-if (d == null) d0.put (dict, d =  new java.util.Hashtable ());\r
-return d;\r
-}, $fz.isPrivate = true, $fz), "java.util.Map,~S");\r
-Clazz.defineMethod (c$, "addResource", \r
-function (type, key, value) {\r
-var r = this.createSubdict (this.dictionary, "Resources");\r
-if (type != null) r = this.createSubdict (r, type);\r
-r.put (key, value);\r
-}, "~S,~S,~S");\r
-});\r
+Clazz.declarePackage ("javajs.export");
+Clazz.load (["javajs.util.SB"], "javajs.export.PDFObject", ["java.io.ByteArrayOutputStream", "java.util.Hashtable", "$.Map", "java.util.zip.Deflater", "$.DeflaterOutputStream"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.dictionary = null;
+this.stream = null;
+this.index = 0;
+this.type = null;
+this.len = 0;
+this.pt = 0;
+Clazz.instantialize (this, arguments);
+}, javajs["export"], "PDFObject", javajs.util.SB);
+Clazz.makeConstructor (c$, 
+function (index) {
+Clazz.superConstructor (this, javajs["export"].PDFObject, []);
+this.index = index;
+}, "~N");
+Clazz.defineMethod (c$, "getRef", 
+function () {
+return this.index + " 0 R";
+});
+Clazz.defineMethod (c$, "getID", 
+function () {
+return this.type.substring (0, 1) + this.index;
+});
+Clazz.defineMethod (c$, "isFont", 
+function () {
+return "Font".equals (this.type);
+});
+Clazz.defineMethod (c$, "setStream", 
+function (stream) {
+this.stream = stream;
+}, "~A");
+Clazz.defineMethod (c$, "getDef", 
+function (key) {
+return this.dictionary.get (key);
+}, "~S");
+Clazz.defineMethod (c$, "addDef", 
+function (key, value) {
+if (this.dictionary == null) this.dictionary =  new java.util.Hashtable ();
+this.dictionary.put (key, value);
+if (key.equals ("Type")) this.type = (value).substring (1);
+}, "~S,~O");
+Clazz.defineMethod (c$, "setAsStream", 
+function () {
+this.stream = this.toBytes (0, -1);
+this.setLength (0);
+});
+Clazz.defineMethod (c$, "output", 
+function (os) {
+if (this.index > 0) {
+var s = this.index + " 0 obj\n";
+this.write (os, s.getBytes (), 0);
+}var streamLen = 0;
+if (this.dictionary != null) {
+if (this.dictionary.containsKey ("Length")) {
+if (this.stream == null) this.setAsStream ();
+streamLen = this.stream.length;
+var doDeflate = (streamLen > 1000);
+if (doDeflate) {
+var deflater =  new java.util.zip.Deflater (9);
+var outBytes =  new java.io.ByteArrayOutputStream (1024);
+var compBytes =  new java.util.zip.DeflaterOutputStream (outBytes, deflater);
+compBytes.write (this.stream, 0, streamLen);
+compBytes.finish ();
+this.stream = outBytes.toByteArray ();
+this.dictionary.put ("Filter", "/FlateDecode");
+streamLen = this.stream.length;
+}this.dictionary.put ("Length", "" + streamLen);
+}this.write (os, this.getDictionaryText (this.dictionary, "\n").getBytes (), 0);
+}if (this.length () > 0) this.write (os, this.toString ().getBytes (), 0);
+if (this.stream != null) {
+this.write (os, "stream\r\n".getBytes (), 0);
+this.write (os, this.stream, streamLen);
+this.write (os, "\r\nendstream\r\n".getBytes (), 0);
+}if (this.index > 0) this.write (os, "endobj\n".getBytes (), 0);
+return this.len;
+}, "java.io.OutputStream");
+Clazz.defineMethod (c$, "write", 
+($fz = function (os, bytes, nBytes) {
+if (nBytes == 0) nBytes = bytes.length;
+this.len += nBytes;
+os.write (bytes, 0, nBytes);
+}, $fz.isPrivate = true, $fz), "java.io.OutputStream,~A,~N");
+Clazz.defineMethod (c$, "getDictionaryText", 
+($fz = function (d, nl) {
+var sb =  new javajs.util.SB ();
+sb.append ("<<");
+if (d.containsKey ("Type")) sb.append ("/Type").appendO (d.get ("Type"));
+for (var e, $e = d.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) {
+var s = e.getKey ();
+if (s.equals ("Type") || s.startsWith ("!")) continue;
+sb.append ("/" + s);
+var o = e.getValue ();
+if (Clazz.instanceOf (o, java.util.Map)) {
+sb.append ((this.getDictionaryText (o, "")));
+continue;
+}s = e.getValue ();
+if (!s.startsWith ("/")) sb.append (" ");
+sb.appendO (s);
+}
+return (sb.length () > 3 ? sb.append (">>").append (nl).toString () : "");
+}, $fz.isPrivate = true, $fz), "java.util.Map,~S");
+Clazz.defineMethod (c$, "createSubdict", 
+($fz = function (d0, dict) {
+var d = d0.get (dict);
+if (d == null) d0.put (dict, d =  new java.util.Hashtable ());
+return d;
+}, $fz.isPrivate = true, $fz), "java.util.Map,~S");
+Clazz.defineMethod (c$, "addResource", 
+function (type, key, value) {
+var r = this.createSubdict (this.dictionary, "Resources");
+if (type != null) r = this.createSubdict (r, type);
+r.put (key, value);
+}, "~S,~S,~S");
+});
index b32016b..c3b4dc7 100644 (file)
-Clazz.declarePackage ("javajs.img");\r
-Clazz.load (null, "javajs.img.BMPDecoder", ["javajs.util.Rdr"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.bis = null;\r
-this.temp = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.img, "BMPDecoder");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "decodeWindowsBMP", \r
-function (bytes) {\r
-try {\r
-this.bis = javajs.util.Rdr.getBIS (bytes);\r
-this.temp =  Clazz.newByteArray (4, 0);\r
-if (this.readByte () != 66 || this.readByte () != 77) return null;\r
-this.readInt ();\r
-this.readShort ();\r
-this.readShort ();\r
-this.readInt ();\r
-var imageWidth;\r
-var imageHeight;\r
-var bitsPerPixel;\r
-var nColors = 0;\r
-var imageSize = 0;\r
-var headerSize = this.readInt ();\r
-switch (headerSize) {\r
-case 12:\r
-imageWidth = this.readShort ();\r
-imageHeight = this.readShort ();\r
-this.readShort ();\r
-bitsPerPixel = this.readShort ();\r
-break;\r
-case 40:\r
-imageWidth = this.readInt ();\r
-imageHeight = this.readInt ();\r
-this.readShort ();\r
-bitsPerPixel = this.readShort ();\r
-var ncompression = this.readInt ();\r
-if (ncompression != 0) {\r
-System.out.println ("BMP Compression is :" + ncompression + " -- aborting");\r
-return null;\r
-}imageSize = this.readInt ();\r
-this.readInt ();\r
-this.readInt ();\r
-nColors = this.readInt ();\r
-this.readInt ();\r
-break;\r
-default:\r
-System.out.println ("BMP Header unrecognized, length=" + headerSize + " -- aborting");\r
-return null;\r
-}\r
-var isYReversed = (imageHeight < 0);\r
-if (isYReversed) imageHeight = -imageHeight;\r
-var nPixels = imageHeight * imageWidth;\r
-var bytesPerPixel = Clazz.doubleToInt (bitsPerPixel / 8);\r
-nColors = (nColors > 0 ? nColors : 1 << bitsPerPixel);\r
-var npad = (bytesPerPixel == 4 ? 0 : imageSize == 0 ? 4 - (imageWidth % 4) : (Clazz.doubleToInt (imageSize / imageHeight)) - imageWidth * bytesPerPixel) % 4;\r
-var palette;\r
-var buf =  Clazz.newIntArray (nPixels, 0);\r
-var dpt = (isYReversed ? imageWidth : -imageWidth);\r
-var pt0 = (isYReversed ? 0 : nPixels + dpt);\r
-var pt1 = (isYReversed ? nPixels : dpt);\r
-switch (bitsPerPixel) {\r
-case 32:\r
-case 24:\r
-for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0; i < imageWidth; i++) buf[pt + i] = this.readColor (bytesPerPixel);\r
-\r
-\r
-break;\r
-case 8:\r
-palette =  Clazz.newIntArray (nColors, 0);\r
-for (var i = 0; i < nColors; i++) palette[i] = this.readColor (4);\r
-\r
-for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0; i < imageWidth; i++) buf[pt + i] = palette[this.readByte ()];\r
-\r
-\r
-break;\r
-case 4:\r
-npad = (4 - ((Clazz.doubleToInt ((imageWidth + 1) / 2)) % 4)) % 4;\r
-palette =  Clazz.newIntArray (nColors, 0);\r
-for (var i = 0; i < nColors; i++) palette[i] = this.readColor (4);\r
-\r
-var b4 = 0;\r
-for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0, shift = 4; i < imageWidth; i++, shift = 4 - shift) buf[pt + i] = palette[((shift == 4 ? (b4 = this.readByte ()) : b4) >> shift) & 0xF];\r
-\r
-\r
-break;\r
-case 1:\r
-var color1 = this.readColor (3);\r
-var color2 = this.readColor (3);\r
-npad = (4 - ((Clazz.doubleToInt ((imageWidth + 7) / 8)) % 4)) % 4;\r
-var b = 0;\r
-for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0, bpt = -1; i < imageWidth; i++, bpt--) {\r
-if (bpt < 0) {\r
-b = this.readByte ();\r
-bpt = 7;\r
-}buf[pt + i] = ((b & (1 << bpt)) == 0 ? color1 : color2);\r
-}\r
-\r
-break;\r
-case 64:\r
-case 2:\r
-default:\r
-System.out.println ("Not a 32-, 24-, 8-, 4-, or 1-bit Windows Bitmap, aborting...");\r
-return null;\r
-}\r
-return  Clazz.newArray (-1, [buf, Integer.$valueOf (imageWidth), Integer.$valueOf (imageHeight)]);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println ("Caught exception in loadbitmap!");\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return null;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "pad", \r
-($fz = function (npad) {\r
-for (var i = 0; i < npad; i++) this.readByte ();\r
-\r
-return true;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "readColor", \r
-($fz = function (n) {\r
-this.bis.read (this.temp, 0, n);\r
-return -16777216 | ((this.temp[2] & 0xff) << 16) | ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "readInt", \r
-($fz = function () {\r
-this.bis.read (this.temp, 0, 4);\r
-return ((this.temp[3] & 0xff) << 24) | ((this.temp[2] & 0xff) << 16) | ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "readShort", \r
-($fz = function () {\r
-this.bis.read (this.temp, 0, 2);\r
-return ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "readByte", \r
-($fz = function () {\r
-this.bis.read (this.temp, 0, 1);\r
-return this.temp[0] & 0xff;\r
-}, $fz.isPrivate = true, $fz));\r
-});\r
+Clazz.declarePackage ("javajs.img");
+Clazz.load (null, "javajs.img.BMPDecoder", ["javajs.util.Rdr"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.bis = null;
+this.temp = null;
+Clazz.instantialize (this, arguments);
+}, javajs.img, "BMPDecoder");
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.defineMethod (c$, "decodeWindowsBMP", 
+function (bytes) {
+try {
+this.bis = javajs.util.Rdr.getBIS (bytes);
+this.temp =  Clazz.newByteArray (4, 0);
+if (this.readByte () != 66 || this.readByte () != 77) return null;
+this.readInt ();
+this.readShort ();
+this.readShort ();
+this.readInt ();
+var imageWidth;
+var imageHeight;
+var bitsPerPixel;
+var nColors = 0;
+var imageSize = 0;
+var headerSize = this.readInt ();
+switch (headerSize) {
+case 12:
+imageWidth = this.readShort ();
+imageHeight = this.readShort ();
+this.readShort ();
+bitsPerPixel = this.readShort ();
+break;
+case 40:
+imageWidth = this.readInt ();
+imageHeight = this.readInt ();
+this.readShort ();
+bitsPerPixel = this.readShort ();
+var ncompression = this.readInt ();
+if (ncompression != 0) {
+System.out.println ("BMP Compression is :" + ncompression + " -- aborting");
+return null;
+}imageSize = this.readInt ();
+this.readInt ();
+this.readInt ();
+nColors = this.readInt ();
+this.readInt ();
+break;
+default:
+System.out.println ("BMP Header unrecognized, length=" + headerSize + " -- aborting");
+return null;
+}
+var isYReversed = (imageHeight < 0);
+if (isYReversed) imageHeight = -imageHeight;
+var nPixels = imageHeight * imageWidth;
+var bytesPerPixel = Clazz.doubleToInt (bitsPerPixel / 8);
+nColors = (nColors > 0 ? nColors : 1 << bitsPerPixel);
+var npad = (bytesPerPixel == 4 ? 0 : imageSize == 0 ? 4 - (imageWidth % 4) : (Clazz.doubleToInt (imageSize / imageHeight)) - imageWidth * bytesPerPixel) % 4;
+var palette;
+var buf =  Clazz.newIntArray (nPixels, 0);
+var dpt = (isYReversed ? imageWidth : -imageWidth);
+var pt0 = (isYReversed ? 0 : nPixels + dpt);
+var pt1 = (isYReversed ? nPixels : dpt);
+switch (bitsPerPixel) {
+case 32:
+case 24:
+for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0; i < imageWidth; i++) buf[pt + i] = this.readColor (bytesPerPixel);
+
+
+break;
+case 8:
+palette =  Clazz.newIntArray (nColors, 0);
+for (var i = 0; i < nColors; i++) palette[i] = this.readColor (4);
+
+for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0; i < imageWidth; i++) buf[pt + i] = palette[this.readByte ()];
+
+
+break;
+case 4:
+npad = (4 - ((Clazz.doubleToInt ((imageWidth + 1) / 2)) % 4)) % 4;
+palette =  Clazz.newIntArray (nColors, 0);
+for (var i = 0; i < nColors; i++) palette[i] = this.readColor (4);
+
+var b4 = 0;
+for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0, shift = 4; i < imageWidth; i++, shift = 4 - shift) buf[pt + i] = palette[((shift == 4 ? (b4 = this.readByte ()) : b4) >> shift) & 0xF];
+
+
+break;
+case 1:
+var color1 = this.readColor (3);
+var color2 = this.readColor (3);
+npad = (4 - ((Clazz.doubleToInt ((imageWidth + 7) / 8)) % 4)) % 4;
+var b = 0;
+for (var pt = pt0; pt != pt1; pt += dpt, this.pad (npad)) for (var i = 0, bpt = -1; i < imageWidth; i++, bpt--) {
+if (bpt < 0) {
+b = this.readByte ();
+bpt = 7;
+}buf[pt + i] = ((b & (1 << bpt)) == 0 ? color1 : color2);
+}
+
+break;
+case 64:
+case 2:
+default:
+System.out.println ("Not a 32-, 24-, 8-, 4-, or 1-bit Windows Bitmap, aborting...");
+return null;
+}
+return  Clazz.newArray (-1, [buf, Integer.$valueOf (imageWidth), Integer.$valueOf (imageHeight)]);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println ("Caught exception in loadbitmap!");
+} else {
+throw e;
+}
+}
+return null;
+}, "~A");
+Clazz.defineMethod (c$, "pad", 
+($fz = function (npad) {
+for (var i = 0; i < npad; i++) this.readByte ();
+
+return true;
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "readColor", 
+($fz = function (n) {
+this.bis.read (this.temp, 0, n);
+return -16777216 | ((this.temp[2] & 0xff) << 16) | ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff;
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "readInt", 
+($fz = function () {
+this.bis.read (this.temp, 0, 4);
+return ((this.temp[3] & 0xff) << 24) | ((this.temp[2] & 0xff) << 16) | ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "readShort", 
+($fz = function () {
+this.bis.read (this.temp, 0, 2);
+return ((this.temp[1] & 0xff) << 8) | this.temp[0] & 0xff;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "readByte", 
+($fz = function () {
+this.bis.read (this.temp, 0, 1);
+return this.temp[0] & 0xff;
+}, $fz.isPrivate = true, $fz));
+});
index 3a7582e..2dca50d 100644 (file)
@@ -1,74 +1,74 @@
-Clazz.declarePackage ("javajs.img");\r
-Clazz.load (["javajs.img.ImageEncoder"], "javajs.img.CRCEncoder", ["java.util.zip.CRC32", "javajs.util.AU"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.startPos = 0;\r
-this.bytePos = 0;\r
-this.crc = null;\r
-this.pngBytes = null;\r
-this.dataLen = 0;\r
-this.int2 = null;\r
-this.int4 = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.img, "CRCEncoder", javajs.img.ImageEncoder);\r
-Clazz.prepareFields (c$, function () {\r
-this.int2 =  Clazz.newByteArray (2, 0);\r
-this.int4 =  Clazz.newByteArray (4, 0);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javajs.img.CRCEncoder, []);\r
-this.pngBytes =  Clazz.newByteArray (250, 0);\r
-this.crc =  new java.util.zip.CRC32 ();\r
-});\r
-Clazz.defineMethod (c$, "setData", \r
-function (b, pt) {\r
-this.pngBytes = b;\r
-this.dataLen = b.length;\r
-this.startPos = this.bytePos = pt;\r
-}, "~A,~N");\r
-Clazz.defineMethod (c$, "getBytes", \r
-function () {\r
-return (this.dataLen == this.pngBytes.length ? this.pngBytes : javajs.util.AU.arrayCopyByte (this.pngBytes, this.dataLen));\r
-});\r
-Clazz.defineMethod (c$, "writeCRC", \r
-function () {\r
-this.crc.reset ();\r
-this.crc.update (this.pngBytes, this.startPos, this.bytePos - this.startPos);\r
-this.writeInt4 (this.crc.getValue ());\r
-});\r
-Clazz.defineMethod (c$, "writeInt2", \r
-function (n) {\r
-this.int2[0] = ((n >> 8) & 0xff);\r
-this.int2[1] = (n & 0xff);\r
-this.writeBytes (this.int2);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "writeInt4", \r
-function (n) {\r
-javajs.img.CRCEncoder.getInt4 (n, this.int4);\r
-this.writeBytes (this.int4);\r
-}, "~N");\r
-c$.getInt4 = Clazz.defineMethod (c$, "getInt4", \r
-function (n, int4) {\r
-int4[0] = ((n >> 24) & 0xff);\r
-int4[1] = ((n >> 16) & 0xff);\r
-int4[2] = ((n >> 8) & 0xff);\r
-int4[3] = (n & 0xff);\r
-}, "~N,~A");\r
-Clazz.defineMethod (c$, "writeByte", \r
-function (b) {\r
-var temp =  Clazz.newByteArray (-1, [b]);\r
-this.writeBytes (temp);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "writeString", \r
-function (s) {\r
-this.writeBytes (s.getBytes ());\r
-}, "~S");\r
-Clazz.defineMethod (c$, "writeBytes", \r
-function (data) {\r
-var newPos = this.bytePos + data.length;\r
-this.dataLen = Math.max (this.dataLen, newPos);\r
-if (newPos > this.pngBytes.length) this.pngBytes = javajs.util.AU.arrayCopyByte (this.pngBytes, newPos + 16);\r
-System.arraycopy (data, 0, this.pngBytes, this.bytePos, data.length);\r
-this.bytePos = newPos;\r
-}, "~A");\r
-});\r
+Clazz.declarePackage ("javajs.img");
+Clazz.load (["javajs.img.ImageEncoder"], "javajs.img.CRCEncoder", ["java.util.zip.CRC32", "javajs.util.AU"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.startPos = 0;
+this.bytePos = 0;
+this.crc = null;
+this.pngBytes = null;
+this.dataLen = 0;
+this.int2 = null;
+this.int4 = null;
+Clazz.instantialize (this, arguments);
+}, javajs.img, "CRCEncoder", javajs.img.ImageEncoder);
+Clazz.prepareFields (c$, function () {
+this.int2 =  Clazz.newByteArray (2, 0);
+this.int4 =  Clazz.newByteArray (4, 0);
+});
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javajs.img.CRCEncoder, []);
+this.pngBytes =  Clazz.newByteArray (250, 0);
+this.crc =  new java.util.zip.CRC32 ();
+});
+Clazz.defineMethod (c$, "setData", 
+function (b, pt) {
+this.pngBytes = b;
+this.dataLen = b.length;
+this.startPos = this.bytePos = pt;
+}, "~A,~N");
+Clazz.defineMethod (c$, "getBytes", 
+function () {
+return (this.dataLen == this.pngBytes.length ? this.pngBytes : javajs.util.AU.arrayCopyByte (this.pngBytes, this.dataLen));
+});
+Clazz.defineMethod (c$, "writeCRC", 
+function () {
+this.crc.reset ();
+this.crc.update (this.pngBytes, this.startPos, this.bytePos - this.startPos);
+this.writeInt4 (this.crc.getValue ());
+});
+Clazz.defineMethod (c$, "writeInt2", 
+function (n) {
+this.int2[0] = ((n >> 8) & 0xff);
+this.int2[1] = (n & 0xff);
+this.writeBytes (this.int2);
+}, "~N");
+Clazz.defineMethod (c$, "writeInt4", 
+function (n) {
+javajs.img.CRCEncoder.getInt4 (n, this.int4);
+this.writeBytes (this.int4);
+}, "~N");
+c$.getInt4 = Clazz.defineMethod (c$, "getInt4", 
+function (n, int4) {
+int4[0] = ((n >> 24) & 0xff);
+int4[1] = ((n >> 16) & 0xff);
+int4[2] = ((n >> 8) & 0xff);
+int4[3] = (n & 0xff);
+}, "~N,~A");
+Clazz.defineMethod (c$, "writeByte", 
+function (b) {
+var temp =  Clazz.newByteArray (-1, [b]);
+this.writeBytes (temp);
+}, "~N");
+Clazz.defineMethod (c$, "writeString", 
+function (s) {
+this.writeBytes (s.getBytes ());
+}, "~S");
+Clazz.defineMethod (c$, "writeBytes", 
+function (data) {
+var newPos = this.bytePos + data.length;
+this.dataLen = Math.max (this.dataLen, newPos);
+if (newPos > this.pngBytes.length) this.pngBytes = javajs.util.AU.arrayCopyByte (this.pngBytes, newPos + 16);
+System.arraycopy (data, 0, this.pngBytes, this.bytePos, data.length);
+this.bytePos = newPos;
+}, "~A");
+});
index 738eed0..305c142 100644 (file)
Binary files a/bin/javajs/img/GifEncoder$ColorCell.class and b/bin/javajs/img/GifEncoder$ColorCell.class differ
index ee78a46..a2954d3 100644 (file)
Binary files a/bin/javajs/img/GifEncoder.class and b/bin/javajs/img/GifEncoder.class differ
index dd22f43..9170951 100644 (file)
-Clazz.declarePackage ("javajs.img");\r
-Clazz.load (["javajs.img.ImageEncoder", "javajs.util.Lst", "$.P3"], "javajs.img.GifEncoder", ["java.lang.Boolean", "java.util.Hashtable", "javajs.util.CU", "$.M3"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.params = null;\r
-this.palette = null;\r
-this.backgroundColor = 0;\r
-this.interlaced = false;\r
-this.addHeader = true;\r
-this.addImage = true;\r
-this.addTrailer = true;\r
-this.isTransparent = false;\r
-this.floydSteinberg = true;\r
-this.capturing = false;\r
-this.looping = false;\r
-this.delayTime100ths = -1;\r
-this.bitsPerPixel = 1;\r
-this.byteCount = 0;\r
-if (!Clazz.isClassDefined ("javajs.img.GifEncoder.ColorItem")) {\r
-javajs.img.GifEncoder.$GifEncoder$ColorItem$ ();\r
-}\r
-if (!Clazz.isClassDefined ("javajs.img.GifEncoder.ColorCell")) {\r
-javajs.img.GifEncoder.$GifEncoder$ColorCell$ ();\r
-}\r
-this.initCodeSize = 0;\r
-this.curpt = 0;\r
-this.nBits = 0;\r
-this.maxbits = 12;\r
-this.maxcode = 0;\r
-this.maxmaxcode = 4096;\r
-this.htab = null;\r
-this.codetab = null;\r
-this.hsize = 5003;\r
-this.freeEnt = 0;\r
-this.clearFlag = false;\r
-this.clearCode = 0;\r
-this.EOFCode = 0;\r
-this.countDown = 0;\r
-this.pass = 0;\r
-this.curx = 0;\r
-this.cury = 0;\r
-this.curAccum = 0;\r
-this.curBits = 0;\r
-this.masks = null;\r
-this.bufPt = 0;\r
-this.buf = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.img, "GifEncoder", javajs.img.ImageEncoder);\r
-Clazz.prepareFields (c$, function () {\r
-this.htab =  Clazz.newIntArray (5003, 0);\r
-this.codetab =  Clazz.newIntArray (5003, 0);\r
-this.masks =  Clazz.newIntArray (-1, [0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF]);\r
-this.buf =  Clazz.newByteArray (256, 0);\r
-});\r
-Clazz.overrideMethod (c$, "setParams", \r
-function (params) {\r
-this.params = params;\r
-var ic = params.get ("transparentColor");\r
-if (ic == null) {\r
-ic = params.get ("backgroundColor");\r
-if (ic != null) this.backgroundColor = ic.intValue ();\r
-} else {\r
-this.backgroundColor = ic.intValue ();\r
-this.isTransparent = true;\r
-}this.interlaced = (Boolean.TRUE === params.get ("interlaced"));\r
-if (params.containsKey ("captureRootExt") || !params.containsKey ("captureMode")) return;\r
-this.interlaced = false;\r
-this.capturing = true;\r
-try {\r
-this.byteCount = (params.get ("captureByteCount")).intValue ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-switch ("maec".indexOf ((params.get ("captureMode")).substring (0, 1))) {\r
-case 0:\r
-params.put ("captureMode", "add");\r
-this.addImage = false;\r
-this.addTrailer = false;\r
-break;\r
-case 1:\r
-this.addHeader = false;\r
-this.addTrailer = false;\r
-var fps = Math.abs ((params.get ("captureFps")).intValue ());\r
-this.delayTime100ths = (fps == 0 ? 0 : Clazz.doubleToInt (100 / fps));\r
-this.looping = (Boolean.FALSE !== params.get ("captureLooping"));\r
-break;\r
-case 2:\r
-this.addHeader = false;\r
-this.addImage = false;\r
-break;\r
-case 3:\r
-this.addHeader = false;\r
-this.addImage = false;\r
-this.out.cancel ();\r
-break;\r
-}\r
-}, "java.util.Map");\r
-Clazz.overrideMethod (c$, "generate", \r
-function () {\r
-if (this.addHeader) this.writeHeader ();\r
-this.addHeader = false;\r
-if (this.addImage) {\r
-this.createPalette ();\r
-this.writeGraphicControlExtension ();\r
-if (this.delayTime100ths >= 0 && this.looping) this.writeNetscapeLoopExtension ();\r
-this.writeImage ();\r
-}});\r
-Clazz.overrideMethod (c$, "close", \r
-function () {\r
-if (this.addTrailer) {\r
-this.writeTrailer ();\r
-} else {\r
-this.doClose = false;\r
-}if (this.capturing) this.params.put ("captureByteCount", Integer.$valueOf (this.byteCount));\r
-});\r
-Clazz.defineMethod (c$, "createPalette", \r
-($fz = function () {\r
-var tempColors =  new javajs.util.Lst ();\r
-var ciHash =  new java.util.Hashtable ();\r
-for (var i = 0, n = this.pixels.length; i < n; i++) {\r
-var rgb = this.pixels[i];\r
-var key = Integer.$valueOf (rgb);\r
-var item = ciHash.get (key);\r
-if (item == null) {\r
-item = Clazz.innerTypeInstance (javajs.img.GifEncoder.ColorItem, this, null, rgb, rgb == this.backgroundColor);\r
-ciHash.put (key, item);\r
-tempColors.addLast (item);\r
-}}\r
-var nColors = tempColors.size ();\r
-System.out.println ("GIF total image colors: " + nColors);\r
-ciHash = null;\r
-var cells = this.quantizeColors (tempColors);\r
-nColors = cells.size ();\r
-System.out.println ("GIF final color count: " + nColors);\r
-var colorMap =  new java.util.Hashtable ();\r
-this.bitsPerPixel = (nColors <= 2 ? 1 : nColors <= 4 ? 2 : nColors <= 16 ? 4 : 8);\r
-this.palette =  new Array (1 << this.bitsPerPixel);\r
-for (var i = 0; i < nColors; i++) {\r
-var c = cells.get (i);\r
-colorMap.put (Integer.$valueOf (javajs.util.CU.colorPtToFFRGB (this.palette[i] = c.setColor ())), c);\r
-}\r
-this.pixels = this.indexPixels (cells, colorMap);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "quantizeColors", \r
-($fz = function (tempColors) {\r
-var n = tempColors.size ();\r
-var cells =  new javajs.util.Lst ();\r
-var cc = Clazz.innerTypeInstance (javajs.img.GifEncoder.ColorCell, this, null, 0);\r
-cc.addLast (Clazz.innerTypeInstance (javajs.img.GifEncoder.ColorItem, this, null, this.backgroundColor, true));\r
-cells.addLast (cc);\r
-cc = Clazz.innerTypeInstance (javajs.img.GifEncoder.ColorCell, this, null, 1);\r
-if (n > 256) cells.addLast (cc);\r
-for (var i = 0; i < n; i++) {\r
-var c = tempColors.get (i);\r
-if (c.isBackground) continue;\r
-cc.addLast (c);\r
-if (n <= 256) {\r
-cells.addLast (cc);\r
-cc = Clazz.innerTypeInstance (javajs.img.GifEncoder.ColorCell, this, null, cells.size ());\r
-}}\r
-tempColors.clear ();\r
-if (n > 256) while ((n = cells.size ()) < 256) {\r
-var maxVol = 0;\r
-var maxCell = null;\r
-for (var i = n; --i >= 1; ) {\r
-var c = cells.get (i);\r
-var v = c.getVolume (false);\r
-if (v > maxVol) {\r
-maxVol = v;\r
-maxCell = c;\r
-}}\r
-if (maxCell == null || !maxCell.splitCell (cells)) break;\r
-}\r
-return cells;\r
-}, $fz.isPrivate = true, $fz), "javajs.util.Lst");\r
-Clazz.defineMethod (c$, "indexPixels", \r
-($fz = function (cells, colorMap) {\r
-var w2 = this.width + 2;\r
-var errors =  new Array (w2);\r
-var newPixels =  Clazz.newIntArray (this.pixels.length, 0);\r
-var err =  new javajs.util.P3 ();\r
-var lab;\r
-var rgb;\r
-var nearestCell =  new java.util.Hashtable ();\r
-for (var i = 0, p = 0; i < this.height; ++i) {\r
-var notLastRow = (i != this.height - 1);\r
-for (var j = 0; j < this.width; ++j, p++) {\r
-if (this.pixels[p] == this.backgroundColor) {\r
-continue;\r
-}var pe = errors[p % w2];\r
-if (pe == null || pe.x == 3.4028235E38) {\r
-lab = null;\r
-rgb = this.pixels[p];\r
-} else {\r
-lab = this.toLABnorm (this.pixels[p]);\r
-err = pe;\r
-err.x = this.clamp (err.x, -75, 75);\r
-err.y = this.clamp (err.y, -75, 75);\r
-err.z = this.clamp (err.z, -75, 75);\r
-lab.add (err);\r
-rgb = javajs.util.CU.colorPtToFFRGB (this.toRGB (lab));\r
-}var key = Integer.$valueOf (rgb);\r
-var cell = colorMap.get (key);\r
-if (cell == null) {\r
-lab = this.toLABnorm (rgb);\r
-cell = nearestCell.get (key);\r
-if (cell == null) {\r
-var maxerr = 3.4028235E38;\r
-for (var ib = cells.size (); --ib >= 1; ) {\r
-var c = cells.get (ib);\r
-err.sub2 (lab, c.center);\r
-var d = err.lengthSquared ();\r
-if (d < maxerr) {\r
-maxerr = d;\r
-cell = c;\r
-}}\r
-nearestCell.put (key, cell);\r
-}if (this.floydSteinberg) {\r
-err.sub2 (lab, cell.center);\r
-var notLastCol = (j < this.width - 1);\r
-if (notLastCol) this.addError (err, 7, errors, p + 1, w2);\r
-if (notLastRow) {\r
-if (j > 0) this.addError (err, 3, errors, p + this.width - 1, w2);\r
-this.addError (err, 5, errors, p + this.width, w2);\r
-if (notLastCol) this.addError (err, 1, errors, p + this.width + 1, w2);\r
-}}err.x = 3.4028235E38;\r
-}newPixels[p] = cell.index;\r
-}\r
-}\r
-return newPixels;\r
-}, $fz.isPrivate = true, $fz), "javajs.util.Lst,java.util.Map");\r
-Clazz.defineMethod (c$, "addError", \r
-($fz = function (err, f, errors, p, w2) {\r
-if (this.pixels[p] == this.backgroundColor) return;\r
-p %= w2;\r
-var errp = errors[p];\r
-if (errp == null) errp = errors[p] =  new javajs.util.P3 ();\r
- else if (errp.x == 3.4028235E38) errp.set (0, 0, 0);\r
-errp.scaleAdd2 (f / 16, err, errp);\r
-}, $fz.isPrivate = true, $fz), "javajs.util.P3,~N,~A,~N,~N");\r
-Clazz.defineMethod (c$, "toLABnorm", \r
-function (rgb) {\r
-var lab = javajs.util.CU.colorPtFromInt (rgb, null);\r
-this.rgbToXyz (lab, lab);\r
-this.xyzToLab (lab, lab);\r
-lab.y = (lab.y + 86.185) / (184.439) * 100;\r
-lab.z = (lab.z + 107.863) / (202.345) * 100;\r
-return lab;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "toRGB", \r
-function (lab) {\r
-var xyz = javajs.util.P3.newP (lab);\r
-xyz.y = xyz.y / 100 * (184.439) - 86.185;\r
-xyz.z = xyz.z / 100 * (202.345) - 107.863;\r
-this.labToXyz (xyz, xyz);\r
-return this.xyzToRgb (xyz, xyz);\r
-}, "javajs.util.P3");\r
-Clazz.defineMethod (c$, "rgbToXyz", \r
-function (rgb, xyz) {\r
-if (xyz == null) xyz =  new javajs.util.P3 ();\r
-xyz.x = this.sxyz (rgb.x);\r
-xyz.y = this.sxyz (rgb.y);\r
-xyz.z = this.sxyz (rgb.z);\r
-javajs.img.GifEncoder.rgb2xyz.rotate (xyz);\r
-return xyz;\r
-}, "javajs.util.P3,javajs.util.P3");\r
-Clazz.defineMethod (c$, "sxyz", \r
-($fz = function (x) {\r
-x /= 255;\r
-return (x <= 0.04045 ? x / 12.92 : Math.pow (((x + 0.055) / 1.055), 2.4)) * 100;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "xyzToRgb", \r
-function (xyz, rgb) {\r
-if (rgb == null) rgb =  new javajs.util.P3 ();\r
-rgb.setT (xyz);\r
-rgb.scale (0.01);\r
-javajs.img.GifEncoder.xyz2rgb.rotate (rgb);\r
-rgb.x = this.clamp (this.srgb (rgb.x), 0, 255);\r
-rgb.y = this.clamp (this.srgb (rgb.y), 0, 255);\r
-rgb.z = this.clamp (this.srgb (rgb.z), 0, 255);\r
-return rgb;\r
-}, "javajs.util.P3,javajs.util.P3");\r
-Clazz.defineMethod (c$, "srgb", \r
-($fz = function (x) {\r
-return (x > 0.0031308 ? (1.055 * Math.pow (x, 0.4166666666666667)) - 0.055 : x * 12.92) * 255;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "xyzToLab", \r
-function (xyz, lab) {\r
-if (lab == null) lab =  new javajs.util.P3 ();\r
-var x = this.flab (xyz.x / 95.0429);\r
-var y = this.flab (xyz.y / 100);\r
-var z = this.flab (xyz.z / 108.89);\r
-lab.x = (116 * y) - 16;\r
-lab.y = 500 * (x - y);\r
-lab.z = 200 * (y - z);\r
-return lab;\r
-}, "javajs.util.P3,javajs.util.P3");\r
-Clazz.defineMethod (c$, "flab", \r
-($fz = function (t) {\r
-return (t > 8.85645168E-3 ? Math.pow (t, 0.333333333) : 7.78703704 * t + 0.137931034);\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "labToXyz", \r
-function (lab, xyz) {\r
-if (xyz == null) xyz =  new javajs.util.P3 ();\r
-xyz.setT (lab);\r
-var y = (xyz.x + 16) / 116;\r
-var x = xyz.y / 500 + y;\r
-var z = y - xyz.z / 200;\r
-xyz.x = this.fxyz (x) * 95.0429;\r
-xyz.y = this.fxyz (y) * 100;\r
-xyz.z = this.fxyz (z) * 108.89;\r
-return xyz;\r
-}, "javajs.util.P3,javajs.util.P3");\r
-Clazz.defineMethod (c$, "fxyz", \r
-($fz = function (t) {\r
-return (t > 0.206896552 ? t * t * t : 0.128418549 * (t - 0.137931034));\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "clamp", \r
-($fz = function (c, min, max) {\r
-c = (c < min ? min : c > max ? max : c);\r
-return (min == 0 ? Math.round (c) : c);\r
-}, $fz.isPrivate = true, $fz), "~N,~N,~N");\r
-Clazz.defineMethod (c$, "writeHeader", \r
-($fz = function () {\r
-this.putString ("GIF89a");\r
-this.putWord (this.width);\r
-this.putWord (this.height);\r
-this.putByte (0);\r
-this.putByte (0);\r
-this.putByte (0);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "writeGraphicControlExtension", \r
-($fz = function () {\r
-if (this.isTransparent || this.delayTime100ths >= 0) {\r
-this.putByte (0x21);\r
-this.putByte (0xf9);\r
-this.putByte (4);\r
-this.putByte ((this.isTransparent ? 9 : 0) | (this.delayTime100ths > 0 ? 2 : 0));\r
-this.putWord (this.delayTime100ths > 0 ? this.delayTime100ths : 0);\r
-this.putByte (0);\r
-this.putByte (0);\r
-}}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "writeNetscapeLoopExtension", \r
-($fz = function () {\r
-this.putByte (0x21);\r
-this.putByte (0xff);\r
-this.putByte (0x0B);\r
-this.putString ("NETSCAPE2.0");\r
-this.putByte (3);\r
-this.putByte (1);\r
-this.putWord (0);\r
-this.putByte (0);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "writeImage", \r
-($fz = function () {\r
-this.putByte (0x2C);\r
-this.putWord (0);\r
-this.putWord (0);\r
-this.putWord (this.width);\r
-this.putWord (this.height);\r
-var packedFields = 0x80 | (this.interlaced ? 0x40 : 0) | (this.bitsPerPixel - 1);\r
-this.putByte (packedFields);\r
-var colorMapSize = 1 << this.bitsPerPixel;\r
-var p =  new javajs.util.P3 ();\r
-for (var i = 0; i < colorMapSize; i++) {\r
-if (this.palette[i] != null) p = this.palette[i];\r
-this.putByte (Clazz.floatToInt (p.x));\r
-this.putByte (Clazz.floatToInt (p.y));\r
-this.putByte (Clazz.floatToInt (p.z));\r
-}\r
-this.putByte (this.initCodeSize = (this.bitsPerPixel <= 1 ? 2 : this.bitsPerPixel));\r
-this.compress ();\r
-this.putByte (0);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "writeTrailer", \r
-($fz = function () {\r
-this.putByte (0x3B);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "nextPixel", \r
-($fz = function () {\r
-if (this.countDown-- == 0) return -1;\r
-var colorIndex = this.pixels[this.curpt];\r
-++this.curx;\r
-if (this.curx == this.width) {\r
-this.curx = 0;\r
-if (this.interlaced) this.updateY (javajs.img.GifEncoder.INTERLACE_PARAMS[this.pass], javajs.img.GifEncoder.INTERLACE_PARAMS[this.pass + 4]);\r
- else ++this.cury;\r
-}this.curpt = this.cury * this.width + this.curx;\r
-return colorIndex & 0xff;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "updateY", \r
-($fz = function (yNext, yNew) {\r
-this.cury += yNext;\r
-if (yNew >= 0 && this.cury >= this.height) {\r
-this.cury = yNew;\r
-++this.pass;\r
-}}, $fz.isPrivate = true, $fz), "~N,~N");\r
-Clazz.defineMethod (c$, "putWord", \r
-($fz = function (w) {\r
-this.putByte (w);\r
-this.putByte (w >> 8);\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-c$.MAXCODE = Clazz.defineMethod (c$, "MAXCODE", \r
-($fz = function (nBits) {\r
-return (1 << nBits) - 1;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "compress", \r
-($fz = function () {\r
-this.countDown = this.width * this.height;\r
-this.pass = 0;\r
-this.curx = 0;\r
-this.cury = 0;\r
-this.clearFlag = false;\r
-this.nBits = this.initCodeSize + 1;\r
-this.maxcode = javajs.img.GifEncoder.MAXCODE (this.nBits);\r
-this.clearCode = 1 << this.initCodeSize;\r
-this.EOFCode = this.clearCode + 1;\r
-this.freeEnt = this.clearCode + 2;\r
-this.bufPt = 0;\r
-var ent = this.nextPixel ();\r
-var hshift = 0;\r
-var fcode;\r
-for (fcode = this.hsize; fcode < 65536; fcode *= 2) ++hshift;\r
-\r
-hshift = 8 - hshift;\r
-var hsizeReg = this.hsize;\r
-this.clearHash (hsizeReg);\r
-this.output (this.clearCode);\r
-var c;\r
-outer_loop : while ((c = this.nextPixel ()) != -1) {\r
-fcode = (c << this.maxbits) + ent;\r
-var i = (c << hshift) ^ ent;\r
-if (this.htab[i] == fcode) {\r
-ent = this.codetab[i];\r
-continue;\r
-} else if (this.htab[i] >= 0) {\r
-var disp = hsizeReg - i;\r
-if (i == 0) disp = 1;\r
-do {\r
-if ((i -= disp) < 0) i += hsizeReg;\r
-if (this.htab[i] == fcode) {\r
-ent = this.codetab[i];\r
-continue outer_loop;\r
-}} while (this.htab[i] >= 0);\r
-}this.output (ent);\r
-ent = c;\r
-if (this.freeEnt < this.maxmaxcode) {\r
-this.codetab[i] = this.freeEnt++;\r
-this.htab[i] = fcode;\r
-} else {\r
-this.clearBlock ();\r
-}}\r
-this.output (ent);\r
-this.output (this.EOFCode);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "output", \r
-($fz = function (code) {\r
-this.curAccum &= this.masks[this.curBits];\r
-if (this.curBits > 0) this.curAccum |= (code << this.curBits);\r
- else this.curAccum = code;\r
-this.curBits += this.nBits;\r
-while (this.curBits >= 8) {\r
-this.byteOut ((this.curAccum & 0xff));\r
-this.curAccum >>= 8;\r
-this.curBits -= 8;\r
-}\r
-if (this.freeEnt > this.maxcode || this.clearFlag) {\r
-if (this.clearFlag) {\r
-this.maxcode = javajs.img.GifEncoder.MAXCODE (this.nBits = this.initCodeSize + 1);\r
-this.clearFlag = false;\r
-} else {\r
-++this.nBits;\r
-if (this.nBits == this.maxbits) this.maxcode = this.maxmaxcode;\r
- else this.maxcode = javajs.img.GifEncoder.MAXCODE (this.nBits);\r
-}}if (code == this.EOFCode) {\r
-while (this.curBits > 0) {\r
-this.byteOut ((this.curAccum & 0xff));\r
-this.curAccum >>= 8;\r
-this.curBits -= 8;\r
-}\r
-this.flushBytes ();\r
-}}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "clearBlock", \r
-($fz = function () {\r
-this.clearHash (this.hsize);\r
-this.freeEnt = this.clearCode + 2;\r
-this.clearFlag = true;\r
-this.output (this.clearCode);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "clearHash", \r
-($fz = function (hsize) {\r
-for (var i = 0; i < hsize; ++i) this.htab[i] = -1;\r
-\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "byteOut", \r
-($fz = function (c) {\r
-this.buf[this.bufPt++] = c;\r
-if (this.bufPt >= 254) this.flushBytes ();\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "flushBytes", \r
-function () {\r
-if (this.bufPt > 0) {\r
-this.putByte (this.bufPt);\r
-this.out.write (this.buf, 0, this.bufPt);\r
-this.byteCount += this.bufPt;\r
-this.bufPt = 0;\r
-}});\r
-c$.$GifEncoder$ColorItem$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.isBackground = false;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.img.GifEncoder, "ColorItem", javajs.util.P3);\r
-Clazz.makeConstructor (c$, \r
-function (a, b) {\r
-Clazz.superConstructor (this, javajs.img.GifEncoder.ColorItem, []);\r
-this.isBackground = b;\r
-this.setT (this.b$["javajs.img.GifEncoder"].toLABnorm (a));\r
-}, "~N,~B");\r
-c$ = Clazz.p0p ();\r
-};\r
-c$.$GifEncoder$ColorCell$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.index = 0;\r
-this.center = null;\r
-this.volume = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.img.GifEncoder, "ColorCell", javajs.util.Lst);\r
-Clazz.makeConstructor (c$, \r
-function (a) {\r
-Clazz.superConstructor (this, javajs.img.GifEncoder.ColorCell, []);\r
-this.index = a;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getVolume", \r
-function (a) {\r
-if (this.volume != 0) return this.volume;\r
-if (this.size () < 2) return -1;\r
-var b = -2147483647;\r
-var c = 2147483647;\r
-var d = -2147483647;\r
-var e = 2147483647;\r
-var f = -2147483647;\r
-var g = 2147483647;\r
-var h = this.size ();\r
-for (var i = h; --i >= 0; ) {\r
-var j = this.get (i);\r
-if (j.x < c) c = j.x;\r
-if (j.y < e) e = j.y;\r
-if (j.z < g) g = j.z;\r
-if (j.x > b) b = j.x;\r
-if (j.y > d) d = j.y;\r
-if (j.z > f) f = j.z;\r
-}\r
-var j = (b - c);\r
-var k = (d - e);\r
-var l = (f - g);\r
-return this.volume = j * j + k * k + l * l;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setColor", \r
-function () {\r
-var a = this.size ();\r
-this.center =  new javajs.util.P3 ();\r
-for (var b = a; --b >= 0; ) this.center.add (this.get (b));\r
-\r
-this.center.scale (1 / a);\r
-return this.b$["javajs.img.GifEncoder"].toRGB (this.center);\r
-});\r
-Clazz.defineMethod (c$, "splitCell", \r
-function (a) {\r
-var b = this.size ();\r
-if (b < 2) return false;\r
-var c = a.size ();\r
-var d = Clazz.innerTypeInstance (javajs.img.GifEncoder.ColorCell, this, null, c);\r
-a.addLast (d);\r
-var e =  Clazz.newFloatArray (3, 3, 0);\r
-for (var f = 0; f < 3; f++) {\r
-var g = 3.4028235E38;\r
-var h = -3.4028235E38;\r
-for (var i = b; --i >= 0; ) {\r
-var j = this.get (i);\r
-var k = (f == 0 ? j.x : f == 1 ? j.y : j.z);\r
-if (g > k) g = k;\r
-if (h < k) h = k;\r
-}\r
-e[0][f] = g;\r
-e[1][f] = h;\r
-e[2][f] = h - g;\r
-}\r
-var g = e[2];\r
-var h = (g[0] >= g[1] ? (g[0] >= g[2] ? 0 : 2) : g[1] >= g[2] ? 1 : 2);\r
-var i = e[0][h] + e[2][h] / 2;\r
-this.volume = 0;\r
-switch (h) {\r
-case 0:\r
-for (var j = b; --j >= 0; ) if (this.get (j).x >= i) d.addLast (this.remove (j));\r
-\r
-break;\r
-case 1:\r
-for (var k = b; --k >= 0; ) if (this.get (k).y >= i) d.addLast (this.remove (k));\r
-\r
-break;\r
-case 2:\r
-for (var l = this.size (); --l >= 0; ) if (this.get (l).z >= i) d.addLast (this.remove (l));\r
-\r
-break;\r
-}\r
-return true;\r
-}, "javajs.util.Lst");\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"xyz2rgb", null,\r
-"rgb2xyz", null);\r
-{\r
-javajs.img.GifEncoder.rgb2xyz = javajs.util.M3.newA9 ( Clazz.newFloatArray (-1, [0.4124, 0.3576, 0.1805, 0.2126, 0.7152, 0.0722, 0.0193, 0.1192, 0.9505]));\r
-javajs.img.GifEncoder.xyz2rgb = javajs.util.M3.newA9 ( Clazz.newFloatArray (-1, [3.2406, -1.5372, -0.4986, -0.9689, 1.8758, 0.0415, 0.0557, -0.204, 1.0570]));\r
-}Clazz.defineStatics (c$,\r
-"EOF", -1,\r
-"INTERLACE_PARAMS",  Clazz.newIntArray (-1, [8, 8, 4, 2, 4, 2, 1, 0]),\r
-"BITS", 12,\r
-"HSIZE", 5003);\r
-});\r
+Clazz.declarePackage ("javajs.img");
+Clazz.load (["javajs.img.ImageEncoder", "javajs.util.Lst", "$.P3"], "javajs.img.GifEncoder", ["java.lang.Boolean", "java.util.Hashtable", "javajs.util.CU", "$.M3"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.params = null;
+this.palette = null;
+this.backgroundColor = 0;
+this.interlaced = false;
+this.addHeader = true;
+this.addImage = true;
+this.addTrailer = true;
+this.isTransparent = false;
+this.floydSteinberg = true;
+this.capturing = false;
+this.looping = false;
+this.delayTime100ths = -1;
+this.bitsPerPixel = 1;
+this.byteCount = 0;
+if (!Clazz.isClassDefined ("javajs.img.GifEncoder.ColorItem")) {
+javajs.img.GifEncoder.$GifEncoder$ColorItem$ ();
+}
+if (!Clazz.isClassDefined ("javajs.img.GifEncoder.ColorCell")) {
+javajs.img.GifEncoder.$GifEncoder$ColorCell$ ();
+}
+this.initCodeSize = 0;
+this.curpt = 0;
+this.nBits = 0;
+this.maxbits = 12;
+this.maxcode = 0;
+this.maxmaxcode = 4096;
+this.htab = null;
+this.codetab = null;
+this.hsize = 5003;
+this.freeEnt = 0;
+this.clearFlag = false;
+this.clearCode = 0;
+this.EOFCode = 0;
+this.countDown = 0;
+this.pass = 0;
+this.curx = 0;
+this.cury = 0;
+this.curAccum = 0;
+this.curBits = 0;
+this.masks = null;
+this.bufPt = 0;
+this.buf = null;
+Clazz.instantialize (this, arguments);
+}, javajs.img, "GifEncoder", javajs.img.ImageEncoder);
+Clazz.prepareFields (c$, function () {
+this.htab =  Clazz.newIntArray (5003, 0);
+this.codetab =  Clazz.newIntArray (5003, 0);
+this.masks =  Clazz.newIntArray (-1, [0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF]);
+this.buf =  Clazz.newByteArray (256, 0);
+});
+Clazz.overrideMethod (c$, "setParams", 
+function (params) {
+this.params = params;
+var ic = params.get ("transparentColor");
+if (ic == null) {
+ic = params.get ("backgroundColor");
+if (ic != null) this.backgroundColor = ic.intValue ();
+} else {
+this.backgroundColor = ic.intValue ();
+this.isTransparent = true;
+}this.interlaced = (Boolean.TRUE === params.get ("interlaced"));
+if (params.containsKey ("captureRootExt") || !params.containsKey ("captureMode")) return;
+this.interlaced = false;
+this.capturing = true;
+try {
+this.byteCount = (params.get ("captureByteCount")).intValue ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+switch ("maec".indexOf ((params.get ("captureMode")).substring (0, 1))) {
+case 0:
+params.put ("captureMode", "add");
+this.addImage = false;
+this.addTrailer = false;
+break;
+case 1:
+this.addHeader = false;
+this.addTrailer = false;
+var fps = Math.abs ((params.get ("captureFps")).intValue ());
+this.delayTime100ths = (fps == 0 ? 0 : Clazz.doubleToInt (100 / fps));
+this.looping = (Boolean.FALSE !== params.get ("captureLooping"));
+break;
+case 2:
+this.addHeader = false;
+this.addImage = false;
+break;
+case 3:
+this.addHeader = false;
+this.addImage = false;
+this.out.cancel ();
+break;
+}
+}, "java.util.Map");
+Clazz.overrideMethod (c$, "generate", 
+function () {
+if (this.addHeader) this.writeHeader ();
+this.addHeader = false;
+if (this.addImage) {
+this.createPalette ();
+this.writeGraphicControlExtension ();
+if (this.delayTime100ths >= 0 && this.looping) this.writeNetscapeLoopExtension ();
+this.writeImage ();
+}});
+Clazz.overrideMethod (c$, "close", 
+function () {
+if (this.addTrailer) {
+this.writeTrailer ();
+} else {
+this.doClose = false;
+}if (this.capturing) this.params.put ("captureByteCount", Integer.$valueOf (this.byteCount));
+});
+Clazz.defineMethod (c$, "createPalette", 
+($fz = function () {
+var tempColors =  new javajs.util.Lst ();
+var ciHash =  new java.util.Hashtable ();
+for (var i = 0, n = this.pixels.length; i < n; i++) {
+var rgb = this.pixels[i];
+var key = Integer.$valueOf (rgb);
+var item = ciHash.get (key);
+if (item == null) {
+item = Clazz.innerTypeInstance (javajs.img.GifEncoder.ColorItem, this, null, rgb, rgb == this.backgroundColor);
+ciHash.put (key, item);
+tempColors.addLast (item);
+}}
+var nColors = tempColors.size ();
+System.out.println ("GIF total image colors: " + nColors);
+ciHash = null;
+var cells = this.quantizeColors (tempColors);
+nColors = cells.size ();
+System.out.println ("GIF final color count: " + nColors);
+var colorMap =  new java.util.Hashtable ();
+this.bitsPerPixel = (nColors <= 2 ? 1 : nColors <= 4 ? 2 : nColors <= 16 ? 4 : 8);
+this.palette =  new Array (1 << this.bitsPerPixel);
+for (var i = 0; i < nColors; i++) {
+var c = cells.get (i);
+colorMap.put (Integer.$valueOf (javajs.util.CU.colorPtToFFRGB (this.palette[i] = c.setColor ())), c);
+}
+this.pixels = this.indexPixels (cells, colorMap);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "quantizeColors", 
+($fz = function (tempColors) {
+var n = tempColors.size ();
+var cells =  new javajs.util.Lst ();
+var cc = Clazz.innerTypeInstance (javajs.img.GifEncoder.ColorCell, this, null, 0);
+cc.addLast (Clazz.innerTypeInstance (javajs.img.GifEncoder.ColorItem, this, null, this.backgroundColor, true));
+cells.addLast (cc);
+cc = Clazz.innerTypeInstance (javajs.img.GifEncoder.ColorCell, this, null, 1);
+if (n > 256) cells.addLast (cc);
+for (var i = 0; i < n; i++) {
+var c = tempColors.get (i);
+if (c.isBackground) continue;
+cc.addLast (c);
+if (n <= 256) {
+cells.addLast (cc);
+cc = Clazz.innerTypeInstance (javajs.img.GifEncoder.ColorCell, this, null, cells.size ());
+}}
+tempColors.clear ();
+if (n > 256) while ((n = cells.size ()) < 256) {
+var maxVol = 0;
+var maxCell = null;
+for (var i = n; --i >= 1; ) {
+var c = cells.get (i);
+var v = c.getVolume (false);
+if (v > maxVol) {
+maxVol = v;
+maxCell = c;
+}}
+if (maxCell == null || !maxCell.splitCell (cells)) break;
+}
+return cells;
+}, $fz.isPrivate = true, $fz), "javajs.util.Lst");
+Clazz.defineMethod (c$, "indexPixels", 
+($fz = function (cells, colorMap) {
+var w2 = this.width + 2;
+var errors =  new Array (w2);
+var newPixels =  Clazz.newIntArray (this.pixels.length, 0);
+var err =  new javajs.util.P3 ();
+var lab;
+var rgb;
+var nearestCell =  new java.util.Hashtable ();
+for (var i = 0, p = 0; i < this.height; ++i) {
+var notLastRow = (i != this.height - 1);
+for (var j = 0; j < this.width; ++j, p++) {
+if (this.pixels[p] == this.backgroundColor) {
+continue;
+}var pe = errors[p % w2];
+if (pe == null || pe.x == 3.4028235E38) {
+lab = null;
+rgb = this.pixels[p];
+} else {
+lab = this.toLABnorm (this.pixels[p]);
+err = pe;
+err.x = this.clamp (err.x, -75, 75);
+err.y = this.clamp (err.y, -75, 75);
+err.z = this.clamp (err.z, -75, 75);
+lab.add (err);
+rgb = javajs.util.CU.colorPtToFFRGB (this.toRGB (lab));
+}var key = Integer.$valueOf (rgb);
+var cell = colorMap.get (key);
+if (cell == null) {
+lab = this.toLABnorm (rgb);
+cell = nearestCell.get (key);
+if (cell == null) {
+var maxerr = 3.4028235E38;
+for (var ib = cells.size (); --ib >= 1; ) {
+var c = cells.get (ib);
+err.sub2 (lab, c.center);
+var d = err.lengthSquared ();
+if (d < maxerr) {
+maxerr = d;
+cell = c;
+}}
+nearestCell.put (key, cell);
+}if (this.floydSteinberg) {
+err.sub2 (lab, cell.center);
+var notLastCol = (j < this.width - 1);
+if (notLastCol) this.addError (err, 7, errors, p + 1, w2);
+if (notLastRow) {
+if (j > 0) this.addError (err, 3, errors, p + this.width - 1, w2);
+this.addError (err, 5, errors, p + this.width, w2);
+if (notLastCol) this.addError (err, 1, errors, p + this.width + 1, w2);
+}}err.x = 3.4028235E38;
+}newPixels[p] = cell.index;
+}
+}
+return newPixels;
+}, $fz.isPrivate = true, $fz), "javajs.util.Lst,java.util.Map");
+Clazz.defineMethod (c$, "addError", 
+($fz = function (err, f, errors, p, w2) {
+if (this.pixels[p] == this.backgroundColor) return;
+p %= w2;
+var errp = errors[p];
+if (errp == null) errp = errors[p] =  new javajs.util.P3 ();
+ else if (errp.x == 3.4028235E38) errp.set (0, 0, 0);
+errp.scaleAdd2 (f / 16, err, errp);
+}, $fz.isPrivate = true, $fz), "javajs.util.P3,~N,~A,~N,~N");
+Clazz.defineMethod (c$, "toLABnorm", 
+function (rgb) {
+var lab = javajs.util.CU.colorPtFromInt (rgb, null);
+this.rgbToXyz (lab, lab);
+this.xyzToLab (lab, lab);
+lab.y = (lab.y + 86.185) / (184.439) * 100;
+lab.z = (lab.z + 107.863) / (202.345) * 100;
+return lab;
+}, "~N");
+Clazz.defineMethod (c$, "toRGB", 
+function (lab) {
+var xyz = javajs.util.P3.newP (lab);
+xyz.y = xyz.y / 100 * (184.439) - 86.185;
+xyz.z = xyz.z / 100 * (202.345) - 107.863;
+this.labToXyz (xyz, xyz);
+return this.xyzToRgb (xyz, xyz);
+}, "javajs.util.P3");
+Clazz.defineMethod (c$, "rgbToXyz", 
+function (rgb, xyz) {
+if (xyz == null) xyz =  new javajs.util.P3 ();
+xyz.x = this.sxyz (rgb.x);
+xyz.y = this.sxyz (rgb.y);
+xyz.z = this.sxyz (rgb.z);
+javajs.img.GifEncoder.rgb2xyz.rotate (xyz);
+return xyz;
+}, "javajs.util.P3,javajs.util.P3");
+Clazz.defineMethod (c$, "sxyz", 
+($fz = function (x) {
+x /= 255;
+return (x <= 0.04045 ? x / 12.92 : Math.pow (((x + 0.055) / 1.055), 2.4)) * 100;
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "xyzToRgb", 
+function (xyz, rgb) {
+if (rgb == null) rgb =  new javajs.util.P3 ();
+rgb.setT (xyz);
+rgb.scale (0.01);
+javajs.img.GifEncoder.xyz2rgb.rotate (rgb);
+rgb.x = this.clamp (this.srgb (rgb.x), 0, 255);
+rgb.y = this.clamp (this.srgb (rgb.y), 0, 255);
+rgb.z = this.clamp (this.srgb (rgb.z), 0, 255);
+return rgb;
+}, "javajs.util.P3,javajs.util.P3");
+Clazz.defineMethod (c$, "srgb", 
+($fz = function (x) {
+return (x > 0.0031308 ? (1.055 * Math.pow (x, 0.4166666666666667)) - 0.055 : x * 12.92) * 255;
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "xyzToLab", 
+function (xyz, lab) {
+if (lab == null) lab =  new javajs.util.P3 ();
+var x = this.flab (xyz.x / 95.0429);
+var y = this.flab (xyz.y / 100);
+var z = this.flab (xyz.z / 108.89);
+lab.x = (116 * y) - 16;
+lab.y = 500 * (x - y);
+lab.z = 200 * (y - z);
+return lab;
+}, "javajs.util.P3,javajs.util.P3");
+Clazz.defineMethod (c$, "flab", 
+($fz = function (t) {
+return (t > 8.85645168E-3 ? Math.pow (t, 0.333333333) : 7.78703704 * t + 0.137931034);
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "labToXyz", 
+function (lab, xyz) {
+if (xyz == null) xyz =  new javajs.util.P3 ();
+xyz.setT (lab);
+var y = (xyz.x + 16) / 116;
+var x = xyz.y / 500 + y;
+var z = y - xyz.z / 200;
+xyz.x = this.fxyz (x) * 95.0429;
+xyz.y = this.fxyz (y) * 100;
+xyz.z = this.fxyz (z) * 108.89;
+return xyz;
+}, "javajs.util.P3,javajs.util.P3");
+Clazz.defineMethod (c$, "fxyz", 
+($fz = function (t) {
+return (t > 0.206896552 ? t * t * t : 0.128418549 * (t - 0.137931034));
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "clamp", 
+($fz = function (c, min, max) {
+c = (c < min ? min : c > max ? max : c);
+return (min == 0 ? Math.round (c) : c);
+}, $fz.isPrivate = true, $fz), "~N,~N,~N");
+Clazz.defineMethod (c$, "writeHeader", 
+($fz = function () {
+this.putString ("GIF89a");
+this.putWord (this.width);
+this.putWord (this.height);
+this.putByte (0);
+this.putByte (0);
+this.putByte (0);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "writeGraphicControlExtension", 
+($fz = function () {
+if (this.isTransparent || this.delayTime100ths >= 0) {
+this.putByte (0x21);
+this.putByte (0xf9);
+this.putByte (4);
+this.putByte ((this.isTransparent ? 9 : 0) | (this.delayTime100ths > 0 ? 2 : 0));
+this.putWord (this.delayTime100ths > 0 ? this.delayTime100ths : 0);
+this.putByte (0);
+this.putByte (0);
+}}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "writeNetscapeLoopExtension", 
+($fz = function () {
+this.putByte (0x21);
+this.putByte (0xff);
+this.putByte (0x0B);
+this.putString ("NETSCAPE2.0");
+this.putByte (3);
+this.putByte (1);
+this.putWord (0);
+this.putByte (0);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "writeImage", 
+($fz = function () {
+this.putByte (0x2C);
+this.putWord (0);
+this.putWord (0);
+this.putWord (this.width);
+this.putWord (this.height);
+var packedFields = 0x80 | (this.interlaced ? 0x40 : 0) | (this.bitsPerPixel - 1);
+this.putByte (packedFields);
+var colorMapSize = 1 << this.bitsPerPixel;
+var p =  new javajs.util.P3 ();
+for (var i = 0; i < colorMapSize; i++) {
+if (this.palette[i] != null) p = this.palette[i];
+this.putByte (Clazz.floatToInt (p.x));
+this.putByte (Clazz.floatToInt (p.y));
+this.putByte (Clazz.floatToInt (p.z));
+}
+this.putByte (this.initCodeSize = (this.bitsPerPixel <= 1 ? 2 : this.bitsPerPixel));
+this.compress ();
+this.putByte (0);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "writeTrailer", 
+($fz = function () {
+this.putByte (0x3B);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "nextPixel", 
+($fz = function () {
+if (this.countDown-- == 0) return -1;
+var colorIndex = this.pixels[this.curpt];
+++this.curx;
+if (this.curx == this.width) {
+this.curx = 0;
+if (this.interlaced) this.updateY (javajs.img.GifEncoder.INTERLACE_PARAMS[this.pass], javajs.img.GifEncoder.INTERLACE_PARAMS[this.pass + 4]);
+ else ++this.cury;
+}this.curpt = this.cury * this.width + this.curx;
+return colorIndex & 0xff;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "updateY", 
+($fz = function (yNext, yNew) {
+this.cury += yNext;
+if (yNew >= 0 && this.cury >= this.height) {
+this.cury = yNew;
+++this.pass;
+}}, $fz.isPrivate = true, $fz), "~N,~N");
+Clazz.defineMethod (c$, "putWord", 
+($fz = function (w) {
+this.putByte (w);
+this.putByte (w >> 8);
+}, $fz.isPrivate = true, $fz), "~N");
+c$.MAXCODE = Clazz.defineMethod (c$, "MAXCODE", 
+($fz = function (nBits) {
+return (1 << nBits) - 1;
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "compress", 
+($fz = function () {
+this.countDown = this.width * this.height;
+this.pass = 0;
+this.curx = 0;
+this.cury = 0;
+this.clearFlag = false;
+this.nBits = this.initCodeSize + 1;
+this.maxcode = javajs.img.GifEncoder.MAXCODE (this.nBits);
+this.clearCode = 1 << this.initCodeSize;
+this.EOFCode = this.clearCode + 1;
+this.freeEnt = this.clearCode + 2;
+this.bufPt = 0;
+var ent = this.nextPixel ();
+var hshift = 0;
+var fcode;
+for (fcode = this.hsize; fcode < 65536; fcode *= 2) ++hshift;
+
+hshift = 8 - hshift;
+var hsizeReg = this.hsize;
+this.clearHash (hsizeReg);
+this.output (this.clearCode);
+var c;
+outer_loop : while ((c = this.nextPixel ()) != -1) {
+fcode = (c << this.maxbits) + ent;
+var i = (c << hshift) ^ ent;
+if (this.htab[i] == fcode) {
+ent = this.codetab[i];
+continue;
+} else if (this.htab[i] >= 0) {
+var disp = hsizeReg - i;
+if (i == 0) disp = 1;
+do {
+if ((i -= disp) < 0) i += hsizeReg;
+if (this.htab[i] == fcode) {
+ent = this.codetab[i];
+continue outer_loop;
+}} while (this.htab[i] >= 0);
+}this.output (ent);
+ent = c;
+if (this.freeEnt < this.maxmaxcode) {
+this.codetab[i] = this.freeEnt++;
+this.htab[i] = fcode;
+} else {
+this.clearBlock ();
+}}
+this.output (ent);
+this.output (this.EOFCode);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "output", 
+($fz = function (code) {
+this.curAccum &= this.masks[this.curBits];
+if (this.curBits > 0) this.curAccum |= (code << this.curBits);
+ else this.curAccum = code;
+this.curBits += this.nBits;
+while (this.curBits >= 8) {
+this.byteOut ((this.curAccum & 0xff));
+this.curAccum >>= 8;
+this.curBits -= 8;
+}
+if (this.freeEnt > this.maxcode || this.clearFlag) {
+if (this.clearFlag) {
+this.maxcode = javajs.img.GifEncoder.MAXCODE (this.nBits = this.initCodeSize + 1);
+this.clearFlag = false;
+} else {
+++this.nBits;
+if (this.nBits == this.maxbits) this.maxcode = this.maxmaxcode;
+ else this.maxcode = javajs.img.GifEncoder.MAXCODE (this.nBits);
+}}if (code == this.EOFCode) {
+while (this.curBits > 0) {
+this.byteOut ((this.curAccum & 0xff));
+this.curAccum >>= 8;
+this.curBits -= 8;
+}
+this.flushBytes ();
+}}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "clearBlock", 
+($fz = function () {
+this.clearHash (this.hsize);
+this.freeEnt = this.clearCode + 2;
+this.clearFlag = true;
+this.output (this.clearCode);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "clearHash", 
+($fz = function (hsize) {
+for (var i = 0; i < hsize; ++i) this.htab[i] = -1;
+
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "byteOut", 
+($fz = function (c) {
+this.buf[this.bufPt++] = c;
+if (this.bufPt >= 254) this.flushBytes ();
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "flushBytes", 
+function () {
+if (this.bufPt > 0) {
+this.putByte (this.bufPt);
+this.out.write (this.buf, 0, this.bufPt);
+this.byteCount += this.bufPt;
+this.bufPt = 0;
+}});
+c$.$GifEncoder$ColorItem$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.isBackground = false;
+Clazz.instantialize (this, arguments);
+}, javajs.img.GifEncoder, "ColorItem", javajs.util.P3);
+Clazz.makeConstructor (c$, 
+function (a, b) {
+Clazz.superConstructor (this, javajs.img.GifEncoder.ColorItem, []);
+this.isBackground = b;
+this.setT (this.b$["javajs.img.GifEncoder"].toLABnorm (a));
+}, "~N,~B");
+c$ = Clazz.p0p ();
+};
+c$.$GifEncoder$ColorCell$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.index = 0;
+this.center = null;
+this.volume = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.img.GifEncoder, "ColorCell", javajs.util.Lst);
+Clazz.makeConstructor (c$, 
+function (a) {
+Clazz.superConstructor (this, javajs.img.GifEncoder.ColorCell, []);
+this.index = a;
+}, "~N");
+Clazz.defineMethod (c$, "getVolume", 
+function (a) {
+if (this.volume != 0) return this.volume;
+if (this.size () < 2) return -1;
+var b = -2147483647;
+var c = 2147483647;
+var d = -2147483647;
+var e = 2147483647;
+var f = -2147483647;
+var g = 2147483647;
+var h = this.size ();
+for (var i = h; --i >= 0; ) {
+var j = this.get (i);
+if (j.x < c) c = j.x;
+if (j.y < e) e = j.y;
+if (j.z < g) g = j.z;
+if (j.x > b) b = j.x;
+if (j.y > d) d = j.y;
+if (j.z > f) f = j.z;
+}
+var j = (b - c);
+var k = (d - e);
+var l = (f - g);
+return this.volume = j * j + k * k + l * l;
+}, "~B");
+Clazz.defineMethod (c$, "setColor", 
+function () {
+var a = this.size ();
+this.center =  new javajs.util.P3 ();
+for (var b = a; --b >= 0; ) this.center.add (this.get (b));
+
+this.center.scale (1 / a);
+return this.b$["javajs.img.GifEncoder"].toRGB (this.center);
+});
+Clazz.defineMethod (c$, "splitCell", 
+function (a) {
+var b = this.size ();
+if (b < 2) return false;
+var c = a.size ();
+var d = Clazz.innerTypeInstance (javajs.img.GifEncoder.ColorCell, this, null, c);
+a.addLast (d);
+var e =  Clazz.newFloatArray (3, 3, 0);
+for (var f = 0; f < 3; f++) {
+var g = 3.4028235E38;
+var h = -3.4028235E38;
+for (var i = b; --i >= 0; ) {
+var j = this.get (i);
+var k = (f == 0 ? j.x : f == 1 ? j.y : j.z);
+if (g > k) g = k;
+if (h < k) h = k;
+}
+e[0][f] = g;
+e[1][f] = h;
+e[2][f] = h - g;
+}
+var g = e[2];
+var h = (g[0] >= g[1] ? (g[0] >= g[2] ? 0 : 2) : g[1] >= g[2] ? 1 : 2);
+var i = e[0][h] + e[2][h] / 2;
+this.volume = 0;
+switch (h) {
+case 0:
+for (var j = b; --j >= 0; ) if (this.get (j).x >= i) d.addLast (this.remove (j));
+
+break;
+case 1:
+for (var k = b; --k >= 0; ) if (this.get (k).y >= i) d.addLast (this.remove (k));
+
+break;
+case 2:
+for (var l = this.size (); --l >= 0; ) if (this.get (l).z >= i) d.addLast (this.remove (l));
+
+break;
+}
+return true;
+}, "javajs.util.Lst");
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"xyz2rgb", null,
+"rgb2xyz", null);
+{
+javajs.img.GifEncoder.rgb2xyz = javajs.util.M3.newA9 ( Clazz.newFloatArray (-1, [0.4124, 0.3576, 0.1805, 0.2126, 0.7152, 0.0722, 0.0193, 0.1192, 0.9505]));
+javajs.img.GifEncoder.xyz2rgb = javajs.util.M3.newA9 ( Clazz.newFloatArray (-1, [3.2406, -1.5372, -0.4986, -0.9689, 1.8758, 0.0415, 0.0557, -0.204, 1.0570]));
+}Clazz.defineStatics (c$,
+"EOF", -1,
+"INTERLACE_PARAMS",  Clazz.newIntArray (-1, [8, 8, 4, 2, 4, 2, 1, 0]),
+"BITS", 12,
+"HSIZE", 5003);
+});
index 79e2086..a0fc4c0 100644 (file)
@@ -1,41 +1,41 @@
-Clazz.declarePackage ("javajs.img");\r
-Clazz.load (["javajs.api.GenericImageEncoder"], "javajs.img.ImageEncoder", ["java.lang.Boolean"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.out = null;\r
-this.width = -1;\r
-this.height = -1;\r
-this.quality = -1;\r
-this.date = null;\r
-this.logging = false;\r
-this.doClose = true;\r
-this.pixels = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.img, "ImageEncoder", null, javajs.api.GenericImageEncoder);\r
-Clazz.overrideMethod (c$, "createImage", \r
-function (type, out, params) {\r
-this.out = out;\r
-this.logging = (Boolean.TRUE === params.get ("logging"));\r
-this.width = (params.get ("imageWidth")).intValue ();\r
-this.height = (params.get ("imageHeight")).intValue ();\r
-this.pixels = params.get ("imagePixels");\r
-this.date = params.get ("date");\r
-var q = params.get ("quality");\r
-this.quality = (q == null ? -1 : q.intValue ());\r
-this.setParams (params);\r
-this.generate ();\r
-this.close ();\r
-return this.doClose;\r
-}, "~S,javajs.util.OC,java.util.Map");\r
-Clazz.defineMethod (c$, "putString", \r
-function (s) {\r
-var b = s.getBytes ();\r
-this.out.write (b, 0, b.length);\r
-}, "~S");\r
-Clazz.defineMethod (c$, "putByte", \r
-function (b) {\r
-this.out.writeByteAsInt (b);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "close", \r
-function () {\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.img");
+Clazz.load (["javajs.api.GenericImageEncoder"], "javajs.img.ImageEncoder", ["java.lang.Boolean"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.out = null;
+this.width = -1;
+this.height = -1;
+this.quality = -1;
+this.date = null;
+this.logging = false;
+this.doClose = true;
+this.pixels = null;
+Clazz.instantialize (this, arguments);
+}, javajs.img, "ImageEncoder", null, javajs.api.GenericImageEncoder);
+Clazz.overrideMethod (c$, "createImage", 
+function (type, out, params) {
+this.out = out;
+this.logging = (Boolean.TRUE === params.get ("logging"));
+this.width = (params.get ("imageWidth")).intValue ();
+this.height = (params.get ("imageHeight")).intValue ();
+this.pixels = params.get ("imagePixels");
+this.date = params.get ("date");
+var q = params.get ("quality");
+this.quality = (q == null ? -1 : q.intValue ());
+this.setParams (params);
+this.generate ();
+this.close ();
+return this.doClose;
+}, "~S,javajs.util.OC,java.util.Map");
+Clazz.defineMethod (c$, "putString", 
+function (s) {
+var b = s.getBytes ();
+this.out.write (b, 0, b.length);
+}, "~S");
+Clazz.defineMethod (c$, "putByte", 
+function (b) {
+this.out.writeByteAsInt (b);
+}, "~N");
+Clazz.defineMethod (c$, "close", 
+function () {
+});
+});
index 2ef2678..c8eb5d1 100644 (file)
@@ -1,23 +1,23 @@
-Clazz.declarePackage ("javajs.img");\r
-Clazz.load (["javajs.img.JpgEncoder"], "javajs.img.Jpg64Encoder", ["javajs.util.Base64"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.outTemp = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.img, "Jpg64Encoder", javajs.img.JpgEncoder);\r
-Clazz.defineMethod (c$, "setParams", \r
-function (params) {\r
-this.defaultQuality = 75;\r
-this.outTemp = params.remove ("outputChannelTemp");\r
-Clazz.superCall (this, javajs.img.Jpg64Encoder, "setParams", [params]);\r
-}, "java.util.Map");\r
-Clazz.defineMethod (c$, "generate", \r
-function () {\r
-var out0 = this.out;\r
-this.out = this.outTemp;\r
-Clazz.superCall (this, javajs.img.Jpg64Encoder, "generate", []);\r
-var bytes = javajs.util.Base64.getBytes64 (this.out.toByteArray ());\r
-this.outTemp = null;\r
-this.out = out0;\r
-this.out.write (bytes, 0, bytes.length);\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.img");
+Clazz.load (["javajs.img.JpgEncoder"], "javajs.img.Jpg64Encoder", ["javajs.util.Base64"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.outTemp = null;
+Clazz.instantialize (this, arguments);
+}, javajs.img, "Jpg64Encoder", javajs.img.JpgEncoder);
+Clazz.defineMethod (c$, "setParams", 
+function (params) {
+this.defaultQuality = 75;
+this.outTemp = params.remove ("outputChannelTemp");
+Clazz.superCall (this, javajs.img.Jpg64Encoder, "setParams", [params]);
+}, "java.util.Map");
+Clazz.defineMethod (c$, "generate", 
+function () {
+var out0 = this.out;
+this.out = this.outTemp;
+Clazz.superCall (this, javajs.img.Jpg64Encoder, "generate", []);
+var bytes = javajs.util.Base64.getBytes64 (this.out.toByteArray ());
+this.outTemp = null;
+this.out = out0;
+this.out.write (bytes, 0, bytes.length);
+});
+});
index 9edf3b2..b13c26f 100644 (file)
-Clazz.declarePackage ("javajs.img");\r
-Clazz.load (["javajs.img.ImageEncoder", "javajs.util.AU"], ["javajs.img.DCT", "$.JpgEncoder", "$.JpegObj", "$.Huffman"], null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.jpegObj = null;\r
-this.huf = null;\r
-this.dct = null;\r
-this.defaultQuality = 100;\r
-this.applicationTag = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.img, "JpgEncoder", javajs.img.ImageEncoder);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javajs.img.JpgEncoder, []);\r
-});\r
-Clazz.overrideMethod (c$, "setParams", \r
-function (params) {\r
-if (this.quality <= 0) this.quality = (params.containsKey ("qualityJPG") ? (params.get ("qualityJPG")).intValue () : this.defaultQuality);\r
-this.jpegObj =  new javajs.img.JpegObj ();\r
-this.jpegObj.comment = params.get ("comment");\r
-this.applicationTag = params.get ("jpgAppTag");\r
-}, "java.util.Map");\r
-Clazz.overrideMethod (c$, "generate", \r
-function () {\r
-this.jpegObj.imageWidth = this.width;\r
-this.jpegObj.imageHeight = this.height;\r
-this.dct =  new javajs.img.DCT (this.quality);\r
-this.huf =  new javajs.img.Huffman (this.width, this.height);\r
-if (this.jpegObj == null) return;\r
-this.jpegObj.getYCCArray (this.pixels);\r
-var longState = this.writeHeaders (this.jpegObj, this.dct);\r
-this.writeCompressedData (this.jpegObj, this.dct, this.huf);\r
-this.writeMarker (javajs.img.JpgEncoder.eoi);\r
-if (longState != null) {\r
-var b = longState.getBytes ();\r
-this.out.write (b, 0, b.length);\r
-}});\r
-Clazz.defineMethod (c$, "writeCompressedData", \r
-($fz = function (jpegObj, dct, huf) {\r
-var i;\r
-var j;\r
-var r;\r
-var c;\r
-var a;\r
-var b;\r
-var comp;\r
-var xpos;\r
-var ypos;\r
-var xblockoffset;\r
-var yblockoffset;\r
-var inputArray;\r
-var dctArray1 =  Clazz.newFloatArray (8, 8, 0);\r
-var dctArray2 =  Clazz.newDoubleArray (8, 8, 0);\r
-var dctArray3 =  Clazz.newIntArray (64, 0);\r
-var lastDCvalue =  Clazz.newIntArray (jpegObj.numberOfComponents, 0);\r
-var minBlockWidth;\r
-var minBlockHeight;\r
-minBlockWidth = ((huf.imageWidth % 8 != 0) ? Clazz.doubleToInt (Math.floor (huf.imageWidth / 8.0) + 1) * 8 : huf.imageWidth);\r
-minBlockHeight = ((huf.imageHeight % 8 != 0) ? Clazz.doubleToInt (Math.floor (huf.imageHeight / 8.0) + 1) * 8 : huf.imageHeight);\r
-for (comp = 0; comp < jpegObj.numberOfComponents; comp++) {\r
-minBlockWidth = Math.min (minBlockWidth, jpegObj.blockWidth[comp]);\r
-minBlockHeight = Math.min (minBlockHeight, jpegObj.blockHeight[comp]);\r
-}\r
-xpos = 0;\r
-for (r = 0; r < minBlockHeight; r++) {\r
-for (c = 0; c < minBlockWidth; c++) {\r
-xpos = c * 8;\r
-ypos = r * 8;\r
-for (comp = 0; comp < jpegObj.numberOfComponents; comp++) {\r
-inputArray = jpegObj.components[comp];\r
-var vsampF = jpegObj.vsampFactor[comp];\r
-var hsampF = jpegObj.hsampFactor[comp];\r
-var qNumber = jpegObj.qtableNumber[comp];\r
-var dcNumber = jpegObj.dctableNumber[comp];\r
-var acNumber = jpegObj.actableNumber[comp];\r
-for (i = 0; i < vsampF; i++) {\r
-for (j = 0; j < hsampF; j++) {\r
-xblockoffset = j * 8;\r
-yblockoffset = i * 8;\r
-for (a = 0; a < 8; a++) {\r
-for (b = 0; b < 8; b++) {\r
-dctArray1[a][b] = inputArray[ypos + yblockoffset + a][xpos + xblockoffset + b];\r
-}\r
-}\r
-dctArray2 = javajs.img.DCT.forwardDCT (dctArray1);\r
-dctArray3 = javajs.img.DCT.quantizeBlock (dctArray2, dct.divisors[qNumber]);\r
-huf.HuffmanBlockEncoder (this.out, dctArray3, lastDCvalue[comp], dcNumber, acNumber);\r
-lastDCvalue[comp] = dctArray3[0];\r
-}\r
-}\r
-}\r
-}\r
-}\r
-huf.flushBuffer (this.out);\r
-}, $fz.isPrivate = true, $fz), "javajs.img.JpegObj,javajs.img.DCT,javajs.img.Huffman");\r
-Clazz.defineMethod (c$, "writeHeaders", \r
-($fz = function (jpegObj, dct) {\r
-var i;\r
-var j;\r
-var index;\r
-var offset;\r
-var tempArray;\r
-this.writeMarker (javajs.img.JpgEncoder.soi);\r
-this.writeArray (javajs.img.JpgEncoder.jfif);\r
-var comment = null;\r
-if (jpegObj.comment.length > 0) this.writeString (jpegObj.comment, 0xE1);\r
-this.writeString ("JPEG Encoder Copyright 1998, James R. Weeks and BioElectroMech.\n\n", 0xFE);\r
-var dqt =  Clazz.newByteArray (134, 0);\r
-dqt[0] = 0xFF;\r
-dqt[1] = 0xDB;\r
-dqt[2] = 0;\r
-dqt[3] = 132;\r
-offset = 4;\r
-for (i = 0; i < 2; i++) {\r
-dqt[offset++] = ((0) + i);\r
-tempArray = dct.quantum[i];\r
-for (j = 0; j < 64; j++) {\r
-dqt[offset++] = tempArray[javajs.img.Huffman.jpegNaturalOrder[j]];\r
-}\r
-}\r
-this.writeArray (dqt);\r
-var sof =  Clazz.newByteArray (19, 0);\r
-sof[0] = 0xFF;\r
-sof[1] = 0xC0;\r
-sof[2] = 0;\r
-sof[3] = 17;\r
-sof[4] = jpegObj.precision;\r
-sof[5] = ((jpegObj.imageHeight >> 8) & 0xFF);\r
-sof[6] = ((jpegObj.imageHeight) & 0xFF);\r
-sof[7] = ((jpegObj.imageWidth >> 8) & 0xFF);\r
-sof[8] = ((jpegObj.imageWidth) & 0xFF);\r
-sof[9] = jpegObj.numberOfComponents;\r
-index = 10;\r
-for (i = 0; i < sof[9]; i++) {\r
-sof[index++] = jpegObj.compID[i];\r
-sof[index++] = ((jpegObj.hsampFactor[i] << 4) + jpegObj.vsampFactor[i]);\r
-sof[index++] = jpegObj.qtableNumber[i];\r
-}\r
-this.writeArray (sof);\r
-this.WriteDHTHeader (javajs.img.Huffman.bitsDCluminance, javajs.img.Huffman.valDCluminance);\r
-this.WriteDHTHeader (javajs.img.Huffman.bitsACluminance, javajs.img.Huffman.valACluminance);\r
-this.WriteDHTHeader (javajs.img.Huffman.bitsDCchrominance, javajs.img.Huffman.valDCchrominance);\r
-this.WriteDHTHeader (javajs.img.Huffman.bitsACchrominance, javajs.img.Huffman.valACchrominance);\r
-var sos =  Clazz.newByteArray (14, 0);\r
-sos[0] = 0xFF;\r
-sos[1] = 0xDA;\r
-sos[2] = 0;\r
-sos[3] = 12;\r
-sos[4] = jpegObj.numberOfComponents;\r
-index = 5;\r
-for (i = 0; i < sos[4]; i++) {\r
-sos[index++] = jpegObj.compID[i];\r
-sos[index++] = ((jpegObj.dctableNumber[i] << 4) + jpegObj.actableNumber[i]);\r
-}\r
-sos[index++] = jpegObj.ss;\r
-sos[index++] = jpegObj.se;\r
-sos[index++] = ((jpegObj.ah << 4) + jpegObj.al);\r
-this.writeArray (sos);\r
-return comment;\r
-}, $fz.isPrivate = true, $fz), "javajs.img.JpegObj,javajs.img.DCT");\r
-Clazz.defineMethod (c$, "writeString", \r
-($fz = function (s, id) {\r
-var len = s.length;\r
-var i0 = 0;\r
-var suffix = this.applicationTag;\r
-while (i0 < len) {\r
-var nBytes = len - i0;\r
-if (nBytes > 65510) {\r
-nBytes = 65500;\r
-var pt = s.lastIndexOf ('\n', i0 + nBytes);\r
-if (pt > i0 + 1) nBytes = pt - i0;\r
-}if (i0 + nBytes == len) suffix = "";\r
-this.writeTag (nBytes + suffix.length, id);\r
-this.writeArray (s.substring (i0, i0 + nBytes).getBytes ());\r
-if (suffix.length > 0) this.writeArray (suffix.getBytes ());\r
-i0 += nBytes;\r
-}\r
-}, $fz.isPrivate = true, $fz), "~S,~N");\r
-Clazz.defineMethod (c$, "writeTag", \r
-($fz = function (length, id) {\r
-length += 2;\r
-var com =  Clazz.newByteArray (4, 0);\r
-com[0] = 0xFF;\r
-com[1] = id;\r
-com[2] = ((length >> 8) & 0xFF);\r
-com[3] = (length & 0xFF);\r
-this.writeArray (com);\r
-}, $fz.isPrivate = true, $fz), "~N,~N");\r
-Clazz.defineMethod (c$, "WriteDHTHeader", \r
-function (bits, val) {\r
-var dht;\r
-var bytes = 0;\r
-for (var j = 1; j < 17; j++) bytes += bits[j];\r
-\r
-dht =  Clazz.newByteArray (21 + bytes, 0);\r
-dht[0] = 0xFF;\r
-dht[1] = 0xC4;\r
-var index = 4;\r
-for (var j = 0; j < 17; j++) dht[index++] = bits[j];\r
-\r
-for (var j = 0; j < bytes; j++) dht[index++] = val[j];\r
-\r
-dht[2] = (((index - 2) >> 8) & 0xFF);\r
-dht[3] = ((index - 2) & 0xFF);\r
-this.writeArray (dht);\r
-}, "~A,~A");\r
-Clazz.defineMethod (c$, "writeMarker", \r
-function (data) {\r
-this.out.write (data, 0, 2);\r
-}, "~A");\r
-Clazz.defineMethod (c$, "writeArray", \r
-function (data) {\r
-this.out.write (data, 0, data.length);\r
-}, "~A");\r
-Clazz.defineStatics (c$,\r
-"CONTINUE_MAX", 65500,\r
-"CONTINUE_MAX_BUFFER", 65510,\r
-"eoi",  Clazz.newByteArray (-1, [0xFF, 0xD9]),\r
-"jfif",  Clazz.newByteArray (-1, [0xff, 0xe0, 0, 16, 0x4a, 0x46, 0x49, 0x46, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0]),\r
-"soi",  Clazz.newByteArray (-1, [0xFF, 0xD8]));\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.quantum = null;\r
-this.divisors = null;\r
-this.quantum_luminance = null;\r
-this.DivisorsLuminance = null;\r
-this.quantum_chrominance = null;\r
-this.DivisorsChrominance = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.img, "DCT");\r
-Clazz.prepareFields (c$, function () {\r
-this.quantum = javajs.util.AU.newInt2 (2);\r
-this.divisors = javajs.util.AU.newDouble2 (2);\r
-this.quantum_luminance =  Clazz.newIntArray (64, 0);\r
-this.DivisorsLuminance =  Clazz.newDoubleArray (64, 0);\r
-this.quantum_chrominance =  Clazz.newIntArray (64, 0);\r
-this.DivisorsChrominance =  Clazz.newDoubleArray (64, 0);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (quality) {\r
-this.initMatrix (quality);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "initMatrix", \r
-($fz = function (quality) {\r
-quality = (quality < 1 ? 1 : quality > 100 ? 100 : quality);\r
-quality = (quality < 50 ? Clazz.doubleToInt (5000 / quality) : 200 - quality * 2);\r
-this.quantum_luminance[0] = 16;\r
-this.quantum_luminance[1] = 11;\r
-this.quantum_luminance[2] = 10;\r
-this.quantum_luminance[3] = 16;\r
-this.quantum_luminance[4] = 24;\r
-this.quantum_luminance[5] = 40;\r
-this.quantum_luminance[6] = 51;\r
-this.quantum_luminance[7] = 61;\r
-this.quantum_luminance[8] = 12;\r
-this.quantum_luminance[9] = 12;\r
-this.quantum_luminance[10] = 14;\r
-this.quantum_luminance[11] = 19;\r
-this.quantum_luminance[12] = 26;\r
-this.quantum_luminance[13] = 58;\r
-this.quantum_luminance[14] = 60;\r
-this.quantum_luminance[15] = 55;\r
-this.quantum_luminance[16] = 14;\r
-this.quantum_luminance[17] = 13;\r
-this.quantum_luminance[18] = 16;\r
-this.quantum_luminance[19] = 24;\r
-this.quantum_luminance[20] = 40;\r
-this.quantum_luminance[21] = 57;\r
-this.quantum_luminance[22] = 69;\r
-this.quantum_luminance[23] = 56;\r
-this.quantum_luminance[24] = 14;\r
-this.quantum_luminance[25] = 17;\r
-this.quantum_luminance[26] = 22;\r
-this.quantum_luminance[27] = 29;\r
-this.quantum_luminance[28] = 51;\r
-this.quantum_luminance[29] = 87;\r
-this.quantum_luminance[30] = 80;\r
-this.quantum_luminance[31] = 62;\r
-this.quantum_luminance[32] = 18;\r
-this.quantum_luminance[33] = 22;\r
-this.quantum_luminance[34] = 37;\r
-this.quantum_luminance[35] = 56;\r
-this.quantum_luminance[36] = 68;\r
-this.quantum_luminance[37] = 109;\r
-this.quantum_luminance[38] = 103;\r
-this.quantum_luminance[39] = 77;\r
-this.quantum_luminance[40] = 24;\r
-this.quantum_luminance[41] = 35;\r
-this.quantum_luminance[42] = 55;\r
-this.quantum_luminance[43] = 64;\r
-this.quantum_luminance[44] = 81;\r
-this.quantum_luminance[45] = 104;\r
-this.quantum_luminance[46] = 113;\r
-this.quantum_luminance[47] = 92;\r
-this.quantum_luminance[48] = 49;\r
-this.quantum_luminance[49] = 64;\r
-this.quantum_luminance[50] = 78;\r
-this.quantum_luminance[51] = 87;\r
-this.quantum_luminance[52] = 103;\r
-this.quantum_luminance[53] = 121;\r
-this.quantum_luminance[54] = 120;\r
-this.quantum_luminance[55] = 101;\r
-this.quantum_luminance[56] = 72;\r
-this.quantum_luminance[57] = 92;\r
-this.quantum_luminance[58] = 95;\r
-this.quantum_luminance[59] = 98;\r
-this.quantum_luminance[60] = 112;\r
-this.quantum_luminance[61] = 100;\r
-this.quantum_luminance[62] = 103;\r
-this.quantum_luminance[63] = 99;\r
-javajs.img.DCT.AANscale (this.DivisorsLuminance, this.quantum_luminance, quality);\r
-for (var i = 4; i < 64; i++) this.quantum_chrominance[i] = 99;\r
-\r
-this.quantum_chrominance[0] = 17;\r
-this.quantum_chrominance[1] = 18;\r
-this.quantum_chrominance[2] = 24;\r
-this.quantum_chrominance[3] = 47;\r
-this.quantum_chrominance[8] = 18;\r
-this.quantum_chrominance[9] = 21;\r
-this.quantum_chrominance[10] = 26;\r
-this.quantum_chrominance[11] = 66;\r
-this.quantum_chrominance[16] = 24;\r
-this.quantum_chrominance[17] = 26;\r
-this.quantum_chrominance[18] = 56;\r
-this.quantum_chrominance[24] = 47;\r
-this.quantum_chrominance[25] = 66;\r
-javajs.img.DCT.AANscale (this.DivisorsChrominance, this.quantum_chrominance, quality);\r
-this.quantum[0] = this.quantum_luminance;\r
-this.quantum[1] = this.quantum_chrominance;\r
-this.divisors[0] = this.DivisorsLuminance;\r
-this.divisors[1] = this.DivisorsChrominance;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-c$.AANscale = Clazz.defineMethod (c$, "AANscale", \r
-($fz = function (divisors, values, quality) {\r
-for (var j = 0; j < 64; j++) {\r
-var temp = Clazz.doubleToInt ((values[j] * quality + 50) / 100);\r
-values[j] = (temp < 1 ? 1 : temp > 255 ? 255 : temp);\r
-}\r
-for (var i = 0, index = 0; i < 8; i++) for (var j = 0; j < 8; j++, index++) divisors[index] = (0.125 / (values[index] * javajs.img.DCT.AANscaleFactor[i] * javajs.img.DCT.AANscaleFactor[j]));\r
-\r
-\r
-}, $fz.isPrivate = true, $fz), "~A,~A,~N");\r
-c$.forwardDCT = Clazz.defineMethod (c$, "forwardDCT", \r
-function (input) {\r
-var output =  Clazz.newDoubleArray (8, 8, 0);\r
-var tmp0;\r
-var tmp1;\r
-var tmp2;\r
-var tmp3;\r
-var tmp4;\r
-var tmp5;\r
-var tmp6;\r
-var tmp7;\r
-var tmp10;\r
-var tmp11;\r
-var tmp12;\r
-var tmp13;\r
-var z1;\r
-var z2;\r
-var z3;\r
-var z4;\r
-var z5;\r
-var z11;\r
-var z13;\r
-for (var i = 0; i < 8; i++) for (var j = 0; j < 8; j++) output[i][j] = (input[i][j] - 128.0);\r
-\r
-\r
-for (var i = 0; i < 8; i++) {\r
-tmp0 = output[i][0] + output[i][7];\r
-tmp7 = output[i][0] - output[i][7];\r
-tmp1 = output[i][1] + output[i][6];\r
-tmp6 = output[i][1] - output[i][6];\r
-tmp2 = output[i][2] + output[i][5];\r
-tmp5 = output[i][2] - output[i][5];\r
-tmp3 = output[i][3] + output[i][4];\r
-tmp4 = output[i][3] - output[i][4];\r
-tmp10 = tmp0 + tmp3;\r
-tmp13 = tmp0 - tmp3;\r
-tmp11 = tmp1 + tmp2;\r
-tmp12 = tmp1 - tmp2;\r
-output[i][0] = tmp10 + tmp11;\r
-output[i][4] = tmp10 - tmp11;\r
-z1 = (tmp12 + tmp13) * 0.707106781;\r
-output[i][2] = tmp13 + z1;\r
-output[i][6] = tmp13 - z1;\r
-tmp10 = tmp4 + tmp5;\r
-tmp11 = tmp5 + tmp6;\r
-tmp12 = tmp6 + tmp7;\r
-z5 = (tmp10 - tmp12) * 0.382683433;\r
-z2 = 0.541196100 * tmp10 + z5;\r
-z4 = 1.306562965 * tmp12 + z5;\r
-z3 = tmp11 * 0.707106781;\r
-z11 = tmp7 + z3;\r
-z13 = tmp7 - z3;\r
-output[i][5] = z13 + z2;\r
-output[i][3] = z13 - z2;\r
-output[i][1] = z11 + z4;\r
-output[i][7] = z11 - z4;\r
-}\r
-for (var i = 0; i < 8; i++) {\r
-tmp0 = output[0][i] + output[7][i];\r
-tmp7 = output[0][i] - output[7][i];\r
-tmp1 = output[1][i] + output[6][i];\r
-tmp6 = output[1][i] - output[6][i];\r
-tmp2 = output[2][i] + output[5][i];\r
-tmp5 = output[2][i] - output[5][i];\r
-tmp3 = output[3][i] + output[4][i];\r
-tmp4 = output[3][i] - output[4][i];\r
-tmp10 = tmp0 + tmp3;\r
-tmp13 = tmp0 - tmp3;\r
-tmp11 = tmp1 + tmp2;\r
-tmp12 = tmp1 - tmp2;\r
-output[0][i] = tmp10 + tmp11;\r
-output[4][i] = tmp10 - tmp11;\r
-z1 = (tmp12 + tmp13) * 0.707106781;\r
-output[2][i] = tmp13 + z1;\r
-output[6][i] = tmp13 - z1;\r
-tmp10 = tmp4 + tmp5;\r
-tmp11 = tmp5 + tmp6;\r
-tmp12 = tmp6 + tmp7;\r
-z5 = (tmp10 - tmp12) * 0.382683433;\r
-z2 = 0.541196100 * tmp10 + z5;\r
-z4 = 1.306562965 * tmp12 + z5;\r
-z3 = tmp11 * 0.707106781;\r
-z11 = tmp7 + z3;\r
-z13 = tmp7 - z3;\r
-output[5][i] = z13 + z2;\r
-output[3][i] = z13 - z2;\r
-output[1][i] = z11 + z4;\r
-output[7][i] = z11 - z4;\r
-}\r
-return output;\r
-}, "~A");\r
-c$.quantizeBlock = Clazz.defineMethod (c$, "quantizeBlock", \r
-function (inputData, divisorsCode) {\r
-var outputData =  Clazz.newIntArray (64, 0);\r
-for (var i = 0, index = 0; i < 8; i++) for (var j = 0; j < 8; j++, index++) outputData[index] = (Math.round (inputData[i][j] * divisorsCode[index]));\r
-\r
-\r
-return outputData;\r
-}, "~A,~A");\r
-Clazz.defineStatics (c$,\r
-"N", 8,\r
-"NN", 64,\r
-"AANscaleFactor",  Clazz.newDoubleArray (-1, [1.0, 1.387039845, 1.306562965, 1.175875602, 1.0, 0.785694958, 0.541196100, 0.275899379]));\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.bufferPutBits = 0;\r
-this.bufferPutBuffer = 0;\r
-this.imageHeight = 0;\r
-this.imageWidth = 0;\r
-this.dc_matrix0 = null;\r
-this.ac_matrix0 = null;\r
-this.dc_matrix1 = null;\r
-this.ac_matrix1 = null;\r
-this.dc_matrix = null;\r
-this.ac_matrix = null;\r
-this.numOfDCTables = 0;\r
-this.numOfACTables = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.img, "Huffman");\r
-Clazz.makeConstructor (c$, \r
-function (width, height) {\r
-this.initHuf ();\r
-this.imageWidth = width;\r
-this.imageHeight = height;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "HuffmanBlockEncoder", \r
-function (out, zigzag, prec, dcCode, acCode) {\r
-var temp;\r
-var temp2;\r
-var nbits;\r
-var k;\r
-var r;\r
-var i;\r
-this.numOfDCTables = 2;\r
-this.numOfACTables = 2;\r
-var matrixDC = this.dc_matrix[dcCode];\r
-var matrixAC = this.ac_matrix[acCode];\r
-temp = temp2 = zigzag[0] - prec;\r
-if (temp < 0) {\r
-temp = -temp;\r
-temp2--;\r
-}nbits = 0;\r
-while (temp != 0) {\r
-nbits++;\r
-temp >>= 1;\r
-}\r
-this.bufferIt (out, matrixDC[nbits][0], matrixDC[nbits][1]);\r
-if (nbits != 0) {\r
-this.bufferIt (out, temp2, nbits);\r
-}r = 0;\r
-for (k = 1; k < 64; k++) {\r
-if ((temp = zigzag[javajs.img.Huffman.jpegNaturalOrder[k]]) == 0) {\r
-r++;\r
-} else {\r
-while (r > 15) {\r
-this.bufferIt (out, matrixAC[0xF0][0], matrixAC[0xF0][1]);\r
-r -= 16;\r
-}\r
-temp2 = temp;\r
-if (temp < 0) {\r
-temp = -temp;\r
-temp2--;\r
-}nbits = 1;\r
-while ((temp >>= 1) != 0) {\r
-nbits++;\r
-}\r
-i = (r << 4) + nbits;\r
-this.bufferIt (out, matrixAC[i][0], matrixAC[i][1]);\r
-this.bufferIt (out, temp2, nbits);\r
-r = 0;\r
-}}\r
-if (r > 0) {\r
-this.bufferIt (out, matrixAC[0][0], matrixAC[0][1]);\r
-}}, "javajs.util.OC,~A,~N,~N,~N");\r
-Clazz.defineMethod (c$, "bufferIt", \r
-function (out, code, size) {\r
-var putBuffer = code;\r
-var putBits = this.bufferPutBits;\r
-putBuffer &= (1 << size) - 1;\r
-putBits += size;\r
-putBuffer <<= 24 - putBits;\r
-putBuffer |= this.bufferPutBuffer;\r
-while (putBits >= 8) {\r
-var c = ((putBuffer >> 16) & 0xFF);\r
-out.writeByteAsInt (c);\r
-if (c == 0xFF) {\r
-out.writeByteAsInt (0);\r
-}putBuffer <<= 8;\r
-putBits -= 8;\r
-}\r
-this.bufferPutBuffer = putBuffer;\r
-this.bufferPutBits = putBits;\r
-}, "javajs.util.OC,~N,~N");\r
-Clazz.defineMethod (c$, "flushBuffer", \r
-function (out) {\r
-var putBuffer = this.bufferPutBuffer;\r
-var putBits = this.bufferPutBits;\r
-while (putBits >= 8) {\r
-var c = ((putBuffer >> 16) & 0xFF);\r
-out.writeByteAsInt (c);\r
-if (c == 0xFF) {\r
-out.writeByteAsInt (0);\r
-}putBuffer <<= 8;\r
-putBits -= 8;\r
-}\r
-if (putBits > 0) {\r
-var c = ((putBuffer >> 16) & 0xFF);\r
-out.writeByteAsInt (c);\r
-}}, "javajs.util.OC");\r
-Clazz.defineMethod (c$, "initHuf", \r
-($fz = function () {\r
-this.dc_matrix0 =  Clazz.newIntArray (12, 2, 0);\r
-this.dc_matrix1 =  Clazz.newIntArray (12, 2, 0);\r
-this.ac_matrix0 =  Clazz.newIntArray (255, 2, 0);\r
-this.ac_matrix1 =  Clazz.newIntArray (255, 2, 0);\r
-this.dc_matrix = javajs.util.AU.newInt3 (2, -1);\r
-this.ac_matrix = javajs.util.AU.newInt3 (2, -1);\r
-var p;\r
-var l;\r
-var i;\r
-var lastp;\r
-var si;\r
-var code;\r
-var huffsize =  Clazz.newIntArray (257, 0);\r
-var huffcode =  Clazz.newIntArray (257, 0);\r
-p = 0;\r
-for (l = 1; l <= 16; l++) {\r
-for (i = javajs.img.Huffman.bitsDCchrominance[l]; --i >= 0; ) {\r
-huffsize[p++] = l;\r
-}\r
-}\r
-huffsize[p] = 0;\r
-lastp = p;\r
-code = 0;\r
-si = huffsize[0];\r
-p = 0;\r
-while (huffsize[p] != 0) {\r
-while (huffsize[p] == si) {\r
-huffcode[p++] = code;\r
-code++;\r
-}\r
-code <<= 1;\r
-si++;\r
-}\r
-for (p = 0; p < lastp; p++) {\r
-this.dc_matrix1[javajs.img.Huffman.valDCchrominance[p]][0] = huffcode[p];\r
-this.dc_matrix1[javajs.img.Huffman.valDCchrominance[p]][1] = huffsize[p];\r
-}\r
-p = 0;\r
-for (l = 1; l <= 16; l++) {\r
-for (i = javajs.img.Huffman.bitsACchrominance[l]; --i >= 0; ) {\r
-huffsize[p++] = l;\r
-}\r
-}\r
-huffsize[p] = 0;\r
-lastp = p;\r
-code = 0;\r
-si = huffsize[0];\r
-p = 0;\r
-while (huffsize[p] != 0) {\r
-while (huffsize[p] == si) {\r
-huffcode[p++] = code;\r
-code++;\r
-}\r
-code <<= 1;\r
-si++;\r
-}\r
-for (p = 0; p < lastp; p++) {\r
-this.ac_matrix1[javajs.img.Huffman.valACchrominance[p]][0] = huffcode[p];\r
-this.ac_matrix1[javajs.img.Huffman.valACchrominance[p]][1] = huffsize[p];\r
-}\r
-p = 0;\r
-for (l = 1; l <= 16; l++) {\r
-for (i = javajs.img.Huffman.bitsDCluminance[l]; --i >= 0; ) {\r
-huffsize[p++] = l;\r
-}\r
-}\r
-huffsize[p] = 0;\r
-lastp = p;\r
-code = 0;\r
-si = huffsize[0];\r
-p = 0;\r
-while (huffsize[p] != 0) {\r
-while (huffsize[p] == si) {\r
-huffcode[p++] = code;\r
-code++;\r
-}\r
-code <<= 1;\r
-si++;\r
-}\r
-for (p = 0; p < lastp; p++) {\r
-this.dc_matrix0[javajs.img.Huffman.valDCluminance[p]][0] = huffcode[p];\r
-this.dc_matrix0[javajs.img.Huffman.valDCluminance[p]][1] = huffsize[p];\r
-}\r
-p = 0;\r
-for (l = 1; l <= 16; l++) {\r
-for (i = javajs.img.Huffman.bitsACluminance[l]; --i >= 0; ) {\r
-huffsize[p++] = l;\r
-}\r
-}\r
-huffsize[p] = 0;\r
-lastp = p;\r
-code = 0;\r
-si = huffsize[0];\r
-p = 0;\r
-while (huffsize[p] != 0) {\r
-while (huffsize[p] == si) {\r
-huffcode[p++] = code;\r
-code++;\r
-}\r
-code <<= 1;\r
-si++;\r
-}\r
-for (var q = 0; q < lastp; q++) {\r
-this.ac_matrix0[javajs.img.Huffman.valACluminance[q]][0] = huffcode[q];\r
-this.ac_matrix0[javajs.img.Huffman.valACluminance[q]][1] = huffsize[q];\r
-}\r
-this.dc_matrix[0] = this.dc_matrix0;\r
-this.dc_matrix[1] = this.dc_matrix1;\r
-this.ac_matrix[0] = this.ac_matrix0;\r
-this.ac_matrix[1] = this.ac_matrix1;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineStatics (c$,\r
-"bitsDCluminance",  Clazz.newIntArray (-1, [0x00, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]),\r
-"valDCluminance",  Clazz.newIntArray (-1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]),\r
-"bitsDCchrominance",  Clazz.newIntArray (-1, [0x01, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]),\r
-"valDCchrominance",  Clazz.newIntArray (-1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]),\r
-"bitsACluminance",  Clazz.newIntArray (-1, [0x10, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d]),\r
-"valACluminance",  Clazz.newIntArray (-1, [0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa]),\r
-"bitsACchrominance",  Clazz.newIntArray (-1, [0x11, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77]),\r
-"valACchrominance",  Clazz.newIntArray (-1, [0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa]),\r
-"jpegNaturalOrder",  Clazz.newIntArray (-1, [0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]));\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.comment = null;\r
-this.imageHeight = 0;\r
-this.imageWidth = 0;\r
-this.blockWidth = null;\r
-this.blockHeight = null;\r
-this.precision = 8;\r
-this.numberOfComponents = 3;\r
-this.components = null;\r
-this.compID = null;\r
-this.hsampFactor = null;\r
-this.vsampFactor = null;\r
-this.qtableNumber = null;\r
-this.dctableNumber = null;\r
-this.actableNumber = null;\r
-this.lastColumnIsDummy = null;\r
-this.lastRowIsDummy = null;\r
-this.ss = 0;\r
-this.se = 63;\r
-this.ah = 0;\r
-this.al = 0;\r
-this.compWidth = null;\r
-this.compHeight = null;\r
-this.maxHsampFactor = 0;\r
-this.maxVsampFactor = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.img, "JpegObj");\r
-Clazz.prepareFields (c$, function () {\r
-this.compID =  Clazz.newIntArray (-1, [1, 2, 3]);\r
-this.hsampFactor =  Clazz.newIntArray (-1, [1, 1, 1]);\r
-this.vsampFactor =  Clazz.newIntArray (-1, [1, 1, 1]);\r
-this.qtableNumber =  Clazz.newIntArray (-1, [0, 1, 1]);\r
-this.dctableNumber =  Clazz.newIntArray (-1, [0, 1, 1]);\r
-this.actableNumber =  Clazz.newIntArray (-1, [0, 1, 1]);\r
-this.lastColumnIsDummy =  Clazz.newBooleanArray (-1, [false, false, false]);\r
-this.lastRowIsDummy =  Clazz.newBooleanArray (-1, [false, false, false]);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.components = javajs.util.AU.newFloat3 (this.numberOfComponents, -1);\r
-this.compWidth =  Clazz.newIntArray (this.numberOfComponents, 0);\r
-this.compHeight =  Clazz.newIntArray (this.numberOfComponents, 0);\r
-this.blockWidth =  Clazz.newIntArray (this.numberOfComponents, 0);\r
-this.blockHeight =  Clazz.newIntArray (this.numberOfComponents, 0);\r
-});\r
-Clazz.defineMethod (c$, "getYCCArray", \r
-function (pixels) {\r
-this.maxHsampFactor = 1;\r
-this.maxVsampFactor = 1;\r
-for (var y = 0; y < this.numberOfComponents; y++) {\r
-this.maxHsampFactor = Math.max (this.maxHsampFactor, this.hsampFactor[y]);\r
-this.maxVsampFactor = Math.max (this.maxVsampFactor, this.vsampFactor[y]);\r
-}\r
-for (var y = 0; y < this.numberOfComponents; y++) {\r
-this.compWidth[y] = (Clazz.doubleToInt (((this.imageWidth % 8 != 0) ? (Clazz.doubleToInt (Math.ceil (this.imageWidth / 8.0))) * 8 : this.imageWidth) / this.maxHsampFactor)) * this.hsampFactor[y];\r
-if (this.compWidth[y] != ((Clazz.doubleToInt (this.imageWidth / this.maxHsampFactor)) * this.hsampFactor[y])) {\r
-this.lastColumnIsDummy[y] = true;\r
-}this.blockWidth[y] = Clazz.doubleToInt (Math.ceil (this.compWidth[y] / 8.0));\r
-this.compHeight[y] = (Clazz.doubleToInt (((this.imageHeight % 8 != 0) ? (Clazz.doubleToInt (Math.ceil (this.imageHeight / 8.0))) * 8 : this.imageHeight) / this.maxVsampFactor)) * this.vsampFactor[y];\r
-if (this.compHeight[y] != ((Clazz.doubleToInt (this.imageHeight / this.maxVsampFactor)) * this.vsampFactor[y])) {\r
-this.lastRowIsDummy[y] = true;\r
-}this.blockHeight[y] = Clazz.doubleToInt (Math.ceil (this.compHeight[y] / 8.0));\r
-}\r
-var Y =  Clazz.newFloatArray (this.compHeight[0], this.compWidth[0], 0);\r
-var Cr1 =  Clazz.newFloatArray (this.compHeight[0], this.compWidth[0], 0);\r
-var Cb1 =  Clazz.newFloatArray (this.compHeight[0], this.compWidth[0], 0);\r
-for (var pt = 0, y = 0; y < this.imageHeight; ++y) {\r
-for (var x = 0; x < this.imageWidth; ++x, pt++) {\r
-var p = pixels[pt];\r
-var r = ((p >> 16) & 0xff);\r
-var g = ((p >> 8) & 0xff);\r
-var b = (p & 0xff);\r
-Y[y][x] = ((0.299 * r + 0.587 * g + 0.114 * b));\r
-Cb1[y][x] = 128 + ((-0.16874 * r - 0.33126 * g + 0.5 * b));\r
-Cr1[y][x] = 128 + ((0.5 * r - 0.41869 * g - 0.08131 * b));\r
-}\r
-}\r
-this.components[0] = Y;\r
-this.components[1] = Cb1;\r
-this.components[2] = Cr1;\r
-}, "~A");\r
-});\r
+Clazz.declarePackage ("javajs.img");
+Clazz.load (["javajs.img.ImageEncoder", "javajs.util.AU"], ["javajs.img.DCT", "$.JpgEncoder", "$.JpegObj", "$.Huffman"], null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.jpegObj = null;
+this.huf = null;
+this.dct = null;
+this.defaultQuality = 100;
+this.applicationTag = null;
+Clazz.instantialize (this, arguments);
+}, javajs.img, "JpgEncoder", javajs.img.ImageEncoder);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javajs.img.JpgEncoder, []);
+});
+Clazz.overrideMethod (c$, "setParams", 
+function (params) {
+if (this.quality <= 0) this.quality = (params.containsKey ("qualityJPG") ? (params.get ("qualityJPG")).intValue () : this.defaultQuality);
+this.jpegObj =  new javajs.img.JpegObj ();
+this.jpegObj.comment = params.get ("comment");
+this.applicationTag = params.get ("jpgAppTag");
+}, "java.util.Map");
+Clazz.overrideMethod (c$, "generate", 
+function () {
+this.jpegObj.imageWidth = this.width;
+this.jpegObj.imageHeight = this.height;
+this.dct =  new javajs.img.DCT (this.quality);
+this.huf =  new javajs.img.Huffman (this.width, this.height);
+if (this.jpegObj == null) return;
+this.jpegObj.getYCCArray (this.pixels);
+var longState = this.writeHeaders (this.jpegObj, this.dct);
+this.writeCompressedData (this.jpegObj, this.dct, this.huf);
+this.writeMarker (javajs.img.JpgEncoder.eoi);
+if (longState != null) {
+var b = longState.getBytes ();
+this.out.write (b, 0, b.length);
+}});
+Clazz.defineMethod (c$, "writeCompressedData", 
+($fz = function (jpegObj, dct, huf) {
+var i;
+var j;
+var r;
+var c;
+var a;
+var b;
+var comp;
+var xpos;
+var ypos;
+var xblockoffset;
+var yblockoffset;
+var inputArray;
+var dctArray1 =  Clazz.newFloatArray (8, 8, 0);
+var dctArray2 =  Clazz.newDoubleArray (8, 8, 0);
+var dctArray3 =  Clazz.newIntArray (64, 0);
+var lastDCvalue =  Clazz.newIntArray (jpegObj.numberOfComponents, 0);
+var minBlockWidth;
+var minBlockHeight;
+minBlockWidth = ((huf.imageWidth % 8 != 0) ? Clazz.doubleToInt (Math.floor (huf.imageWidth / 8.0) + 1) * 8 : huf.imageWidth);
+minBlockHeight = ((huf.imageHeight % 8 != 0) ? Clazz.doubleToInt (Math.floor (huf.imageHeight / 8.0) + 1) * 8 : huf.imageHeight);
+for (comp = 0; comp < jpegObj.numberOfComponents; comp++) {
+minBlockWidth = Math.min (minBlockWidth, jpegObj.blockWidth[comp]);
+minBlockHeight = Math.min (minBlockHeight, jpegObj.blockHeight[comp]);
+}
+xpos = 0;
+for (r = 0; r < minBlockHeight; r++) {
+for (c = 0; c < minBlockWidth; c++) {
+xpos = c * 8;
+ypos = r * 8;
+for (comp = 0; comp < jpegObj.numberOfComponents; comp++) {
+inputArray = jpegObj.components[comp];
+var vsampF = jpegObj.vsampFactor[comp];
+var hsampF = jpegObj.hsampFactor[comp];
+var qNumber = jpegObj.qtableNumber[comp];
+var dcNumber = jpegObj.dctableNumber[comp];
+var acNumber = jpegObj.actableNumber[comp];
+for (i = 0; i < vsampF; i++) {
+for (j = 0; j < hsampF; j++) {
+xblockoffset = j * 8;
+yblockoffset = i * 8;
+for (a = 0; a < 8; a++) {
+for (b = 0; b < 8; b++) {
+dctArray1[a][b] = inputArray[ypos + yblockoffset + a][xpos + xblockoffset + b];
+}
+}
+dctArray2 = javajs.img.DCT.forwardDCT (dctArray1);
+dctArray3 = javajs.img.DCT.quantizeBlock (dctArray2, dct.divisors[qNumber]);
+huf.HuffmanBlockEncoder (this.out, dctArray3, lastDCvalue[comp], dcNumber, acNumber);
+lastDCvalue[comp] = dctArray3[0];
+}
+}
+}
+}
+}
+huf.flushBuffer (this.out);
+}, $fz.isPrivate = true, $fz), "javajs.img.JpegObj,javajs.img.DCT,javajs.img.Huffman");
+Clazz.defineMethod (c$, "writeHeaders", 
+($fz = function (jpegObj, dct) {
+var i;
+var j;
+var index;
+var offset;
+var tempArray;
+this.writeMarker (javajs.img.JpgEncoder.soi);
+this.writeArray (javajs.img.JpgEncoder.jfif);
+var comment = null;
+if (jpegObj.comment.length > 0) this.writeString (jpegObj.comment, 0xE1);
+this.writeString ("JPEG Encoder Copyright 1998, James R. Weeks and BioElectroMech.\n\n", 0xFE);
+var dqt =  Clazz.newByteArray (134, 0);
+dqt[0] = 0xFF;
+dqt[1] = 0xDB;
+dqt[2] = 0;
+dqt[3] = 132;
+offset = 4;
+for (i = 0; i < 2; i++) {
+dqt[offset++] = ((0) + i);
+tempArray = dct.quantum[i];
+for (j = 0; j < 64; j++) {
+dqt[offset++] = tempArray[javajs.img.Huffman.jpegNaturalOrder[j]];
+}
+}
+this.writeArray (dqt);
+var sof =  Clazz.newByteArray (19, 0);
+sof[0] = 0xFF;
+sof[1] = 0xC0;
+sof[2] = 0;
+sof[3] = 17;
+sof[4] = jpegObj.precision;
+sof[5] = ((jpegObj.imageHeight >> 8) & 0xFF);
+sof[6] = ((jpegObj.imageHeight) & 0xFF);
+sof[7] = ((jpegObj.imageWidth >> 8) & 0xFF);
+sof[8] = ((jpegObj.imageWidth) & 0xFF);
+sof[9] = jpegObj.numberOfComponents;
+index = 10;
+for (i = 0; i < sof[9]; i++) {
+sof[index++] = jpegObj.compID[i];
+sof[index++] = ((jpegObj.hsampFactor[i] << 4) + jpegObj.vsampFactor[i]);
+sof[index++] = jpegObj.qtableNumber[i];
+}
+this.writeArray (sof);
+this.WriteDHTHeader (javajs.img.Huffman.bitsDCluminance, javajs.img.Huffman.valDCluminance);
+this.WriteDHTHeader (javajs.img.Huffman.bitsACluminance, javajs.img.Huffman.valACluminance);
+this.WriteDHTHeader (javajs.img.Huffman.bitsDCchrominance, javajs.img.Huffman.valDCchrominance);
+this.WriteDHTHeader (javajs.img.Huffman.bitsACchrominance, javajs.img.Huffman.valACchrominance);
+var sos =  Clazz.newByteArray (14, 0);
+sos[0] = 0xFF;
+sos[1] = 0xDA;
+sos[2] = 0;
+sos[3] = 12;
+sos[4] = jpegObj.numberOfComponents;
+index = 5;
+for (i = 0; i < sos[4]; i++) {
+sos[index++] = jpegObj.compID[i];
+sos[index++] = ((jpegObj.dctableNumber[i] << 4) + jpegObj.actableNumber[i]);
+}
+sos[index++] = jpegObj.ss;
+sos[index++] = jpegObj.se;
+sos[index++] = ((jpegObj.ah << 4) + jpegObj.al);
+this.writeArray (sos);
+return comment;
+}, $fz.isPrivate = true, $fz), "javajs.img.JpegObj,javajs.img.DCT");
+Clazz.defineMethod (c$, "writeString", 
+($fz = function (s, id) {
+var len = s.length;
+var i0 = 0;
+var suffix = this.applicationTag;
+while (i0 < len) {
+var nBytes = len - i0;
+if (nBytes > 65510) {
+nBytes = 65500;
+var pt = s.lastIndexOf ('\n', i0 + nBytes);
+if (pt > i0 + 1) nBytes = pt - i0;
+}if (i0 + nBytes == len) suffix = "";
+this.writeTag (nBytes + suffix.length, id);
+this.writeArray (s.substring (i0, i0 + nBytes).getBytes ());
+if (suffix.length > 0) this.writeArray (suffix.getBytes ());
+i0 += nBytes;
+}
+}, $fz.isPrivate = true, $fz), "~S,~N");
+Clazz.defineMethod (c$, "writeTag", 
+($fz = function (length, id) {
+length += 2;
+var com =  Clazz.newByteArray (4, 0);
+com[0] = 0xFF;
+com[1] = id;
+com[2] = ((length >> 8) & 0xFF);
+com[3] = (length & 0xFF);
+this.writeArray (com);
+}, $fz.isPrivate = true, $fz), "~N,~N");
+Clazz.defineMethod (c$, "WriteDHTHeader", 
+function (bits, val) {
+var dht;
+var bytes = 0;
+for (var j = 1; j < 17; j++) bytes += bits[j];
+
+dht =  Clazz.newByteArray (21 + bytes, 0);
+dht[0] = 0xFF;
+dht[1] = 0xC4;
+var index = 4;
+for (var j = 0; j < 17; j++) dht[index++] = bits[j];
+
+for (var j = 0; j < bytes; j++) dht[index++] = val[j];
+
+dht[2] = (((index - 2) >> 8) & 0xFF);
+dht[3] = ((index - 2) & 0xFF);
+this.writeArray (dht);
+}, "~A,~A");
+Clazz.defineMethod (c$, "writeMarker", 
+function (data) {
+this.out.write (data, 0, 2);
+}, "~A");
+Clazz.defineMethod (c$, "writeArray", 
+function (data) {
+this.out.write (data, 0, data.length);
+}, "~A");
+Clazz.defineStatics (c$,
+"CONTINUE_MAX", 65500,
+"CONTINUE_MAX_BUFFER", 65510,
+"eoi",  Clazz.newByteArray (-1, [0xFF, 0xD9]),
+"jfif",  Clazz.newByteArray (-1, [0xff, 0xe0, 0, 16, 0x4a, 0x46, 0x49, 0x46, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0]),
+"soi",  Clazz.newByteArray (-1, [0xFF, 0xD8]));
+c$ = Clazz.decorateAsClass (function () {
+this.quantum = null;
+this.divisors = null;
+this.quantum_luminance = null;
+this.DivisorsLuminance = null;
+this.quantum_chrominance = null;
+this.DivisorsChrominance = null;
+Clazz.instantialize (this, arguments);
+}, javajs.img, "DCT");
+Clazz.prepareFields (c$, function () {
+this.quantum = javajs.util.AU.newInt2 (2);
+this.divisors = javajs.util.AU.newDouble2 (2);
+this.quantum_luminance =  Clazz.newIntArray (64, 0);
+this.DivisorsLuminance =  Clazz.newDoubleArray (64, 0);
+this.quantum_chrominance =  Clazz.newIntArray (64, 0);
+this.DivisorsChrominance =  Clazz.newDoubleArray (64, 0);
+});
+Clazz.makeConstructor (c$, 
+function (quality) {
+this.initMatrix (quality);
+}, "~N");
+Clazz.defineMethod (c$, "initMatrix", 
+($fz = function (quality) {
+quality = (quality < 1 ? 1 : quality > 100 ? 100 : quality);
+quality = (quality < 50 ? Clazz.doubleToInt (5000 / quality) : 200 - quality * 2);
+this.quantum_luminance[0] = 16;
+this.quantum_luminance[1] = 11;
+this.quantum_luminance[2] = 10;
+this.quantum_luminance[3] = 16;
+this.quantum_luminance[4] = 24;
+this.quantum_luminance[5] = 40;
+this.quantum_luminance[6] = 51;
+this.quantum_luminance[7] = 61;
+this.quantum_luminance[8] = 12;
+this.quantum_luminance[9] = 12;
+this.quantum_luminance[10] = 14;
+this.quantum_luminance[11] = 19;
+this.quantum_luminance[12] = 26;
+this.quantum_luminance[13] = 58;
+this.quantum_luminance[14] = 60;
+this.quantum_luminance[15] = 55;
+this.quantum_luminance[16] = 14;
+this.quantum_luminance[17] = 13;
+this.quantum_luminance[18] = 16;
+this.quantum_luminance[19] = 24;
+this.quantum_luminance[20] = 40;
+this.quantum_luminance[21] = 57;
+this.quantum_luminance[22] = 69;
+this.quantum_luminance[23] = 56;
+this.quantum_luminance[24] = 14;
+this.quantum_luminance[25] = 17;
+this.quantum_luminance[26] = 22;
+this.quantum_luminance[27] = 29;
+this.quantum_luminance[28] = 51;
+this.quantum_luminance[29] = 87;
+this.quantum_luminance[30] = 80;
+this.quantum_luminance[31] = 62;
+this.quantum_luminance[32] = 18;
+this.quantum_luminance[33] = 22;
+this.quantum_luminance[34] = 37;
+this.quantum_luminance[35] = 56;
+this.quantum_luminance[36] = 68;
+this.quantum_luminance[37] = 109;
+this.quantum_luminance[38] = 103;
+this.quantum_luminance[39] = 77;
+this.quantum_luminance[40] = 24;
+this.quantum_luminance[41] = 35;
+this.quantum_luminance[42] = 55;
+this.quantum_luminance[43] = 64;
+this.quantum_luminance[44] = 81;
+this.quantum_luminance[45] = 104;
+this.quantum_luminance[46] = 113;
+this.quantum_luminance[47] = 92;
+this.quantum_luminance[48] = 49;
+this.quantum_luminance[49] = 64;
+this.quantum_luminance[50] = 78;
+this.quantum_luminance[51] = 87;
+this.quantum_luminance[52] = 103;
+this.quantum_luminance[53] = 121;
+this.quantum_luminance[54] = 120;
+this.quantum_luminance[55] = 101;
+this.quantum_luminance[56] = 72;
+this.quantum_luminance[57] = 92;
+this.quantum_luminance[58] = 95;
+this.quantum_luminance[59] = 98;
+this.quantum_luminance[60] = 112;
+this.quantum_luminance[61] = 100;
+this.quantum_luminance[62] = 103;
+this.quantum_luminance[63] = 99;
+javajs.img.DCT.AANscale (this.DivisorsLuminance, this.quantum_luminance, quality);
+for (var i = 4; i < 64; i++) this.quantum_chrominance[i] = 99;
+
+this.quantum_chrominance[0] = 17;
+this.quantum_chrominance[1] = 18;
+this.quantum_chrominance[2] = 24;
+this.quantum_chrominance[3] = 47;
+this.quantum_chrominance[8] = 18;
+this.quantum_chrominance[9] = 21;
+this.quantum_chrominance[10] = 26;
+this.quantum_chrominance[11] = 66;
+this.quantum_chrominance[16] = 24;
+this.quantum_chrominance[17] = 26;
+this.quantum_chrominance[18] = 56;
+this.quantum_chrominance[24] = 47;
+this.quantum_chrominance[25] = 66;
+javajs.img.DCT.AANscale (this.DivisorsChrominance, this.quantum_chrominance, quality);
+this.quantum[0] = this.quantum_luminance;
+this.quantum[1] = this.quantum_chrominance;
+this.divisors[0] = this.DivisorsLuminance;
+this.divisors[1] = this.DivisorsChrominance;
+}, $fz.isPrivate = true, $fz), "~N");
+c$.AANscale = Clazz.defineMethod (c$, "AANscale", 
+($fz = function (divisors, values, quality) {
+for (var j = 0; j < 64; j++) {
+var temp = Clazz.doubleToInt ((values[j] * quality + 50) / 100);
+values[j] = (temp < 1 ? 1 : temp > 255 ? 255 : temp);
+}
+for (var i = 0, index = 0; i < 8; i++) for (var j = 0; j < 8; j++, index++) divisors[index] = (0.125 / (values[index] * javajs.img.DCT.AANscaleFactor[i] * javajs.img.DCT.AANscaleFactor[j]));
+
+
+}, $fz.isPrivate = true, $fz), "~A,~A,~N");
+c$.forwardDCT = Clazz.defineMethod (c$, "forwardDCT", 
+function (input) {
+var output =  Clazz.newDoubleArray (8, 8, 0);
+var tmp0;
+var tmp1;
+var tmp2;
+var tmp3;
+var tmp4;
+var tmp5;
+var tmp6;
+var tmp7;
+var tmp10;
+var tmp11;
+var tmp12;
+var tmp13;
+var z1;
+var z2;
+var z3;
+var z4;
+var z5;
+var z11;
+var z13;
+for (var i = 0; i < 8; i++) for (var j = 0; j < 8; j++) output[i][j] = (input[i][j] - 128.0);
+
+
+for (var i = 0; i < 8; i++) {
+tmp0 = output[i][0] + output[i][7];
+tmp7 = output[i][0] - output[i][7];
+tmp1 = output[i][1] + output[i][6];
+tmp6 = output[i][1] - output[i][6];
+tmp2 = output[i][2] + output[i][5];
+tmp5 = output[i][2] - output[i][5];
+tmp3 = output[i][3] + output[i][4];
+tmp4 = output[i][3] - output[i][4];
+tmp10 = tmp0 + tmp3;
+tmp13 = tmp0 - tmp3;
+tmp11 = tmp1 + tmp2;
+tmp12 = tmp1 - tmp2;
+output[i][0] = tmp10 + tmp11;
+output[i][4] = tmp10 - tmp11;
+z1 = (tmp12 + tmp13) * 0.707106781;
+output[i][2] = tmp13 + z1;
+output[i][6] = tmp13 - z1;
+tmp10 = tmp4 + tmp5;
+tmp11 = tmp5 + tmp6;
+tmp12 = tmp6 + tmp7;
+z5 = (tmp10 - tmp12) * 0.382683433;
+z2 = 0.541196100 * tmp10 + z5;
+z4 = 1.306562965 * tmp12 + z5;
+z3 = tmp11 * 0.707106781;
+z11 = tmp7 + z3;
+z13 = tmp7 - z3;
+output[i][5] = z13 + z2;
+output[i][3] = z13 - z2;
+output[i][1] = z11 + z4;
+output[i][7] = z11 - z4;
+}
+for (var i = 0; i < 8; i++) {
+tmp0 = output[0][i] + output[7][i];
+tmp7 = output[0][i] - output[7][i];
+tmp1 = output[1][i] + output[6][i];
+tmp6 = output[1][i] - output[6][i];
+tmp2 = output[2][i] + output[5][i];
+tmp5 = output[2][i] - output[5][i];
+tmp3 = output[3][i] + output[4][i];
+tmp4 = output[3][i] - output[4][i];
+tmp10 = tmp0 + tmp3;
+tmp13 = tmp0 - tmp3;
+tmp11 = tmp1 + tmp2;
+tmp12 = tmp1 - tmp2;
+output[0][i] = tmp10 + tmp11;
+output[4][i] = tmp10 - tmp11;
+z1 = (tmp12 + tmp13) * 0.707106781;
+output[2][i] = tmp13 + z1;
+output[6][i] = tmp13 - z1;
+tmp10 = tmp4 + tmp5;
+tmp11 = tmp5 + tmp6;
+tmp12 = tmp6 + tmp7;
+z5 = (tmp10 - tmp12) * 0.382683433;
+z2 = 0.541196100 * tmp10 + z5;
+z4 = 1.306562965 * tmp12 + z5;
+z3 = tmp11 * 0.707106781;
+z11 = tmp7 + z3;
+z13 = tmp7 - z3;
+output[5][i] = z13 + z2;
+output[3][i] = z13 - z2;
+output[1][i] = z11 + z4;
+output[7][i] = z11 - z4;
+}
+return output;
+}, "~A");
+c$.quantizeBlock = Clazz.defineMethod (c$, "quantizeBlock", 
+function (inputData, divisorsCode) {
+var outputData =  Clazz.newIntArray (64, 0);
+for (var i = 0, index = 0; i < 8; i++) for (var j = 0; j < 8; j++, index++) outputData[index] = (Math.round (inputData[i][j] * divisorsCode[index]));
+
+
+return outputData;
+}, "~A,~A");
+Clazz.defineStatics (c$,
+"N", 8,
+"NN", 64,
+"AANscaleFactor",  Clazz.newDoubleArray (-1, [1.0, 1.387039845, 1.306562965, 1.175875602, 1.0, 0.785694958, 0.541196100, 0.275899379]));
+c$ = Clazz.decorateAsClass (function () {
+this.bufferPutBits = 0;
+this.bufferPutBuffer = 0;
+this.imageHeight = 0;
+this.imageWidth = 0;
+this.dc_matrix0 = null;
+this.ac_matrix0 = null;
+this.dc_matrix1 = null;
+this.ac_matrix1 = null;
+this.dc_matrix = null;
+this.ac_matrix = null;
+this.numOfDCTables = 0;
+this.numOfACTables = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.img, "Huffman");
+Clazz.makeConstructor (c$, 
+function (width, height) {
+this.initHuf ();
+this.imageWidth = width;
+this.imageHeight = height;
+}, "~N,~N");
+Clazz.defineMethod (c$, "HuffmanBlockEncoder", 
+function (out, zigzag, prec, dcCode, acCode) {
+var temp;
+var temp2;
+var nbits;
+var k;
+var r;
+var i;
+this.numOfDCTables = 2;
+this.numOfACTables = 2;
+var matrixDC = this.dc_matrix[dcCode];
+var matrixAC = this.ac_matrix[acCode];
+temp = temp2 = zigzag[0] - prec;
+if (temp < 0) {
+temp = -temp;
+temp2--;
+}nbits = 0;
+while (temp != 0) {
+nbits++;
+temp >>= 1;
+}
+this.bufferIt (out, matrixDC[nbits][0], matrixDC[nbits][1]);
+if (nbits != 0) {
+this.bufferIt (out, temp2, nbits);
+}r = 0;
+for (k = 1; k < 64; k++) {
+if ((temp = zigzag[javajs.img.Huffman.jpegNaturalOrder[k]]) == 0) {
+r++;
+} else {
+while (r > 15) {
+this.bufferIt (out, matrixAC[0xF0][0], matrixAC[0xF0][1]);
+r -= 16;
+}
+temp2 = temp;
+if (temp < 0) {
+temp = -temp;
+temp2--;
+}nbits = 1;
+while ((temp >>= 1) != 0) {
+nbits++;
+}
+i = (r << 4) + nbits;
+this.bufferIt (out, matrixAC[i][0], matrixAC[i][1]);
+this.bufferIt (out, temp2, nbits);
+r = 0;
+}}
+if (r > 0) {
+this.bufferIt (out, matrixAC[0][0], matrixAC[0][1]);
+}}, "javajs.util.OC,~A,~N,~N,~N");
+Clazz.defineMethod (c$, "bufferIt", 
+function (out, code, size) {
+var putBuffer = code;
+var putBits = this.bufferPutBits;
+putBuffer &= (1 << size) - 1;
+putBits += size;
+putBuffer <<= 24 - putBits;
+putBuffer |= this.bufferPutBuffer;
+while (putBits >= 8) {
+var c = ((putBuffer >> 16) & 0xFF);
+out.writeByteAsInt (c);
+if (c == 0xFF) {
+out.writeByteAsInt (0);
+}putBuffer <<= 8;
+putBits -= 8;
+}
+this.bufferPutBuffer = putBuffer;
+this.bufferPutBits = putBits;
+}, "javajs.util.OC,~N,~N");
+Clazz.defineMethod (c$, "flushBuffer", 
+function (out) {
+var putBuffer = this.bufferPutBuffer;
+var putBits = this.bufferPutBits;
+while (putBits >= 8) {
+var c = ((putBuffer >> 16) & 0xFF);
+out.writeByteAsInt (c);
+if (c == 0xFF) {
+out.writeByteAsInt (0);
+}putBuffer <<= 8;
+putBits -= 8;
+}
+if (putBits > 0) {
+var c = ((putBuffer >> 16) & 0xFF);
+out.writeByteAsInt (c);
+}}, "javajs.util.OC");
+Clazz.defineMethod (c$, "initHuf", 
+($fz = function () {
+this.dc_matrix0 =  Clazz.newIntArray (12, 2, 0);
+this.dc_matrix1 =  Clazz.newIntArray (12, 2, 0);
+this.ac_matrix0 =  Clazz.newIntArray (255, 2, 0);
+this.ac_matrix1 =  Clazz.newIntArray (255, 2, 0);
+this.dc_matrix = javajs.util.AU.newInt3 (2, -1);
+this.ac_matrix = javajs.util.AU.newInt3 (2, -1);
+var p;
+var l;
+var i;
+var lastp;
+var si;
+var code;
+var huffsize =  Clazz.newIntArray (257, 0);
+var huffcode =  Clazz.newIntArray (257, 0);
+p = 0;
+for (l = 1; l <= 16; l++) {
+for (i = javajs.img.Huffman.bitsDCchrominance[l]; --i >= 0; ) {
+huffsize[p++] = l;
+}
+}
+huffsize[p] = 0;
+lastp = p;
+code = 0;
+si = huffsize[0];
+p = 0;
+while (huffsize[p] != 0) {
+while (huffsize[p] == si) {
+huffcode[p++] = code;
+code++;
+}
+code <<= 1;
+si++;
+}
+for (p = 0; p < lastp; p++) {
+this.dc_matrix1[javajs.img.Huffman.valDCchrominance[p]][0] = huffcode[p];
+this.dc_matrix1[javajs.img.Huffman.valDCchrominance[p]][1] = huffsize[p];
+}
+p = 0;
+for (l = 1; l <= 16; l++) {
+for (i = javajs.img.Huffman.bitsACchrominance[l]; --i >= 0; ) {
+huffsize[p++] = l;
+}
+}
+huffsize[p] = 0;
+lastp = p;
+code = 0;
+si = huffsize[0];
+p = 0;
+while (huffsize[p] != 0) {
+while (huffsize[p] == si) {
+huffcode[p++] = code;
+code++;
+}
+code <<= 1;
+si++;
+}
+for (p = 0; p < lastp; p++) {
+this.ac_matrix1[javajs.img.Huffman.valACchrominance[p]][0] = huffcode[p];
+this.ac_matrix1[javajs.img.Huffman.valACchrominance[p]][1] = huffsize[p];
+}
+p = 0;
+for (l = 1; l <= 16; l++) {
+for (i = javajs.img.Huffman.bitsDCluminance[l]; --i >= 0; ) {
+huffsize[p++] = l;
+}
+}
+huffsize[p] = 0;
+lastp = p;
+code = 0;
+si = huffsize[0];
+p = 0;
+while (huffsize[p] != 0) {
+while (huffsize[p] == si) {
+huffcode[p++] = code;
+code++;
+}
+code <<= 1;
+si++;
+}
+for (p = 0; p < lastp; p++) {
+this.dc_matrix0[javajs.img.Huffman.valDCluminance[p]][0] = huffcode[p];
+this.dc_matrix0[javajs.img.Huffman.valDCluminance[p]][1] = huffsize[p];
+}
+p = 0;
+for (l = 1; l <= 16; l++) {
+for (i = javajs.img.Huffman.bitsACluminance[l]; --i >= 0; ) {
+huffsize[p++] = l;
+}
+}
+huffsize[p] = 0;
+lastp = p;
+code = 0;
+si = huffsize[0];
+p = 0;
+while (huffsize[p] != 0) {
+while (huffsize[p] == si) {
+huffcode[p++] = code;
+code++;
+}
+code <<= 1;
+si++;
+}
+for (var q = 0; q < lastp; q++) {
+this.ac_matrix0[javajs.img.Huffman.valACluminance[q]][0] = huffcode[q];
+this.ac_matrix0[javajs.img.Huffman.valACluminance[q]][1] = huffsize[q];
+}
+this.dc_matrix[0] = this.dc_matrix0;
+this.dc_matrix[1] = this.dc_matrix1;
+this.ac_matrix[0] = this.ac_matrix0;
+this.ac_matrix[1] = this.ac_matrix1;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineStatics (c$,
+"bitsDCluminance",  Clazz.newIntArray (-1, [0x00, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]),
+"valDCluminance",  Clazz.newIntArray (-1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]),
+"bitsDCchrominance",  Clazz.newIntArray (-1, [0x01, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]),
+"valDCchrominance",  Clazz.newIntArray (-1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]),
+"bitsACluminance",  Clazz.newIntArray (-1, [0x10, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d]),
+"valACluminance",  Clazz.newIntArray (-1, [0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa]),
+"bitsACchrominance",  Clazz.newIntArray (-1, [0x11, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77]),
+"valACchrominance",  Clazz.newIntArray (-1, [0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa]),
+"jpegNaturalOrder",  Clazz.newIntArray (-1, [0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]));
+c$ = Clazz.decorateAsClass (function () {
+this.comment = null;
+this.imageHeight = 0;
+this.imageWidth = 0;
+this.blockWidth = null;
+this.blockHeight = null;
+this.precision = 8;
+this.numberOfComponents = 3;
+this.components = null;
+this.compID = null;
+this.hsampFactor = null;
+this.vsampFactor = null;
+this.qtableNumber = null;
+this.dctableNumber = null;
+this.actableNumber = null;
+this.lastColumnIsDummy = null;
+this.lastRowIsDummy = null;
+this.ss = 0;
+this.se = 63;
+this.ah = 0;
+this.al = 0;
+this.compWidth = null;
+this.compHeight = null;
+this.maxHsampFactor = 0;
+this.maxVsampFactor = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.img, "JpegObj");
+Clazz.prepareFields (c$, function () {
+this.compID =  Clazz.newIntArray (-1, [1, 2, 3]);
+this.hsampFactor =  Clazz.newIntArray (-1, [1, 1, 1]);
+this.vsampFactor =  Clazz.newIntArray (-1, [1, 1, 1]);
+this.qtableNumber =  Clazz.newIntArray (-1, [0, 1, 1]);
+this.dctableNumber =  Clazz.newIntArray (-1, [0, 1, 1]);
+this.actableNumber =  Clazz.newIntArray (-1, [0, 1, 1]);
+this.lastColumnIsDummy =  Clazz.newBooleanArray (-1, [false, false, false]);
+this.lastRowIsDummy =  Clazz.newBooleanArray (-1, [false, false, false]);
+});
+Clazz.makeConstructor (c$, 
+function () {
+this.components = javajs.util.AU.newFloat3 (this.numberOfComponents, -1);
+this.compWidth =  Clazz.newIntArray (this.numberOfComponents, 0);
+this.compHeight =  Clazz.newIntArray (this.numberOfComponents, 0);
+this.blockWidth =  Clazz.newIntArray (this.numberOfComponents, 0);
+this.blockHeight =  Clazz.newIntArray (this.numberOfComponents, 0);
+});
+Clazz.defineMethod (c$, "getYCCArray", 
+function (pixels) {
+this.maxHsampFactor = 1;
+this.maxVsampFactor = 1;
+for (var y = 0; y < this.numberOfComponents; y++) {
+this.maxHsampFactor = Math.max (this.maxHsampFactor, this.hsampFactor[y]);
+this.maxVsampFactor = Math.max (this.maxVsampFactor, this.vsampFactor[y]);
+}
+for (var y = 0; y < this.numberOfComponents; y++) {
+this.compWidth[y] = (Clazz.doubleToInt (((this.imageWidth % 8 != 0) ? (Clazz.doubleToInt (Math.ceil (this.imageWidth / 8.0))) * 8 : this.imageWidth) / this.maxHsampFactor)) * this.hsampFactor[y];
+if (this.compWidth[y] != ((Clazz.doubleToInt (this.imageWidth / this.maxHsampFactor)) * this.hsampFactor[y])) {
+this.lastColumnIsDummy[y] = true;
+}this.blockWidth[y] = Clazz.doubleToInt (Math.ceil (this.compWidth[y] / 8.0));
+this.compHeight[y] = (Clazz.doubleToInt (((this.imageHeight % 8 != 0) ? (Clazz.doubleToInt (Math.ceil (this.imageHeight / 8.0))) * 8 : this.imageHeight) / this.maxVsampFactor)) * this.vsampFactor[y];
+if (this.compHeight[y] != ((Clazz.doubleToInt (this.imageHeight / this.maxVsampFactor)) * this.vsampFactor[y])) {
+this.lastRowIsDummy[y] = true;
+}this.blockHeight[y] = Clazz.doubleToInt (Math.ceil (this.compHeight[y] / 8.0));
+}
+var Y =  Clazz.newFloatArray (this.compHeight[0], this.compWidth[0], 0);
+var Cr1 =  Clazz.newFloatArray (this.compHeight[0], this.compWidth[0], 0);
+var Cb1 =  Clazz.newFloatArray (this.compHeight[0], this.compWidth[0], 0);
+for (var pt = 0, y = 0; y < this.imageHeight; ++y) {
+for (var x = 0; x < this.imageWidth; ++x, pt++) {
+var p = pixels[pt];
+var r = ((p >> 16) & 0xff);
+var g = ((p >> 8) & 0xff);
+var b = (p & 0xff);
+Y[y][x] = ((0.299 * r + 0.587 * g + 0.114 * b));
+Cb1[y][x] = 128 + ((-0.16874 * r - 0.33126 * g + 0.5 * b));
+Cr1[y][x] = 128 + ((0.5 * r - 0.41869 * g - 0.08131 * b));
+}
+}
+this.components[0] = Y;
+this.components[1] = Cb1;
+this.components[2] = Cr1;
+}, "~A");
+});
index 0a468dc..664879f 100644 (file)
@@ -1,58 +1,58 @@
-Clazz.declarePackage ("javajs.img");\r
-Clazz.load (["javajs.img.ImageEncoder"], "javajs.img.PdfEncoder", ["java.util.Hashtable", "javajs.export.PDFCreator"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.isLandscape = false;\r
-this.pdf = null;\r
-this.comment = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.img, "PdfEncoder", javajs.img.ImageEncoder);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javajs.img.PdfEncoder, []);\r
-});\r
-Clazz.overrideMethod (c$, "setParams", \r
-function (params) {\r
-this.isLandscape = (this.quality > 1);\r
-this.comment = "Jmol " + params.get ("comment");\r
-}, "java.util.Map");\r
-Clazz.overrideMethod (c$, "generate", \r
-function () {\r
-this.pdf =  new javajs["export"].PDFCreator ();\r
-var pageWidth = 576;\r
-var pageHeight = 792;\r
-this.pdf.setOutputStream (this.out);\r
-this.pdf.newDocument (pageWidth, pageHeight, this.isLandscape);\r
-this.addMyImage (pageWidth, pageHeight);\r
-var ht =  new java.util.Hashtable ();\r
-if (this.comment != null) ht.put ("Producer", this.comment);\r
-ht.put ("Author", "JMol");\r
-ht.put ("CreationDate", this.date);\r
-this.pdf.addInfo (ht);\r
-this.pdf.closeDocument ();\r
-});\r
-Clazz.defineMethod (c$, "addMyImage", \r
-($fz = function (pageWidth, pageHeight) {\r
-this.pdf.addImageResource ("img1", this.width, this.height, this.pixels, true);\r
-var w = (this.isLandscape ? pageHeight : pageWidth);\r
-var h = (this.isLandscape ? pageWidth : pageHeight);\r
-var iw = this.width;\r
-var ih = this.height;\r
-if (iw > 0.9 * w) {\r
-ih = Clazz.doubleToInt (ih * 0.9 * w / iw);\r
-iw = Clazz.doubleToInt (w * 0.9);\r
-}if (ih > 0.9 * h) {\r
-iw = Clazz.doubleToInt (iw * 0.9 * h / ih);\r
-ih = Clazz.doubleToInt (h * 0.9);\r
-}var x = 0;\r
-var y = 0;\r
-var x1 = iw;\r
-var y1 = ih;\r
-if (w > iw) {\r
-x = Clazz.doubleToInt ((w - iw) / 2);\r
-x1 = iw + x;\r
-}if (h > ih) {\r
-y = Clazz.doubleToInt ((h - ih) / 2);\r
-y1 = ih + y;\r
-}this.pdf.drawImage ("img1", x, y, x1, y1, 0, 0, this.width, this.height);\r
-}, $fz.isPrivate = true, $fz), "~N,~N");\r
-});\r
+Clazz.declarePackage ("javajs.img");
+Clazz.load (["javajs.img.ImageEncoder"], "javajs.img.PdfEncoder", ["java.util.Hashtable", "javajs.export.PDFCreator"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.isLandscape = false;
+this.pdf = null;
+this.comment = null;
+Clazz.instantialize (this, arguments);
+}, javajs.img, "PdfEncoder", javajs.img.ImageEncoder);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javajs.img.PdfEncoder, []);
+});
+Clazz.overrideMethod (c$, "setParams", 
+function (params) {
+this.isLandscape = (this.quality > 1);
+this.comment = "Jmol " + params.get ("comment");
+}, "java.util.Map");
+Clazz.overrideMethod (c$, "generate", 
+function () {
+this.pdf =  new javajs["export"].PDFCreator ();
+var pageWidth = 576;
+var pageHeight = 792;
+this.pdf.setOutputStream (this.out);
+this.pdf.newDocument (pageWidth, pageHeight, this.isLandscape);
+this.addMyImage (pageWidth, pageHeight);
+var ht =  new java.util.Hashtable ();
+if (this.comment != null) ht.put ("Producer", this.comment);
+ht.put ("Author", "JMol");
+ht.put ("CreationDate", this.date);
+this.pdf.addInfo (ht);
+this.pdf.closeDocument ();
+});
+Clazz.defineMethod (c$, "addMyImage", 
+($fz = function (pageWidth, pageHeight) {
+this.pdf.addImageResource ("img1", this.width, this.height, this.pixels, true);
+var w = (this.isLandscape ? pageHeight : pageWidth);
+var h = (this.isLandscape ? pageWidth : pageHeight);
+var iw = this.width;
+var ih = this.height;
+if (iw > 0.9 * w) {
+ih = Clazz.doubleToInt (ih * 0.9 * w / iw);
+iw = Clazz.doubleToInt (w * 0.9);
+}if (ih > 0.9 * h) {
+iw = Clazz.doubleToInt (iw * 0.9 * h / ih);
+ih = Clazz.doubleToInt (h * 0.9);
+}var x = 0;
+var y = 0;
+var x1 = iw;
+var y1 = ih;
+if (w > iw) {
+x = Clazz.doubleToInt ((w - iw) / 2);
+x1 = iw + x;
+}if (h > ih) {
+y = Clazz.doubleToInt ((h - ih) / 2);
+y1 = ih + y;
+}this.pdf.drawImage ("img1", x, y, x1, y1, 0, 0, this.width, this.height);
+}, $fz.isPrivate = true, $fz), "~N,~N");
+});
index 8c07dbd..0accd9e 100644 (file)
-Clazz.declarePackage ("javajs.img");\r
-Clazz.load (["javajs.img.CRCEncoder"], "javajs.img.PngEncoder", ["java.io.ByteArrayOutputStream", "java.util.zip.Deflater", "$.DeflaterOutputStream"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.encodeAlpha = false;\r
-this.filter = 0;\r
-this.bytesPerPixel = 0;\r
-this.compressionLevel = 0;\r
-this.type = null;\r
-this.transparentColor = null;\r
-this.appData = null;\r
-this.appPrefix = null;\r
-this.comment = null;\r
-this.bytes = null;\r
-this.scanLines = null;\r
-this.byteWidth = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.img, "PngEncoder", javajs.img.CRCEncoder);\r
-Clazz.overrideMethod (c$, "setParams", \r
-function (params) {\r
-if (this.quality < 0) this.quality = (params.containsKey ("qualityPNG") ? (params.get ("qualityPNG")).intValue () : 2);\r
-if (this.quality > 9) this.quality = 9;\r
-this.encodeAlpha = false;\r
-this.filter = 0;\r
-this.compressionLevel = this.quality;\r
-this.transparentColor = params.get ("transparentColor");\r
-this.comment = params.get ("comment");\r
-this.type = (params.get ("type") + "0000").substring (0, 4);\r
-this.bytes = params.get ("pngImgData");\r
-this.appData = params.get ("pngAppData");\r
-this.appPrefix = params.get ("pngAppPrefix");\r
-}, "java.util.Map");\r
-Clazz.overrideMethod (c$, "generate", \r
-function () {\r
-if (this.bytes == null) {\r
-if (!this.pngEncode ()) {\r
-this.out.cancel ();\r
-return;\r
-}this.bytes = this.getBytes ();\r
-} else {\r
-this.dataLen = this.bytes.length;\r
-}var len = this.dataLen;\r
-if (this.appData != null) {\r
-javajs.img.PngEncoder.setJmolTypeText (this.appPrefix, this.bytes, len, this.appData.length, this.type);\r
-this.out.write (this.bytes, 0, len);\r
-len = (this.bytes = this.appData).length;\r
-}this.out.write (this.bytes, 0, len);\r
-});\r
-Clazz.defineMethod (c$, "pngEncode", \r
-($fz = function () {\r
-var pngIdBytes =  Clazz.newByteArray (-1, [-119, 80, 78, 71, 13, 10, 26, 10]);\r
-this.writeBytes (pngIdBytes);\r
-this.writeHeader ();\r
-this.writeText (javajs.img.PngEncoder.getApplicationText (this.appPrefix, this.type, 0, 0));\r
-this.writeText ("Software\0Jmol " + this.comment);\r
-this.writeText ("Creation Time\0" + this.date);\r
-if (!this.encodeAlpha && this.transparentColor != null) this.writeTransparentColor (this.transparentColor.intValue ());\r
-return this.writeImageData ();\r
-}, $fz.isPrivate = true, $fz));\r
-c$.setJmolTypeText = Clazz.defineMethod (c$, "setJmolTypeText", \r
-($fz = function (prefix, b, nPNG, nState, type) {\r
-var s = "tEXt" + javajs.img.PngEncoder.getApplicationText (prefix, type, nPNG, nState);\r
-var encoder =  new javajs.img.PngEncoder ();\r
-var test = s.substring (0, 4 + prefix.length).getBytes ();\r
-for (var i = test.length; --i >= 0; ) if (b[i + 37] != test[i]) {\r
-System.out.println ("image is not of the right form; appending data, but not adding tEXt tag.");\r
-return;\r
-}\r
-encoder.setData (b, 37);\r
-encoder.writeString (s);\r
-encoder.writeCRC ();\r
-}, $fz.isPrivate = true, $fz), "~S,~A,~N,~N,~S");\r
-c$.getApplicationText = Clazz.defineMethod (c$, "getApplicationText", \r
-($fz = function (prefix, type, nPNG, nState) {\r
-var sPNG = "000000000" + nPNG;\r
-sPNG = sPNG.substring (sPNG.length - 9);\r
-var sState = "000000000" + nState;\r
-sState = sState.substring (sState.length - 9);\r
-return prefix + "\0" + type + (type.equals ("PNG") ? "0" : "") + sPNG + "+" + sState;\r
-}, $fz.isPrivate = true, $fz), "~S,~S,~N,~N");\r
-Clazz.defineMethod (c$, "writeHeader", \r
-($fz = function () {\r
-this.writeInt4 (13);\r
-this.startPos = this.bytePos;\r
-this.writeString ("IHDR");\r
-this.writeInt4 (this.width);\r
-this.writeInt4 (this.height);\r
-this.writeByte (8);\r
-this.writeByte (this.encodeAlpha ? 6 : 2);\r
-this.writeByte (0);\r
-this.writeByte (0);\r
-this.writeByte (0);\r
-this.writeCRC ();\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "writeText", \r
-($fz = function (msg) {\r
-this.writeInt4 (msg.length);\r
-this.startPos = this.bytePos;\r
-this.writeString ("tEXt" + msg);\r
-this.writeCRC ();\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "writeTransparentColor", \r
-($fz = function (icolor) {\r
-this.writeInt4 (6);\r
-this.startPos = this.bytePos;\r
-this.writeString ("tRNS");\r
-this.writeInt2 ((icolor >> 16) & 0xFF);\r
-this.writeInt2 ((icolor >> 8) & 0xFF);\r
-this.writeInt2 (icolor & 0xFF);\r
-this.writeCRC ();\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "writeImageData", \r
-($fz = function () {\r
-this.bytesPerPixel = (this.encodeAlpha ? 4 : 3);\r
-this.byteWidth = this.width * this.bytesPerPixel;\r
-var scanWidth = this.byteWidth + 1;\r
-var rowsLeft = this.height;\r
-var nRows;\r
-var scanPos;\r
-var deflater =  new java.util.zip.Deflater (this.compressionLevel);\r
-var outBytes =  new java.io.ByteArrayOutputStream (1024);\r
-var compBytes =  new java.util.zip.DeflaterOutputStream (outBytes, deflater);\r
-var pt = 0;\r
-try {\r
-while (rowsLeft > 0) {\r
-nRows = Math.max (1, Math.min (Clazz.doubleToInt (32767 / scanWidth), rowsLeft));\r
-this.scanLines =  Clazz.newByteArray (scanWidth * nRows, 0);\r
-var nPixels = this.width * nRows;\r
-scanPos = 0;\r
-for (var i = 0; i < nPixels; i++, pt++) {\r
-if (i % this.width == 0) {\r
-this.scanLines[scanPos++] = this.filter;\r
-}this.scanLines[scanPos++] = ((this.pixels[pt] >> 16) & 0xff);\r
-this.scanLines[scanPos++] = ((this.pixels[pt] >> 8) & 0xff);\r
-this.scanLines[scanPos++] = ((this.pixels[pt]) & 0xff);\r
-if (this.encodeAlpha) {\r
-this.scanLines[scanPos++] = ((this.pixels[pt] >> 24) & 0xff);\r
-}}\r
-compBytes.write (this.scanLines, 0, scanPos);\r
-rowsLeft -= nRows;\r
-}\r
-compBytes.close ();\r
-var compressedLines = outBytes.toByteArray ();\r
-this.writeInt4 (compressedLines.length);\r
-this.startPos = this.bytePos;\r
-this.writeString ("IDAT");\r
-this.writeBytes (compressedLines);\r
-this.writeCRC ();\r
-this.writeEnd ();\r
-deflater.finish ();\r
-return true;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-System.err.println (e.toString ());\r
-return false;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "writeEnd", \r
-($fz = function () {\r
-this.writeInt4 (0);\r
-this.startPos = this.bytePos;\r
-this.writeString ("IEND");\r
-this.writeCRC ();\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineStatics (c$,\r
-"FILTER_NONE", 0,\r
-"FILTER_SUB", 1,\r
-"FILTER_UP", 2,\r
-"FILTER_LAST", 2,\r
-"PT_FIRST_TAG", 37);\r
-});\r
+Clazz.declarePackage ("javajs.img");
+Clazz.load (["javajs.img.CRCEncoder"], "javajs.img.PngEncoder", ["java.io.ByteArrayOutputStream", "java.util.zip.Deflater", "$.DeflaterOutputStream"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.encodeAlpha = false;
+this.filter = 0;
+this.bytesPerPixel = 0;
+this.compressionLevel = 0;
+this.type = null;
+this.transparentColor = null;
+this.appData = null;
+this.appPrefix = null;
+this.comment = null;
+this.bytes = null;
+this.scanLines = null;
+this.byteWidth = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.img, "PngEncoder", javajs.img.CRCEncoder);
+Clazz.overrideMethod (c$, "setParams", 
+function (params) {
+if (this.quality < 0) this.quality = (params.containsKey ("qualityPNG") ? (params.get ("qualityPNG")).intValue () : 2);
+if (this.quality > 9) this.quality = 9;
+this.encodeAlpha = false;
+this.filter = 0;
+this.compressionLevel = this.quality;
+this.transparentColor = params.get ("transparentColor");
+this.comment = params.get ("comment");
+this.type = (params.get ("type") + "0000").substring (0, 4);
+this.bytes = params.get ("pngImgData");
+this.appData = params.get ("pngAppData");
+this.appPrefix = params.get ("pngAppPrefix");
+}, "java.util.Map");
+Clazz.overrideMethod (c$, "generate", 
+function () {
+if (this.bytes == null) {
+if (!this.pngEncode ()) {
+this.out.cancel ();
+return;
+}this.bytes = this.getBytes ();
+} else {
+this.dataLen = this.bytes.length;
+}var len = this.dataLen;
+if (this.appData != null) {
+javajs.img.PngEncoder.setJmolTypeText (this.appPrefix, this.bytes, len, this.appData.length, this.type);
+this.out.write (this.bytes, 0, len);
+len = (this.bytes = this.appData).length;
+}this.out.write (this.bytes, 0, len);
+});
+Clazz.defineMethod (c$, "pngEncode", 
+($fz = function () {
+var pngIdBytes =  Clazz.newByteArray (-1, [-119, 80, 78, 71, 13, 10, 26, 10]);
+this.writeBytes (pngIdBytes);
+this.writeHeader ();
+this.writeText (javajs.img.PngEncoder.getApplicationText (this.appPrefix, this.type, 0, 0));
+this.writeText ("Software\0Jmol " + this.comment);
+this.writeText ("Creation Time\0" + this.date);
+if (!this.encodeAlpha && this.transparentColor != null) this.writeTransparentColor (this.transparentColor.intValue ());
+return this.writeImageData ();
+}, $fz.isPrivate = true, $fz));
+c$.setJmolTypeText = Clazz.defineMethod (c$, "setJmolTypeText", 
+($fz = function (prefix, b, nPNG, nState, type) {
+var s = "tEXt" + javajs.img.PngEncoder.getApplicationText (prefix, type, nPNG, nState);
+var encoder =  new javajs.img.PngEncoder ();
+var test = s.substring (0, 4 + prefix.length).getBytes ();
+for (var i = test.length; --i >= 0; ) if (b[i + 37] != test[i]) {
+System.out.println ("image is not of the right form; appending data, but not adding tEXt tag.");
+return;
+}
+encoder.setData (b, 37);
+encoder.writeString (s);
+encoder.writeCRC ();
+}, $fz.isPrivate = true, $fz), "~S,~A,~N,~N,~S");
+c$.getApplicationText = Clazz.defineMethod (c$, "getApplicationText", 
+($fz = function (prefix, type, nPNG, nState) {
+var sPNG = "000000000" + nPNG;
+sPNG = sPNG.substring (sPNG.length - 9);
+var sState = "000000000" + nState;
+sState = sState.substring (sState.length - 9);
+return prefix + "\0" + type + (type.equals ("PNG") ? "0" : "") + sPNG + "+" + sState;
+}, $fz.isPrivate = true, $fz), "~S,~S,~N,~N");
+Clazz.defineMethod (c$, "writeHeader", 
+($fz = function () {
+this.writeInt4 (13);
+this.startPos = this.bytePos;
+this.writeString ("IHDR");
+this.writeInt4 (this.width);
+this.writeInt4 (this.height);
+this.writeByte (8);
+this.writeByte (this.encodeAlpha ? 6 : 2);
+this.writeByte (0);
+this.writeByte (0);
+this.writeByte (0);
+this.writeCRC ();
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "writeText", 
+($fz = function (msg) {
+this.writeInt4 (msg.length);
+this.startPos = this.bytePos;
+this.writeString ("tEXt" + msg);
+this.writeCRC ();
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "writeTransparentColor", 
+($fz = function (icolor) {
+this.writeInt4 (6);
+this.startPos = this.bytePos;
+this.writeString ("tRNS");
+this.writeInt2 ((icolor >> 16) & 0xFF);
+this.writeInt2 ((icolor >> 8) & 0xFF);
+this.writeInt2 (icolor & 0xFF);
+this.writeCRC ();
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "writeImageData", 
+($fz = function () {
+this.bytesPerPixel = (this.encodeAlpha ? 4 : 3);
+this.byteWidth = this.width * this.bytesPerPixel;
+var scanWidth = this.byteWidth + 1;
+var rowsLeft = this.height;
+var nRows;
+var scanPos;
+var deflater =  new java.util.zip.Deflater (this.compressionLevel);
+var outBytes =  new java.io.ByteArrayOutputStream (1024);
+var compBytes =  new java.util.zip.DeflaterOutputStream (outBytes, deflater);
+var pt = 0;
+try {
+while (rowsLeft > 0) {
+nRows = Math.max (1, Math.min (Clazz.doubleToInt (32767 / scanWidth), rowsLeft));
+this.scanLines =  Clazz.newByteArray (scanWidth * nRows, 0);
+var nPixels = this.width * nRows;
+scanPos = 0;
+for (var i = 0; i < nPixels; i++, pt++) {
+if (i % this.width == 0) {
+this.scanLines[scanPos++] = this.filter;
+}this.scanLines[scanPos++] = ((this.pixels[pt] >> 16) & 0xff);
+this.scanLines[scanPos++] = ((this.pixels[pt] >> 8) & 0xff);
+this.scanLines[scanPos++] = ((this.pixels[pt]) & 0xff);
+if (this.encodeAlpha) {
+this.scanLines[scanPos++] = ((this.pixels[pt] >> 24) & 0xff);
+}}
+compBytes.write (this.scanLines, 0, scanPos);
+rowsLeft -= nRows;
+}
+compBytes.close ();
+var compressedLines = outBytes.toByteArray ();
+this.writeInt4 (compressedLines.length);
+this.startPos = this.bytePos;
+this.writeString ("IDAT");
+this.writeBytes (compressedLines);
+this.writeCRC ();
+this.writeEnd ();
+deflater.finish ();
+return true;
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+System.err.println (e.toString ());
+return false;
+} else {
+throw e;
+}
+}
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "writeEnd", 
+($fz = function () {
+this.writeInt4 (0);
+this.startPos = this.bytePos;
+this.writeString ("IEND");
+this.writeCRC ();
+}, $fz.isPrivate = true, $fz));
+Clazz.defineStatics (c$,
+"FILTER_NONE", 0,
+"FILTER_SUB", 1,
+"FILTER_UP", 2,
+"FILTER_LAST", 2,
+"PT_FIRST_TAG", 37);
+});
index 7cb6943..1769c71 100644 (file)
@@ -1,23 +1,23 @@
-Clazz.declarePackage ("javajs.img");\r
-Clazz.load (["javajs.img.ImageEncoder"], "javajs.img.PpmEncoder", null, function () {\r
-c$ = Clazz.declareType (javajs.img, "PpmEncoder", javajs.img.ImageEncoder);\r
-Clazz.overrideMethod (c$, "setParams", \r
-function (params) {\r
-}, "java.util.Map");\r
-Clazz.overrideMethod (c$, "generate", \r
-function () {\r
-this.putString ("P6\n");\r
-this.putString (this.width + " " + this.height + "\n");\r
-this.putString ("255\n");\r
-var ppmPixels =  Clazz.newByteArray (this.width * 3, 0);\r
-for (var pt = 0, row = 0; row < this.height; ++row) {\r
-for (var col = 0, j = 0; col < this.width; ++col, pt++) {\r
-var p = this.pixels[pt];\r
-ppmPixels[j++] = ((p >> 16) & 0xff);\r
-ppmPixels[j++] = ((p >> 8) & 0xff);\r
-ppmPixels[j++] = (p & 0xff);\r
-}\r
-this.out.write (ppmPixels, 0, ppmPixels.length);\r
-}\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.img");
+Clazz.load (["javajs.img.ImageEncoder"], "javajs.img.PpmEncoder", null, function () {
+c$ = Clazz.declareType (javajs.img, "PpmEncoder", javajs.img.ImageEncoder);
+Clazz.overrideMethod (c$, "setParams", 
+function (params) {
+}, "java.util.Map");
+Clazz.overrideMethod (c$, "generate", 
+function () {
+this.putString ("P6\n");
+this.putString (this.width + " " + this.height + "\n");
+this.putString ("255\n");
+var ppmPixels =  Clazz.newByteArray (this.width * 3, 0);
+for (var pt = 0, row = 0; row < this.height; ++row) {
+for (var col = 0, j = 0; col < this.width; ++col, pt++) {
+var p = this.pixels[pt];
+ppmPixels[j++] = ((p >> 16) & 0xff);
+ppmPixels[j++] = ((p >> 8) & 0xff);
+ppmPixels[j++] = (p & 0xff);
+}
+this.out.write (ppmPixels, 0, ppmPixels.length);
+}
+});
+});
index 0982066..4086dd3 100644 (file)
@@ -1,7 +1,7 @@
-var path = ClazzLoader.getClasspathFor ("javajs.img.package");\r
-path = path.substring (0, path.lastIndexOf ("package.js"));\r
-ClazzLoader.jarClasspath (path + "JpgEncoder.js", [\r
-"javajs.img.DCT",\r
-"$.JpgEncoder",\r
-"$.JpegObj",\r
-"$.Huffman"]);\r
+var path = ClazzLoader.getClasspathFor ("javajs.img.package");
+path = path.substring (0, path.lastIndexOf ("package.js"));
+ClazzLoader.jarClasspath (path + "JpgEncoder.js", [
+"javajs.img.DCT",
+"$.JpgEncoder",
+"$.JpegObj",
+"$.Huffman"]);
index 7a53af7..f97cb2f 100644 (file)
@@ -1,82 +1,82 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.api.SC", "javajs.swing.JComponent"], "javajs.swing.AbstractButton", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.itemListener = null;\r
-this.applet = null;\r
-this.htmlName = null;\r
-this.selected = false;\r
-this.popupMenu = null;\r
-this.icon = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "AbstractButton", javajs.swing.JComponent, javajs.api.SC);\r
-Clazz.makeConstructor (c$, \r
-function (type) {\r
-Clazz.superConstructor (this, javajs.swing.AbstractButton, [type]);\r
-this.enabled = true;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "setSelected", \r
-function (selected) {\r
-this.selected = selected;\r
-{\r
-SwingController.setSelected(this);\r
-}}, "~B");\r
-Clazz.overrideMethod (c$, "isSelected", \r
-function () {\r
-return this.selected;\r
-});\r
-Clazz.overrideMethod (c$, "addItemListener", \r
-function (listener) {\r
-this.itemListener = listener;\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "getIcon", \r
-function () {\r
-return this.icon;\r
-});\r
-Clazz.overrideMethod (c$, "setIcon", \r
-function (icon) {\r
-this.icon = icon;\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "init", \r
-function (text, icon, actionCommand, popupMenu) {\r
-this.text = text;\r
-this.icon = icon;\r
-this.actionCommand = actionCommand;\r
-this.popupMenu = popupMenu;\r
-{\r
-SwingController.initMenuItem(this);\r
-}}, "~S,~O,~S,javajs.api.SC");\r
-Clazz.defineMethod (c$, "getTopPopupMenu", \r
-function () {\r
-return this.popupMenu;\r
-});\r
-Clazz.defineMethod (c$, "add", \r
-function (item) {\r
-this.addComponent (item);\r
-}, "javajs.api.SC");\r
-Clazz.overrideMethod (c$, "insert", \r
-function (subMenu, index) {\r
-this.insertComponent (subMenu, index);\r
-}, "javajs.api.SC,~N");\r
-Clazz.overrideMethod (c$, "getPopupMenu", \r
-function () {\r
-return null;\r
-});\r
-Clazz.defineMethod (c$, "getMenuHTML", \r
-function () {\r
-var label = (this.icon != null ? this.icon : this.text != null ? this.text : null);\r
-var s = (label == null ? "" : "<li><a>" + label + "</a>" + this.htmlMenuOpener ("ul"));\r
-var n = this.getComponentCount ();\r
-if (n > 0) for (var i = 0; i < n; i++) s += this.getComponent (i).toHTML ();\r
-\r
-if (label != null) s += "</ul></li>";\r
-return s;\r
-});\r
-Clazz.defineMethod (c$, "htmlMenuOpener", \r
-function (type) {\r
-return "<" + type + " id=\"" + this.id + "\"" + (this.enabled ? "" : this.getHtmlDisabled ()) + ">";\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getHtmlDisabled", \r
-function () {\r
-return " disabled=\"disabled\"";\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.api.SC", "javajs.swing.JComponent"], "javajs.swing.AbstractButton", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.itemListener = null;
+this.applet = null;
+this.htmlName = null;
+this.selected = false;
+this.popupMenu = null;
+this.icon = null;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "AbstractButton", javajs.swing.JComponent, javajs.api.SC);
+Clazz.makeConstructor (c$, 
+function (type) {
+Clazz.superConstructor (this, javajs.swing.AbstractButton, [type]);
+this.enabled = true;
+}, "~S");
+Clazz.overrideMethod (c$, "setSelected", 
+function (selected) {
+this.selected = selected;
+{
+SwingController.setSelected(this);
+}}, "~B");
+Clazz.overrideMethod (c$, "isSelected", 
+function () {
+return this.selected;
+});
+Clazz.overrideMethod (c$, "addItemListener", 
+function (listener) {
+this.itemListener = listener;
+}, "~O");
+Clazz.overrideMethod (c$, "getIcon", 
+function () {
+return this.icon;
+});
+Clazz.overrideMethod (c$, "setIcon", 
+function (icon) {
+this.icon = icon;
+}, "~O");
+Clazz.overrideMethod (c$, "init", 
+function (text, icon, actionCommand, popupMenu) {
+this.text = text;
+this.icon = icon;
+this.actionCommand = actionCommand;
+this.popupMenu = popupMenu;
+{
+SwingController.initMenuItem(this);
+}}, "~S,~O,~S,javajs.api.SC");
+Clazz.defineMethod (c$, "getTopPopupMenu", 
+function () {
+return this.popupMenu;
+});
+Clazz.defineMethod (c$, "add", 
+function (item) {
+this.addComponent (item);
+}, "javajs.api.SC");
+Clazz.overrideMethod (c$, "insert", 
+function (subMenu, index) {
+this.insertComponent (subMenu, index);
+}, "javajs.api.SC,~N");
+Clazz.overrideMethod (c$, "getPopupMenu", 
+function () {
+return null;
+});
+Clazz.defineMethod (c$, "getMenuHTML", 
+function () {
+var label = (this.icon != null ? this.icon : this.text != null ? this.text : null);
+var s = (label == null ? "" : "<li><a>" + label + "</a>" + this.htmlMenuOpener ("ul"));
+var n = this.getComponentCount ();
+if (n > 0) for (var i = 0; i < n; i++) s += this.getComponent (i).toHTML ();
+
+if (label != null) s += "</ul></li>";
+return s;
+});
+Clazz.defineMethod (c$, "htmlMenuOpener", 
+function (type) {
+return "<" + type + " id=\"" + this.id + "\"" + (this.enabled ? "" : this.getHtmlDisabled ()) + ">";
+}, "~S");
+Clazz.defineMethod (c$, "getHtmlDisabled", 
+function () {
+return " disabled=\"disabled\"";
+});
+});
index 1f7382c..c17cd4a 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.TableColumn"], "javajs.swing.AbstractTableModel", null, function () {\r
-Clazz.declareInterface (javajs.swing, "AbstractTableModel", javajs.swing.TableColumn);\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.TableColumn"], "javajs.swing.AbstractTableModel", null, function () {
+Clazz.declareInterface (javajs.swing, "AbstractTableModel", javajs.swing.TableColumn);
+});
index dbeaf88..ebd1ca6 100644 (file)
@@ -1,15 +1,15 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (null, "javajs.swing.ButtonGroup", ["javajs.awt.Component"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.id = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "ButtonGroup");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.id = javajs.awt.Component.newID ("bg");\r
-});\r
-Clazz.defineMethod (c$, "add", \r
-function (item) {\r
-(item).htmlName = this.id;\r
-}, "javajs.api.SC");\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (null, "javajs.swing.ButtonGroup", ["javajs.awt.Component"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.id = null;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "ButtonGroup");
+Clazz.makeConstructor (c$, 
+function () {
+this.id = javajs.awt.Component.newID ("bg");
+});
+Clazz.defineMethod (c$, "add", 
+function (item) {
+(item).htmlName = this.id;
+}, "javajs.api.SC");
+});
index 2fc85c8..5ac8a90 100644 (file)
@@ -1,21 +1,21 @@
-Clazz.declarePackage ("javajs.swing");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.component = null;\r
-this.colspan = 0;\r
-this.rowspan = 0;\r
-this.textAlign = 0;\r
-this.c = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "Cell");\r
-Clazz.makeConstructor (c$, \r
-function (btn, c) {\r
-this.component = btn;\r
-this.colspan = c.gridwidth;\r
-this.rowspan = c.gridheight;\r
-this.c = c;\r
-}, "javajs.swing.JComponent,javajs.swing.GridBagConstraints");\r
-Clazz.defineMethod (c$, "toHTML", \r
-function (id) {\r
-var style = this.c.getStyle (false);\r
-return "<td id='" + id + "' " + (this.colspan < 2 ? "" : "colspan='" + this.colspan + "' ") + style + "><span " + this.c.getStyle (true) + ">" + this.component.toHTML () + "</span></td>";\r
-}, "~S");\r
+Clazz.declarePackage ("javajs.swing");
+c$ = Clazz.decorateAsClass (function () {
+this.component = null;
+this.colspan = 0;
+this.rowspan = 0;
+this.textAlign = 0;
+this.c = null;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "Cell");
+Clazz.makeConstructor (c$, 
+function (btn, c) {
+this.component = btn;
+this.colspan = c.gridwidth;
+this.rowspan = c.gridheight;
+this.c = c;
+}, "javajs.swing.JComponent,javajs.swing.GridBagConstraints");
+Clazz.defineMethod (c$, "toHTML", 
+function (id) {
+var style = this.c.getStyle (false);
+return "<td id='" + id + "' " + (this.colspan < 2 ? "" : "colspan='" + this.colspan + "' ") + style + "><span " + this.c.getStyle (true) + ">" + this.component.toHTML () + "</span></td>";
+}, "~S");
index f9395b7..4ce0290 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.declareInterface (javajs.swing, "ColumnSelectionModel");\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.declareInterface (javajs.swing, "ColumnSelectionModel");
index 90cf95a..243ba05 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.declareInterface (javajs.swing, "Document");\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.declareInterface (javajs.swing, "Document");
index 8989304..6ed7d37 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.awt.LayoutManager"], "javajs.swing.FlowLayout", null, function () {\r
-c$ = Clazz.declareType (javajs.swing, "FlowLayout", javajs.awt.LayoutManager);\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.awt.LayoutManager"], "javajs.swing.FlowLayout", null, function () {
+c$ = Clazz.declareType (javajs.swing, "FlowLayout", javajs.awt.LayoutManager);
+});
index 2551964..d0b179f 100644 (file)
@@ -1,46 +1,46 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (null, "javajs.swing.Grid", ["javajs.swing.Cell", "javajs.util.AU", "$.SB"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.nrows = 0;\r
-this.ncols = 0;\r
-this.grid = null;\r
-this.renderer = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "Grid");\r
-Clazz.makeConstructor (c$, \r
-function (rows, cols) {\r
-this.grid =  Clazz.newArray (0, 0, null);\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "add", \r
-function (btn, c) {\r
-if (c.gridx >= this.ncols) {\r
-this.ncols = c.gridx + 1;\r
-for (var i = 0; i < this.nrows; i++) {\r
-this.grid[i] = javajs.util.AU.ensureLength (this.grid[i], this.ncols * 2);\r
-}\r
-}if (c.gridy >= this.nrows) {\r
-var g =  new Array (c.gridy * 2 + 1);\r
-for (var i = 0; i < this.nrows; i++) g[i] = this.grid[i];\r
-\r
-for (var i = g.length; --i >= this.nrows; ) g[i] =  new Array (this.ncols * 2 + 1);\r
-\r
-this.grid = g;\r
-this.nrows = c.gridy + 1;\r
-}this.grid[c.gridy][c.gridx] =  new javajs.swing.Cell (btn, c);\r
-}, "javajs.swing.JComponent,javajs.swing.GridBagConstraints");\r
-Clazz.defineMethod (c$, "toHTML", \r
-function (id) {\r
-var sb =  new javajs.util.SB ();\r
-id += "_grid";\r
-sb.append ("\n<table id='" + id + "' class='Grid' style='width:100%;height:100%'><tr><td style='height:20%;width:20%'></td></tr>");\r
-for (var i = 0; i < this.nrows; i++) {\r
-var rowid = id + "_" + i;\r
-sb.append ("\n<tr id='" + rowid + "'><td></td>");\r
-for (var j = 0; j < this.ncols; j++) if (this.grid[i][j] != null) sb.append (this.grid[i][j].toHTML (rowid + "_" + j));\r
-\r
-sb.append ("</tr>");\r
-}\r
-sb.append ("\n<tr><td style='height:20%;width:20%'></td></tr></table>\n");\r
-return sb.toString ();\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (null, "javajs.swing.Grid", ["javajs.swing.Cell", "javajs.util.AU", "$.SB"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.nrows = 0;
+this.ncols = 0;
+this.grid = null;
+this.renderer = null;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "Grid");
+Clazz.makeConstructor (c$, 
+function (rows, cols) {
+this.grid =  Clazz.newArray (0, 0, null);
+}, "~N,~N");
+Clazz.defineMethod (c$, "add", 
+function (btn, c) {
+if (c.gridx >= this.ncols) {
+this.ncols = c.gridx + 1;
+for (var i = 0; i < this.nrows; i++) {
+this.grid[i] = javajs.util.AU.ensureLength (this.grid[i], this.ncols * 2);
+}
+}if (c.gridy >= this.nrows) {
+var g =  new Array (c.gridy * 2 + 1);
+for (var i = 0; i < this.nrows; i++) g[i] = this.grid[i];
+
+for (var i = g.length; --i >= this.nrows; ) g[i] =  new Array (this.ncols * 2 + 1);
+
+this.grid = g;
+this.nrows = c.gridy + 1;
+}this.grid[c.gridy][c.gridx] =  new javajs.swing.Cell (btn, c);
+}, "javajs.swing.JComponent,javajs.swing.GridBagConstraints");
+Clazz.defineMethod (c$, "toHTML", 
+function (id) {
+var sb =  new javajs.util.SB ();
+id += "_grid";
+sb.append ("\n<table id='" + id + "' class='Grid' style='width:100%;height:100%'><tr><td style='height:20%;width:20%'></td></tr>");
+for (var i = 0; i < this.nrows; i++) {
+var rowid = id + "_" + i;
+sb.append ("\n<tr id='" + rowid + "'><td></td>");
+for (var j = 0; j < this.ncols; j++) if (this.grid[i][j] != null) sb.append (this.grid[i][j].toHTML (rowid + "_" + j));
+
+sb.append ("</tr>");
+}
+sb.append ("\n<tr><td style='height:20%;width:20%'></td></tr></table>\n");
+return sb.toString ();
+}, "~S");
+});
index 31cf45c..f631d92 100644 (file)
@@ -1,41 +1,41 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (null, "javajs.swing.GridBagConstraints", ["javajs.swing.Insets"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.gridx = 0;\r
-this.gridy = 0;\r
-this.gridwidth = 0;\r
-this.gridheight = 0;\r
-this.weightx = 0;\r
-this.weighty = 0;\r
-this.anchor = 0;\r
-this.fill = 0;\r
-this.insets = null;\r
-this.ipadx = 0;\r
-this.ipady = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "GridBagConstraints");\r
-Clazz.makeConstructor (c$, \r
-function (gridx, gridy, gridwidth, gridheight, weightx, weighty, anchor, fill, insets, ipadx, ipady) {\r
-this.gridx = gridx;\r
-this.gridy = gridy;\r
-this.gridwidth = gridwidth;\r
-this.gridheight = gridheight;\r
-this.weightx = weightx;\r
-this.weighty = weighty;\r
-this.anchor = anchor;\r
-this.fill = fill;\r
-if (insets == null) insets =  new javajs.swing.Insets (0, 0, 0, 0);\r
-this.insets = insets;\r
-this.ipadx = ipadx;\r
-this.ipady = ipady;\r
-}, "~N,~N,~N,~N,~N,~N,~N,~N,javajs.swing.Insets,~N,~N");\r
-Clazz.defineMethod (c$, "getStyle", \r
-function (margins) {\r
-return "style='" + (margins ? "margin:" + this.insets.top + "px " + (this.ipady + this.insets.right) + "px " + this.insets.bottom + "px " + (this.ipadx + this.insets.left) + "px;" : "text-align:" + (this.anchor == 13 ? "right" : this.anchor == 17 ? "left" : "center")) + "'";\r
-}, "~B");\r
-Clazz.defineStatics (c$,\r
-"NONE", 0,\r
-"CENTER", 10,\r
-"WEST", 17,\r
-"EAST", 13);\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (null, "javajs.swing.GridBagConstraints", ["javajs.swing.Insets"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.gridx = 0;
+this.gridy = 0;
+this.gridwidth = 0;
+this.gridheight = 0;
+this.weightx = 0;
+this.weighty = 0;
+this.anchor = 0;
+this.fill = 0;
+this.insets = null;
+this.ipadx = 0;
+this.ipady = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "GridBagConstraints");
+Clazz.makeConstructor (c$, 
+function (gridx, gridy, gridwidth, gridheight, weightx, weighty, anchor, fill, insets, ipadx, ipady) {
+this.gridx = gridx;
+this.gridy = gridy;
+this.gridwidth = gridwidth;
+this.gridheight = gridheight;
+this.weightx = weightx;
+this.weighty = weighty;
+this.anchor = anchor;
+this.fill = fill;
+if (insets == null) insets =  new javajs.swing.Insets (0, 0, 0, 0);
+this.insets = insets;
+this.ipadx = ipadx;
+this.ipady = ipady;
+}, "~N,~N,~N,~N,~N,~N,~N,~N,javajs.swing.Insets,~N,~N");
+Clazz.defineMethod (c$, "getStyle", 
+function (margins) {
+return "style='" + (margins ? "margin:" + this.insets.top + "px " + (this.ipady + this.insets.right) + "px " + this.insets.bottom + "px " + (this.ipadx + this.insets.left) + "px;" : "text-align:" + (this.anchor == 13 ? "right" : this.anchor == 17 ? "left" : "center")) + "'";
+}, "~B");
+Clazz.defineStatics (c$,
+"NONE", 0,
+"CENTER", 10,
+"WEST", 17,
+"EAST", 13);
+});
index e2a6b72..f2d3d43 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.awt.LayoutManager"], "javajs.swing.GridBagLayout", null, function () {\r
-c$ = Clazz.declareType (javajs.swing, "GridBagLayout", javajs.awt.LayoutManager);\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.awt.LayoutManager"], "javajs.swing.GridBagLayout", null, function () {
+c$ = Clazz.declareType (javajs.swing, "GridBagLayout", javajs.awt.LayoutManager);
+});
index c9338fd..989e644 100644 (file)
@@ -1,15 +1,15 @@
-Clazz.declarePackage ("javajs.swing");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.top = 0;\r
-this.left = 0;\r
-this.bottom = 0;\r
-this.right = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "Insets");\r
-Clazz.makeConstructor (c$, \r
-function (top, left, bottom, right) {\r
-this.top = top;\r
-this.left = left;\r
-this.bottom = bottom;\r
-this.right = right;\r
-}, "~N,~N,~N,~N");\r
+Clazz.declarePackage ("javajs.swing");
+c$ = Clazz.decorateAsClass (function () {
+this.top = 0;
+this.left = 0;
+this.bottom = 0;
+this.right = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "Insets");
+Clazz.makeConstructor (c$, 
+function (top, left, bottom, right) {
+this.top = top;
+this.left = left;
+this.bottom = bottom;
+this.right = right;
+}, "~N,~N,~N,~N");
index 6fa242d..b1f5cc2 100644 (file)
@@ -1,14 +1,14 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.AbstractButton"], "javajs.swing.JButton", ["javajs.util.SB"], function () {\r
-c$ = Clazz.declareType (javajs.swing, "JButton", javajs.swing.AbstractButton);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javajs.swing.JButton, ["btnJB"]);\r
-});\r
-Clazz.overrideMethod (c$, "toHTML", \r
-function () {\r
-var sb =  new javajs.util.SB ();\r
-sb.append ("<input type=button id='" + this.id + "' class='JButton' style='" + this.getCSSstyle (80, 0) + "' onclick='SwingController.click(this)' value='" + this.text + "'/>");\r
-return sb.toString ();\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.AbstractButton"], "javajs.swing.JButton", ["javajs.util.SB"], function () {
+c$ = Clazz.declareType (javajs.swing, "JButton", javajs.swing.AbstractButton);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javajs.swing.JButton, ["btnJB"]);
+});
+Clazz.overrideMethod (c$, "toHTML", 
+function () {
+var sb =  new javajs.util.SB ();
+sb.append ("<input type=button id='" + this.id + "' class='JButton' style='" + this.getCSSstyle (80, 0) + "' onclick='SwingController.click(this)' value='" + this.text + "'/>");
+return sb.toString ();
+});
+});
index f4697cb..bae9b88 100644 (file)
@@ -1,13 +1,13 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.AbstractButton"], "javajs.swing.JCheckBox", null, function () {\r
-c$ = Clazz.declareType (javajs.swing, "JCheckBox", javajs.swing.AbstractButton);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javajs.swing.JCheckBox, ["chkJCB"]);\r
-});\r
-Clazz.overrideMethod (c$, "toHTML", \r
-function () {\r
-var s = "<label><input type=checkbox id='" + this.id + "' class='JCheckBox' style='" + this.getCSSstyle (0, 0) + "' " + (this.selected ? "checked='checked' " : "") + "onclick='SwingController.click(this)'>" + this.text + "</label>";\r
-return s;\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.AbstractButton"], "javajs.swing.JCheckBox", null, function () {
+c$ = Clazz.declareType (javajs.swing, "JCheckBox", javajs.swing.AbstractButton);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javajs.swing.JCheckBox, ["chkJCB"]);
+});
+Clazz.overrideMethod (c$, "toHTML", 
+function () {
+var s = "<label><input type=checkbox id='" + this.id + "' class='JCheckBox' style='" + this.getCSSstyle (0, 0) + "' " + (this.selected ? "checked='checked' " : "") + "onclick='SwingController.click(this)'>" + this.text + "</label>";
+return s;
+});
+});
index 7f50135..0b6f970 100644 (file)
@@ -1,8 +1,8 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.JMenuItem"], "javajs.swing.JCheckBoxMenuItem", null, function () {\r
-c$ = Clazz.declareType (javajs.swing, "JCheckBoxMenuItem", javajs.swing.JMenuItem);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javajs.swing.JCheckBoxMenuItem, ["chk", 2]);\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.JMenuItem"], "javajs.swing.JCheckBoxMenuItem", null, function () {
+c$ = Clazz.declareType (javajs.swing, "JCheckBoxMenuItem", javajs.swing.JMenuItem);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javajs.swing.JCheckBoxMenuItem, ["chk", 2]);
+});
+});
index 3e829b4..088b19f 100644 (file)
@@ -1,36 +1,36 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.AbstractButton"], "javajs.swing.JComboBox", ["javajs.util.SB"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.info = null;\r
-this.selectedIndex = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "JComboBox", javajs.swing.AbstractButton);\r
-Clazz.makeConstructor (c$, \r
-function (info) {\r
-Clazz.superConstructor (this, javajs.swing.JComboBox, ["cmbJCB"]);\r
-this.info = info;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "setSelectedIndex", \r
-function (i) {\r
-this.selectedIndex = i;\r
-{\r
-SwingController.setSelectedIndex(this);\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "getSelectedIndex", \r
-function () {\r
-return this.selectedIndex;\r
-});\r
-Clazz.defineMethod (c$, "getSelectedItem", \r
-function () {\r
-return (this.selectedIndex < 0 ? null : this.info[this.selectedIndex]);\r
-});\r
-Clazz.overrideMethod (c$, "toHTML", \r
-function () {\r
-var sb =  new javajs.util.SB ();\r
-sb.append ("\n<select id='" + this.id + "' class='JComboBox' onchange='SwingController.click(this)'>\n");\r
-for (var i = 0; i < this.info.length; i++) sb.append ("\n<option class='JComboBox_option'" + (i == this.selectedIndex ? "selected" : "") + ">" + this.info[i] + "</option>");\r
-\r
-sb.append ("\n</select>\n");\r
-return sb.toString ();\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.AbstractButton"], "javajs.swing.JComboBox", ["javajs.util.SB"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.info = null;
+this.selectedIndex = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "JComboBox", javajs.swing.AbstractButton);
+Clazz.makeConstructor (c$, 
+function (info) {
+Clazz.superConstructor (this, javajs.swing.JComboBox, ["cmbJCB"]);
+this.info = info;
+}, "~A");
+Clazz.defineMethod (c$, "setSelectedIndex", 
+function (i) {
+this.selectedIndex = i;
+{
+SwingController.setSelectedIndex(this);
+}}, "~N");
+Clazz.defineMethod (c$, "getSelectedIndex", 
+function () {
+return this.selectedIndex;
+});
+Clazz.defineMethod (c$, "getSelectedItem", 
+function () {
+return (this.selectedIndex < 0 ? null : this.info[this.selectedIndex]);
+});
+Clazz.overrideMethod (c$, "toHTML", 
+function () {
+var sb =  new javajs.util.SB ();
+sb.append ("\n<select id='" + this.id + "' class='JComboBox' onchange='SwingController.click(this)'>\n");
+for (var i = 0; i < this.info.length; i++) sb.append ("\n<option class='JComboBox_option'" + (i == this.selectedIndex ? "selected" : "") + ">" + this.info[i] + "</option>");
+
+sb.append ("\n</select>\n");
+return sb.toString ();
+});
+});
index 28b137e..aca8bfd 100644 (file)
@@ -1,25 +1,25 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.awt.Container"], "javajs.swing.JComponent", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.autoScrolls = false;\r
-this.actionCommand = null;\r
-this.actionListener = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "JComponent", javajs.awt.Container);\r
-Clazz.defineMethod (c$, "setAutoscrolls", \r
-function (b) {\r
-this.autoScrolls = b;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "addActionListener", \r
-function (listener) {\r
-this.actionListener = listener;\r
-}, "~O");\r
-Clazz.defineMethod (c$, "getActionCommand", \r
-function () {\r
-return this.actionCommand;\r
-});\r
-Clazz.defineMethod (c$, "setActionCommand", \r
-function (actionCommand) {\r
-this.actionCommand = actionCommand;\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.awt.Container"], "javajs.swing.JComponent", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.autoScrolls = false;
+this.actionCommand = null;
+this.actionListener = null;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "JComponent", javajs.awt.Container);
+Clazz.defineMethod (c$, "setAutoscrolls", 
+function (b) {
+this.autoScrolls = b;
+}, "~B");
+Clazz.defineMethod (c$, "addActionListener", 
+function (listener) {
+this.actionListener = listener;
+}, "~O");
+Clazz.defineMethod (c$, "getActionCommand", 
+function () {
+return this.actionCommand;
+});
+Clazz.defineMethod (c$, "setActionCommand", 
+function (actionCommand) {
+this.actionCommand = actionCommand;
+}, "~S");
+});
index 2158688..a19f4ee 100644 (file)
@@ -1,8 +1,8 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JComponentImp", null, function () {\r
-c$ = Clazz.declareType (javajs.swing, "JComponentImp", javajs.swing.JComponent);\r
-Clazz.overrideMethod (c$, "toHTML", \r
-function () {\r
-return null;\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JComponentImp", null, function () {
+c$ = Clazz.declareType (javajs.swing, "JComponentImp", javajs.swing.JComponent);
+Clazz.overrideMethod (c$, "toHTML", 
+function () {
+return null;
+});
+});
index 5f822fa..5cd86e3 100644 (file)
@@ -1,17 +1,17 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JContentPane", ["javajs.util.SB"], function () {\r
-c$ = Clazz.declareType (javajs.swing, "JContentPane", javajs.swing.JComponent);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javajs.swing.JContentPane, ["JCP"]);\r
-});\r
-Clazz.defineMethod (c$, "toHTML", \r
-function () {\r
-var sb =  new javajs.util.SB ();\r
-sb.append ("\n<div id='" + this.id + "' class='JContentPane' style='" + this.getCSSstyle (100, 100) + "'>\n");\r
-if (this.list != null) for (var i = 0; i < this.list.size (); i++) sb.append (this.list.get (i).toHTML ());\r
-\r
-sb.append ("\n</div>\n");\r
-return sb.toString ();\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JContentPane", ["javajs.util.SB"], function () {
+c$ = Clazz.declareType (javajs.swing, "JContentPane", javajs.swing.JComponent);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javajs.swing.JContentPane, ["JCP"]);
+});
+Clazz.defineMethod (c$, "toHTML", 
+function () {
+var sb =  new javajs.util.SB ();
+sb.append ("\n<div id='" + this.id + "' class='JContentPane' style='" + this.getCSSstyle (100, 100) + "'>\n");
+if (this.list != null) for (var i = 0; i < this.list.size (); i++) sb.append (this.list.get (i).toHTML ());
+
+sb.append ("\n</div>\n");
+return sb.toString ();
+});
+});
index 16bacd5..6b11856 100644 (file)
@@ -1,82 +1,82 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.awt.Container"], "javajs.swing.JDialog", ["javajs.awt.Color", "javajs.swing.JContentPane", "javajs.util.SB"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.defaultWidth = 600;\r
-this.defaultHeight = 300;\r
-this.contentPane = null;\r
-this.title = null;\r
-this.html = null;\r
-this.zIndex = 9000;\r
-this.loc = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "JDialog", javajs.awt.Container);\r
-Clazz.defineMethod (c$, "setZIndex", \r
-function (zIndex) {\r
-this.zIndex = zIndex;\r
-}, "~N");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javajs.swing.JDialog, ["JD"]);\r
-this.add (this.contentPane =  new javajs.swing.JContentPane ());\r
-this.setBackground (javajs.awt.Color.get3 (210, 210, 240));\r
-this.contentPane.setBackground (javajs.awt.Color.get3 (230, 230, 230));\r
-});\r
-Clazz.defineMethod (c$, "setLocation", \r
-function (loc) {\r
-this.loc = loc;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "getContentPane", \r
-function () {\r
-return this.contentPane;\r
-});\r
-Clazz.defineMethod (c$, "setTitle", \r
-function (title) {\r
-this.title = title;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "pack", \r
-function () {\r
-this.html = null;\r
-});\r
-Clazz.defineMethod (c$, "validate", \r
-function () {\r
-this.html = null;\r
-});\r
-Clazz.defineMethod (c$, "setVisible", \r
-function (tf) {\r
-if (tf && this.html == null) this.setDialog ();\r
-Clazz.superCall (this, javajs.swing.JDialog, "setVisible", [tf]);\r
-}, "~B");\r
-Clazz.defineMethod (c$, "dispose", \r
-function () {\r
-{\r
-{\r
-SwingController.dispose(this);\r
-}}});\r
-Clazz.overrideMethod (c$, "repaint", \r
-function () {\r
-this.setDialog ();\r
-});\r
-Clazz.defineMethod (c$, "setDialog", \r
-($fz = function () {\r
-this.html = this.toHTML ();\r
-{\r
-SwingController.setDialog(this);\r
-}}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "toHTML", \r
-function () {\r
-this.renderWidth = this.getSubcomponentWidth ();\r
-if (this.renderWidth == 0) this.renderWidth = this.defaultWidth;\r
-this.renderHeight = this.contentPane.getSubcomponentHeight ();\r
-if (this.renderHeight == 0) this.renderHeight = this.defaultHeight;\r
-var h = this.renderHeight - 25;\r
-var sb =  new javajs.util.SB ();\r
-sb.append ("\n<div id='" + this.id + "' class='JDialog' style='" + this.getCSSstyle (0, 0) + "z-index:" + this.zIndex + ";position:relative;top:0px;left:0px;reize:both;'>\n");\r
-sb.append ("\n<div id='" + this.id + "_title' class='JDialogTitle' style='width:100%;height:25px;padding:5px 5px 5px 5px;height:" + 25 + "px'>" + "<span style='text-align:center;'>" + this.title + "</span><span style='position:absolute;text-align:right;right:1px;'>" + "<input type=button id='" + this.id + "_closer' onclick='SwingController.windowClosing(this)' value='x' /></span></div>\n");\r
-sb.append ("\n<div id='" + this.id + "_body' class='JDialogBody' style='width:100%;height:" + h + "px;" + "position: relative;left:0px;top:0px'>\n");\r
-sb.append (this.contentPane.toHTML ());\r
-sb.append ("\n</div></div>\n");\r
-return sb.toString ();\r
-});\r
-Clazz.defineStatics (c$,\r
-"headerHeight", 25);\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.awt.Container"], "javajs.swing.JDialog", ["javajs.awt.Color", "javajs.swing.JContentPane", "javajs.util.SB"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.defaultWidth = 600;
+this.defaultHeight = 300;
+this.contentPane = null;
+this.title = null;
+this.html = null;
+this.zIndex = 9000;
+this.loc = null;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "JDialog", javajs.awt.Container);
+Clazz.defineMethod (c$, "setZIndex", 
+function (zIndex) {
+this.zIndex = zIndex;
+}, "~N");
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javajs.swing.JDialog, ["JD"]);
+this.add (this.contentPane =  new javajs.swing.JContentPane ());
+this.setBackground (javajs.awt.Color.get3 (210, 210, 240));
+this.contentPane.setBackground (javajs.awt.Color.get3 (230, 230, 230));
+});
+Clazz.defineMethod (c$, "setLocation", 
+function (loc) {
+this.loc = loc;
+}, "~A");
+Clazz.defineMethod (c$, "getContentPane", 
+function () {
+return this.contentPane;
+});
+Clazz.defineMethod (c$, "setTitle", 
+function (title) {
+this.title = title;
+}, "~S");
+Clazz.defineMethod (c$, "pack", 
+function () {
+this.html = null;
+});
+Clazz.defineMethod (c$, "validate", 
+function () {
+this.html = null;
+});
+Clazz.defineMethod (c$, "setVisible", 
+function (tf) {
+if (tf && this.html == null) this.setDialog ();
+Clazz.superCall (this, javajs.swing.JDialog, "setVisible", [tf]);
+}, "~B");
+Clazz.defineMethod (c$, "dispose", 
+function () {
+{
+{
+SwingController.dispose(this);
+}}});
+Clazz.overrideMethod (c$, "repaint", 
+function () {
+this.setDialog ();
+});
+Clazz.defineMethod (c$, "setDialog", 
+($fz = function () {
+this.html = this.toHTML ();
+{
+SwingController.setDialog(this);
+}}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "toHTML", 
+function () {
+this.renderWidth = this.getSubcomponentWidth ();
+if (this.renderWidth == 0) this.renderWidth = this.defaultWidth;
+this.renderHeight = this.contentPane.getSubcomponentHeight ();
+if (this.renderHeight == 0) this.renderHeight = this.defaultHeight;
+var h = this.renderHeight - 25;
+var sb =  new javajs.util.SB ();
+sb.append ("\n<div id='" + this.id + "' class='JDialog' style='" + this.getCSSstyle (0, 0) + "z-index:" + this.zIndex + ";position:relative;top:0px;left:0px;reize:both;'>\n");
+sb.append ("\n<div id='" + this.id + "_title' class='JDialogTitle' style='width:100%;height:25px;padding:5px 5px 5px 5px;height:" + 25 + "px'>" + "<span style='text-align:center;'>" + this.title + "</span><span style='position:absolute;text-align:right;right:1px;'>" + "<input type=button id='" + this.id + "_closer' onclick='SwingController.windowClosing(this)' value='x' /></span></div>\n");
+sb.append ("\n<div id='" + this.id + "_body' class='JDialogBody' style='width:100%;height:" + h + "px;" + "position: relative;left:0px;top:0px'>\n");
+sb.append (this.contentPane.toHTML ());
+sb.append ("\n</div></div>\n");
+return sb.toString ();
+});
+Clazz.defineStatics (c$,
+"headerHeight", 25);
+});
index 4f40aab..f8dcf8c 100644 (file)
@@ -1,15 +1,15 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JEditorPane", ["javajs.util.SB"], function () {\r
-c$ = Clazz.declareType (javajs.swing, "JEditorPane", javajs.swing.JComponent);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javajs.swing.JEditorPane, ["txtJEP"]);\r
-this.text = "";\r
-});\r
-Clazz.overrideMethod (c$, "toHTML", \r
-function () {\r
-var sb =  new javajs.util.SB ();\r
-sb.append ("<textarea type=text id='" + this.id + "' class='JEditorPane' style='" + this.getCSSstyle (98, 98) + "'>" + this.text + "</textarea>");\r
-return sb.toString ();\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JEditorPane", ["javajs.util.SB"], function () {
+c$ = Clazz.declareType (javajs.swing, "JEditorPane", javajs.swing.JComponent);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javajs.swing.JEditorPane, ["txtJEP"]);
+this.text = "";
+});
+Clazz.overrideMethod (c$, "toHTML", 
+function () {
+var sb =  new javajs.util.SB ();
+sb.append ("<textarea type=text id='" + this.id + "' class='JEditorPane' style='" + this.getCSSstyle (98, 98) + "'>" + this.text + "</textarea>");
+return sb.toString ();
+});
+});
index 778976c..2146a5e 100644 (file)
@@ -1,17 +1,17 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JLabel", ["javajs.util.SB"], function () {\r
-c$ = Clazz.declareType (javajs.swing, "JLabel", javajs.swing.JComponent);\r
-Clazz.makeConstructor (c$, \r
-function (text) {\r
-Clazz.superConstructor (this, javajs.swing.JLabel, ["lblJL"]);\r
-this.text = text;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "toHTML", \r
-function () {\r
-var sb =  new javajs.util.SB ();\r
-sb.append ("<span id='" + this.id + "' class='JLabel' style='" + this.getCSSstyle (0, 0) + "'>");\r
-sb.append (this.text);\r
-sb.append ("</span>");\r
-return sb.toString ();\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JLabel", ["javajs.util.SB"], function () {
+c$ = Clazz.declareType (javajs.swing, "JLabel", javajs.swing.JComponent);
+Clazz.makeConstructor (c$, 
+function (text) {
+Clazz.superConstructor (this, javajs.swing.JLabel, ["lblJL"]);
+this.text = text;
+}, "~S");
+Clazz.overrideMethod (c$, "toHTML", 
+function () {
+var sb =  new javajs.util.SB ();
+sb.append ("<span id='" + this.id + "' class='JLabel' style='" + this.getCSSstyle (0, 0) + "'>");
+sb.append (this.text);
+sb.append ("</span>");
+return sb.toString ();
+});
+});
index f887330..4dae0ad 100644 (file)
@@ -1,24 +1,24 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.JMenuItem"], "javajs.swing.JMenu", null, function () {\r
-c$ = Clazz.declareType (javajs.swing, "JMenu", javajs.swing.JMenuItem);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javajs.swing.JMenu, ["mnu", 4]);\r
-});\r
-Clazz.defineMethod (c$, "getItemCount", \r
-function () {\r
-return this.getComponentCount ();\r
-});\r
-Clazz.defineMethod (c$, "getItem", \r
-function (i) {\r
-return this.getComponent (i);\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "getPopupMenu", \r
-function () {\r
-return this;\r
-});\r
-Clazz.overrideMethod (c$, "toHTML", \r
-function () {\r
-return this.getMenuHTML ();\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.JMenuItem"], "javajs.swing.JMenu", null, function () {
+c$ = Clazz.declareType (javajs.swing, "JMenu", javajs.swing.JMenuItem);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javajs.swing.JMenu, ["mnu", 4]);
+});
+Clazz.defineMethod (c$, "getItemCount", 
+function () {
+return this.getComponentCount ();
+});
+Clazz.defineMethod (c$, "getItem", 
+function (i) {
+return this.getComponent (i);
+}, "~N");
+Clazz.overrideMethod (c$, "getPopupMenu", 
+function () {
+return this;
+});
+Clazz.overrideMethod (c$, "toHTML", 
+function () {
+return this.getMenuHTML ();
+});
+});
index 36e3220..b1183cc 100644 (file)
@@ -1,36 +1,36 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.AbstractButton"], "javajs.swing.JMenuItem", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.btnType = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "JMenuItem", javajs.swing.AbstractButton);\r
-Clazz.makeConstructor (c$, \r
-function (text) {\r
-Clazz.superConstructor (this, javajs.swing.JMenuItem, ["btn"]);\r
-this.setText (text);\r
-this.btnType = (text == null ? 0 : 1);\r
-}, "~S");\r
-Clazz.makeConstructor (c$, \r
-function (type, i) {\r
-Clazz.superConstructor (this, javajs.swing.JMenuItem, [type]);\r
-this.btnType = i;\r
-}, "~S,~N");\r
-Clazz.overrideMethod (c$, "toHTML", \r
-function () {\r
-return this.htmlMenuOpener ("li") + (this.text == null ? "" : "<a>" + this.htmlLabel () + "</a>") + "</li>";\r
-});\r
-Clazz.overrideMethod (c$, "getHtmlDisabled", \r
-function () {\r
-return " class=\"ui-state-disabled\"";\r
-});\r
-Clazz.defineMethod (c$, "htmlLabel", \r
-($fz = function () {\r
-return (this.btnType == 1 ? this.text : "<label><input id=\"" + this.id + "-" + (this.btnType == 3 ? "r" : "c") + "b\" type=\"" + (this.btnType == 3 ? "radio\" name=\"" + this.htmlName : "checkbox") + "\" " + (this.selected ? "checked" : "") + " />" + this.text + "</label>");\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineStatics (c$,\r
-"TYPE_SEPARATOR", 0,\r
-"TYPE_BUTTON", 1,\r
-"TYPE_CHECKBOX", 2,\r
-"TYPE_RADIO", 3,\r
-"TYPE_MENU", 4);\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.AbstractButton"], "javajs.swing.JMenuItem", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.btnType = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "JMenuItem", javajs.swing.AbstractButton);
+Clazz.makeConstructor (c$, 
+function (text) {
+Clazz.superConstructor (this, javajs.swing.JMenuItem, ["btn"]);
+this.setText (text);
+this.btnType = (text == null ? 0 : 1);
+}, "~S");
+Clazz.makeConstructor (c$, 
+function (type, i) {
+Clazz.superConstructor (this, javajs.swing.JMenuItem, [type]);
+this.btnType = i;
+}, "~S,~N");
+Clazz.overrideMethod (c$, "toHTML", 
+function () {
+return this.htmlMenuOpener ("li") + (this.text == null ? "" : "<a>" + this.htmlLabel () + "</a>") + "</li>";
+});
+Clazz.overrideMethod (c$, "getHtmlDisabled", 
+function () {
+return " class=\"ui-state-disabled\"";
+});
+Clazz.defineMethod (c$, "htmlLabel", 
+($fz = function () {
+return (this.btnType == 1 ? this.text : "<label><input id=\"" + this.id + "-" + (this.btnType == 3 ? "r" : "c") + "b\" type=\"" + (this.btnType == 3 ? "radio\" name=\"" + this.htmlName : "checkbox") + "\" " + (this.selected ? "checked" : "") + " />" + this.text + "</label>");
+}, $fz.isPrivate = true, $fz));
+Clazz.defineStatics (c$,
+"TYPE_SEPARATOR", 0,
+"TYPE_BUTTON", 1,
+"TYPE_CHECKBOX", 2,
+"TYPE_RADIO", 3,
+"TYPE_MENU", 4);
+});
index a7a7ef9..76bb933 100644 (file)
@@ -1,39 +1,39 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JPanel", ["javajs.swing.Grid", "$.GridBagConstraints", "javajs.util.SB"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.grid = null;\r
-this.nElements = 0;\r
-this.last = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "JPanel", javajs.swing.JComponent);\r
-Clazz.makeConstructor (c$, \r
-function (manager) {\r
-Clazz.superConstructor (this, javajs.swing.JPanel, ["JP"]);\r
-this.grid =  new javajs.swing.Grid (10, 10);\r
-}, "javajs.awt.LayoutManager");\r
-Clazz.defineMethod (c$, "add", \r
-function (btn, c) {\r
-this.last = (++this.nElements == 1 ? btn : null);\r
-if (Clazz.instanceOf (c, String)) {\r
-if (c.equals ("North")) c =  new javajs.swing.GridBagConstraints (0, 0, 3, 1, 0, 0, 10, 0, null, 0, 0);\r
- else if (c.equals ("South")) c =  new javajs.swing.GridBagConstraints (0, 2, 3, 1, 0, 0, 10, 0, null, 0, 0);\r
- else if (c.equals ("East")) c =  new javajs.swing.GridBagConstraints (2, 1, 1, 1, 0, 0, 13, 0, null, 0, 0);\r
- else if (c.equals ("West")) c =  new javajs.swing.GridBagConstraints (0, 1, 1, 1, 0, 0, 17, 0, null, 0, 0);\r
- else c =  new javajs.swing.GridBagConstraints (1, 1, 1, 1, 0, 0, 10, 0, null, 0, 0);\r
-}this.grid.add (btn, c);\r
-}, "javajs.swing.JComponent,~O");\r
-Clazz.overrideMethod (c$, "toHTML", \r
-function () {\r
-if (this.last != null) {\r
-this.grid =  new javajs.swing.Grid (1, 1);\r
-this.grid.add (this.last,  new javajs.swing.GridBagConstraints (0, 0, 1, 1, 0, 0, 10, 0, null, 0, 0));\r
-this.last = null;\r
-}var sb =  new javajs.util.SB ();\r
-sb.append ("\n<div id='" + this.id + "' class='JPanel' style='" + this.getCSSstyle (100, 100) + "'>\n");\r
-sb.append ("\n<span id='" + this.id + "_minimizer' style='width:" + this.minWidth + "px;height:" + this.minHeight + "px;'>");\r
-sb.append (this.grid.toHTML (this.id));\r
-sb.append ("</span>");\r
-sb.append ("\n</div>\n");\r
-return sb.toString ();\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JPanel", ["javajs.swing.Grid", "$.GridBagConstraints", "javajs.util.SB"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.grid = null;
+this.nElements = 0;
+this.last = null;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "JPanel", javajs.swing.JComponent);
+Clazz.makeConstructor (c$, 
+function (manager) {
+Clazz.superConstructor (this, javajs.swing.JPanel, ["JP"]);
+this.grid =  new javajs.swing.Grid (10, 10);
+}, "javajs.awt.LayoutManager");
+Clazz.defineMethod (c$, "add", 
+function (btn, c) {
+this.last = (++this.nElements == 1 ? btn : null);
+if (Clazz.instanceOf (c, String)) {
+if (c.equals ("North")) c =  new javajs.swing.GridBagConstraints (0, 0, 3, 1, 0, 0, 10, 0, null, 0, 0);
+ else if (c.equals ("South")) c =  new javajs.swing.GridBagConstraints (0, 2, 3, 1, 0, 0, 10, 0, null, 0, 0);
+ else if (c.equals ("East")) c =  new javajs.swing.GridBagConstraints (2, 1, 1, 1, 0, 0, 13, 0, null, 0, 0);
+ else if (c.equals ("West")) c =  new javajs.swing.GridBagConstraints (0, 1, 1, 1, 0, 0, 17, 0, null, 0, 0);
+ else c =  new javajs.swing.GridBagConstraints (1, 1, 1, 1, 0, 0, 10, 0, null, 0, 0);
+}this.grid.add (btn, c);
+}, "javajs.swing.JComponent,~O");
+Clazz.overrideMethod (c$, "toHTML", 
+function () {
+if (this.last != null) {
+this.grid =  new javajs.swing.Grid (1, 1);
+this.grid.add (this.last,  new javajs.swing.GridBagConstraints (0, 0, 1, 1, 0, 0, 10, 0, null, 0, 0));
+this.last = null;
+}var sb =  new javajs.util.SB ();
+sb.append ("\n<div id='" + this.id + "' class='JPanel' style='" + this.getCSSstyle (100, 100) + "'>\n");
+sb.append ("\n<span id='" + this.id + "_minimizer' style='width:" + this.minWidth + "px;height:" + this.minHeight + "px;'>");
+sb.append (this.grid.toHTML (this.id));
+sb.append ("</span>");
+sb.append ("\n</div>\n");
+return sb.toString ();
+});
+});
index 855df96..95cbc1f 100644 (file)
@@ -1,37 +1,37 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.AbstractButton"], "javajs.swing.JPopupMenu", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.tainted = true;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "JPopupMenu", javajs.swing.AbstractButton);\r
-Clazz.makeConstructor (c$, \r
-function (name) {\r
-Clazz.superConstructor (this, javajs.swing.JPopupMenu, ["mnu"]);\r
-this.name = name;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setInvoker", \r
-function (applet) {\r
-this.applet = applet;\r
-{\r
-SwingController.setMenu(this);\r
-}}, "~O");\r
-Clazz.defineMethod (c$, "show", \r
-function (applet, x, y) {\r
-{\r
-if (applet != null)\r
-this.tainted = true;\r
-SwingController.showMenu(this, x, y);\r
-}}, "javajs.awt.Component,~N,~N");\r
-Clazz.defineMethod (c$, "disposeMenu", \r
-function () {\r
-{\r
-SwingController.disposeMenu(this);\r
-}});\r
-Clazz.overrideMethod (c$, "toHTML", \r
-function () {\r
-return this.getMenuHTML ();\r
-});\r
-{\r
-{\r
-SwingController.setDraggable(javajs.swing.JPopupMenu);\r
-}}});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.AbstractButton"], "javajs.swing.JPopupMenu", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.tainted = true;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "JPopupMenu", javajs.swing.AbstractButton);
+Clazz.makeConstructor (c$, 
+function (name) {
+Clazz.superConstructor (this, javajs.swing.JPopupMenu, ["mnu"]);
+this.name = name;
+}, "~S");
+Clazz.defineMethod (c$, "setInvoker", 
+function (applet) {
+this.applet = applet;
+{
+SwingController.setMenu(this);
+}}, "~O");
+Clazz.defineMethod (c$, "show", 
+function (applet, x, y) {
+{
+if (applet != null)
+this.tainted = true;
+SwingController.showMenu(this, x, y);
+}}, "javajs.awt.Component,~N,~N");
+Clazz.defineMethod (c$, "disposeMenu", 
+function () {
+{
+SwingController.disposeMenu(this);
+}});
+Clazz.overrideMethod (c$, "toHTML", 
+function () {
+return this.getMenuHTML ();
+});
+{
+{
+SwingController.setDraggable(javajs.swing.JPopupMenu);
+}}});
index 1ba2401..8388819 100644 (file)
@@ -1,11 +1,11 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.JMenuItem"], "javajs.swing.JRadioButtonMenuItem", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.isRadio = true;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "JRadioButtonMenuItem", javajs.swing.JMenuItem);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javajs.swing.JRadioButtonMenuItem, ["rad", 3]);\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.JMenuItem"], "javajs.swing.JRadioButtonMenuItem", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.isRadio = true;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "JRadioButtonMenuItem", javajs.swing.JMenuItem);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javajs.swing.JRadioButtonMenuItem, ["rad", 3]);
+});
+});
index 64c766a..2ba9959 100644 (file)
@@ -1,22 +1,22 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JScrollPane", ["javajs.util.SB"], function () {\r
-c$ = Clazz.declareType (javajs.swing, "JScrollPane", javajs.swing.JComponent);\r
-Clazz.makeConstructor (c$, \r
-function (component) {\r
-Clazz.superConstructor (this, javajs.swing.JScrollPane, ["JScP"]);\r
-this.add (component);\r
-}, "javajs.swing.JComponent");\r
-Clazz.defineMethod (c$, "toHTML", \r
-function () {\r
-var sb =  new javajs.util.SB ();\r
-sb.append ("\n<div id='" + this.id + "' class='JScrollPane' style='" + this.getCSSstyle (98, 98) + "overflow:auto'>\n");\r
-if (this.list != null) {\r
-var c = this.list.get (0);\r
-sb.append (c.toHTML ());\r
-}sb.append ("\n</div>\n");\r
-return sb.toString ();\r
-});\r
-Clazz.overrideMethod (c$, "setMinimumSize", \r
-function (dimension) {\r
-}, "javajs.awt.Dimension");\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JScrollPane", ["javajs.util.SB"], function () {
+c$ = Clazz.declareType (javajs.swing, "JScrollPane", javajs.swing.JComponent);
+Clazz.makeConstructor (c$, 
+function (component) {
+Clazz.superConstructor (this, javajs.swing.JScrollPane, ["JScP"]);
+this.add (component);
+}, "javajs.swing.JComponent");
+Clazz.defineMethod (c$, "toHTML", 
+function () {
+var sb =  new javajs.util.SB ();
+sb.append ("\n<div id='" + this.id + "' class='JScrollPane' style='" + this.getCSSstyle (98, 98) + "overflow:auto'>\n");
+if (this.list != null) {
+var c = this.list.get (0);
+sb.append (c.toHTML ());
+}sb.append ("\n</div>\n");
+return sb.toString ();
+});
+Clazz.overrideMethod (c$, "setMinimumSize", 
+function (dimension) {
+}, "javajs.awt.Dimension");
+});
index 11f99e2..08969e2 100644 (file)
@@ -1,67 +1,67 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JSplitPane", ["javajs.swing.JComponentImp", "javajs.util.SB"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.isH = true;\r
-this.split = 1;\r
-this.right = null;\r
-this.left = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "JSplitPane", javajs.swing.JComponent);\r
-Clazz.makeConstructor (c$, \r
-function (split) {\r
-Clazz.superConstructor (this, javajs.swing.JSplitPane, ["JSpP"]);\r
-this.split = split;\r
-this.isH = (split == 1);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setRightComponent", \r
-function (r) {\r
-this.right =  new javajs.swing.JComponentImp (null);\r
-this.right.add (r);\r
-}, "javajs.swing.JComponent");\r
-Clazz.defineMethod (c$, "setLeftComponent", \r
-function (l) {\r
-this.left =  new javajs.swing.JComponentImp (null);\r
-this.left.add (l);\r
-}, "javajs.swing.JComponent");\r
-Clazz.defineMethod (c$, "getSubcomponentWidth", \r
-function () {\r
-var w = this.width;\r
-if (w == 0) {\r
-var wleft = this.left.getSubcomponentWidth ();\r
-var wright = this.right.getSubcomponentWidth ();\r
-if (wleft > 0 && wright > 0) {\r
-if (this.isH) w = wleft + wright;\r
- else w = Math.max (wleft, wright);\r
-}}return w;\r
-});\r
-Clazz.defineMethod (c$, "getSubcomponentHeight", \r
-function () {\r
-var h = this.height;\r
-if (h == 0) {\r
-var hleft = this.left.getSubcomponentHeight ();\r
-var hright = this.right.getSubcomponentHeight ();\r
-if (hleft > 0 && hright > 0) {\r
-if (this.isH) h = Math.max (hleft, hright);\r
- else h = hleft + hright;\r
-}}return h;\r
-});\r
-Clazz.defineMethod (c$, "toHTML", \r
-function () {\r
-if (this.left == null || this.right == null) return "";\r
-var isH = (this.split == 1);\r
-if (this.width == 0) this.width = this.getSubcomponentWidth ();\r
-if (this.height == 0) this.height = this.getSubcomponentHeight ();\r
-var sb =  new javajs.util.SB ();\r
-sb.append ("<div id='" + this.id + "' class='JSplitPane' style='" + this.getCSSstyle (100, 100) + "'>");\r
-if (isH) sb.append ("<div id='" + this.id + "_left' style='width:50%;height:100%;position:absolute;top:0%;left:0%'>");\r
- else sb.append ("<div id='" + this.id + "_top' style='width:100%;height:50%;position:absolute;top:0%;left:0%'>");\r
-sb.append (this.left.getComponents ()[0].toHTML ());\r
-if (isH) sb.append ("</div><div id='" + this.id + "_right' style='width:50%;height:100%;position:absolute;top:0%;left:50%'>");\r
- else sb.append ("</div><div id='" + this.id + "_bottom' style='width:100%;height:50%;position:absolute;top:50%;left:0%'>");\r
-sb.append (this.right.getComponents ()[0].toHTML ());\r
-sb.append ("</div></div>\n");\r
-return sb.toString ();\r
-});\r
-Clazz.defineStatics (c$,\r
-"HORIZONTAL_SPLIT", 1);\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JSplitPane", ["javajs.swing.JComponentImp", "javajs.util.SB"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.isH = true;
+this.split = 1;
+this.right = null;
+this.left = null;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "JSplitPane", javajs.swing.JComponent);
+Clazz.makeConstructor (c$, 
+function (split) {
+Clazz.superConstructor (this, javajs.swing.JSplitPane, ["JSpP"]);
+this.split = split;
+this.isH = (split == 1);
+}, "~N");
+Clazz.defineMethod (c$, "setRightComponent", 
+function (r) {
+this.right =  new javajs.swing.JComponentImp (null);
+this.right.add (r);
+}, "javajs.swing.JComponent");
+Clazz.defineMethod (c$, "setLeftComponent", 
+function (l) {
+this.left =  new javajs.swing.JComponentImp (null);
+this.left.add (l);
+}, "javajs.swing.JComponent");
+Clazz.defineMethod (c$, "getSubcomponentWidth", 
+function () {
+var w = this.width;
+if (w == 0) {
+var wleft = this.left.getSubcomponentWidth ();
+var wright = this.right.getSubcomponentWidth ();
+if (wleft > 0 && wright > 0) {
+if (this.isH) w = wleft + wright;
+ else w = Math.max (wleft, wright);
+}}return w;
+});
+Clazz.defineMethod (c$, "getSubcomponentHeight", 
+function () {
+var h = this.height;
+if (h == 0) {
+var hleft = this.left.getSubcomponentHeight ();
+var hright = this.right.getSubcomponentHeight ();
+if (hleft > 0 && hright > 0) {
+if (this.isH) h = Math.max (hleft, hright);
+ else h = hleft + hright;
+}}return h;
+});
+Clazz.defineMethod (c$, "toHTML", 
+function () {
+if (this.left == null || this.right == null) return "";
+var isH = (this.split == 1);
+if (this.width == 0) this.width = this.getSubcomponentWidth ();
+if (this.height == 0) this.height = this.getSubcomponentHeight ();
+var sb =  new javajs.util.SB ();
+sb.append ("<div id='" + this.id + "' class='JSplitPane' style='" + this.getCSSstyle (100, 100) + "'>");
+if (isH) sb.append ("<div id='" + this.id + "_left' style='width:50%;height:100%;position:absolute;top:0%;left:0%'>");
+ else sb.append ("<div id='" + this.id + "_top' style='width:100%;height:50%;position:absolute;top:0%;left:0%'>");
+sb.append (this.left.getComponents ()[0].toHTML ());
+if (isH) sb.append ("</div><div id='" + this.id + "_right' style='width:50%;height:100%;position:absolute;top:0%;left:50%'>");
+ else sb.append ("</div><div id='" + this.id + "_bottom' style='width:100%;height:50%;position:absolute;top:50%;left:0%'>");
+sb.append (this.right.getComponents ()[0].toHTML ());
+sb.append ("</div></div>\n");
+return sb.toString ();
+});
+Clazz.defineStatics (c$,
+"HORIZONTAL_SPLIT", 1);
+});
index a281668..b8f4499 100644 (file)
@@ -1,67 +1,67 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.ColumnSelectionModel", "$.JComponent", "$.ListSelectionModel"], "javajs.swing.JTable", ["javajs.util.BS", "$.SB"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.tableModel = null;\r
-this.bsSelectedCells = null;\r
-this.bsSelectedRows = null;\r
-this.rowSelectionAllowed = false;\r
-this.cellSelectionEnabled = false;\r
-this.selectionListener = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.swing, "JTable", javajs.swing.JComponent, [javajs.swing.ListSelectionModel, javajs.swing.ColumnSelectionModel]);\r
-Clazz.makeConstructor (c$, \r
-function (tableModel) {\r
-Clazz.superConstructor (this, javajs.swing.JTable, ["JT"]);\r
-this.tableModel = tableModel;\r
-this.bsSelectedCells =  new javajs.util.BS ();\r
-this.bsSelectedRows =  new javajs.util.BS ();\r
-}, "javajs.swing.AbstractTableModel");\r
-Clazz.overrideMethod (c$, "getSelectionModel", \r
-function () {\r
-return this;\r
-});\r
-Clazz.defineMethod (c$, "getColumnModel", \r
-function () {\r
-return this;\r
-});\r
-Clazz.defineMethod (c$, "setPreferredScrollableViewportSize", \r
-function (dimension) {\r
-this.width = dimension.width;\r
-this.height = dimension.height;\r
-}, "javajs.awt.Dimension");\r
-Clazz.defineMethod (c$, "clearSelection", \r
-function () {\r
-this.bsSelectedCells.clearAll ();\r
-this.bsSelectedRows.clearAll ();\r
-});\r
-Clazz.defineMethod (c$, "setRowSelectionAllowed", \r
-function (b) {\r
-this.rowSelectionAllowed = b;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setRowSelectionInterval", \r
-function (i, j) {\r
-this.bsSelectedRows.clearAll ();\r
-this.bsSelectedRows.setBits (i, j);\r
-this.bsSelectedCells.clearAll ();\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "setCellSelectionEnabled", \r
-function (enabled) {\r
-this.cellSelectionEnabled = enabled;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "addListSelectionListener", \r
-function (listener) {\r
-this.selectionListener = listener;\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "getColumn", \r
-function (i) {\r
-return this.tableModel.getColumn (i);\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "toHTML", \r
-function () {\r
-var sb =  new javajs.util.SB ();\r
-sb.append ("\n<table id='" + this.id + "_table' class='JTable' >");\r
-this.tableModel.toHTML (sb, this.id, this.bsSelectedRows);\r
-sb.append ("\n</table>\n");\r
-return sb.toString ();\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.ColumnSelectionModel", "$.JComponent", "$.ListSelectionModel"], "javajs.swing.JTable", ["javajs.util.BS", "$.SB"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.tableModel = null;
+this.bsSelectedCells = null;
+this.bsSelectedRows = null;
+this.rowSelectionAllowed = false;
+this.cellSelectionEnabled = false;
+this.selectionListener = null;
+Clazz.instantialize (this, arguments);
+}, javajs.swing, "JTable", javajs.swing.JComponent, [javajs.swing.ListSelectionModel, javajs.swing.ColumnSelectionModel]);
+Clazz.makeConstructor (c$, 
+function (tableModel) {
+Clazz.superConstructor (this, javajs.swing.JTable, ["JT"]);
+this.tableModel = tableModel;
+this.bsSelectedCells =  new javajs.util.BS ();
+this.bsSelectedRows =  new javajs.util.BS ();
+}, "javajs.swing.AbstractTableModel");
+Clazz.overrideMethod (c$, "getSelectionModel", 
+function () {
+return this;
+});
+Clazz.defineMethod (c$, "getColumnModel", 
+function () {
+return this;
+});
+Clazz.defineMethod (c$, "setPreferredScrollableViewportSize", 
+function (dimension) {
+this.width = dimension.width;
+this.height = dimension.height;
+}, "javajs.awt.Dimension");
+Clazz.defineMethod (c$, "clearSelection", 
+function () {
+this.bsSelectedCells.clearAll ();
+this.bsSelectedRows.clearAll ();
+});
+Clazz.defineMethod (c$, "setRowSelectionAllowed", 
+function (b) {
+this.rowSelectionAllowed = b;
+}, "~B");
+Clazz.defineMethod (c$, "setRowSelectionInterval", 
+function (i, j) {
+this.bsSelectedRows.clearAll ();
+this.bsSelectedRows.setBits (i, j);
+this.bsSelectedCells.clearAll ();
+}, "~N,~N");
+Clazz.defineMethod (c$, "setCellSelectionEnabled", 
+function (enabled) {
+this.cellSelectionEnabled = enabled;
+}, "~B");
+Clazz.overrideMethod (c$, "addListSelectionListener", 
+function (listener) {
+this.selectionListener = listener;
+}, "~O");
+Clazz.overrideMethod (c$, "getColumn", 
+function (i) {
+return this.tableModel.getColumn (i);
+}, "~N");
+Clazz.overrideMethod (c$, "toHTML", 
+function () {
+var sb =  new javajs.util.SB ();
+sb.append ("\n<table id='" + this.id + "_table' class='JTable' >");
+this.tableModel.toHTML (sb, this.id, this.bsSelectedRows);
+sb.append ("\n</table>\n");
+return sb.toString ();
+});
+});
index 9cc639f..88b08a6 100644 (file)
@@ -1,15 +1,15 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JTextField", ["javajs.util.SB"], function () {\r
-c$ = Clazz.declareType (javajs.swing, "JTextField", javajs.swing.JComponent);\r
-Clazz.makeConstructor (c$, \r
-function (value) {\r
-Clazz.superConstructor (this, javajs.swing.JTextField, ["txtJT"]);\r
-this.text = value;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "toHTML", \r
-function () {\r
-var sb =  new javajs.util.SB ();\r
-sb.append ("<input type=text id='" + this.id + "' class='JTextField' style='" + this.getCSSstyle (0, 0) + "' value='" + this.text + "' onkeyup =SwingController.click(this,event)      >");\r
-return sb.toString ();\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.JComponent"], "javajs.swing.JTextField", ["javajs.util.SB"], function () {
+c$ = Clazz.declareType (javajs.swing, "JTextField", javajs.swing.JComponent);
+Clazz.makeConstructor (c$, 
+function (value) {
+Clazz.superConstructor (this, javajs.swing.JTextField, ["txtJT"]);
+this.text = value;
+}, "~S");
+Clazz.overrideMethod (c$, "toHTML", 
+function () {
+var sb =  new javajs.util.SB ();
+sb.append ("<input type=text id='" + this.id + "' class='JTextField' style='" + this.getCSSstyle (0, 0) + "' value='" + this.text + "' onkeyup =SwingController.click(this,event)      >");
+return sb.toString ();
+});
+});
index 23d5a22..25d3764 100644 (file)
@@ -1,24 +1,24 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.load (["javajs.swing.Document", "$.JComponent"], "javajs.swing.JTextPane", ["javajs.util.SB"], function () {\r
-c$ = Clazz.declareType (javajs.swing, "JTextPane", javajs.swing.JComponent, javajs.swing.Document);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javajs.swing.JTextPane, ["txtJTP"]);\r
-this.text = "";\r
-});\r
-Clazz.defineMethod (c$, "getDocument", \r
-function () {\r
-return this;\r
-});\r
-Clazz.overrideMethod (c$, "insertString", \r
-function (i, s, object) {\r
-i = Math.min (i, this.text.length);\r
-this.text = this.text.substring (0, i) + s + this.text.substring (i);\r
-}, "~N,~S,~O");\r
-Clazz.overrideMethod (c$, "toHTML", \r
-function () {\r
-var sb =  new javajs.util.SB ();\r
-sb.append ("<textarea type=text id='" + this.id + "' class='JTextPane' style='" + this.getCSSstyle (98, 98) + "'>" + this.text + "</textarea>");\r
-return sb.toString ();\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.load (["javajs.swing.Document", "$.JComponent"], "javajs.swing.JTextPane", ["javajs.util.SB"], function () {
+c$ = Clazz.declareType (javajs.swing, "JTextPane", javajs.swing.JComponent, javajs.swing.Document);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javajs.swing.JTextPane, ["txtJTP"]);
+this.text = "";
+});
+Clazz.defineMethod (c$, "getDocument", 
+function () {
+return this;
+});
+Clazz.overrideMethod (c$, "insertString", 
+function (i, s, object) {
+i = Math.min (i, this.text.length);
+this.text = this.text.substring (0, i) + s + this.text.substring (i);
+}, "~N,~S,~O");
+Clazz.overrideMethod (c$, "toHTML", 
+function () {
+var sb =  new javajs.util.SB ();
+sb.append ("<textarea type=text id='" + this.id + "' class='JTextPane' style='" + this.getCSSstyle (98, 98) + "'>" + this.text + "</textarea>");
+return sb.toString ();
+});
+});
index 5cb1d3a..c5fd420 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.declareInterface (javajs.swing, "ListSelectionModel");\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.declareInterface (javajs.swing, "ListSelectionModel");
index f10e094..2298d0a 100644 (file)
@@ -1,6 +1,6 @@
-Clazz.declarePackage ("javajs.swing");\r
-c$ = Clazz.declareType (javajs.swing, "SwingConstants");\r
-Clazz.defineStatics (c$,\r
-"LEFT", 2,\r
-"CENTER", 0,\r
-"RIGHT", 4);\r
+Clazz.declarePackage ("javajs.swing");
+c$ = Clazz.declareType (javajs.swing, "SwingConstants");
+Clazz.defineStatics (c$,
+"LEFT", 2,
+"CENTER", 0,
+"RIGHT", 4);
index 94b3f9f..6b1942e 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.declareInterface (javajs.swing, "TableCellRenderer");\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.declareInterface (javajs.swing, "TableCellRenderer");
index e2fa800..19d5394 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("javajs.swing");\r
-Clazz.declareInterface (javajs.swing, "TableColumn");\r
+Clazz.declarePackage ("javajs.swing");
+Clazz.declareInterface (javajs.swing, "TableColumn");
index d3d3a66..b3f66b8 100644 (file)
@@ -1,89 +1,89 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.api.JSONEncodable"], "javajs.util.A4", ["javajs.util.T3"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.x = 0;\r
-this.y = 0;\r
-this.z = 0;\r
-this.angle = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "A4", null, [javajs.api.JSONEncodable, java.io.Serializable]);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.z = 1.0;\r
-});\r
-c$.new4 = Clazz.defineMethod (c$, "new4", \r
-function (x, y, z, angle) {\r
-var a =  new javajs.util.A4 ();\r
-a.set4 (x, y, z, angle);\r
-return a;\r
-}, "~N,~N,~N,~N");\r
-c$.newAA = Clazz.defineMethod (c$, "newAA", \r
-function (a1) {\r
-var a =  new javajs.util.A4 ();\r
-a.set4 (a1.x, a1.y, a1.z, a1.angle);\r
-return a;\r
-}, "javajs.util.A4");\r
-c$.newVA = Clazz.defineMethod (c$, "newVA", \r
-function (axis, angle) {\r
-var a =  new javajs.util.A4 ();\r
-a.setVA (axis, angle);\r
-return a;\r
-}, "javajs.util.V3,~N");\r
-Clazz.defineMethod (c$, "setVA", \r
-function (axis, angle) {\r
-this.x = axis.x;\r
-this.y = axis.y;\r
-this.z = axis.z;\r
-this.angle = angle;\r
-}, "javajs.util.V3,~N");\r
-Clazz.defineMethod (c$, "set4", \r
-function (x, y, z, angle) {\r
-this.x = x;\r
-this.y = y;\r
-this.z = z;\r
-this.angle = angle;\r
-}, "~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "setAA", \r
-function (a) {\r
-this.x = a.x;\r
-this.y = a.y;\r
-this.z = a.z;\r
-this.angle = a.angle;\r
-}, "javajs.util.A4");\r
-Clazz.defineMethod (c$, "setM", \r
-function (m1) {\r
-this.setFromMat (m1.m00, m1.m01, m1.m02, m1.m10, m1.m11, m1.m12, m1.m20, m1.m21, m1.m22);\r
-}, "javajs.util.M3");\r
-Clazz.defineMethod (c$, "setFromMat", \r
-($fz = function (m00, m01, m02, m10, m11, m12, m20, m21, m22) {\r
-var cos = (m00 + m11 + m22 - 1.0) * 0.5;\r
-this.x = (m21 - m12);\r
-this.y = (m02 - m20);\r
-this.z = (m10 - m01);\r
-var sin = 0.5 * Math.sqrt (this.x * this.x + this.y * this.y + this.z * this.z);\r
-if (sin == 0 && cos == 1) {\r
-this.x = this.y = 0;\r
-this.z = 1;\r
-this.angle = 0;\r
-} else {\r
-this.angle = Math.atan2 (sin, cos);\r
-}}, $fz.isPrivate = true, $fz), "~N,~N,~N,~N,~N,~N,~N,~N,~N");\r
-Clazz.overrideMethod (c$, "hashCode", \r
-function () {\r
-return javajs.util.T3.floatToIntBits0 (this.x) ^ javajs.util.T3.floatToIntBits0 (this.y) ^ javajs.util.T3.floatToIntBits0 (this.z) ^ javajs.util.T3.floatToIntBits0 (this.angle);\r
-});\r
-Clazz.overrideMethod (c$, "equals", \r
-function (o) {\r
-if (!(Clazz.instanceOf (o, javajs.util.A4))) return false;\r
-var a1 = o;\r
-return this.x == a1.x && this.y == a1.y && this.z == a1.z && this.angle == a1.angle;\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "(" + this.x + ", " + this.y + ", " + this.z + ", " + this.angle + ")";\r
-});\r
-Clazz.overrideMethod (c$, "toJSON", \r
-function () {\r
-return "[" + this.x + "," + this.y + "," + this.z + "," + (this.angle * 180.0 / 3.141592653589793) + "]";\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.api.JSONEncodable"], "javajs.util.A4", ["javajs.util.T3"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.x = 0;
+this.y = 0;
+this.z = 0;
+this.angle = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "A4", null, [javajs.api.JSONEncodable, java.io.Serializable]);
+Clazz.makeConstructor (c$, 
+function () {
+this.z = 1.0;
+});
+c$.new4 = Clazz.defineMethod (c$, "new4", 
+function (x, y, z, angle) {
+var a =  new javajs.util.A4 ();
+a.set4 (x, y, z, angle);
+return a;
+}, "~N,~N,~N,~N");
+c$.newAA = Clazz.defineMethod (c$, "newAA", 
+function (a1) {
+var a =  new javajs.util.A4 ();
+a.set4 (a1.x, a1.y, a1.z, a1.angle);
+return a;
+}, "javajs.util.A4");
+c$.newVA = Clazz.defineMethod (c$, "newVA", 
+function (axis, angle) {
+var a =  new javajs.util.A4 ();
+a.setVA (axis, angle);
+return a;
+}, "javajs.util.V3,~N");
+Clazz.defineMethod (c$, "setVA", 
+function (axis, angle) {
+this.x = axis.x;
+this.y = axis.y;
+this.z = axis.z;
+this.angle = angle;
+}, "javajs.util.V3,~N");
+Clazz.defineMethod (c$, "set4", 
+function (x, y, z, angle) {
+this.x = x;
+this.y = y;
+this.z = z;
+this.angle = angle;
+}, "~N,~N,~N,~N");
+Clazz.defineMethod (c$, "setAA", 
+function (a) {
+this.x = a.x;
+this.y = a.y;
+this.z = a.z;
+this.angle = a.angle;
+}, "javajs.util.A4");
+Clazz.defineMethod (c$, "setM", 
+function (m1) {
+this.setFromMat (m1.m00, m1.m01, m1.m02, m1.m10, m1.m11, m1.m12, m1.m20, m1.m21, m1.m22);
+}, "javajs.util.M3");
+Clazz.defineMethod (c$, "setFromMat", 
+($fz = function (m00, m01, m02, m10, m11, m12, m20, m21, m22) {
+var cos = (m00 + m11 + m22 - 1.0) * 0.5;
+this.x = (m21 - m12);
+this.y = (m02 - m20);
+this.z = (m10 - m01);
+var sin = 0.5 * Math.sqrt (this.x * this.x + this.y * this.y + this.z * this.z);
+if (sin == 0 && cos == 1) {
+this.x = this.y = 0;
+this.z = 1;
+this.angle = 0;
+} else {
+this.angle = Math.atan2 (sin, cos);
+}}, $fz.isPrivate = true, $fz), "~N,~N,~N,~N,~N,~N,~N,~N,~N");
+Clazz.overrideMethod (c$, "hashCode", 
+function () {
+return javajs.util.T3.floatToIntBits0 (this.x) ^ javajs.util.T3.floatToIntBits0 (this.y) ^ javajs.util.T3.floatToIntBits0 (this.z) ^ javajs.util.T3.floatToIntBits0 (this.angle);
+});
+Clazz.overrideMethod (c$, "equals", 
+function (o) {
+if (!(Clazz.instanceOf (o, javajs.util.A4))) return false;
+var a1 = o;
+return this.x == a1.x && this.y == a1.y && this.z == a1.z && this.angle == a1.angle;
+}, "~O");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "(" + this.x + ", " + this.y + ", " + this.z + ", " + this.angle + ")";
+});
+Clazz.overrideMethod (c$, "toJSON", 
+function () {
+return "[" + this.x + "," + this.y + "," + this.z + "," + (this.angle * 180.0 / 3.141592653589793) + "]";
+});
+});
index f7f0201..080d17c 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (null, "javajs.util.AU", ["java.util.Arrays", "javajs.util.Lst"], function () {\r
-c$ = Clazz.declareType (javajs.util, "AU");\r
-c$.ensureLength = Clazz.defineMethod (c$, "ensureLength", \r
-function (array, minimumLength) {\r
-if (array != null && javajs.util.AU.getLength (array) >= minimumLength) return array;\r
-return javajs.util.AU.arrayCopyObject (array, minimumLength);\r
-}, "~O,~N");\r
-c$.ensureLengthS = Clazz.defineMethod (c$, "ensureLengthS", \r
-function (array, minimumLength) {\r
-if (array != null && array.length >= minimumLength) return array;\r
-return javajs.util.AU.arrayCopyS (array, minimumLength);\r
-}, "~A,~N");\r
-c$.ensureLengthA = Clazz.defineMethod (c$, "ensureLengthA", \r
-function (array, minimumLength) {\r
-if (array != null && array.length >= minimumLength) return array;\r
-return javajs.util.AU.arrayCopyF (array, minimumLength);\r
-}, "~A,~N");\r
-c$.ensureLengthI = Clazz.defineMethod (c$, "ensureLengthI", \r
-function (array, minimumLength) {\r
-if (array != null && array.length >= minimumLength) return array;\r
-return javajs.util.AU.arrayCopyI (array, minimumLength);\r
-}, "~A,~N");\r
-c$.ensureLengthShort = Clazz.defineMethod (c$, "ensureLengthShort", \r
-function (array, minimumLength) {\r
-if (array != null && array.length >= minimumLength) return array;\r
-return javajs.util.AU.arrayCopyShort (array, minimumLength);\r
-}, "~A,~N");\r
-c$.ensureLengthByte = Clazz.defineMethod (c$, "ensureLengthByte", \r
-function (array, minimumLength) {\r
-if (array != null && array.length >= minimumLength) return array;\r
-return javajs.util.AU.arrayCopyByte (array, minimumLength);\r
-}, "~A,~N");\r
-c$.doubleLength = Clazz.defineMethod (c$, "doubleLength", \r
-function (array) {\r
-return javajs.util.AU.arrayCopyObject (array, (array == null ? 16 : 2 * javajs.util.AU.getLength (array)));\r
-}, "~O");\r
-c$.doubleLengthS = Clazz.defineMethod (c$, "doubleLengthS", \r
-function (array) {\r
-return javajs.util.AU.arrayCopyS (array, (array == null ? 16 : 2 * array.length));\r
-}, "~A");\r
-c$.doubleLengthF = Clazz.defineMethod (c$, "doubleLengthF", \r
-function (array) {\r
-return javajs.util.AU.arrayCopyF (array, (array == null ? 16 : 2 * array.length));\r
-}, "~A");\r
-c$.doubleLengthI = Clazz.defineMethod (c$, "doubleLengthI", \r
-function (array) {\r
-return javajs.util.AU.arrayCopyI (array, (array == null ? 16 : 2 * array.length));\r
-}, "~A");\r
-c$.doubleLengthShort = Clazz.defineMethod (c$, "doubleLengthShort", \r
-function (array) {\r
-return javajs.util.AU.arrayCopyShort (array, (array == null ? 16 : 2 * array.length));\r
-}, "~A");\r
-c$.doubleLengthByte = Clazz.defineMethod (c$, "doubleLengthByte", \r
-function (array) {\r
-return javajs.util.AU.arrayCopyByte (array, (array == null ? 16 : 2 * array.length));\r
-}, "~A");\r
-c$.doubleLengthBool = Clazz.defineMethod (c$, "doubleLengthBool", \r
-function (array) {\r
-return javajs.util.AU.arrayCopyBool (array, (array == null ? 16 : 2 * array.length));\r
-}, "~A");\r
-c$.deleteElements = Clazz.defineMethod (c$, "deleteElements", \r
-function (array, firstElement, nElements) {\r
-if (nElements == 0 || array == null) return array;\r
-var oldLength = javajs.util.AU.getLength (array);\r
-if (firstElement >= oldLength) return array;\r
-var n = oldLength - (firstElement + nElements);\r
-if (n < 0) n = 0;\r
-var t = javajs.util.AU.newInstanceO (array, firstElement + n);\r
-if (firstElement > 0) System.arraycopy (array, 0, t, 0, firstElement);\r
-if (n > 0) System.arraycopy (array, firstElement + nElements, t, firstElement, n);\r
-return t;\r
-}, "~O,~N,~N");\r
-c$.arrayCopyObject = Clazz.defineMethod (c$, "arrayCopyObject", \r
-function (array, newLength) {\r
-if (array == null) {\r
-return null;\r
-}var oldLength = javajs.util.AU.getLength (array);\r
-if (newLength == oldLength) return array;\r
-var t = javajs.util.AU.newInstanceO (array, newLength);\r
-System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);\r
-return t;\r
-}, "~O,~N");\r
-c$.newInstanceO = Clazz.defineMethod (c$, "newInstanceO", \r
-($fz = function (array, n) {\r
-{\r
-if (!array.getClass().getComponentType)\r
-return new Array(n);\r
-}}, $fz.isPrivate = true, $fz), "~O,~N");\r
-c$.getLength = Clazz.defineMethod (c$, "getLength", \r
-function (array) {\r
-{\r
-return array.length\r
-}}, "~O");\r
-c$.arrayCopyS = Clazz.defineMethod (c$, "arrayCopyS", \r
-function (array, newLength) {\r
-if (newLength < 0) newLength = array.length;\r
-var t =  new Array (newLength);\r
-if (array != null) {\r
-var oldLength = array.length;\r
-System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);\r
-}return t;\r
-}, "~A,~N");\r
-c$.arrayCopyII = Clazz.defineMethod (c$, "arrayCopyII", \r
-function (array, newLength) {\r
-var t = javajs.util.AU.newInt2 (newLength);\r
-if (array != null) {\r
-var oldLength = array.length;\r
-System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);\r
-}return t;\r
-}, "~A,~N");\r
-c$.arrayCopyPt = Clazz.defineMethod (c$, "arrayCopyPt", \r
-function (array, newLength) {\r
-if (newLength < 0) newLength = array.length;\r
-var t =  new Array (newLength);\r
-if (array != null) {\r
-var oldLength = array.length;\r
-System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);\r
-}return t;\r
-}, "~A,~N");\r
-c$.arrayCopyF = Clazz.defineMethod (c$, "arrayCopyF", \r
-function (array, newLength) {\r
-if (newLength < 0) newLength = array.length;\r
-var t =  Clazz.newFloatArray (newLength, 0);\r
-if (array != null) {\r
-var oldLength = array.length;\r
-System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);\r
-}return t;\r
-}, "~A,~N");\r
-c$.arrayCopyI = Clazz.defineMethod (c$, "arrayCopyI", \r
-function (array, newLength) {\r
-if (newLength < 0) newLength = array.length;\r
-var t =  Clazz.newIntArray (newLength, 0);\r
-if (array != null) {\r
-var oldLength = array.length;\r
-System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);\r
-}return t;\r
-}, "~A,~N");\r
-c$.arrayCopyRangeI = Clazz.defineMethod (c$, "arrayCopyRangeI", \r
-function (array, i0, n) {\r
-if (array == null) return null;\r
-var oldLength = array.length;\r
-if (n == -1) n = oldLength;\r
-if (n == -2) n = Clazz.doubleToInt (oldLength / 2);\r
-n = n - i0;\r
-var t =  Clazz.newIntArray (n, 0);\r
-System.arraycopy (array, i0, t, 0, n);\r
-return t;\r
-}, "~A,~N,~N");\r
-c$.arrayCopyRangeRevI = Clazz.defineMethod (c$, "arrayCopyRangeRevI", \r
-function (array, i0, n) {\r
-if (array == null) return null;\r
-var t = javajs.util.AU.arrayCopyRangeI (array, i0, n);\r
-if (n < 0) n = array.length;\r
-for (var i = Clazz.doubleToInt (n / 2); --i >= 0; ) javajs.util.AU.swapInt (t, i, n - 1 - i);\r
-\r
-return t;\r
-}, "~A,~N,~N");\r
-c$.arrayCopyShort = Clazz.defineMethod (c$, "arrayCopyShort", \r
-function (array, newLength) {\r
-if (newLength < 0) newLength = array.length;\r
-var t =  Clazz.newShortArray (newLength, 0);\r
-if (array != null) {\r
-var oldLength = array.length;\r
-System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);\r
-}return t;\r
-}, "~A,~N");\r
-c$.arrayCopyByte = Clazz.defineMethod (c$, "arrayCopyByte", \r
-function (array, newLength) {\r
-if (newLength < 0) newLength = array.length;\r
-var t =  Clazz.newByteArray (newLength, 0);\r
-if (array != null) {\r
-var oldLength = array.length;\r
-System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);\r
-}return t;\r
-}, "~A,~N");\r
-c$.arrayCopyBool = Clazz.defineMethod (c$, "arrayCopyBool", \r
-function (array, newLength) {\r
-if (newLength < 0) newLength = array.length;\r
-var t =  Clazz.newBooleanArray (newLength, false);\r
-if (array != null) {\r
-var oldLength = array.length;\r
-System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);\r
-}return t;\r
-}, "~A,~N");\r
-c$.swapInt = Clazz.defineMethod (c$, "swapInt", \r
-function (array, indexA, indexB) {\r
-var t = array[indexA];\r
-array[indexA] = array[indexB];\r
-array[indexB] = t;\r
-}, "~A,~N,~N");\r
-c$.dumpArray = Clazz.defineMethod (c$, "dumpArray", \r
-function (msg, A, x1, x2, y1, y2) {\r
-var s = "dumpArray: " + msg + "\n";\r
-for (var x = x1; x <= x2; x++) s += "\t*" + x + "*";\r
-\r
-for (var y = y2; y >= y1; y--) {\r
-s += "\n*" + y + "*";\r
-for (var x = x1; x <= x2; x++) s += "\t" + (x < A.length && y < A[x].length ? A[x][y] : NaN);\r
-\r
-}\r
-return s;\r
-}, "~S,~A,~N,~N,~N,~N");\r
-c$.dumpIntArray = Clazz.defineMethod (c$, "dumpIntArray", \r
-function (A, n) {\r
-var str = "";\r
-for (var i = 0; i < n; i++) str += " " + A[i];\r
-\r
-return str;\r
-}, "~A,~N");\r
-c$.sortedItem = Clazz.defineMethod (c$, "sortedItem", \r
-function (v, n) {\r
-if (v.size () == 0) return null;\r
-if (v.size () == 1) return v.get (0);\r
-var keys = v.toArray ( new Array (v.size ()));\r
-java.util.Arrays.sort (keys);\r
-return keys[n % keys.length];\r
-}, "javajs.util.Lst,~N");\r
-c$.createArrayOfArrayList = Clazz.defineMethod (c$, "createArrayOfArrayList", \r
-function (size) {\r
-return  new Array (size);\r
-}, "~N");\r
-c$.createArrayOfHashtable = Clazz.defineMethod (c$, "createArrayOfHashtable", \r
-function (size) {\r
-return  new Array (size);\r
-}, "~N");\r
-c$.swap = Clazz.defineMethod (c$, "swap", \r
-function (o, i, j) {\r
-var oi = o[i];\r
-o[i] = o[j];\r
-o[j] = oi;\r
-}, "~A,~N,~N");\r
-c$.newFloat2 = Clazz.defineMethod (c$, "newFloat2", \r
-function (n) {\r
-{\r
-return Clazz.newArray(n, null);\r
-}}, "~N");\r
-c$.newInt2 = Clazz.defineMethod (c$, "newInt2", \r
-function (n) {\r
-{\r
-return Clazz.newArray(n, null);\r
-}}, "~N");\r
-c$.newInt3 = Clazz.defineMethod (c$, "newInt3", \r
-function (nx, ny) {\r
-{\r
-return Clazz.newArray(nx, null);\r
-}}, "~N,~N");\r
-c$.newFloat3 = Clazz.defineMethod (c$, "newFloat3", \r
-function (nx, ny) {\r
-{\r
-return Clazz.newArray(nx, null);\r
-}}, "~N,~N");\r
-c$.newInt4 = Clazz.defineMethod (c$, "newInt4", \r
-function (n) {\r
-{\r
-return Clazz.newArray(n, null);\r
-}}, "~N");\r
-c$.newShort2 = Clazz.defineMethod (c$, "newShort2", \r
-function (n) {\r
-{\r
-return Clazz.newArray(n, null);\r
-}}, "~N");\r
-c$.newByte2 = Clazz.defineMethod (c$, "newByte2", \r
-function (n) {\r
-{\r
-return Clazz.newArray(n, null);\r
-}}, "~N");\r
-c$.newDouble2 = Clazz.defineMethod (c$, "newDouble2", \r
-function (n) {\r
-{\r
-return Clazz.newArray(n, null);\r
-}}, "~N");\r
-c$.removeMapKeys = Clazz.defineMethod (c$, "removeMapKeys", \r
-function (map, root) {\r
-var list =  new javajs.util.Lst ();\r
-for (var key, $key = map.keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) if (key.startsWith (root)) list.addLast (key);\r
-\r
-for (var i = list.size (); --i >= 0; ) map.remove (list.get (i));\r
-\r
-return list.size ();\r
-}, "java.util.Map,~S");\r
-c$.isAS = Clazz.defineMethod (c$, "isAS", \r
-function (x) {\r
-{\r
-return Clazz.isAS(x);\r
-}}, "~O");\r
-c$.isASS = Clazz.defineMethod (c$, "isASS", \r
-function (x) {\r
-{\r
-return Clazz.isASS(x);\r
-}}, "~O");\r
-c$.isAP = Clazz.defineMethod (c$, "isAP", \r
-function (x) {\r
-{\r
-return Clazz.isAP(x);\r
-}}, "~O");\r
-c$.isAF = Clazz.defineMethod (c$, "isAF", \r
-function (x) {\r
-{\r
-return Clazz.isAF(x);\r
-}}, "~O");\r
-c$.isAFloat = Clazz.defineMethod (c$, "isAFloat", \r
-function (x) {\r
-{\r
-return Clazz.isAFloat(x);\r
-}}, "~O");\r
-c$.isAD = Clazz.defineMethod (c$, "isAD", \r
-function (x) {\r
-{\r
-return Clazz.isAF(x);\r
-}}, "~O");\r
-c$.isADD = Clazz.defineMethod (c$, "isADD", \r
-function (x) {\r
-{\r
-return Clazz.isAFF(x);\r
-}}, "~O");\r
-c$.isAB = Clazz.defineMethod (c$, "isAB", \r
-function (x) {\r
-{\r
-return Clazz.isAI(x);\r
-}}, "~O");\r
-c$.isAI = Clazz.defineMethod (c$, "isAI", \r
-function (x) {\r
-{\r
-return Clazz.isAI(x);\r
-}}, "~O");\r
-c$.isAII = Clazz.defineMethod (c$, "isAII", \r
-function (x) {\r
-{\r
-return Clazz.isAII(x);\r
-}}, "~O");\r
-c$.isAFF = Clazz.defineMethod (c$, "isAFF", \r
-function (x) {\r
-{\r
-return Clazz.isAFF(x);\r
-}}, "~O");\r
-c$.isAFFF = Clazz.defineMethod (c$, "isAFFF", \r
-function (x) {\r
-{\r
-return Clazz.isAFFF(x);\r
-}}, "~O");\r
-c$.ensureSignedBytes = Clazz.defineMethod (c$, "ensureSignedBytes", \r
-function (b) {\r
-{\r
-for (var i = b.length; --i >= 0;) {\r
-var j = b[i] & 0xFF;\r
-if (j >= 0x80) j -= 0x100;\r
-b[i] = j;\r
-}\r
-}}, "~A");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (null, "javajs.util.AU", ["java.util.Arrays", "javajs.util.Lst"], function () {
+c$ = Clazz.declareType (javajs.util, "AU");
+c$.ensureLength = Clazz.defineMethod (c$, "ensureLength", 
+function (array, minimumLength) {
+if (array != null && javajs.util.AU.getLength (array) >= minimumLength) return array;
+return javajs.util.AU.arrayCopyObject (array, minimumLength);
+}, "~O,~N");
+c$.ensureLengthS = Clazz.defineMethod (c$, "ensureLengthS", 
+function (array, minimumLength) {
+if (array != null && array.length >= minimumLength) return array;
+return javajs.util.AU.arrayCopyS (array, minimumLength);
+}, "~A,~N");
+c$.ensureLengthA = Clazz.defineMethod (c$, "ensureLengthA", 
+function (array, minimumLength) {
+if (array != null && array.length >= minimumLength) return array;
+return javajs.util.AU.arrayCopyF (array, minimumLength);
+}, "~A,~N");
+c$.ensureLengthI = Clazz.defineMethod (c$, "ensureLengthI", 
+function (array, minimumLength) {
+if (array != null && array.length >= minimumLength) return array;
+return javajs.util.AU.arrayCopyI (array, minimumLength);
+}, "~A,~N");
+c$.ensureLengthShort = Clazz.defineMethod (c$, "ensureLengthShort", 
+function (array, minimumLength) {
+if (array != null && array.length >= minimumLength) return array;
+return javajs.util.AU.arrayCopyShort (array, minimumLength);
+}, "~A,~N");
+c$.ensureLengthByte = Clazz.defineMethod (c$, "ensureLengthByte", 
+function (array, minimumLength) {
+if (array != null && array.length >= minimumLength) return array;
+return javajs.util.AU.arrayCopyByte (array, minimumLength);
+}, "~A,~N");
+c$.doubleLength = Clazz.defineMethod (c$, "doubleLength", 
+function (array) {
+return javajs.util.AU.arrayCopyObject (array, (array == null ? 16 : 2 * javajs.util.AU.getLength (array)));
+}, "~O");
+c$.doubleLengthS = Clazz.defineMethod (c$, "doubleLengthS", 
+function (array) {
+return javajs.util.AU.arrayCopyS (array, (array == null ? 16 : 2 * array.length));
+}, "~A");
+c$.doubleLengthF = Clazz.defineMethod (c$, "doubleLengthF", 
+function (array) {
+return javajs.util.AU.arrayCopyF (array, (array == null ? 16 : 2 * array.length));
+}, "~A");
+c$.doubleLengthI = Clazz.defineMethod (c$, "doubleLengthI", 
+function (array) {
+return javajs.util.AU.arrayCopyI (array, (array == null ? 16 : 2 * array.length));
+}, "~A");
+c$.doubleLengthShort = Clazz.defineMethod (c$, "doubleLengthShort", 
+function (array) {
+return javajs.util.AU.arrayCopyShort (array, (array == null ? 16 : 2 * array.length));
+}, "~A");
+c$.doubleLengthByte = Clazz.defineMethod (c$, "doubleLengthByte", 
+function (array) {
+return javajs.util.AU.arrayCopyByte (array, (array == null ? 16 : 2 * array.length));
+}, "~A");
+c$.doubleLengthBool = Clazz.defineMethod (c$, "doubleLengthBool", 
+function (array) {
+return javajs.util.AU.arrayCopyBool (array, (array == null ? 16 : 2 * array.length));
+}, "~A");
+c$.deleteElements = Clazz.defineMethod (c$, "deleteElements", 
+function (array, firstElement, nElements) {
+if (nElements == 0 || array == null) return array;
+var oldLength = javajs.util.AU.getLength (array);
+if (firstElement >= oldLength) return array;
+var n = oldLength - (firstElement + nElements);
+if (n < 0) n = 0;
+var t = javajs.util.AU.newInstanceO (array, firstElement + n);
+if (firstElement > 0) System.arraycopy (array, 0, t, 0, firstElement);
+if (n > 0) System.arraycopy (array, firstElement + nElements, t, firstElement, n);
+return t;
+}, "~O,~N,~N");
+c$.arrayCopyObject = Clazz.defineMethod (c$, "arrayCopyObject", 
+function (array, newLength) {
+if (array == null) {
+return null;
+}var oldLength = javajs.util.AU.getLength (array);
+if (newLength == oldLength) return array;
+var t = javajs.util.AU.newInstanceO (array, newLength);
+System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);
+return t;
+}, "~O,~N");
+c$.newInstanceO = Clazz.defineMethod (c$, "newInstanceO", 
+($fz = function (array, n) {
+{
+if (!array.getClass().getComponentType)
+return new Array(n);
+}}, $fz.isPrivate = true, $fz), "~O,~N");
+c$.getLength = Clazz.defineMethod (c$, "getLength", 
+function (array) {
+{
+return array.length
+}}, "~O");
+c$.arrayCopyS = Clazz.defineMethod (c$, "arrayCopyS", 
+function (array, newLength) {
+if (newLength < 0) newLength = array.length;
+var t =  new Array (newLength);
+if (array != null) {
+var oldLength = array.length;
+System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);
+}return t;
+}, "~A,~N");
+c$.arrayCopyII = Clazz.defineMethod (c$, "arrayCopyII", 
+function (array, newLength) {
+var t = javajs.util.AU.newInt2 (newLength);
+if (array != null) {
+var oldLength = array.length;
+System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);
+}return t;
+}, "~A,~N");
+c$.arrayCopyPt = Clazz.defineMethod (c$, "arrayCopyPt", 
+function (array, newLength) {
+if (newLength < 0) newLength = array.length;
+var t =  new Array (newLength);
+if (array != null) {
+var oldLength = array.length;
+System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);
+}return t;
+}, "~A,~N");
+c$.arrayCopyF = Clazz.defineMethod (c$, "arrayCopyF", 
+function (array, newLength) {
+if (newLength < 0) newLength = array.length;
+var t =  Clazz.newFloatArray (newLength, 0);
+if (array != null) {
+var oldLength = array.length;
+System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);
+}return t;
+}, "~A,~N");
+c$.arrayCopyI = Clazz.defineMethod (c$, "arrayCopyI", 
+function (array, newLength) {
+if (newLength < 0) newLength = array.length;
+var t =  Clazz.newIntArray (newLength, 0);
+if (array != null) {
+var oldLength = array.length;
+System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);
+}return t;
+}, "~A,~N");
+c$.arrayCopyRangeI = Clazz.defineMethod (c$, "arrayCopyRangeI", 
+function (array, i0, n) {
+if (array == null) return null;
+var oldLength = array.length;
+if (n == -1) n = oldLength;
+if (n == -2) n = Clazz.doubleToInt (oldLength / 2);
+n = n - i0;
+var t =  Clazz.newIntArray (n, 0);
+System.arraycopy (array, i0, t, 0, n);
+return t;
+}, "~A,~N,~N");
+c$.arrayCopyRangeRevI = Clazz.defineMethod (c$, "arrayCopyRangeRevI", 
+function (array, i0, n) {
+if (array == null) return null;
+var t = javajs.util.AU.arrayCopyRangeI (array, i0, n);
+if (n < 0) n = array.length;
+for (var i = Clazz.doubleToInt (n / 2); --i >= 0; ) javajs.util.AU.swapInt (t, i, n - 1 - i);
+
+return t;
+}, "~A,~N,~N");
+c$.arrayCopyShort = Clazz.defineMethod (c$, "arrayCopyShort", 
+function (array, newLength) {
+if (newLength < 0) newLength = array.length;
+var t =  Clazz.newShortArray (newLength, 0);
+if (array != null) {
+var oldLength = array.length;
+System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);
+}return t;
+}, "~A,~N");
+c$.arrayCopyByte = Clazz.defineMethod (c$, "arrayCopyByte", 
+function (array, newLength) {
+if (newLength < 0) newLength = array.length;
+var t =  Clazz.newByteArray (newLength, 0);
+if (array != null) {
+var oldLength = array.length;
+System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);
+}return t;
+}, "~A,~N");
+c$.arrayCopyBool = Clazz.defineMethod (c$, "arrayCopyBool", 
+function (array, newLength) {
+if (newLength < 0) newLength = array.length;
+var t =  Clazz.newBooleanArray (newLength, false);
+if (array != null) {
+var oldLength = array.length;
+System.arraycopy (array, 0, t, 0, oldLength < newLength ? oldLength : newLength);
+}return t;
+}, "~A,~N");
+c$.swapInt = Clazz.defineMethod (c$, "swapInt", 
+function (array, indexA, indexB) {
+var t = array[indexA];
+array[indexA] = array[indexB];
+array[indexB] = t;
+}, "~A,~N,~N");
+c$.dumpArray = Clazz.defineMethod (c$, "dumpArray", 
+function (msg, A, x1, x2, y1, y2) {
+var s = "dumpArray: " + msg + "\n";
+for (var x = x1; x <= x2; x++) s += "\t*" + x + "*";
+
+for (var y = y2; y >= y1; y--) {
+s += "\n*" + y + "*";
+for (var x = x1; x <= x2; x++) s += "\t" + (x < A.length && y < A[x].length ? A[x][y] : NaN);
+
+}
+return s;
+}, "~S,~A,~N,~N,~N,~N");
+c$.dumpIntArray = Clazz.defineMethod (c$, "dumpIntArray", 
+function (A, n) {
+var str = "";
+for (var i = 0; i < n; i++) str += " " + A[i];
+
+return str;
+}, "~A,~N");
+c$.sortedItem = Clazz.defineMethod (c$, "sortedItem", 
+function (v, n) {
+if (v.size () == 0) return null;
+if (v.size () == 1) return v.get (0);
+var keys = v.toArray ( new Array (v.size ()));
+java.util.Arrays.sort (keys);
+return keys[n % keys.length];
+}, "javajs.util.Lst,~N");
+c$.createArrayOfArrayList = Clazz.defineMethod (c$, "createArrayOfArrayList", 
+function (size) {
+return  new Array (size);
+}, "~N");
+c$.createArrayOfHashtable = Clazz.defineMethod (c$, "createArrayOfHashtable", 
+function (size) {
+return  new Array (size);
+}, "~N");
+c$.swap = Clazz.defineMethod (c$, "swap", 
+function (o, i, j) {
+var oi = o[i];
+o[i] = o[j];
+o[j] = oi;
+}, "~A,~N,~N");
+c$.newFloat2 = Clazz.defineMethod (c$, "newFloat2", 
+function (n) {
+{
+return Clazz.newArray(n, null);
+}}, "~N");
+c$.newInt2 = Clazz.defineMethod (c$, "newInt2", 
+function (n) {
+{
+return Clazz.newArray(n, null);
+}}, "~N");
+c$.newInt3 = Clazz.defineMethod (c$, "newInt3", 
+function (nx, ny) {
+{
+return Clazz.newArray(nx, null);
+}}, "~N,~N");
+c$.newFloat3 = Clazz.defineMethod (c$, "newFloat3", 
+function (nx, ny) {
+{
+return Clazz.newArray(nx, null);
+}}, "~N,~N");
+c$.newInt4 = Clazz.defineMethod (c$, "newInt4", 
+function (n) {
+{
+return Clazz.newArray(n, null);
+}}, "~N");
+c$.newShort2 = Clazz.defineMethod (c$, "newShort2", 
+function (n) {
+{
+return Clazz.newArray(n, null);
+}}, "~N");
+c$.newByte2 = Clazz.defineMethod (c$, "newByte2", 
+function (n) {
+{
+return Clazz.newArray(n, null);
+}}, "~N");
+c$.newDouble2 = Clazz.defineMethod (c$, "newDouble2", 
+function (n) {
+{
+return Clazz.newArray(n, null);
+}}, "~N");
+c$.removeMapKeys = Clazz.defineMethod (c$, "removeMapKeys", 
+function (map, root) {
+var list =  new javajs.util.Lst ();
+for (var key, $key = map.keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) if (key.startsWith (root)) list.addLast (key);
+
+for (var i = list.size (); --i >= 0; ) map.remove (list.get (i));
+
+return list.size ();
+}, "java.util.Map,~S");
+c$.isAS = Clazz.defineMethod (c$, "isAS", 
+function (x) {
+{
+return Clazz.isAS(x);
+}}, "~O");
+c$.isASS = Clazz.defineMethod (c$, "isASS", 
+function (x) {
+{
+return Clazz.isASS(x);
+}}, "~O");
+c$.isAP = Clazz.defineMethod (c$, "isAP", 
+function (x) {
+{
+return Clazz.isAP(x);
+}}, "~O");
+c$.isAF = Clazz.defineMethod (c$, "isAF", 
+function (x) {
+{
+return Clazz.isAF(x);
+}}, "~O");
+c$.isAFloat = Clazz.defineMethod (c$, "isAFloat", 
+function (x) {
+{
+return Clazz.isAFloat(x);
+}}, "~O");
+c$.isAD = Clazz.defineMethod (c$, "isAD", 
+function (x) {
+{
+return Clazz.isAF(x);
+}}, "~O");
+c$.isADD = Clazz.defineMethod (c$, "isADD", 
+function (x) {
+{
+return Clazz.isAFF(x);
+}}, "~O");
+c$.isAB = Clazz.defineMethod (c$, "isAB", 
+function (x) {
+{
+return Clazz.isAI(x);
+}}, "~O");
+c$.isAI = Clazz.defineMethod (c$, "isAI", 
+function (x) {
+{
+return Clazz.isAI(x);
+}}, "~O");
+c$.isAII = Clazz.defineMethod (c$, "isAII", 
+function (x) {
+{
+return Clazz.isAII(x);
+}}, "~O");
+c$.isAFF = Clazz.defineMethod (c$, "isAFF", 
+function (x) {
+{
+return Clazz.isAFF(x);
+}}, "~O");
+c$.isAFFF = Clazz.defineMethod (c$, "isAFFF", 
+function (x) {
+{
+return Clazz.isAFFF(x);
+}}, "~O");
+c$.ensureSignedBytes = Clazz.defineMethod (c$, "ensureSignedBytes", 
+function (b) {
+{
+for (var i = b.length; --i >= 0;) {
+var j = b[i] & 0xFF;
+if (j >= 0x80) j -= 0x100;
+b[i] = j;
+}
+}}, "~A");
+});
index 41e35ef..50f227d 100644 (file)
@@ -1,39 +1,39 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["java.net.URLConnection"], "javajs.util.AjaxURLConnection", ["javajs.util.AU", "$.Rdr", "$.SB"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.bytesOut = null;\r
-this.postOut = "";\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "AjaxURLConnection", java.net.URLConnection);\r
-Clazz.defineMethod (c$, "doAjax", \r
-($fz = function () {\r
-var jmol = null;\r
-{\r
-jmol = Jmol;\r
-}return jmol._doAjax (this.url, this.postOut, this.bytesOut);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "connect", \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "outputBytes", \r
-function (bytes) {\r
-this.bytesOut = bytes;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "outputString", \r
-function (post) {\r
-this.postOut = post;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "getInputStream", \r
-function () {\r
-var is = null;\r
-var o = this.doAjax ();\r
-if (javajs.util.AU.isAB (o)) is = javajs.util.Rdr.getBIS (o);\r
- else if (Clazz.instanceOf (o, javajs.util.SB)) is = javajs.util.Rdr.getBIS (javajs.util.Rdr.getBytesFromSB (o));\r
- else if (Clazz.instanceOf (o, String)) is = javajs.util.Rdr.getBIS ((o).getBytes ());\r
-return is;\r
-});\r
-Clazz.defineMethod (c$, "getContents", \r
-function () {\r
-return this.doAjax ();\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["java.net.URLConnection"], "javajs.util.AjaxURLConnection", ["javajs.util.AU", "$.Rdr", "$.SB"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.bytesOut = null;
+this.postOut = "";
+Clazz.instantialize (this, arguments);
+}, javajs.util, "AjaxURLConnection", java.net.URLConnection);
+Clazz.defineMethod (c$, "doAjax", 
+($fz = function () {
+var jmol = null;
+{
+jmol = Jmol;
+}return jmol._doAjax (this.url, this.postOut, this.bytesOut);
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "connect", 
+function () {
+});
+Clazz.defineMethod (c$, "outputBytes", 
+function (bytes) {
+this.bytesOut = bytes;
+}, "~A");
+Clazz.defineMethod (c$, "outputString", 
+function (post) {
+this.postOut = post;
+}, "~S");
+Clazz.overrideMethod (c$, "getInputStream", 
+function () {
+var is = null;
+var o = this.doAjax ();
+if (javajs.util.AU.isAB (o)) is = javajs.util.Rdr.getBIS (o);
+ else if (Clazz.instanceOf (o, javajs.util.SB)) is = javajs.util.Rdr.getBIS (javajs.util.Rdr.getBytesFromSB (o));
+ else if (Clazz.instanceOf (o, String)) is = javajs.util.Rdr.getBIS ((o).getBytes ());
+return is;
+});
+Clazz.defineMethod (c$, "getContents", 
+function () {
+return this.doAjax ();
+});
+});
index 600c417..59628d6 100644 (file)
@@ -1,34 +1,34 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["java.net.URLStreamHandler"], "javajs.util.AjaxURLStreamHandler", ["javajs.util.AjaxURLConnection", "$.SB"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.protocol = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "AjaxURLStreamHandler", java.net.URLStreamHandler);\r
-Clazz.makeConstructor (c$, \r
-function (protocol) {\r
-Clazz.superConstructor (this, javajs.util.AjaxURLStreamHandler, []);\r
-this.protocol = protocol;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "openConnection", \r
-function (url) {\r
-return  new javajs.util.AjaxURLConnection (url);\r
-}, "java.net.URL");\r
-Clazz.overrideMethod (c$, "toExternalForm", \r
-function (u) {\r
-var result =  new javajs.util.SB ();\r
-result.append (u.getProtocol ());\r
-result.append (":");\r
-if (u.getAuthority () != null && u.getAuthority ().length > 0) {\r
-result.append ("//");\r
-result.append (u.getAuthority ());\r
-}if (u.getPath () != null) {\r
-result.append (u.getPath ());\r
-}if (u.getQuery () != null) {\r
-result.append ("?");\r
-result.append (u.getQuery ());\r
-}if (u.getRef () != null) {\r
-result.append ("#");\r
-result.append (u.getRef ());\r
-}return result.toString ();\r
-}, "java.net.URL");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["java.net.URLStreamHandler"], "javajs.util.AjaxURLStreamHandler", ["javajs.util.AjaxURLConnection", "$.SB"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.protocol = null;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "AjaxURLStreamHandler", java.net.URLStreamHandler);
+Clazz.makeConstructor (c$, 
+function (protocol) {
+Clazz.superConstructor (this, javajs.util.AjaxURLStreamHandler, []);
+this.protocol = protocol;
+}, "~S");
+Clazz.defineMethod (c$, "openConnection", 
+function (url) {
+return  new javajs.util.AjaxURLConnection (url);
+}, "java.net.URL");
+Clazz.overrideMethod (c$, "toExternalForm", 
+function (u) {
+var result =  new javajs.util.SB ();
+result.append (u.getProtocol ());
+result.append (":");
+if (u.getAuthority () != null && u.getAuthority ().length > 0) {
+result.append ("//");
+result.append (u.getAuthority ());
+}if (u.getPath () != null) {
+result.append (u.getPath ());
+}if (u.getQuery () != null) {
+result.append ("?");
+result.append (u.getQuery ());
+}if (u.getRef () != null) {
+result.append ("#");
+result.append (u.getRef ());
+}return result.toString ();
+}, "java.net.URL");
+});
index 88452ce..e51bb4e 100644 (file)
@@ -1,16 +1,16 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["java.net.URLStreamHandlerFactory", "java.util.Hashtable"], "javajs.util.AjaxURLStreamHandlerFactory", ["javajs.util.AjaxURLStreamHandler"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.htFactories = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "AjaxURLStreamHandlerFactory", null, java.net.URLStreamHandlerFactory);\r
-Clazz.prepareFields (c$, function () {\r
-this.htFactories =  new java.util.Hashtable ();\r
-});\r
-Clazz.overrideMethod (c$, "createURLStreamHandler", \r
-function (protocol) {\r
-var fac = this.htFactories.get (protocol);\r
-if (fac == null) this.htFactories.put (protocol, fac =  new javajs.util.AjaxURLStreamHandler (protocol));\r
-return (fac.protocol == null ? null : fac);\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["java.net.URLStreamHandlerFactory", "java.util.Hashtable"], "javajs.util.AjaxURLStreamHandlerFactory", ["javajs.util.AjaxURLStreamHandler"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.htFactories = null;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "AjaxURLStreamHandlerFactory", null, java.net.URLStreamHandlerFactory);
+Clazz.prepareFields (c$, function () {
+this.htFactories =  new java.util.Hashtable ();
+});
+Clazz.overrideMethod (c$, "createURLStreamHandler", 
+function (protocol) {
+var fac = this.htFactories.get (protocol);
+if (fac == null) this.htFactories.put (protocol, fac =  new javajs.util.AjaxURLStreamHandler (protocol));
+return (fac.protocol == null ? null : fac);
+}, "~S");
+});
index 89f64c3..532e8a9 100644 (file)
@@ -1,31 +1,31 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.util.DataReader"], "javajs.util.ArrayDataReader", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.data = null;\r
-this.pt = 0;\r
-this.len = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "ArrayDataReader", javajs.util.DataReader);\r
-Clazz.overrideMethod (c$, "setData", \r
-function (data) {\r
-this.data = data;\r
-this.len = this.data.length;\r
-return this;\r
-}, "~O");\r
-Clazz.defineMethod (c$, "read", \r
-function (buf, off, len) {\r
-return this.readBuf (buf, off, len);\r
-}, "~A,~N,~N");\r
-Clazz.defineMethod (c$, "readLine", \r
-function () {\r
-return (this.pt < this.len ? this.data[this.pt++] : null);\r
-});\r
-Clazz.defineMethod (c$, "mark", \r
-function (ptr) {\r
-this.ptMark = this.pt;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "reset", \r
-function () {\r
-this.pt = this.ptMark;\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.util.DataReader"], "javajs.util.ArrayDataReader", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.data = null;
+this.pt = 0;
+this.len = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "ArrayDataReader", javajs.util.DataReader);
+Clazz.overrideMethod (c$, "setData", 
+function (data) {
+this.data = data;
+this.len = this.data.length;
+return this;
+}, "~O");
+Clazz.defineMethod (c$, "read", 
+function (buf, off, len) {
+return this.readBuf (buf, off, len);
+}, "~A,~N,~N");
+Clazz.defineMethod (c$, "readLine", 
+function () {
+return (this.pt < this.len ? this.data[this.pt++] : null);
+});
+Clazz.defineMethod (c$, "mark", 
+function (ptr) {
+this.ptMark = this.pt;
+}, "~N");
+Clazz.overrideMethod (c$, "reset", 
+function () {
+this.pt = this.ptMark;
+});
+});
index 33ba55d..866e432 100644 (file)
@@ -1,27 +1,27 @@
-Clazz.declarePackage ("javajs.util");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.data = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "BArray");\r
-Clazz.makeConstructor (c$, \r
-function (data) {\r
-this.data = data;\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "equals", \r
-function (o) {\r
-if (Clazz.instanceOf (o, javajs.util.BArray)) {\r
-var d = (o).data;\r
-if (d.length == this.data.length) {\r
-for (var i = 0; i < d.length; i++) if (d[i] != this.data[i]) return false;\r
-\r
-return true;\r
-}}return false;\r
-}, "~O");\r
-Clazz.defineMethod (c$, "hashCode", \r
-function () {\r
-return this.data.hashCode ();\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return  String.instantialize (this.data);\r
-});\r
+Clazz.declarePackage ("javajs.util");
+c$ = Clazz.decorateAsClass (function () {
+this.data = null;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "BArray");
+Clazz.makeConstructor (c$, 
+function (data) {
+this.data = data;
+}, "~A");
+Clazz.overrideMethod (c$, "equals", 
+function (o) {
+if (Clazz.instanceOf (o, javajs.util.BArray)) {
+var d = (o).data;
+if (d.length == this.data.length) {
+for (var i = 0; i < d.length; i++) if (d[i] != this.data[i]) return false;
+
+return true;
+}}return false;
+}, "~O");
+Clazz.defineMethod (c$, "hashCode", 
+function () {
+return this.data.hashCode ();
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return  String.instantialize (this.data);
+});
index ec20ff4..cc5ed5a 100644 (file)
@@ -1,65 +1,65 @@
-Clazz.declarePackage ("javajs.util");\r
-c$ = Clazz.declareType (javajs.util, "BC");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-c$.bytesToFloat = Clazz.defineMethod (c$, "bytesToFloat", \r
-function (bytes, j, isBigEndian) {\r
-return javajs.util.BC.intToFloat (javajs.util.BC.bytesToInt (bytes, j, isBigEndian));\r
-}, "~A,~N,~B");\r
-c$.bytesToInt = Clazz.defineMethod (c$, "bytesToInt", \r
-function (bytes, j, isBigEndian) {\r
-var n = (isBigEndian ? (bytes[j + 3] & 0xff) | (bytes[j + 2] & 0xff) << 8 | (bytes[j + 1] & 0xff) << 16 | (bytes[j] & 0xff) << 24 : (bytes[j++] & 0xff) | (bytes[j++] & 0xff) << 8 | (bytes[j++] & 0xff) << 16 | (bytes[j++] & 0xff) << 24);\r
-{\r
-return (n > 0x7FFFFFFF ? n - 0x100000000 : n);\r
-}}, "~A,~N,~B");\r
-c$.intToFloat = Clazz.defineMethod (c$, "intToFloat", \r
-function (x) {\r
-{\r
-if (x == 0) return 0;\r
-var o = javajs.util.BC;\r
-if (o.fracIEEE == null)\r
-o.setFracIEEE();\r
-var m = ((x & 0x7F800000) >> 23);\r
-return ((x & 0x80000000) == 0 ? 1 : -1) * o.shiftIEEE((x & 0x7FFFFF) | 0x800000, m - 149);\r
-}}, "~N");\r
-c$.bytesToDoubleToFloat = Clazz.defineMethod (c$, "bytesToDoubleToFloat", \r
-function (bytes, j, isBigEndian) {\r
-{\r
-if (javajs.util.BC.fracIEEE == null) javajs.util.BC.setFracIEEE ();\r
-{\r
-var o = javajs.util.BC;\r
-var b1, b2, b3, b4, b5;\r
-if (isBigEndian) {\r
-b1 = bytes[j] & 0xFF;\r
-b2 = bytes[j + 1] & 0xFF;\r
-b3 = bytes[j + 2] & 0xFF;\r
-b4 = bytes[j + 3] & 0xFF;\r
-b5 = bytes[j + 4] & 0xFF;\r
-} else {\r
-b1 = bytes[j + 7] & 0xFF;\r
-b2 = bytes[j + 6] & 0xFF;\r
-b3 = bytes[j + 5] & 0xFF;\r
-b4 = bytes[j + 4] & 0xFF;\r
-b5 = bytes[j + 3] & 0xFF;\r
-}\r
-var s = ((b1 & 0x80) == 0 ? 1 : -1);\r
-var e = (((b1 & 0x7F) << 4) | (b2 >> 4)) - 1026;\r
-b2 = (b2 & 0xF) | 0x10;\r
-return s * (o.shiftIEEE(b2, e) + o.shiftIEEE(b3, e - 8) + o.shiftIEEE(b4, e - 16)\r
-+ o.shiftIEEE(b5, e - 24));\r
-}}}, "~A,~N,~B");\r
-c$.setFracIEEE = Clazz.defineMethod (c$, "setFracIEEE", \r
-($fz = function () {\r
-javajs.util.BC.fracIEEE =  Clazz.newFloatArray (270, 0);\r
-for (var i = 0; i < 270; i++) javajs.util.BC.fracIEEE[i] = Math.pow (2, i - 141);\r
-\r
-}, $fz.isPrivate = true, $fz));\r
-c$.shiftIEEE = Clazz.defineMethod (c$, "shiftIEEE", \r
-function (f, i) {\r
-if (f == 0 || i < -140) return 0;\r
-if (i > 128) return 3.4028235E38;\r
-return f * javajs.util.BC.fracIEEE[i + 140];\r
-}, "~N,~N");\r
-Clazz.defineStatics (c$,\r
-"fracIEEE", null);\r
+Clazz.declarePackage ("javajs.util");
+c$ = Clazz.declareType (javajs.util, "BC");
+Clazz.makeConstructor (c$, 
+function () {
+});
+c$.bytesToFloat = Clazz.defineMethod (c$, "bytesToFloat", 
+function (bytes, j, isBigEndian) {
+return javajs.util.BC.intToFloat (javajs.util.BC.bytesToInt (bytes, j, isBigEndian));
+}, "~A,~N,~B");
+c$.bytesToInt = Clazz.defineMethod (c$, "bytesToInt", 
+function (bytes, j, isBigEndian) {
+var n = (isBigEndian ? (bytes[j + 3] & 0xff) | (bytes[j + 2] & 0xff) << 8 | (bytes[j + 1] & 0xff) << 16 | (bytes[j] & 0xff) << 24 : (bytes[j++] & 0xff) | (bytes[j++] & 0xff) << 8 | (bytes[j++] & 0xff) << 16 | (bytes[j++] & 0xff) << 24);
+{
+return (n > 0x7FFFFFFF ? n - 0x100000000 : n);
+}}, "~A,~N,~B");
+c$.intToFloat = Clazz.defineMethod (c$, "intToFloat", 
+function (x) {
+{
+if (x == 0) return 0;
+var o = javajs.util.BC;
+if (o.fracIEEE == null)
+o.setFracIEEE();
+var m = ((x & 0x7F800000) >> 23);
+return ((x & 0x80000000) == 0 ? 1 : -1) * o.shiftIEEE((x & 0x7FFFFF) | 0x800000, m - 149);
+}}, "~N");
+c$.bytesToDoubleToFloat = Clazz.defineMethod (c$, "bytesToDoubleToFloat", 
+function (bytes, j, isBigEndian) {
+{
+if (javajs.util.BC.fracIEEE == null) javajs.util.BC.setFracIEEE ();
+{
+var o = javajs.util.BC;
+var b1, b2, b3, b4, b5;
+if (isBigEndian) {
+b1 = bytes[j] & 0xFF;
+b2 = bytes[j + 1] & 0xFF;
+b3 = bytes[j + 2] & 0xFF;
+b4 = bytes[j + 3] & 0xFF;
+b5 = bytes[j + 4] & 0xFF;
+} else {
+b1 = bytes[j + 7] & 0xFF;
+b2 = bytes[j + 6] & 0xFF;
+b3 = bytes[j + 5] & 0xFF;
+b4 = bytes[j + 4] & 0xFF;
+b5 = bytes[j + 3] & 0xFF;
+}
+var s = ((b1 & 0x80) == 0 ? 1 : -1);
+var e = (((b1 & 0x7F) << 4) | (b2 >> 4)) - 1026;
+b2 = (b2 & 0xF) | 0x10;
+return s * (o.shiftIEEE(b2, e) + o.shiftIEEE(b3, e - 8) + o.shiftIEEE(b4, e - 16)
++ o.shiftIEEE(b5, e - 24));
+}}}, "~A,~N,~B");
+c$.setFracIEEE = Clazz.defineMethod (c$, "setFracIEEE", 
+($fz = function () {
+javajs.util.BC.fracIEEE =  Clazz.newFloatArray (270, 0);
+for (var i = 0; i < 270; i++) javajs.util.BC.fracIEEE[i] = Math.pow (2, i - 141);
+
+}, $fz.isPrivate = true, $fz));
+c$.shiftIEEE = Clazz.defineMethod (c$, "shiftIEEE", 
+function (f, i) {
+if (f == 0 || i < -140) return 0;
+if (i > 128) return 3.4028235E38;
+return f * javajs.util.BC.fracIEEE[i + 140];
+}, "~N,~N");
+Clazz.defineStatics (c$,
+"fracIEEE", null);
index bc34911..5677631 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.api.JSONEncodable"], "javajs.util.BS", ["java.lang.IndexOutOfBoundsException", "$.NegativeArraySizeException", "javajs.util.PT", "$.SB"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.words = null;\r
-this.wordsInUse = 0;\r
-this.sizeIsSticky = false;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "BS", null, [Cloneable, javajs.api.JSONEncodable]);\r
-c$.wordIndex = Clazz.defineMethod (c$, "wordIndex", \r
-($fz = function (bitIndex) {\r
-return bitIndex >> 5;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "recalculateWordsInUse", \r
-($fz = function () {\r
-var i;\r
-for (i = this.wordsInUse - 1; i >= 0; i--) if (this.words[i] != 0) break;\r
-\r
-this.wordsInUse = i + 1;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.initWords (32);\r
-this.sizeIsSticky = false;\r
-});\r
-c$.newN = Clazz.defineMethod (c$, "newN", \r
-function (nbits) {\r
-var bs =  new javajs.util.BS ();\r
-bs.init (nbits);\r
-return bs;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "init", \r
-($fz = function (nbits) {\r
-if (nbits < 0) throw  new NegativeArraySizeException ("nbits < 0: " + nbits);\r
-this.initWords (nbits);\r
-this.sizeIsSticky = true;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "initWords", \r
-($fz = function (nbits) {\r
-this.words =  Clazz.newIntArray (javajs.util.BS.wordIndex (nbits - 1) + 1, 0);\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "ensureCapacity", \r
-($fz = function (wordsRequired) {\r
-if (this.words.length < wordsRequired) {\r
-var request = Math.max (2 * this.words.length, wordsRequired);\r
-this.setLength (request);\r
-this.sizeIsSticky = false;\r
-}}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "expandTo", \r
-($fz = function (wordIndex) {\r
-var wordsRequired = wordIndex + 1;\r
-if (this.wordsInUse < wordsRequired) {\r
-this.ensureCapacity (wordsRequired);\r
-this.wordsInUse = wordsRequired;\r
-}}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "set", \r
-function (bitIndex) {\r
-if (bitIndex < 0) throw  new IndexOutOfBoundsException ("bitIndex < 0: " + bitIndex);\r
-var wordIndex = javajs.util.BS.wordIndex (bitIndex);\r
-this.expandTo (wordIndex);\r
-this.words[wordIndex] |= (1 << bitIndex);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setBitTo", \r
-function (bitIndex, value) {\r
-if (value) this.set (bitIndex);\r
- else this.clear (bitIndex);\r
-}, "~N,~B");\r
-Clazz.defineMethod (c$, "setBits", \r
-function (fromIndex, toIndex) {\r
-if (fromIndex == toIndex) return;\r
-var startWordIndex = javajs.util.BS.wordIndex (fromIndex);\r
-var endWordIndex = javajs.util.BS.wordIndex (toIndex - 1);\r
-this.expandTo (endWordIndex);\r
-var firstWordMask = -1 << fromIndex;\r
-var lastWordMask = -1 >>> -toIndex;\r
-if (startWordIndex == endWordIndex) {\r
-this.words[startWordIndex] |= (firstWordMask & lastWordMask);\r
-} else {\r
-this.words[startWordIndex] |= firstWordMask;\r
-for (var i = startWordIndex + 1; i < endWordIndex; i++) this.words[i] = -1;\r
-\r
-this.words[endWordIndex] |= lastWordMask;\r
-}}, "~N,~N");\r
-Clazz.defineMethod (c$, "clear", \r
-function (bitIndex) {\r
-if (bitIndex < 0) throw  new IndexOutOfBoundsException ("bitIndex < 0: " + bitIndex);\r
-var wordIndex = javajs.util.BS.wordIndex (bitIndex);\r
-if (wordIndex >= this.wordsInUse) return;\r
-this.words[wordIndex] &= ~(1 << bitIndex);\r
-this.recalculateWordsInUse ();\r
-}, "~N");\r
-Clazz.defineMethod (c$, "clearBits", \r
-function (fromIndex, toIndex) {\r
-if (fromIndex == toIndex) return;\r
-var startWordIndex = javajs.util.BS.wordIndex (fromIndex);\r
-if (startWordIndex >= this.wordsInUse) return;\r
-var endWordIndex = javajs.util.BS.wordIndex (toIndex - 1);\r
-if (endWordIndex >= this.wordsInUse) {\r
-toIndex = this.length ();\r
-endWordIndex = this.wordsInUse - 1;\r
-}var firstWordMask = -1 << fromIndex;\r
-var lastWordMask = -1 >>> -toIndex;\r
-if (startWordIndex == endWordIndex) {\r
-this.words[startWordIndex] &= ~(firstWordMask & lastWordMask);\r
-} else {\r
-this.words[startWordIndex] &= ~firstWordMask;\r
-for (var i = startWordIndex + 1; i < endWordIndex; i++) this.words[i] = 0;\r
-\r
-this.words[endWordIndex] &= ~lastWordMask;\r
-}this.recalculateWordsInUse ();\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "clearAll", \r
-function () {\r
-while (this.wordsInUse > 0) this.words[--this.wordsInUse] = 0;\r
-\r
-});\r
-Clazz.defineMethod (c$, "get", \r
-function (bitIndex) {\r
-if (bitIndex < 0) throw  new IndexOutOfBoundsException ("bitIndex < 0: " + bitIndex);\r
-var wordIndex = javajs.util.BS.wordIndex (bitIndex);\r
-return (wordIndex < this.wordsInUse) && ((this.words[wordIndex] & (1 << bitIndex)) != 0);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "nextSetBit", \r
-function (fromIndex) {\r
-if (fromIndex < 0) throw  new IndexOutOfBoundsException ("fromIndex < 0: " + fromIndex);\r
-var u = javajs.util.BS.wordIndex (fromIndex);\r
-if (u >= this.wordsInUse) return -1;\r
-var word = this.words[u] & (-1 << fromIndex);\r
-while (true) {\r
-if (word != 0) return (u * 32) + Integer.numberOfTrailingZeros (word);\r
-if (++u == this.wordsInUse) return -1;\r
-word = this.words[u];\r
-}\r
-}, "~N");\r
-Clazz.defineMethod (c$, "nextClearBit", \r
-function (fromIndex) {\r
-if (fromIndex < 0) throw  new IndexOutOfBoundsException ("fromIndex < 0: " + fromIndex);\r
-var u = javajs.util.BS.wordIndex (fromIndex);\r
-if (u >= this.wordsInUse) return fromIndex;\r
-var word = ~this.words[u] & (-1 << fromIndex);\r
-while (true) {\r
-if (word != 0) return (u * 32) + Integer.numberOfTrailingZeros (word);\r
-if (++u == this.wordsInUse) return this.wordsInUse * 32;\r
-word = ~this.words[u];\r
-}\r
-}, "~N");\r
-Clazz.defineMethod (c$, "length", \r
-function () {\r
-if (this.wordsInUse == 0) return 0;\r
-return 32 * (this.wordsInUse - 1) + (32 - Integer.numberOfLeadingZeros (this.words[this.wordsInUse - 1]));\r
-});\r
-Clazz.defineMethod (c$, "isEmpty", \r
-function () {\r
-return this.wordsInUse == 0;\r
-});\r
-Clazz.defineMethod (c$, "intersects", \r
-function (set) {\r
-for (var i = Math.min (this.wordsInUse, set.wordsInUse) - 1; i >= 0; i--) if ((this.words[i] & set.words[i]) != 0) return true;\r
-\r
-return false;\r
-}, "javajs.util.BS");\r
-Clazz.defineMethod (c$, "cardinality", \r
-function () {\r
-var sum = 0;\r
-for (var i = 0; i < this.wordsInUse; i++) sum += Integer.bitCount (this.words[i]);\r
-\r
-return sum;\r
-});\r
-Clazz.defineMethod (c$, "and", \r
-function (set) {\r
-if (this === set) return;\r
-while (this.wordsInUse > set.wordsInUse) this.words[--this.wordsInUse] = 0;\r
-\r
-for (var i = 0; i < this.wordsInUse; i++) this.words[i] &= set.words[i];\r
-\r
-this.recalculateWordsInUse ();\r
-}, "javajs.util.BS");\r
-Clazz.defineMethod (c$, "or", \r
-function (set) {\r
-if (this === set) return;\r
-var wordsInCommon = Math.min (this.wordsInUse, set.wordsInUse);\r
-if (this.wordsInUse < set.wordsInUse) {\r
-this.ensureCapacity (set.wordsInUse);\r
-this.wordsInUse = set.wordsInUse;\r
-}for (var i = 0; i < wordsInCommon; i++) this.words[i] |= set.words[i];\r
-\r
-if (wordsInCommon < set.wordsInUse) System.arraycopy (set.words, wordsInCommon, this.words, wordsInCommon, this.wordsInUse - wordsInCommon);\r
-}, "javajs.util.BS");\r
-Clazz.defineMethod (c$, "xor", \r
-function (set) {\r
-var wordsInCommon = Math.min (this.wordsInUse, set.wordsInUse);\r
-if (this.wordsInUse < set.wordsInUse) {\r
-this.ensureCapacity (set.wordsInUse);\r
-this.wordsInUse = set.wordsInUse;\r
-}for (var i = 0; i < wordsInCommon; i++) this.words[i] ^= set.words[i];\r
-\r
-if (wordsInCommon < set.wordsInUse) System.arraycopy (set.words, wordsInCommon, this.words, wordsInCommon, set.wordsInUse - wordsInCommon);\r
-this.recalculateWordsInUse ();\r
-}, "javajs.util.BS");\r
-Clazz.defineMethod (c$, "andNot", \r
-function (set) {\r
-for (var i = Math.min (this.wordsInUse, set.wordsInUse) - 1; i >= 0; i--) this.words[i] &= ~set.words[i];\r
-\r
-this.recalculateWordsInUse ();\r
-}, "javajs.util.BS");\r
-Clazz.overrideMethod (c$, "hashCode", \r
-function () {\r
-var h = 1234;\r
-for (var i = this.wordsInUse; --i >= 0; ) h ^= this.words[i] * (i + 1);\r
-\r
-return ((h >> 32) ^ h);\r
-});\r
-Clazz.defineMethod (c$, "size", \r
-function () {\r
-return this.words.length * 32;\r
-});\r
-Clazz.overrideMethod (c$, "equals", \r
-function (obj) {\r
-if (!(Clazz.instanceOf (obj, javajs.util.BS))) return false;\r
-if (this === obj) return true;\r
-var set = obj;\r
-if (this.wordsInUse != set.wordsInUse) return false;\r
-for (var i = 0; i < this.wordsInUse; i++) if (this.words[i] != set.words[i]) return false;\r
-\r
-return true;\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "clone", \r
-function () {\r
-if (!this.sizeIsSticky && this.wordsInUse != this.words.length) this.setLength (this.wordsInUse);\r
-return javajs.util.BS.copy (this);\r
-});\r
-Clazz.defineMethod (c$, "setLength", \r
-($fz = function (n) {\r
-var a =  Clazz.newIntArray (n, 0);\r
-System.arraycopy (this.words, 0, a, 0, Math.min (this.wordsInUse, n));\r
-this.words = a;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return javajs.util.BS.escape (this, '{', '}');\r
-});\r
-c$.copy = Clazz.defineMethod (c$, "copy", \r
-function (bitsetToCopy) {\r
-var bs;\r
-{\r
-bs = Clazz.clone(bitsetToCopy);\r
-}var wordCount = bitsetToCopy.wordsInUse;\r
-if (wordCount == 0) {\r
-bs.words = javajs.util.BS.emptyBitmap;\r
-} else {\r
-bs.words =  Clazz.newIntArray (bs.wordsInUse = wordCount, 0);\r
-System.arraycopy (bitsetToCopy.words, 0, bs.words, 0, wordCount);\r
-}return bs;\r
-}, "javajs.util.BS");\r
-Clazz.defineMethod (c$, "cardinalityN", \r
-function (max) {\r
-var n = this.cardinality ();\r
-for (var i = this.length (); --i >= max; ) if (this.get (i)) n--;\r
-\r
-return n;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "toJSON", \r
-function () {\r
-var numBits = (this.wordsInUse > 128) ? this.cardinality () : this.wordsInUse * 32;\r
-var b = javajs.util.SB.newN (6 * numBits + 2);\r
-b.appendC ('[');\r
-var i = this.nextSetBit (0);\r
-if (i != -1) {\r
-b.appendI (i);\r
-for (i = this.nextSetBit (i + 1); i >= 0; i = this.nextSetBit (i + 1)) {\r
-var endOfRun = this.nextClearBit (i);\r
-do {\r
-b.append (", ").appendI (i);\r
-} while (++i < endOfRun);\r
-}\r
-}b.appendC (']');\r
-return b.toString ();\r
-});\r
-c$.escape = Clazz.defineMethod (c$, "escape", \r
-function (bs, chOpen, chClose) {\r
-if (bs == null) return chOpen + "{}" + chClose;\r
-var s =  new javajs.util.SB ();\r
-s.append (chOpen + "{");\r
-var imax = bs.length ();\r
-var iLast = -1;\r
-var iFirst = -2;\r
-var i = -1;\r
-while (++i <= imax) {\r
-var isSet = bs.get (i);\r
-if (i == imax || iLast >= 0 && !isSet) {\r
-if (iLast >= 0 && iFirst != iLast) s.append ((iFirst == iLast - 1 ? " " : ":") + iLast);\r
-if (i == imax) break;\r
-iLast = -1;\r
-}if (bs.get (i)) {\r
-if (iLast < 0) {\r
-s.append ((iFirst == -2 ? "" : " ") + i);\r
-iFirst = i;\r
-}iLast = i;\r
-}}\r
-s.append ("}").appendC (chClose);\r
-return s.toString ();\r
-}, "javajs.util.BS,~S,~S");\r
-c$.unescape = Clazz.defineMethod (c$, "unescape", \r
-function (str) {\r
-var ch;\r
-var len;\r
-if (str == null || (len = (str = str.trim ()).length) < 4 || str.equalsIgnoreCase ("({null})") || (ch = str.charAt (0)) != '(' && ch != '[' || str.charAt (len - 1) != (ch == '(' ? ')' : ']') || str.charAt (1) != '{' || str.indexOf ('}') != len - 2) return null;\r
-len -= 2;\r
-for (var i = len; --i >= 2; ) if (!javajs.util.PT.isDigit (ch = str.charAt (i)) && ch != ' ' && ch != '\t' && ch != ':') return null;\r
-\r
-var lastN = len;\r
-while (javajs.util.PT.isDigit (str.charAt (--lastN))) {\r
-}\r
-if (++lastN == len) lastN = 0;\r
- else try {\r
-lastN = Integer.parseInt (str.substring (lastN, len));\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, NumberFormatException)) {\r
-return null;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-var bs = javajs.util.BS.newN (lastN);\r
-lastN = -1;\r
-var iPrev = -1;\r
-var iThis = -2;\r
-for (var i = 2; i <= len; i++) {\r
-switch (ch = str.charAt (i)) {\r
-case '\t':\r
-case ' ':\r
-case '}':\r
-if (iThis < 0) break;\r
-if (iThis < lastN) return null;\r
-lastN = iThis;\r
-if (iPrev < 0) iPrev = iThis;\r
-bs.setBits (iPrev, iThis + 1);\r
-iPrev = -1;\r
-iThis = -2;\r
-break;\r
-case ':':\r
-iPrev = lastN = iThis;\r
-iThis = -2;\r
-break;\r
-default:\r
-if (javajs.util.PT.isDigit (ch)) {\r
-if (iThis < 0) iThis = 0;\r
-iThis = (iThis * 10) + (ch.charCodeAt (0) - 48);\r
-}}\r
-}\r
-return (iPrev >= 0 ? null : bs);\r
-}, "~S");\r
-Clazz.defineStatics (c$,\r
-"ADDRESS_BITS_PER_WORD", 5,\r
-"BITS_PER_WORD", 32,\r
-"WORD_MASK", 0xffffffff,\r
-"emptyBitmap",  Clazz.newIntArray (0, 0));\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.api.JSONEncodable"], "javajs.util.BS", ["java.lang.IndexOutOfBoundsException", "$.NegativeArraySizeException", "javajs.util.PT", "$.SB"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.words = null;
+this.wordsInUse = 0;
+this.sizeIsSticky = false;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "BS", null, [Cloneable, javajs.api.JSONEncodable]);
+c$.wordIndex = Clazz.defineMethod (c$, "wordIndex", 
+($fz = function (bitIndex) {
+return bitIndex >> 5;
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "recalculateWordsInUse", 
+($fz = function () {
+var i;
+for (i = this.wordsInUse - 1; i >= 0; i--) if (this.words[i] != 0) break;
+
+this.wordsInUse = i + 1;
+}, $fz.isPrivate = true, $fz));
+Clazz.makeConstructor (c$, 
+function () {
+this.initWords (32);
+this.sizeIsSticky = false;
+});
+c$.newN = Clazz.defineMethod (c$, "newN", 
+function (nbits) {
+var bs =  new javajs.util.BS ();
+bs.init (nbits);
+return bs;
+}, "~N");
+Clazz.defineMethod (c$, "init", 
+($fz = function (nbits) {
+if (nbits < 0) throw  new NegativeArraySizeException ("nbits < 0: " + nbits);
+this.initWords (nbits);
+this.sizeIsSticky = true;
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "initWords", 
+($fz = function (nbits) {
+this.words =  Clazz.newIntArray (javajs.util.BS.wordIndex (nbits - 1) + 1, 0);
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "ensureCapacity", 
+($fz = function (wordsRequired) {
+if (this.words.length < wordsRequired) {
+var request = Math.max (2 * this.words.length, wordsRequired);
+this.setLength (request);
+this.sizeIsSticky = false;
+}}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "expandTo", 
+($fz = function (wordIndex) {
+var wordsRequired = wordIndex + 1;
+if (this.wordsInUse < wordsRequired) {
+this.ensureCapacity (wordsRequired);
+this.wordsInUse = wordsRequired;
+}}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "set", 
+function (bitIndex) {
+if (bitIndex < 0) throw  new IndexOutOfBoundsException ("bitIndex < 0: " + bitIndex);
+var wordIndex = javajs.util.BS.wordIndex (bitIndex);
+this.expandTo (wordIndex);
+this.words[wordIndex] |= (1 << bitIndex);
+}, "~N");
+Clazz.defineMethod (c$, "setBitTo", 
+function (bitIndex, value) {
+if (value) this.set (bitIndex);
+ else this.clear (bitIndex);
+}, "~N,~B");
+Clazz.defineMethod (c$, "setBits", 
+function (fromIndex, toIndex) {
+if (fromIndex == toIndex) return;
+var startWordIndex = javajs.util.BS.wordIndex (fromIndex);
+var endWordIndex = javajs.util.BS.wordIndex (toIndex - 1);
+this.expandTo (endWordIndex);
+var firstWordMask = -1 << fromIndex;
+var lastWordMask = -1 >>> -toIndex;
+if (startWordIndex == endWordIndex) {
+this.words[startWordIndex] |= (firstWordMask & lastWordMask);
+} else {
+this.words[startWordIndex] |= firstWordMask;
+for (var i = startWordIndex + 1; i < endWordIndex; i++) this.words[i] = -1;
+
+this.words[endWordIndex] |= lastWordMask;
+}}, "~N,~N");
+Clazz.defineMethod (c$, "clear", 
+function (bitIndex) {
+if (bitIndex < 0) throw  new IndexOutOfBoundsException ("bitIndex < 0: " + bitIndex);
+var wordIndex = javajs.util.BS.wordIndex (bitIndex);
+if (wordIndex >= this.wordsInUse) return;
+this.words[wordIndex] &= ~(1 << bitIndex);
+this.recalculateWordsInUse ();
+}, "~N");
+Clazz.defineMethod (c$, "clearBits", 
+function (fromIndex, toIndex) {
+if (fromIndex == toIndex) return;
+var startWordIndex = javajs.util.BS.wordIndex (fromIndex);
+if (startWordIndex >= this.wordsInUse) return;
+var endWordIndex = javajs.util.BS.wordIndex (toIndex - 1);
+if (endWordIndex >= this.wordsInUse) {
+toIndex = this.length ();
+endWordIndex = this.wordsInUse - 1;
+}var firstWordMask = -1 << fromIndex;
+var lastWordMask = -1 >>> -toIndex;
+if (startWordIndex == endWordIndex) {
+this.words[startWordIndex] &= ~(firstWordMask & lastWordMask);
+} else {
+this.words[startWordIndex] &= ~firstWordMask;
+for (var i = startWordIndex + 1; i < endWordIndex; i++) this.words[i] = 0;
+
+this.words[endWordIndex] &= ~lastWordMask;
+}this.recalculateWordsInUse ();
+}, "~N,~N");
+Clazz.defineMethod (c$, "clearAll", 
+function () {
+while (this.wordsInUse > 0) this.words[--this.wordsInUse] = 0;
+
+});
+Clazz.defineMethod (c$, "get", 
+function (bitIndex) {
+if (bitIndex < 0) throw  new IndexOutOfBoundsException ("bitIndex < 0: " + bitIndex);
+var wordIndex = javajs.util.BS.wordIndex (bitIndex);
+return (wordIndex < this.wordsInUse) && ((this.words[wordIndex] & (1 << bitIndex)) != 0);
+}, "~N");
+Clazz.defineMethod (c$, "nextSetBit", 
+function (fromIndex) {
+if (fromIndex < 0) throw  new IndexOutOfBoundsException ("fromIndex < 0: " + fromIndex);
+var u = javajs.util.BS.wordIndex (fromIndex);
+if (u >= this.wordsInUse) return -1;
+var word = this.words[u] & (-1 << fromIndex);
+while (true) {
+if (word != 0) return (u * 32) + Integer.numberOfTrailingZeros (word);
+if (++u == this.wordsInUse) return -1;
+word = this.words[u];
+}
+}, "~N");
+Clazz.defineMethod (c$, "nextClearBit", 
+function (fromIndex) {
+if (fromIndex < 0) throw  new IndexOutOfBoundsException ("fromIndex < 0: " + fromIndex);
+var u = javajs.util.BS.wordIndex (fromIndex);
+if (u >= this.wordsInUse) return fromIndex;
+var word = ~this.words[u] & (-1 << fromIndex);
+while (true) {
+if (word != 0) return (u * 32) + Integer.numberOfTrailingZeros (word);
+if (++u == this.wordsInUse) return this.wordsInUse * 32;
+word = ~this.words[u];
+}
+}, "~N");
+Clazz.defineMethod (c$, "length", 
+function () {
+if (this.wordsInUse == 0) return 0;
+return 32 * (this.wordsInUse - 1) + (32 - Integer.numberOfLeadingZeros (this.words[this.wordsInUse - 1]));
+});
+Clazz.defineMethod (c$, "isEmpty", 
+function () {
+return this.wordsInUse == 0;
+});
+Clazz.defineMethod (c$, "intersects", 
+function (set) {
+for (var i = Math.min (this.wordsInUse, set.wordsInUse) - 1; i >= 0; i--) if ((this.words[i] & set.words[i]) != 0) return true;
+
+return false;
+}, "javajs.util.BS");
+Clazz.defineMethod (c$, "cardinality", 
+function () {
+var sum = 0;
+for (var i = 0; i < this.wordsInUse; i++) sum += Integer.bitCount (this.words[i]);
+
+return sum;
+});
+Clazz.defineMethod (c$, "and", 
+function (set) {
+if (this === set) return;
+while (this.wordsInUse > set.wordsInUse) this.words[--this.wordsInUse] = 0;
+
+for (var i = 0; i < this.wordsInUse; i++) this.words[i] &= set.words[i];
+
+this.recalculateWordsInUse ();
+}, "javajs.util.BS");
+Clazz.defineMethod (c$, "or", 
+function (set) {
+if (this === set) return;
+var wordsInCommon = Math.min (this.wordsInUse, set.wordsInUse);
+if (this.wordsInUse < set.wordsInUse) {
+this.ensureCapacity (set.wordsInUse);
+this.wordsInUse = set.wordsInUse;
+}for (var i = 0; i < wordsInCommon; i++) this.words[i] |= set.words[i];
+
+if (wordsInCommon < set.wordsInUse) System.arraycopy (set.words, wordsInCommon, this.words, wordsInCommon, this.wordsInUse - wordsInCommon);
+}, "javajs.util.BS");
+Clazz.defineMethod (c$, "xor", 
+function (set) {
+var wordsInCommon = Math.min (this.wordsInUse, set.wordsInUse);
+if (this.wordsInUse < set.wordsInUse) {
+this.ensureCapacity (set.wordsInUse);
+this.wordsInUse = set.wordsInUse;
+}for (var i = 0; i < wordsInCommon; i++) this.words[i] ^= set.words[i];
+
+if (wordsInCommon < set.wordsInUse) System.arraycopy (set.words, wordsInCommon, this.words, wordsInCommon, set.wordsInUse - wordsInCommon);
+this.recalculateWordsInUse ();
+}, "javajs.util.BS");
+Clazz.defineMethod (c$, "andNot", 
+function (set) {
+for (var i = Math.min (this.wordsInUse, set.wordsInUse) - 1; i >= 0; i--) this.words[i] &= ~set.words[i];
+
+this.recalculateWordsInUse ();
+}, "javajs.util.BS");
+Clazz.overrideMethod (c$, "hashCode", 
+function () {
+var h = 1234;
+for (var i = this.wordsInUse; --i >= 0; ) h ^= this.words[i] * (i + 1);
+
+return ((h >> 32) ^ h);
+});
+Clazz.defineMethod (c$, "size", 
+function () {
+return this.words.length * 32;
+});
+Clazz.overrideMethod (c$, "equals", 
+function (obj) {
+if (!(Clazz.instanceOf (obj, javajs.util.BS))) return false;
+if (this === obj) return true;
+var set = obj;
+if (this.wordsInUse != set.wordsInUse) return false;
+for (var i = 0; i < this.wordsInUse; i++) if (this.words[i] != set.words[i]) return false;
+
+return true;
+}, "~O");
+Clazz.overrideMethod (c$, "clone", 
+function () {
+if (!this.sizeIsSticky && this.wordsInUse != this.words.length) this.setLength (this.wordsInUse);
+return javajs.util.BS.copy (this);
+});
+Clazz.defineMethod (c$, "setLength", 
+($fz = function (n) {
+var a =  Clazz.newIntArray (n, 0);
+System.arraycopy (this.words, 0, a, 0, Math.min (this.wordsInUse, n));
+this.words = a;
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return javajs.util.BS.escape (this, '{', '}');
+});
+c$.copy = Clazz.defineMethod (c$, "copy", 
+function (bitsetToCopy) {
+var bs;
+{
+bs = Clazz.clone(bitsetToCopy);
+}var wordCount = bitsetToCopy.wordsInUse;
+if (wordCount == 0) {
+bs.words = javajs.util.BS.emptyBitmap;
+} else {
+bs.words =  Clazz.newIntArray (bs.wordsInUse = wordCount, 0);
+System.arraycopy (bitsetToCopy.words, 0, bs.words, 0, wordCount);
+}return bs;
+}, "javajs.util.BS");
+Clazz.defineMethod (c$, "cardinalityN", 
+function (max) {
+var n = this.cardinality ();
+for (var i = this.length (); --i >= max; ) if (this.get (i)) n--;
+
+return n;
+}, "~N");
+Clazz.overrideMethod (c$, "toJSON", 
+function () {
+var numBits = (this.wordsInUse > 128) ? this.cardinality () : this.wordsInUse * 32;
+var b = javajs.util.SB.newN (6 * numBits + 2);
+b.appendC ('[');
+var i = this.nextSetBit (0);
+if (i != -1) {
+b.appendI (i);
+for (i = this.nextSetBit (i + 1); i >= 0; i = this.nextSetBit (i + 1)) {
+var endOfRun = this.nextClearBit (i);
+do {
+b.append (", ").appendI (i);
+} while (++i < endOfRun);
+}
+}b.appendC (']');
+return b.toString ();
+});
+c$.escape = Clazz.defineMethod (c$, "escape", 
+function (bs, chOpen, chClose) {
+if (bs == null) return chOpen + "{}" + chClose;
+var s =  new javajs.util.SB ();
+s.append (chOpen + "{");
+var imax = bs.length ();
+var iLast = -1;
+var iFirst = -2;
+var i = -1;
+while (++i <= imax) {
+var isSet = bs.get (i);
+if (i == imax || iLast >= 0 && !isSet) {
+if (iLast >= 0 && iFirst != iLast) s.append ((iFirst == iLast - 1 ? " " : ":") + iLast);
+if (i == imax) break;
+iLast = -1;
+}if (bs.get (i)) {
+if (iLast < 0) {
+s.append ((iFirst == -2 ? "" : " ") + i);
+iFirst = i;
+}iLast = i;
+}}
+s.append ("}").appendC (chClose);
+return s.toString ();
+}, "javajs.util.BS,~S,~S");
+c$.unescape = Clazz.defineMethod (c$, "unescape", 
+function (str) {
+var ch;
+var len;
+if (str == null || (len = (str = str.trim ()).length) < 4 || str.equalsIgnoreCase ("({null})") || (ch = str.charAt (0)) != '(' && ch != '[' || str.charAt (len - 1) != (ch == '(' ? ')' : ']') || str.charAt (1) != '{' || str.indexOf ('}') != len - 2) return null;
+len -= 2;
+for (var i = len; --i >= 2; ) if (!javajs.util.PT.isDigit (ch = str.charAt (i)) && ch != ' ' && ch != '\t' && ch != ':') return null;
+
+var lastN = len;
+while (javajs.util.PT.isDigit (str.charAt (--lastN))) {
+}
+if (++lastN == len) lastN = 0;
+ else try {
+lastN = Integer.parseInt (str.substring (lastN, len));
+} catch (e) {
+if (Clazz.exceptionOf (e, NumberFormatException)) {
+return null;
+} else {
+throw e;
+}
+}
+var bs = javajs.util.BS.newN (lastN);
+lastN = -1;
+var iPrev = -1;
+var iThis = -2;
+for (var i = 2; i <= len; i++) {
+switch (ch = str.charAt (i)) {
+case '\t':
+case ' ':
+case '}':
+if (iThis < 0) break;
+if (iThis < lastN) return null;
+lastN = iThis;
+if (iPrev < 0) iPrev = iThis;
+bs.setBits (iPrev, iThis + 1);
+iPrev = -1;
+iThis = -2;
+break;
+case ':':
+iPrev = lastN = iThis;
+iThis = -2;
+break;
+default:
+if (javajs.util.PT.isDigit (ch)) {
+if (iThis < 0) iThis = 0;
+iThis = (iThis * 10) + (ch.charCodeAt (0) - 48);
+}}
+}
+return (iPrev >= 0 ? null : bs);
+}, "~S");
+Clazz.defineStatics (c$,
+"ADDRESS_BITS_PER_WORD", 5,
+"BITS_PER_WORD", 32,
+"WORD_MASK", 0xffffffff,
+"emptyBitmap",  Clazz.newIntArray (0, 0));
+});
index 15f1a5f..e513e54 100644 (file)
@@ -1,54 +1,54 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (null, "javajs.util.Base64", ["javajs.util.SB"], function () {\r
-c$ = Clazz.declareType (javajs.util, "Base64");\r
-c$.getBytes64 = Clazz.defineMethod (c$, "getBytes64", \r
-function (bytes) {\r
-return javajs.util.Base64.getBase64 (bytes).toBytes (0, -1);\r
-}, "~A");\r
-c$.getBase64 = Clazz.defineMethod (c$, "getBase64", \r
-function (bytes) {\r
-var nBytes = bytes.length;\r
-var sout =  new javajs.util.SB ();\r
-if (nBytes == 0) return sout;\r
-for (var i = 0, nPad = 0; i < nBytes && nPad == 0; ) {\r
-if (i % 75 == 0 && i != 0) sout.append ("\r\n");\r
-nPad = (i + 2 == nBytes ? 1 : i + 1 == nBytes ? 2 : 0);\r
-var outbytes = ((bytes[i++] << 16) & 0xFF0000) | ((nPad == 2 ? 0 : bytes[i++] << 8) & 0x00FF00) | ((nPad >= 1 ? 0 : bytes[i++]) & 0x0000FF);\r
-sout.appendC (javajs.util.Base64.base64.charAt ((outbytes >> 18) & 0x3F));\r
-sout.appendC (javajs.util.Base64.base64.charAt ((outbytes >> 12) & 0x3F));\r
-sout.appendC (nPad == 2 ? '=' : javajs.util.Base64.base64.charAt ((outbytes >> 6) & 0x3F));\r
-sout.appendC (nPad >= 1 ? '=' : javajs.util.Base64.base64.charAt (outbytes & 0x3F));\r
-}\r
-return sout;\r
-}, "~A");\r
-c$.decodeBase64 = Clazz.defineMethod (c$, "decodeBase64", \r
-function (strBase64) {\r
-var nBytes = 0;\r
-var ch;\r
-var pt0 = strBase64.indexOf (";base64,") + 1;\r
-if (pt0 > 0) pt0 += 7;\r
-var chars64 = strBase64.toCharArray ();\r
-var len64 = chars64.length;\r
-if (len64 == 0) return  Clazz.newByteArray (0, 0);\r
-for (var i = len64; --i >= pt0; ) nBytes += ((ch = (chars64[i]).charCodeAt (0) & 0x7F) == 65 || javajs.util.Base64.decode64[ch] > 0 ? 3 : 0);\r
-\r
-nBytes = nBytes >> 2;\r
-var bytes =  Clazz.newByteArray (nBytes, 0);\r
-var offset = 18;\r
-for (var i = pt0, pt = 0, b = 0; i < len64; i++) {\r
-if (javajs.util.Base64.decode64[ch = (chars64[i]).charCodeAt (0) & 0x7F] > 0 || ch == 65 || ch == 61) {\r
-b |= javajs.util.Base64.decode64[ch] << offset;\r
-offset -= 6;\r
-if (offset < 0) {\r
-bytes[pt++] = ((b & 0xFF0000) >> 16);\r
-if (pt < nBytes) bytes[pt++] = ((b & 0xFF00) >> 8);\r
-if (pt < nBytes) bytes[pt++] = (b & 0xFF);\r
-offset = 18;\r
-b = 0;\r
-}}}\r
-return bytes;\r
-}, "~S");\r
-Clazz.defineStatics (c$,\r
-"base64", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",\r
-"decode64",  Clazz.newIntArray (-1, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 62, 0, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 63, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0]));\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (null, "javajs.util.Base64", ["javajs.util.SB"], function () {
+c$ = Clazz.declareType (javajs.util, "Base64");
+c$.getBytes64 = Clazz.defineMethod (c$, "getBytes64", 
+function (bytes) {
+return javajs.util.Base64.getBase64 (bytes).toBytes (0, -1);
+}, "~A");
+c$.getBase64 = Clazz.defineMethod (c$, "getBase64", 
+function (bytes) {
+var nBytes = bytes.length;
+var sout =  new javajs.util.SB ();
+if (nBytes == 0) return sout;
+for (var i = 0, nPad = 0; i < nBytes && nPad == 0; ) {
+if (i % 75 == 0 && i != 0) sout.append ("\r\n");
+nPad = (i + 2 == nBytes ? 1 : i + 1 == nBytes ? 2 : 0);
+var outbytes = ((bytes[i++] << 16) & 0xFF0000) | ((nPad == 2 ? 0 : bytes[i++] << 8) & 0x00FF00) | ((nPad >= 1 ? 0 : bytes[i++]) & 0x0000FF);
+sout.appendC (javajs.util.Base64.base64.charAt ((outbytes >> 18) & 0x3F));
+sout.appendC (javajs.util.Base64.base64.charAt ((outbytes >> 12) & 0x3F));
+sout.appendC (nPad == 2 ? '=' : javajs.util.Base64.base64.charAt ((outbytes >> 6) & 0x3F));
+sout.appendC (nPad >= 1 ? '=' : javajs.util.Base64.base64.charAt (outbytes & 0x3F));
+}
+return sout;
+}, "~A");
+c$.decodeBase64 = Clazz.defineMethod (c$, "decodeBase64", 
+function (strBase64) {
+var nBytes = 0;
+var ch;
+var pt0 = strBase64.indexOf (";base64,") + 1;
+if (pt0 > 0) pt0 += 7;
+var chars64 = strBase64.toCharArray ();
+var len64 = chars64.length;
+if (len64 == 0) return  Clazz.newByteArray (0, 0);
+for (var i = len64; --i >= pt0; ) nBytes += ((ch = (chars64[i]).charCodeAt (0) & 0x7F) == 65 || javajs.util.Base64.decode64[ch] > 0 ? 3 : 0);
+
+nBytes = nBytes >> 2;
+var bytes =  Clazz.newByteArray (nBytes, 0);
+var offset = 18;
+for (var i = pt0, pt = 0, b = 0; i < len64; i++) {
+if (javajs.util.Base64.decode64[ch = (chars64[i]).charCodeAt (0) & 0x7F] > 0 || ch == 65 || ch == 61) {
+b |= javajs.util.Base64.decode64[ch] << offset;
+offset -= 6;
+if (offset < 0) {
+bytes[pt++] = ((b & 0xFF0000) >> 16);
+if (pt < nBytes) bytes[pt++] = ((b & 0xFF00) >> 8);
+if (pt < nBytes) bytes[pt++] = (b & 0xFF);
+offset = 18;
+b = 0;
+}}}
+return bytes;
+}, "~S");
+Clazz.defineStatics (c$,
+"base64", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
+"decode64",  Clazz.newIntArray (-1, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 62, 0, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 63, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0]));
+});
index 420db0b..a0edf33 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.api.GenericBinaryDocument", "javajs.util.BC"], "javajs.util.BinaryDocument", ["java.io.DataInputStream", "java.lang.Double"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.stream = null;\r
-this.isRandom = false;\r
-this.isBigEndian = true;\r
-this.jzt = null;\r
-this.t8 = null;\r
-this.nBytes = 0;\r
-this.out = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "BinaryDocument", javajs.util.BC, javajs.api.GenericBinaryDocument);\r
-Clazz.prepareFields (c$, function () {\r
-this.t8 =  Clazz.newByteArray (8, 0);\r
-});\r
-Clazz.overrideMethod (c$, "close", \r
-function () {\r
-if (this.stream != null) try {\r
-this.stream.close ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (this.out != null) this.out.closeChannel ();\r
-});\r
-Clazz.overrideMethod (c$, "setStream", \r
-function (jzt, bis, isBigEndian) {\r
-if (jzt != null) this.jzt = jzt;\r
-if (bis != null) this.stream =  new java.io.DataInputStream (bis);\r
-this.isBigEndian = isBigEndian;\r
-}, "javajs.api.GenericZipTools,java.io.BufferedInputStream,~B");\r
-Clazz.overrideMethod (c$, "setStreamData", \r
-function (stream, isBigEndian) {\r
-if (stream != null) this.stream = stream;\r
-this.isBigEndian = isBigEndian;\r
-}, "java.io.DataInputStream,~B");\r
-Clazz.defineMethod (c$, "setRandom", \r
-function (TF) {\r
-this.isRandom = TF;\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "readByte", \r
-function () {\r
-this.nBytes++;\r
-return this.ioReadByte ();\r
-});\r
-Clazz.defineMethod (c$, "ioReadByte", \r
-($fz = function () {\r
-var b = this.stream.readByte ();\r
-if (this.out != null) this.out.writeByteAsInt (b);\r
-return b;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "readByteArray", \r
-function (b, off, len) {\r
-var n = this.ioRead (b, off, len);\r
-this.nBytes += n;\r
-return n;\r
-}, "~A,~N,~N");\r
-Clazz.defineMethod (c$, "ioRead", \r
-($fz = function (b, off, len) {\r
-var m = 0;\r
-while (len > 0) {\r
-var n = this.stream.read (b, off, len);\r
-m += n;\r
-if (n > 0 && this.out != null) this.writeBytes (b, off, n);\r
-if (n >= len) break;\r
-off += n;\r
-len -= n;\r
-}\r
-return m;\r
-}, $fz.isPrivate = true, $fz), "~A,~N,~N");\r
-Clazz.defineMethod (c$, "writeBytes", \r
-function (b, off, n) {\r
-this.out.write (b, off, n);\r
-}, "~A,~N,~N");\r
-Clazz.overrideMethod (c$, "readString", \r
-function (nChar) {\r
-var temp =  Clazz.newByteArray (nChar, 0);\r
-var n = this.readByteArray (temp, 0, nChar);\r
-return  String.instantialize (temp, 0, n, "UTF-8");\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "readShort", \r
-function () {\r
-this.nBytes += 2;\r
-var n = (this.isBigEndian ? this.ioReadShort () : ((this.ioReadByte () & 0xff) | (this.ioReadByte () & 0xff) << 8));\r
-{\r
-return (n > 0x7FFF ? n - 0x10000 : n);\r
-}});\r
-Clazz.defineMethod (c$, "ioReadShort", \r
-($fz = function () {\r
-var b = this.stream.readShort ();\r
-if (this.out != null) this.writeShort (b);\r
-return b;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "writeShort", \r
-function (i) {\r
-this.out.writeByteAsInt (i >> 8);\r
-this.out.writeByteAsInt (i);\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "readIntLE", \r
-function () {\r
-this.nBytes += 4;\r
-return this.readLEInt ();\r
-});\r
-Clazz.overrideMethod (c$, "readInt", \r
-function () {\r
-this.nBytes += 4;\r
-return (this.isBigEndian ? this.ioReadInt () : this.readLEInt ());\r
-});\r
-Clazz.defineMethod (c$, "ioReadInt", \r
-($fz = function () {\r
-var i = this.stream.readInt ();\r
-if (this.out != null) this.writeInt (i);\r
-return i;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "writeInt", \r
-function (i) {\r
-this.out.writeByteAsInt (i >> 24);\r
-this.out.writeByteAsInt (i >> 16);\r
-this.out.writeByteAsInt (i >> 8);\r
-this.out.writeByteAsInt (i);\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "swapBytesI", \r
-function (n) {\r
-return (((n >> 24) & 0xff) | ((n >> 16) & 0xff) << 8 | ((n >> 8) & 0xff) << 16 | (n & 0xff) << 24);\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "swapBytesS", \r
-function (n) {\r
-return ((((n >> 8) & 0xff) | (n & 0xff) << 8));\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "readUnsignedShort", \r
-function () {\r
-this.nBytes += 2;\r
-var a = (this.ioReadByte () & 0xff);\r
-var b = (this.ioReadByte () & 0xff);\r
-return (this.isBigEndian ? (a << 8) + b : (b << 8) + a);\r
-});\r
-Clazz.overrideMethod (c$, "readLong", \r
-function () {\r
-this.nBytes += 8;\r
-return (this.isBigEndian ? this.ioReadLong () : (((this.ioReadByte ()) & 0xff) | ((this.ioReadByte ()) & 0xff) << 8 | ((this.ioReadByte ()) & 0xff) << 16 | ((this.ioReadByte ()) & 0xff) << 24 | ((this.ioReadByte ()) & 0xff) << 32 | ((this.ioReadByte ()) & 0xff) << 40 | ((this.ioReadByte ()) & 0xff) << 48 | ((this.ioReadByte ()) & 0xff) << 54));\r
-});\r
-Clazz.defineMethod (c$, "ioReadLong", \r
-($fz = function () {\r
-var b = this.stream.readLong ();\r
-if (this.out != null) this.writeLong (b);\r
-return b;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "writeLong", \r
-function (b) {\r
-this.writeInt (((b >> 32) & 0xFFFFFFFF));\r
-this.writeInt ((b & 0xFFFFFFFF));\r
-}, "~N");\r
-Clazz.defineMethod (c$, "readLEInt", \r
-($fz = function () {\r
-this.ioRead (this.t8, 0, 4);\r
-return javajs.util.BC.bytesToInt (this.t8, 0, false);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "readFloat", \r
-function () {\r
-return javajs.util.BC.intToFloat (this.readInt ());\r
-});\r
-Clazz.overrideMethod (c$, "readDouble", \r
-function () {\r
-{\r
-this.readByteArray(this.t8, 0, 8);\r
-return this.bytesToDoubleToFloat(this.t8, 0, this.isBigEndian);\r
-}});\r
-Clazz.defineMethod (c$, "ioReadDouble", \r
-($fz = function () {\r
-var d = this.stream.readDouble ();\r
-if (this.out != null) this.writeLong (Double.doubleToRawLongBits (d));\r
-return d;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "readLELong", \r
-($fz = function () {\r
-return (((this.ioReadByte ()) & 0xff) | ((this.ioReadByte ()) & 0xff) << 8 | ((this.ioReadByte ()) & 0xff) << 16 | ((this.ioReadByte ()) & 0xff) << 24 | ((this.ioReadByte ()) & 0xff) << 32 | ((this.ioReadByte ()) & 0xff) << 40 | ((this.ioReadByte ()) & 0xff) << 48 | ((this.ioReadByte ()) & 0xff) << 56);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "seek", \r
-function (offset) {\r
-try {\r
-if (offset == this.nBytes) return;\r
-if (offset < this.nBytes) {\r
-this.stream.reset ();\r
-if (this.out != null && this.nBytes != 0) this.out.reset ();\r
-this.nBytes = 0;\r
-} else {\r
-offset -= this.nBytes;\r
-}if (this.out == null) {\r
-this.stream.skipBytes (offset);\r
-} else {\r
-this.readByteArray ( Clazz.newByteArray (offset, 0), 0, offset);\r
-}this.nBytes += offset;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println (e.toString ());\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "getPosition", \r
-function () {\r
-return this.nBytes;\r
-});\r
-Clazz.overrideMethod (c$, "setOutputChannel", \r
-function (out) {\r
-this.out = out;\r
-}, "javajs.util.OC");\r
-Clazz.overrideMethod (c$, "getAllDataFiles", \r
-function (binaryFileList, firstFile) {\r
-return null;\r
-}, "~S,~S");\r
-Clazz.overrideMethod (c$, "getAllDataMapped", \r
-function (replace, string, fileData) {\r
-}, "~S,~S,java.util.Map");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.api.GenericBinaryDocument", "javajs.util.BC"], "javajs.util.BinaryDocument", ["java.io.DataInputStream", "java.lang.Double"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.stream = null;
+this.isRandom = false;
+this.isBigEndian = true;
+this.jzt = null;
+this.t8 = null;
+this.nBytes = 0;
+this.out = null;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "BinaryDocument", javajs.util.BC, javajs.api.GenericBinaryDocument);
+Clazz.prepareFields (c$, function () {
+this.t8 =  Clazz.newByteArray (8, 0);
+});
+Clazz.overrideMethod (c$, "close", 
+function () {
+if (this.stream != null) try {
+this.stream.close ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+if (this.out != null) this.out.closeChannel ();
+});
+Clazz.overrideMethod (c$, "setStream", 
+function (jzt, bis, isBigEndian) {
+if (jzt != null) this.jzt = jzt;
+if (bis != null) this.stream =  new java.io.DataInputStream (bis);
+this.isBigEndian = isBigEndian;
+}, "javajs.api.GenericZipTools,java.io.BufferedInputStream,~B");
+Clazz.overrideMethod (c$, "setStreamData", 
+function (stream, isBigEndian) {
+if (stream != null) this.stream = stream;
+this.isBigEndian = isBigEndian;
+}, "java.io.DataInputStream,~B");
+Clazz.defineMethod (c$, "setRandom", 
+function (TF) {
+this.isRandom = TF;
+}, "~B");
+Clazz.overrideMethod (c$, "readByte", 
+function () {
+this.nBytes++;
+return this.ioReadByte ();
+});
+Clazz.defineMethod (c$, "ioReadByte", 
+($fz = function () {
+var b = this.stream.readByte ();
+if (this.out != null) this.out.writeByteAsInt (b);
+return b;
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "readByteArray", 
+function (b, off, len) {
+var n = this.ioRead (b, off, len);
+this.nBytes += n;
+return n;
+}, "~A,~N,~N");
+Clazz.defineMethod (c$, "ioRead", 
+($fz = function (b, off, len) {
+var m = 0;
+while (len > 0) {
+var n = this.stream.read (b, off, len);
+m += n;
+if (n > 0 && this.out != null) this.writeBytes (b, off, n);
+if (n >= len) break;
+off += n;
+len -= n;
+}
+return m;
+}, $fz.isPrivate = true, $fz), "~A,~N,~N");
+Clazz.defineMethod (c$, "writeBytes", 
+function (b, off, n) {
+this.out.write (b, off, n);
+}, "~A,~N,~N");
+Clazz.overrideMethod (c$, "readString", 
+function (nChar) {
+var temp =  Clazz.newByteArray (nChar, 0);
+var n = this.readByteArray (temp, 0, nChar);
+return  String.instantialize (temp, 0, n, "UTF-8");
+}, "~N");
+Clazz.overrideMethod (c$, "readShort", 
+function () {
+this.nBytes += 2;
+var n = (this.isBigEndian ? this.ioReadShort () : ((this.ioReadByte () & 0xff) | (this.ioReadByte () & 0xff) << 8));
+{
+return (n > 0x7FFF ? n - 0x10000 : n);
+}});
+Clazz.defineMethod (c$, "ioReadShort", 
+($fz = function () {
+var b = this.stream.readShort ();
+if (this.out != null) this.writeShort (b);
+return b;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "writeShort", 
+function (i) {
+this.out.writeByteAsInt (i >> 8);
+this.out.writeByteAsInt (i);
+}, "~N");
+Clazz.overrideMethod (c$, "readIntLE", 
+function () {
+this.nBytes += 4;
+return this.readLEInt ();
+});
+Clazz.overrideMethod (c$, "readInt", 
+function () {
+this.nBytes += 4;
+return (this.isBigEndian ? this.ioReadInt () : this.readLEInt ());
+});
+Clazz.defineMethod (c$, "ioReadInt", 
+($fz = function () {
+var i = this.stream.readInt ();
+if (this.out != null) this.writeInt (i);
+return i;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "writeInt", 
+function (i) {
+this.out.writeByteAsInt (i >> 24);
+this.out.writeByteAsInt (i >> 16);
+this.out.writeByteAsInt (i >> 8);
+this.out.writeByteAsInt (i);
+}, "~N");
+Clazz.overrideMethod (c$, "swapBytesI", 
+function (n) {
+return (((n >> 24) & 0xff) | ((n >> 16) & 0xff) << 8 | ((n >> 8) & 0xff) << 16 | (n & 0xff) << 24);
+}, "~N");
+Clazz.overrideMethod (c$, "swapBytesS", 
+function (n) {
+return ((((n >> 8) & 0xff) | (n & 0xff) << 8));
+}, "~N");
+Clazz.overrideMethod (c$, "readUnsignedShort", 
+function () {
+this.nBytes += 2;
+var a = (this.ioReadByte () & 0xff);
+var b = (this.ioReadByte () & 0xff);
+return (this.isBigEndian ? (a << 8) + b : (b << 8) + a);
+});
+Clazz.overrideMethod (c$, "readLong", 
+function () {
+this.nBytes += 8;
+return (this.isBigEndian ? this.ioReadLong () : (((this.ioReadByte ()) & 0xff) | ((this.ioReadByte ()) & 0xff) << 8 | ((this.ioReadByte ()) & 0xff) << 16 | ((this.ioReadByte ()) & 0xff) << 24 | ((this.ioReadByte ()) & 0xff) << 32 | ((this.ioReadByte ()) & 0xff) << 40 | ((this.ioReadByte ()) & 0xff) << 48 | ((this.ioReadByte ()) & 0xff) << 54));
+});
+Clazz.defineMethod (c$, "ioReadLong", 
+($fz = function () {
+var b = this.stream.readLong ();
+if (this.out != null) this.writeLong (b);
+return b;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "writeLong", 
+function (b) {
+this.writeInt (((b >> 32) & 0xFFFFFFFF));
+this.writeInt ((b & 0xFFFFFFFF));
+}, "~N");
+Clazz.defineMethod (c$, "readLEInt", 
+($fz = function () {
+this.ioRead (this.t8, 0, 4);
+return javajs.util.BC.bytesToInt (this.t8, 0, false);
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "readFloat", 
+function () {
+return javajs.util.BC.intToFloat (this.readInt ());
+});
+Clazz.overrideMethod (c$, "readDouble", 
+function () {
+{
+this.readByteArray(this.t8, 0, 8);
+return this.bytesToDoubleToFloat(this.t8, 0, this.isBigEndian);
+}});
+Clazz.defineMethod (c$, "ioReadDouble", 
+($fz = function () {
+var d = this.stream.readDouble ();
+if (this.out != null) this.writeLong (Double.doubleToRawLongBits (d));
+return d;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "readLELong", 
+($fz = function () {
+return (((this.ioReadByte ()) & 0xff) | ((this.ioReadByte ()) & 0xff) << 8 | ((this.ioReadByte ()) & 0xff) << 16 | ((this.ioReadByte ()) & 0xff) << 24 | ((this.ioReadByte ()) & 0xff) << 32 | ((this.ioReadByte ()) & 0xff) << 40 | ((this.ioReadByte ()) & 0xff) << 48 | ((this.ioReadByte ()) & 0xff) << 56);
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "seek", 
+function (offset) {
+try {
+if (offset == this.nBytes) return;
+if (offset < this.nBytes) {
+this.stream.reset ();
+if (this.out != null && this.nBytes != 0) this.out.reset ();
+this.nBytes = 0;
+} else {
+offset -= this.nBytes;
+}if (this.out == null) {
+this.stream.skipBytes (offset);
+} else {
+this.readByteArray ( Clazz.newByteArray (offset, 0), 0, offset);
+}this.nBytes += offset;
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println (e.toString ());
+} else {
+throw e;
+}
+}
+}, "~N");
+Clazz.overrideMethod (c$, "getPosition", 
+function () {
+return this.nBytes;
+});
+Clazz.overrideMethod (c$, "setOutputChannel", 
+function (out) {
+this.out = out;
+}, "javajs.util.OC");
+Clazz.overrideMethod (c$, "getAllDataFiles", 
+function (binaryFileList, firstFile) {
+return null;
+}, "~S,~S");
+Clazz.overrideMethod (c$, "getAllDataMapped", 
+function (replace, string, fileData) {
+}, "~S,~S,java.util.Map");
+});
index f6b3020..edd8bdd 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["java.util.Hashtable"], "javajs.util.CU", ["javajs.util.P3", "$.PT"], function () {\r
-c$ = Clazz.declareType (javajs.util, "CU");\r
-c$.toRGBHexString = Clazz.defineMethod (c$, "toRGBHexString", \r
-function (c) {\r
-var rgb = c.getRGB ();\r
-if (rgb == 0) return "000000";\r
-var r = "00" + Integer.toHexString ((rgb >> 16) & 0xFF);\r
-r = r.substring (r.length - 2);\r
-var g = "00" + Integer.toHexString ((rgb >> 8) & 0xFF);\r
-g = g.substring (g.length - 2);\r
-var b = "00" + Integer.toHexString (rgb & 0xFF);\r
-b = b.substring (b.length - 2);\r
-return r + g + b;\r
-}, "javajs.api.GenericColor");\r
-c$.toCSSString = Clazz.defineMethod (c$, "toCSSString", \r
-function (c) {\r
-var opacity = c.getOpacity255 ();\r
-if (opacity == 255) return "#" + javajs.util.CU.toRGBHexString (c);\r
-var rgb = c.getRGB ();\r
-return "rgba(" + ((rgb >> 16) & 0xFF) + "," + ((rgb >> 8) & 0xff) + "," + (rgb & 0xff) + "," + opacity / 255 + ")";\r
-}, "javajs.api.GenericColor");\r
-c$.getArgbFromString = Clazz.defineMethod (c$, "getArgbFromString", \r
-function (strColor) {\r
-var len = 0;\r
-if (strColor == null || (len = strColor.length) == 0) return 0;\r
-if (strColor.charAt (0) == '[' && strColor.charAt (len - 1) == ']') {\r
-var check;\r
-if (strColor.indexOf (",") >= 0) {\r
-var tokens = javajs.util.PT.split (strColor.substring (1, strColor.length - 1), ",");\r
-if (tokens.length != 3) return 0;\r
-var red = javajs.util.PT.parseFloat (tokens[0]);\r
-var grn = javajs.util.PT.parseFloat (tokens[1]);\r
-var blu = javajs.util.PT.parseFloat (tokens[2]);\r
-return javajs.util.CU.colorTriadToFFRGB (red, grn, blu);\r
-}switch (len) {\r
-case 9:\r
-check = "x";\r
-break;\r
-case 10:\r
-check = "0x";\r
-break;\r
-default:\r
-return 0;\r
-}\r
-if (strColor.indexOf (check) != 1) return 0;\r
-strColor = "#" + strColor.substring (len - 7, len - 1);\r
-len = 7;\r
-}if (len == 7 && strColor.charAt (0) == '#') {\r
-try {\r
-return javajs.util.PT.parseIntRadix (strColor.substring (1, 7), 16) | 0xFF000000;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-return 0;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}var boxedArgb = javajs.util.CU.mapJavaScriptColors.get (strColor.toLowerCase ());\r
-return (boxedArgb == null ? 0 : boxedArgb.intValue ());\r
-}, "~S");\r
-c$.colorTriadToFFRGB = Clazz.defineMethod (c$, "colorTriadToFFRGB", \r
-function (x, y, z) {\r
-if (x <= 1 && y <= 1 && z <= 1) {\r
-if (x > 0) x = x * 256 - 1;\r
-if (y > 0) y = y * 256 - 1;\r
-if (z > 0) z = z * 256 - 1;\r
-}return javajs.util.CU.rgb (Clazz.floatToInt (x), Clazz.floatToInt (y), Clazz.floatToInt (z));\r
-}, "~N,~N,~N");\r
-c$.rgb = Clazz.defineMethod (c$, "rgb", \r
-function (red, grn, blu) {\r
-return 0xFF000000 | (red << 16) | (grn << 8) | blu;\r
-}, "~N,~N,~N");\r
-c$.colorPtFromString = Clazz.defineMethod (c$, "colorPtFromString", \r
-function (colorName) {\r
-return javajs.util.CU.colorPtFromInt (javajs.util.CU.getArgbFromString (colorName), null);\r
-}, "~S");\r
-c$.colorPtFromInt = Clazz.defineMethod (c$, "colorPtFromInt", \r
-function (color, pt) {\r
-if (pt == null) pt =  new javajs.util.P3 ();\r
-pt.set ((color >> 16) & 0xFF, (color >> 8) & 0xFF, color & 0xFF);\r
-return pt;\r
-}, "~N,javajs.util.P3");\r
-c$.colorPtToFFRGB = Clazz.defineMethod (c$, "colorPtToFFRGB", \r
-function (pt) {\r
-return javajs.util.CU.colorTriadToFFRGB (pt.x, pt.y, pt.z);\r
-}, "javajs.util.T3");\r
-c$.toRGB3f = Clazz.defineMethod (c$, "toRGB3f", \r
-function (c, f) {\r
-f[0] = ((c >> 16) & 0xFF) / 255;\r
-f[1] = ((c >> 8) & 0xFF) / 255;\r
-f[2] = (c & 0xFF) / 255;\r
-}, "~N,~A");\r
-c$.toFFGGGfromRGB = Clazz.defineMethod (c$, "toFFGGGfromRGB", \r
-function (rgb) {\r
-var grey = (Clazz.doubleToInt (((2989 * ((rgb >> 16) & 0xFF)) + (5870 * ((rgb >> 8) & 0xFF)) + (1140 * (rgb & 0xFF)) + 5000) / 10000)) & 0xFFFFFF;\r
-return javajs.util.CU.rgb (grey, grey, grey);\r
-}, "~N");\r
-c$.rgbToHSL = Clazz.defineMethod (c$, "rgbToHSL", \r
-function (rgb, doRound) {\r
-var r = rgb.x / 255;\r
-var g = rgb.y / 255;\r
-var b = rgb.z / 255;\r
-var min = Math.min (r, Math.min (g, b));\r
-var max = Math.max (r, Math.max (g, b));\r
-var p = (max + min);\r
-var q = (max - min);\r
-var h = (60 * ((q == 0 ? 0 : max == r ? ((g - b) / q + 6) : max == g ? (b - r) / q + 2 : (r - g) / q + 4))) % 360;\r
-var s = q / (q == 0 ? 1 : p <= 1 ? p : 2 - p);\r
-return (doRound ? javajs.util.P3.new3 (Math.round (h * 10) / 10, Math.round (s * 1000) / 10, Math.round (p * 500) / 10) : javajs.util.P3.new3 (h, s * 100, p * 50));\r
-}, "javajs.util.P3,~B");\r
-c$.hslToRGB = Clazz.defineMethod (c$, "hslToRGB", \r
-function (hsl) {\r
-var h = Math.max (0, Math.min (360, hsl.x)) / 60;\r
-var s = Math.max (0, Math.min (100, hsl.y)) / 100;\r
-var l = Math.max (0, Math.min (100, hsl.z)) / 100;\r
-var p = l - (l < 0.5 ? l : 1 - l) * s;\r
-var q = 2 * (l - p);\r
-var r = javajs.util.CU.toRGB (p, q, h + 2);\r
-var g = javajs.util.CU.toRGB (p, q, h);\r
-var b = javajs.util.CU.toRGB (p, q, h - 2);\r
-return javajs.util.P3.new3 (Math.round (r * 255), Math.round (g * 255), Math.round (b * 255));\r
-}, "javajs.util.P3");\r
-c$.toRGB = Clazz.defineMethod (c$, "toRGB", \r
-($fz = function (p, q, h) {\r
-return ((h = (h + (h < 0 ? 6 : h > 6 ? -6 : 0))) < 1 ? p + q * h : h < 3 ? p + q : h < 4 ? p + q * (4 - h) : p);\r
-}, $fz.isPrivate = true, $fz), "~N,~N,~N");\r
-Clazz.defineStatics (c$,\r
-"colorNames",  Clazz.newArray (-1, ["black", "pewhite", "pecyan", "pepurple", "pegreen", "peblue", "peviolet", "pebrown", "pepink", "peyellow", "pedarkgreen", "peorange", "pelightblue", "pedarkcyan", "pedarkgray", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "green", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", "bluetint", "greenblue", "greentint", "grey", "pinktint", "redorange", "yellowtint"]),\r
-"colorArgbs",  Clazz.newIntArray (-1, [0xFF000000, 0xFFffffff, 0xFF00ffff, 0xFFd020ff, 0xFF00ff00, 0xFF6060ff, 0xFFff80c0, 0xFFa42028, 0xFFffd8d8, 0xFFffff00, 0xFF00c000, 0xFFffb000, 0xFFb0b0ff, 0xFF00a0a0, 0xFF606060, 0xFFF0F8FF, 0xFFFAEBD7, 0xFF00FFFF, 0xFF7FFFD4, 0xFFF0FFFF, 0xFFF5F5DC, 0xFFFFE4C4, 0xFFFFEBCD, 0xFF0000FF, 0xFF8A2BE2, 0xFFA52A2A, 0xFFDEB887, 0xFF5F9EA0, 0xFF7FFF00, 0xFFD2691E, 0xFFFF7F50, 0xFF6495ED, 0xFFFFF8DC, 0xFFDC143C, 0xFF00FFFF, 0xFF00008B, 0xFF008B8B, 0xFFB8860B, 0xFFA9A9A9, 0xFF006400, 0xFFBDB76B, 0xFF8B008B, 0xFF556B2F, 0xFFFF8C00, 0xFF9932CC, 0xFF8B0000, 0xFFE9967A, 0xFF8FBC8F, 0xFF483D8B, 0xFF2F4F4F, 0xFF00CED1, 0xFF9400D3, 0xFFFF1493, 0xFF00BFFF, 0xFF696969, 0xFF1E90FF, 0xFFB22222, 0xFFFFFAF0, 0xFF228B22, 0xFFFF00FF, 0xFFDCDCDC, 0xFFF8F8FF, 0xFFFFD700, 0xFFDAA520, 0xFF808080, 0xFF008000, 0xFFADFF2F, 0xFFF0FFF0, 0xFFFF69B4, 0xFFCD5C5C, 0xFF4B0082, 0xFFFFFFF0, 0xFFF0E68C, 0xFFE6E6FA, 0xFFFFF0F5, 0xFF7CFC00, 0xFFFFFACD, 0xFFADD8E6, 0xFFF08080, 0xFFE0FFFF, 0xFFFAFAD2, 0xFF90EE90, 0xFFD3D3D3, 0xFFFFB6C1, 0xFFFFA07A, 0xFF20B2AA, 0xFF87CEFA, 0xFF778899, 0xFFB0C4DE, 0xFFFFFFE0, 0xFF00FF00, 0xFF32CD32, 0xFFFAF0E6, 0xFFFF00FF, 0xFF800000, 0xFF66CDAA, 0xFF0000CD, 0xFFBA55D3, 0xFF9370DB, 0xFF3CB371, 0xFF7B68EE, 0xFF00FA9A, 0xFF48D1CC, 0xFFC71585, 0xFF191970, 0xFFF5FFFA, 0xFFFFE4E1, 0xFFFFE4B5, 0xFFFFDEAD, 0xFF000080, 0xFFFDF5E6, 0xFF808000, 0xFF6B8E23, 0xFFFFA500, 0xFFFF4500, 0xFFDA70D6, 0xFFEEE8AA, 0xFF98FB98, 0xFFAFEEEE, 0xFFDB7093, 0xFFFFEFD5, 0xFFFFDAB9, 0xFFCD853F, 0xFFFFC0CB, 0xFFDDA0DD, 0xFFB0E0E6, 0xFF800080, 0xFFFF0000, 0xFFBC8F8F, 0xFF4169E1, 0xFF8B4513, 0xFFFA8072, 0xFFF4A460, 0xFF2E8B57, 0xFFFFF5EE, 0xFFA0522D, 0xFFC0C0C0, 0xFF87CEEB, 0xFF6A5ACD, 0xFF708090, 0xFFFFFAFA, 0xFF00FF7F, 0xFF4682B4, 0xFFD2B48C, 0xFF008080, 0xFFD8BFD8, 0xFFFF6347, 0xFF40E0D0, 0xFFEE82EE, 0xFFF5DEB3, 0xFFFFFFFF, 0xFFF5F5F5, 0xFFFFFF00, 0xFF9ACD32, 0xFFAFD7FF, 0xFF2E8B57, 0xFF98FFB3, 0xFF808080, 0xFFFFABBB, 0xFFFF4500, 0xFFF6F675]));\r
-c$.mapJavaScriptColors = c$.prototype.mapJavaScriptColors =  new java.util.Hashtable ();\r
-{\r
-for (var i = javajs.util.CU.colorNames.length; --i >= 0; ) javajs.util.CU.mapJavaScriptColors.put (javajs.util.CU.colorNames[i], Integer.$valueOf (javajs.util.CU.colorArgbs[i]));\r
-\r
-}});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["java.util.Hashtable"], "javajs.util.CU", ["javajs.util.P3", "$.PT"], function () {
+c$ = Clazz.declareType (javajs.util, "CU");
+c$.toRGBHexString = Clazz.defineMethod (c$, "toRGBHexString", 
+function (c) {
+var rgb = c.getRGB ();
+if (rgb == 0) return "000000";
+var r = "00" + Integer.toHexString ((rgb >> 16) & 0xFF);
+r = r.substring (r.length - 2);
+var g = "00" + Integer.toHexString ((rgb >> 8) & 0xFF);
+g = g.substring (g.length - 2);
+var b = "00" + Integer.toHexString (rgb & 0xFF);
+b = b.substring (b.length - 2);
+return r + g + b;
+}, "javajs.api.GenericColor");
+c$.toCSSString = Clazz.defineMethod (c$, "toCSSString", 
+function (c) {
+var opacity = c.getOpacity255 ();
+if (opacity == 255) return "#" + javajs.util.CU.toRGBHexString (c);
+var rgb = c.getRGB ();
+return "rgba(" + ((rgb >> 16) & 0xFF) + "," + ((rgb >> 8) & 0xff) + "," + (rgb & 0xff) + "," + opacity / 255 + ")";
+}, "javajs.api.GenericColor");
+c$.getArgbFromString = Clazz.defineMethod (c$, "getArgbFromString", 
+function (strColor) {
+var len = 0;
+if (strColor == null || (len = strColor.length) == 0) return 0;
+if (strColor.charAt (0) == '[' && strColor.charAt (len - 1) == ']') {
+var check;
+if (strColor.indexOf (",") >= 0) {
+var tokens = javajs.util.PT.split (strColor.substring (1, strColor.length - 1), ",");
+if (tokens.length != 3) return 0;
+var red = javajs.util.PT.parseFloat (tokens[0]);
+var grn = javajs.util.PT.parseFloat (tokens[1]);
+var blu = javajs.util.PT.parseFloat (tokens[2]);
+return javajs.util.CU.colorTriadToFFRGB (red, grn, blu);
+}switch (len) {
+case 9:
+check = "x";
+break;
+case 10:
+check = "0x";
+break;
+default:
+return 0;
+}
+if (strColor.indexOf (check) != 1) return 0;
+strColor = "#" + strColor.substring (len - 7, len - 1);
+len = 7;
+}if (len == 7 && strColor.charAt (0) == '#') {
+try {
+return javajs.util.PT.parseIntRadix (strColor.substring (1, 7), 16) | 0xFF000000;
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+return 0;
+} else {
+throw e;
+}
+}
+}var boxedArgb = javajs.util.CU.mapJavaScriptColors.get (strColor.toLowerCase ());
+return (boxedArgb == null ? 0 : boxedArgb.intValue ());
+}, "~S");
+c$.colorTriadToFFRGB = Clazz.defineMethod (c$, "colorTriadToFFRGB", 
+function (x, y, z) {
+if (x <= 1 && y <= 1 && z <= 1) {
+if (x > 0) x = x * 256 - 1;
+if (y > 0) y = y * 256 - 1;
+if (z > 0) z = z * 256 - 1;
+}return javajs.util.CU.rgb (Clazz.floatToInt (x), Clazz.floatToInt (y), Clazz.floatToInt (z));
+}, "~N,~N,~N");
+c$.rgb = Clazz.defineMethod (c$, "rgb", 
+function (red, grn, blu) {
+return 0xFF000000 | (red << 16) | (grn << 8) | blu;
+}, "~N,~N,~N");
+c$.colorPtFromString = Clazz.defineMethod (c$, "colorPtFromString", 
+function (colorName) {
+return javajs.util.CU.colorPtFromInt (javajs.util.CU.getArgbFromString (colorName), null);
+}, "~S");
+c$.colorPtFromInt = Clazz.defineMethod (c$, "colorPtFromInt", 
+function (color, pt) {
+if (pt == null) pt =  new javajs.util.P3 ();
+pt.set ((color >> 16) & 0xFF, (color >> 8) & 0xFF, color & 0xFF);
+return pt;
+}, "~N,javajs.util.P3");
+c$.colorPtToFFRGB = Clazz.defineMethod (c$, "colorPtToFFRGB", 
+function (pt) {
+return javajs.util.CU.colorTriadToFFRGB (pt.x, pt.y, pt.z);
+}, "javajs.util.T3");
+c$.toRGB3f = Clazz.defineMethod (c$, "toRGB3f", 
+function (c, f) {
+f[0] = ((c >> 16) & 0xFF) / 255;
+f[1] = ((c >> 8) & 0xFF) / 255;
+f[2] = (c & 0xFF) / 255;
+}, "~N,~A");
+c$.toFFGGGfromRGB = Clazz.defineMethod (c$, "toFFGGGfromRGB", 
+function (rgb) {
+var grey = (Clazz.doubleToInt (((2989 * ((rgb >> 16) & 0xFF)) + (5870 * ((rgb >> 8) & 0xFF)) + (1140 * (rgb & 0xFF)) + 5000) / 10000)) & 0xFFFFFF;
+return javajs.util.CU.rgb (grey, grey, grey);
+}, "~N");
+c$.rgbToHSL = Clazz.defineMethod (c$, "rgbToHSL", 
+function (rgb, doRound) {
+var r = rgb.x / 255;
+var g = rgb.y / 255;
+var b = rgb.z / 255;
+var min = Math.min (r, Math.min (g, b));
+var max = Math.max (r, Math.max (g, b));
+var p = (max + min);
+var q = (max - min);
+var h = (60 * ((q == 0 ? 0 : max == r ? ((g - b) / q + 6) : max == g ? (b - r) / q + 2 : (r - g) / q + 4))) % 360;
+var s = q / (q == 0 ? 1 : p <= 1 ? p : 2 - p);
+return (doRound ? javajs.util.P3.new3 (Math.round (h * 10) / 10, Math.round (s * 1000) / 10, Math.round (p * 500) / 10) : javajs.util.P3.new3 (h, s * 100, p * 50));
+}, "javajs.util.P3,~B");
+c$.hslToRGB = Clazz.defineMethod (c$, "hslToRGB", 
+function (hsl) {
+var h = Math.max (0, Math.min (360, hsl.x)) / 60;
+var s = Math.max (0, Math.min (100, hsl.y)) / 100;
+var l = Math.max (0, Math.min (100, hsl.z)) / 100;
+var p = l - (l < 0.5 ? l : 1 - l) * s;
+var q = 2 * (l - p);
+var r = javajs.util.CU.toRGB (p, q, h + 2);
+var g = javajs.util.CU.toRGB (p, q, h);
+var b = javajs.util.CU.toRGB (p, q, h - 2);
+return javajs.util.P3.new3 (Math.round (r * 255), Math.round (g * 255), Math.round (b * 255));
+}, "javajs.util.P3");
+c$.toRGB = Clazz.defineMethod (c$, "toRGB", 
+($fz = function (p, q, h) {
+return ((h = (h + (h < 0 ? 6 : h > 6 ? -6 : 0))) < 1 ? p + q * h : h < 3 ? p + q : h < 4 ? p + q * (4 - h) : p);
+}, $fz.isPrivate = true, $fz), "~N,~N,~N");
+Clazz.defineStatics (c$,
+"colorNames",  Clazz.newArray (-1, ["black", "pewhite", "pecyan", "pepurple", "pegreen", "peblue", "peviolet", "pebrown", "pepink", "peyellow", "pedarkgreen", "peorange", "pelightblue", "pedarkcyan", "pedarkgray", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "green", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", "bluetint", "greenblue", "greentint", "grey", "pinktint", "redorange", "yellowtint"]),
+"colorArgbs",  Clazz.newIntArray (-1, [0xFF000000, 0xFFffffff, 0xFF00ffff, 0xFFd020ff, 0xFF00ff00, 0xFF6060ff, 0xFFff80c0, 0xFFa42028, 0xFFffd8d8, 0xFFffff00, 0xFF00c000, 0xFFffb000, 0xFFb0b0ff, 0xFF00a0a0, 0xFF606060, 0xFFF0F8FF, 0xFFFAEBD7, 0xFF00FFFF, 0xFF7FFFD4, 0xFFF0FFFF, 0xFFF5F5DC, 0xFFFFE4C4, 0xFFFFEBCD, 0xFF0000FF, 0xFF8A2BE2, 0xFFA52A2A, 0xFFDEB887, 0xFF5F9EA0, 0xFF7FFF00, 0xFFD2691E, 0xFFFF7F50, 0xFF6495ED, 0xFFFFF8DC, 0xFFDC143C, 0xFF00FFFF, 0xFF00008B, 0xFF008B8B, 0xFFB8860B, 0xFFA9A9A9, 0xFF006400, 0xFFBDB76B, 0xFF8B008B, 0xFF556B2F, 0xFFFF8C00, 0xFF9932CC, 0xFF8B0000, 0xFFE9967A, 0xFF8FBC8F, 0xFF483D8B, 0xFF2F4F4F, 0xFF00CED1, 0xFF9400D3, 0xFFFF1493, 0xFF00BFFF, 0xFF696969, 0xFF1E90FF, 0xFFB22222, 0xFFFFFAF0, 0xFF228B22, 0xFFFF00FF, 0xFFDCDCDC, 0xFFF8F8FF, 0xFFFFD700, 0xFFDAA520, 0xFF808080, 0xFF008000, 0xFFADFF2F, 0xFFF0FFF0, 0xFFFF69B4, 0xFFCD5C5C, 0xFF4B0082, 0xFFFFFFF0, 0xFFF0E68C, 0xFFE6E6FA, 0xFFFFF0F5, 0xFF7CFC00, 0xFFFFFACD, 0xFFADD8E6, 0xFFF08080, 0xFFE0FFFF, 0xFFFAFAD2, 0xFF90EE90, 0xFFD3D3D3, 0xFFFFB6C1, 0xFFFFA07A, 0xFF20B2AA, 0xFF87CEFA, 0xFF778899, 0xFFB0C4DE, 0xFFFFFFE0, 0xFF00FF00, 0xFF32CD32, 0xFFFAF0E6, 0xFFFF00FF, 0xFF800000, 0xFF66CDAA, 0xFF0000CD, 0xFFBA55D3, 0xFF9370DB, 0xFF3CB371, 0xFF7B68EE, 0xFF00FA9A, 0xFF48D1CC, 0xFFC71585, 0xFF191970, 0xFFF5FFFA, 0xFFFFE4E1, 0xFFFFE4B5, 0xFFFFDEAD, 0xFF000080, 0xFFFDF5E6, 0xFF808000, 0xFF6B8E23, 0xFFFFA500, 0xFFFF4500, 0xFFDA70D6, 0xFFEEE8AA, 0xFF98FB98, 0xFFAFEEEE, 0xFFDB7093, 0xFFFFEFD5, 0xFFFFDAB9, 0xFFCD853F, 0xFFFFC0CB, 0xFFDDA0DD, 0xFFB0E0E6, 0xFF800080, 0xFFFF0000, 0xFFBC8F8F, 0xFF4169E1, 0xFF8B4513, 0xFFFA8072, 0xFFF4A460, 0xFF2E8B57, 0xFFFFF5EE, 0xFFA0522D, 0xFFC0C0C0, 0xFF87CEEB, 0xFF6A5ACD, 0xFF708090, 0xFFFFFAFA, 0xFF00FF7F, 0xFF4682B4, 0xFFD2B48C, 0xFF008080, 0xFFD8BFD8, 0xFFFF6347, 0xFF40E0D0, 0xFFEE82EE, 0xFFF5DEB3, 0xFFFFFFFF, 0xFFF5F5F5, 0xFFFFFF00, 0xFF9ACD32, 0xFFAFD7FF, 0xFF2E8B57, 0xFF98FFB3, 0xFF808080, 0xFFFFABBB, 0xFFFF4500, 0xFFF6F675]));
+c$.mapJavaScriptColors = c$.prototype.mapJavaScriptColors =  new java.util.Hashtable ();
+{
+for (var i = javajs.util.CU.colorNames.length; --i >= 0; ) javajs.util.CU.mapJavaScriptColors.put (javajs.util.CU.colorNames[i], Integer.$valueOf (javajs.util.CU.colorArgbs[i]));
+
+}});
index cf79e99..56f6075 100644 (file)
Binary files a/bin/javajs/util/CifDataParser.class and b/bin/javajs/util/CifDataParser.class differ
index c00c5e1..07e1495 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.api.GenericCifDataParser", "java.util.Hashtable", "javajs.util.SB"], "javajs.util.CifDataParser", ["javajs.util.Lst", "$.PT"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.reader = null;\r
-this.br = null;\r
-this.line = null;\r
-this.str = null;\r
-this.ich = 0;\r
-this.cch = 0;\r
-this.wasUnQuoted = false;\r
-this.strPeeked = null;\r
-this.ichPeeked = 0;\r
-this.fieldCount = 0;\r
-this.loopData = null;\r
-this.fileHeader = null;\r
-this.isHeader = true;\r
-this.nullString = "\0";\r
-this.fields = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "CifDataParser", null, javajs.api.GenericCifDataParser);\r
-Clazz.prepareFields (c$, function () {\r
-this.fileHeader =  new javajs.util.SB ();\r
-});\r
-Clazz.defineMethod (c$, "setNullValue", \r
-function (nullString) {\r
-this.nullString = nullString;\r
-}, "~S");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.overrideMethod (c$, "getLoopData", \r
-function (i) {\r
-return this.loopData[i];\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "getFieldCount", \r
-function () {\r
-return this.fieldCount;\r
-});\r
-Clazz.overrideMethod (c$, "getField", \r
-function (i) {\r
-return this.fields[i];\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "set", \r
-function (reader, br) {\r
-this.reader = reader;\r
-this.br = br;\r
-return this;\r
-}, "javajs.api.GenericLineReader,java.io.BufferedReader");\r
-Clazz.overrideMethod (c$, "getFileHeader", \r
-function () {\r
-return this.fileHeader.toString ();\r
-});\r
-Clazz.overrideMethod (c$, "getAllCifData", \r
-function () {\r
-this.line = "";\r
-var key;\r
-var data = null;\r
-var allData =  new java.util.Hashtable ();\r
-var models =  new javajs.util.Lst ();\r
-allData.put ("models", models);\r
-try {\r
-while ((key = this.getNextToken ()) != null) {\r
-if (key.startsWith ("global_") || key.startsWith ("data_")) {\r
-models.addLast (data =  new java.util.Hashtable ());\r
-data.put ("name", key);\r
-continue;\r
-}if (key.startsWith ("loop_")) {\r
-this.getAllCifLoopData (data);\r
-continue;\r
-}if (key.charAt (0) != '_') {\r
-System.out.println ("CIF ERROR ? should be an underscore: " + key);\r
-} else {\r
-var value = this.getNextToken ();\r
-if (value == null) {\r
-System.out.println ("CIF ERROR ? end of file; data missing: " + key);\r
-} else {\r
-data.put (this.fixKey (key), value);\r
-}}}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-try {\r
-if (this.br != null) this.br.close ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return allData;\r
-});\r
-Clazz.defineMethod (c$, "getAllCifLoopData", \r
-($fz = function (data) {\r
-var key;\r
-var keyWords =  new javajs.util.Lst ();\r
-while ((key = this.peekToken ()) != null && key.charAt (0) == '_') {\r
-key = this.fixKey (this.getTokenPeeked ());\r
-keyWords.addLast (key);\r
-data.put (key,  new javajs.util.Lst ());\r
-}\r
-this.fieldCount = keyWords.size ();\r
-if (this.fieldCount == 0) return;\r
-this.loopData =  new Array (this.fieldCount);\r
-while (this.getData ()) for (var i = 0; i < this.fieldCount; i++) (data.get (keyWords.get (i))).addLast (this.loopData[i]);\r
-\r
-\r
-}, $fz.isPrivate = true, $fz), "java.util.Map");\r
-Clazz.overrideMethod (c$, "readLine", \r
-function () {\r
-try {\r
-this.line = (this.reader == null ? this.br.readLine () : this.reader.readNextLine ());\r
-if (this.line == null) return null;\r
-if (this.isHeader) {\r
-if (this.line.startsWith ("#")) this.fileHeader.append (this.line).appendC ('\n');\r
- else this.isHeader = false;\r
-}return this.line;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-return null;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-});\r
-Clazz.overrideMethod (c$, "getData", \r
-function () {\r
-for (var i = 0; i < this.fieldCount; ++i) if ((this.loopData[i] = this.getNextDataToken ()) == null) return false;\r
-\r
-return (this.fieldCount > 0);\r
-});\r
-Clazz.overrideMethod (c$, "skipLoop", \r
-function (doReport) {\r
-var str;\r
-var ret = (doReport ?  new javajs.util.SB () : null);\r
-var n = 0;\r
-while ((str = this.peekToken ()) != null && str.charAt (0) == '_') {\r
-if (ret != null) ret.append (str).append ("\n");\r
-this.getTokenPeeked ();\r
-n++;\r
-}\r
-var m = 0;\r
-while ((str = this.getNextDataToken ()) != null) {\r
-if (ret == null) continue;\r
-ret.append (str).append (" ");\r
-if ((++m % n) == 0) ret.append ("\n");\r
-}\r
-return (ret == null ? null : ret.toString ());\r
-}, "~B");\r
-Clazz.overrideMethod (c$, "getNextToken", \r
-function () {\r
-while (!this.strHasMoreTokens ()) if (this.setStringNextLine () == null) return null;\r
-\r
-return this.nextStrToken ();\r
-});\r
-Clazz.overrideMethod (c$, "getNextDataToken", \r
-function () {\r
-var str = this.peekToken ();\r
-if (str == null) return null;\r
-if (this.wasUnQuoted) if (str.charAt (0) == '_' || str.startsWith ("loop_") || str.startsWith ("data_") || str.startsWith ("stop_") || str.startsWith ("global_")) return null;\r
-return this.getTokenPeeked ();\r
-});\r
-Clazz.overrideMethod (c$, "peekToken", \r
-function () {\r
-while (!this.strHasMoreTokens ()) if (this.setStringNextLine () == null) return null;\r
-\r
-var ich = this.ich;\r
-this.strPeeked = this.nextStrToken ();\r
-this.ichPeeked = this.ich;\r
-this.ich = ich;\r
-return this.strPeeked;\r
-});\r
-Clazz.overrideMethod (c$, "getTokenPeeked", \r
-function () {\r
-this.ich = this.ichPeeked;\r
-return this.strPeeked;\r
-});\r
-Clazz.overrideMethod (c$, "fullTrim", \r
-function (str) {\r
-var pt0 = -1;\r
-var pt1 = str.length;\r
-while (++pt0 < pt1 && javajs.util.PT.isWhitespace (str.charAt (pt0))) {\r
-}\r
-while (--pt1 > pt0 && javajs.util.PT.isWhitespace (str.charAt (pt1))) {\r
-}\r
-return str.substring (pt0, pt1 + 1);\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "toUnicode", \r
-function (data) {\r
-var pt;\r
-try {\r
-while ((pt = data.indexOf ('\\')) >= 0) {\r
-var c = data.charCodeAt (pt + 1);\r
-var ch = (c >= 65 && c <= 90 ? "ABX\u0394E\u03a6\u0393HI_K\u039bMNO\u03a0\u0398P\u03a3TY_\u03a9\u039e\u03a5Z".substring (c - 65, c - 64) : c >= 97 && c <= 122 ? "\u03b1\u03b2\u03c7\u03a4\u03a5\u03c6\u03b3\u03b7\u03b9_\u03ba\u03bb\u03bc\u03bd\u03bf\u03c0\u03b8\u03c1\u03c3\u03c4\u03c5_\u03c9\u03be\u03c5\u03b6".substring (c - 97, c - 96) : "_");\r
-data = data.substring (0, pt) + ch + data.substring (pt + 2);\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return data;\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "parseLoopParameters", \r
-function (fields, fieldOf, propertyOf) {\r
-var propertyCount = 0;\r
-if (fields == null) {\r
-this.fields =  new Array (100);\r
-} else {\r
-if (!javajs.util.CifDataParser.htFields.containsKey (fields[0])) for (var i = fields.length; --i >= 0; ) javajs.util.CifDataParser.htFields.put (fields[i], Integer.$valueOf (i));\r
-\r
-for (var i = fields.length; --i >= 0; ) fieldOf[i] = -1;\r
-\r
-propertyCount = fields.length;\r
-}this.fieldCount = 0;\r
-while (true) {\r
-var str = this.peekToken ();\r
-if (str == null) {\r
-this.fieldCount = 0;\r
-break;\r
-}if (str.charAt (0) != '_') break;\r
-var pt = this.fieldCount++;\r
-str = this.fixKey (this.getTokenPeeked ());\r
-if (fields == null) {\r
-this.fields[propertyOf[pt] = fieldOf[pt] = pt] = str;\r
-continue;\r
-}var iField = javajs.util.CifDataParser.htFields.get (str);\r
-var i = (iField == null ? -1 : iField.intValue ());\r
-if ((propertyOf[pt] = i) != -1) fieldOf[i] = pt;\r
-}\r
-if (this.fieldCount > 0) this.loopData =  new Array (this.fieldCount);\r
-return propertyCount;\r
-}, "~A,~A,~A");\r
-Clazz.overrideMethod (c$, "fixKey", \r
-function (key) {\r
-return (javajs.util.PT.rep (key.startsWith ("_magnetic") ? key.substring (9) : key.startsWith ("_jana") ? key.substring (5) : key, ".", "_").toLowerCase ());\r
-}, "~S");\r
-Clazz.defineMethod (c$, "setString", \r
-($fz = function (str) {\r
-this.str = this.line = str;\r
-this.cch = (str == null ? 0 : str.length);\r
-this.ich = 0;\r
-}, $fz.isPrivate = true, $fz), "~S");\r
-Clazz.defineMethod (c$, "setStringNextLine", \r
-($fz = function () {\r
-this.setString (this.readLine ());\r
-if (this.line == null || this.line.length == 0) return this.line;\r
-if (this.line.charAt (0) != ';') {\r
-if (this.str.startsWith ("###non-st#")) this.ich = 10;\r
-return this.line;\r
-}this.ich = 1;\r
-var str = '\1' + this.line.substring (1) + '\n';\r
-while (this.readLine () != null) {\r
-if (this.line.startsWith (";")) {\r
-str = str.substring (0, str.length - 1) + '\1' + this.line.substring (1);\r
-break;\r
-}str += this.line + '\n';\r
-}\r
-this.setString (str);\r
-return str;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "strHasMoreTokens", \r
-($fz = function () {\r
-if (this.str == null) return false;\r
-var ch = '#';\r
-while (this.ich < this.cch && ((ch = this.str.charAt (this.ich)) == ' ' || ch == '\t')) ++this.ich;\r
-\r
-return (this.ich < this.cch && ch != '#');\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "nextStrToken", \r
-($fz = function () {\r
-if (this.ich == this.cch) return null;\r
-var ichStart = this.ich;\r
-var ch = this.str.charAt (ichStart);\r
-if (ch != '\'' && ch != '"' && ch != '\1') {\r
-this.wasUnQuoted = true;\r
-while (this.ich < this.cch && (ch = this.str.charAt (this.ich)) != ' ' && ch != '\t') ++this.ich;\r
-\r
-if (this.ich == ichStart + 1) if (this.nullString != null && (this.str.charAt (ichStart) == '.' || this.str.charAt (ichStart) == '?')) return this.nullString;\r
-var s = this.str.substring (ichStart, this.ich);\r
-return s;\r
-}this.wasUnQuoted = false;\r
-var chOpeningQuote = ch;\r
-var previousCharacterWasQuote = false;\r
-while (++this.ich < this.cch) {\r
-ch = this.str.charAt (this.ich);\r
-if (previousCharacterWasQuote && (ch == ' ' || ch == '\t')) break;\r
-previousCharacterWasQuote = (ch == chOpeningQuote);\r
-}\r
-if (this.ich == this.cch) {\r
-if (previousCharacterWasQuote) return this.str.substring (ichStart + 1, this.ich - 1);\r
-return this.str.substring (ichStart, this.ich);\r
-}++this.ich;\r
-return this.str.substring (ichStart + 1, this.ich - 2);\r
-}, $fz.isPrivate = true, $fz));\r
-c$.htFields = c$.prototype.htFields =  new java.util.Hashtable ();\r
-Clazz.defineStatics (c$,\r
-"grABC", "ABX\u0394E\u03a6\u0393HI_K\u039bMNO\u03a0\u0398P\u03a3TY_\u03a9\u039e\u03a5Z",\r
-"grabc", "\u03b1\u03b2\u03c7\u03a4\u03a5\u03c6\u03b3\u03b7\u03b9_\u03ba\u03bb\u03bc\u03bd\u03bf\u03c0\u03b8\u03c1\u03c3\u03c4\u03c5_\u03c9\u03be\u03c5\u03b6");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.api.GenericCifDataParser", "java.util.Hashtable", "javajs.util.SB"], "javajs.util.CifDataParser", ["javajs.util.Lst", "$.PT"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.reader = null;
+this.br = null;
+this.line = null;
+this.str = null;
+this.ich = 0;
+this.cch = 0;
+this.wasUnQuoted = false;
+this.strPeeked = null;
+this.ichPeeked = 0;
+this.fieldCount = 0;
+this.loopData = null;
+this.fileHeader = null;
+this.isHeader = true;
+this.nullString = "\0";
+this.fields = null;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "CifDataParser", null, javajs.api.GenericCifDataParser);
+Clazz.prepareFields (c$, function () {
+this.fileHeader =  new javajs.util.SB ();
+});
+Clazz.defineMethod (c$, "setNullValue", 
+function (nullString) {
+this.nullString = nullString;
+}, "~S");
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.overrideMethod (c$, "getLoopData", 
+function (i) {
+return this.loopData[i];
+}, "~N");
+Clazz.overrideMethod (c$, "getFieldCount", 
+function () {
+return this.fieldCount;
+});
+Clazz.overrideMethod (c$, "getField", 
+function (i) {
+return this.fields[i];
+}, "~N");
+Clazz.overrideMethod (c$, "set", 
+function (reader, br) {
+this.reader = reader;
+this.br = br;
+return this;
+}, "javajs.api.GenericLineReader,java.io.BufferedReader");
+Clazz.overrideMethod (c$, "getFileHeader", 
+function () {
+return this.fileHeader.toString ();
+});
+Clazz.overrideMethod (c$, "getAllCifData", 
+function () {
+this.line = "";
+var key;
+var data = null;
+var allData =  new java.util.Hashtable ();
+var models =  new javajs.util.Lst ();
+allData.put ("models", models);
+try {
+while ((key = this.getNextToken ()) != null) {
+if (key.startsWith ("global_") || key.startsWith ("data_")) {
+models.addLast (data =  new java.util.Hashtable ());
+data.put ("name", key);
+continue;
+}if (key.startsWith ("loop_")) {
+this.getAllCifLoopData (data);
+continue;
+}if (key.charAt (0) != '_') {
+System.out.println ("CIF ERROR ? should be an underscore: " + key);
+} else {
+var value = this.getNextToken ();
+if (value == null) {
+System.out.println ("CIF ERROR ? end of file; data missing: " + key);
+} else {
+data.put (this.fixKey (key), value);
+}}}
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+try {
+if (this.br != null) this.br.close ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+return allData;
+});
+Clazz.defineMethod (c$, "getAllCifLoopData", 
+($fz = function (data) {
+var key;
+var keyWords =  new javajs.util.Lst ();
+while ((key = this.peekToken ()) != null && key.charAt (0) == '_') {
+key = this.fixKey (this.getTokenPeeked ());
+keyWords.addLast (key);
+data.put (key,  new javajs.util.Lst ());
+}
+this.fieldCount = keyWords.size ();
+if (this.fieldCount == 0) return;
+this.loopData =  new Array (this.fieldCount);
+while (this.getData ()) for (var i = 0; i < this.fieldCount; i++) (data.get (keyWords.get (i))).addLast (this.loopData[i]);
+
+
+}, $fz.isPrivate = true, $fz), "java.util.Map");
+Clazz.overrideMethod (c$, "readLine", 
+function () {
+try {
+this.line = (this.reader == null ? this.br.readLine () : this.reader.readNextLine ());
+if (this.line == null) return null;
+if (this.isHeader) {
+if (this.line.startsWith ("#")) this.fileHeader.append (this.line).appendC ('\n');
+ else this.isHeader = false;
+}return this.line;
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+return null;
+} else {
+throw e;
+}
+}
+});
+Clazz.overrideMethod (c$, "getData", 
+function () {
+for (var i = 0; i < this.fieldCount; ++i) if ((this.loopData[i] = this.getNextDataToken ()) == null) return false;
+
+return (this.fieldCount > 0);
+});
+Clazz.overrideMethod (c$, "skipLoop", 
+function (doReport) {
+var str;
+var ret = (doReport ?  new javajs.util.SB () : null);
+var n = 0;
+while ((str = this.peekToken ()) != null && str.charAt (0) == '_') {
+if (ret != null) ret.append (str).append ("\n");
+this.getTokenPeeked ();
+n++;
+}
+var m = 0;
+while ((str = this.getNextDataToken ()) != null) {
+if (ret == null) continue;
+ret.append (str).append (" ");
+if ((++m % n) == 0) ret.append ("\n");
+}
+return (ret == null ? null : ret.toString ());
+}, "~B");
+Clazz.overrideMethod (c$, "getNextToken", 
+function () {
+while (!this.strHasMoreTokens ()) if (this.setStringNextLine () == null) return null;
+
+return this.nextStrToken ();
+});
+Clazz.overrideMethod (c$, "getNextDataToken", 
+function () {
+var str = this.peekToken ();
+if (str == null) return null;
+if (this.wasUnQuoted) if (str.charAt (0) == '_' || str.startsWith ("loop_") || str.startsWith ("data_") || str.startsWith ("stop_") || str.startsWith ("global_")) return null;
+return this.getTokenPeeked ();
+});
+Clazz.overrideMethod (c$, "peekToken", 
+function () {
+while (!this.strHasMoreTokens ()) if (this.setStringNextLine () == null) return null;
+
+var ich = this.ich;
+this.strPeeked = this.nextStrToken ();
+this.ichPeeked = this.ich;
+this.ich = ich;
+return this.strPeeked;
+});
+Clazz.overrideMethod (c$, "getTokenPeeked", 
+function () {
+this.ich = this.ichPeeked;
+return this.strPeeked;
+});
+Clazz.overrideMethod (c$, "fullTrim", 
+function (str) {
+var pt0 = -1;
+var pt1 = str.length;
+while (++pt0 < pt1 && javajs.util.PT.isWhitespace (str.charAt (pt0))) {
+}
+while (--pt1 > pt0 && javajs.util.PT.isWhitespace (str.charAt (pt1))) {
+}
+return str.substring (pt0, pt1 + 1);
+}, "~S");
+Clazz.overrideMethod (c$, "toUnicode", 
+function (data) {
+var pt;
+try {
+while ((pt = data.indexOf ('\\')) >= 0) {
+var c = data.charCodeAt (pt + 1);
+var ch = (c >= 65 && c <= 90 ? "ABX\u0394E\u03a6\u0393HI_K\u039bMNO\u03a0\u0398P\u03a3TY_\u03a9\u039e\u03a5Z".substring (c - 65, c - 64) : c >= 97 && c <= 122 ? "\u03b1\u03b2\u03c7\u03a4\u03a5\u03c6\u03b3\u03b7\u03b9_\u03ba\u03bb\u03bc\u03bd\u03bf\u03c0\u03b8\u03c1\u03c3\u03c4\u03c5_\u03c9\u03be\u03c5\u03b6".substring (c - 97, c - 96) : "_");
+data = data.substring (0, pt) + ch + data.substring (pt + 2);
+}
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+return data;
+}, "~S");
+Clazz.overrideMethod (c$, "parseLoopParameters", 
+function (fields, fieldOf, propertyOf) {
+var propertyCount = 0;
+if (fields == null) {
+this.fields =  new Array (100);
+} else {
+if (!javajs.util.CifDataParser.htFields.containsKey (fields[0])) for (var i = fields.length; --i >= 0; ) javajs.util.CifDataParser.htFields.put (fields[i], Integer.$valueOf (i));
+
+for (var i = fields.length; --i >= 0; ) fieldOf[i] = -1;
+
+propertyCount = fields.length;
+}this.fieldCount = 0;
+while (true) {
+var str = this.peekToken ();
+if (str == null) {
+this.fieldCount = 0;
+break;
+}if (str.charAt (0) != '_') break;
+var pt = this.fieldCount++;
+str = this.fixKey (this.getTokenPeeked ());
+if (fields == null) {
+this.fields[propertyOf[pt] = fieldOf[pt] = pt] = str;
+continue;
+}var iField = javajs.util.CifDataParser.htFields.get (str);
+var i = (iField == null ? -1 : iField.intValue ());
+if ((propertyOf[pt] = i) != -1) fieldOf[i] = pt;
+}
+if (this.fieldCount > 0) this.loopData =  new Array (this.fieldCount);
+return propertyCount;
+}, "~A,~A,~A");
+Clazz.overrideMethod (c$, "fixKey", 
+function (key) {
+return (javajs.util.PT.rep (key.startsWith ("_magnetic") ? key.substring (9) : key.startsWith ("_jana") ? key.substring (5) : key, ".", "_").toLowerCase ());
+}, "~S");
+Clazz.defineMethod (c$, "setString", 
+($fz = function (str) {
+this.str = this.line = str;
+this.cch = (str == null ? 0 : str.length);
+this.ich = 0;
+}, $fz.isPrivate = true, $fz), "~S");
+Clazz.defineMethod (c$, "setStringNextLine", 
+($fz = function () {
+this.setString (this.readLine ());
+if (this.line == null || this.line.length == 0) return this.line;
+if (this.line.charAt (0) != ';') {
+if (this.str.startsWith ("###non-st#")) this.ich = 10;
+return this.line;
+}this.ich = 1;
+var str = '\1' + this.line.substring (1) + '\n';
+while (this.readLine () != null) {
+if (this.line.startsWith (";")) {
+str = str.substring (0, str.length - 1) + '\1' + this.line.substring (1);
+break;
+}str += this.line + '\n';
+}
+this.setString (str);
+return str;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "strHasMoreTokens", 
+($fz = function () {
+if (this.str == null) return false;
+var ch = '#';
+while (this.ich < this.cch && ((ch = this.str.charAt (this.ich)) == ' ' || ch == '\t')) ++this.ich;
+
+return (this.ich < this.cch && ch != '#');
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "nextStrToken", 
+($fz = function () {
+if (this.ich == this.cch) return null;
+var ichStart = this.ich;
+var ch = this.str.charAt (ichStart);
+if (ch != '\'' && ch != '"' && ch != '\1') {
+this.wasUnQuoted = true;
+while (this.ich < this.cch && (ch = this.str.charAt (this.ich)) != ' ' && ch != '\t') ++this.ich;
+
+if (this.ich == ichStart + 1) if (this.nullString != null && (this.str.charAt (ichStart) == '.' || this.str.charAt (ichStart) == '?')) return this.nullString;
+var s = this.str.substring (ichStart, this.ich);
+return s;
+}this.wasUnQuoted = false;
+var chOpeningQuote = ch;
+var previousCharacterWasQuote = false;
+while (++this.ich < this.cch) {
+ch = this.str.charAt (this.ich);
+if (previousCharacterWasQuote && (ch == ' ' || ch == '\t')) break;
+previousCharacterWasQuote = (ch == chOpeningQuote);
+}
+if (this.ich == this.cch) {
+if (previousCharacterWasQuote) return this.str.substring (ichStart + 1, this.ich - 1);
+return this.str.substring (ichStart, this.ich);
+}++this.ich;
+return this.str.substring (ichStart + 1, this.ich - 2);
+}, $fz.isPrivate = true, $fz));
+c$.htFields = c$.prototype.htFields =  new java.util.Hashtable ();
+Clazz.defineStatics (c$,
+"grABC", "ABX\u0394E\u03a6\u0393HI_K\u039bMNO\u03a0\u0398P\u03a3TY_\u03a9\u039e\u03a5Z",
+"grabc", "\u03b1\u03b2\u03c7\u03a4\u03a5\u03c6\u03b3\u03b7\u03b9_\u03ba\u03bb\u03bc\u03bd\u03bf\u03c0\u03b8\u03c1\u03c3\u03c4\u03c5_\u03c9\u03be\u03c5\u03b6");
+});
index d792190..5c3ab43 100644 (file)
@@ -1,58 +1,58 @@
-Clazz.declarePackage ("javajs.util");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.cd = null;\r
-this.unicodeName64 = null;\r
-this.nBytesUnicodeName = 0;\r
-this.entryType = 0;\r
-this.uniqueID16 = null;\r
-this.userflags4 = null;\r
-this.SIDfirstSector = 0;\r
-this.lenStream = 0;\r
-this.unused = null;\r
-this.entryName = null;\r
-this.isStandard = false;\r
-this.isEmpty = false;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "CompoundDocDirEntry");\r
-Clazz.prepareFields (c$, function () {\r
-this.unicodeName64 =  Clazz.newByteArray (64, 0);\r
-this.uniqueID16 =  Clazz.newByteArray (16, 0);\r
-this.userflags4 =  Clazz.newByteArray (4, 0);\r
-this.unused =  Clazz.newByteArray (8, 0);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (compoundDocument) {\r
-this.cd = compoundDocument;\r
-}, "javajs.util.CompoundDocument");\r
-Clazz.defineMethod (c$, "readData", \r
-function () {\r
-try {\r
-this.cd.readByteArray (this.unicodeName64, 0, 64);\r
-this.nBytesUnicodeName = this.cd.readShort ();\r
-this.entryType = this.cd.readByte ();\r
-this.cd.readByte ();\r
-this.cd.readInt ();\r
-this.cd.readInt ();\r
-this.cd.readInt ();\r
-this.cd.readByteArray (this.uniqueID16, 0, 16);\r
-this.cd.readByteArray (this.userflags4, 0, 4);\r
-this.cd.readByteArray (this.unused, 0, 8);\r
-this.cd.readByteArray (this.unused, 0, 8);\r
-this.SIDfirstSector = this.cd.readInt ();\r
-this.lenStream = this.cd.readInt ();\r
-this.cd.readByteArray (this.unused, 0, 4);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println (e.toString ());\r
-return false;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.entryName = "";\r
-for (var i = 0; i < this.nBytesUnicodeName - 2; i += 2) this.entryName += String.fromCharCode (this.unicodeName64[i]);\r
-\r
-this.isStandard = (this.entryType == 5 || this.lenStream >= this.cd.header.minBytesStandardStream);\r
-this.isEmpty = (this.entryType == 0 || this.lenStream <= 0);\r
-return true;\r
-});\r
+Clazz.declarePackage ("javajs.util");
+c$ = Clazz.decorateAsClass (function () {
+this.cd = null;
+this.unicodeName64 = null;
+this.nBytesUnicodeName = 0;
+this.entryType = 0;
+this.uniqueID16 = null;
+this.userflags4 = null;
+this.SIDfirstSector = 0;
+this.lenStream = 0;
+this.unused = null;
+this.entryName = null;
+this.isStandard = false;
+this.isEmpty = false;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "CompoundDocDirEntry");
+Clazz.prepareFields (c$, function () {
+this.unicodeName64 =  Clazz.newByteArray (64, 0);
+this.uniqueID16 =  Clazz.newByteArray (16, 0);
+this.userflags4 =  Clazz.newByteArray (4, 0);
+this.unused =  Clazz.newByteArray (8, 0);
+});
+Clazz.makeConstructor (c$, 
+function (compoundDocument) {
+this.cd = compoundDocument;
+}, "javajs.util.CompoundDocument");
+Clazz.defineMethod (c$, "readData", 
+function () {
+try {
+this.cd.readByteArray (this.unicodeName64, 0, 64);
+this.nBytesUnicodeName = this.cd.readShort ();
+this.entryType = this.cd.readByte ();
+this.cd.readByte ();
+this.cd.readInt ();
+this.cd.readInt ();
+this.cd.readInt ();
+this.cd.readByteArray (this.uniqueID16, 0, 16);
+this.cd.readByteArray (this.userflags4, 0, 4);
+this.cd.readByteArray (this.unused, 0, 8);
+this.cd.readByteArray (this.unused, 0, 8);
+this.SIDfirstSector = this.cd.readInt ();
+this.lenStream = this.cd.readInt ();
+this.cd.readByteArray (this.unused, 0, 4);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println (e.toString ());
+return false;
+} else {
+throw e;
+}
+}
+this.entryName = "";
+for (var i = 0; i < this.nBytesUnicodeName - 2; i += 2) this.entryName += String.fromCharCode (this.unicodeName64[i]);
+
+this.isStandard = (this.entryType == 5 || this.lenStream >= this.cd.header.minBytesStandardStream);
+this.isEmpty = (this.entryType == 0 || this.lenStream <= 0);
+return true;
+});
index 14d9c45..30d7fd1 100644 (file)
@@ -1,66 +1,66 @@
-Clazz.declarePackage ("javajs.util");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.cd = null;\r
-this.magicNumbers = null;\r
-this.uniqueID16 = null;\r
-this.revNumber = 0;\r
-this.verNumber = 0;\r
-this.sectorPower = 0;\r
-this.shortSectorPower = 0;\r
-this.unused = null;\r
-this.nSATsectors = 0;\r
-this.SID_DIR_start = 0;\r
-this.minBytesStandardStream = 0;\r
-this.SID_SSAT_start = 0;\r
-this.nSSATsectors = 0;\r
-this.SID_MSAT_next = 0;\r
-this.nAdditionalMATsectors = 0;\r
-this.MSAT0 = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "CompoundDocHeader");\r
-Clazz.prepareFields (c$, function () {\r
-this.magicNumbers =  Clazz.newByteArray (8, 0);\r
-this.uniqueID16 =  Clazz.newByteArray (16, 0);\r
-this.unused =  Clazz.newByteArray (10, 0);\r
-this.MSAT0 =  Clazz.newIntArray (109, 0);\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (compoundDocument) {\r
-this.cd = compoundDocument;\r
-}, "javajs.util.CompoundDocument");\r
-Clazz.defineMethod (c$, "readData", \r
-function () {\r
-try {\r
-this.cd.readByteArray (this.magicNumbers, 0, 8);\r
-if (this.magicNumbers[0] != 0xD0 || this.magicNumbers[1] != 0xCF || this.magicNumbers[2] != 0x11 || this.magicNumbers[3] != 0xE0 || this.magicNumbers[4] != 0xA1 || this.magicNumbers[5] != 0xB1 || this.magicNumbers[6] != 0x1A || this.magicNumbers[7] != 0xE1) return false;\r
-this.cd.readByteArray (this.uniqueID16, 0, 16);\r
-this.revNumber = this.cd.readByte ();\r
-this.cd.readByte ();\r
-this.verNumber = this.cd.readByte ();\r
-this.cd.readByte ();\r
-var b1 = this.cd.readByte ();\r
-var b2 = this.cd.readByte ();\r
-this.cd.isBigEndian = (b1 == -1 && b2 == -2);\r
-this.sectorPower = this.cd.readShort ();\r
-this.shortSectorPower = this.cd.readShort ();\r
-this.cd.readByteArray (this.unused, 0, 10);\r
-this.nSATsectors = this.cd.readInt ();\r
-this.SID_DIR_start = this.cd.readInt ();\r
-this.cd.readByteArray (this.unused, 0, 4);\r
-this.minBytesStandardStream = this.cd.readInt ();\r
-this.SID_SSAT_start = this.cd.readInt ();\r
-this.nSSATsectors = this.cd.readInt ();\r
-this.SID_MSAT_next = this.cd.readInt ();\r
-this.nAdditionalMATsectors = this.cd.readInt ();\r
-for (var i = 0; i < 109; i++) this.MSAT0[i] = this.cd.readInt ();\r
-\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println (e.toString ());\r
-return false;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return true;\r
-});\r
+Clazz.declarePackage ("javajs.util");
+c$ = Clazz.decorateAsClass (function () {
+this.cd = null;
+this.magicNumbers = null;
+this.uniqueID16 = null;
+this.revNumber = 0;
+this.verNumber = 0;
+this.sectorPower = 0;
+this.shortSectorPower = 0;
+this.unused = null;
+this.nSATsectors = 0;
+this.SID_DIR_start = 0;
+this.minBytesStandardStream = 0;
+this.SID_SSAT_start = 0;
+this.nSSATsectors = 0;
+this.SID_MSAT_next = 0;
+this.nAdditionalMATsectors = 0;
+this.MSAT0 = null;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "CompoundDocHeader");
+Clazz.prepareFields (c$, function () {
+this.magicNumbers =  Clazz.newByteArray (8, 0);
+this.uniqueID16 =  Clazz.newByteArray (16, 0);
+this.unused =  Clazz.newByteArray (10, 0);
+this.MSAT0 =  Clazz.newIntArray (109, 0);
+});
+Clazz.makeConstructor (c$, 
+function (compoundDocument) {
+this.cd = compoundDocument;
+}, "javajs.util.CompoundDocument");
+Clazz.defineMethod (c$, "readData", 
+function () {
+try {
+this.cd.readByteArray (this.magicNumbers, 0, 8);
+if (this.magicNumbers[0] != 0xD0 || this.magicNumbers[1] != 0xCF || this.magicNumbers[2] != 0x11 || this.magicNumbers[3] != 0xE0 || this.magicNumbers[4] != 0xA1 || this.magicNumbers[5] != 0xB1 || this.magicNumbers[6] != 0x1A || this.magicNumbers[7] != 0xE1) return false;
+this.cd.readByteArray (this.uniqueID16, 0, 16);
+this.revNumber = this.cd.readByte ();
+this.cd.readByte ();
+this.verNumber = this.cd.readByte ();
+this.cd.readByte ();
+var b1 = this.cd.readByte ();
+var b2 = this.cd.readByte ();
+this.cd.isBigEndian = (b1 == -1 && b2 == -2);
+this.sectorPower = this.cd.readShort ();
+this.shortSectorPower = this.cd.readShort ();
+this.cd.readByteArray (this.unused, 0, 10);
+this.nSATsectors = this.cd.readInt ();
+this.SID_DIR_start = this.cd.readInt ();
+this.cd.readByteArray (this.unused, 0, 4);
+this.minBytesStandardStream = this.cd.readInt ();
+this.SID_SSAT_start = this.cd.readInt ();
+this.nSSATsectors = this.cd.readInt ();
+this.SID_MSAT_next = this.cd.readInt ();
+this.nAdditionalMATsectors = this.cd.readInt ();
+for (var i = 0; i < 109; i++) this.MSAT0[i] = this.cd.readInt ();
+
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println (e.toString ());
+return false;
+} else {
+throw e;
+}
+}
+return true;
+});
index ef31fcf..d2a24d4 100644 (file)
Binary files a/bin/javajs/util/CompoundDocument.class and b/bin/javajs/util/CompoundDocument.class differ
index 7e480bc..a37c69e 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.util.BinaryDocument", "$.CompoundDocHeader", "$.Lst"], "javajs.util.CompoundDocument", ["java.io.DataInputStream", "javajs.util.CompoundDocDirEntry", "$.SB", "$.ZipData"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.header = null;\r
-this.directory = null;\r
-this.rootEntry = null;\r
-this.SAT = null;\r
-this.SSAT = null;\r
-this.sectorSize = 0;\r
-this.shortSectorSize = 0;\r
-this.nShortSectorsPerStandardSector = 0;\r
-this.nIntPerSector = 0;\r
-this.nDirEntriesperSector = 0;\r
-this.data = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "CompoundDocument", javajs.util.BinaryDocument);\r
-Clazz.prepareFields (c$, function () {\r
-this.header =  new javajs.util.CompoundDocHeader (this);\r
-this.directory =  new javajs.util.Lst ();\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javajs.util.CompoundDocument);\r
-this.isBigEndian = true;\r
-});\r
-Clazz.overrideMethod (c$, "setStream", \r
-function (jzt, bis, isBigEndian) {\r
-this.jzt = jzt;\r
-if (!this.isRandom) {\r
-this.stream =  new java.io.DataInputStream (bis);\r
-}this.stream.mark (2147483647);\r
-if (!this.readHeader ()) return;\r
-this.getSectorAllocationTable ();\r
-this.getShortSectorAllocationTable ();\r
-this.getDirectoryTable ();\r
-}, "javajs.api.GenericZipTools,java.io.BufferedInputStream,~B");\r
-Clazz.defineMethod (c$, "getDirectory", \r
-function () {\r
-return this.directory;\r
-});\r
-Clazz.defineMethod (c$, "getDirectoryListing", \r
-function (separator) {\r
-var str = "";\r
-for (var i = 0; i < this.directory.size (); i++) {\r
-var thisEntry = this.directory.get (i);\r
-if (!thisEntry.isEmpty) str += separator + thisEntry.entryName + "\tlen=" + thisEntry.lenStream + "\tSID=" + thisEntry.SIDfirstSector + (thisEntry.isStandard ? "\tfileOffset=" + this.getOffset (thisEntry.SIDfirstSector) : "");\r
-}\r
-return str;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getAllData", \r
-function () {\r
-return this.getAllDataFiles (null, null);\r
-});\r
-Clazz.overrideMethod (c$, "getAllDataMapped", \r
-function (prefix, binaryFileList, fileData) {\r
-fileData.put ("#Directory_Listing", this.getDirectoryListing ("|"));\r
-binaryFileList = "|" + binaryFileList + "|";\r
-for (var i = 0; i < this.directory.size (); i++) {\r
-var thisEntry = this.directory.get (i);\r
-if (!thisEntry.isEmpty && thisEntry.entryType != 5) {\r
-var name = thisEntry.entryName;\r
-System.out.println ("CompoundDocument file " + name);\r
-var isBinary = (binaryFileList.indexOf ("|" + name + "|") >= 0);\r
-if (isBinary) name += ":asBinaryString";\r
-var data =  new javajs.util.SB ();\r
-data.append ("BEGIN Directory Entry ").append (name).append ("\n");\r
-data.appendSB (this.getEntryAsString (thisEntry, isBinary));\r
-data.append ("\nEND Directory Entry ").append (name).append ("\n");\r
-fileData.put (prefix + "/" + name, data.toString ());\r
-}}\r
-this.close ();\r
-}, "~S,~S,java.util.Map");\r
-Clazz.overrideMethod (c$, "getAllDataFiles", \r
-function (binaryFileList, firstFile) {\r
-if (firstFile != null) {\r
-for (var i = 0; i < this.directory.size (); i++) {\r
-var thisEntry = this.directory.get (i);\r
-if (thisEntry.entryName.equals (firstFile)) {\r
-this.directory.remove (i);\r
-this.directory.add (1, thisEntry);\r
-break;\r
-}}\r
-}this.data =  new javajs.util.SB ();\r
-this.data.append ("Compound Document File Directory: ");\r
-this.data.append (this.getDirectoryListing ("|"));\r
-this.data.append ("\n");\r
-binaryFileList = "|" + binaryFileList + "|";\r
-for (var i = 0; i < this.directory.size (); i++) {\r
-var thisEntry = this.directory.get (i);\r
-if (!thisEntry.isEmpty && thisEntry.entryType != 5) {\r
-var name = thisEntry.entryName;\r
-if (name.endsWith (".gz")) name = name.substring (0, name.length - 3);\r
-this.data.append ("BEGIN Directory Entry ").append (name).append ("\n");\r
-this.data.appendSB (this.getEntryAsString (thisEntry, binaryFileList.indexOf ("|" + thisEntry.entryName + "|") >= 0));\r
-this.data.append ("\n");\r
-this.data.append ("END Directory Entry ").append (thisEntry.entryName).append ("\n");\r
-}}\r
-this.close ();\r
-return this.data;\r
-}, "~S,~S");\r
-Clazz.defineMethod (c$, "getFileAsString", \r
-function (entryName) {\r
-for (var i = 0; i < this.directory.size (); i++) {\r
-var thisEntry = this.directory.get (i);\r
-if (thisEntry.entryName.equals (entryName)) return this.getEntryAsString (thisEntry, false);\r
-}\r
-return  new javajs.util.SB ();\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getOffset", \r
-($fz = function (SID) {\r
-return (SID + 1) * this.sectorSize;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "gotoSector", \r
-($fz = function (SID) {\r
-this.seek (this.getOffset (SID));\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "readHeader", \r
-($fz = function () {\r
-if (!this.header.readData ()) return false;\r
-this.sectorSize = 1 << this.header.sectorPower;\r
-this.shortSectorSize = 1 << this.header.shortSectorPower;\r
-this.nShortSectorsPerStandardSector = Clazz.doubleToInt (this.sectorSize / this.shortSectorSize);\r
-this.nIntPerSector = Clazz.doubleToInt (this.sectorSize / 4);\r
-this.nDirEntriesperSector = Clazz.doubleToInt (this.sectorSize / 128);\r
-return true;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "getSectorAllocationTable", \r
-($fz = function () {\r
-var nSID = 0;\r
-var thisSID;\r
-this.SAT =  Clazz.newIntArray (this.header.nSATsectors * this.nIntPerSector + 109, 0);\r
-try {\r
-for (var i = 0; i < 109; i++) {\r
-thisSID = this.header.MSAT0[i];\r
-if (thisSID < 0) break;\r
-this.gotoSector (thisSID);\r
-for (var j = 0; j < this.nIntPerSector; j++) {\r
-this.SAT[nSID++] = this.readInt ();\r
-}\r
-}\r
-var nMaster = this.header.nAdditionalMATsectors;\r
-thisSID = this.header.SID_MSAT_next;\r
-var MSAT =  Clazz.newIntArray (this.nIntPerSector, 0);\r
-out : while (nMaster-- > 0 && thisSID >= 0) {\r
-this.gotoSector (thisSID);\r
-for (var i = 0; i < this.nIntPerSector; i++) MSAT[i] = this.readInt ();\r
-\r
-for (var i = 0; i < this.nIntPerSector - 1; i++) {\r
-thisSID = MSAT[i];\r
-if (thisSID < 0) break out;\r
-this.gotoSector (thisSID);\r
-for (var j = this.nIntPerSector; --j >= 0; ) this.SAT[nSID++] = this.readInt ();\r
-\r
-}\r
-thisSID = MSAT[this.nIntPerSector - 1];\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println (e.toString ());\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "getShortSectorAllocationTable", \r
-($fz = function () {\r
-var nSSID = 0;\r
-var thisSID = this.header.SID_SSAT_start;\r
-var nMax = this.header.nSSATsectors * this.nIntPerSector;\r
-this.SSAT =  Clazz.newIntArray (nMax, 0);\r
-try {\r
-while (thisSID > 0 && nSSID < nMax) {\r
-this.gotoSector (thisSID);\r
-for (var j = 0; j < this.nIntPerSector; j++) {\r
-this.SSAT[nSSID++] = this.readInt ();\r
-}\r
-thisSID = this.SAT[thisSID];\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println (e.toString ());\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "getDirectoryTable", \r
-($fz = function () {\r
-var thisSID = this.header.SID_DIR_start;\r
-var thisEntry;\r
-this.rootEntry = null;\r
-try {\r
-while (thisSID > 0) {\r
-this.gotoSector (thisSID);\r
-for (var j = this.nDirEntriesperSector; --j >= 0; ) {\r
-thisEntry =  new javajs.util.CompoundDocDirEntry (this);\r
-thisEntry.readData ();\r
-if (thisEntry.lenStream > 0) {\r
-this.directory.addLast (thisEntry);\r
-}if (thisEntry.entryType == 5) this.rootEntry = thisEntry;\r
-}\r
-thisSID = this.SAT[thisSID];\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println (e.toString ());\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "getEntryAsString", \r
-($fz = function (thisEntry, asBinaryString) {\r
-if (thisEntry.isEmpty) return  new javajs.util.SB ();\r
-return (thisEntry.isStandard ? this.getStandardStringData (thisEntry.SIDfirstSector, thisEntry.lenStream, asBinaryString) : this.getShortStringData (thisEntry.SIDfirstSector, thisEntry.lenStream, asBinaryString));\r
-}, $fz.isPrivate = true, $fz), "javajs.util.CompoundDocDirEntry,~B");\r
-Clazz.defineMethod (c$, "getStandardStringData", \r
-($fz = function (thisSID, nBytes, asBinaryString) {\r
-var data =  new javajs.util.SB ();\r
-var byteBuf =  Clazz.newByteArray (this.sectorSize, 0);\r
-var gzipData =  new javajs.util.ZipData (nBytes);\r
-try {\r
-while (thisSID > 0 && nBytes > 0) {\r
-this.gotoSector (thisSID);\r
-nBytes = this.getSectorData (data, byteBuf, this.sectorSize, nBytes, asBinaryString, gzipData);\r
-thisSID = this.SAT[thisSID];\r
-}\r
-if (nBytes == -9999) return  new javajs.util.SB ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println (e.toString ());\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (gzipData.isEnabled) gzipData.addTo (this.jzt, data);\r
-return data;\r
-}, $fz.isPrivate = true, $fz), "~N,~N,~B");\r
-Clazz.defineMethod (c$, "getSectorData", \r
-($fz = function (data, byteBuf, nSectorBytes, nBytes, asBinaryString, gzipData) {\r
-this.readByteArray (byteBuf, 0, byteBuf.length);\r
-var n = gzipData.addBytes (byteBuf, nSectorBytes, nBytes);\r
-if (n >= 0) return n;\r
-if (asBinaryString) {\r
-for (var i = 0; i < nSectorBytes; i++) {\r
-data.append (Integer.toHexString (byteBuf[i] & 0xFF)).appendC (' ');\r
-if (--nBytes < 1) break;\r
-}\r
-} else {\r
-for (var i = 0; i < nSectorBytes; i++) {\r
-if (byteBuf[i] == 0) return -9999;\r
-data.appendC (String.fromCharCode (byteBuf[i]));\r
-if (--nBytes < 1) break;\r
-}\r
-}return nBytes;\r
-}, $fz.isPrivate = true, $fz), "javajs.util.SB,~A,~N,~N,~B,javajs.util.ZipData");\r
-Clazz.defineMethod (c$, "getShortStringData", \r
-($fz = function (shortSID, nBytes, asBinaryString) {\r
-var data =  new javajs.util.SB ();\r
-if (this.rootEntry == null) return data;\r
-var thisSID = this.rootEntry.SIDfirstSector;\r
-var ptShort = 0;\r
-var byteBuf =  Clazz.newByteArray (this.shortSectorSize, 0);\r
-var gzipData =  new javajs.util.ZipData (nBytes);\r
-try {\r
-while (thisSID >= 0 && shortSID >= 0 && nBytes > 0) {\r
-while (shortSID - ptShort >= this.nShortSectorsPerStandardSector) {\r
-ptShort += this.nShortSectorsPerStandardSector;\r
-thisSID = this.SAT[thisSID];\r
-}\r
-this.seek (this.getOffset (thisSID) + (shortSID - ptShort) * this.shortSectorSize);\r
-nBytes = this.getSectorData (data, byteBuf, this.shortSectorSize, nBytes, asBinaryString, gzipData);\r
-shortSID = this.SSAT[shortSID];\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println (data.toString ());\r
-System.out.println ("reader error in CompoundDocument " + e.toString ());\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (gzipData.isEnabled) gzipData.addTo (this.jzt, data);\r
-return data;\r
-}, $fz.isPrivate = true, $fz), "~N,~N,~B");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.util.BinaryDocument", "$.CompoundDocHeader", "$.Lst"], "javajs.util.CompoundDocument", ["java.io.DataInputStream", "javajs.util.CompoundDocDirEntry", "$.SB", "$.ZipData"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.header = null;
+this.directory = null;
+this.rootEntry = null;
+this.SAT = null;
+this.SSAT = null;
+this.sectorSize = 0;
+this.shortSectorSize = 0;
+this.nShortSectorsPerStandardSector = 0;
+this.nIntPerSector = 0;
+this.nDirEntriesperSector = 0;
+this.data = null;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "CompoundDocument", javajs.util.BinaryDocument);
+Clazz.prepareFields (c$, function () {
+this.header =  new javajs.util.CompoundDocHeader (this);
+this.directory =  new javajs.util.Lst ();
+});
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javajs.util.CompoundDocument);
+this.isBigEndian = true;
+});
+Clazz.overrideMethod (c$, "setStream", 
+function (jzt, bis, isBigEndian) {
+this.jzt = jzt;
+if (!this.isRandom) {
+this.stream =  new java.io.DataInputStream (bis);
+}this.stream.mark (2147483647);
+if (!this.readHeader ()) return;
+this.getSectorAllocationTable ();
+this.getShortSectorAllocationTable ();
+this.getDirectoryTable ();
+}, "javajs.api.GenericZipTools,java.io.BufferedInputStream,~B");
+Clazz.defineMethod (c$, "getDirectory", 
+function () {
+return this.directory;
+});
+Clazz.defineMethod (c$, "getDirectoryListing", 
+function (separator) {
+var str = "";
+for (var i = 0; i < this.directory.size (); i++) {
+var thisEntry = this.directory.get (i);
+if (!thisEntry.isEmpty) str += separator + thisEntry.entryName + "\tlen=" + thisEntry.lenStream + "\tSID=" + thisEntry.SIDfirstSector + (thisEntry.isStandard ? "\tfileOffset=" + this.getOffset (thisEntry.SIDfirstSector) : "");
+}
+return str;
+}, "~S");
+Clazz.defineMethod (c$, "getAllData", 
+function () {
+return this.getAllDataFiles (null, null);
+});
+Clazz.overrideMethod (c$, "getAllDataMapped", 
+function (prefix, binaryFileList, fileData) {
+fileData.put ("#Directory_Listing", this.getDirectoryListing ("|"));
+binaryFileList = "|" + binaryFileList + "|";
+for (var i = 0; i < this.directory.size (); i++) {
+var thisEntry = this.directory.get (i);
+if (!thisEntry.isEmpty && thisEntry.entryType != 5) {
+var name = thisEntry.entryName;
+System.out.println ("CompoundDocument file " + name);
+var isBinary = (binaryFileList.indexOf ("|" + name + "|") >= 0);
+if (isBinary) name += ":asBinaryString";
+var data =  new javajs.util.SB ();
+data.append ("BEGIN Directory Entry ").append (name).append ("\n");
+data.appendSB (this.getEntryAsString (thisEntry, isBinary));
+data.append ("\nEND Directory Entry ").append (name).append ("\n");
+fileData.put (prefix + "/" + name, data.toString ());
+}}
+this.close ();
+}, "~S,~S,java.util.Map");
+Clazz.overrideMethod (c$, "getAllDataFiles", 
+function (binaryFileList, firstFile) {
+if (firstFile != null) {
+for (var i = 0; i < this.directory.size (); i++) {
+var thisEntry = this.directory.get (i);
+if (thisEntry.entryName.equals (firstFile)) {
+this.directory.remove (i);
+this.directory.add (1, thisEntry);
+break;
+}}
+}this.data =  new javajs.util.SB ();
+this.data.append ("Compound Document File Directory: ");
+this.data.append (this.getDirectoryListing ("|"));
+this.data.append ("\n");
+binaryFileList = "|" + binaryFileList + "|";
+for (var i = 0; i < this.directory.size (); i++) {
+var thisEntry = this.directory.get (i);
+if (!thisEntry.isEmpty && thisEntry.entryType != 5) {
+var name = thisEntry.entryName;
+if (name.endsWith (".gz")) name = name.substring (0, name.length - 3);
+this.data.append ("BEGIN Directory Entry ").append (name).append ("\n");
+this.data.appendSB (this.getEntryAsString (thisEntry, binaryFileList.indexOf ("|" + thisEntry.entryName + "|") >= 0));
+this.data.append ("\n");
+this.data.append ("END Directory Entry ").append (thisEntry.entryName).append ("\n");
+}}
+this.close ();
+return this.data;
+}, "~S,~S");
+Clazz.defineMethod (c$, "getFileAsString", 
+function (entryName) {
+for (var i = 0; i < this.directory.size (); i++) {
+var thisEntry = this.directory.get (i);
+if (thisEntry.entryName.equals (entryName)) return this.getEntryAsString (thisEntry, false);
+}
+return  new javajs.util.SB ();
+}, "~S");
+Clazz.defineMethod (c$, "getOffset", 
+($fz = function (SID) {
+return (SID + 1) * this.sectorSize;
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "gotoSector", 
+($fz = function (SID) {
+this.seek (this.getOffset (SID));
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "readHeader", 
+($fz = function () {
+if (!this.header.readData ()) return false;
+this.sectorSize = 1 << this.header.sectorPower;
+this.shortSectorSize = 1 << this.header.shortSectorPower;
+this.nShortSectorsPerStandardSector = Clazz.doubleToInt (this.sectorSize / this.shortSectorSize);
+this.nIntPerSector = Clazz.doubleToInt (this.sectorSize / 4);
+this.nDirEntriesperSector = Clazz.doubleToInt (this.sectorSize / 128);
+return true;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getSectorAllocationTable", 
+($fz = function () {
+var nSID = 0;
+var thisSID;
+this.SAT =  Clazz.newIntArray (this.header.nSATsectors * this.nIntPerSector + 109, 0);
+try {
+for (var i = 0; i < 109; i++) {
+thisSID = this.header.MSAT0[i];
+if (thisSID < 0) break;
+this.gotoSector (thisSID);
+for (var j = 0; j < this.nIntPerSector; j++) {
+this.SAT[nSID++] = this.readInt ();
+}
+}
+var nMaster = this.header.nAdditionalMATsectors;
+thisSID = this.header.SID_MSAT_next;
+var MSAT =  Clazz.newIntArray (this.nIntPerSector, 0);
+out : while (nMaster-- > 0 && thisSID >= 0) {
+this.gotoSector (thisSID);
+for (var i = 0; i < this.nIntPerSector; i++) MSAT[i] = this.readInt ();
+
+for (var i = 0; i < this.nIntPerSector - 1; i++) {
+thisSID = MSAT[i];
+if (thisSID < 0) break out;
+this.gotoSector (thisSID);
+for (var j = this.nIntPerSector; --j >= 0; ) this.SAT[nSID++] = this.readInt ();
+
+}
+thisSID = MSAT[this.nIntPerSector - 1];
+}
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println (e.toString ());
+} else {
+throw e;
+}
+}
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getShortSectorAllocationTable", 
+($fz = function () {
+var nSSID = 0;
+var thisSID = this.header.SID_SSAT_start;
+var nMax = this.header.nSSATsectors * this.nIntPerSector;
+this.SSAT =  Clazz.newIntArray (nMax, 0);
+try {
+while (thisSID > 0 && nSSID < nMax) {
+this.gotoSector (thisSID);
+for (var j = 0; j < this.nIntPerSector; j++) {
+this.SSAT[nSSID++] = this.readInt ();
+}
+thisSID = this.SAT[thisSID];
+}
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println (e.toString ());
+} else {
+throw e;
+}
+}
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getDirectoryTable", 
+($fz = function () {
+var thisSID = this.header.SID_DIR_start;
+var thisEntry;
+this.rootEntry = null;
+try {
+while (thisSID > 0) {
+this.gotoSector (thisSID);
+for (var j = this.nDirEntriesperSector; --j >= 0; ) {
+thisEntry =  new javajs.util.CompoundDocDirEntry (this);
+thisEntry.readData ();
+if (thisEntry.lenStream > 0) {
+this.directory.addLast (thisEntry);
+}if (thisEntry.entryType == 5) this.rootEntry = thisEntry;
+}
+thisSID = this.SAT[thisSID];
+}
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println (e.toString ());
+} else {
+throw e;
+}
+}
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getEntryAsString", 
+($fz = function (thisEntry, asBinaryString) {
+if (thisEntry.isEmpty) return  new javajs.util.SB ();
+return (thisEntry.isStandard ? this.getStandardStringData (thisEntry.SIDfirstSector, thisEntry.lenStream, asBinaryString) : this.getShortStringData (thisEntry.SIDfirstSector, thisEntry.lenStream, asBinaryString));
+}, $fz.isPrivate = true, $fz), "javajs.util.CompoundDocDirEntry,~B");
+Clazz.defineMethod (c$, "getStandardStringData", 
+($fz = function (thisSID, nBytes, asBinaryString) {
+var data =  new javajs.util.SB ();
+var byteBuf =  Clazz.newByteArray (this.sectorSize, 0);
+var gzipData =  new javajs.util.ZipData (nBytes);
+try {
+while (thisSID > 0 && nBytes > 0) {
+this.gotoSector (thisSID);
+nBytes = this.getSectorData (data, byteBuf, this.sectorSize, nBytes, asBinaryString, gzipData);
+thisSID = this.SAT[thisSID];
+}
+if (nBytes == -9999) return  new javajs.util.SB ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println (e.toString ());
+} else {
+throw e;
+}
+}
+if (gzipData.isEnabled) gzipData.addTo (this.jzt, data);
+return data;
+}, $fz.isPrivate = true, $fz), "~N,~N,~B");
+Clazz.defineMethod (c$, "getSectorData", 
+($fz = function (data, byteBuf, nSectorBytes, nBytes, asBinaryString, gzipData) {
+this.readByteArray (byteBuf, 0, byteBuf.length);
+var n = gzipData.addBytes (byteBuf, nSectorBytes, nBytes);
+if (n >= 0) return n;
+if (asBinaryString) {
+for (var i = 0; i < nSectorBytes; i++) {
+data.append (Integer.toHexString (byteBuf[i] & 0xFF)).appendC (' ');
+if (--nBytes < 1) break;
+}
+} else {
+for (var i = 0; i < nSectorBytes; i++) {
+if (byteBuf[i] == 0) return -9999;
+data.appendC (String.fromCharCode (byteBuf[i]));
+if (--nBytes < 1) break;
+}
+}return nBytes;
+}, $fz.isPrivate = true, $fz), "javajs.util.SB,~A,~N,~N,~B,javajs.util.ZipData");
+Clazz.defineMethod (c$, "getShortStringData", 
+($fz = function (shortSID, nBytes, asBinaryString) {
+var data =  new javajs.util.SB ();
+if (this.rootEntry == null) return data;
+var thisSID = this.rootEntry.SIDfirstSector;
+var ptShort = 0;
+var byteBuf =  Clazz.newByteArray (this.shortSectorSize, 0);
+var gzipData =  new javajs.util.ZipData (nBytes);
+try {
+while (thisSID >= 0 && shortSID >= 0 && nBytes > 0) {
+while (shortSID - ptShort >= this.nShortSectorsPerStandardSector) {
+ptShort += this.nShortSectorsPerStandardSector;
+thisSID = this.SAT[thisSID];
+}
+this.seek (this.getOffset (thisSID) + (shortSID - ptShort) * this.shortSectorSize);
+nBytes = this.getSectorData (data, byteBuf, this.shortSectorSize, nBytes, asBinaryString, gzipData);
+shortSID = this.SSAT[shortSID];
+}
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println (data.toString ());
+System.out.println ("reader error in CompoundDocument " + e.toString ());
+} else {
+throw e;
+}
+}
+if (gzipData.isEnabled) gzipData.addTo (this.jzt, data);
+return data;
+}, $fz.isPrivate = true, $fz), "~N,~N,~B");
+});
index 9247146..6122352 100644 (file)
@@ -1,78 +1,78 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["java.lang.Boolean"], "javajs.util.DF", ["java.lang.Double", "$.Float", "javajs.util.PT", "$.SB"], function () {\r
-c$ = Clazz.declareType (javajs.util, "DF");\r
-c$.setUseNumberLocalization = Clazz.defineMethod (c$, "setUseNumberLocalization", \r
-function (TF) {\r
-javajs.util.DF.useNumberLocalization[0] = (TF ? Boolean.TRUE : Boolean.FALSE);\r
-}, "~B");\r
-c$.formatDecimalDbl = Clazz.defineMethod (c$, "formatDecimalDbl", \r
-function (value, decimalDigits) {\r
-if (decimalDigits == 2147483647 || value == -Infinity || value == Infinity || Double.isNaN (value)) return "" + value;\r
-return javajs.util.DF.formatDecimal (value, decimalDigits);\r
-}, "~N,~N");\r
-c$.formatDecimal = Clazz.defineMethod (c$, "formatDecimal", \r
-function (value, decimalDigits) {\r
-if (decimalDigits == 2147483647 || value == -Infinity || value == Infinity || Float.isNaN (value)) return "" + value;\r
-var n;\r
-if (decimalDigits < 0) {\r
-decimalDigits = -decimalDigits;\r
-if (decimalDigits > javajs.util.DF.formattingStrings.length) decimalDigits = javajs.util.DF.formattingStrings.length;\r
-if (value == 0) return javajs.util.DF.formattingStrings[decimalDigits] + "E+0";\r
-n = 0;\r
-var d;\r
-if (Math.abs (value) < 1) {\r
-n = 10;\r
-d = value * 1e-10;\r
-} else {\r
-n = -10;\r
-d = value * 1e10;\r
-}var s = ("" + d).toUpperCase ();\r
-var i = s.indexOf ("E");\r
-n = javajs.util.PT.parseInt (s.substring (i + 1)) + n;\r
-return (i < 0 ? "" + value : javajs.util.DF.formatDecimal (javajs.util.PT.parseFloat (s.substring (0, i)), decimalDigits - 1) + "E" + (n >= 0 ? "+" : "") + n);\r
-}if (decimalDigits >= javajs.util.DF.formattingStrings.length) decimalDigits = javajs.util.DF.formattingStrings.length - 1;\r
-var s1 = ("" + value).toUpperCase ();\r
-var pt = s1.indexOf (".");\r
-if (pt < 0) return s1 + javajs.util.DF.formattingStrings[decimalDigits].substring (1);\r
-var isNeg = s1.startsWith ("-");\r
-if (isNeg) {\r
-s1 = s1.substring (1);\r
-pt--;\r
-}var pt1 = s1.indexOf ("E-");\r
-if (pt1 > 0) {\r
-n = javajs.util.PT.parseInt (s1.substring (pt1 + 1));\r
-s1 = "0." + "0000000000000000000000000000000000000000".substring (0, -n - 1) + s1.substring (0, 1) + s1.substring (2, pt1);\r
-pt = 1;\r
-}pt1 = s1.indexOf ("E");\r
-if (pt1 > 0) {\r
-n = javajs.util.PT.parseInt (s1.substring (pt1 + 1));\r
-s1 = s1.substring (0, 1) + s1.substring (2, pt1) + "0000000000000000000000000000000000000000";\r
-s1 = s1.substring (0, n + 1) + "." + s1.substring (n + 1);\r
-pt = s1.indexOf (".");\r
-}var len = s1.length;\r
-var pt2 = decimalDigits + pt + 1;\r
-if (pt2 < len && s1.charAt (pt2) >= '5') {\r
-return javajs.util.DF.formatDecimal (value + (isNeg ? -1 : 1) * javajs.util.DF.formatAdds[decimalDigits], decimalDigits);\r
-}var sb = javajs.util.SB.newS (s1.substring (0, (decimalDigits == 0 ? pt : ++pt)));\r
-for (var i = 0; i < decimalDigits; i++, pt++) {\r
-if (pt < len) sb.appendC (s1.charAt (pt));\r
- else sb.appendC ('0');\r
-}\r
-s1 = (isNeg ? "-" : "") + sb;\r
-return (Boolean.TRUE.equals (javajs.util.DF.useNumberLocalization[0]) ? s1 : s1.$replace (',', '.'));\r
-}, "~N,~N");\r
-c$.formatDecimalTrimmed = Clazz.defineMethod (c$, "formatDecimalTrimmed", \r
-function (x, precision) {\r
-var str = javajs.util.DF.formatDecimalDbl (x, precision);\r
-var m = str.length - 1;\r
-var zero = '0';\r
-while (m >= 0 && str.charAt (m) == zero) m--;\r
-\r
-return str.substring (0, m + 1);\r
-}, "~N,~N");\r
-Clazz.defineStatics (c$,\r
-"formattingStrings",  Clazz.newArray (-1, ["0", "0.0", "0.00", "0.000", "0.0000", "0.00000", "0.000000", "0.0000000", "0.00000000", "0.000000000"]),\r
-"zeros", "0000000000000000000000000000000000000000",\r
-"formatAdds",  Clazz.newFloatArray (-1, [0.5, 0.05, 0.005, 0.0005, 0.00005, 0.000005, 0.0000005, 0.00000005, 0.000000005, 0.0000000005]));\r
-c$.useNumberLocalization = c$.prototype.useNumberLocalization =  Clazz.newArray (-1, [Boolean.TRUE]);\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["java.lang.Boolean"], "javajs.util.DF", ["java.lang.Double", "$.Float", "javajs.util.PT", "$.SB"], function () {
+c$ = Clazz.declareType (javajs.util, "DF");
+c$.setUseNumberLocalization = Clazz.defineMethod (c$, "setUseNumberLocalization", 
+function (TF) {
+javajs.util.DF.useNumberLocalization[0] = (TF ? Boolean.TRUE : Boolean.FALSE);
+}, "~B");
+c$.formatDecimalDbl = Clazz.defineMethod (c$, "formatDecimalDbl", 
+function (value, decimalDigits) {
+if (decimalDigits == 2147483647 || value == -Infinity || value == Infinity || Double.isNaN (value)) return "" + value;
+return javajs.util.DF.formatDecimal (value, decimalDigits);
+}, "~N,~N");
+c$.formatDecimal = Clazz.defineMethod (c$, "formatDecimal", 
+function (value, decimalDigits) {
+if (decimalDigits == 2147483647 || value == -Infinity || value == Infinity || Float.isNaN (value)) return "" + value;
+var n;
+if (decimalDigits < 0) {
+decimalDigits = -decimalDigits;
+if (decimalDigits > javajs.util.DF.formattingStrings.length) decimalDigits = javajs.util.DF.formattingStrings.length;
+if (value == 0) return javajs.util.DF.formattingStrings[decimalDigits] + "E+0";
+n = 0;
+var d;
+if (Math.abs (value) < 1) {
+n = 10;
+d = value * 1e-10;
+} else {
+n = -10;
+d = value * 1e10;
+}var s = ("" + d).toUpperCase ();
+var i = s.indexOf ("E");
+n = javajs.util.PT.parseInt (s.substring (i + 1)) + n;
+return (i < 0 ? "" + value : javajs.util.DF.formatDecimal (javajs.util.PT.parseFloat (s.substring (0, i)), decimalDigits - 1) + "E" + (n >= 0 ? "+" : "") + n);
+}if (decimalDigits >= javajs.util.DF.formattingStrings.length) decimalDigits = javajs.util.DF.formattingStrings.length - 1;
+var s1 = ("" + value).toUpperCase ();
+var pt = s1.indexOf (".");
+if (pt < 0) return s1 + javajs.util.DF.formattingStrings[decimalDigits].substring (1);
+var isNeg = s1.startsWith ("-");
+if (isNeg) {
+s1 = s1.substring (1);
+pt--;
+}var pt1 = s1.indexOf ("E-");
+if (pt1 > 0) {
+n = javajs.util.PT.parseInt (s1.substring (pt1 + 1));
+s1 = "0." + "0000000000000000000000000000000000000000".substring (0, -n - 1) + s1.substring (0, 1) + s1.substring (2, pt1);
+pt = 1;
+}pt1 = s1.indexOf ("E");
+if (pt1 > 0) {
+n = javajs.util.PT.parseInt (s1.substring (pt1 + 1));
+s1 = s1.substring (0, 1) + s1.substring (2, pt1) + "0000000000000000000000000000000000000000";
+s1 = s1.substring (0, n + 1) + "." + s1.substring (n + 1);
+pt = s1.indexOf (".");
+}var len = s1.length;
+var pt2 = decimalDigits + pt + 1;
+if (pt2 < len && s1.charAt (pt2) >= '5') {
+return javajs.util.DF.formatDecimal (value + (isNeg ? -1 : 1) * javajs.util.DF.formatAdds[decimalDigits], decimalDigits);
+}var sb = javajs.util.SB.newS (s1.substring (0, (decimalDigits == 0 ? pt : ++pt)));
+for (var i = 0; i < decimalDigits; i++, pt++) {
+if (pt < len) sb.appendC (s1.charAt (pt));
+ else sb.appendC ('0');
+}
+s1 = (isNeg ? "-" : "") + sb;
+return (Boolean.TRUE.equals (javajs.util.DF.useNumberLocalization[0]) ? s1 : s1.$replace (',', '.'));
+}, "~N,~N");
+c$.formatDecimalTrimmed = Clazz.defineMethod (c$, "formatDecimalTrimmed", 
+function (x, precision) {
+var str = javajs.util.DF.formatDecimalDbl (x, precision);
+var m = str.length - 1;
+var zero = '0';
+while (m >= 0 && str.charAt (m) == zero) m--;
+
+return str.substring (0, m + 1);
+}, "~N,~N");
+Clazz.defineStatics (c$,
+"formattingStrings",  Clazz.newArray (-1, ["0", "0.0", "0.00", "0.000", "0.0000", "0.00000", "0.000000", "0.0000000", "0.00000000", "0.000000000"]),
+"zeros", "0000000000000000000000000000000000000000",
+"formatAdds",  Clazz.newFloatArray (-1, [0.5, 0.05, 0.005, 0.0005, 0.00005, 0.000005, 0.0000005, 0.00000005, 0.000000005, 0.0000000005]));
+c$.useNumberLocalization = c$.prototype.useNumberLocalization =  Clazz.newArray (-1, [Boolean.TRUE]);
+});
index 3be547c..ea8774f 100644 (file)
@@ -1,34 +1,34 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["java.io.BufferedReader"], "javajs.util.DataReader", ["java.io.StringReader"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.ptMark = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "DataReader", java.io.BufferedReader);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-Clazz.superConstructor (this, javajs.util.DataReader, [ new java.io.StringReader ("")]);\r
-});\r
-Clazz.defineMethod (c$, "getBufferedReader", \r
-function () {\r
-return this;\r
-});\r
-Clazz.defineMethod (c$, "readBuf", \r
-function (buf, off, len) {\r
-var nRead = 0;\r
-var line = this.readLine ();\r
-if (line == null) return 0;\r
-var linept = 0;\r
-var linelen = line.length;\r
-for (var i = off; i < len && linelen >= 0; i++) {\r
-if (linept >= linelen) {\r
-linept = 0;\r
-buf[i] = '\n';\r
-line = this.readLine ();\r
-linelen = (line == null ? -1 : line.length);\r
-} else {\r
-buf[i] = line.charAt (linept++);\r
-}nRead++;\r
-}\r
-return nRead;\r
-}, "~A,~N,~N");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["java.io.BufferedReader"], "javajs.util.DataReader", ["java.io.StringReader"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.ptMark = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "DataReader", java.io.BufferedReader);
+Clazz.makeConstructor (c$, 
+function () {
+Clazz.superConstructor (this, javajs.util.DataReader, [ new java.io.StringReader ("")]);
+});
+Clazz.defineMethod (c$, "getBufferedReader", 
+function () {
+return this;
+});
+Clazz.defineMethod (c$, "readBuf", 
+function (buf, off, len) {
+var nRead = 0;
+var line = this.readLine ();
+if (line == null) return 0;
+var linept = 0;
+var linelen = line.length;
+for (var i = off; i < len && linelen >= 0; i++) {
+if (linept >= linelen) {
+linept = 0;
+buf[i] = '\n';
+line = this.readLine ();
+linelen = (line == null ? -1 : line.length);
+} else {
+buf[i] = line.charAt (linept++);
+}nRead++;
+}
+return nRead;
+}, "~A,~N,~N");
+});
index b08955b..4d28a61 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.api.EigenInterface"], "javajs.util.Eigen", ["javajs.util.V3"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.n = 3;\r
-this.d = null;\r
-this.e = null;\r
-this.V = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "Eigen", null, javajs.api.EigenInterface);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "set", \r
-function (n) {\r
-this.n = n;\r
-this.V =  Clazz.newDoubleArray (n, n, 0);\r
-this.d =  Clazz.newDoubleArray (n, 0);\r
-this.e =  Clazz.newDoubleArray (n, 0);\r
-return this;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "setM", \r
-function (m) {\r
-this.set (m.length);\r
-this.calc (m);\r
-return this;\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "getEigenvalues", \r
-function () {\r
-return this.d;\r
-});\r
-Clazz.overrideMethod (c$, "fillFloatArrays", \r
-function (eigenVectors, eigenValues) {\r
-for (var i = 0; i < 3; i++) {\r
-if (eigenVectors != null) {\r
-if (eigenVectors[i] == null) eigenVectors[i] =  new javajs.util.V3 ();\r
-eigenVectors[i].set (this.V[0][i], this.V[1][i], this.V[2][i]);\r
-}if (eigenValues != null) eigenValues[i] = this.d[i];\r
-}\r
-}, "~A,~A");\r
-Clazz.overrideMethod (c$, "getEigenvectorsFloatTransposed", \r
-function () {\r
-var f =  Clazz.newFloatArray (this.n, this.n, 0);\r
-for (var i = this.n; --i >= 0; ) for (var j = this.n; --j >= 0; ) f[j][i] = this.V[i][j];\r
-\r
-\r
-return f;\r
-});\r
-Clazz.defineMethod (c$, "calc", \r
-function (A) {\r
-for (var i = 0; i < this.n; i++) {\r
-for (var j = 0; j < this.n; j++) {\r
-this.V[i][j] = A[i][j];\r
-}\r
-}\r
-this.tred2 ();\r
-this.tql2 ();\r
-}, "~A");\r
-Clazz.defineMethod (c$, "getRealEigenvalues", \r
-function () {\r
-return this.d;\r
-});\r
-Clazz.defineMethod (c$, "getImagEigenvalues", \r
-function () {\r
-return this.e;\r
-});\r
-Clazz.defineMethod (c$, "tred2", \r
-($fz = function () {\r
-for (var j = 0; j < this.n; j++) {\r
-this.d[j] = this.V[this.n - 1][j];\r
-}\r
-for (var i = this.n - 1; i > 0; i--) {\r
-var scale = 0.0;\r
-var h = 0.0;\r
-for (var k = 0; k < i; k++) {\r
-scale = scale + Math.abs (this.d[k]);\r
-}\r
-if (scale == 0.0) {\r
-this.e[i] = this.d[i - 1];\r
-for (var j = 0; j < i; j++) {\r
-this.d[j] = this.V[i - 1][j];\r
-this.V[i][j] = 0.0;\r
-this.V[j][i] = 0.0;\r
-}\r
-} else {\r
-for (var k = 0; k < i; k++) {\r
-this.d[k] /= scale;\r
-h += this.d[k] * this.d[k];\r
-}\r
-var f = this.d[i - 1];\r
-var g = Math.sqrt (h);\r
-if (f > 0) {\r
-g = -g;\r
-}this.e[i] = scale * g;\r
-h = h - f * g;\r
-this.d[i - 1] = f - g;\r
-for (var j = 0; j < i; j++) {\r
-this.e[j] = 0.0;\r
-}\r
-for (var j = 0; j < i; j++) {\r
-f = this.d[j];\r
-this.V[j][i] = f;\r
-g = this.e[j] + this.V[j][j] * f;\r
-for (var k = j + 1; k <= i - 1; k++) {\r
-g += this.V[k][j] * this.d[k];\r
-this.e[k] += this.V[k][j] * f;\r
-}\r
-this.e[j] = g;\r
-}\r
-f = 0.0;\r
-for (var j = 0; j < i; j++) {\r
-this.e[j] /= h;\r
-f += this.e[j] * this.d[j];\r
-}\r
-var hh = f / (h + h);\r
-for (var j = 0; j < i; j++) {\r
-this.e[j] -= hh * this.d[j];\r
-}\r
-for (var j = 0; j < i; j++) {\r
-f = this.d[j];\r
-g = this.e[j];\r
-for (var k = j; k <= i - 1; k++) {\r
-this.V[k][j] -= (f * this.e[k] + g * this.d[k]);\r
-}\r
-this.d[j] = this.V[i - 1][j];\r
-this.V[i][j] = 0.0;\r
-}\r
-}this.d[i] = h;\r
-}\r
-for (var i = 0; i < this.n - 1; i++) {\r
-this.V[this.n - 1][i] = this.V[i][i];\r
-this.V[i][i] = 1.0;\r
-var h = this.d[i + 1];\r
-if (h != 0.0) {\r
-for (var k = 0; k <= i; k++) {\r
-this.d[k] = this.V[k][i + 1] / h;\r
-}\r
-for (var j = 0; j <= i; j++) {\r
-var g = 0.0;\r
-for (var k = 0; k <= i; k++) {\r
-g += this.V[k][i + 1] * this.V[k][j];\r
-}\r
-for (var k = 0; k <= i; k++) {\r
-this.V[k][j] -= g * this.d[k];\r
-}\r
-}\r
-}for (var k = 0; k <= i; k++) {\r
-this.V[k][i + 1] = 0.0;\r
-}\r
-}\r
-for (var j = 0; j < this.n; j++) {\r
-this.d[j] = this.V[this.n - 1][j];\r
-this.V[this.n - 1][j] = 0.0;\r
-}\r
-this.V[this.n - 1][this.n - 1] = 1.0;\r
-this.e[0] = 0.0;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "tql2", \r
-($fz = function () {\r
-for (var i = 1; i < this.n; i++) {\r
-this.e[i - 1] = this.e[i];\r
-}\r
-this.e[this.n - 1] = 0.0;\r
-var f = 0.0;\r
-var tst1 = 0.0;\r
-var eps = Math.pow (2.0, -52.0);\r
-for (var l = 0; l < this.n; l++) {\r
-tst1 = Math.max (tst1, Math.abs (this.d[l]) + Math.abs (this.e[l]));\r
-var m = l;\r
-while (m < this.n) {\r
-if (Math.abs (this.e[m]) <= eps * tst1) {\r
-break;\r
-}m++;\r
-}\r
-if (m > l) {\r
-var iter = 0;\r
-do {\r
-iter = iter + 1;\r
-var g = this.d[l];\r
-var p = (this.d[l + 1] - g) / (2.0 * this.e[l]);\r
-var r = javajs.util.Eigen.hypot (p, 1.0);\r
-if (p < 0) {\r
-r = -r;\r
-}this.d[l] = this.e[l] / (p + r);\r
-this.d[l + 1] = this.e[l] * (p + r);\r
-var dl1 = this.d[l + 1];\r
-var h = g - this.d[l];\r
-for (var i = l + 2; i < this.n; i++) {\r
-this.d[i] -= h;\r
-}\r
-f = f + h;\r
-p = this.d[m];\r
-var c = 1.0;\r
-var c2 = c;\r
-var c3 = c;\r
-var el1 = this.e[l + 1];\r
-var s = 0.0;\r
-var s2 = 0.0;\r
-for (var i = m - 1; i >= l; i--) {\r
-c3 = c2;\r
-c2 = c;\r
-s2 = s;\r
-g = c * this.e[i];\r
-h = c * p;\r
-r = javajs.util.Eigen.hypot (p, this.e[i]);\r
-this.e[i + 1] = s * r;\r
-s = this.e[i] / r;\r
-c = p / r;\r
-p = c * this.d[i] - s * g;\r
-this.d[i + 1] = h + s * (c * g + s * this.d[i]);\r
-for (var k = 0; k < this.n; k++) {\r
-h = this.V[k][i + 1];\r
-this.V[k][i + 1] = s * this.V[k][i] + c * h;\r
-this.V[k][i] = c * this.V[k][i] - s * h;\r
-}\r
-}\r
-p = -s * s2 * c3 * el1 * this.e[l] / dl1;\r
-this.e[l] = s * p;\r
-this.d[l] = c * p;\r
-} while (Math.abs (this.e[l]) > eps * tst1);\r
-}this.d[l] = this.d[l] + f;\r
-this.e[l] = 0.0;\r
-}\r
-for (var i = 0; i < this.n - 1; i++) {\r
-var k = i;\r
-var p = this.d[i];\r
-for (var j = i + 1; j < this.n; j++) {\r
-if (this.d[j] < p) {\r
-k = j;\r
-p = this.d[j];\r
-}}\r
-if (k != i) {\r
-this.d[k] = this.d[i];\r
-this.d[i] = p;\r
-for (var j = 0; j < this.n; j++) {\r
-p = this.V[j][i];\r
-this.V[j][i] = this.V[j][k];\r
-this.V[j][k] = p;\r
-}\r
-}}\r
-}, $fz.isPrivate = true, $fz));\r
-c$.hypot = Clazz.defineMethod (c$, "hypot", \r
-($fz = function (a, b) {\r
-var r;\r
-if (Math.abs (a) > Math.abs (b)) {\r
-r = b / a;\r
-r = Math.abs (a) * Math.sqrt (1 + r * r);\r
-} else if (b != 0) {\r
-r = a / b;\r
-r = Math.abs (b) * Math.sqrt (1 + r * r);\r
-} else {\r
-r = 0.0;\r
-}return r;\r
-}, $fz.isPrivate = true, $fz), "~N,~N");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.api.EigenInterface"], "javajs.util.Eigen", ["javajs.util.V3"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.n = 3;
+this.d = null;
+this.e = null;
+this.V = null;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "Eigen", null, javajs.api.EigenInterface);
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.defineMethod (c$, "set", 
+function (n) {
+this.n = n;
+this.V =  Clazz.newDoubleArray (n, n, 0);
+this.d =  Clazz.newDoubleArray (n, 0);
+this.e =  Clazz.newDoubleArray (n, 0);
+return this;
+}, "~N");
+Clazz.overrideMethod (c$, "setM", 
+function (m) {
+this.set (m.length);
+this.calc (m);
+return this;
+}, "~A");
+Clazz.overrideMethod (c$, "getEigenvalues", 
+function () {
+return this.d;
+});
+Clazz.overrideMethod (c$, "fillFloatArrays", 
+function (eigenVectors, eigenValues) {
+for (var i = 0; i < 3; i++) {
+if (eigenVectors != null) {
+if (eigenVectors[i] == null) eigenVectors[i] =  new javajs.util.V3 ();
+eigenVectors[i].set (this.V[0][i], this.V[1][i], this.V[2][i]);
+}if (eigenValues != null) eigenValues[i] = this.d[i];
+}
+}, "~A,~A");
+Clazz.overrideMethod (c$, "getEigenvectorsFloatTransposed", 
+function () {
+var f =  Clazz.newFloatArray (this.n, this.n, 0);
+for (var i = this.n; --i >= 0; ) for (var j = this.n; --j >= 0; ) f[j][i] = this.V[i][j];
+
+
+return f;
+});
+Clazz.defineMethod (c$, "calc", 
+function (A) {
+for (var i = 0; i < this.n; i++) {
+for (var j = 0; j < this.n; j++) {
+this.V[i][j] = A[i][j];
+}
+}
+this.tred2 ();
+this.tql2 ();
+}, "~A");
+Clazz.defineMethod (c$, "getRealEigenvalues", 
+function () {
+return this.d;
+});
+Clazz.defineMethod (c$, "getImagEigenvalues", 
+function () {
+return this.e;
+});
+Clazz.defineMethod (c$, "tred2", 
+($fz = function () {
+for (var j = 0; j < this.n; j++) {
+this.d[j] = this.V[this.n - 1][j];
+}
+for (var i = this.n - 1; i > 0; i--) {
+var scale = 0.0;
+var h = 0.0;
+for (var k = 0; k < i; k++) {
+scale = scale + Math.abs (this.d[k]);
+}
+if (scale == 0.0) {
+this.e[i] = this.d[i - 1];
+for (var j = 0; j < i; j++) {
+this.d[j] = this.V[i - 1][j];
+this.V[i][j] = 0.0;
+this.V[j][i] = 0.0;
+}
+} else {
+for (var k = 0; k < i; k++) {
+this.d[k] /= scale;
+h += this.d[k] * this.d[k];
+}
+var f = this.d[i - 1];
+var g = Math.sqrt (h);
+if (f > 0) {
+g = -g;
+}this.e[i] = scale * g;
+h = h - f * g;
+this.d[i - 1] = f - g;
+for (var j = 0; j < i; j++) {
+this.e[j] = 0.0;
+}
+for (var j = 0; j < i; j++) {
+f = this.d[j];
+this.V[j][i] = f;
+g = this.e[j] + this.V[j][j] * f;
+for (var k = j + 1; k <= i - 1; k++) {
+g += this.V[k][j] * this.d[k];
+this.e[k] += this.V[k][j] * f;
+}
+this.e[j] = g;
+}
+f = 0.0;
+for (var j = 0; j < i; j++) {
+this.e[j] /= h;
+f += this.e[j] * this.d[j];
+}
+var hh = f / (h + h);
+for (var j = 0; j < i; j++) {
+this.e[j] -= hh * this.d[j];
+}
+for (var j = 0; j < i; j++) {
+f = this.d[j];
+g = this.e[j];
+for (var k = j; k <= i - 1; k++) {
+this.V[k][j] -= (f * this.e[k] + g * this.d[k]);
+}
+this.d[j] = this.V[i - 1][j];
+this.V[i][j] = 0.0;
+}
+}this.d[i] = h;
+}
+for (var i = 0; i < this.n - 1; i++) {
+this.V[this.n - 1][i] = this.V[i][i];
+this.V[i][i] = 1.0;
+var h = this.d[i + 1];
+if (h != 0.0) {
+for (var k = 0; k <= i; k++) {
+this.d[k] = this.V[k][i + 1] / h;
+}
+for (var j = 0; j <= i; j++) {
+var g = 0.0;
+for (var k = 0; k <= i; k++) {
+g += this.V[k][i + 1] * this.V[k][j];
+}
+for (var k = 0; k <= i; k++) {
+this.V[k][j] -= g * this.d[k];
+}
+}
+}for (var k = 0; k <= i; k++) {
+this.V[k][i + 1] = 0.0;
+}
+}
+for (var j = 0; j < this.n; j++) {
+this.d[j] = this.V[this.n - 1][j];
+this.V[this.n - 1][j] = 0.0;
+}
+this.V[this.n - 1][this.n - 1] = 1.0;
+this.e[0] = 0.0;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "tql2", 
+($fz = function () {
+for (var i = 1; i < this.n; i++) {
+this.e[i - 1] = this.e[i];
+}
+this.e[this.n - 1] = 0.0;
+var f = 0.0;
+var tst1 = 0.0;
+var eps = Math.pow (2.0, -52.0);
+for (var l = 0; l < this.n; l++) {
+tst1 = Math.max (tst1, Math.abs (this.d[l]) + Math.abs (this.e[l]));
+var m = l;
+while (m < this.n) {
+if (Math.abs (this.e[m]) <= eps * tst1) {
+break;
+}m++;
+}
+if (m > l) {
+var iter = 0;
+do {
+iter = iter + 1;
+var g = this.d[l];
+var p = (this.d[l + 1] - g) / (2.0 * this.e[l]);
+var r = javajs.util.Eigen.hypot (p, 1.0);
+if (p < 0) {
+r = -r;
+}this.d[l] = this.e[l] / (p + r);
+this.d[l + 1] = this.e[l] * (p + r);
+var dl1 = this.d[l + 1];
+var h = g - this.d[l];
+for (var i = l + 2; i < this.n; i++) {
+this.d[i] -= h;
+}
+f = f + h;
+p = this.d[m];
+var c = 1.0;
+var c2 = c;
+var c3 = c;
+var el1 = this.e[l + 1];
+var s = 0.0;
+var s2 = 0.0;
+for (var i = m - 1; i >= l; i--) {
+c3 = c2;
+c2 = c;
+s2 = s;
+g = c * this.e[i];
+h = c * p;
+r = javajs.util.Eigen.hypot (p, this.e[i]);
+this.e[i + 1] = s * r;
+s = this.e[i] / r;
+c = p / r;
+p = c * this.d[i] - s * g;
+this.d[i + 1] = h + s * (c * g + s * this.d[i]);
+for (var k = 0; k < this.n; k++) {
+h = this.V[k][i + 1];
+this.V[k][i + 1] = s * this.V[k][i] + c * h;
+this.V[k][i] = c * this.V[k][i] - s * h;
+}
+}
+p = -s * s2 * c3 * el1 * this.e[l] / dl1;
+this.e[l] = s * p;
+this.d[l] = c * p;
+} while (Math.abs (this.e[l]) > eps * tst1);
+}this.d[l] = this.d[l] + f;
+this.e[l] = 0.0;
+}
+for (var i = 0; i < this.n - 1; i++) {
+var k = i;
+var p = this.d[i];
+for (var j = i + 1; j < this.n; j++) {
+if (this.d[j] < p) {
+k = j;
+p = this.d[j];
+}}
+if (k != i) {
+this.d[k] = this.d[i];
+this.d[i] = p;
+for (var j = 0; j < this.n; j++) {
+p = this.V[j][i];
+this.V[j][i] = this.V[j][k];
+this.V[j][k] = p;
+}
+}}
+}, $fz.isPrivate = true, $fz));
+c$.hypot = Clazz.defineMethod (c$, "hypot", 
+($fz = function (a, b) {
+var r;
+if (Math.abs (a) > Math.abs (b)) {
+r = b / a;
+r = Math.abs (a) * Math.sqrt (1 + r * r);
+} else if (b != 0) {
+r = a / b;
+r = Math.abs (b) * Math.sqrt (1 + r * r);
+} else {
+r = 0.0;
+}return r;
+}, $fz.isPrivate = true, $fz), "~N,~N");
+});
index aecf019..d7abfc0 100644 (file)
@@ -1,10 +1,10 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["java.lang.Enum"], "javajs.util.Encoding", null, function () {\r
-c$ = Clazz.declareType (javajs.util, "Encoding", Enum);\r
-Clazz.defineEnumConstant (c$, "NONE", 0, []);\r
-Clazz.defineEnumConstant (c$, "UTF8", 1, []);\r
-Clazz.defineEnumConstant (c$, "UTF_16BE", 2, []);\r
-Clazz.defineEnumConstant (c$, "UTF_16LE", 3, []);\r
-Clazz.defineEnumConstant (c$, "UTF_32BE", 4, []);\r
-Clazz.defineEnumConstant (c$, "UTF_32LE", 5, []);\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["java.lang.Enum"], "javajs.util.Encoding", null, function () {
+c$ = Clazz.declareType (javajs.util, "Encoding", Enum);
+Clazz.defineEnumConstant (c$, "NONE", 0, []);
+Clazz.defineEnumConstant (c$, "UTF8", 1, []);
+Clazz.defineEnumConstant (c$, "UTF_16BE", 2, []);
+Clazz.defineEnumConstant (c$, "UTF_16LE", 3, []);
+Clazz.defineEnumConstant (c$, "UTF_32BE", 4, []);
+Clazz.defineEnumConstant (c$, "UTF_32LE", 5, []);
+});
index c8c7764..95d0741 100644 (file)
@@ -1,33 +1,33 @@
-Clazz.declarePackage ("javajs.util");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.buf = null;\r
-this.cchBuf = 0;\r
-this.ichCurrent = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "LimitedLineReader");\r
-Clazz.makeConstructor (c$, \r
-function (bufferedReader, readLimit) {\r
-bufferedReader.mark (readLimit + 1);\r
-this.buf =  Clazz.newCharArray (readLimit, '\0');\r
-this.cchBuf = Math.max (bufferedReader.read (this.buf, 0, readLimit), 0);\r
-this.ichCurrent = 0;\r
-bufferedReader.reset ();\r
-}, "java.io.BufferedReader,~N");\r
-Clazz.defineMethod (c$, "getHeader", \r
-function (n) {\r
-return (n == 0 ?  String.instantialize (this.buf) :  String.instantialize (this.buf, 0, Math.min (this.cchBuf, n)));\r
-}, "~N");\r
-Clazz.defineMethod (c$, "readLineWithNewline", \r
-function () {\r
-while (this.ichCurrent < this.cchBuf) {\r
-var ichBeginningOfLine = this.ichCurrent;\r
-var ch = String.fromCharCode (0);\r
-while (this.ichCurrent < this.cchBuf && (ch = this.buf[this.ichCurrent++]) != '\r' && ch != '\n') {\r
-}\r
-if (ch == '\r' && this.ichCurrent < this.cchBuf && this.buf[this.ichCurrent] == '\n') ++this.ichCurrent;\r
-var cchLine = this.ichCurrent - ichBeginningOfLine;\r
-if (this.buf[ichBeginningOfLine] == '#') continue;\r
-return  String.instantialize (this.buf, ichBeginningOfLine, cchLine);\r
-}\r
-return "";\r
-});\r
+Clazz.declarePackage ("javajs.util");
+c$ = Clazz.decorateAsClass (function () {
+this.buf = null;
+this.cchBuf = 0;
+this.ichCurrent = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "LimitedLineReader");
+Clazz.makeConstructor (c$, 
+function (bufferedReader, readLimit) {
+bufferedReader.mark (readLimit + 1);
+this.buf =  Clazz.newCharArray (readLimit, '\0');
+this.cchBuf = Math.max (bufferedReader.read (this.buf, 0, readLimit), 0);
+this.ichCurrent = 0;
+bufferedReader.reset ();
+}, "java.io.BufferedReader,~N");
+Clazz.defineMethod (c$, "getHeader", 
+function (n) {
+return (n == 0 ?  String.instantialize (this.buf) :  String.instantialize (this.buf, 0, Math.min (this.cchBuf, n)));
+}, "~N");
+Clazz.defineMethod (c$, "readLineWithNewline", 
+function () {
+while (this.ichCurrent < this.cchBuf) {
+var ichBeginningOfLine = this.ichCurrent;
+var ch = String.fromCharCode (0);
+while (this.ichCurrent < this.cchBuf && (ch = this.buf[this.ichCurrent++]) != '\r' && ch != '\n') {
+}
+if (ch == '\r' && this.ichCurrent < this.cchBuf && this.buf[this.ichCurrent] == '\n') ++this.ichCurrent;
+var cchLine = this.ichCurrent - ichBeginningOfLine;
+if (this.buf[ichBeginningOfLine] == '#') continue;
+return  String.instantialize (this.buf, ichBeginningOfLine, cchLine);
+}
+return "";
+});
index 54d8d69..dbd859d 100644 (file)
@@ -1,31 +1,31 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.util.DataReader"], "javajs.util.ListDataReader", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.data = null;\r
-this.pt = 0;\r
-this.len = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "ListDataReader", javajs.util.DataReader);\r
-Clazz.overrideMethod (c$, "setData", \r
-function (data) {\r
-this.data = data;\r
-this.len = this.data.size ();\r
-return this;\r
-}, "~O");\r
-Clazz.defineMethod (c$, "read", \r
-function (buf, off, len) {\r
-return this.readBuf (buf, off, len);\r
-}, "~A,~N,~N");\r
-Clazz.defineMethod (c$, "readLine", \r
-function () {\r
-return (this.pt < this.len ? this.data.get (this.pt++) : null);\r
-});\r
-Clazz.defineMethod (c$, "mark", \r
-function (ptr) {\r
-this.ptMark = this.pt;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "reset", \r
-function () {\r
-this.pt = this.ptMark;\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.util.DataReader"], "javajs.util.ListDataReader", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.data = null;
+this.pt = 0;
+this.len = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "ListDataReader", javajs.util.DataReader);
+Clazz.overrideMethod (c$, "setData", 
+function (data) {
+this.data = data;
+this.len = this.data.size ();
+return this;
+}, "~O");
+Clazz.defineMethod (c$, "read", 
+function (buf, off, len) {
+return this.readBuf (buf, off, len);
+}, "~A,~N,~N");
+Clazz.defineMethod (c$, "readLine", 
+function () {
+return (this.pt < this.len ? this.data.get (this.pt++) : null);
+});
+Clazz.defineMethod (c$, "mark", 
+function (ptr) {
+this.ptMark = this.pt;
+}, "~N");
+Clazz.overrideMethod (c$, "reset", 
+function () {
+this.pt = this.ptMark;
+});
+});
index 414e59d..f809b5a 100644 (file)
@@ -1,14 +1,14 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["java.util.ArrayList"], "javajs.util.Lst", null, function () {\r
-c$ = Clazz.declareType (javajs.util, "Lst", java.util.ArrayList);\r
-Clazz.defineMethod (c$, "addLast", \r
-function (v) {\r
-{\r
-return this.add1(v);\r
-}}, "~O");\r
-Clazz.defineMethod (c$, "removeObj", \r
-function (v) {\r
-{\r
-return this.removeObject(v);\r
-}}, "~O");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["java.util.ArrayList"], "javajs.util.Lst", null, function () {
+c$ = Clazz.declareType (javajs.util, "Lst", java.util.ArrayList);
+Clazz.defineMethod (c$, "addLast", 
+function (v) {
+{
+return this.add1(v);
+}}, "~O");
+Clazz.defineMethod (c$, "removeObj", 
+function (v) {
+{
+return this.removeObject(v);
+}}, "~O");
+});
index a395f3f..8461118 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.util.M34"], "javajs.util.M3", ["javajs.util.T3"], function () {\r
-c$ = Clazz.declareType (javajs.util, "M3", javajs.util.M34, java.io.Serializable);\r
-c$.newA9 = Clazz.defineMethod (c$, "newA9", \r
-function (v) {\r
-var m =  new javajs.util.M3 ();\r
-m.setA (v);\r
-return m;\r
-}, "~A");\r
-c$.newM3 = Clazz.defineMethod (c$, "newM3", \r
-function (m1) {\r
-var m =  new javajs.util.M3 ();\r
-if (m1 == null) {\r
-m.setScale (1);\r
-return m;\r
-}m.m00 = m1.m00;\r
-m.m01 = m1.m01;\r
-m.m02 = m1.m02;\r
-m.m10 = m1.m10;\r
-m.m11 = m1.m11;\r
-m.m12 = m1.m12;\r
-m.m20 = m1.m20;\r
-m.m21 = m1.m21;\r
-m.m22 = m1.m22;\r
-return m;\r
-}, "javajs.util.M3");\r
-Clazz.defineMethod (c$, "setScale", \r
-function (scale) {\r
-this.clear33 ();\r
-this.m00 = this.m11 = this.m22 = scale;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setM3", \r
-function (m1) {\r
-this.setM33 (m1);\r
-}, "javajs.util.M34");\r
-Clazz.defineMethod (c$, "setA", \r
-function (m) {\r
-this.m00 = m[0];\r
-this.m01 = m[1];\r
-this.m02 = m[2];\r
-this.m10 = m[3];\r
-this.m11 = m[4];\r
-this.m12 = m[5];\r
-this.m20 = m[6];\r
-this.m21 = m[7];\r
-this.m22 = m[8];\r
-}, "~A");\r
-Clazz.defineMethod (c$, "setElement", \r
-function (row, col, v) {\r
-this.set33 (row, col, v);\r
-}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "getElement", \r
-function (row, col) {\r
-return this.get33 (row, col);\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "setRow", \r
-function (row, x, y, z) {\r
-switch (row) {\r
-case 0:\r
-this.m00 = x;\r
-this.m01 = y;\r
-this.m02 = z;\r
-return;\r
-case 1:\r
-this.m10 = x;\r
-this.m11 = y;\r
-this.m12 = z;\r
-return;\r
-case 2:\r
-this.m20 = x;\r
-this.m21 = y;\r
-this.m22 = z;\r
-return;\r
-default:\r
-this.err ();\r
-}\r
-}, "~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "setRowV", \r
-function (row, v) {\r
-switch (row) {\r
-case 0:\r
-this.m00 = v.x;\r
-this.m01 = v.y;\r
-this.m02 = v.z;\r
-return;\r
-case 1:\r
-this.m10 = v.x;\r
-this.m11 = v.y;\r
-this.m12 = v.z;\r
-return;\r
-case 2:\r
-this.m20 = v.x;\r
-this.m21 = v.y;\r
-this.m22 = v.z;\r
-return;\r
-default:\r
-this.err ();\r
-}\r
-}, "~N,javajs.util.T3");\r
-Clazz.defineMethod (c$, "setRowA", \r
-function (row, v) {\r
-this.setRow33 (row, v);\r
-}, "~N,~A");\r
-Clazz.overrideMethod (c$, "getRow", \r
-function (row, v) {\r
-this.getRow33 (row, v);\r
-}, "~N,~A");\r
-Clazz.defineMethod (c$, "setColumn3", \r
-function (column, x, y, z) {\r
-switch (column) {\r
-case 0:\r
-this.m00 = x;\r
-this.m10 = y;\r
-this.m20 = z;\r
-break;\r
-case 1:\r
-this.m01 = x;\r
-this.m11 = y;\r
-this.m21 = z;\r
-break;\r
-case 2:\r
-this.m02 = x;\r
-this.m12 = y;\r
-this.m22 = z;\r
-break;\r
-default:\r
-this.err ();\r
-}\r
-}, "~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "setColumnV", \r
-function (column, v) {\r
-switch (column) {\r
-case 0:\r
-this.m00 = v.x;\r
-this.m10 = v.y;\r
-this.m20 = v.z;\r
-break;\r
-case 1:\r
-this.m01 = v.x;\r
-this.m11 = v.y;\r
-this.m21 = v.z;\r
-break;\r
-case 2:\r
-this.m02 = v.x;\r
-this.m12 = v.y;\r
-this.m22 = v.z;\r
-break;\r
-default:\r
-this.err ();\r
-}\r
-}, "~N,javajs.util.T3");\r
-Clazz.defineMethod (c$, "getColumnV", \r
-function (column, v) {\r
-switch (column) {\r
-case 0:\r
-v.x = this.m00;\r
-v.y = this.m10;\r
-v.z = this.m20;\r
-break;\r
-case 1:\r
-v.x = this.m01;\r
-v.y = this.m11;\r
-v.z = this.m21;\r
-break;\r
-case 2:\r
-v.x = this.m02;\r
-v.y = this.m12;\r
-v.z = this.m22;\r
-break;\r
-default:\r
-this.err ();\r
-}\r
-}, "~N,javajs.util.T3");\r
-Clazz.defineMethod (c$, "setColumnA", \r
-function (column, v) {\r
-this.setColumn33 (column, v);\r
-}, "~N,~A");\r
-Clazz.defineMethod (c$, "getColumn", \r
-function (column, v) {\r
-this.getColumn33 (column, v);\r
-}, "~N,~A");\r
-Clazz.defineMethod (c$, "add", \r
-function (m1) {\r
-this.add33 (m1);\r
-}, "javajs.util.M3");\r
-Clazz.defineMethod (c$, "sub", \r
-function (m1) {\r
-this.sub33 (m1);\r
-}, "javajs.util.M3");\r
-Clazz.defineMethod (c$, "transpose", \r
-function () {\r
-this.transpose33 ();\r
-});\r
-Clazz.defineMethod (c$, "transposeM", \r
-function (m1) {\r
-this.setM33 (m1);\r
-this.transpose33 ();\r
-}, "javajs.util.M3");\r
-Clazz.defineMethod (c$, "invertM", \r
-function (m1) {\r
-this.setM33 (m1);\r
-this.invert ();\r
-}, "javajs.util.M3");\r
-Clazz.defineMethod (c$, "invert", \r
-function () {\r
-var s = this.determinant3 ();\r
-if (s == 0.0) return;\r
-s = 1 / s;\r
-this.set9 (this.m11 * this.m22 - this.m12 * this.m21, this.m02 * this.m21 - this.m01 * this.m22, this.m01 * this.m12 - this.m02 * this.m11, this.m12 * this.m20 - this.m10 * this.m22, this.m00 * this.m22 - this.m02 * this.m20, this.m02 * this.m10 - this.m00 * this.m12, this.m10 * this.m21 - this.m11 * this.m20, this.m01 * this.m20 - this.m00 * this.m21, this.m00 * this.m11 - this.m01 * this.m10);\r
-this.scale (s);\r
-});\r
-Clazz.defineMethod (c$, "setAsXRotation", \r
-function (angle) {\r
-this.setXRot (angle);\r
-return this;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setAsYRotation", \r
-function (angle) {\r
-this.setYRot (angle);\r
-return this;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setAsZRotation", \r
-function (angle) {\r
-this.setZRot (angle);\r
-return this;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "scale", \r
-function (scalar) {\r
-this.mul33 (scalar);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "mul", \r
-function (m1) {\r
-this.mul2 (this, m1);\r
-}, "javajs.util.M3");\r
-Clazz.defineMethod (c$, "mul2", \r
-function (m1, m2) {\r
-this.set9 (m1.m00 * m2.m00 + m1.m01 * m2.m10 + m1.m02 * m2.m20, m1.m00 * m2.m01 + m1.m01 * m2.m11 + m1.m02 * m2.m21, m1.m00 * m2.m02 + m1.m01 * m2.m12 + m1.m02 * m2.m22, m1.m10 * m2.m00 + m1.m11 * m2.m10 + m1.m12 * m2.m20, m1.m10 * m2.m01 + m1.m11 * m2.m11 + m1.m12 * m2.m21, m1.m10 * m2.m02 + m1.m11 * m2.m12 + m1.m12 * m2.m22, m1.m20 * m2.m00 + m1.m21 * m2.m10 + m1.m22 * m2.m20, m1.m20 * m2.m01 + m1.m21 * m2.m11 + m1.m22 * m2.m21, m1.m20 * m2.m02 + m1.m21 * m2.m12 + m1.m22 * m2.m22);\r
-}, "javajs.util.M3,javajs.util.M3");\r
-Clazz.overrideMethod (c$, "equals", \r
-function (o) {\r
-if (!(Clazz.instanceOf (o, javajs.util.M3))) return false;\r
-var m = o;\r
-return this.m00 == m.m00 && this.m01 == m.m01 && this.m02 == m.m02 && this.m10 == m.m10 && this.m11 == m.m11 && this.m12 == m.m12 && this.m20 == m.m20 && this.m21 == m.m21 && this.m22 == m.m22;\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "hashCode", \r
-function () {\r
-return javajs.util.T3.floatToIntBits0 (this.m00) ^ javajs.util.T3.floatToIntBits0 (this.m01) ^ javajs.util.T3.floatToIntBits0 (this.m02) ^ javajs.util.T3.floatToIntBits0 (this.m10) ^ javajs.util.T3.floatToIntBits0 (this.m11) ^ javajs.util.T3.floatToIntBits0 (this.m12) ^ javajs.util.T3.floatToIntBits0 (this.m20) ^ javajs.util.T3.floatToIntBits0 (this.m21) ^ javajs.util.T3.floatToIntBits0 (this.m22);\r
-});\r
-Clazz.defineMethod (c$, "setZero", \r
-function () {\r
-this.clear33 ();\r
-});\r
-Clazz.defineMethod (c$, "set9", \r
-($fz = function (m00, m01, m02, m10, m11, m12, m20, m21, m22) {\r
-this.m00 = m00;\r
-this.m01 = m01;\r
-this.m02 = m02;\r
-this.m10 = m10;\r
-this.m11 = m11;\r
-this.m12 = m12;\r
-this.m20 = m20;\r
-this.m21 = m21;\r
-this.m22 = m22;\r
-}, $fz.isPrivate = true, $fz), "~N,~N,~N,~N,~N,~N,~N,~N,~N");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "[\n  [" + this.m00 + "\t" + this.m01 + "\t" + this.m02 + "]" + "\n  [" + this.m10 + "\t" + this.m11 + "\t" + this.m12 + "]" + "\n  [" + this.m20 + "\t" + this.m21 + "\t" + this.m22 + "] ]";\r
-});\r
-Clazz.defineMethod (c$, "setAA", \r
-function (a) {\r
-this.setAA33 (a);\r
-return this;\r
-}, "javajs.util.A4");\r
-Clazz.defineMethod (c$, "setAsBallRotation", \r
-function (responseFactor, dx, dy) {\r
-var r = Math.sqrt (dx * dx + dy * dy);\r
-var th = r * responseFactor;\r
-if (th == 0) {\r
-this.setScale (1);\r
-return false;\r
-}var c = Math.cos (th);\r
-var s = Math.sin (th);\r
-var nx = -dy / r;\r
-var ny = dx / r;\r
-var c1 = c - 1;\r
-this.m00 = 1 + c1 * nx * nx;\r
-this.m01 = this.m10 = c1 * nx * ny;\r
-this.m20 = -(this.m02 = s * nx);\r
-this.m11 = 1 + c1 * ny * ny;\r
-this.m21 = -(this.m12 = s * ny);\r
-this.m22 = c;\r
-return true;\r
-}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "isRotation", \r
-function () {\r
-return (Math.abs (this.determinant3 () - 1) < 0.001);\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.util.M34"], "javajs.util.M3", ["javajs.util.T3"], function () {
+c$ = Clazz.declareType (javajs.util, "M3", javajs.util.M34, java.io.Serializable);
+c$.newA9 = Clazz.defineMethod (c$, "newA9", 
+function (v) {
+var m =  new javajs.util.M3 ();
+m.setA (v);
+return m;
+}, "~A");
+c$.newM3 = Clazz.defineMethod (c$, "newM3", 
+function (m1) {
+var m =  new javajs.util.M3 ();
+if (m1 == null) {
+m.setScale (1);
+return m;
+}m.m00 = m1.m00;
+m.m01 = m1.m01;
+m.m02 = m1.m02;
+m.m10 = m1.m10;
+m.m11 = m1.m11;
+m.m12 = m1.m12;
+m.m20 = m1.m20;
+m.m21 = m1.m21;
+m.m22 = m1.m22;
+return m;
+}, "javajs.util.M3");
+Clazz.defineMethod (c$, "setScale", 
+function (scale) {
+this.clear33 ();
+this.m00 = this.m11 = this.m22 = scale;
+}, "~N");
+Clazz.defineMethod (c$, "setM3", 
+function (m1) {
+this.setM33 (m1);
+}, "javajs.util.M34");
+Clazz.defineMethod (c$, "setA", 
+function (m) {
+this.m00 = m[0];
+this.m01 = m[1];
+this.m02 = m[2];
+this.m10 = m[3];
+this.m11 = m[4];
+this.m12 = m[5];
+this.m20 = m[6];
+this.m21 = m[7];
+this.m22 = m[8];
+}, "~A");
+Clazz.defineMethod (c$, "setElement", 
+function (row, col, v) {
+this.set33 (row, col, v);
+}, "~N,~N,~N");
+Clazz.defineMethod (c$, "getElement", 
+function (row, col) {
+return this.get33 (row, col);
+}, "~N,~N");
+Clazz.defineMethod (c$, "setRow", 
+function (row, x, y, z) {
+switch (row) {
+case 0:
+this.m00 = x;
+this.m01 = y;
+this.m02 = z;
+return;
+case 1:
+this.m10 = x;
+this.m11 = y;
+this.m12 = z;
+return;
+case 2:
+this.m20 = x;
+this.m21 = y;
+this.m22 = z;
+return;
+default:
+this.err ();
+}
+}, "~N,~N,~N,~N");
+Clazz.defineMethod (c$, "setRowV", 
+function (row, v) {
+switch (row) {
+case 0:
+this.m00 = v.x;
+this.m01 = v.y;
+this.m02 = v.z;
+return;
+case 1:
+this.m10 = v.x;
+this.m11 = v.y;
+this.m12 = v.z;
+return;
+case 2:
+this.m20 = v.x;
+this.m21 = v.y;
+this.m22 = v.z;
+return;
+default:
+this.err ();
+}
+}, "~N,javajs.util.T3");
+Clazz.defineMethod (c$, "setRowA", 
+function (row, v) {
+this.setRow33 (row, v);
+}, "~N,~A");
+Clazz.overrideMethod (c$, "getRow", 
+function (row, v) {
+this.getRow33 (row, v);
+}, "~N,~A");
+Clazz.defineMethod (c$, "setColumn3", 
+function (column, x, y, z) {
+switch (column) {
+case 0:
+this.m00 = x;
+this.m10 = y;
+this.m20 = z;
+break;
+case 1:
+this.m01 = x;
+this.m11 = y;
+this.m21 = z;
+break;
+case 2:
+this.m02 = x;
+this.m12 = y;
+this.m22 = z;
+break;
+default:
+this.err ();
+}
+}, "~N,~N,~N,~N");
+Clazz.defineMethod (c$, "setColumnV", 
+function (column, v) {
+switch (column) {
+case 0:
+this.m00 = v.x;
+this.m10 = v.y;
+this.m20 = v.z;
+break;
+case 1:
+this.m01 = v.x;
+this.m11 = v.y;
+this.m21 = v.z;
+break;
+case 2:
+this.m02 = v.x;
+this.m12 = v.y;
+this.m22 = v.z;
+break;
+default:
+this.err ();
+}
+}, "~N,javajs.util.T3");
+Clazz.defineMethod (c$, "getColumnV", 
+function (column, v) {
+switch (column) {
+case 0:
+v.x = this.m00;
+v.y = this.m10;
+v.z = this.m20;
+break;
+case 1:
+v.x = this.m01;
+v.y = this.m11;
+v.z = this.m21;
+break;
+case 2:
+v.x = this.m02;
+v.y = this.m12;
+v.z = this.m22;
+break;
+default:
+this.err ();
+}
+}, "~N,javajs.util.T3");
+Clazz.defineMethod (c$, "setColumnA", 
+function (column, v) {
+this.setColumn33 (column, v);
+}, "~N,~A");
+Clazz.defineMethod (c$, "getColumn", 
+function (column, v) {
+this.getColumn33 (column, v);
+}, "~N,~A");
+Clazz.defineMethod (c$, "add", 
+function (m1) {
+this.add33 (m1);
+}, "javajs.util.M3");
+Clazz.defineMethod (c$, "sub", 
+function (m1) {
+this.sub33 (m1);
+}, "javajs.util.M3");
+Clazz.defineMethod (c$, "transpose", 
+function () {
+this.transpose33 ();
+});
+Clazz.defineMethod (c$, "transposeM", 
+function (m1) {
+this.setM33 (m1);
+this.transpose33 ();
+}, "javajs.util.M3");
+Clazz.defineMethod (c$, "invertM", 
+function (m1) {
+this.setM33 (m1);
+this.invert ();
+}, "javajs.util.M3");
+Clazz.defineMethod (c$, "invert", 
+function () {
+var s = this.determinant3 ();
+if (s == 0.0) return;
+s = 1 / s;
+this.set9 (this.m11 * this.m22 - this.m12 * this.m21, this.m02 * this.m21 - this.m01 * this.m22, this.m01 * this.m12 - this.m02 * this.m11, this.m12 * this.m20 - this.m10 * this.m22, this.m00 * this.m22 - this.m02 * this.m20, this.m02 * this.m10 - this.m00 * this.m12, this.m10 * this.m21 - this.m11 * this.m20, this.m01 * this.m20 - this.m00 * this.m21, this.m00 * this.m11 - this.m01 * this.m10);
+this.scale (s);
+});
+Clazz.defineMethod (c$, "setAsXRotation", 
+function (angle) {
+this.setXRot (angle);
+return this;
+}, "~N");
+Clazz.defineMethod (c$, "setAsYRotation", 
+function (angle) {
+this.setYRot (angle);
+return this;
+}, "~N");
+Clazz.defineMethod (c$, "setAsZRotation", 
+function (angle) {
+this.setZRot (angle);
+return this;
+}, "~N");
+Clazz.defineMethod (c$, "scale", 
+function (scalar) {
+this.mul33 (scalar);
+}, "~N");
+Clazz.defineMethod (c$, "mul", 
+function (m1) {
+this.mul2 (this, m1);
+}, "javajs.util.M3");
+Clazz.defineMethod (c$, "mul2", 
+function (m1, m2) {
+this.set9 (m1.m00 * m2.m00 + m1.m01 * m2.m10 + m1.m02 * m2.m20, m1.m00 * m2.m01 + m1.m01 * m2.m11 + m1.m02 * m2.m21, m1.m00 * m2.m02 + m1.m01 * m2.m12 + m1.m02 * m2.m22, m1.m10 * m2.m00 + m1.m11 * m2.m10 + m1.m12 * m2.m20, m1.m10 * m2.m01 + m1.m11 * m2.m11 + m1.m12 * m2.m21, m1.m10 * m2.m02 + m1.m11 * m2.m12 + m1.m12 * m2.m22, m1.m20 * m2.m00 + m1.m21 * m2.m10 + m1.m22 * m2.m20, m1.m20 * m2.m01 + m1.m21 * m2.m11 + m1.m22 * m2.m21, m1.m20 * m2.m02 + m1.m21 * m2.m12 + m1.m22 * m2.m22);
+}, "javajs.util.M3,javajs.util.M3");
+Clazz.overrideMethod (c$, "equals", 
+function (o) {
+if (!(Clazz.instanceOf (o, javajs.util.M3))) return false;
+var m = o;
+return this.m00 == m.m00 && this.m01 == m.m01 && this.m02 == m.m02 && this.m10 == m.m10 && this.m11 == m.m11 && this.m12 == m.m12 && this.m20 == m.m20 && this.m21 == m.m21 && this.m22 == m.m22;
+}, "~O");
+Clazz.overrideMethod (c$, "hashCode", 
+function () {
+return javajs.util.T3.floatToIntBits0 (this.m00) ^ javajs.util.T3.floatToIntBits0 (this.m01) ^ javajs.util.T3.floatToIntBits0 (this.m02) ^ javajs.util.T3.floatToIntBits0 (this.m10) ^ javajs.util.T3.floatToIntBits0 (this.m11) ^ javajs.util.T3.floatToIntBits0 (this.m12) ^ javajs.util.T3.floatToIntBits0 (this.m20) ^ javajs.util.T3.floatToIntBits0 (this.m21) ^ javajs.util.T3.floatToIntBits0 (this.m22);
+});
+Clazz.defineMethod (c$, "setZero", 
+function () {
+this.clear33 ();
+});
+Clazz.defineMethod (c$, "set9", 
+($fz = function (m00, m01, m02, m10, m11, m12, m20, m21, m22) {
+this.m00 = m00;
+this.m01 = m01;
+this.m02 = m02;
+this.m10 = m10;
+this.m11 = m11;
+this.m12 = m12;
+this.m20 = m20;
+this.m21 = m21;
+this.m22 = m22;
+}, $fz.isPrivate = true, $fz), "~N,~N,~N,~N,~N,~N,~N,~N,~N");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "[\n  [" + this.m00 + "\t" + this.m01 + "\t" + this.m02 + "]" + "\n  [" + this.m10 + "\t" + this.m11 + "\t" + this.m12 + "]" + "\n  [" + this.m20 + "\t" + this.m21 + "\t" + this.m22 + "] ]";
+});
+Clazz.defineMethod (c$, "setAA", 
+function (a) {
+this.setAA33 (a);
+return this;
+}, "javajs.util.A4");
+Clazz.defineMethod (c$, "setAsBallRotation", 
+function (responseFactor, dx, dy) {
+var r = Math.sqrt (dx * dx + dy * dy);
+var th = r * responseFactor;
+if (th == 0) {
+this.setScale (1);
+return false;
+}var c = Math.cos (th);
+var s = Math.sin (th);
+var nx = -dy / r;
+var ny = dx / r;
+var c1 = c - 1;
+this.m00 = 1 + c1 * nx * nx;
+this.m01 = this.m10 = c1 * nx * ny;
+this.m20 = -(this.m02 = s * nx);
+this.m11 = 1 + c1 * ny * ny;
+this.m21 = -(this.m12 = s * ny);
+this.m22 = c;
+return true;
+}, "~N,~N,~N");
+Clazz.defineMethod (c$, "isRotation", 
+function () {
+return (Math.abs (this.determinant3 () - 1) < 0.001);
+});
+});
index 47c6a34..ae3f33d 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (null, "javajs.util.M34", ["java.lang.ArrayIndexOutOfBoundsException"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.m00 = 0;\r
-this.m01 = 0;\r
-this.m02 = 0;\r
-this.m10 = 0;\r
-this.m11 = 0;\r
-this.m12 = 0;\r
-this.m20 = 0;\r
-this.m21 = 0;\r
-this.m22 = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "M34");\r
-Clazz.defineMethod (c$, "setAA33", \r
-function (a) {\r
-var x = a.x;\r
-var y = a.y;\r
-var z = a.z;\r
-var angle = a.angle;\r
-var n = Math.sqrt (x * x + y * y + z * z);\r
-n = 1 / n;\r
-x *= n;\r
-y *= n;\r
-z *= n;\r
-var c = Math.cos (angle);\r
-var s = Math.sin (angle);\r
-var omc = 1.0 - c;\r
-this.m00 = (c + x * x * omc);\r
-this.m11 = (c + y * y * omc);\r
-this.m22 = (c + z * z * omc);\r
-var tmp1 = x * y * omc;\r
-var tmp2 = z * s;\r
-this.m01 = (tmp1 - tmp2);\r
-this.m10 = (tmp1 + tmp2);\r
-tmp1 = x * z * omc;\r
-tmp2 = y * s;\r
-this.m02 = (tmp1 + tmp2);\r
-this.m20 = (tmp1 - tmp2);\r
-tmp1 = y * z * omc;\r
-tmp2 = x * s;\r
-this.m12 = (tmp1 - tmp2);\r
-this.m21 = (tmp1 + tmp2);\r
-}, "javajs.util.A4");\r
-Clazz.defineMethod (c$, "rotate", \r
-function (t) {\r
-this.rotate2 (t, t);\r
-}, "javajs.util.T3");\r
-Clazz.defineMethod (c$, "rotate2", \r
-function (t, result) {\r
-result.set (this.m00 * t.x + this.m01 * t.y + this.m02 * t.z, this.m10 * t.x + this.m11 * t.y + this.m12 * t.z, this.m20 * t.x + this.m21 * t.y + this.m22 * t.z);\r
-}, "javajs.util.T3,javajs.util.T3");\r
-Clazz.defineMethod (c$, "setM33", \r
-function (m1) {\r
-this.m00 = m1.m00;\r
-this.m01 = m1.m01;\r
-this.m02 = m1.m02;\r
-this.m10 = m1.m10;\r
-this.m11 = m1.m11;\r
-this.m12 = m1.m12;\r
-this.m20 = m1.m20;\r
-this.m21 = m1.m21;\r
-this.m22 = m1.m22;\r
-}, "javajs.util.M34");\r
-Clazz.defineMethod (c$, "clear33", \r
-function () {\r
-this.m00 = this.m01 = this.m02 = this.m10 = this.m11 = this.m12 = this.m20 = this.m21 = this.m22 = 0.0;\r
-});\r
-Clazz.defineMethod (c$, "set33", \r
-function (row, col, v) {\r
-switch (row) {\r
-case 0:\r
-switch (col) {\r
-case 0:\r
-this.m00 = v;\r
-return;\r
-case 1:\r
-this.m01 = v;\r
-return;\r
-case 2:\r
-this.m02 = v;\r
-return;\r
-}\r
-break;\r
-case 1:\r
-switch (col) {\r
-case 0:\r
-this.m10 = v;\r
-return;\r
-case 1:\r
-this.m11 = v;\r
-return;\r
-case 2:\r
-this.m12 = v;\r
-return;\r
-}\r
-break;\r
-case 2:\r
-switch (col) {\r
-case 0:\r
-this.m20 = v;\r
-return;\r
-case 1:\r
-this.m21 = v;\r
-return;\r
-case 2:\r
-this.m22 = v;\r
-return;\r
-}\r
-break;\r
-}\r
-this.err ();\r
-}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "get33", \r
-function (row, col) {\r
-switch (row) {\r
-case 0:\r
-switch (col) {\r
-case 0:\r
-return this.m00;\r
-case 1:\r
-return this.m01;\r
-case 2:\r
-return this.m02;\r
-}\r
-break;\r
-case 1:\r
-switch (col) {\r
-case 0:\r
-return this.m10;\r
-case 1:\r
-return this.m11;\r
-case 2:\r
-return this.m12;\r
-}\r
-break;\r
-case 2:\r
-switch (col) {\r
-case 0:\r
-return this.m20;\r
-case 1:\r
-return this.m21;\r
-case 2:\r
-return this.m22;\r
-}\r
-break;\r
-}\r
-this.err ();\r
-return 0;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "setRow33", \r
-function (row, v) {\r
-switch (row) {\r
-case 0:\r
-this.m00 = v[0];\r
-this.m01 = v[1];\r
-this.m02 = v[2];\r
-return;\r
-case 1:\r
-this.m10 = v[0];\r
-this.m11 = v[1];\r
-this.m12 = v[2];\r
-return;\r
-case 2:\r
-this.m20 = v[0];\r
-this.m21 = v[1];\r
-this.m22 = v[2];\r
-return;\r
-default:\r
-this.err ();\r
-}\r
-}, "~N,~A");\r
-Clazz.defineMethod (c$, "getRow33", \r
-function (row, v) {\r
-switch (row) {\r
-case 0:\r
-v[0] = this.m00;\r
-v[1] = this.m01;\r
-v[2] = this.m02;\r
-return;\r
-case 1:\r
-v[0] = this.m10;\r
-v[1] = this.m11;\r
-v[2] = this.m12;\r
-return;\r
-case 2:\r
-v[0] = this.m20;\r
-v[1] = this.m21;\r
-v[2] = this.m22;\r
-return;\r
-}\r
-this.err ();\r
-}, "~N,~A");\r
-Clazz.defineMethod (c$, "setColumn33", \r
-function (column, v) {\r
-switch (column) {\r
-case 0:\r
-this.m00 = v[0];\r
-this.m10 = v[1];\r
-this.m20 = v[2];\r
-break;\r
-case 1:\r
-this.m01 = v[0];\r
-this.m11 = v[1];\r
-this.m21 = v[2];\r
-break;\r
-case 2:\r
-this.m02 = v[0];\r
-this.m12 = v[1];\r
-this.m22 = v[2];\r
-break;\r
-default:\r
-this.err ();\r
-}\r
-}, "~N,~A");\r
-Clazz.defineMethod (c$, "getColumn33", \r
-function (column, v) {\r
-switch (column) {\r
-case 0:\r
-v[0] = this.m00;\r
-v[1] = this.m10;\r
-v[2] = this.m20;\r
-break;\r
-case 1:\r
-v[0] = this.m01;\r
-v[1] = this.m11;\r
-v[2] = this.m21;\r
-break;\r
-case 2:\r
-v[0] = this.m02;\r
-v[1] = this.m12;\r
-v[2] = this.m22;\r
-break;\r
-default:\r
-this.err ();\r
-}\r
-}, "~N,~A");\r
-Clazz.defineMethod (c$, "add33", \r
-function (m1) {\r
-this.m00 += m1.m00;\r
-this.m01 += m1.m01;\r
-this.m02 += m1.m02;\r
-this.m10 += m1.m10;\r
-this.m11 += m1.m11;\r
-this.m12 += m1.m12;\r
-this.m20 += m1.m20;\r
-this.m21 += m1.m21;\r
-this.m22 += m1.m22;\r
-}, "javajs.util.M34");\r
-Clazz.defineMethod (c$, "sub33", \r
-function (m1) {\r
-this.m00 -= m1.m00;\r
-this.m01 -= m1.m01;\r
-this.m02 -= m1.m02;\r
-this.m10 -= m1.m10;\r
-this.m11 -= m1.m11;\r
-this.m12 -= m1.m12;\r
-this.m20 -= m1.m20;\r
-this.m21 -= m1.m21;\r
-this.m22 -= m1.m22;\r
-}, "javajs.util.M34");\r
-Clazz.defineMethod (c$, "mul33", \r
-function (x) {\r
-this.m00 *= x;\r
-this.m01 *= x;\r
-this.m02 *= x;\r
-this.m10 *= x;\r
-this.m11 *= x;\r
-this.m12 *= x;\r
-this.m20 *= x;\r
-this.m21 *= x;\r
-this.m22 *= x;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "transpose33", \r
-function () {\r
-var tmp = this.m01;\r
-this.m01 = this.m10;\r
-this.m10 = tmp;\r
-tmp = this.m02;\r
-this.m02 = this.m20;\r
-this.m20 = tmp;\r
-tmp = this.m12;\r
-this.m12 = this.m21;\r
-this.m21 = tmp;\r
-});\r
-Clazz.defineMethod (c$, "setXRot", \r
-function (angle) {\r
-var c = Math.cos (angle);\r
-var s = Math.sin (angle);\r
-this.m00 = 1.0;\r
-this.m01 = 0.0;\r
-this.m02 = 0.0;\r
-this.m10 = 0.0;\r
-this.m11 = c;\r
-this.m12 = -s;\r
-this.m20 = 0.0;\r
-this.m21 = s;\r
-this.m22 = c;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setYRot", \r
-function (angle) {\r
-var c = Math.cos (angle);\r
-var s = Math.sin (angle);\r
-this.m00 = c;\r
-this.m01 = 0.0;\r
-this.m02 = s;\r
-this.m10 = 0.0;\r
-this.m11 = 1.0;\r
-this.m12 = 0.0;\r
-this.m20 = -s;\r
-this.m21 = 0.0;\r
-this.m22 = c;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setZRot", \r
-function (angle) {\r
-var c = Math.cos (angle);\r
-var s = Math.sin (angle);\r
-this.m00 = c;\r
-this.m01 = -s;\r
-this.m02 = 0.0;\r
-this.m10 = s;\r
-this.m11 = c;\r
-this.m12 = 0.0;\r
-this.m20 = 0.0;\r
-this.m21 = 0.0;\r
-this.m22 = 1.0;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "determinant3", \r
-function () {\r
-return this.m00 * (this.m11 * this.m22 - this.m21 * this.m12) - this.m01 * (this.m10 * this.m22 - this.m20 * this.m12) + this.m02 * (this.m10 * this.m21 - this.m20 * this.m11);\r
-});\r
-Clazz.defineMethod (c$, "err", \r
-function () {\r
-throw  new ArrayIndexOutOfBoundsException ("matrix column/row out of bounds");\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (null, "javajs.util.M34", ["java.lang.ArrayIndexOutOfBoundsException"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.m00 = 0;
+this.m01 = 0;
+this.m02 = 0;
+this.m10 = 0;
+this.m11 = 0;
+this.m12 = 0;
+this.m20 = 0;
+this.m21 = 0;
+this.m22 = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "M34");
+Clazz.defineMethod (c$, "setAA33", 
+function (a) {
+var x = a.x;
+var y = a.y;
+var z = a.z;
+var angle = a.angle;
+var n = Math.sqrt (x * x + y * y + z * z);
+n = 1 / n;
+x *= n;
+y *= n;
+z *= n;
+var c = Math.cos (angle);
+var s = Math.sin (angle);
+var omc = 1.0 - c;
+this.m00 = (c + x * x * omc);
+this.m11 = (c + y * y * omc);
+this.m22 = (c + z * z * omc);
+var tmp1 = x * y * omc;
+var tmp2 = z * s;
+this.m01 = (tmp1 - tmp2);
+this.m10 = (tmp1 + tmp2);
+tmp1 = x * z * omc;
+tmp2 = y * s;
+this.m02 = (tmp1 + tmp2);
+this.m20 = (tmp1 - tmp2);
+tmp1 = y * z * omc;
+tmp2 = x * s;
+this.m12 = (tmp1 - tmp2);
+this.m21 = (tmp1 + tmp2);
+}, "javajs.util.A4");
+Clazz.defineMethod (c$, "rotate", 
+function (t) {
+this.rotate2 (t, t);
+}, "javajs.util.T3");
+Clazz.defineMethod (c$, "rotate2", 
+function (t, result) {
+result.set (this.m00 * t.x + this.m01 * t.y + this.m02 * t.z, this.m10 * t.x + this.m11 * t.y + this.m12 * t.z, this.m20 * t.x + this.m21 * t.y + this.m22 * t.z);
+}, "javajs.util.T3,javajs.util.T3");
+Clazz.defineMethod (c$, "setM33", 
+function (m1) {
+this.m00 = m1.m00;
+this.m01 = m1.m01;
+this.m02 = m1.m02;
+this.m10 = m1.m10;
+this.m11 = m1.m11;
+this.m12 = m1.m12;
+this.m20 = m1.m20;
+this.m21 = m1.m21;
+this.m22 = m1.m22;
+}, "javajs.util.M34");
+Clazz.defineMethod (c$, "clear33", 
+function () {
+this.m00 = this.m01 = this.m02 = this.m10 = this.m11 = this.m12 = this.m20 = this.m21 = this.m22 = 0.0;
+});
+Clazz.defineMethod (c$, "set33", 
+function (row, col, v) {
+switch (row) {
+case 0:
+switch (col) {
+case 0:
+this.m00 = v;
+return;
+case 1:
+this.m01 = v;
+return;
+case 2:
+this.m02 = v;
+return;
+}
+break;
+case 1:
+switch (col) {
+case 0:
+this.m10 = v;
+return;
+case 1:
+this.m11 = v;
+return;
+case 2:
+this.m12 = v;
+return;
+}
+break;
+case 2:
+switch (col) {
+case 0:
+this.m20 = v;
+return;
+case 1:
+this.m21 = v;
+return;
+case 2:
+this.m22 = v;
+return;
+}
+break;
+}
+this.err ();
+}, "~N,~N,~N");
+Clazz.defineMethod (c$, "get33", 
+function (row, col) {
+switch (row) {
+case 0:
+switch (col) {
+case 0:
+return this.m00;
+case 1:
+return this.m01;
+case 2:
+return this.m02;
+}
+break;
+case 1:
+switch (col) {
+case 0:
+return this.m10;
+case 1:
+return this.m11;
+case 2:
+return this.m12;
+}
+break;
+case 2:
+switch (col) {
+case 0:
+return this.m20;
+case 1:
+return this.m21;
+case 2:
+return this.m22;
+}
+break;
+}
+this.err ();
+return 0;
+}, "~N,~N");
+Clazz.defineMethod (c$, "setRow33", 
+function (row, v) {
+switch (row) {
+case 0:
+this.m00 = v[0];
+this.m01 = v[1];
+this.m02 = v[2];
+return;
+case 1:
+this.m10 = v[0];
+this.m11 = v[1];
+this.m12 = v[2];
+return;
+case 2:
+this.m20 = v[0];
+this.m21 = v[1];
+this.m22 = v[2];
+return;
+default:
+this.err ();
+}
+}, "~N,~A");
+Clazz.defineMethod (c$, "getRow33", 
+function (row, v) {
+switch (row) {
+case 0:
+v[0] = this.m00;
+v[1] = this.m01;
+v[2] = this.m02;
+return;
+case 1:
+v[0] = this.m10;
+v[1] = this.m11;
+v[2] = this.m12;
+return;
+case 2:
+v[0] = this.m20;
+v[1] = this.m21;
+v[2] = this.m22;
+return;
+}
+this.err ();
+}, "~N,~A");
+Clazz.defineMethod (c$, "setColumn33", 
+function (column, v) {
+switch (column) {
+case 0:
+this.m00 = v[0];
+this.m10 = v[1];
+this.m20 = v[2];
+break;
+case 1:
+this.m01 = v[0];
+this.m11 = v[1];
+this.m21 = v[2];
+break;
+case 2:
+this.m02 = v[0];
+this.m12 = v[1];
+this.m22 = v[2];
+break;
+default:
+this.err ();
+}
+}, "~N,~A");
+Clazz.defineMethod (c$, "getColumn33", 
+function (column, v) {
+switch (column) {
+case 0:
+v[0] = this.m00;
+v[1] = this.m10;
+v[2] = this.m20;
+break;
+case 1:
+v[0] = this.m01;
+v[1] = this.m11;
+v[2] = this.m21;
+break;
+case 2:
+v[0] = this.m02;
+v[1] = this.m12;
+v[2] = this.m22;
+break;
+default:
+this.err ();
+}
+}, "~N,~A");
+Clazz.defineMethod (c$, "add33", 
+function (m1) {
+this.m00 += m1.m00;
+this.m01 += m1.m01;
+this.m02 += m1.m02;
+this.m10 += m1.m10;
+this.m11 += m1.m11;
+this.m12 += m1.m12;
+this.m20 += m1.m20;
+this.m21 += m1.m21;
+this.m22 += m1.m22;
+}, "javajs.util.M34");
+Clazz.defineMethod (c$, "sub33", 
+function (m1) {
+this.m00 -= m1.m00;
+this.m01 -= m1.m01;
+this.m02 -= m1.m02;
+this.m10 -= m1.m10;
+this.m11 -= m1.m11;
+this.m12 -= m1.m12;
+this.m20 -= m1.m20;
+this.m21 -= m1.m21;
+this.m22 -= m1.m22;
+}, "javajs.util.M34");
+Clazz.defineMethod (c$, "mul33", 
+function (x) {
+this.m00 *= x;
+this.m01 *= x;
+this.m02 *= x;
+this.m10 *= x;
+this.m11 *= x;
+this.m12 *= x;
+this.m20 *= x;
+this.m21 *= x;
+this.m22 *= x;
+}, "~N");
+Clazz.defineMethod (c$, "transpose33", 
+function () {
+var tmp = this.m01;
+this.m01 = this.m10;
+this.m10 = tmp;
+tmp = this.m02;
+this.m02 = this.m20;
+this.m20 = tmp;
+tmp = this.m12;
+this.m12 = this.m21;
+this.m21 = tmp;
+});
+Clazz.defineMethod (c$, "setXRot", 
+function (angle) {
+var c = Math.cos (angle);
+var s = Math.sin (angle);
+this.m00 = 1.0;
+this.m01 = 0.0;
+this.m02 = 0.0;
+this.m10 = 0.0;
+this.m11 = c;
+this.m12 = -s;
+this.m20 = 0.0;
+this.m21 = s;
+this.m22 = c;
+}, "~N");
+Clazz.defineMethod (c$, "setYRot", 
+function (angle) {
+var c = Math.cos (angle);
+var s = Math.sin (angle);
+this.m00 = c;
+this.m01 = 0.0;
+this.m02 = s;
+this.m10 = 0.0;
+this.m11 = 1.0;
+this.m12 = 0.0;
+this.m20 = -s;
+this.m21 = 0.0;
+this.m22 = c;
+}, "~N");
+Clazz.defineMethod (c$, "setZRot", 
+function (angle) {
+var c = Math.cos (angle);
+var s = Math.sin (angle);
+this.m00 = c;
+this.m01 = -s;
+this.m02 = 0.0;
+this.m10 = s;
+this.m11 = c;
+this.m12 = 0.0;
+this.m20 = 0.0;
+this.m21 = 0.0;
+this.m22 = 1.0;
+}, "~N");
+Clazz.defineMethod (c$, "determinant3", 
+function () {
+return this.m00 * (this.m11 * this.m22 - this.m21 * this.m12) - this.m01 * (this.m10 * this.m22 - this.m20 * this.m12) + this.m02 * (this.m10 * this.m21 - this.m20 * this.m11);
+});
+Clazz.defineMethod (c$, "err", 
+function () {
+throw  new ArrayIndexOutOfBoundsException ("matrix column/row out of bounds");
+});
+});
index 211ae5d..59c23db 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.util.M34"], "javajs.util.M4", ["javajs.util.T3"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.m03 = 0;\r
-this.m13 = 0;\r
-this.m23 = 0;\r
-this.m30 = 0;\r
-this.m31 = 0;\r
-this.m32 = 0;\r
-this.m33 = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "M4", javajs.util.M34);\r
-c$.newA16 = Clazz.defineMethod (c$, "newA16", \r
-function (v) {\r
-var m =  new javajs.util.M4 ();\r
-m.m00 = v[0];\r
-m.m01 = v[1];\r
-m.m02 = v[2];\r
-m.m03 = v[3];\r
-m.m10 = v[4];\r
-m.m11 = v[5];\r
-m.m12 = v[6];\r
-m.m13 = v[7];\r
-m.m20 = v[8];\r
-m.m21 = v[9];\r
-m.m22 = v[10];\r
-m.m23 = v[11];\r
-m.m30 = v[12];\r
-m.m31 = v[13];\r
-m.m32 = v[14];\r
-m.m33 = v[15];\r
-return m;\r
-}, "~A");\r
-c$.newM4 = Clazz.defineMethod (c$, "newM4", \r
-function (m1) {\r
-var m =  new javajs.util.M4 ();\r
-if (m1 == null) {\r
-m.setIdentity ();\r
-return m;\r
-}m.setToM3 (m1);\r
-m.m03 = m1.m03;\r
-m.m13 = m1.m13;\r
-m.m23 = m1.m23;\r
-m.m30 = m1.m30;\r
-m.m31 = m1.m31;\r
-m.m32 = m1.m32;\r
-m.m33 = m1.m33;\r
-return m;\r
-}, "javajs.util.M4");\r
-c$.newMV = Clazz.defineMethod (c$, "newMV", \r
-function (m1, t) {\r
-var m =  new javajs.util.M4 ();\r
-m.setMV (m1, t);\r
-return m;\r
-}, "javajs.util.M3,javajs.util.T3");\r
-Clazz.defineMethod (c$, "setZero", \r
-function () {\r
-this.clear33 ();\r
-this.m03 = this.m13 = this.m23 = this.m30 = this.m31 = this.m32 = this.m33 = 0.0;\r
-});\r
-Clazz.defineMethod (c$, "setIdentity", \r
-function () {\r
-this.setZero ();\r
-this.m00 = this.m11 = this.m22 = this.m33 = 1.0;\r
-});\r
-Clazz.defineMethod (c$, "setM4", \r
-function (m1) {\r
-this.setM33 (m1);\r
-this.m03 = m1.m03;\r
-this.m13 = m1.m13;\r
-this.m23 = m1.m23;\r
-this.m30 = m1.m30;\r
-this.m31 = m1.m31;\r
-this.m32 = m1.m32;\r
-this.m33 = m1.m33;\r
-return this;\r
-}, "javajs.util.M4");\r
-Clazz.defineMethod (c$, "setMV", \r
-function (m1, t) {\r
-this.setM33 (m1);\r
-this.setTranslation (t);\r
-this.m33 = 1;\r
-}, "javajs.util.M3,javajs.util.T3");\r
-Clazz.defineMethod (c$, "setToM3", \r
-function (m1) {\r
-this.setM33 (m1);\r
-this.m03 = this.m13 = this.m23 = this.m30 = this.m31 = this.m32 = 0.0;\r
-this.m33 = 1.0;\r
-}, "javajs.util.M34");\r
-Clazz.defineMethod (c$, "setToAA", \r
-function (a) {\r
-this.setIdentity ();\r
-this.setAA33 (a);\r
-}, "javajs.util.A4");\r
-Clazz.defineMethod (c$, "setA", \r
-function (m) {\r
-this.m00 = m[0];\r
-this.m01 = m[1];\r
-this.m02 = m[2];\r
-this.m03 = m[3];\r
-this.m10 = m[4];\r
-this.m11 = m[5];\r
-this.m12 = m[6];\r
-this.m13 = m[7];\r
-this.m20 = m[8];\r
-this.m21 = m[9];\r
-this.m22 = m[10];\r
-this.m23 = m[11];\r
-this.m30 = m[12];\r
-this.m31 = m[13];\r
-this.m32 = m[14];\r
-this.m33 = m[15];\r
-}, "~A");\r
-Clazz.defineMethod (c$, "setTranslation", \r
-function (trans) {\r
-this.m03 = trans.x;\r
-this.m13 = trans.y;\r
-this.m23 = trans.z;\r
-}, "javajs.util.T3");\r
-Clazz.defineMethod (c$, "setElement", \r
-function (row, col, v) {\r
-if (row < 3 && col < 3) {\r
-this.set33 (row, col, v);\r
-return;\r
-}if (row > 3 || col > 3) this.err ();\r
-switch (row) {\r
-case 0:\r
-this.m03 = v;\r
-return;\r
-case 1:\r
-this.m13 = v;\r
-return;\r
-case 2:\r
-this.m23 = v;\r
-return;\r
-}\r
-switch (col) {\r
-case 0:\r
-this.m30 = v;\r
-return;\r
-case 1:\r
-this.m31 = v;\r
-return;\r
-case 2:\r
-this.m32 = v;\r
-return;\r
-case 3:\r
-this.m33 = v;\r
-return;\r
-}\r
-}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "getElement", \r
-function (row, col) {\r
-if (row < 3 && col < 3) return this.get33 (row, col);\r
-if (row > 3 || col > 3) {\r
-this.err ();\r
-return 0;\r
-}switch (row) {\r
-case 0:\r
-return this.m03;\r
-case 1:\r
-return this.m13;\r
-case 2:\r
-return this.m23;\r
-default:\r
-switch (col) {\r
-case 0:\r
-return this.m30;\r
-case 1:\r
-return this.m31;\r
-case 2:\r
-return this.m32;\r
-default:\r
-return this.m33;\r
-}\r
-}\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getTranslation", \r
-function (trans) {\r
-trans.x = this.m03;\r
-trans.y = this.m13;\r
-trans.z = this.m23;\r
-}, "javajs.util.T3");\r
-Clazz.defineMethod (c$, "getRotationScale", \r
-function (m1) {\r
-m1.m00 = this.m00;\r
-m1.m01 = this.m01;\r
-m1.m02 = this.m02;\r
-m1.m10 = this.m10;\r
-m1.m11 = this.m11;\r
-m1.m12 = this.m12;\r
-m1.m20 = this.m20;\r
-m1.m21 = this.m21;\r
-m1.m22 = this.m22;\r
-}, "javajs.util.M3");\r
-Clazz.defineMethod (c$, "setRotationScale", \r
-function (m1) {\r
-this.m00 = m1.m00;\r
-this.m01 = m1.m01;\r
-this.m02 = m1.m02;\r
-this.m10 = m1.m10;\r
-this.m11 = m1.m11;\r
-this.m12 = m1.m12;\r
-this.m20 = m1.m20;\r
-this.m21 = m1.m21;\r
-this.m22 = m1.m22;\r
-}, "javajs.util.M3");\r
-Clazz.defineMethod (c$, "setRowA", \r
-function (row, v) {\r
-if (row < 3) this.setRow33 (row, v);\r
-switch (row) {\r
-case 0:\r
-this.m03 = v[3];\r
-return;\r
-case 1:\r
-this.m13 = v[3];\r
-return;\r
-case 2:\r
-this.m23 = v[3];\r
-return;\r
-case 3:\r
-this.m30 = v[0];\r
-this.m31 = v[1];\r
-this.m32 = v[2];\r
-this.m33 = v[3];\r
-return;\r
-}\r
-this.err ();\r
-}, "~N,~A");\r
-Clazz.overrideMethod (c$, "getRow", \r
-function (row, v) {\r
-if (row < 3) this.getRow33 (row, v);\r
-switch (row) {\r
-case 0:\r
-v[3] = this.m03;\r
-return;\r
-case 1:\r
-v[3] = this.m13;\r
-return;\r
-case 2:\r
-v[3] = this.m23;\r
-return;\r
-case 3:\r
-v[0] = this.m30;\r
-v[1] = this.m31;\r
-v[2] = this.m32;\r
-v[3] = this.m33;\r
-return;\r
-}\r
-this.err ();\r
-}, "~N,~A");\r
-Clazz.defineMethod (c$, "setColumn4", \r
-function (column, x, y, z, w) {\r
-if (column == 0) {\r
-this.m00 = x;\r
-this.m10 = y;\r
-this.m20 = z;\r
-this.m30 = w;\r
-} else if (column == 1) {\r
-this.m01 = x;\r
-this.m11 = y;\r
-this.m21 = z;\r
-this.m31 = w;\r
-} else if (column == 2) {\r
-this.m02 = x;\r
-this.m12 = y;\r
-this.m22 = z;\r
-this.m32 = w;\r
-} else if (column == 3) {\r
-this.m03 = x;\r
-this.m13 = y;\r
-this.m23 = z;\r
-this.m33 = w;\r
-} else {\r
-this.err ();\r
-}}, "~N,~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "setColumnA", \r
-function (column, v) {\r
-if (column < 3) this.setColumn33 (column, v);\r
-switch (column) {\r
-case 0:\r
-this.m30 = v[3];\r
-return;\r
-case 1:\r
-this.m31 = v[3];\r
-return;\r
-case 2:\r
-this.m32 = v[3];\r
-return;\r
-case 3:\r
-this.m03 = v[0];\r
-this.m13 = v[1];\r
-this.m23 = v[2];\r
-this.m33 = v[3];\r
-return;\r
-default:\r
-this.err ();\r
-}\r
-}, "~N,~A");\r
-Clazz.defineMethod (c$, "getColumn", \r
-function (column, v) {\r
-if (column < 3) this.getColumn33 (column, v);\r
-switch (column) {\r
-case 0:\r
-v[3] = this.m30;\r
-return;\r
-case 1:\r
-v[3] = this.m31;\r
-return;\r
-case 2:\r
-v[3] = this.m32;\r
-return;\r
-case 3:\r
-v[0] = this.m03;\r
-v[1] = this.m13;\r
-v[2] = this.m23;\r
-v[3] = this.m33;\r
-return;\r
-default:\r
-this.err ();\r
-}\r
-}, "~N,~A");\r
-Clazz.defineMethod (c$, "sub", \r
-function (m1) {\r
-this.sub33 (m1);\r
-this.m03 -= m1.m03;\r
-this.m13 -= m1.m13;\r
-this.m23 -= m1.m23;\r
-this.m30 -= m1.m30;\r
-this.m31 -= m1.m31;\r
-this.m32 -= m1.m32;\r
-this.m33 -= m1.m33;\r
-}, "javajs.util.M4");\r
-Clazz.defineMethod (c$, "transpose", \r
-function () {\r
-this.transpose33 ();\r
-var tmp = this.m03;\r
-this.m03 = this.m30;\r
-this.m30 = tmp;\r
-tmp = this.m13;\r
-this.m13 = this.m31;\r
-this.m31 = tmp;\r
-tmp = this.m23;\r
-this.m23 = this.m32;\r
-this.m32 = tmp;\r
-});\r
-Clazz.defineMethod (c$, "invert", \r
-function () {\r
-var s = this.determinant4 ();\r
-if (s == 0.0) return this;\r
-s = 1 / s;\r
-this.set (this.m11 * (this.m22 * this.m33 - this.m23 * this.m32) + this.m12 * (this.m23 * this.m31 - this.m21 * this.m33) + this.m13 * (this.m21 * this.m32 - this.m22 * this.m31), this.m21 * (this.m02 * this.m33 - this.m03 * this.m32) + this.m22 * (this.m03 * this.m31 - this.m01 * this.m33) + this.m23 * (this.m01 * this.m32 - this.m02 * this.m31), this.m31 * (this.m02 * this.m13 - this.m03 * this.m12) + this.m32 * (this.m03 * this.m11 - this.m01 * this.m13) + this.m33 * (this.m01 * this.m12 - this.m02 * this.m11), this.m01 * (this.m13 * this.m22 - this.m12 * this.m23) + this.m02 * (this.m11 * this.m23 - this.m13 * this.m21) + this.m03 * (this.m12 * this.m21 - this.m11 * this.m22), this.m12 * (this.m20 * this.m33 - this.m23 * this.m30) + this.m13 * (this.m22 * this.m30 - this.m20 * this.m32) + this.m10 * (this.m23 * this.m32 - this.m22 * this.m33), this.m22 * (this.m00 * this.m33 - this.m03 * this.m30) + this.m23 * (this.m02 * this.m30 - this.m00 * this.m32) + this.m20 * (this.m03 * this.m32 - this.m02 * this.m33), this.m32 * (this.m00 * this.m13 - this.m03 * this.m10) + this.m33 * (this.m02 * this.m10 - this.m00 * this.m12) + this.m30 * (this.m03 * this.m12 - this.m02 * this.m13), this.m02 * (this.m13 * this.m20 - this.m10 * this.m23) + this.m03 * (this.m10 * this.m22 - this.m12 * this.m20) + this.m00 * (this.m12 * this.m23 - this.m13 * this.m22), this.m13 * (this.m20 * this.m31 - this.m21 * this.m30) + this.m10 * (this.m21 * this.m33 - this.m23 * this.m31) + this.m11 * (this.m23 * this.m30 - this.m20 * this.m33), this.m23 * (this.m00 * this.m31 - this.m01 * this.m30) + this.m20 * (this.m01 * this.m33 - this.m03 * this.m31) + this.m21 * (this.m03 * this.m30 - this.m00 * this.m33), this.m33 * (this.m00 * this.m11 - this.m01 * this.m10) + this.m30 * (this.m01 * this.m13 - this.m03 * this.m11) + this.m31 * (this.m03 * this.m10 - this.m00 * this.m13), this.m03 * (this.m11 * this.m20 - this.m10 * this.m21) + this.m00 * (this.m13 * this.m21 - this.m11 * this.m23) + this.m01 * (this.m10 * this.m23 - this.m13 * this.m20), this.m10 * (this.m22 * this.m31 - this.m21 * this.m32) + this.m11 * (this.m20 * this.m32 - this.m22 * this.m30) + this.m12 * (this.m21 * this.m30 - this.m20 * this.m31), this.m20 * (this.m02 * this.m31 - this.m01 * this.m32) + this.m21 * (this.m00 * this.m32 - this.m02 * this.m30) + this.m22 * (this.m01 * this.m30 - this.m00 * this.m31), this.m30 * (this.m02 * this.m11 - this.m01 * this.m12) + this.m31 * (this.m00 * this.m12 - this.m02 * this.m10) + this.m32 * (this.m01 * this.m10 - this.m00 * this.m11), this.m00 * (this.m11 * this.m22 - this.m12 * this.m21) + this.m01 * (this.m12 * this.m20 - this.m10 * this.m22) + this.m02 * (this.m10 * this.m21 - this.m11 * this.m20));\r
-this.scale (s);\r
-return this;\r
-});\r
-Clazz.defineMethod (c$, "set", \r
-($fz = function (m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\r
-this.m00 = m00;\r
-this.m01 = m01;\r
-this.m02 = m02;\r
-this.m03 = m03;\r
-this.m10 = m10;\r
-this.m11 = m11;\r
-this.m12 = m12;\r
-this.m13 = m13;\r
-this.m20 = m20;\r
-this.m21 = m21;\r
-this.m22 = m22;\r
-this.m23 = m23;\r
-this.m30 = m30;\r
-this.m31 = m31;\r
-this.m32 = m32;\r
-this.m33 = m33;\r
-}, $fz.isPrivate = true, $fz), "~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "determinant4", \r
-function () {\r
-return (this.m00 * this.m11 - this.m01 * this.m10) * (this.m22 * this.m33 - this.m23 * this.m32) - (this.m00 * this.m12 - this.m02 * this.m10) * (this.m21 * this.m33 - this.m23 * this.m31) + (this.m00 * this.m13 - this.m03 * this.m10) * (this.m21 * this.m32 - this.m22 * this.m31) + (this.m01 * this.m12 - this.m02 * this.m11) * (this.m20 * this.m33 - this.m23 * this.m30) - (this.m01 * this.m13 - this.m03 * this.m11) * (this.m20 * this.m32 - this.m22 * this.m30) + (this.m02 * this.m13 - this.m03 * this.m12) * (this.m20 * this.m31 - this.m21 * this.m30);\r
-});\r
-Clazz.defineMethod (c$, "scale", \r
-($fz = function (scalar) {\r
-this.mul33 (scalar);\r
-this.m03 *= scalar;\r
-this.m13 *= scalar;\r
-this.m23 *= scalar;\r
-this.m30 *= scalar;\r
-this.m31 *= scalar;\r
-this.m32 *= scalar;\r
-this.m33 *= scalar;\r
-}, $fz.isPrivate = true, $fz), "~N");\r
-Clazz.defineMethod (c$, "mul", \r
-function (m1) {\r
-this.mul2 (this, m1);\r
-}, "javajs.util.M4");\r
-Clazz.defineMethod (c$, "mul2", \r
-function (m1, m2) {\r
-this.set (m1.m00 * m2.m00 + m1.m01 * m2.m10 + m1.m02 * m2.m20 + m1.m03 * m2.m30, m1.m00 * m2.m01 + m1.m01 * m2.m11 + m1.m02 * m2.m21 + m1.m03 * m2.m31, m1.m00 * m2.m02 + m1.m01 * m2.m12 + m1.m02 * m2.m22 + m1.m03 * m2.m32, m1.m00 * m2.m03 + m1.m01 * m2.m13 + m1.m02 * m2.m23 + m1.m03 * m2.m33, m1.m10 * m2.m00 + m1.m11 * m2.m10 + m1.m12 * m2.m20 + m1.m13 * m2.m30, m1.m10 * m2.m01 + m1.m11 * m2.m11 + m1.m12 * m2.m21 + m1.m13 * m2.m31, m1.m10 * m2.m02 + m1.m11 * m2.m12 + m1.m12 * m2.m22 + m1.m13 * m2.m32, m1.m10 * m2.m03 + m1.m11 * m2.m13 + m1.m12 * m2.m23 + m1.m13 * m2.m33, m1.m20 * m2.m00 + m1.m21 * m2.m10 + m1.m22 * m2.m20 + m1.m23 * m2.m30, m1.m20 * m2.m01 + m1.m21 * m2.m11 + m1.m22 * m2.m21 + m1.m23 * m2.m31, m1.m20 * m2.m02 + m1.m21 * m2.m12 + m1.m22 * m2.m22 + m1.m23 * m2.m32, m1.m20 * m2.m03 + m1.m21 * m2.m13 + m1.m22 * m2.m23 + m1.m23 * m2.m33, m1.m30 * m2.m00 + m1.m31 * m2.m10 + m1.m32 * m2.m20 + m1.m33 * m2.m30, m1.m30 * m2.m01 + m1.m31 * m2.m11 + m1.m32 * m2.m21 + m1.m33 * m2.m31, m1.m30 * m2.m02 + m1.m31 * m2.m12 + m1.m32 * m2.m22 + m1.m33 * m2.m32, m1.m30 * m2.m03 + m1.m31 * m2.m13 + m1.m32 * m2.m23 + m1.m33 * m2.m33);\r
-}, "javajs.util.M4,javajs.util.M4");\r
-Clazz.defineMethod (c$, "transform", \r
-function (vec) {\r
-this.transform2 (vec, vec);\r
-}, "javajs.util.T4");\r
-Clazz.defineMethod (c$, "transform2", \r
-function (vec, vecOut) {\r
-vecOut.set4 (this.m00 * vec.x + this.m01 * vec.y + this.m02 * vec.z + this.m03 * vec.w, this.m10 * vec.x + this.m11 * vec.y + this.m12 * vec.z + this.m13 * vec.w, this.m20 * vec.x + this.m21 * vec.y + this.m22 * vec.z + this.m23 * vec.w, this.m30 * vec.x + this.m31 * vec.y + this.m32 * vec.z + this.m33 * vec.w);\r
-}, "javajs.util.T4,javajs.util.T4");\r
-Clazz.defineMethod (c$, "rotTrans", \r
-function (point) {\r
-this.rotTrans2 (point, point);\r
-}, "javajs.util.T3");\r
-Clazz.defineMethod (c$, "rotTrans2", \r
-function (point, pointOut) {\r
-pointOut.set (this.m00 * point.x + this.m01 * point.y + this.m02 * point.z + this.m03, this.m10 * point.x + this.m11 * point.y + this.m12 * point.z + this.m13, this.m20 * point.x + this.m21 * point.y + this.m22 * point.z + this.m23);\r
-return pointOut;\r
-}, "javajs.util.T3,javajs.util.T3");\r
-Clazz.defineMethod (c$, "setAsXYRotation", \r
-function (angle) {\r
-this.setIdentity ();\r
-var c = Math.cos (angle);\r
-var s = Math.sin (angle);\r
-this.m22 = c;\r
-this.m23 = -s;\r
-this.m32 = s;\r
-this.m33 = c;\r
-return this;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setAsYZRotation", \r
-function (angle) {\r
-this.setIdentity ();\r
-var c = Math.cos (angle);\r
-var s = Math.sin (angle);\r
-this.m00 = c;\r
-this.m03 = -s;\r
-this.m30 = s;\r
-this.m33 = c;\r
-return this;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "setAsXZRotation", \r
-function (angle) {\r
-this.setIdentity ();\r
-var c = Math.cos (angle);\r
-var s = Math.sin (angle);\r
-this.m11 = c;\r
-this.m13 = -s;\r
-this.m31 = s;\r
-this.m33 = c;\r
-return this;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "equals", \r
-function (o) {\r
-if (!(Clazz.instanceOf (o, javajs.util.M4))) return false;\r
-var m = o;\r
-return (this.m00 == m.m00 && this.m01 == m.m01 && this.m02 == m.m02 && this.m03 == m.m03 && this.m10 == m.m10 && this.m11 == m.m11 && this.m12 == m.m12 && this.m13 == m.m13 && this.m20 == m.m20 && this.m21 == m.m21 && this.m22 == m.m22 && this.m23 == m.m23 && this.m30 == m.m30 && this.m31 == m.m31 && this.m32 == m.m32 && this.m33 == m.m33);\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "hashCode", \r
-function () {\r
-return javajs.util.T3.floatToIntBits0 (this.m00) ^ javajs.util.T3.floatToIntBits0 (this.m01) ^ javajs.util.T3.floatToIntBits0 (this.m02) ^ javajs.util.T3.floatToIntBits0 (this.m03) ^ javajs.util.T3.floatToIntBits0 (this.m10) ^ javajs.util.T3.floatToIntBits0 (this.m11) ^ javajs.util.T3.floatToIntBits0 (this.m12) ^ javajs.util.T3.floatToIntBits0 (this.m13) ^ javajs.util.T3.floatToIntBits0 (this.m20) ^ javajs.util.T3.floatToIntBits0 (this.m21) ^ javajs.util.T3.floatToIntBits0 (this.m22) ^ javajs.util.T3.floatToIntBits0 (this.m23) ^ javajs.util.T3.floatToIntBits0 (this.m30) ^ javajs.util.T3.floatToIntBits0 (this.m31) ^ javajs.util.T3.floatToIntBits0 (this.m32) ^ javajs.util.T3.floatToIntBits0 (this.m33);\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "[\n  [" + this.m00 + "\t" + this.m01 + "\t" + this.m02 + "\t" + this.m03 + "]" + "\n  [" + this.m10 + "\t" + this.m11 + "\t" + this.m12 + "\t" + this.m13 + "]" + "\n  [" + this.m20 + "\t" + this.m21 + "\t" + this.m22 + "\t" + this.m23 + "]" + "\n  [" + this.m30 + "\t" + this.m31 + "\t" + this.m32 + "\t" + this.m33 + "] ]";\r
-});\r
-Clazz.defineMethod (c$, "round", \r
-function (f) {\r
-this.m00 = this.rnd (this.m00, f);\r
-this.m01 = this.rnd (this.m01, f);\r
-this.m02 = this.rnd (this.m02, f);\r
-this.m03 = this.rnd (this.m03, f);\r
-this.m10 = this.rnd (this.m10, f);\r
-this.m11 = this.rnd (this.m11, f);\r
-this.m12 = this.rnd (this.m12, f);\r
-this.m13 = this.rnd (this.m13, f);\r
-this.m20 = this.rnd (this.m20, f);\r
-this.m21 = this.rnd (this.m21, f);\r
-this.m22 = this.rnd (this.m22, f);\r
-this.m23 = this.rnd (this.m23, f);\r
-this.m30 = this.rnd (this.m30, f);\r
-this.m31 = this.rnd (this.m31, f);\r
-this.m32 = this.rnd (this.m32, f);\r
-this.m33 = this.rnd (this.m33, f);\r
-return this;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "rnd", \r
-($fz = function (n, f) {\r
-return (Math.abs (n) < f ? 0 : n);\r
-}, $fz.isPrivate = true, $fz), "~N,~N");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.util.M34"], "javajs.util.M4", ["javajs.util.T3"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.m03 = 0;
+this.m13 = 0;
+this.m23 = 0;
+this.m30 = 0;
+this.m31 = 0;
+this.m32 = 0;
+this.m33 = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "M4", javajs.util.M34);
+c$.newA16 = Clazz.defineMethod (c$, "newA16", 
+function (v) {
+var m =  new javajs.util.M4 ();
+m.m00 = v[0];
+m.m01 = v[1];
+m.m02 = v[2];
+m.m03 = v[3];
+m.m10 = v[4];
+m.m11 = v[5];
+m.m12 = v[6];
+m.m13 = v[7];
+m.m20 = v[8];
+m.m21 = v[9];
+m.m22 = v[10];
+m.m23 = v[11];
+m.m30 = v[12];
+m.m31 = v[13];
+m.m32 = v[14];
+m.m33 = v[15];
+return m;
+}, "~A");
+c$.newM4 = Clazz.defineMethod (c$, "newM4", 
+function (m1) {
+var m =  new javajs.util.M4 ();
+if (m1 == null) {
+m.setIdentity ();
+return m;
+}m.setToM3 (m1);
+m.m03 = m1.m03;
+m.m13 = m1.m13;
+m.m23 = m1.m23;
+m.m30 = m1.m30;
+m.m31 = m1.m31;
+m.m32 = m1.m32;
+m.m33 = m1.m33;
+return m;
+}, "javajs.util.M4");
+c$.newMV = Clazz.defineMethod (c$, "newMV", 
+function (m1, t) {
+var m =  new javajs.util.M4 ();
+m.setMV (m1, t);
+return m;
+}, "javajs.util.M3,javajs.util.T3");
+Clazz.defineMethod (c$, "setZero", 
+function () {
+this.clear33 ();
+this.m03 = this.m13 = this.m23 = this.m30 = this.m31 = this.m32 = this.m33 = 0.0;
+});
+Clazz.defineMethod (c$, "setIdentity", 
+function () {
+this.setZero ();
+this.m00 = this.m11 = this.m22 = this.m33 = 1.0;
+});
+Clazz.defineMethod (c$, "setM4", 
+function (m1) {
+this.setM33 (m1);
+this.m03 = m1.m03;
+this.m13 = m1.m13;
+this.m23 = m1.m23;
+this.m30 = m1.m30;
+this.m31 = m1.m31;
+this.m32 = m1.m32;
+this.m33 = m1.m33;
+return this;
+}, "javajs.util.M4");
+Clazz.defineMethod (c$, "setMV", 
+function (m1, t) {
+this.setM33 (m1);
+this.setTranslation (t);
+this.m33 = 1;
+}, "javajs.util.M3,javajs.util.T3");
+Clazz.defineMethod (c$, "setToM3", 
+function (m1) {
+this.setM33 (m1);
+this.m03 = this.m13 = this.m23 = this.m30 = this.m31 = this.m32 = 0.0;
+this.m33 = 1.0;
+}, "javajs.util.M34");
+Clazz.defineMethod (c$, "setToAA", 
+function (a) {
+this.setIdentity ();
+this.setAA33 (a);
+}, "javajs.util.A4");
+Clazz.defineMethod (c$, "setA", 
+function (m) {
+this.m00 = m[0];
+this.m01 = m[1];
+this.m02 = m[2];
+this.m03 = m[3];
+this.m10 = m[4];
+this.m11 = m[5];
+this.m12 = m[6];
+this.m13 = m[7];
+this.m20 = m[8];
+this.m21 = m[9];
+this.m22 = m[10];
+this.m23 = m[11];
+this.m30 = m[12];
+this.m31 = m[13];
+this.m32 = m[14];
+this.m33 = m[15];
+}, "~A");
+Clazz.defineMethod (c$, "setTranslation", 
+function (trans) {
+this.m03 = trans.x;
+this.m13 = trans.y;
+this.m23 = trans.z;
+}, "javajs.util.T3");
+Clazz.defineMethod (c$, "setElement", 
+function (row, col, v) {
+if (row < 3 && col < 3) {
+this.set33 (row, col, v);
+return;
+}if (row > 3 || col > 3) this.err ();
+switch (row) {
+case 0:
+this.m03 = v;
+return;
+case 1:
+this.m13 = v;
+return;
+case 2:
+this.m23 = v;
+return;
+}
+switch (col) {
+case 0:
+this.m30 = v;
+return;
+case 1:
+this.m31 = v;
+return;
+case 2:
+this.m32 = v;
+return;
+case 3:
+this.m33 = v;
+return;
+}
+}, "~N,~N,~N");
+Clazz.defineMethod (c$, "getElement", 
+function (row, col) {
+if (row < 3 && col < 3) return this.get33 (row, col);
+if (row > 3 || col > 3) {
+this.err ();
+return 0;
+}switch (row) {
+case 0:
+return this.m03;
+case 1:
+return this.m13;
+case 2:
+return this.m23;
+default:
+switch (col) {
+case 0:
+return this.m30;
+case 1:
+return this.m31;
+case 2:
+return this.m32;
+default:
+return this.m33;
+}
+}
+}, "~N,~N");
+Clazz.defineMethod (c$, "getTranslation", 
+function (trans) {
+trans.x = this.m03;
+trans.y = this.m13;
+trans.z = this.m23;
+}, "javajs.util.T3");
+Clazz.defineMethod (c$, "getRotationScale", 
+function (m1) {
+m1.m00 = this.m00;
+m1.m01 = this.m01;
+m1.m02 = this.m02;
+m1.m10 = this.m10;
+m1.m11 = this.m11;
+m1.m12 = this.m12;
+m1.m20 = this.m20;
+m1.m21 = this.m21;
+m1.m22 = this.m22;
+}, "javajs.util.M3");
+Clazz.defineMethod (c$, "setRotationScale", 
+function (m1) {
+this.m00 = m1.m00;
+this.m01 = m1.m01;
+this.m02 = m1.m02;
+this.m10 = m1.m10;
+this.m11 = m1.m11;
+this.m12 = m1.m12;
+this.m20 = m1.m20;
+this.m21 = m1.m21;
+this.m22 = m1.m22;
+}, "javajs.util.M3");
+Clazz.defineMethod (c$, "setRowA", 
+function (row, v) {
+if (row < 3) this.setRow33 (row, v);
+switch (row) {
+case 0:
+this.m03 = v[3];
+return;
+case 1:
+this.m13 = v[3];
+return;
+case 2:
+this.m23 = v[3];
+return;
+case 3:
+this.m30 = v[0];
+this.m31 = v[1];
+this.m32 = v[2];
+this.m33 = v[3];
+return;
+}
+this.err ();
+}, "~N,~A");
+Clazz.overrideMethod (c$, "getRow", 
+function (row, v) {
+if (row < 3) this.getRow33 (row, v);
+switch (row) {
+case 0:
+v[3] = this.m03;
+return;
+case 1:
+v[3] = this.m13;
+return;
+case 2:
+v[3] = this.m23;
+return;
+case 3:
+v[0] = this.m30;
+v[1] = this.m31;
+v[2] = this.m32;
+v[3] = this.m33;
+return;
+}
+this.err ();
+}, "~N,~A");
+Clazz.defineMethod (c$, "setColumn4", 
+function (column, x, y, z, w) {
+if (column == 0) {
+this.m00 = x;
+this.m10 = y;
+this.m20 = z;
+this.m30 = w;
+} else if (column == 1) {
+this.m01 = x;
+this.m11 = y;
+this.m21 = z;
+this.m31 = w;
+} else if (column == 2) {
+this.m02 = x;
+this.m12 = y;
+this.m22 = z;
+this.m32 = w;
+} else if (column == 3) {
+this.m03 = x;
+this.m13 = y;
+this.m23 = z;
+this.m33 = w;
+} else {
+this.err ();
+}}, "~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "setColumnA", 
+function (column, v) {
+if (column < 3) this.setColumn33 (column, v);
+switch (column) {
+case 0:
+this.m30 = v[3];
+return;
+case 1:
+this.m31 = v[3];
+return;
+case 2:
+this.m32 = v[3];
+return;
+case 3:
+this.m03 = v[0];
+this.m13 = v[1];
+this.m23 = v[2];
+this.m33 = v[3];
+return;
+default:
+this.err ();
+}
+}, "~N,~A");
+Clazz.defineMethod (c$, "getColumn", 
+function (column, v) {
+if (column < 3) this.getColumn33 (column, v);
+switch (column) {
+case 0:
+v[3] = this.m30;
+return;
+case 1:
+v[3] = this.m31;
+return;
+case 2:
+v[3] = this.m32;
+return;
+case 3:
+v[0] = this.m03;
+v[1] = this.m13;
+v[2] = this.m23;
+v[3] = this.m33;
+return;
+default:
+this.err ();
+}
+}, "~N,~A");
+Clazz.defineMethod (c$, "sub", 
+function (m1) {
+this.sub33 (m1);
+this.m03 -= m1.m03;
+this.m13 -= m1.m13;
+this.m23 -= m1.m23;
+this.m30 -= m1.m30;
+this.m31 -= m1.m31;
+this.m32 -= m1.m32;
+this.m33 -= m1.m33;
+}, "javajs.util.M4");
+Clazz.defineMethod (c$, "transpose", 
+function () {
+this.transpose33 ();
+var tmp = this.m03;
+this.m03 = this.m30;
+this.m30 = tmp;
+tmp = this.m13;
+this.m13 = this.m31;
+this.m31 = tmp;
+tmp = this.m23;
+this.m23 = this.m32;
+this.m32 = tmp;
+});
+Clazz.defineMethod (c$, "invert", 
+function () {
+var s = this.determinant4 ();
+if (s == 0.0) return this;
+s = 1 / s;
+this.set (this.m11 * (this.m22 * this.m33 - this.m23 * this.m32) + this.m12 * (this.m23 * this.m31 - this.m21 * this.m33) + this.m13 * (this.m21 * this.m32 - this.m22 * this.m31), this.m21 * (this.m02 * this.m33 - this.m03 * this.m32) + this.m22 * (this.m03 * this.m31 - this.m01 * this.m33) + this.m23 * (this.m01 * this.m32 - this.m02 * this.m31), this.m31 * (this.m02 * this.m13 - this.m03 * this.m12) + this.m32 * (this.m03 * this.m11 - this.m01 * this.m13) + this.m33 * (this.m01 * this.m12 - this.m02 * this.m11), this.m01 * (this.m13 * this.m22 - this.m12 * this.m23) + this.m02 * (this.m11 * this.m23 - this.m13 * this.m21) + this.m03 * (this.m12 * this.m21 - this.m11 * this.m22), this.m12 * (this.m20 * this.m33 - this.m23 * this.m30) + this.m13 * (this.m22 * this.m30 - this.m20 * this.m32) + this.m10 * (this.m23 * this.m32 - this.m22 * this.m33), this.m22 * (this.m00 * this.m33 - this.m03 * this.m30) + this.m23 * (this.m02 * this.m30 - this.m00 * this.m32) + this.m20 * (this.m03 * this.m32 - this.m02 * this.m33), this.m32 * (this.m00 * this.m13 - this.m03 * this.m10) + this.m33 * (this.m02 * this.m10 - this.m00 * this.m12) + this.m30 * (this.m03 * this.m12 - this.m02 * this.m13), this.m02 * (this.m13 * this.m20 - this.m10 * this.m23) + this.m03 * (this.m10 * this.m22 - this.m12 * this.m20) + this.m00 * (this.m12 * this.m23 - this.m13 * this.m22), this.m13 * (this.m20 * this.m31 - this.m21 * this.m30) + this.m10 * (this.m21 * this.m33 - this.m23 * this.m31) + this.m11 * (this.m23 * this.m30 - this.m20 * this.m33), this.m23 * (this.m00 * this.m31 - this.m01 * this.m30) + this.m20 * (this.m01 * this.m33 - this.m03 * this.m31) + this.m21 * (this.m03 * this.m30 - this.m00 * this.m33), this.m33 * (this.m00 * this.m11 - this.m01 * this.m10) + this.m30 * (this.m01 * this.m13 - this.m03 * this.m11) + this.m31 * (this.m03 * this.m10 - this.m00 * this.m13), this.m03 * (this.m11 * this.m20 - this.m10 * this.m21) + this.m00 * (this.m13 * this.m21 - this.m11 * this.m23) + this.m01 * (this.m10 * this.m23 - this.m13 * this.m20), this.m10 * (this.m22 * this.m31 - this.m21 * this.m32) + this.m11 * (this.m20 * this.m32 - this.m22 * this.m30) + this.m12 * (this.m21 * this.m30 - this.m20 * this.m31), this.m20 * (this.m02 * this.m31 - this.m01 * this.m32) + this.m21 * (this.m00 * this.m32 - this.m02 * this.m30) + this.m22 * (this.m01 * this.m30 - this.m00 * this.m31), this.m30 * (this.m02 * this.m11 - this.m01 * this.m12) + this.m31 * (this.m00 * this.m12 - this.m02 * this.m10) + this.m32 * (this.m01 * this.m10 - this.m00 * this.m11), this.m00 * (this.m11 * this.m22 - this.m12 * this.m21) + this.m01 * (this.m12 * this.m20 - this.m10 * this.m22) + this.m02 * (this.m10 * this.m21 - this.m11 * this.m20));
+this.scale (s);
+return this;
+});
+Clazz.defineMethod (c$, "set", 
+($fz = function (m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {
+this.m00 = m00;
+this.m01 = m01;
+this.m02 = m02;
+this.m03 = m03;
+this.m10 = m10;
+this.m11 = m11;
+this.m12 = m12;
+this.m13 = m13;
+this.m20 = m20;
+this.m21 = m21;
+this.m22 = m22;
+this.m23 = m23;
+this.m30 = m30;
+this.m31 = m31;
+this.m32 = m32;
+this.m33 = m33;
+}, $fz.isPrivate = true, $fz), "~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N,~N");
+Clazz.defineMethod (c$, "determinant4", 
+function () {
+return (this.m00 * this.m11 - this.m01 * this.m10) * (this.m22 * this.m33 - this.m23 * this.m32) - (this.m00 * this.m12 - this.m02 * this.m10) * (this.m21 * this.m33 - this.m23 * this.m31) + (this.m00 * this.m13 - this.m03 * this.m10) * (this.m21 * this.m32 - this.m22 * this.m31) + (this.m01 * this.m12 - this.m02 * this.m11) * (this.m20 * this.m33 - this.m23 * this.m30) - (this.m01 * this.m13 - this.m03 * this.m11) * (this.m20 * this.m32 - this.m22 * this.m30) + (this.m02 * this.m13 - this.m03 * this.m12) * (this.m20 * this.m31 - this.m21 * this.m30);
+});
+Clazz.defineMethod (c$, "scale", 
+($fz = function (scalar) {
+this.mul33 (scalar);
+this.m03 *= scalar;
+this.m13 *= scalar;
+this.m23 *= scalar;
+this.m30 *= scalar;
+this.m31 *= scalar;
+this.m32 *= scalar;
+this.m33 *= scalar;
+}, $fz.isPrivate = true, $fz), "~N");
+Clazz.defineMethod (c$, "mul", 
+function (m1) {
+this.mul2 (this, m1);
+}, "javajs.util.M4");
+Clazz.defineMethod (c$, "mul2", 
+function (m1, m2) {
+this.set (m1.m00 * m2.m00 + m1.m01 * m2.m10 + m1.m02 * m2.m20 + m1.m03 * m2.m30, m1.m00 * m2.m01 + m1.m01 * m2.m11 + m1.m02 * m2.m21 + m1.m03 * m2.m31, m1.m00 * m2.m02 + m1.m01 * m2.m12 + m1.m02 * m2.m22 + m1.m03 * m2.m32, m1.m00 * m2.m03 + m1.m01 * m2.m13 + m1.m02 * m2.m23 + m1.m03 * m2.m33, m1.m10 * m2.m00 + m1.m11 * m2.m10 + m1.m12 * m2.m20 + m1.m13 * m2.m30, m1.m10 * m2.m01 + m1.m11 * m2.m11 + m1.m12 * m2.m21 + m1.m13 * m2.m31, m1.m10 * m2.m02 + m1.m11 * m2.m12 + m1.m12 * m2.m22 + m1.m13 * m2.m32, m1.m10 * m2.m03 + m1.m11 * m2.m13 + m1.m12 * m2.m23 + m1.m13 * m2.m33, m1.m20 * m2.m00 + m1.m21 * m2.m10 + m1.m22 * m2.m20 + m1.m23 * m2.m30, m1.m20 * m2.m01 + m1.m21 * m2.m11 + m1.m22 * m2.m21 + m1.m23 * m2.m31, m1.m20 * m2.m02 + m1.m21 * m2.m12 + m1.m22 * m2.m22 + m1.m23 * m2.m32, m1.m20 * m2.m03 + m1.m21 * m2.m13 + m1.m22 * m2.m23 + m1.m23 * m2.m33, m1.m30 * m2.m00 + m1.m31 * m2.m10 + m1.m32 * m2.m20 + m1.m33 * m2.m30, m1.m30 * m2.m01 + m1.m31 * m2.m11 + m1.m32 * m2.m21 + m1.m33 * m2.m31, m1.m30 * m2.m02 + m1.m31 * m2.m12 + m1.m32 * m2.m22 + m1.m33 * m2.m32, m1.m30 * m2.m03 + m1.m31 * m2.m13 + m1.m32 * m2.m23 + m1.m33 * m2.m33);
+}, "javajs.util.M4,javajs.util.M4");
+Clazz.defineMethod (c$, "transform", 
+function (vec) {
+this.transform2 (vec, vec);
+}, "javajs.util.T4");
+Clazz.defineMethod (c$, "transform2", 
+function (vec, vecOut) {
+vecOut.set4 (this.m00 * vec.x + this.m01 * vec.y + this.m02 * vec.z + this.m03 * vec.w, this.m10 * vec.x + this.m11 * vec.y + this.m12 * vec.z + this.m13 * vec.w, this.m20 * vec.x + this.m21 * vec.y + this.m22 * vec.z + this.m23 * vec.w, this.m30 * vec.x + this.m31 * vec.y + this.m32 * vec.z + this.m33 * vec.w);
+}, "javajs.util.T4,javajs.util.T4");
+Clazz.defineMethod (c$, "rotTrans", 
+function (point) {
+this.rotTrans2 (point, point);
+}, "javajs.util.T3");
+Clazz.defineMethod (c$, "rotTrans2", 
+function (point, pointOut) {
+pointOut.set (this.m00 * point.x + this.m01 * point.y + this.m02 * point.z + this.m03, this.m10 * point.x + this.m11 * point.y + this.m12 * point.z + this.m13, this.m20 * point.x + this.m21 * point.y + this.m22 * point.z + this.m23);
+return pointOut;
+}, "javajs.util.T3,javajs.util.T3");
+Clazz.defineMethod (c$, "setAsXYRotation", 
+function (angle) {
+this.setIdentity ();
+var c = Math.cos (angle);
+var s = Math.sin (angle);
+this.m22 = c;
+this.m23 = -s;
+this.m32 = s;
+this.m33 = c;
+return this;
+}, "~N");
+Clazz.defineMethod (c$, "setAsYZRotation", 
+function (angle) {
+this.setIdentity ();
+var c = Math.cos (angle);
+var s = Math.sin (angle);
+this.m00 = c;
+this.m03 = -s;
+this.m30 = s;
+this.m33 = c;
+return this;
+}, "~N");
+Clazz.defineMethod (c$, "setAsXZRotation", 
+function (angle) {
+this.setIdentity ();
+var c = Math.cos (angle);
+var s = Math.sin (angle);
+this.m11 = c;
+this.m13 = -s;
+this.m31 = s;
+this.m33 = c;
+return this;
+}, "~N");
+Clazz.overrideMethod (c$, "equals", 
+function (o) {
+if (!(Clazz.instanceOf (o, javajs.util.M4))) return false;
+var m = o;
+return (this.m00 == m.m00 && this.m01 == m.m01 && this.m02 == m.m02 && this.m03 == m.m03 && this.m10 == m.m10 && this.m11 == m.m11 && this.m12 == m.m12 && this.m13 == m.m13 && this.m20 == m.m20 && this.m21 == m.m21 && this.m22 == m.m22 && this.m23 == m.m23 && this.m30 == m.m30 && this.m31 == m.m31 && this.m32 == m.m32 && this.m33 == m.m33);
+}, "~O");
+Clazz.overrideMethod (c$, "hashCode", 
+function () {
+return javajs.util.T3.floatToIntBits0 (this.m00) ^ javajs.util.T3.floatToIntBits0 (this.m01) ^ javajs.util.T3.floatToIntBits0 (this.m02) ^ javajs.util.T3.floatToIntBits0 (this.m03) ^ javajs.util.T3.floatToIntBits0 (this.m10) ^ javajs.util.T3.floatToIntBits0 (this.m11) ^ javajs.util.T3.floatToIntBits0 (this.m12) ^ javajs.util.T3.floatToIntBits0 (this.m13) ^ javajs.util.T3.floatToIntBits0 (this.m20) ^ javajs.util.T3.floatToIntBits0 (this.m21) ^ javajs.util.T3.floatToIntBits0 (this.m22) ^ javajs.util.T3.floatToIntBits0 (this.m23) ^ javajs.util.T3.floatToIntBits0 (this.m30) ^ javajs.util.T3.floatToIntBits0 (this.m31) ^ javajs.util.T3.floatToIntBits0 (this.m32) ^ javajs.util.T3.floatToIntBits0 (this.m33);
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "[\n  [" + this.m00 + "\t" + this.m01 + "\t" + this.m02 + "\t" + this.m03 + "]" + "\n  [" + this.m10 + "\t" + this.m11 + "\t" + this.m12 + "\t" + this.m13 + "]" + "\n  [" + this.m20 + "\t" + this.m21 + "\t" + this.m22 + "\t" + this.m23 + "]" + "\n  [" + this.m30 + "\t" + this.m31 + "\t" + this.m32 + "\t" + this.m33 + "] ]";
+});
+Clazz.defineMethod (c$, "round", 
+function (f) {
+this.m00 = this.rnd (this.m00, f);
+this.m01 = this.rnd (this.m01, f);
+this.m02 = this.rnd (this.m02, f);
+this.m03 = this.rnd (this.m03, f);
+this.m10 = this.rnd (this.m10, f);
+this.m11 = this.rnd (this.m11, f);
+this.m12 = this.rnd (this.m12, f);
+this.m13 = this.rnd (this.m13, f);
+this.m20 = this.rnd (this.m20, f);
+this.m21 = this.rnd (this.m21, f);
+this.m22 = this.rnd (this.m22, f);
+this.m23 = this.rnd (this.m23, f);
+this.m30 = this.rnd (this.m30, f);
+this.m31 = this.rnd (this.m31, f);
+this.m32 = this.rnd (this.m32, f);
+this.m33 = this.rnd (this.m33, f);
+return this;
+}, "~N");
+Clazz.defineMethod (c$, "rnd", 
+($fz = function (n, f) {
+return (Math.abs (n) < f ? 0 : n);
+}, $fz.isPrivate = true, $fz), "~N,~N");
+});
index 50972a4..cadc683 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.a = null;\r
-this.m = 0;\r
-this.n = 0;\r
-if (!Clazz.isClassDefined ("javajs.util.Matrix.LUDecomp")) {\r
-javajs.util.Matrix.$Matrix$LUDecomp$ ();\r
-}\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "Matrix", null, Cloneable);\r
-Clazz.makeConstructor (c$, \r
-function (a, m, n) {\r
-this.a = (a == null ?  Clazz.newDoubleArray (m, n, 0) : a);\r
-this.m = m;\r
-this.n = n;\r
-}, "~A,~N,~N");\r
-Clazz.defineMethod (c$, "getRowDimension", \r
-function () {\r
-return this.m;\r
-});\r
-Clazz.defineMethod (c$, "getColumnDimension", \r
-function () {\r
-return this.n;\r
-});\r
-Clazz.defineMethod (c$, "getArray", \r
-function () {\r
-return this.a;\r
-});\r
-Clazz.defineMethod (c$, "getArrayCopy", \r
-function () {\r
-var x =  Clazz.newDoubleArray (this.m, this.n, 0);\r
-for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) x[i][j] = this.a[i][j];\r
-\r
-\r
-return x;\r
-});\r
-Clazz.defineMethod (c$, "copy", \r
-function () {\r
-var x =  new javajs.util.Matrix (null, this.m, this.n);\r
-var c = x.a;\r
-for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) c[i][j] = this.a[i][j];\r
-\r
-\r
-return x;\r
-});\r
-Clazz.overrideMethod (c$, "clone", \r
-function () {\r
-return this.copy ();\r
-});\r
-Clazz.defineMethod (c$, "getSubmatrix", \r
-function (i0, j0, nrows, ncols) {\r
-var x =  new javajs.util.Matrix (null, nrows, ncols);\r
-var xa = x.a;\r
-for (var i = nrows; --i >= 0; ) for (var j = ncols; --j >= 0; ) xa[i][j] = this.a[i0 + i][j0 + j];\r
-\r
-\r
-return x;\r
-}, "~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "getMatrixSelected", \r
-function (r, n) {\r
-var x =  new javajs.util.Matrix (null, r.length, n);\r
-var xa = x.a;\r
-for (var i = r.length; --i >= 0; ) {\r
-var b = this.a[r[i]];\r
-for (var j = n; --j >= 0; ) xa[i][j] = b[j];\r
-\r
-}\r
-return x;\r
-}, "~A,~N");\r
-Clazz.defineMethod (c$, "transpose", \r
-function () {\r
-var x =  new javajs.util.Matrix (null, this.n, this.m);\r
-var c = x.a;\r
-for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) c[j][i] = this.a[i][j];\r
-\r
-\r
-return x;\r
-});\r
-Clazz.defineMethod (c$, "add", \r
-function (b) {\r
-return this.scaleAdd (b, 1);\r
-}, "javajs.util.Matrix");\r
-Clazz.defineMethod (c$, "sub", \r
-function (b) {\r
-return this.scaleAdd (b, -1);\r
-}, "javajs.util.Matrix");\r
-Clazz.defineMethod (c$, "scaleAdd", \r
-function (b, scale) {\r
-var x =  new javajs.util.Matrix (null, this.m, this.n);\r
-var xa = x.a;\r
-var ba = b.a;\r
-for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) xa[i][j] = ba[i][j] * scale + this.a[i][j];\r
-\r
-\r
-return x;\r
-}, "javajs.util.Matrix,~N");\r
-Clazz.defineMethod (c$, "mul", \r
-function (b) {\r
-if (b.m != this.n) return null;\r
-var x =  new javajs.util.Matrix (null, this.m, b.n);\r
-var xa = x.a;\r
-var ba = b.a;\r
-for (var j = b.n; --j >= 0; ) for (var i = this.m; --i >= 0; ) {\r
-var arowi = this.a[i];\r
-var s = 0;\r
-for (var k = this.n; --k >= 0; ) s += arowi[k] * ba[k][j];\r
-\r
-xa[i][j] = s;\r
-}\r
-\r
-return x;\r
-}, "javajs.util.Matrix");\r
-Clazz.defineMethod (c$, "inverse", \r
-function () {\r
-return Clazz.innerTypeInstance (javajs.util.Matrix.LUDecomp, this, null, this.m, this.n).solve (javajs.util.Matrix.identity (this.m, this.m), this.n);\r
-});\r
-Clazz.defineMethod (c$, "trace", \r
-function () {\r
-var t = 0;\r
-for (var i = Math.min (this.m, this.n); --i >= 0; ) t += this.a[i][i];\r
-\r
-return t;\r
-});\r
-c$.identity = Clazz.defineMethod (c$, "identity", \r
-function (m, n) {\r
-var x =  new javajs.util.Matrix (null, m, n);\r
-var xa = x.a;\r
-for (var i = Math.min (m, n); --i >= 0; ) xa[i][i] = 1;\r
-\r
-return x;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getRotation", \r
-function () {\r
-return this.getSubmatrix (0, 0, this.m - 1, this.n - 1);\r
-});\r
-Clazz.defineMethod (c$, "getTranslation", \r
-function () {\r
-return this.getSubmatrix (0, this.n - 1, this.m - 1, 1);\r
-});\r
-c$.newT = Clazz.defineMethod (c$, "newT", \r
-function (r, asColumn) {\r
-return (asColumn ?  new javajs.util.Matrix ( Clazz.newArray (-1, [ Clazz.newDoubleArray (-1, [r.x]),  Clazz.newDoubleArray (-1, [r.y]),  Clazz.newDoubleArray (-1, [r.z])]), 3, 1) :  new javajs.util.Matrix ( Clazz.newArray (-1, [ Clazz.newDoubleArray (-1, [r.x, r.y, r.z])]), 1, 3));\r
-}, "javajs.util.T3,~B");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-var s = "[\n";\r
-for (var i = 0; i < this.m; i++) {\r
-s += "  [";\r
-for (var j = 0; j < this.n; j++) s += " " + this.a[i][j];\r
-\r
-s += "]\n";\r
-}\r
-s += "]";\r
-return s;\r
-});\r
-c$.$Matrix$LUDecomp$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.decorateAsClass (function () {\r
-Clazz.prepareCallback (this, arguments);\r
-this.LU = null;\r
-this.piv = null;\r
-this.pivsign = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util.Matrix, "LUDecomp");\r
-Clazz.makeConstructor (c$, \r
-function (a, b) {\r
-this.LU = this.b$["javajs.util.Matrix"].getArrayCopy ();\r
-this.piv =  Clazz.newIntArray (a, 0);\r
-for (var c = a; --c >= 0; ) this.piv[c] = c;\r
-\r
-this.pivsign = 1;\r
-var d;\r
-var e =  Clazz.newDoubleArray (a, 0);\r
-for (var f = 0; f < b; f++) {\r
-for (var g = a; --g >= 0; ) e[g] = this.LU[g][f];\r
-\r
-for (var h = a; --h >= 0; ) {\r
-d = this.LU[h];\r
-var i = Math.min (h, f);\r
-var j = 0.0;\r
-for (var k = i; --k >= 0; ) j += d[k] * e[k];\r
-\r
-d[f] = e[h] -= j;\r
-}\r
-var i = f;\r
-for (var j = a; --j > f; ) if (Math.abs (e[j]) > Math.abs (e[i])) i = j;\r
-\r
-if (i != f) {\r
-for (var k = b; --k >= 0; ) {\r
-var l = this.LU[i][k];\r
-this.LU[i][k] = this.LU[f][k];\r
-this.LU[f][k] = l;\r
-}\r
-var l = this.piv[i];\r
-this.piv[i] = this.piv[f];\r
-this.piv[f] = l;\r
-this.pivsign = -this.pivsign;\r
-}if ( new Boolean (f < a & this.LU[f][f] != 0.0).valueOf ()) for (var k = a; --k > f; ) this.LU[k][f] /= this.LU[f][f];\r
-\r
-}\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "solve", \r
-function (a, b) {\r
-for (var c = 0; c < b; c++) if (this.LU[c][c] == 0) return null;\r
-\r
-var d = a.n;\r
-var e = a.getMatrixSelected (this.piv, d);\r
-var f = e.a;\r
-for (var g = 0; g < b; g++) for (var h = g + 1; h < b; h++) for (var i = 0; i < d; i++) f[h][i] -= f[g][i] * this.LU[h][g];\r
-\r
-\r
-\r
-for (var j = b; --j >= 0; ) {\r
-for (var k = d; --k >= 0; ) f[j][k] /= this.LU[j][j];\r
-\r
-for (var l = j; --l >= 0; ) for (var m = d; --m >= 0; ) f[l][m] -= f[j][m] * this.LU[l][j];\r
-\r
-\r
-}\r
-return e;\r
-}, "javajs.util.Matrix,~N");\r
-c$ = Clazz.p0p ();\r
-};\r
+Clazz.declarePackage ("javajs.util");
+c$ = Clazz.decorateAsClass (function () {
+this.a = null;
+this.m = 0;
+this.n = 0;
+if (!Clazz.isClassDefined ("javajs.util.Matrix.LUDecomp")) {
+javajs.util.Matrix.$Matrix$LUDecomp$ ();
+}
+Clazz.instantialize (this, arguments);
+}, javajs.util, "Matrix", null, Cloneable);
+Clazz.makeConstructor (c$, 
+function (a, m, n) {
+this.a = (a == null ?  Clazz.newDoubleArray (m, n, 0) : a);
+this.m = m;
+this.n = n;
+}, "~A,~N,~N");
+Clazz.defineMethod (c$, "getRowDimension", 
+function () {
+return this.m;
+});
+Clazz.defineMethod (c$, "getColumnDimension", 
+function () {
+return this.n;
+});
+Clazz.defineMethod (c$, "getArray", 
+function () {
+return this.a;
+});
+Clazz.defineMethod (c$, "getArrayCopy", 
+function () {
+var x =  Clazz.newDoubleArray (this.m, this.n, 0);
+for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) x[i][j] = this.a[i][j];
+
+
+return x;
+});
+Clazz.defineMethod (c$, "copy", 
+function () {
+var x =  new javajs.util.Matrix (null, this.m, this.n);
+var c = x.a;
+for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) c[i][j] = this.a[i][j];
+
+
+return x;
+});
+Clazz.overrideMethod (c$, "clone", 
+function () {
+return this.copy ();
+});
+Clazz.defineMethod (c$, "getSubmatrix", 
+function (i0, j0, nrows, ncols) {
+var x =  new javajs.util.Matrix (null, nrows, ncols);
+var xa = x.a;
+for (var i = nrows; --i >= 0; ) for (var j = ncols; --j >= 0; ) xa[i][j] = this.a[i0 + i][j0 + j];
+
+
+return x;
+}, "~N,~N,~N,~N");
+Clazz.defineMethod (c$, "getMatrixSelected", 
+function (r, n) {
+var x =  new javajs.util.Matrix (null, r.length, n);
+var xa = x.a;
+for (var i = r.length; --i >= 0; ) {
+var b = this.a[r[i]];
+for (var j = n; --j >= 0; ) xa[i][j] = b[j];
+
+}
+return x;
+}, "~A,~N");
+Clazz.defineMethod (c$, "transpose", 
+function () {
+var x =  new javajs.util.Matrix (null, this.n, this.m);
+var c = x.a;
+for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) c[j][i] = this.a[i][j];
+
+
+return x;
+});
+Clazz.defineMethod (c$, "add", 
+function (b) {
+return this.scaleAdd (b, 1);
+}, "javajs.util.Matrix");
+Clazz.defineMethod (c$, "sub", 
+function (b) {
+return this.scaleAdd (b, -1);
+}, "javajs.util.Matrix");
+Clazz.defineMethod (c$, "scaleAdd", 
+function (b, scale) {
+var x =  new javajs.util.Matrix (null, this.m, this.n);
+var xa = x.a;
+var ba = b.a;
+for (var i = this.m; --i >= 0; ) for (var j = this.n; --j >= 0; ) xa[i][j] = ba[i][j] * scale + this.a[i][j];
+
+
+return x;
+}, "javajs.util.Matrix,~N");
+Clazz.defineMethod (c$, "mul", 
+function (b) {
+if (b.m != this.n) return null;
+var x =  new javajs.util.Matrix (null, this.m, b.n);
+var xa = x.a;
+var ba = b.a;
+for (var j = b.n; --j >= 0; ) for (var i = this.m; --i >= 0; ) {
+var arowi = this.a[i];
+var s = 0;
+for (var k = this.n; --k >= 0; ) s += arowi[k] * ba[k][j];
+
+xa[i][j] = s;
+}
+
+return x;
+}, "javajs.util.Matrix");
+Clazz.defineMethod (c$, "inverse", 
+function () {
+return Clazz.innerTypeInstance (javajs.util.Matrix.LUDecomp, this, null, this.m, this.n).solve (javajs.util.Matrix.identity (this.m, this.m), this.n);
+});
+Clazz.defineMethod (c$, "trace", 
+function () {
+var t = 0;
+for (var i = Math.min (this.m, this.n); --i >= 0; ) t += this.a[i][i];
+
+return t;
+});
+c$.identity = Clazz.defineMethod (c$, "identity", 
+function (m, n) {
+var x =  new javajs.util.Matrix (null, m, n);
+var xa = x.a;
+for (var i = Math.min (m, n); --i >= 0; ) xa[i][i] = 1;
+
+return x;
+}, "~N,~N");
+Clazz.defineMethod (c$, "getRotation", 
+function () {
+return this.getSubmatrix (0, 0, this.m - 1, this.n - 1);
+});
+Clazz.defineMethod (c$, "getTranslation", 
+function () {
+return this.getSubmatrix (0, this.n - 1, this.m - 1, 1);
+});
+c$.newT = Clazz.defineMethod (c$, "newT", 
+function (r, asColumn) {
+return (asColumn ?  new javajs.util.Matrix ( Clazz.newArray (-1, [ Clazz.newDoubleArray (-1, [r.x]),  Clazz.newDoubleArray (-1, [r.y]),  Clazz.newDoubleArray (-1, [r.z])]), 3, 1) :  new javajs.util.Matrix ( Clazz.newArray (-1, [ Clazz.newDoubleArray (-1, [r.x, r.y, r.z])]), 1, 3));
+}, "javajs.util.T3,~B");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+var s = "[\n";
+for (var i = 0; i < this.m; i++) {
+s += "  [";
+for (var j = 0; j < this.n; j++) s += " " + this.a[i][j];
+
+s += "]\n";
+}
+s += "]";
+return s;
+});
+c$.$Matrix$LUDecomp$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.decorateAsClass (function () {
+Clazz.prepareCallback (this, arguments);
+this.LU = null;
+this.piv = null;
+this.pivsign = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.util.Matrix, "LUDecomp");
+Clazz.makeConstructor (c$, 
+function (a, b) {
+this.LU = this.b$["javajs.util.Matrix"].getArrayCopy ();
+this.piv =  Clazz.newIntArray (a, 0);
+for (var c = a; --c >= 0; ) this.piv[c] = c;
+
+this.pivsign = 1;
+var d;
+var e =  Clazz.newDoubleArray (a, 0);
+for (var f = 0; f < b; f++) {
+for (var g = a; --g >= 0; ) e[g] = this.LU[g][f];
+
+for (var h = a; --h >= 0; ) {
+d = this.LU[h];
+var i = Math.min (h, f);
+var j = 0.0;
+for (var k = i; --k >= 0; ) j += d[k] * e[k];
+
+d[f] = e[h] -= j;
+}
+var i = f;
+for (var j = a; --j > f; ) if (Math.abs (e[j]) > Math.abs (e[i])) i = j;
+
+if (i != f) {
+for (var k = b; --k >= 0; ) {
+var l = this.LU[i][k];
+this.LU[i][k] = this.LU[f][k];
+this.LU[f][k] = l;
+}
+var l = this.piv[i];
+this.piv[i] = this.piv[f];
+this.piv[f] = l;
+this.pivsign = -this.pivsign;
+}if ( new Boolean (f < a & this.LU[f][f] != 0.0).valueOf ()) for (var k = a; --k > f; ) this.LU[k][f] /= this.LU[f][f];
+
+}
+}, "~N,~N");
+Clazz.defineMethod (c$, "solve", 
+function (a, b) {
+for (var c = 0; c < b; c++) if (this.LU[c][c] == 0) return null;
+
+var d = a.n;
+var e = a.getMatrixSelected (this.piv, d);
+var f = e.a;
+for (var g = 0; g < b; g++) for (var h = g + 1; h < b; h++) for (var i = 0; i < d; i++) f[h][i] -= f[g][i] * this.LU[h][g];
+
+
+
+for (var j = b; --j >= 0; ) {
+for (var k = d; --k >= 0; ) f[j][k] /= this.LU[j][j];
+
+for (var l = j; --l >= 0; ) for (var m = d; --m >= 0; ) f[l][m] -= f[j][m] * this.LU[l][j];
+
+
+}
+return e;
+}, "javajs.util.Matrix,~N");
+c$ = Clazz.p0p ();
+};
index 9d2f979..e478913 100644 (file)
Binary files a/bin/javajs/util/Measure.class and b/bin/javajs/util/Measure.class differ
index 14e6410..bbcd327 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.util.V3"], "javajs.util.Measure", ["java.lang.Float", "javajs.api.Interface", "javajs.util.Lst", "$.P3", "$.P4", "$.Quat"], function () {\r
-c$ = Clazz.declareType (javajs.util, "Measure");\r
-c$.computeAngle = Clazz.defineMethod (c$, "computeAngle", \r
-function (pointA, pointB, pointC, vectorBA, vectorBC, asDegrees) {\r
-vectorBA.sub2 (pointA, pointB);\r
-vectorBC.sub2 (pointC, pointB);\r
-var angle = vectorBA.angle (vectorBC);\r
-return (asDegrees ? angle / 0.017453292 : angle);\r
-}, "javajs.util.T3,javajs.util.T3,javajs.util.T3,javajs.util.V3,javajs.util.V3,~B");\r
-c$.computeAngleABC = Clazz.defineMethod (c$, "computeAngleABC", \r
-function (pointA, pointB, pointC, asDegrees) {\r
-var vectorBA =  new javajs.util.V3 ();\r
-var vectorBC =  new javajs.util.V3 ();\r
-return javajs.util.Measure.computeAngle (pointA, pointB, pointC, vectorBA, vectorBC, asDegrees);\r
-}, "javajs.util.T3,javajs.util.T3,javajs.util.T3,~B");\r
-c$.computeTorsion = Clazz.defineMethod (c$, "computeTorsion", \r
-function (p1, p2, p3, p4, asDegrees) {\r
-var ijx = p1.x - p2.x;\r
-var ijy = p1.y - p2.y;\r
-var ijz = p1.z - p2.z;\r
-var kjx = p3.x - p2.x;\r
-var kjy = p3.y - p2.y;\r
-var kjz = p3.z - p2.z;\r
-var klx = p3.x - p4.x;\r
-var kly = p3.y - p4.y;\r
-var klz = p3.z - p4.z;\r
-var ax = ijy * kjz - ijz * kjy;\r
-var ay = ijz * kjx - ijx * kjz;\r
-var az = ijx * kjy - ijy * kjx;\r
-var cx = kjy * klz - kjz * kly;\r
-var cy = kjz * klx - kjx * klz;\r
-var cz = kjx * kly - kjy * klx;\r
-var ai2 = 1 / (ax * ax + ay * ay + az * az);\r
-var ci2 = 1 / (cx * cx + cy * cy + cz * cz);\r
-var ai = Math.sqrt (ai2);\r
-var ci = Math.sqrt (ci2);\r
-var denom = ai * ci;\r
-var cross = ax * cx + ay * cy + az * cz;\r
-var cosang = cross * denom;\r
-if (cosang > 1) {\r
-cosang = 1;\r
-}if (cosang < -1) {\r
-cosang = -1;\r
-}var torsion = Math.acos (cosang);\r
-var dot = ijx * cx + ijy * cy + ijz * cz;\r
-var absDot = Math.abs (dot);\r
-torsion = (dot / absDot > 0) ? torsion : -torsion;\r
-return (asDegrees ? torsion / 0.017453292 : torsion);\r
-}, "javajs.util.T3,javajs.util.T3,javajs.util.T3,javajs.util.T3,~B");\r
-c$.computeHelicalAxis = Clazz.defineMethod (c$, "computeHelicalAxis", \r
-function (a, b, dq) {\r
-var vab =  new javajs.util.V3 ();\r
-vab.sub2 (b, a);\r
-var theta = dq.getTheta ();\r
-var n = dq.getNormal ();\r
-var v_dot_n = vab.dot (n);\r
-if (Math.abs (v_dot_n) < 0.0001) v_dot_n = 0;\r
-var va_prime_d =  new javajs.util.V3 ();\r
-va_prime_d.cross (vab, n);\r
-if (va_prime_d.dot (va_prime_d) != 0) va_prime_d.normalize ();\r
-var vda =  new javajs.util.V3 ();\r
-var vcb = javajs.util.V3.newV (n);\r
-if (v_dot_n == 0) v_dot_n = 1.4E-45;\r
-vcb.scale (v_dot_n);\r
-vda.sub2 (vcb, vab);\r
-vda.scale (0.5);\r
-va_prime_d.scale (theta == 0 ? 0 : (vda.length () / Math.tan (theta / 2 / 180 * 3.141592653589793)));\r
-var r = javajs.util.V3.newV (va_prime_d);\r
-if (theta != 0) r.add (vda);\r
-var pt_a_prime = javajs.util.P3.newP (a);\r
-pt_a_prime.sub (r);\r
-if (v_dot_n != 1.4E-45) n.scale (v_dot_n);\r
-var pt_b_prime = javajs.util.P3.newP (pt_a_prime);\r
-pt_b_prime.add (n);\r
-theta = javajs.util.Measure.computeTorsion (a, pt_a_prime, pt_b_prime, b, true);\r
-if (Float.isNaN (theta) || r.length () < 0.0001) theta = dq.getThetaDirectedV (n);\r
-var residuesPerTurn = Math.abs (theta == 0 ? 0 : 360 / theta);\r
-var pitch = Math.abs (v_dot_n == 1.4E-45 ? 0 : n.length () * (theta == 0 ? 1 : 360 / theta));\r
-return  Clazz.newArray (-1, [pt_a_prime, n, r, javajs.util.P3.new3 (theta, pitch, residuesPerTurn), pt_b_prime]);\r
-}, "javajs.util.P3,javajs.util.P3,javajs.util.Quat");\r
-c$.getPlaneThroughPoints = Clazz.defineMethod (c$, "getPlaneThroughPoints", \r
-function (pointA, pointB, pointC, vNorm, vAB, plane) {\r
-var w = javajs.util.Measure.getNormalThroughPoints (pointA, pointB, pointC, vNorm, vAB);\r
-plane.set4 (vNorm.x, vNorm.y, vNorm.z, w);\r
-return plane;\r
-}, "javajs.util.T3,javajs.util.T3,javajs.util.T3,javajs.util.V3,javajs.util.V3,javajs.util.P4");\r
-c$.getPlaneThroughPoint = Clazz.defineMethod (c$, "getPlaneThroughPoint", \r
-function (pt, normal, plane) {\r
-plane.set4 (normal.x, normal.y, normal.z, -normal.dot (pt));\r
-}, "javajs.util.T3,javajs.util.V3,javajs.util.P4");\r
-c$.distanceToPlane = Clazz.defineMethod (c$, "distanceToPlane", \r
-function (plane, pt) {\r
-return (plane == null ? NaN : (plane.dot (pt) + plane.w) / Math.sqrt (plane.dot (plane)));\r
-}, "javajs.util.P4,javajs.util.T3");\r
-c$.directedDistanceToPlane = Clazz.defineMethod (c$, "directedDistanceToPlane", \r
-function (pt, plane, ptref) {\r
-var f = plane.dot (pt) + plane.w;\r
-var f1 = plane.dot (ptref) + plane.w;\r
-return Math.signum (f1) * f / Math.sqrt (plane.dot (plane));\r
-}, "javajs.util.P3,javajs.util.P4,javajs.util.P3");\r
-c$.distanceToPlaneD = Clazz.defineMethod (c$, "distanceToPlaneD", \r
-function (plane, d, pt) {\r
-return (plane == null ? NaN : (plane.dot (pt) + plane.w) / d);\r
-}, "javajs.util.P4,~N,javajs.util.P3");\r
-c$.distanceToPlaneV = Clazz.defineMethod (c$, "distanceToPlaneV", \r
-function (norm, w, pt) {\r
-return (norm == null ? NaN : (norm.dot (pt) + w) / Math.sqrt (norm.dot (norm)));\r
-}, "javajs.util.V3,~N,javajs.util.P3");\r
-c$.calcNormalizedNormal = Clazz.defineMethod (c$, "calcNormalizedNormal", \r
-function (pointA, pointB, pointC, vNormNorm, vAB) {\r
-vAB.sub2 (pointB, pointA);\r
-vNormNorm.sub2 (pointC, pointA);\r
-vNormNorm.cross (vAB, vNormNorm);\r
-vNormNorm.normalize ();\r
-}, "javajs.util.T3,javajs.util.T3,javajs.util.T3,javajs.util.V3,javajs.util.V3");\r
-c$.getDirectedNormalThroughPoints = Clazz.defineMethod (c$, "getDirectedNormalThroughPoints", \r
-function (pointA, pointB, pointC, ptRef, vNorm, vAB) {\r
-var nd = javajs.util.Measure.getNormalThroughPoints (pointA, pointB, pointC, vNorm, vAB);\r
-if (ptRef != null) {\r
-var pt0 = javajs.util.P3.newP (pointA);\r
-pt0.add (vNorm);\r
-var d = pt0.distance (ptRef);\r
-pt0.sub2 (pointA, vNorm);\r
-if (d > pt0.distance (ptRef)) {\r
-vNorm.scale (-1);\r
-nd = -nd;\r
-}}return nd;\r
-}, "javajs.util.T3,javajs.util.T3,javajs.util.T3,javajs.util.T3,javajs.util.V3,javajs.util.V3");\r
-c$.getNormalThroughPoints = Clazz.defineMethod (c$, "getNormalThroughPoints", \r
-function (pointA, pointB, pointC, vNorm, vTemp) {\r
-javajs.util.Measure.calcNormalizedNormal (pointA, pointB, pointC, vNorm, vTemp);\r
-vTemp.setT (pointA);\r
-return -vTemp.dot (vNorm);\r
-}, "javajs.util.T3,javajs.util.T3,javajs.util.T3,javajs.util.V3,javajs.util.V3");\r
-c$.getPlaneProjection = Clazz.defineMethod (c$, "getPlaneProjection", \r
-function (pt, plane, ptProj, vNorm) {\r
-var dist = javajs.util.Measure.distanceToPlane (plane, pt);\r
-vNorm.set (plane.x, plane.y, plane.z);\r
-vNorm.normalize ();\r
-vNorm.scale (-dist);\r
-ptProj.add2 (pt, vNorm);\r
-}, "javajs.util.P3,javajs.util.P4,javajs.util.P3,javajs.util.V3");\r
-c$.getNormalToLine = Clazz.defineMethod (c$, "getNormalToLine", \r
-function (pointA, pointB, vNormNorm) {\r
-vNormNorm.sub2 (pointA, pointB);\r
-vNormNorm.cross (vNormNorm, javajs.util.Measure.axisY);\r
-vNormNorm.normalize ();\r
-if (Float.isNaN (vNormNorm.x)) vNormNorm.set (1, 0, 0);\r
-}, "javajs.util.P3,javajs.util.P3,javajs.util.V3");\r
-c$.getBisectingPlane = Clazz.defineMethod (c$, "getBisectingPlane", \r
-function (pointA, vAB, ptTemp, vTemp, plane) {\r
-ptTemp.scaleAdd2 (0.5, vAB, pointA);\r
-vTemp.setT (vAB);\r
-vTemp.normalize ();\r
-javajs.util.Measure.getPlaneThroughPoint (ptTemp, vTemp, plane);\r
-}, "javajs.util.P3,javajs.util.V3,javajs.util.T3,javajs.util.V3,javajs.util.P4");\r
-c$.projectOntoAxis = Clazz.defineMethod (c$, "projectOntoAxis", \r
-function (point, axisA, axisUnitVector, vectorProjection) {\r
-vectorProjection.sub2 (point, axisA);\r
-var projectedLength = vectorProjection.dot (axisUnitVector);\r
-point.scaleAdd2 (projectedLength, axisUnitVector, axisA);\r
-vectorProjection.sub2 (point, axisA);\r
-}, "javajs.util.P3,javajs.util.P3,javajs.util.V3,javajs.util.V3");\r
-c$.calcBestAxisThroughPoints = Clazz.defineMethod (c$, "calcBestAxisThroughPoints", \r
-function (points, axisA, axisUnitVector, vectorProjection, nTriesMax) {\r
-var nPoints = points.length;\r
-axisA.setT (points[0]);\r
-axisUnitVector.sub2 (points[nPoints - 1], axisA);\r
-axisUnitVector.normalize ();\r
-javajs.util.Measure.calcAveragePointN (points, nPoints, axisA);\r
-var nTries = 0;\r
-while (nTries++ < nTriesMax && javajs.util.Measure.findAxis (points, nPoints, axisA, axisUnitVector, vectorProjection) > 0.001) {\r
-}\r
-var tempA = javajs.util.P3.newP (points[0]);\r
-javajs.util.Measure.projectOntoAxis (tempA, axisA, axisUnitVector, vectorProjection);\r
-axisA.setT (tempA);\r
-}, "~A,javajs.util.P3,javajs.util.V3,javajs.util.V3,~N");\r
-c$.findAxis = Clazz.defineMethod (c$, "findAxis", \r
-function (points, nPoints, axisA, axisUnitVector, vectorProjection) {\r
-var sumXiYi =  new javajs.util.V3 ();\r
-var vTemp =  new javajs.util.V3 ();\r
-var pt =  new javajs.util.P3 ();\r
-var ptProj =  new javajs.util.P3 ();\r
-var a = javajs.util.V3.newV (axisUnitVector);\r
-var sum_Xi2 = 0;\r
-for (var i = nPoints; --i >= 0; ) {\r
-pt.setT (points[i]);\r
-ptProj.setT (pt);\r
-javajs.util.Measure.projectOntoAxis (ptProj, axisA, axisUnitVector, vectorProjection);\r
-vTemp.sub2 (pt, ptProj);\r
-vTemp.cross (vectorProjection, vTemp);\r
-sumXiYi.add (vTemp);\r
-sum_Xi2 += vectorProjection.lengthSquared ();\r
-}\r
-var m = javajs.util.V3.newV (sumXiYi);\r
-m.scale (1 / sum_Xi2);\r
-vTemp.cross (m, axisUnitVector);\r
-axisUnitVector.add (vTemp);\r
-axisUnitVector.normalize ();\r
-vTemp.sub2 (axisUnitVector, a);\r
-return vTemp.length ();\r
-}, "~A,~N,javajs.util.P3,javajs.util.V3,javajs.util.V3");\r
-c$.calcAveragePoint = Clazz.defineMethod (c$, "calcAveragePoint", \r
-function (pointA, pointB, pointC) {\r
-pointC.set ((pointA.x + pointB.x) / 2, (pointA.y + pointB.y) / 2, (pointA.z + pointB.z) / 2);\r
-}, "javajs.util.P3,javajs.util.P3,javajs.util.P3");\r
-c$.calcAveragePointN = Clazz.defineMethod (c$, "calcAveragePointN", \r
-function (points, nPoints, averagePoint) {\r
-averagePoint.setT (points[0]);\r
-for (var i = 1; i < nPoints; i++) averagePoint.add (points[i]);\r
-\r
-averagePoint.scale (1 / nPoints);\r
-}, "~A,~N,javajs.util.P3");\r
-c$.transformPoints = Clazz.defineMethod (c$, "transformPoints", \r
-function (vPts, m4, center) {\r
-var v =  new javajs.util.Lst ();\r
-for (var i = 0; i < vPts.size (); i++) {\r
-var pt = javajs.util.P3.newP (vPts.get (i));\r
-pt.sub (center);\r
-m4.rotTrans (pt);\r
-pt.add (center);\r
-v.addLast (pt);\r
-}\r
-return v;\r
-}, "javajs.util.Lst,javajs.util.M4,javajs.util.P3");\r
-c$.isInTetrahedron = Clazz.defineMethod (c$, "isInTetrahedron", \r
-function (pt, ptA, ptB, ptC, ptD, plane, vTemp, vTemp2, fullyEnclosed) {\r
-var b = (javajs.util.Measure.distanceToPlane (javajs.util.Measure.getPlaneThroughPoints (ptC, ptD, ptA, vTemp, vTemp2, plane), pt) >= 0);\r
-if (b != (javajs.util.Measure.distanceToPlane (javajs.util.Measure.getPlaneThroughPoints (ptA, ptD, ptB, vTemp, vTemp2, plane), pt) >= 0)) return false;\r
-if (b != (javajs.util.Measure.distanceToPlane (javajs.util.Measure.getPlaneThroughPoints (ptB, ptD, ptC, vTemp, vTemp2, plane), pt) >= 0)) return false;\r
-var d = javajs.util.Measure.distanceToPlane (javajs.util.Measure.getPlaneThroughPoints (ptA, ptB, ptC, vTemp, vTemp2, plane), pt);\r
-if (fullyEnclosed) return (b == (d >= 0));\r
-var d1 = javajs.util.Measure.distanceToPlane (plane, ptD);\r
-return d1 * d <= 0 || Math.abs (d1) > Math.abs (d);\r
-}, "javajs.util.P3,javajs.util.P3,javajs.util.P3,javajs.util.P3,javajs.util.P3,javajs.util.P4,javajs.util.V3,javajs.util.V3,~B");\r
-c$.getIntersectionPP = Clazz.defineMethod (c$, "getIntersectionPP", \r
-function (plane1, plane2) {\r
-var a1 = plane1.x;\r
-var b1 = plane1.y;\r
-var c1 = plane1.z;\r
-var d1 = plane1.w;\r
-var a2 = plane2.x;\r
-var b2 = plane2.y;\r
-var c2 = plane2.z;\r
-var d2 = plane2.w;\r
-var norm1 = javajs.util.V3.new3 (a1, b1, c1);\r
-var norm2 = javajs.util.V3.new3 (a2, b2, c2);\r
-var nxn =  new javajs.util.V3 ();\r
-nxn.cross (norm1, norm2);\r
-var ax = Math.abs (nxn.x);\r
-var ay = Math.abs (nxn.y);\r
-var az = Math.abs (nxn.z);\r
-var x;\r
-var y;\r
-var z;\r
-var diff;\r
-var type = (ax > ay ? (ax > az ? 1 : 3) : ay > az ? 2 : 3);\r
-switch (type) {\r
-case 1:\r
-x = 0;\r
-diff = (b1 * c2 - b2 * c1);\r
-if (Math.abs (diff) < 0.01) return null;\r
-y = (c1 * d2 - c2 * d1) / diff;\r
-z = (b2 * d1 - d2 * b1) / diff;\r
-break;\r
-case 2:\r
-diff = (a1 * c2 - a2 * c1);\r
-if (Math.abs (diff) < 0.01) return null;\r
-x = (c1 * d2 - c2 * d1) / diff;\r
-y = 0;\r
-z = (a2 * d1 - d2 * a1) / diff;\r
-break;\r
-case 3:\r
-default:\r
-diff = (a1 * b2 - a2 * b1);\r
-if (Math.abs (diff) < 0.01) return null;\r
-x = (b1 * d2 - b2 * d1) / diff;\r
-y = (a2 * d1 - d2 * a1) / diff;\r
-z = 0;\r
-}\r
-var list =  new javajs.util.Lst ();\r
-list.addLast (javajs.util.P3.new3 (x, y, z));\r
-nxn.normalize ();\r
-list.addLast (nxn);\r
-return list;\r
-}, "javajs.util.P4,javajs.util.P4");\r
-c$.getIntersection = Clazz.defineMethod (c$, "getIntersection", \r
-function (pt1, v, plane, ptRet, tempNorm, vTemp) {\r
-javajs.util.Measure.getPlaneProjection (pt1, plane, ptRet, tempNorm);\r
-tempNorm.set (plane.x, plane.y, plane.z);\r
-tempNorm.normalize ();\r
-if (v == null) v = javajs.util.V3.newV (tempNorm);\r
-var l_dot_n = v.dot (tempNorm);\r
-if (Math.abs (l_dot_n) < 0.01) return null;\r
-vTemp.sub2 (ptRet, pt1);\r
-ptRet.scaleAdd2 (vTemp.dot (tempNorm) / l_dot_n, v, pt1);\r
-return ptRet;\r
-}, "javajs.util.P3,javajs.util.V3,javajs.util.P4,javajs.util.P3,javajs.util.V3,javajs.util.V3");\r
-c$.calculateQuaternionRotation = Clazz.defineMethod (c$, "calculateQuaternionRotation", \r
-function (centerAndPoints, retStddev) {\r
-retStddev[1] = NaN;\r
-var q =  new javajs.util.Quat ();\r
-if (centerAndPoints[0].length == 1 || centerAndPoints[0].length != centerAndPoints[1].length) return q;\r
-var n = centerAndPoints[0].length - 1;\r
-if (n < 2) return q;\r
-var Sxx = 0;\r
-var Sxy = 0;\r
-var Sxz = 0;\r
-var Syx = 0;\r
-var Syy = 0;\r
-var Syz = 0;\r
-var Szx = 0;\r
-var Szy = 0;\r
-var Szz = 0;\r
-var ptA =  new javajs.util.P3 ();\r
-var ptB =  new javajs.util.P3 ();\r
-for (var i = n + 1; --i >= 1; ) {\r
-var aij = centerAndPoints[0][i];\r
-var bij = centerAndPoints[1][i];\r
-ptA.sub2 (aij, centerAndPoints[0][0]);\r
-ptB.sub2 (bij, centerAndPoints[0][1]);\r
-Sxx += ptA.x * ptB.x;\r
-Sxy += ptA.x * ptB.y;\r
-Sxz += ptA.x * ptB.z;\r
-Syx += ptA.y * ptB.x;\r
-Syy += ptA.y * ptB.y;\r
-Syz += ptA.y * ptB.z;\r
-Szx += ptA.z * ptB.x;\r
-Szy += ptA.z * ptB.y;\r
-Szz += ptA.z * ptB.z;\r
-}\r
-retStddev[0] = javajs.util.Measure.getRmsd (centerAndPoints, q);\r
-var N =  Clazz.newDoubleArray (4, 4, 0);\r
-N[0][0] = Sxx + Syy + Szz;\r
-N[0][1] = N[1][0] = Syz - Szy;\r
-N[0][2] = N[2][0] = Szx - Sxz;\r
-N[0][3] = N[3][0] = Sxy - Syx;\r
-N[1][1] = Sxx - Syy - Szz;\r
-N[1][2] = N[2][1] = Sxy + Syx;\r
-N[1][3] = N[3][1] = Szx + Sxz;\r
-N[2][2] = -Sxx + Syy - Szz;\r
-N[2][3] = N[3][2] = Syz + Szy;\r
-N[3][3] = -Sxx - Syy + Szz;\r
-var v = (javajs.api.Interface.getInterface ("javajs.util.Eigen")).setM (N).getEigenvectorsFloatTransposed ()[3];\r
-q = javajs.util.Quat.newP4 (javajs.util.P4.new4 (v[1], v[2], v[3], v[0]));\r
-retStddev[1] = javajs.util.Measure.getRmsd (centerAndPoints, q);\r
-return q;\r
-}, "~A,~A");\r
-c$.getTransformMatrix4 = Clazz.defineMethod (c$, "getTransformMatrix4", \r
-function (ptsA, ptsB, m, centerA) {\r
-var cptsA = javajs.util.Measure.getCenterAndPoints (ptsA);\r
-var cptsB = javajs.util.Measure.getCenterAndPoints (ptsB);\r
-var retStddev =  Clazz.newFloatArray (2, 0);\r
-var q = javajs.util.Measure.calculateQuaternionRotation ( Clazz.newArray (-1, [cptsA, cptsB]), retStddev);\r
-var r = q.getMatrix ();\r
-if (centerA == null) r.rotate (cptsA[0]);\r
- else centerA.setT (cptsA[0]);\r
-var t = javajs.util.V3.newVsub (cptsB[0], cptsA[0]);\r
-m.setMV (r, t);\r
-return retStddev[1];\r
-}, "javajs.util.Lst,javajs.util.Lst,javajs.util.M4,javajs.util.P3");\r
-c$.getCenterAndPoints = Clazz.defineMethod (c$, "getCenterAndPoints", \r
-function (vPts) {\r
-var n = vPts.size ();\r
-var pts =  new Array (n + 1);\r
-pts[0] =  new javajs.util.P3 ();\r
-if (n > 0) {\r
-for (var i = 0; i < n; i++) {\r
-pts[0].add (pts[i + 1] = vPts.get (i));\r
-}\r
-pts[0].scale (1 / n);\r
-}return pts;\r
-}, "javajs.util.Lst");\r
-c$.getRmsd = Clazz.defineMethod (c$, "getRmsd", \r
-function (centerAndPoints, q) {\r
-var sum2 = 0;\r
-var ptsA = centerAndPoints[0];\r
-var ptsB = centerAndPoints[1];\r
-var cA = ptsA[0];\r
-var cB = ptsB[0];\r
-var n = ptsA.length - 1;\r
-var ptAnew =  new javajs.util.P3 ();\r
-for (var i = n + 1; --i >= 1; ) {\r
-ptAnew.sub2 (ptsA[i], cA);\r
-q.transform2 (ptAnew, ptAnew).add (cB);\r
-sum2 += ptAnew.distanceSquared (ptsB[i]);\r
-}\r
-return Math.sqrt (sum2 / n);\r
-}, "~A,javajs.util.Quat");\r
-Clazz.defineStatics (c$,\r
-"radiansPerDegree", (0.017453292519943295));\r
-c$.axisY = c$.prototype.axisY = javajs.util.V3.new3 (0, 1, 0);\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.util.V3"], "javajs.util.Measure", ["java.lang.Float", "javajs.api.Interface", "javajs.util.Lst", "$.P3", "$.P4", "$.Quat"], function () {
+c$ = Clazz.declareType (javajs.util, "Measure");
+c$.computeAngle = Clazz.defineMethod (c$, "computeAngle", 
+function (pointA, pointB, pointC, vectorBA, vectorBC, asDegrees) {
+vectorBA.sub2 (pointA, pointB);
+vectorBC.sub2 (pointC, pointB);
+var angle = vectorBA.angle (vectorBC);
+return (asDegrees ? angle / 0.017453292 : angle);
+}, "javajs.util.T3,javajs.util.T3,javajs.util.T3,javajs.util.V3,javajs.util.V3,~B");
+c$.computeAngleABC = Clazz.defineMethod (c$, "computeAngleABC", 
+function (pointA, pointB, pointC, asDegrees) {
+var vectorBA =  new javajs.util.V3 ();
+var vectorBC =  new javajs.util.V3 ();
+return javajs.util.Measure.computeAngle (pointA, pointB, pointC, vectorBA, vectorBC, asDegrees);
+}, "javajs.util.T3,javajs.util.T3,javajs.util.T3,~B");
+c$.computeTorsion = Clazz.defineMethod (c$, "computeTorsion", 
+function (p1, p2, p3, p4, asDegrees) {
+var ijx = p1.x - p2.x;
+var ijy = p1.y - p2.y;
+var ijz = p1.z - p2.z;
+var kjx = p3.x - p2.x;
+var kjy = p3.y - p2.y;
+var kjz = p3.z - p2.z;
+var klx = p3.x - p4.x;
+var kly = p3.y - p4.y;
+var klz = p3.z - p4.z;
+var ax = ijy * kjz - ijz * kjy;
+var ay = ijz * kjx - ijx * kjz;
+var az = ijx * kjy - ijy * kjx;
+var cx = kjy * klz - kjz * kly;
+var cy = kjz * klx - kjx * klz;
+var cz = kjx * kly - kjy * klx;
+var ai2 = 1 / (ax * ax + ay * ay + az * az);
+var ci2 = 1 / (cx * cx + cy * cy + cz * cz);
+var ai = Math.sqrt (ai2);
+var ci = Math.sqrt (ci2);
+var denom = ai * ci;
+var cross = ax * cx + ay * cy + az * cz;
+var cosang = cross * denom;
+if (cosang > 1) {
+cosang = 1;
+}if (cosang < -1) {
+cosang = -1;
+}var torsion = Math.acos (cosang);
+var dot = ijx * cx + ijy * cy + ijz * cz;
+var absDot = Math.abs (dot);
+torsion = (dot / absDot > 0) ? torsion : -torsion;
+return (asDegrees ? torsion / 0.017453292 : torsion);
+}, "javajs.util.T3,javajs.util.T3,javajs.util.T3,javajs.util.T3,~B");
+c$.computeHelicalAxis = Clazz.defineMethod (c$, "computeHelicalAxis", 
+function (a, b, dq) {
+var vab =  new javajs.util.V3 ();
+vab.sub2 (b, a);
+var theta = dq.getTheta ();
+var n = dq.getNormal ();
+var v_dot_n = vab.dot (n);
+if (Math.abs (v_dot_n) < 0.0001) v_dot_n = 0;
+var va_prime_d =  new javajs.util.V3 ();
+va_prime_d.cross (vab, n);
+if (va_prime_d.dot (va_prime_d) != 0) va_prime_d.normalize ();
+var vda =  new javajs.util.V3 ();
+var vcb = javajs.util.V3.newV (n);
+if (v_dot_n == 0) v_dot_n = 1.4E-45;
+vcb.scale (v_dot_n);
+vda.sub2 (vcb, vab);
+vda.scale (0.5);
+va_prime_d.scale (theta == 0 ? 0 : (vda.length () / Math.tan (theta / 2 / 180 * 3.141592653589793)));
+var r = javajs.util.V3.newV (va_prime_d);
+if (theta != 0) r.add (vda);
+var pt_a_prime = javajs.util.P3.newP (a);
+pt_a_prime.sub (r);
+if (v_dot_n != 1.4E-45) n.scale (v_dot_n);
+var pt_b_prime = javajs.util.P3.newP (pt_a_prime);
+pt_b_prime.add (n);
+theta = javajs.util.Measure.computeTorsion (a, pt_a_prime, pt_b_prime, b, true);
+if (Float.isNaN (theta) || r.length () < 0.0001) theta = dq.getThetaDirectedV (n);
+var residuesPerTurn = Math.abs (theta == 0 ? 0 : 360 / theta);
+var pitch = Math.abs (v_dot_n == 1.4E-45 ? 0 : n.length () * (theta == 0 ? 1 : 360 / theta));
+return  Clazz.newArray (-1, [pt_a_prime, n, r, javajs.util.P3.new3 (theta, pitch, residuesPerTurn), pt_b_prime]);
+}, "javajs.util.P3,javajs.util.P3,javajs.util.Quat");
+c$.getPlaneThroughPoints = Clazz.defineMethod (c$, "getPlaneThroughPoints", 
+function (pointA, pointB, pointC, vNorm, vAB, plane) {
+var w = javajs.util.Measure.getNormalThroughPoints (pointA, pointB, pointC, vNorm, vAB);
+plane.set4 (vNorm.x, vNorm.y, vNorm.z, w);
+return plane;
+}, "javajs.util.T3,javajs.util.T3,javajs.util.T3,javajs.util.V3,javajs.util.V3,javajs.util.P4");
+c$.getPlaneThroughPoint = Clazz.defineMethod (c$, "getPlaneThroughPoint", 
+function (pt, normal, plane) {
+plane.set4 (normal.x, normal.y, normal.z, -normal.dot (pt));
+}, "javajs.util.T3,javajs.util.V3,javajs.util.P4");
+c$.distanceToPlane = Clazz.defineMethod (c$, "distanceToPlane", 
+function (plane, pt) {
+return (plane == null ? NaN : (plane.dot (pt) + plane.w) / Math.sqrt (plane.dot (plane)));
+}, "javajs.util.P4,javajs.util.T3");
+c$.directedDistanceToPlane = Clazz.defineMethod (c$, "directedDistanceToPlane", 
+function (pt, plane, ptref) {
+var f = plane.dot (pt) + plane.w;
+var f1 = plane.dot (ptref) + plane.w;
+return Math.signum (f1) * f / Math.sqrt (plane.dot (plane));
+}, "javajs.util.P3,javajs.util.P4,javajs.util.P3");
+c$.distanceToPlaneD = Clazz.defineMethod (c$, "distanceToPlaneD", 
+function (plane, d, pt) {
+return (plane == null ? NaN : (plane.dot (pt) + plane.w) / d);
+}, "javajs.util.P4,~N,javajs.util.P3");
+c$.distanceToPlaneV = Clazz.defineMethod (c$, "distanceToPlaneV", 
+function (norm, w, pt) {
+return (norm == null ? NaN : (norm.dot (pt) + w) / Math.sqrt (norm.dot (norm)));
+}, "javajs.util.V3,~N,javajs.util.P3");
+c$.calcNormalizedNormal = Clazz.defineMethod (c$, "calcNormalizedNormal", 
+function (pointA, pointB, pointC, vNormNorm, vAB) {
+vAB.sub2 (pointB, pointA);
+vNormNorm.sub2 (pointC, pointA);
+vNormNorm.cross (vAB, vNormNorm);
+vNormNorm.normalize ();
+}, "javajs.util.T3,javajs.util.T3,javajs.util.T3,javajs.util.V3,javajs.util.V3");
+c$.getDirectedNormalThroughPoints = Clazz.defineMethod (c$, "getDirectedNormalThroughPoints", 
+function (pointA, pointB, pointC, ptRef, vNorm, vAB) {
+var nd = javajs.util.Measure.getNormalThroughPoints (pointA, pointB, pointC, vNorm, vAB);
+if (ptRef != null) {
+var pt0 = javajs.util.P3.newP (pointA);
+pt0.add (vNorm);
+var d = pt0.distance (ptRef);
+pt0.sub2 (pointA, vNorm);
+if (d > pt0.distance (ptRef)) {
+vNorm.scale (-1);
+nd = -nd;
+}}return nd;
+}, "javajs.util.T3,javajs.util.T3,javajs.util.T3,javajs.util.T3,javajs.util.V3,javajs.util.V3");
+c$.getNormalThroughPoints = Clazz.defineMethod (c$, "getNormalThroughPoints", 
+function (pointA, pointB, pointC, vNorm, vTemp) {
+javajs.util.Measure.calcNormalizedNormal (pointA, pointB, pointC, vNorm, vTemp);
+vTemp.setT (pointA);
+return -vTemp.dot (vNorm);
+}, "javajs.util.T3,javajs.util.T3,javajs.util.T3,javajs.util.V3,javajs.util.V3");
+c$.getPlaneProjection = Clazz.defineMethod (c$, "getPlaneProjection", 
+function (pt, plane, ptProj, vNorm) {
+var dist = javajs.util.Measure.distanceToPlane (plane, pt);
+vNorm.set (plane.x, plane.y, plane.z);
+vNorm.normalize ();
+vNorm.scale (-dist);
+ptProj.add2 (pt, vNorm);
+}, "javajs.util.P3,javajs.util.P4,javajs.util.P3,javajs.util.V3");
+c$.getNormalToLine = Clazz.defineMethod (c$, "getNormalToLine", 
+function (pointA, pointB, vNormNorm) {
+vNormNorm.sub2 (pointA, pointB);
+vNormNorm.cross (vNormNorm, javajs.util.Measure.axisY);
+vNormNorm.normalize ();
+if (Float.isNaN (vNormNorm.x)) vNormNorm.set (1, 0, 0);
+}, "javajs.util.P3,javajs.util.P3,javajs.util.V3");
+c$.getBisectingPlane = Clazz.defineMethod (c$, "getBisectingPlane", 
+function (pointA, vAB, ptTemp, vTemp, plane) {
+ptTemp.scaleAdd2 (0.5, vAB, pointA);
+vTemp.setT (vAB);
+vTemp.normalize ();
+javajs.util.Measure.getPlaneThroughPoint (ptTemp, vTemp, plane);
+}, "javajs.util.P3,javajs.util.V3,javajs.util.T3,javajs.util.V3,javajs.util.P4");
+c$.projectOntoAxis = Clazz.defineMethod (c$, "projectOntoAxis", 
+function (point, axisA, axisUnitVector, vectorProjection) {
+vectorProjection.sub2 (point, axisA);
+var projectedLength = vectorProjection.dot (axisUnitVector);
+point.scaleAdd2 (projectedLength, axisUnitVector, axisA);
+vectorProjection.sub2 (point, axisA);
+}, "javajs.util.P3,javajs.util.P3,javajs.util.V3,javajs.util.V3");
+c$.calcBestAxisThroughPoints = Clazz.defineMethod (c$, "calcBestAxisThroughPoints", 
+function (points, axisA, axisUnitVector, vectorProjection, nTriesMax) {
+var nPoints = points.length;
+axisA.setT (points[0]);
+axisUnitVector.sub2 (points[nPoints - 1], axisA);
+axisUnitVector.normalize ();
+javajs.util.Measure.calcAveragePointN (points, nPoints, axisA);
+var nTries = 0;
+while (nTries++ < nTriesMax && javajs.util.Measure.findAxis (points, nPoints, axisA, axisUnitVector, vectorProjection) > 0.001) {
+}
+var tempA = javajs.util.P3.newP (points[0]);
+javajs.util.Measure.projectOntoAxis (tempA, axisA, axisUnitVector, vectorProjection);
+axisA.setT (tempA);
+}, "~A,javajs.util.P3,javajs.util.V3,javajs.util.V3,~N");
+c$.findAxis = Clazz.defineMethod (c$, "findAxis", 
+function (points, nPoints, axisA, axisUnitVector, vectorProjection) {
+var sumXiYi =  new javajs.util.V3 ();
+var vTemp =  new javajs.util.V3 ();
+var pt =  new javajs.util.P3 ();
+var ptProj =  new javajs.util.P3 ();
+var a = javajs.util.V3.newV (axisUnitVector);
+var sum_Xi2 = 0;
+for (var i = nPoints; --i >= 0; ) {
+pt.setT (points[i]);
+ptProj.setT (pt);
+javajs.util.Measure.projectOntoAxis (ptProj, axisA, axisUnitVector, vectorProjection);
+vTemp.sub2 (pt, ptProj);
+vTemp.cross (vectorProjection, vTemp);
+sumXiYi.add (vTemp);
+sum_Xi2 += vectorProjection.lengthSquared ();
+}
+var m = javajs.util.V3.newV (sumXiYi);
+m.scale (1 / sum_Xi2);
+vTemp.cross (m, axisUnitVector);
+axisUnitVector.add (vTemp);
+axisUnitVector.normalize ();
+vTemp.sub2 (axisUnitVector, a);
+return vTemp.length ();
+}, "~A,~N,javajs.util.P3,javajs.util.V3,javajs.util.V3");
+c$.calcAveragePoint = Clazz.defineMethod (c$, "calcAveragePoint", 
+function (pointA, pointB, pointC) {
+pointC.set ((pointA.x + pointB.x) / 2, (pointA.y + pointB.y) / 2, (pointA.z + pointB.z) / 2);
+}, "javajs.util.P3,javajs.util.P3,javajs.util.P3");
+c$.calcAveragePointN = Clazz.defineMethod (c$, "calcAveragePointN", 
+function (points, nPoints, averagePoint) {
+averagePoint.setT (points[0]);
+for (var i = 1; i < nPoints; i++) averagePoint.add (points[i]);
+
+averagePoint.scale (1 / nPoints);
+}, "~A,~N,javajs.util.P3");
+c$.transformPoints = Clazz.defineMethod (c$, "transformPoints", 
+function (vPts, m4, center) {
+var v =  new javajs.util.Lst ();
+for (var i = 0; i < vPts.size (); i++) {
+var pt = javajs.util.P3.newP (vPts.get (i));
+pt.sub (center);
+m4.rotTrans (pt);
+pt.add (center);
+v.addLast (pt);
+}
+return v;
+}, "javajs.util.Lst,javajs.util.M4,javajs.util.P3");
+c$.isInTetrahedron = Clazz.defineMethod (c$, "isInTetrahedron", 
+function (pt, ptA, ptB, ptC, ptD, plane, vTemp, vTemp2, fullyEnclosed) {
+var b = (javajs.util.Measure.distanceToPlane (javajs.util.Measure.getPlaneThroughPoints (ptC, ptD, ptA, vTemp, vTemp2, plane), pt) >= 0);
+if (b != (javajs.util.Measure.distanceToPlane (javajs.util.Measure.getPlaneThroughPoints (ptA, ptD, ptB, vTemp, vTemp2, plane), pt) >= 0)) return false;
+if (b != (javajs.util.Measure.distanceToPlane (javajs.util.Measure.getPlaneThroughPoints (ptB, ptD, ptC, vTemp, vTemp2, plane), pt) >= 0)) return false;
+var d = javajs.util.Measure.distanceToPlane (javajs.util.Measure.getPlaneThroughPoints (ptA, ptB, ptC, vTemp, vTemp2, plane), pt);
+if (fullyEnclosed) return (b == (d >= 0));
+var d1 = javajs.util.Measure.distanceToPlane (plane, ptD);
+return d1 * d <= 0 || Math.abs (d1) > Math.abs (d);
+}, "javajs.util.P3,javajs.util.P3,javajs.util.P3,javajs.util.P3,javajs.util.P3,javajs.util.P4,javajs.util.V3,javajs.util.V3,~B");
+c$.getIntersectionPP = Clazz.defineMethod (c$, "getIntersectionPP", 
+function (plane1, plane2) {
+var a1 = plane1.x;
+var b1 = plane1.y;
+var c1 = plane1.z;
+var d1 = plane1.w;
+var a2 = plane2.x;
+var b2 = plane2.y;
+var c2 = plane2.z;
+var d2 = plane2.w;
+var norm1 = javajs.util.V3.new3 (a1, b1, c1);
+var norm2 = javajs.util.V3.new3 (a2, b2, c2);
+var nxn =  new javajs.util.V3 ();
+nxn.cross (norm1, norm2);
+var ax = Math.abs (nxn.x);
+var ay = Math.abs (nxn.y);
+var az = Math.abs (nxn.z);
+var x;
+var y;
+var z;
+var diff;
+var type = (ax > ay ? (ax > az ? 1 : 3) : ay > az ? 2 : 3);
+switch (type) {
+case 1:
+x = 0;
+diff = (b1 * c2 - b2 * c1);
+if (Math.abs (diff) < 0.01) return null;
+y = (c1 * d2 - c2 * d1) / diff;
+z = (b2 * d1 - d2 * b1) / diff;
+break;
+case 2:
+diff = (a1 * c2 - a2 * c1);
+if (Math.abs (diff) < 0.01) return null;
+x = (c1 * d2 - c2 * d1) / diff;
+y = 0;
+z = (a2 * d1 - d2 * a1) / diff;
+break;
+case 3:
+default:
+diff = (a1 * b2 - a2 * b1);
+if (Math.abs (diff) < 0.01) return null;
+x = (b1 * d2 - b2 * d1) / diff;
+y = (a2 * d1 - d2 * a1) / diff;
+z = 0;
+}
+var list =  new javajs.util.Lst ();
+list.addLast (javajs.util.P3.new3 (x, y, z));
+nxn.normalize ();
+list.addLast (nxn);
+return list;
+}, "javajs.util.P4,javajs.util.P4");
+c$.getIntersection = Clazz.defineMethod (c$, "getIntersection", 
+function (pt1, v, plane, ptRet, tempNorm, vTemp) {
+javajs.util.Measure.getPlaneProjection (pt1, plane, ptRet, tempNorm);
+tempNorm.set (plane.x, plane.y, plane.z);
+tempNorm.normalize ();
+if (v == null) v = javajs.util.V3.newV (tempNorm);
+var l_dot_n = v.dot (tempNorm);
+if (Math.abs (l_dot_n) < 0.01) return null;
+vTemp.sub2 (ptRet, pt1);
+ptRet.scaleAdd2 (vTemp.dot (tempNorm) / l_dot_n, v, pt1);
+return ptRet;
+}, "javajs.util.P3,javajs.util.V3,javajs.util.P4,javajs.util.P3,javajs.util.V3,javajs.util.V3");
+c$.calculateQuaternionRotation = Clazz.defineMethod (c$, "calculateQuaternionRotation", 
+function (centerAndPoints, retStddev) {
+retStddev[1] = NaN;
+var q =  new javajs.util.Quat ();
+if (centerAndPoints[0].length == 1 || centerAndPoints[0].length != centerAndPoints[1].length) return q;
+var n = centerAndPoints[0].length - 1;
+if (n < 2) return q;
+var Sxx = 0;
+var Sxy = 0;
+var Sxz = 0;
+var Syx = 0;
+var Syy = 0;
+var Syz = 0;
+var Szx = 0;
+var Szy = 0;
+var Szz = 0;
+var ptA =  new javajs.util.P3 ();
+var ptB =  new javajs.util.P3 ();
+for (var i = n + 1; --i >= 1; ) {
+var aij = centerAndPoints[0][i];
+var bij = centerAndPoints[1][i];
+ptA.sub2 (aij, centerAndPoints[0][0]);
+ptB.sub2 (bij, centerAndPoints[0][1]);
+Sxx += ptA.x * ptB.x;
+Sxy += ptA.x * ptB.y;
+Sxz += ptA.x * ptB.z;
+Syx += ptA.y * ptB.x;
+Syy += ptA.y * ptB.y;
+Syz += ptA.y * ptB.z;
+Szx += ptA.z * ptB.x;
+Szy += ptA.z * ptB.y;
+Szz += ptA.z * ptB.z;
+}
+retStddev[0] = javajs.util.Measure.getRmsd (centerAndPoints, q);
+var N =  Clazz.newDoubleArray (4, 4, 0);
+N[0][0] = Sxx + Syy + Szz;
+N[0][1] = N[1][0] = Syz - Szy;
+N[0][2] = N[2][0] = Szx - Sxz;
+N[0][3] = N[3][0] = Sxy - Syx;
+N[1][1] = Sxx - Syy - Szz;
+N[1][2] = N[2][1] = Sxy + Syx;
+N[1][3] = N[3][1] = Szx + Sxz;
+N[2][2] = -Sxx + Syy - Szz;
+N[2][3] = N[3][2] = Syz + Szy;
+N[3][3] = -Sxx - Syy + Szz;
+var v = (javajs.api.Interface.getInterface ("javajs.util.Eigen")).setM (N).getEigenvectorsFloatTransposed ()[3];
+q = javajs.util.Quat.newP4 (javajs.util.P4.new4 (v[1], v[2], v[3], v[0]));
+retStddev[1] = javajs.util.Measure.getRmsd (centerAndPoints, q);
+return q;
+}, "~A,~A");
+c$.getTransformMatrix4 = Clazz.defineMethod (c$, "getTransformMatrix4", 
+function (ptsA, ptsB, m, centerA) {
+var cptsA = javajs.util.Measure.getCenterAndPoints (ptsA);
+var cptsB = javajs.util.Measure.getCenterAndPoints (ptsB);
+var retStddev =  Clazz.newFloatArray (2, 0);
+var q = javajs.util.Measure.calculateQuaternionRotation ( Clazz.newArray (-1, [cptsA, cptsB]), retStddev);
+var r = q.getMatrix ();
+if (centerA == null) r.rotate (cptsA[0]);
+ else centerA.setT (cptsA[0]);
+var t = javajs.util.V3.newVsub (cptsB[0], cptsA[0]);
+m.setMV (r, t);
+return retStddev[1];
+}, "javajs.util.Lst,javajs.util.Lst,javajs.util.M4,javajs.util.P3");
+c$.getCenterAndPoints = Clazz.defineMethod (c$, "getCenterAndPoints", 
+function (vPts) {
+var n = vPts.size ();
+var pts =  new Array (n + 1);
+pts[0] =  new javajs.util.P3 ();
+if (n > 0) {
+for (var i = 0; i < n; i++) {
+pts[0].add (pts[i + 1] = vPts.get (i));
+}
+pts[0].scale (1 / n);
+}return pts;
+}, "javajs.util.Lst");
+c$.getRmsd = Clazz.defineMethod (c$, "getRmsd", 
+function (centerAndPoints, q) {
+var sum2 = 0;
+var ptsA = centerAndPoints[0];
+var ptsB = centerAndPoints[1];
+var cA = ptsA[0];
+var cB = ptsB[0];
+var n = ptsA.length - 1;
+var ptAnew =  new javajs.util.P3 ();
+for (var i = n + 1; --i >= 1; ) {
+ptAnew.sub2 (ptsA[i], cA);
+q.transform2 (ptAnew, ptAnew).add (cB);
+sum2 += ptAnew.distanceSquared (ptsB[i]);
+}
+return Math.sqrt (sum2 / n);
+}, "~A,javajs.util.Quat");
+Clazz.defineStatics (c$,
+"radiansPerDegree", (0.017453292519943295));
+c$.axisY = c$.prototype.axisY = javajs.util.V3.new3 (0, 1, 0);
+});
index 962e240..1ff4f42 100644 (file)
Binary files a/bin/javajs/util/OC.class and b/bin/javajs/util/OC.class differ
index 76f148a..f720165 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["java.io.OutputStream"], "javajs.util.OC", ["java.io.BufferedWriter", "$.ByteArrayOutputStream", "$.OutputStreamWriter", "javajs.util.Base64", "$.SB"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.bytePoster = null;\r
-this.fileName = null;\r
-this.bw = null;\r
-this.isLocalFile = false;\r
-this.byteCount = 0;\r
-this.isCanceled = false;\r
-this.closed = false;\r
-this.os = null;\r
-this.sb = null;\r
-this.type = null;\r
-this.$isBase64 = false;\r
-this.os0 = null;\r
-this.bytes = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "OC", java.io.OutputStream);\r
-Clazz.defineMethod (c$, "setParams", \r
-function (bytePoster, fileName, asWriter, os) {\r
-this.bytePoster = bytePoster;\r
-this.fileName = fileName;\r
-this.$isBase64 = ";base64,".equals (fileName);\r
-if (this.$isBase64) {\r
-fileName = null;\r
-this.os0 = os;\r
-os = null;\r
-}this.os = os;\r
-this.isLocalFile = (fileName != null && !javajs.util.OC.isRemote (fileName));\r
-if (asWriter && !this.$isBase64 && os != null) this.bw =  new java.io.BufferedWriter ( new java.io.OutputStreamWriter (os));\r
-return this;\r
-}, "javajs.api.BytePoster,~S,~B,java.io.OutputStream");\r
-Clazz.defineMethod (c$, "setBytes", \r
-function (b) {\r
-this.bytes = b;\r
-return this;\r
-}, "~A");\r
-Clazz.defineMethod (c$, "getFileName", \r
-function () {\r
-return this.fileName;\r
-});\r
-Clazz.defineMethod (c$, "getName", \r
-function () {\r
-return (this.fileName == null ? null : this.fileName.substring (this.fileName.lastIndexOf ("/") + 1));\r
-});\r
-Clazz.defineMethod (c$, "getByteCount", \r
-function () {\r
-return this.byteCount;\r
-});\r
-Clazz.defineMethod (c$, "setType", \r
-function (type) {\r
-this.type = type;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getType", \r
-function () {\r
-return this.type;\r
-});\r
-Clazz.defineMethod (c$, "append", \r
-function (s) {\r
-try {\r
-if (this.bw != null) {\r
-this.bw.write (s);\r
-} else if (this.os == null) {\r
-if (this.sb == null) this.sb =  new javajs.util.SB ();\r
-this.sb.append (s);\r
-} else {\r
-var b = s.getBytes ();\r
-this.os.write (b, 0, b.length);\r
-this.byteCount += b.length;\r
-return this;\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.byteCount += s.length;\r
-return this;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "reset", \r
-function () {\r
-this.sb = null;\r
-this.initOS ();\r
-});\r
-Clazz.defineMethod (c$, "initOS", \r
-($fz = function () {\r
-if (this.sb != null) {\r
-var s = this.sb.toString ();\r
-this.reset ();\r
-this.append (s);\r
-return;\r
-}try {\r
-{\r
-this.os = null;\r
-}if (this.os == null) this.os =  new java.io.ByteArrayOutputStream ();\r
-if (this.bw != null) {\r
-this.bw.close ();\r
-this.bw =  new java.io.BufferedWriter ( new java.io.OutputStreamWriter (this.os));\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println (e.toString ());\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.byteCount = 0;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.overrideMethod (c$, "write", \r
-function (buf, i, len) {\r
-if (this.os == null) this.initOS ();\r
-try {\r
-this.os.write (buf, i, len);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-this.byteCount += len;\r
-}, "~A,~N,~N");\r
-Clazz.defineMethod (c$, "writeByteAsInt", \r
-function (b) {\r
-if (this.os == null) this.initOS ();\r
-{\r
-this.os.writeByteAsInt(b);\r
-}this.byteCount++;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "cancel", \r
-function () {\r
-this.isCanceled = true;\r
-this.closeChannel ();\r
-});\r
-Clazz.defineMethod (c$, "closeChannel", \r
-function () {\r
-if (this.closed) return null;\r
-try {\r
-if (this.bw != null) {\r
-this.bw.flush ();\r
-this.bw.close ();\r
-} else if (this.os != null) {\r
-this.os.flush ();\r
-this.os.close ();\r
-}if (this.os0 != null && this.isCanceled) {\r
-this.os0.flush ();\r
-this.os0.close ();\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (this.isCanceled) {\r
-this.closed = true;\r
-return null;\r
-}if (this.fileName == null) {\r
-if (this.$isBase64) {\r
-var s = this.getBase64 ();\r
-if (this.os0 != null) {\r
-this.os = this.os0;\r
-this.append (s);\r
-}this.sb =  new javajs.util.SB ();\r
-this.sb.append (s);\r
-this.$isBase64 = false;\r
-return this.closeChannel ();\r
-}return (this.sb == null ? null : this.sb.toString ());\r
-}this.closed = true;\r
-var jmol = null;\r
-var _function = null;\r
-{\r
-jmol = Jmol; _function = (typeof this.fileName == "function" ?\r
-this.fileName : null);\r
-}if (jmol != null) {\r
-var data = (this.sb == null ? this.toByteArray () : this.sb.toString ());\r
-if (_function == null) jmol._doAjax (this.fileName, null, data);\r
- else jmol._apply (this.fileName, data);\r
-}return null;\r
-});\r
-Clazz.defineMethod (c$, "isBase64", \r
-function () {\r
-return this.$isBase64;\r
-});\r
-Clazz.defineMethod (c$, "getBase64", \r
-function () {\r
-return javajs.util.Base64.getBase64 (this.toByteArray ()).toString ();\r
-});\r
-Clazz.defineMethod (c$, "toByteArray", \r
-function () {\r
-return (this.bytes != null ? this.bytes : Clazz.instanceOf (this.os, java.io.ByteArrayOutputStream) ? (this.os).toByteArray () : null);\r
-});\r
-Clazz.defineMethod (c$, "close", \r
-function () {\r
-this.closeChannel ();\r
-});\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-if (this.bw != null) try {\r
-this.bw.flush ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (this.sb != null) return this.closeChannel ();\r
-return this.byteCount + " bytes";\r
-});\r
-Clazz.defineMethod (c$, "postByteArray", \r
-($fz = function () {\r
-var bytes = (this.sb == null ? this.toByteArray () : this.sb.toString ().getBytes ());\r
-return this.bytePoster.postByteArray (this.fileName, bytes);\r
-}, $fz.isPrivate = true, $fz));\r
-c$.isRemote = Clazz.defineMethod (c$, "isRemote", \r
-function (fileName) {\r
-if (fileName == null) return false;\r
-var itype = javajs.util.OC.urlTypeIndex (fileName);\r
-return (itype >= 0 && itype != 4);\r
-}, "~S");\r
-c$.isLocal = Clazz.defineMethod (c$, "isLocal", \r
-function (fileName) {\r
-if (fileName == null) return false;\r
-var itype = javajs.util.OC.urlTypeIndex (fileName);\r
-return (itype < 0 || itype == 4);\r
-}, "~S");\r
-c$.urlTypeIndex = Clazz.defineMethod (c$, "urlTypeIndex", \r
-function (name) {\r
-if (name == null) return -2;\r
-for (var i = 0; i < javajs.util.OC.urlPrefixes.length; ++i) {\r
-if (name.startsWith (javajs.util.OC.urlPrefixes[i])) {\r
-return i;\r
-}}\r
-return -1;\r
-}, "~S");\r
-Clazz.defineStatics (c$,\r
-"urlPrefixes",  Clazz.newArray (-1, ["http:", "https:", "sftp:", "ftp:", "file:"]),\r
-"URL_LOCAL", 4);\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["java.io.OutputStream"], "javajs.util.OC", ["java.io.BufferedWriter", "$.ByteArrayOutputStream", "$.OutputStreamWriter", "javajs.util.Base64", "$.SB"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.bytePoster = null;
+this.fileName = null;
+this.bw = null;
+this.isLocalFile = false;
+this.byteCount = 0;
+this.isCanceled = false;
+this.closed = false;
+this.os = null;
+this.sb = null;
+this.type = null;
+this.$isBase64 = false;
+this.os0 = null;
+this.bytes = null;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "OC", java.io.OutputStream);
+Clazz.defineMethod (c$, "setParams", 
+function (bytePoster, fileName, asWriter, os) {
+this.bytePoster = bytePoster;
+this.fileName = fileName;
+this.$isBase64 = ";base64,".equals (fileName);
+if (this.$isBase64) {
+fileName = null;
+this.os0 = os;
+os = null;
+}this.os = os;
+this.isLocalFile = (fileName != null && !javajs.util.OC.isRemote (fileName));
+if (asWriter && !this.$isBase64 && os != null) this.bw =  new java.io.BufferedWriter ( new java.io.OutputStreamWriter (os));
+return this;
+}, "javajs.api.BytePoster,~S,~B,java.io.OutputStream");
+Clazz.defineMethod (c$, "setBytes", 
+function (b) {
+this.bytes = b;
+return this;
+}, "~A");
+Clazz.defineMethod (c$, "getFileName", 
+function () {
+return this.fileName;
+});
+Clazz.defineMethod (c$, "getName", 
+function () {
+return (this.fileName == null ? null : this.fileName.substring (this.fileName.lastIndexOf ("/") + 1));
+});
+Clazz.defineMethod (c$, "getByteCount", 
+function () {
+return this.byteCount;
+});
+Clazz.defineMethod (c$, "setType", 
+function (type) {
+this.type = type;
+}, "~S");
+Clazz.defineMethod (c$, "getType", 
+function () {
+return this.type;
+});
+Clazz.defineMethod (c$, "append", 
+function (s) {
+try {
+if (this.bw != null) {
+this.bw.write (s);
+} else if (this.os == null) {
+if (this.sb == null) this.sb =  new javajs.util.SB ();
+this.sb.append (s);
+} else {
+var b = s.getBytes ();
+this.os.write (b, 0, b.length);
+this.byteCount += b.length;
+return this;
+}} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+} else {
+throw e;
+}
+}
+this.byteCount += s.length;
+return this;
+}, "~S");
+Clazz.defineMethod (c$, "reset", 
+function () {
+this.sb = null;
+this.initOS ();
+});
+Clazz.defineMethod (c$, "initOS", 
+($fz = function () {
+if (this.sb != null) {
+var s = this.sb.toString ();
+this.reset ();
+this.append (s);
+return;
+}try {
+{
+this.os = null;
+}if (this.os == null) this.os =  new java.io.ByteArrayOutputStream ();
+if (this.bw != null) {
+this.bw.close ();
+this.bw =  new java.io.BufferedWriter ( new java.io.OutputStreamWriter (this.os));
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println (e.toString ());
+} else {
+throw e;
+}
+}
+this.byteCount = 0;
+}, $fz.isPrivate = true, $fz));
+Clazz.overrideMethod (c$, "write", 
+function (buf, i, len) {
+if (this.os == null) this.initOS ();
+try {
+this.os.write (buf, i, len);
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+} else {
+throw e;
+}
+}
+this.byteCount += len;
+}, "~A,~N,~N");
+Clazz.defineMethod (c$, "writeByteAsInt", 
+function (b) {
+if (this.os == null) this.initOS ();
+{
+this.os.writeByteAsInt(b);
+}this.byteCount++;
+}, "~N");
+Clazz.defineMethod (c$, "cancel", 
+function () {
+this.isCanceled = true;
+this.closeChannel ();
+});
+Clazz.defineMethod (c$, "closeChannel", 
+function () {
+if (this.closed) return null;
+try {
+if (this.bw != null) {
+this.bw.flush ();
+this.bw.close ();
+} else if (this.os != null) {
+this.os.flush ();
+this.os.close ();
+}if (this.os0 != null && this.isCanceled) {
+this.os0.flush ();
+this.os0.close ();
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+if (this.isCanceled) {
+this.closed = true;
+return null;
+}if (this.fileName == null) {
+if (this.$isBase64) {
+var s = this.getBase64 ();
+if (this.os0 != null) {
+this.os = this.os0;
+this.append (s);
+}this.sb =  new javajs.util.SB ();
+this.sb.append (s);
+this.$isBase64 = false;
+return this.closeChannel ();
+}return (this.sb == null ? null : this.sb.toString ());
+}this.closed = true;
+var jmol = null;
+var _function = null;
+{
+jmol = Jmol; _function = (typeof this.fileName == "function" ?
+this.fileName : null);
+}if (jmol != null) {
+var data = (this.sb == null ? this.toByteArray () : this.sb.toString ());
+if (_function == null) jmol._doAjax (this.fileName, null, data);
+ else jmol._apply (this.fileName, data);
+}return null;
+});
+Clazz.defineMethod (c$, "isBase64", 
+function () {
+return this.$isBase64;
+});
+Clazz.defineMethod (c$, "getBase64", 
+function () {
+return javajs.util.Base64.getBase64 (this.toByteArray ()).toString ();
+});
+Clazz.defineMethod (c$, "toByteArray", 
+function () {
+return (this.bytes != null ? this.bytes : Clazz.instanceOf (this.os, java.io.ByteArrayOutputStream) ? (this.os).toByteArray () : null);
+});
+Clazz.defineMethod (c$, "close", 
+function () {
+this.closeChannel ();
+});
+Clazz.overrideMethod (c$, "toString", 
+function () {
+if (this.bw != null) try {
+this.bw.flush ();
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+} else {
+throw e;
+}
+}
+if (this.sb != null) return this.closeChannel ();
+return this.byteCount + " bytes";
+});
+Clazz.defineMethod (c$, "postByteArray", 
+($fz = function () {
+var bytes = (this.sb == null ? this.toByteArray () : this.sb.toString ().getBytes ());
+return this.bytePoster.postByteArray (this.fileName, bytes);
+}, $fz.isPrivate = true, $fz));
+c$.isRemote = Clazz.defineMethod (c$, "isRemote", 
+function (fileName) {
+if (fileName == null) return false;
+var itype = javajs.util.OC.urlTypeIndex (fileName);
+return (itype >= 0 && itype != 4);
+}, "~S");
+c$.isLocal = Clazz.defineMethod (c$, "isLocal", 
+function (fileName) {
+if (fileName == null) return false;
+var itype = javajs.util.OC.urlTypeIndex (fileName);
+return (itype < 0 || itype == 4);
+}, "~S");
+c$.urlTypeIndex = Clazz.defineMethod (c$, "urlTypeIndex", 
+function (name) {
+if (name == null) return -2;
+for (var i = 0; i < javajs.util.OC.urlPrefixes.length; ++i) {
+if (name.startsWith (javajs.util.OC.urlPrefixes[i])) {
+return i;
+}}
+return -1;
+}, "~S");
+Clazz.defineStatics (c$,
+"urlPrefixes",  Clazz.newArray (-1, ["http:", "https:", "sftp:", "ftp:", "file:"]),
+"URL_LOCAL", 4);
+});
index cc292cd..b44211d 100644 (file)
@@ -1,26 +1,26 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.util.T3"], "javajs.util.P3", null, function () {\r
-c$ = Clazz.declareType (javajs.util, "P3", javajs.util.T3);\r
-c$.newP = Clazz.defineMethod (c$, "newP", \r
-function (t) {\r
-var p =  new javajs.util.P3 ();\r
-p.x = t.x;\r
-p.y = t.y;\r
-p.z = t.z;\r
-return p;\r
-}, "javajs.util.T3");\r
-c$.getUnlikely = Clazz.defineMethod (c$, "getUnlikely", \r
-function () {\r
-return (javajs.util.P3.unlikely == null ? javajs.util.P3.unlikely = javajs.util.P3.new3 (3.141592653589793, 2.718281828459045, (8.539734222673566)) : javajs.util.P3.unlikely);\r
-});\r
-c$.new3 = Clazz.defineMethod (c$, "new3", \r
-function (x, y, z) {\r
-var p =  new javajs.util.P3 ();\r
-p.x = x;\r
-p.y = y;\r
-p.z = z;\r
-return p;\r
-}, "~N,~N,~N");\r
-Clazz.defineStatics (c$,\r
-"unlikely", null);\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.util.T3"], "javajs.util.P3", null, function () {
+c$ = Clazz.declareType (javajs.util, "P3", javajs.util.T3);
+c$.newP = Clazz.defineMethod (c$, "newP", 
+function (t) {
+var p =  new javajs.util.P3 ();
+p.x = t.x;
+p.y = t.y;
+p.z = t.z;
+return p;
+}, "javajs.util.T3");
+c$.getUnlikely = Clazz.defineMethod (c$, "getUnlikely", 
+function () {
+return (javajs.util.P3.unlikely == null ? javajs.util.P3.unlikely = javajs.util.P3.new3 (3.141592653589793, 2.718281828459045, (8.539734222673566)) : javajs.util.P3.unlikely);
+});
+c$.new3 = Clazz.defineMethod (c$, "new3", 
+function (x, y, z) {
+var p =  new javajs.util.P3 ();
+p.x = x;
+p.y = y;
+p.z = z;
+return p;
+}, "~N,~N,~N");
+Clazz.defineStatics (c$,
+"unlikely", null);
+});
index 4888909..e4e31b5 100644 (file)
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.util.T3i"], "javajs.util.P3i", null, function () {\r
-c$ = Clazz.declareType (javajs.util, "P3i", javajs.util.T3i);\r
-c$.new3 = Clazz.defineMethod (c$, "new3", \r
-function (x, y, z) {\r
-var pt =  new javajs.util.P3i ();\r
-pt.x = x;\r
-pt.y = y;\r
-pt.z = z;\r
-return pt;\r
-}, "~N,~N,~N");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.util.T3i"], "javajs.util.P3i", null, function () {
+c$ = Clazz.declareType (javajs.util, "P3i", javajs.util.T3i);
+c$.new3 = Clazz.defineMethod (c$, "new3", 
+function (x, y, z) {
+var pt =  new javajs.util.P3i ();
+pt.x = x;
+pt.y = y;
+pt.z = z;
+return pt;
+}, "~N,~N,~N");
+});
index c317cd6..2afde3c 100644 (file)
@@ -1,24 +1,24 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.util.T4"], "javajs.util.P4", null, function () {\r
-c$ = Clazz.declareType (javajs.util, "P4", javajs.util.T4);\r
-c$.new4 = Clazz.defineMethod (c$, "new4", \r
-function (x, y, z, w) {\r
-var pt =  new javajs.util.P4 ();\r
-pt.set4 (x, y, z, w);\r
-return pt;\r
-}, "~N,~N,~N,~N");\r
-c$.newPt = Clazz.defineMethod (c$, "newPt", \r
-function (value) {\r
-var pt =  new javajs.util.P4 ();\r
-pt.set4 (value.x, value.y, value.z, value.w);\r
-return pt;\r
-}, "javajs.util.P4");\r
-Clazz.defineMethod (c$, "distance4", \r
-function (p1) {\r
-var dx = this.x - p1.x;\r
-var dy = this.y - p1.y;\r
-var dz = this.z - p1.z;\r
-var dw = this.w - p1.w;\r
-return Math.sqrt (dx * dx + dy * dy + dz * dz + dw * dw);\r
-}, "javajs.util.P4");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.util.T4"], "javajs.util.P4", null, function () {
+c$ = Clazz.declareType (javajs.util, "P4", javajs.util.T4);
+c$.new4 = Clazz.defineMethod (c$, "new4", 
+function (x, y, z, w) {
+var pt =  new javajs.util.P4 ();
+pt.set4 (x, y, z, w);
+return pt;
+}, "~N,~N,~N,~N");
+c$.newPt = Clazz.defineMethod (c$, "newPt", 
+function (value) {
+var pt =  new javajs.util.P4 ();
+pt.set4 (value.x, value.y, value.z, value.w);
+return pt;
+}, "javajs.util.P4");
+Clazz.defineMethod (c$, "distance4", 
+function (p1) {
+var dx = this.x - p1.x;
+var dy = this.y - p1.y;
+var dz = this.z - p1.z;
+var dw = this.w - p1.w;
+return Math.sqrt (dx * dx + dy * dy + dz * dz + dw * dw);
+}, "javajs.util.P4");
+});
index c3955d6..280974d 100644 (file)
Binary files a/bin/javajs/util/PT.class and b/bin/javajs/util/PT.class differ
index b20715c..2bfe06d 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (null, "javajs.util.PT", ["java.lang.Boolean", "$.Double", "$.Float", "$.Number", "java.util.Map", "javajs.api.JSONEncodable", "javajs.util.AU", "$.DF", "$.Lst", "$.M34", "$.M4", "$.SB"], function () {\r
-c$ = Clazz.declareType (javajs.util, "PT");\r
-c$.parseInt = Clazz.defineMethod (c$, "parseInt", \r
-function (str) {\r
-return javajs.util.PT.parseIntNext (str,  Clazz.newIntArray (-1, [0]));\r
-}, "~S");\r
-c$.parseIntNext = Clazz.defineMethod (c$, "parseIntNext", \r
-function (str, next) {\r
-var cch = str.length;\r
-if (next[0] < 0 || next[0] >= cch) return -2147483648;\r
-return javajs.util.PT.parseIntChecked (str, cch, next);\r
-}, "~S,~A");\r
-c$.parseIntChecked = Clazz.defineMethod (c$, "parseIntChecked", \r
-function (str, ichMax, next) {\r
-var digitSeen = false;\r
-var value = 0;\r
-var ich = next[0];\r
-if (ich < 0) return -2147483648;\r
-var ch;\r
-while (ich < ichMax && javajs.util.PT.isWhiteSpace (str, ich)) ++ich;\r
-\r
-var negative = false;\r
-if (ich < ichMax && str.charCodeAt (ich) == 45) {\r
-negative = true;\r
-++ich;\r
-}while (ich < ichMax && (ch = str.charCodeAt (ich)) >= 48 && ch <= 57) {\r
-value = value * 10 + (ch - 48);\r
-digitSeen = true;\r
-++ich;\r
-}\r
-if (!digitSeen) value = -2147483648;\r
- else if (negative) value = -value;\r
-next[0] = ich;\r
-return value;\r
-}, "~S,~N,~A");\r
-c$.isWhiteSpace = Clazz.defineMethod (c$, "isWhiteSpace", \r
-function (str, ich) {\r
-var ch;\r
-return (ich >= 0 && ((ch = str.charAt (ich)) == ' ' || ch == '\t' || ch == '\n'));\r
-}, "~S,~N");\r
-c$.parseFloatChecked = Clazz.defineMethod (c$, "parseFloatChecked", \r
-function (str, ichMax, next, isStrict) {\r
-var digitSeen = false;\r
-var ich = next[0];\r
-if (isStrict && str.indexOf ('\n') != str.lastIndexOf ('\n')) return NaN;\r
-while (ich < ichMax && javajs.util.PT.isWhiteSpace (str, ich)) ++ich;\r
-\r
-var negative = false;\r
-if (ich < ichMax && str.charAt (ich) == '-') {\r
-++ich;\r
-negative = true;\r
-}var ch = 0;\r
-var ival = 0;\r
-var ival2 = 0;\r
-while (ich < ichMax && (ch = str.charCodeAt (ich)) >= 48 && ch <= 57) {\r
-ival = (ival * 10) + (ch - 48) * 1;\r
-++ich;\r
-digitSeen = true;\r
-}\r
-var isDecimal = false;\r
-var iscale = 0;\r
-var nzero = (ival == 0 ? -1 : 0);\r
-if (ch == 46) {\r
-isDecimal = true;\r
-while (++ich < ichMax && (ch = str.charCodeAt (ich)) >= 48 && ch <= 57) {\r
-digitSeen = true;\r
-if (nzero < 0) {\r
-if (ch == 48) {\r
-nzero--;\r
-continue;\r
-}nzero = -nzero;\r
-}if (iscale < javajs.util.PT.decimalScale.length) {\r
-ival2 = (ival2 * 10) + (ch - 48) * 1;\r
-iscale++;\r
-}}\r
-}var value;\r
-if (!digitSeen) {\r
-value = NaN;\r
-} else if (ival2 > 0) {\r
-value = ival2 * javajs.util.PT.decimalScale[iscale - 1];\r
-if (nzero > 1) {\r
-if (nzero - 2 < javajs.util.PT.decimalScale.length) {\r
-value *= javajs.util.PT.decimalScale[nzero - 2];\r
-} else {\r
-value *= Math.pow (10, 1 - nzero);\r
-}} else {\r
-value += ival;\r
-}} else {\r
-value = ival;\r
-}var isExponent = false;\r
-if (ich < ichMax && (ch == 69 || ch == 101 || ch == 68)) {\r
-isExponent = true;\r
-if (++ich >= ichMax) return NaN;\r
-ch = str.charCodeAt (ich);\r
-if ((ch == 43) && (++ich >= ichMax)) return NaN;\r
-next[0] = ich;\r
-var exponent = javajs.util.PT.parseIntChecked (str, ichMax, next);\r
-if (exponent == -2147483648) return NaN;\r
-if (exponent > 0 && exponent <= javajs.util.PT.tensScale.length) value *= javajs.util.PT.tensScale[exponent - 1];\r
- else if (exponent < 0 && -exponent <= javajs.util.PT.decimalScale.length) value *= javajs.util.PT.decimalScale[-exponent - 1];\r
- else if (exponent != 0) value *= Math.pow (10, exponent);\r
-} else {\r
-next[0] = ich;\r
-}if (negative) value = -value;\r
-if (value == Infinity) value = 3.4028235E38;\r
-return (!isStrict || (!isExponent || isDecimal) && javajs.util.PT.checkTrailingText (str, next[0], ichMax) ? value : NaN);\r
-}, "~S,~N,~A,~B");\r
-c$.checkTrailingText = Clazz.defineMethod (c$, "checkTrailingText", \r
-function (str, ich, ichMax) {\r
-var ch;\r
-while (ich < ichMax && (javajs.util.PT.isWhitespace (ch = str.charAt (ich)) || ch == ';')) ++ich;\r
-\r
-return (ich == ichMax);\r
-}, "~S,~N,~N");\r
-c$.parseFloatArray = Clazz.defineMethod (c$, "parseFloatArray", \r
-function (str) {\r
-return javajs.util.PT.parseFloatArrayNext (str,  Clazz.newIntArray (1, 0), null, null, null);\r
-}, "~S");\r
-c$.parseFloatArrayInfested = Clazz.defineMethod (c$, "parseFloatArrayInfested", \r
-function (tokens, data) {\r
-var len = data.length;\r
-var nTokens = tokens.length;\r
-var n = 0;\r
-var max = 0;\r
-for (var i = 0; i >= 0 && i < len && n < nTokens; i++) {\r
-var f;\r
-while (Float.isNaN (f = javajs.util.PT.parseFloat (tokens[n++])) && n < nTokens) {\r
-}\r
-if (!Float.isNaN (f)) data[(max = i)] = f;\r
-if (n == nTokens) break;\r
-}\r
-return max + 1;\r
-}, "~A,~A");\r
-c$.parseFloatArrayNext = Clazz.defineMethod (c$, "parseFloatArrayNext", \r
-function (str, next, f, strStart, strEnd) {\r
-var n = 0;\r
-var pt = next[0];\r
-if (pt >= 0) {\r
-if (strStart != null) {\r
-var p = str.indexOf (strStart, pt);\r
-if (p >= 0) next[0] = p + strStart.length;\r
-}str = str.substring (next[0]);\r
-pt = (strEnd == null ? -1 : str.indexOf (strEnd));\r
-if (pt < 0) pt = str.length;\r
- else str = str.substring (0, pt);\r
-next[0] += pt + 1;\r
-var tokens = javajs.util.PT.getTokens (str);\r
-if (f == null) f =  Clazz.newFloatArray (tokens.length, 0);\r
-n = javajs.util.PT.parseFloatArrayInfested (tokens, f);\r
-}if (f == null) return  Clazz.newFloatArray (0, 0);\r
-for (var i = n; i < f.length; i++) f[i] = NaN;\r
-\r
-return f;\r
-}, "~S,~A,~A,~S,~S");\r
-c$.parseFloatRange = Clazz.defineMethod (c$, "parseFloatRange", \r
-function (str, ichMax, next) {\r
-var cch = str.length;\r
-if (ichMax > cch) ichMax = cch;\r
-if (next[0] < 0 || next[0] >= ichMax) return NaN;\r
-return javajs.util.PT.parseFloatChecked (str, ichMax, next, false);\r
-}, "~S,~N,~A");\r
-c$.parseFloatNext = Clazz.defineMethod (c$, "parseFloatNext", \r
-function (str, next) {\r
-var cch = (str == null ? -1 : str.length);\r
-return (next[0] < 0 || next[0] >= cch ? NaN : javajs.util.PT.parseFloatChecked (str, cch, next, false));\r
-}, "~S,~A");\r
-c$.parseFloatStrict = Clazz.defineMethod (c$, "parseFloatStrict", \r
-function (str) {\r
-var cch = str.length;\r
-if (cch == 0) return NaN;\r
-return javajs.util.PT.parseFloatChecked (str, cch,  Clazz.newIntArray (-1, [0]), true);\r
-}, "~S");\r
-c$.parseFloat = Clazz.defineMethod (c$, "parseFloat", \r
-function (str) {\r
-return javajs.util.PT.parseFloatNext (str,  Clazz.newIntArray (-1, [0]));\r
-}, "~S");\r
-c$.parseIntRadix = Clazz.defineMethod (c$, "parseIntRadix", \r
-function (s, i) {\r
-{\r
-return Integer.parseIntRadix(s, i);\r
-}}, "~S,~N");\r
-c$.getTokens = Clazz.defineMethod (c$, "getTokens", \r
-function (line) {\r
-return javajs.util.PT.getTokensAt (line, 0);\r
-}, "~S");\r
-c$.parseToken = Clazz.defineMethod (c$, "parseToken", \r
-function (str) {\r
-return javajs.util.PT.parseTokenNext (str,  Clazz.newIntArray (-1, [0]));\r
-}, "~S");\r
-c$.parseTrimmed = Clazz.defineMethod (c$, "parseTrimmed", \r
-function (str) {\r
-return javajs.util.PT.parseTrimmedRange (str, 0, str.length);\r
-}, "~S");\r
-c$.parseTrimmedAt = Clazz.defineMethod (c$, "parseTrimmedAt", \r
-function (str, ichStart) {\r
-return javajs.util.PT.parseTrimmedRange (str, ichStart, str.length);\r
-}, "~S,~N");\r
-c$.parseTrimmedRange = Clazz.defineMethod (c$, "parseTrimmedRange", \r
-function (str, ichStart, ichMax) {\r
-var cch = str.length;\r
-if (ichMax < cch) cch = ichMax;\r
-if (cch < ichStart) return "";\r
-return javajs.util.PT.parseTrimmedChecked (str, ichStart, cch);\r
-}, "~S,~N,~N");\r
-c$.getTokensAt = Clazz.defineMethod (c$, "getTokensAt", \r
-function (line, ich) {\r
-if (line == null) return null;\r
-var cchLine = line.length;\r
-if (ich < 0 || ich > cchLine) return null;\r
-var tokenCount = javajs.util.PT.countTokens (line, ich);\r
-var tokens =  new Array (tokenCount);\r
-var next =  Clazz.newIntArray (1, 0);\r
-next[0] = ich;\r
-for (var i = 0; i < tokenCount; ++i) tokens[i] = javajs.util.PT.parseTokenChecked (line, cchLine, next);\r
-\r
-return tokens;\r
-}, "~S,~N");\r
-c$.countChar = Clazz.defineMethod (c$, "countChar", \r
-function (line, c) {\r
-var tokenCount = 0;\r
-var pt = -1;\r
-while ((pt = line.indexOf (c, pt + 1)) >= 0) tokenCount++;\r
-\r
-return tokenCount;\r
-}, "~S,~S");\r
-c$.countTokens = Clazz.defineMethod (c$, "countTokens", \r
-function (line, ich) {\r
-var tokenCount = 0;\r
-if (line != null) {\r
-var ichMax = line.length;\r
-while (true) {\r
-while (ich < ichMax && javajs.util.PT.isWhiteSpace (line, ich)) ++ich;\r
-\r
-if (ich == ichMax) break;\r
-++tokenCount;\r
-do {\r
-++ich;\r
-} while (ich < ichMax && !javajs.util.PT.isWhiteSpace (line, ich));\r
-}\r
-}return tokenCount;\r
-}, "~S,~N");\r
-c$.parseTokenNext = Clazz.defineMethod (c$, "parseTokenNext", \r
-function (str, next) {\r
-var cch = str.length;\r
-return (next[0] < 0 || next[0] >= cch ? null : javajs.util.PT.parseTokenChecked (str, cch, next));\r
-}, "~S,~A");\r
-c$.parseTokenRange = Clazz.defineMethod (c$, "parseTokenRange", \r
-function (str, ichMax, next) {\r
-var cch = str.length;\r
-if (ichMax > cch) ichMax = cch;\r
-return (next[0] < 0 || next[0] >= ichMax ? null : javajs.util.PT.parseTokenChecked (str, ichMax, next));\r
-}, "~S,~N,~A");\r
-c$.parseTokenChecked = Clazz.defineMethod (c$, "parseTokenChecked", \r
-function (str, ichMax, next) {\r
-var ich = next[0];\r
-while (ich < ichMax && javajs.util.PT.isWhiteSpace (str, ich)) ++ich;\r
-\r
-var ichNonWhite = ich;\r
-while (ich < ichMax && !javajs.util.PT.isWhiteSpace (str, ich)) ++ich;\r
-\r
-next[0] = ich;\r
-return (ichNonWhite == ich ? null : str.substring (ichNonWhite, ich));\r
-}, "~S,~N,~A");\r
-c$.parseTrimmedChecked = Clazz.defineMethod (c$, "parseTrimmedChecked", \r
-function (str, ich, ichMax) {\r
-while (ich < ichMax && javajs.util.PT.isWhiteSpace (str, ich)) ++ich;\r
-\r
-var ichLast = ichMax - 1;\r
-while (ichLast >= ich && javajs.util.PT.isWhiteSpace (str, ichLast)) --ichLast;\r
-\r
-return (ichLast < ich ? "" : str.substring (ich, ichLast + 1));\r
-}, "~S,~N,~N");\r
-c$.dVal = Clazz.defineMethod (c$, "dVal", \r
-function (s) {\r
-{\r
-if(s==null)\r
-throw new NumberFormatException("null");\r
-var d=parseFloat(s);\r
-if(isNaN(d))\r
-throw new NumberFormatException("Not a Number : "+s);\r
-return d\r
-}}, "~S");\r
-c$.fVal = Clazz.defineMethod (c$, "fVal", \r
-function (s) {\r
-{\r
-return this.dVal(s);\r
-}}, "~S");\r
-c$.parseIntRange = Clazz.defineMethod (c$, "parseIntRange", \r
-function (str, ichMax, next) {\r
-var cch = str.length;\r
-if (ichMax > cch) ichMax = cch;\r
-return (next[0] < 0 || next[0] >= ichMax ? -2147483648 : javajs.util.PT.parseIntChecked (str, ichMax, next));\r
-}, "~S,~N,~A");\r
-c$.parseFloatArrayData = Clazz.defineMethod (c$, "parseFloatArrayData", \r
-function (tokens, data) {\r
-javajs.util.PT.parseFloatArrayDataN (tokens, data, data.length);\r
-}, "~A,~A");\r
-c$.parseFloatArrayDataN = Clazz.defineMethod (c$, "parseFloatArrayDataN", \r
-function (tokens, data, nData) {\r
-for (var i = nData; --i >= 0; ) data[i] = (i >= tokens.length ? NaN : javajs.util.PT.parseFloat (tokens[i]));\r
-\r
-}, "~A,~A,~N");\r
-c$.split = Clazz.defineMethod (c$, "split", \r
-function (text, run) {\r
-if (text.length == 0) return  new Array (0);\r
-var n = 1;\r
-var i = text.indexOf (run);\r
-var lines;\r
-var runLen = run.length;\r
-if (i < 0 || runLen == 0) {\r
-lines =  new Array (1);\r
-lines[0] = text;\r
-return lines;\r
-}var len = text.length - runLen;\r
-for (; i >= 0 && i < len; n++) i = text.indexOf (run, i + runLen);\r
-\r
-lines =  new Array (n);\r
-i = 0;\r
-var ipt = 0;\r
-var pt = 0;\r
-for (; (ipt = text.indexOf (run, i)) >= 0 && pt + 1 < n; ) {\r
-lines[pt++] = text.substring (i, ipt);\r
-i = ipt + runLen;\r
-}\r
-if (text.indexOf (run, len) != len) len += runLen;\r
-lines[pt] = text.substring (i, len);\r
-return lines;\r
-}, "~S,~S");\r
-c$.getQuotedStringAt = Clazz.defineMethod (c$, "getQuotedStringAt", \r
-function (line, ipt0) {\r
-var next =  Clazz.newIntArray (-1, [ipt0]);\r
-return javajs.util.PT.getQuotedStringNext (line, next);\r
-}, "~S,~N");\r
-c$.getQuotedStringNext = Clazz.defineMethod (c$, "getQuotedStringNext", \r
-function (line, next) {\r
-var i = next[0];\r
-if (i < 0 || (i = line.indexOf ("\"", i)) < 0) return "";\r
-var pt = i + 1;\r
-var len = line.length;\r
-while (++i < len && line.charAt (i) != '"') if (line.charAt (i) == '\\') i++;\r
-\r
-next[0] = i + 1;\r
-return line.substring (pt, i);\r
-}, "~S,~A");\r
-c$.getCSVString = Clazz.defineMethod (c$, "getCSVString", \r
-function (line, next) {\r
-var i = next[1];\r
-if (i < 0 || (i = line.indexOf ("\"", i)) < 0) return null;\r
-var pt = next[0] = i;\r
-var len = line.length;\r
-var escaped = false;\r
-var haveEscape = false;\r
-while (++i < len && (line.charAt (i) != '"' || (escaped = (i + 1 < len && line.charAt (i + 1) == '"')))) if (escaped) {\r
-escaped = false;\r
-haveEscape = true;\r
-i++;\r
-}\r
-if (i >= len) {\r
-next[1] = -1;\r
-return null;\r
-}next[1] = i + 1;\r
-var s = line.substring (pt + 1, i);\r
-return (haveEscape ? javajs.util.PT.rep (javajs.util.PT.rep (s, "\"\"", "\0"), "\0", "\"") : s);\r
-}, "~S,~A");\r
-c$.isOneOf = Clazz.defineMethod (c$, "isOneOf", \r
-function (key, semiList) {\r
-if (semiList.length == 0) return false;\r
-if (semiList.charAt (0) != ';') semiList = ";" + semiList + ";";\r
-return key.indexOf (";") < 0 && semiList.indexOf (';' + key + ';') >= 0;\r
-}, "~S,~S");\r
-c$.getQuotedAttribute = Clazz.defineMethod (c$, "getQuotedAttribute", \r
-function (info, name) {\r
-var i = info.indexOf (name + "=");\r
-return (i < 0 ? null : javajs.util.PT.getQuotedStringAt (info, i));\r
-}, "~S,~S");\r
-c$.approx = Clazz.defineMethod (c$, "approx", \r
-function (f, n) {\r
-return Math.round (f * n) / n;\r
-}, "~N,~N");\r
-c$.rep = Clazz.defineMethod (c$, "rep", \r
-function (str, strFrom, strTo) {\r
-if (str == null || strFrom.length == 0 || str.indexOf (strFrom) < 0) return str;\r
-var isOnce = (strTo.indexOf (strFrom) >= 0);\r
-do {\r
-str = str.$replace (strFrom, strTo);\r
-} while (!isOnce && str.indexOf (strFrom) >= 0);\r
-return str;\r
-}, "~S,~S,~S");\r
-c$.formatF = Clazz.defineMethod (c$, "formatF", \r
-function (value, width, precision, alignLeft, zeroPad) {\r
-return javajs.util.PT.formatS (javajs.util.DF.formatDecimal (value, precision), width, 0, alignLeft, zeroPad);\r
-}, "~N,~N,~N,~B,~B");\r
-c$.formatD = Clazz.defineMethod (c$, "formatD", \r
-function (value, width, precision, alignLeft, zeroPad, allowOverflow) {\r
-return javajs.util.PT.formatS (javajs.util.DF.formatDecimal (value, -1 - precision), width, 0, alignLeft, zeroPad);\r
-}, "~N,~N,~N,~B,~B,~B");\r
-c$.formatS = Clazz.defineMethod (c$, "formatS", \r
-function (value, width, precision, alignLeft, zeroPad) {\r
-if (value == null) return "";\r
-var len = value.length;\r
-if (precision != 2147483647 && precision > 0 && precision < len) value = value.substring (0, precision);\r
- else if (precision < 0 && len + precision >= 0) value = value.substring (len + precision + 1);\r
-var padLength = width - value.length;\r
-if (padLength <= 0) return value;\r
-var isNeg = (zeroPad && !alignLeft && value.charAt (0) == '-');\r
-var padChar = (zeroPad ? '0' : ' ');\r
-var padChar0 = (isNeg ? '-' : padChar);\r
-var sb =  new javajs.util.SB ();\r
-if (alignLeft) sb.append (value);\r
-sb.appendC (padChar0);\r
-for (var i = padLength; --i > 0; ) sb.appendC (padChar);\r
-\r
-if (!alignLeft) sb.append (isNeg ? padChar + value.substring (1) : value);\r
-return sb.toString ();\r
-}, "~S,~N,~N,~B,~B");\r
-c$.replaceWithCharacter = Clazz.defineMethod (c$, "replaceWithCharacter", \r
-function (str, strFrom, chTo) {\r
-if (str == null) return null;\r
-for (var i = strFrom.length; --i >= 0; ) str = str.$replace (strFrom.charAt (i), chTo);\r
-\r
-return str;\r
-}, "~S,~S,~S");\r
-c$.replaceAllCharacters = Clazz.defineMethod (c$, "replaceAllCharacters", \r
-function (str, strFrom, strTo) {\r
-for (var i = strFrom.length; --i >= 0; ) {\r
-var chFrom = strFrom.substring (i, i + 1);\r
-str = javajs.util.PT.rep (str, chFrom, strTo);\r
-}\r
-return str;\r
-}, "~S,~S,~S");\r
-c$.trim = Clazz.defineMethod (c$, "trim", \r
-function (str, chars) {\r
-if (str == null || str.length == 0) return str;\r
-if (chars.length == 0) return str.trim ();\r
-var len = str.length;\r
-var k = 0;\r
-while (k < len && chars.indexOf (str.charAt (k)) >= 0) k++;\r
-\r
-var m = str.length - 1;\r
-while (m > k && chars.indexOf (str.charAt (m)) >= 0) m--;\r
-\r
-return str.substring (k, m + 1);\r
-}, "~S,~S");\r
-c$.trimQuotes = Clazz.defineMethod (c$, "trimQuotes", \r
-function (value) {\r
-return (value != null && value.length > 1 && value.startsWith ("\"") && value.endsWith ("\"") ? value.substring (1, value.length - 1) : value);\r
-}, "~S");\r
-c$.isNonStringPrimitive = Clazz.defineMethod (c$, "isNonStringPrimitive", \r
-function (info) {\r
-return Clazz.instanceOf (info, Number) || Clazz.instanceOf (info, Boolean);\r
-}, "~O");\r
-c$.arrayGet = Clazz.defineMethod (c$, "arrayGet", \r
-($fz = function (info, i) {\r
-{\r
-return info[i];\r
-}}, $fz.isPrivate = true, $fz), "~O,~N");\r
-c$.toJSON = Clazz.defineMethod (c$, "toJSON", \r
-function (infoType, info) {\r
-if (info == null) return javajs.util.PT.packageJSON (infoType, null);\r
-if (javajs.util.PT.isNonStringPrimitive (info)) return javajs.util.PT.packageJSON (infoType, info.toString ());\r
-var s = null;\r
-var sb = null;\r
-while (true) {\r
-if (Clazz.instanceOf (info, String)) {\r
-s = info;\r
-{\r
-if (typeof s == "undefined") s = "null"\r
-}if (s.indexOf ("{\"") != 0) {\r
-s = javajs.util.PT.rep (s, "\"", "\\\"");\r
-s = javajs.util.PT.rep (s, "\n", "\\n");\r
-s = "\"" + s + "\"";\r
-}break;\r
-}if (Clazz.instanceOf (info, javajs.api.JSONEncodable)) {\r
-if ((s = (info).toJSON ()) == null) s = "null";\r
-break;\r
-}sb =  new javajs.util.SB ();\r
-if (Clazz.instanceOf (info, java.util.Map)) {\r
-sb.append ("{ ");\r
-var sep = "";\r
-for (var key, $key = (info).keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) {\r
-sb.append (sep).append (javajs.util.PT.packageJSON (key, javajs.util.PT.toJSON (null, (info).get (key))));\r
-sep = ",";\r
-}\r
-sb.append (" }");\r
-break;\r
-}if (Clazz.instanceOf (info, javajs.util.Lst)) {\r
-sb.append ("[ ");\r
-var n = (info).size ();\r
-for (var i = 0; i < n; i++) {\r
-if (i > 0) sb.appendC (',');\r
-sb.append (javajs.util.PT.toJSON (null, (info).get (i)));\r
-}\r
-sb.append (" ]");\r
-break;\r
-}if (Clazz.instanceOf (info, javajs.util.M34)) {\r
-var len = (Clazz.instanceOf (info, javajs.util.M4) ? 4 : 3);\r
-var x =  Clazz.newFloatArray (len, 0);\r
-var m = info;\r
-sb.appendC ('[');\r
-for (var i = 0; i < len; i++) {\r
-if (i > 0) sb.appendC (',');\r
-m.getRow (i, x);\r
-sb.append (javajs.util.PT.toJSON (null, x));\r
-}\r
-sb.appendC (']');\r
-break;\r
-}s = javajs.util.PT.nonArrayString (info);\r
-if (s == null) {\r
-sb.append ("[");\r
-var n = javajs.util.AU.getLength (info);\r
-for (var i = 0; i < n; i++) {\r
-if (i > 0) sb.appendC (',');\r
-sb.append (javajs.util.PT.toJSON (null, javajs.util.PT.arrayGet (info, i)));\r
-}\r
-sb.append ("]");\r
-break;\r
-}info = info.toString ();\r
-}\r
-return javajs.util.PT.packageJSON (infoType, (s == null ? sb.toString () : s));\r
-}, "~S,~O");\r
-c$.nonArrayString = Clazz.defineMethod (c$, "nonArrayString", \r
-function (x) {\r
-{\r
-var s = x.toString(); return (s.startsWith("[object") &&\r
-s.endsWith("Array]") ? null : s);\r
-}}, "~O");\r
-c$.byteArrayToJSON = Clazz.defineMethod (c$, "byteArrayToJSON", \r
-function (data) {\r
-var sb =  new javajs.util.SB ();\r
-sb.append ("[");\r
-var n = data.length;\r
-for (var i = 0; i < n; i++) {\r
-if (i > 0) sb.appendC (',');\r
-sb.appendI (data[i] & 0xFF);\r
-}\r
-sb.append ("]");\r
-return sb.toString ();\r
-}, "~A");\r
-c$.packageJSON = Clazz.defineMethod (c$, "packageJSON", \r
-function (infoType, info) {\r
-return (infoType == null ? info : "\"" + infoType + "\": " + info);\r
-}, "~S,~S");\r
-c$.escapeUrl = Clazz.defineMethod (c$, "escapeUrl", \r
-function (url) {\r
-url = javajs.util.PT.rep (url, "\n", "");\r
-url = javajs.util.PT.rep (url, "%", "%25");\r
-url = javajs.util.PT.rep (url, "#", "%23");\r
-url = javajs.util.PT.rep (url, "[", "%5B");\r
-url = javajs.util.PT.rep (url, "]", "%5D");\r
-url = javajs.util.PT.rep (url, " ", "%20");\r
-return url;\r
-}, "~S");\r
-c$.esc = Clazz.defineMethod (c$, "esc", \r
-function (str) {\r
-if (str == null || str.length == 0) return "\"\"";\r
-var haveEscape = false;\r
-var i = 0;\r
-for (; i < "\\\\\tt\rr\nn\"\"".length; i += 2) if (str.indexOf ("\\\\\tt\rr\nn\"\"".charAt (i)) >= 0) {\r
-haveEscape = true;\r
-break;\r
-}\r
-if (haveEscape) while (i < "\\\\\tt\rr\nn\"\"".length) {\r
-var pt = -1;\r
-var ch = "\\\\\tt\rr\nn\"\"".charAt (i++);\r
-var ch2 = "\\\\\tt\rr\nn\"\"".charAt (i++);\r
-var sb =  new javajs.util.SB ();\r
-var pt0 = 0;\r
-while ((pt = str.indexOf (ch, pt + 1)) >= 0) {\r
-sb.append (str.substring (pt0, pt)).appendC ('\\').appendC (ch2);\r
-pt0 = pt + 1;\r
-}\r
-sb.append (str.substring (pt0, str.length));\r
-str = sb.toString ();\r
-}\r
-return "\"" + javajs.util.PT.escUnicode (str) + "\"";\r
-}, "~S");\r
-c$.escUnicode = Clazz.defineMethod (c$, "escUnicode", \r
-function (str) {\r
-for (var i = str.length; --i >= 0; ) if (str.charCodeAt (i) > 0x7F) {\r
-var s = "0000" + Integer.toHexString (str.charCodeAt (i));\r
-str = str.substring (0, i) + "\\u" + s.substring (s.length - 4) + str.substring (i + 1);\r
-}\r
-return str;\r
-}, "~S");\r
-c$.escF = Clazz.defineMethod (c$, "escF", \r
-function (f) {\r
-var sf = "" + f;\r
-{\r
-if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0)\r
-sf += ".0";\r
-}return sf;\r
-}, "~N");\r
-c$.join = Clazz.defineMethod (c$, "join", \r
-function (s, c, i0) {\r
-if (s.length < i0) return null;\r
-var sb =  new javajs.util.SB ();\r
-sb.append (s[i0++]);\r
-for (var i = i0; i < s.length; i++) sb.appendC (c).append (s[i]);\r
-\r
-return sb.toString ();\r
-}, "~A,~S,~N");\r
-c$.isLike = Clazz.defineMethod (c$, "isLike", \r
-function (a, b) {\r
-var areEqual = a.equals (b);\r
-if (areEqual) return true;\r
-var isStart = b.startsWith ("*");\r
-var isEnd = b.endsWith ("*");\r
-return (!isStart && !isEnd) ? areEqual : isStart && isEnd ? b.length == 1 || a.contains (b.substring (1, b.length - 1)) : isStart ? a.endsWith (b.substring (1)) : a.startsWith (b.substring (0, b.length - 1));\r
-}, "~S,~S");\r
-c$.getMapValueNoCase = Clazz.defineMethod (c$, "getMapValueNoCase", \r
-function (h, key) {\r
-if ("this".equals (key)) return h;\r
-var val = h.get (key);\r
-if (val == null) for (var e, $e = h.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) if (e.getKey ().equalsIgnoreCase (key)) return e.getValue ();\r
-\r
-return val;\r
-}, "java.util.Map,~S");\r
-c$.clean = Clazz.defineMethod (c$, "clean", \r
-function (s) {\r
-return javajs.util.PT.rep (javajs.util.PT.replaceAllCharacters (s, " \t\n\r", " "), "  ", " ").trim ();\r
-}, "~S");\r
-c$.fdup = Clazz.defineMethod (c$, "fdup", \r
-function (f, pt, n) {\r
-var ch;\r
-var count = 0;\r
-for (var i = pt; --i >= 1; ) {\r
-if (javajs.util.PT.isDigit (ch = f.charAt (i))) continue;\r
-switch (ch) {\r
-case '.':\r
-if (count++ != 0) return f;\r
-continue;\r
-case '-':\r
-if (i != 1 && f.charAt (i - 1) != '.') return f;\r
-continue;\r
-default:\r
-return f;\r
-}\r
-}\r
-var s = f.substring (0, pt + 1);\r
-var sb =  new javajs.util.SB ();\r
-for (var i = 0; i < n; i++) sb.append (s);\r
-\r
-sb.append (f.substring (pt + 1));\r
-return sb.toString ();\r
-}, "~S,~N,~N");\r
-c$.formatString = Clazz.defineMethod (c$, "formatString", \r
-function (strFormat, key, strT, floatT, doubleT, doOne) {\r
-if (strFormat == null) return null;\r
-if ("".equals (strFormat)) return "";\r
-var len = key.length;\r
-if (strFormat.indexOf ("%") < 0 || len == 0 || strFormat.indexOf (key) < 0) return strFormat;\r
-var strLabel = "";\r
-var ich;\r
-var ichPercent;\r
-var ichKey;\r
-for (ich = 0; (ichPercent = strFormat.indexOf ('%', ich)) >= 0 && (ichKey = strFormat.indexOf (key, ichPercent + 1)) >= 0; ) {\r
-if (ich != ichPercent) strLabel += strFormat.substring (ich, ichPercent);\r
-ich = ichPercent + 1;\r
-if (ichKey > ichPercent + 6) {\r
-strLabel += '%';\r
-continue;\r
-}try {\r
-var alignLeft = false;\r
-if (strFormat.charAt (ich) == '-') {\r
-alignLeft = true;\r
-++ich;\r
-}var zeroPad = false;\r
-if (strFormat.charAt (ich) == '0') {\r
-zeroPad = true;\r
-++ich;\r
-}var ch;\r
-var width = 0;\r
-while ((ch = strFormat.charAt (ich)) >= '0' && (ch <= '9')) {\r
-width = (10 * width) + (ch.charCodeAt (0) - 48);\r
-++ich;\r
-}\r
-var precision = 2147483647;\r
-var isExponential = false;\r
-if (strFormat.charAt (ich) == '.') {\r
-++ich;\r
-if ((ch = strFormat.charAt (ich)) == '-') {\r
-isExponential = true;\r
-++ich;\r
-}if ((ch = strFormat.charAt (ich)) >= '0' && ch <= '9') {\r
-precision = ch.charCodeAt (0) - 48;\r
-++ich;\r
-}if (isExponential) precision = -precision - (strT == null ? 1 : 0);\r
-}var st = strFormat.substring (ich, ich + len);\r
-if (!st.equals (key)) {\r
-ich = ichPercent + 1;\r
-strLabel += '%';\r
-continue;\r
-}ich += len;\r
-if (!Float.isNaN (floatT)) strLabel += javajs.util.PT.formatF (floatT, width, precision, alignLeft, zeroPad);\r
- else if (strT != null) strLabel += javajs.util.PT.formatS (strT, width, precision, alignLeft, zeroPad);\r
- else if (!Double.isNaN (doubleT)) strLabel += javajs.util.PT.formatD (doubleT, width, precision, alignLeft, zeroPad, true);\r
-if (doOne) break;\r
-} catch (ioobe) {\r
-if (Clazz.exceptionOf (ioobe, IndexOutOfBoundsException)) {\r
-ich = ichPercent;\r
-break;\r
-} else {\r
-throw ioobe;\r
-}\r
-}\r
-}\r
-strLabel += strFormat.substring (ich);\r
-return strLabel;\r
-}, "~S,~S,~S,~N,~N,~B");\r
-c$.formatStringS = Clazz.defineMethod (c$, "formatStringS", \r
-function (strFormat, key, strT) {\r
-return javajs.util.PT.formatString (strFormat, key, strT, NaN, NaN, false);\r
-}, "~S,~S,~S");\r
-c$.formatStringF = Clazz.defineMethod (c$, "formatStringF", \r
-function (strFormat, key, floatT) {\r
-return javajs.util.PT.formatString (strFormat, key, null, floatT, NaN, false);\r
-}, "~S,~S,~N");\r
-c$.formatStringI = Clazz.defineMethod (c$, "formatStringI", \r
-function (strFormat, key, intT) {\r
-return javajs.util.PT.formatString (strFormat, key, "" + intT, NaN, NaN, false);\r
-}, "~S,~S,~N");\r
-c$.sprintf = Clazz.defineMethod (c$, "sprintf", \r
-function (strFormat, list, values) {\r
-if (values == null) return strFormat;\r
-var n = list.length;\r
-if (n == values.length) try {\r
-for (var o = 0; o < n; o++) {\r
-if (values[o] == null) continue;\r
-switch (list.charAt (o)) {\r
-case 's':\r
-strFormat = javajs.util.PT.formatString (strFormat, "s", values[o], NaN, NaN, true);\r
-break;\r
-case 'f':\r
-strFormat = javajs.util.PT.formatString (strFormat, "f", null, (values[o]).floatValue (), NaN, true);\r
-break;\r
-case 'i':\r
-strFormat = javajs.util.PT.formatString (strFormat, "d", "" + values[o], NaN, NaN, true);\r
-strFormat = javajs.util.PT.formatString (strFormat, "i", "" + values[o], NaN, NaN, true);\r
-break;\r
-case 'd':\r
-strFormat = javajs.util.PT.formatString (strFormat, "e", null, NaN, (values[o]).doubleValue (), true);\r
-break;\r
-case 'p':\r
-var pVal = values[o];\r
-strFormat = javajs.util.PT.formatString (strFormat, "p", null, pVal.x, NaN, true);\r
-strFormat = javajs.util.PT.formatString (strFormat, "p", null, pVal.y, NaN, true);\r
-strFormat = javajs.util.PT.formatString (strFormat, "p", null, pVal.z, NaN, true);\r
-break;\r
-case 'q':\r
-var qVal = values[o];\r
-strFormat = javajs.util.PT.formatString (strFormat, "q", null, qVal.x, NaN, true);\r
-strFormat = javajs.util.PT.formatString (strFormat, "q", null, qVal.y, NaN, true);\r
-strFormat = javajs.util.PT.formatString (strFormat, "q", null, qVal.z, NaN, true);\r
-strFormat = javajs.util.PT.formatString (strFormat, "q", null, qVal.w, NaN, true);\r
-break;\r
-case 'S':\r
-var sVal = values[o];\r
-for (var i = 0; i < sVal.length; i++) strFormat = javajs.util.PT.formatString (strFormat, "s", sVal[i], NaN, NaN, true);\r
-\r
-break;\r
-case 'F':\r
-var fVal = values[o];\r
-for (var i = 0; i < fVal.length; i++) strFormat = javajs.util.PT.formatString (strFormat, "f", null, fVal[i], NaN, true);\r
-\r
-break;\r
-case 'I':\r
-var iVal = values[o];\r
-for (var i = 0; i < iVal.length; i++) strFormat = javajs.util.PT.formatString (strFormat, "d", "" + iVal[i], NaN, NaN, true);\r
-\r
-for (var i = 0; i < iVal.length; i++) strFormat = javajs.util.PT.formatString (strFormat, "i", "" + iVal[i], NaN, NaN, true);\r
-\r
-break;\r
-case 'D':\r
-var dVal = values[o];\r
-for (var i = 0; i < dVal.length; i++) strFormat = javajs.util.PT.formatString (strFormat, "e", null, NaN, dVal[i], true);\r
-\r
-}\r
-}\r
-return javajs.util.PT.rep (strFormat, "%%", "%");\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-System.out.println ("TextFormat.sprintf error " + list + " " + strFormat);\r
-return javajs.util.PT.rep (strFormat, "%", "?");\r
-}, "~S,~S,~A");\r
-c$.formatCheck = Clazz.defineMethod (c$, "formatCheck", \r
-function (strFormat) {\r
-if (strFormat == null || strFormat.indexOf ('p') < 0 && strFormat.indexOf ('q') < 0) return strFormat;\r
-strFormat = javajs.util.PT.rep (strFormat, "%%", "\1");\r
-strFormat = javajs.util.PT.rep (strFormat, "%p", "%6.2p");\r
-strFormat = javajs.util.PT.rep (strFormat, "%q", "%6.2q");\r
-var format = javajs.util.PT.split (strFormat, "%");\r
-var sb =  new javajs.util.SB ();\r
-sb.append (format[0]);\r
-for (var i = 1; i < format.length; i++) {\r
-var f = "%" + format[i];\r
-var pt;\r
-if (f.length >= 3) {\r
-if ((pt = f.indexOf ('p')) >= 0) f = javajs.util.PT.fdup (f, pt, 3);\r
-if ((pt = f.indexOf ('q')) >= 0) f = javajs.util.PT.fdup (f, pt, 4);\r
-}sb.append (f);\r
-}\r
-return sb.toString ().$replace ('\1', '%');\r
-}, "~S");\r
-c$.leftJustify = Clazz.defineMethod (c$, "leftJustify", \r
-function (s, s1, s2) {\r
-s.append (s2);\r
-var n = s1.length - s2.length;\r
-if (n > 0) s.append (s1.substring (0, n));\r
-}, "javajs.util.SB,~S,~S");\r
-c$.rightJustify = Clazz.defineMethod (c$, "rightJustify", \r
-function (s, s1, s2) {\r
-var n = s1.length - s2.length;\r
-if (n > 0) s.append (s1.substring (0, n));\r
-s.append (s2);\r
-}, "javajs.util.SB,~S,~S");\r
-c$.safeTruncate = Clazz.defineMethod (c$, "safeTruncate", \r
-function (f, n) {\r
-if (f > -0.001 && f < 0.001) f = 0;\r
-return (f + "         ").substring (0, n);\r
-}, "~N,~N");\r
-c$.isWild = Clazz.defineMethod (c$, "isWild", \r
-function (s) {\r
-return s != null && (s.indexOf ("*") >= 0 || s.indexOf ("?") >= 0);\r
-}, "~S");\r
-c$.isMatch = Clazz.defineMethod (c$, "isMatch", \r
-function (search, match, checkStar, allowInitialStar) {\r
-if (search.equals (match)) return true;\r
-var mLen = match.length;\r
-if (mLen == 0) return false;\r
-var isStar0 = (checkStar && allowInitialStar ? match.charAt (0) == '*' : false);\r
-if (mLen == 1 && isStar0) return true;\r
-var isStar1 = (checkStar && match.endsWith ("*"));\r
-var haveQ = (match.indexOf ('?') >= 0);\r
-if (!haveQ) {\r
-if (isStar0) return (isStar1 ? (mLen < 3 || search.indexOf (match.substring (1, mLen - 1)) >= 0) : search.endsWith (match.substring (1)));\r
- else if (isStar1) return search.startsWith (match.substring (0, mLen - 1));\r
-}var sLen = search.length;\r
-var qqqq = "????";\r
-var nq = 4;\r
-while (nq < sLen) {\r
-qqqq += qqqq;\r
-nq += 4;\r
-}\r
-if (checkStar) {\r
-if (isStar0) {\r
-match = qqqq + match.substring (1);\r
-mLen += nq - 1;\r
-}if (isStar1) {\r
-match = match.substring (0, mLen - 1) + qqqq;\r
-mLen += nq - 1;\r
-}}if (mLen < sLen) return false;\r
-var ich = 0;\r
-while (mLen > sLen) {\r
-if (allowInitialStar && match.charAt (ich) == '?') {\r
-++ich;\r
-} else if (match.charAt (ich + mLen - 1) != '?') {\r
-return false;\r
-}--mLen;\r
-}\r
-for (var i = sLen; --i >= 0; ) {\r
-var chm = match.charAt (ich + i);\r
-if (chm == '?') continue;\r
-var chs = search.charAt (i);\r
-if (chm != chs && (chm != '\1' || chs != '?')) return false;\r
-}\r
-return true;\r
-}, "~S,~S,~B,~B");\r
-c$.replaceQuotedStrings = Clazz.defineMethod (c$, "replaceQuotedStrings", \r
-function (s, list, newList) {\r
-var n = list.size ();\r
-for (var i = 0; i < n; i++) {\r
-var name = list.get (i);\r
-var newName = newList.get (i);\r
-if (!newName.equals (name)) s = javajs.util.PT.rep (s, "\"" + name + "\"", "\"" + newName + "\"");\r
-}\r
-return s;\r
-}, "~S,javajs.util.Lst,javajs.util.Lst");\r
-c$.replaceStrings = Clazz.defineMethod (c$, "replaceStrings", \r
-function (s, list, newList) {\r
-var n = list.size ();\r
-for (var i = 0; i < n; i++) {\r
-var name = list.get (i);\r
-var newName = newList.get (i);\r
-if (!newName.equals (name)) s = javajs.util.PT.rep (s, name, newName);\r
-}\r
-return s;\r
-}, "~S,javajs.util.Lst,javajs.util.Lst");\r
-c$.isDigit = Clazz.defineMethod (c$, "isDigit", \r
-function (ch) {\r
-var c = (ch).charCodeAt (0);\r
-return (48 <= c && c <= 57);\r
-}, "~S");\r
-c$.isUpperCase = Clazz.defineMethod (c$, "isUpperCase", \r
-function (ch) {\r
-var c = (ch).charCodeAt (0);\r
-return (65 <= c && c <= 90);\r
-}, "~S");\r
-c$.isLowerCase = Clazz.defineMethod (c$, "isLowerCase", \r
-function (ch) {\r
-var c = (ch).charCodeAt (0);\r
-return (97 <= c && c <= 122);\r
-}, "~S");\r
-c$.isLetter = Clazz.defineMethod (c$, "isLetter", \r
-function (ch) {\r
-var c = (ch).charCodeAt (0);\r
-return (65 <= c && c <= 90 || 97 <= c && c <= 122);\r
-}, "~S");\r
-c$.isLetterOrDigit = Clazz.defineMethod (c$, "isLetterOrDigit", \r
-function (ch) {\r
-var c = (ch).charCodeAt (0);\r
-return (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57);\r
-}, "~S");\r
-c$.isWhitespace = Clazz.defineMethod (c$, "isWhitespace", \r
-function (ch) {\r
-var c = (ch).charCodeAt (0);\r
-return (c >= 0x1c && c <= 0x20 || c >= 0x9 && c <= 0xd);\r
-}, "~S");\r
-c$.fixPtFloats = Clazz.defineMethod (c$, "fixPtFloats", \r
-function (pt, f) {\r
-pt.x = Math.round (pt.x * f) / f;\r
-pt.y = Math.round (pt.y * f) / f;\r
-pt.z = Math.round (pt.z * f) / f;\r
-}, "javajs.util.T3,~N");\r
-c$.fixDouble = Clazz.defineMethod (c$, "fixDouble", \r
-function (d, f) {\r
-return Math.round (d * f) / f;\r
-}, "~N,~N");\r
-c$.parseFloatFraction = Clazz.defineMethod (c$, "parseFloatFraction", \r
-function (s) {\r
-var pt = s.indexOf ("/");\r
-return (pt < 0 ? javajs.util.PT.parseFloat (s) : javajs.util.PT.parseFloat (s.substring (0, pt)) / javajs.util.PT.parseFloat (s.substring (pt + 1)));\r
-}, "~S");\r
-Clazz.defineStatics (c$,\r
-"tensScale",  Clazz.newFloatArray (-1, [10, 100, 1000, 10000, 100000, 1000000]),\r
-"decimalScale",  Clazz.newFloatArray (-1, [0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001, 0.0000001, 0.00000001, 0.000000001]),\r
-"FLOAT_MIN_SAFE", 2E-45,\r
-"escapable", "\\\\\tt\rr\nn\"\"",\r
-"FRACTIONAL_PRECISION", 100000,\r
-"CARTESIAN_PRECISION", 10000);\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (null, "javajs.util.PT", ["java.lang.Boolean", "$.Double", "$.Float", "$.Number", "java.util.Map", "javajs.api.JSONEncodable", "javajs.util.AU", "$.DF", "$.Lst", "$.M34", "$.M4", "$.SB"], function () {
+c$ = Clazz.declareType (javajs.util, "PT");
+c$.parseInt = Clazz.defineMethod (c$, "parseInt", 
+function (str) {
+return javajs.util.PT.parseIntNext (str,  Clazz.newIntArray (-1, [0]));
+}, "~S");
+c$.parseIntNext = Clazz.defineMethod (c$, "parseIntNext", 
+function (str, next) {
+var cch = str.length;
+if (next[0] < 0 || next[0] >= cch) return -2147483648;
+return javajs.util.PT.parseIntChecked (str, cch, next);
+}, "~S,~A");
+c$.parseIntChecked = Clazz.defineMethod (c$, "parseIntChecked", 
+function (str, ichMax, next) {
+var digitSeen = false;
+var value = 0;
+var ich = next[0];
+if (ich < 0) return -2147483648;
+var ch;
+while (ich < ichMax && javajs.util.PT.isWhiteSpace (str, ich)) ++ich;
+
+var negative = false;
+if (ich < ichMax && str.charCodeAt (ich) == 45) {
+negative = true;
+++ich;
+}while (ich < ichMax && (ch = str.charCodeAt (ich)) >= 48 && ch <= 57) {
+value = value * 10 + (ch - 48);
+digitSeen = true;
+++ich;
+}
+if (!digitSeen) value = -2147483648;
+ else if (negative) value = -value;
+next[0] = ich;
+return value;
+}, "~S,~N,~A");
+c$.isWhiteSpace = Clazz.defineMethod (c$, "isWhiteSpace", 
+function (str, ich) {
+var ch;
+return (ich >= 0 && ((ch = str.charAt (ich)) == ' ' || ch == '\t' || ch == '\n'));
+}, "~S,~N");
+c$.parseFloatChecked = Clazz.defineMethod (c$, "parseFloatChecked", 
+function (str, ichMax, next, isStrict) {
+var digitSeen = false;
+var ich = next[0];
+if (isStrict && str.indexOf ('\n') != str.lastIndexOf ('\n')) return NaN;
+while (ich < ichMax && javajs.util.PT.isWhiteSpace (str, ich)) ++ich;
+
+var negative = false;
+if (ich < ichMax && str.charAt (ich) == '-') {
+++ich;
+negative = true;
+}var ch = 0;
+var ival = 0;
+var ival2 = 0;
+while (ich < ichMax && (ch = str.charCodeAt (ich)) >= 48 && ch <= 57) {
+ival = (ival * 10) + (ch - 48) * 1;
+++ich;
+digitSeen = true;
+}
+var isDecimal = false;
+var iscale = 0;
+var nzero = (ival == 0 ? -1 : 0);
+if (ch == 46) {
+isDecimal = true;
+while (++ich < ichMax && (ch = str.charCodeAt (ich)) >= 48 && ch <= 57) {
+digitSeen = true;
+if (nzero < 0) {
+if (ch == 48) {
+nzero--;
+continue;
+}nzero = -nzero;
+}if (iscale < javajs.util.PT.decimalScale.length) {
+ival2 = (ival2 * 10) + (ch - 48) * 1;
+iscale++;
+}}
+}var value;
+if (!digitSeen) {
+value = NaN;
+} else if (ival2 > 0) {
+value = ival2 * javajs.util.PT.decimalScale[iscale - 1];
+if (nzero > 1) {
+if (nzero - 2 < javajs.util.PT.decimalScale.length) {
+value *= javajs.util.PT.decimalScale[nzero - 2];
+} else {
+value *= Math.pow (10, 1 - nzero);
+}} else {
+value += ival;
+}} else {
+value = ival;
+}var isExponent = false;
+if (ich < ichMax && (ch == 69 || ch == 101 || ch == 68)) {
+isExponent = true;
+if (++ich >= ichMax) return NaN;
+ch = str.charCodeAt (ich);
+if ((ch == 43) && (++ich >= ichMax)) return NaN;
+next[0] = ich;
+var exponent = javajs.util.PT.parseIntChecked (str, ichMax, next);
+if (exponent == -2147483648) return NaN;
+if (exponent > 0 && exponent <= javajs.util.PT.tensScale.length) value *= javajs.util.PT.tensScale[exponent - 1];
+ else if (exponent < 0 && -exponent <= javajs.util.PT.decimalScale.length) value *= javajs.util.PT.decimalScale[-exponent - 1];
+ else if (exponent != 0) value *= Math.pow (10, exponent);
+} else {
+next[0] = ich;
+}if (negative) value = -value;
+if (value == Infinity) value = 3.4028235E38;
+return (!isStrict || (!isExponent || isDecimal) && javajs.util.PT.checkTrailingText (str, next[0], ichMax) ? value : NaN);
+}, "~S,~N,~A,~B");
+c$.checkTrailingText = Clazz.defineMethod (c$, "checkTrailingText", 
+function (str, ich, ichMax) {
+var ch;
+while (ich < ichMax && (javajs.util.PT.isWhitespace (ch = str.charAt (ich)) || ch == ';')) ++ich;
+
+return (ich == ichMax);
+}, "~S,~N,~N");
+c$.parseFloatArray = Clazz.defineMethod (c$, "parseFloatArray", 
+function (str) {
+return javajs.util.PT.parseFloatArrayNext (str,  Clazz.newIntArray (1, 0), null, null, null);
+}, "~S");
+c$.parseFloatArrayInfested = Clazz.defineMethod (c$, "parseFloatArrayInfested", 
+function (tokens, data) {
+var len = data.length;
+var nTokens = tokens.length;
+var n = 0;
+var max = 0;
+for (var i = 0; i >= 0 && i < len && n < nTokens; i++) {
+var f;
+while (Float.isNaN (f = javajs.util.PT.parseFloat (tokens[n++])) && n < nTokens) {
+}
+if (!Float.isNaN (f)) data[(max = i)] = f;
+if (n == nTokens) break;
+}
+return max + 1;
+}, "~A,~A");
+c$.parseFloatArrayNext = Clazz.defineMethod (c$, "parseFloatArrayNext", 
+function (str, next, f, strStart, strEnd) {
+var n = 0;
+var pt = next[0];
+if (pt >= 0) {
+if (strStart != null) {
+var p = str.indexOf (strStart, pt);
+if (p >= 0) next[0] = p + strStart.length;
+}str = str.substring (next[0]);
+pt = (strEnd == null ? -1 : str.indexOf (strEnd));
+if (pt < 0) pt = str.length;
+ else str = str.substring (0, pt);
+next[0] += pt + 1;
+var tokens = javajs.util.PT.getTokens (str);
+if (f == null) f =  Clazz.newFloatArray (tokens.length, 0);
+n = javajs.util.PT.parseFloatArrayInfested (tokens, f);
+}if (f == null) return  Clazz.newFloatArray (0, 0);
+for (var i = n; i < f.length; i++) f[i] = NaN;
+
+return f;
+}, "~S,~A,~A,~S,~S");
+c$.parseFloatRange = Clazz.defineMethod (c$, "parseFloatRange", 
+function (str, ichMax, next) {
+var cch = str.length;
+if (ichMax > cch) ichMax = cch;
+if (next[0] < 0 || next[0] >= ichMax) return NaN;
+return javajs.util.PT.parseFloatChecked (str, ichMax, next, false);
+}, "~S,~N,~A");
+c$.parseFloatNext = Clazz.defineMethod (c$, "parseFloatNext", 
+function (str, next) {
+var cch = (str == null ? -1 : str.length);
+return (next[0] < 0 || next[0] >= cch ? NaN : javajs.util.PT.parseFloatChecked (str, cch, next, false));
+}, "~S,~A");
+c$.parseFloatStrict = Clazz.defineMethod (c$, "parseFloatStrict", 
+function (str) {
+var cch = str.length;
+if (cch == 0) return NaN;
+return javajs.util.PT.parseFloatChecked (str, cch,  Clazz.newIntArray (-1, [0]), true);
+}, "~S");
+c$.parseFloat = Clazz.defineMethod (c$, "parseFloat", 
+function (str) {
+return javajs.util.PT.parseFloatNext (str,  Clazz.newIntArray (-1, [0]));
+}, "~S");
+c$.parseIntRadix = Clazz.defineMethod (c$, "parseIntRadix", 
+function (s, i) {
+{
+return Integer.parseIntRadix(s, i);
+}}, "~S,~N");
+c$.getTokens = Clazz.defineMethod (c$, "getTokens", 
+function (line) {
+return javajs.util.PT.getTokensAt (line, 0);
+}, "~S");
+c$.parseToken = Clazz.defineMethod (c$, "parseToken", 
+function (str) {
+return javajs.util.PT.parseTokenNext (str,  Clazz.newIntArray (-1, [0]));
+}, "~S");
+c$.parseTrimmed = Clazz.defineMethod (c$, "parseTrimmed", 
+function (str) {
+return javajs.util.PT.parseTrimmedRange (str, 0, str.length);
+}, "~S");
+c$.parseTrimmedAt = Clazz.defineMethod (c$, "parseTrimmedAt", 
+function (str, ichStart) {
+return javajs.util.PT.parseTrimmedRange (str, ichStart, str.length);
+}, "~S,~N");
+c$.parseTrimmedRange = Clazz.defineMethod (c$, "parseTrimmedRange", 
+function (str, ichStart, ichMax) {
+var cch = str.length;
+if (ichMax < cch) cch = ichMax;
+if (cch < ichStart) return "";
+return javajs.util.PT.parseTrimmedChecked (str, ichStart, cch);
+}, "~S,~N,~N");
+c$.getTokensAt = Clazz.defineMethod (c$, "getTokensAt", 
+function (line, ich) {
+if (line == null) return null;
+var cchLine = line.length;
+if (ich < 0 || ich > cchLine) return null;
+var tokenCount = javajs.util.PT.countTokens (line, ich);
+var tokens =  new Array (tokenCount);
+var next =  Clazz.newIntArray (1, 0);
+next[0] = ich;
+for (var i = 0; i < tokenCount; ++i) tokens[i] = javajs.util.PT.parseTokenChecked (line, cchLine, next);
+
+return tokens;
+}, "~S,~N");
+c$.countChar = Clazz.defineMethod (c$, "countChar", 
+function (line, c) {
+var tokenCount = 0;
+var pt = -1;
+while ((pt = line.indexOf (c, pt + 1)) >= 0) tokenCount++;
+
+return tokenCount;
+}, "~S,~S");
+c$.countTokens = Clazz.defineMethod (c$, "countTokens", 
+function (line, ich) {
+var tokenCount = 0;
+if (line != null) {
+var ichMax = line.length;
+while (true) {
+while (ich < ichMax && javajs.util.PT.isWhiteSpace (line, ich)) ++ich;
+
+if (ich == ichMax) break;
+++tokenCount;
+do {
+++ich;
+} while (ich < ichMax && !javajs.util.PT.isWhiteSpace (line, ich));
+}
+}return tokenCount;
+}, "~S,~N");
+c$.parseTokenNext = Clazz.defineMethod (c$, "parseTokenNext", 
+function (str, next) {
+var cch = str.length;
+return (next[0] < 0 || next[0] >= cch ? null : javajs.util.PT.parseTokenChecked (str, cch, next));
+}, "~S,~A");
+c$.parseTokenRange = Clazz.defineMethod (c$, "parseTokenRange", 
+function (str, ichMax, next) {
+var cch = str.length;
+if (ichMax > cch) ichMax = cch;
+return (next[0] < 0 || next[0] >= ichMax ? null : javajs.util.PT.parseTokenChecked (str, ichMax, next));
+}, "~S,~N,~A");
+c$.parseTokenChecked = Clazz.defineMethod (c$, "parseTokenChecked", 
+function (str, ichMax, next) {
+var ich = next[0];
+while (ich < ichMax && javajs.util.PT.isWhiteSpace (str, ich)) ++ich;
+
+var ichNonWhite = ich;
+while (ich < ichMax && !javajs.util.PT.isWhiteSpace (str, ich)) ++ich;
+
+next[0] = ich;
+return (ichNonWhite == ich ? null : str.substring (ichNonWhite, ich));
+}, "~S,~N,~A");
+c$.parseTrimmedChecked = Clazz.defineMethod (c$, "parseTrimmedChecked", 
+function (str, ich, ichMax) {
+while (ich < ichMax && javajs.util.PT.isWhiteSpace (str, ich)) ++ich;
+
+var ichLast = ichMax - 1;
+while (ichLast >= ich && javajs.util.PT.isWhiteSpace (str, ichLast)) --ichLast;
+
+return (ichLast < ich ? "" : str.substring (ich, ichLast + 1));
+}, "~S,~N,~N");
+c$.dVal = Clazz.defineMethod (c$, "dVal", 
+function (s) {
+{
+if(s==null)
+throw new NumberFormatException("null");
+var d=parseFloat(s);
+if(isNaN(d))
+throw new NumberFormatException("Not a Number : "+s);
+return d
+}}, "~S");
+c$.fVal = Clazz.defineMethod (c$, "fVal", 
+function (s) {
+{
+return this.dVal(s);
+}}, "~S");
+c$.parseIntRange = Clazz.defineMethod (c$, "parseIntRange", 
+function (str, ichMax, next) {
+var cch = str.length;
+if (ichMax > cch) ichMax = cch;
+return (next[0] < 0 || next[0] >= ichMax ? -2147483648 : javajs.util.PT.parseIntChecked (str, ichMax, next));
+}, "~S,~N,~A");
+c$.parseFloatArrayData = Clazz.defineMethod (c$, "parseFloatArrayData", 
+function (tokens, data) {
+javajs.util.PT.parseFloatArrayDataN (tokens, data, data.length);
+}, "~A,~A");
+c$.parseFloatArrayDataN = Clazz.defineMethod (c$, "parseFloatArrayDataN", 
+function (tokens, data, nData) {
+for (var i = nData; --i >= 0; ) data[i] = (i >= tokens.length ? NaN : javajs.util.PT.parseFloat (tokens[i]));
+
+}, "~A,~A,~N");
+c$.split = Clazz.defineMethod (c$, "split", 
+function (text, run) {
+if (text.length == 0) return  new Array (0);
+var n = 1;
+var i = text.indexOf (run);
+var lines;
+var runLen = run.length;
+if (i < 0 || runLen == 0) {
+lines =  new Array (1);
+lines[0] = text;
+return lines;
+}var len = text.length - runLen;
+for (; i >= 0 && i < len; n++) i = text.indexOf (run, i + runLen);
+
+lines =  new Array (n);
+i = 0;
+var ipt = 0;
+var pt = 0;
+for (; (ipt = text.indexOf (run, i)) >= 0 && pt + 1 < n; ) {
+lines[pt++] = text.substring (i, ipt);
+i = ipt + runLen;
+}
+if (text.indexOf (run, len) != len) len += runLen;
+lines[pt] = text.substring (i, len);
+return lines;
+}, "~S,~S");
+c$.getQuotedStringAt = Clazz.defineMethod (c$, "getQuotedStringAt", 
+function (line, ipt0) {
+var next =  Clazz.newIntArray (-1, [ipt0]);
+return javajs.util.PT.getQuotedStringNext (line, next);
+}, "~S,~N");
+c$.getQuotedStringNext = Clazz.defineMethod (c$, "getQuotedStringNext", 
+function (line, next) {
+var i = next[0];
+if (i < 0 || (i = line.indexOf ("\"", i)) < 0) return "";
+var pt = i + 1;
+var len = line.length;
+while (++i < len && line.charAt (i) != '"') if (line.charAt (i) == '\\') i++;
+
+next[0] = i + 1;
+return line.substring (pt, i);
+}, "~S,~A");
+c$.getCSVString = Clazz.defineMethod (c$, "getCSVString", 
+function (line, next) {
+var i = next[1];
+if (i < 0 || (i = line.indexOf ("\"", i)) < 0) return null;
+var pt = next[0] = i;
+var len = line.length;
+var escaped = false;
+var haveEscape = false;
+while (++i < len && (line.charAt (i) != '"' || (escaped = (i + 1 < len && line.charAt (i + 1) == '"')))) if (escaped) {
+escaped = false;
+haveEscape = true;
+i++;
+}
+if (i >= len) {
+next[1] = -1;
+return null;
+}next[1] = i + 1;
+var s = line.substring (pt + 1, i);
+return (haveEscape ? javajs.util.PT.rep (javajs.util.PT.rep (s, "\"\"", "\0"), "\0", "\"") : s);
+}, "~S,~A");
+c$.isOneOf = Clazz.defineMethod (c$, "isOneOf", 
+function (key, semiList) {
+if (semiList.length == 0) return false;
+if (semiList.charAt (0) != ';') semiList = ";" + semiList + ";";
+return key.indexOf (";") < 0 && semiList.indexOf (';' + key + ';') >= 0;
+}, "~S,~S");
+c$.getQuotedAttribute = Clazz.defineMethod (c$, "getQuotedAttribute", 
+function (info, name) {
+var i = info.indexOf (name + "=");
+return (i < 0 ? null : javajs.util.PT.getQuotedStringAt (info, i));
+}, "~S,~S");
+c$.approx = Clazz.defineMethod (c$, "approx", 
+function (f, n) {
+return Math.round (f * n) / n;
+}, "~N,~N");
+c$.rep = Clazz.defineMethod (c$, "rep", 
+function (str, strFrom, strTo) {
+if (str == null || strFrom.length == 0 || str.indexOf (strFrom) < 0) return str;
+var isOnce = (strTo.indexOf (strFrom) >= 0);
+do {
+str = str.$replace (strFrom, strTo);
+} while (!isOnce && str.indexOf (strFrom) >= 0);
+return str;
+}, "~S,~S,~S");
+c$.formatF = Clazz.defineMethod (c$, "formatF", 
+function (value, width, precision, alignLeft, zeroPad) {
+return javajs.util.PT.formatS (javajs.util.DF.formatDecimal (value, precision), width, 0, alignLeft, zeroPad);
+}, "~N,~N,~N,~B,~B");
+c$.formatD = Clazz.defineMethod (c$, "formatD", 
+function (value, width, precision, alignLeft, zeroPad, allowOverflow) {
+return javajs.util.PT.formatS (javajs.util.DF.formatDecimal (value, -1 - precision), width, 0, alignLeft, zeroPad);
+}, "~N,~N,~N,~B,~B,~B");
+c$.formatS = Clazz.defineMethod (c$, "formatS", 
+function (value, width, precision, alignLeft, zeroPad) {
+if (value == null) return "";
+var len = value.length;
+if (precision != 2147483647 && precision > 0 && precision < len) value = value.substring (0, precision);
+ else if (precision < 0 && len + precision >= 0) value = value.substring (len + precision + 1);
+var padLength = width - value.length;
+if (padLength <= 0) return value;
+var isNeg = (zeroPad && !alignLeft && value.charAt (0) == '-');
+var padChar = (zeroPad ? '0' : ' ');
+var padChar0 = (isNeg ? '-' : padChar);
+var sb =  new javajs.util.SB ();
+if (alignLeft) sb.append (value);
+sb.appendC (padChar0);
+for (var i = padLength; --i > 0; ) sb.appendC (padChar);
+
+if (!alignLeft) sb.append (isNeg ? padChar + value.substring (1) : value);
+return sb.toString ();
+}, "~S,~N,~N,~B,~B");
+c$.replaceWithCharacter = Clazz.defineMethod (c$, "replaceWithCharacter", 
+function (str, strFrom, chTo) {
+if (str == null) return null;
+for (var i = strFrom.length; --i >= 0; ) str = str.$replace (strFrom.charAt (i), chTo);
+
+return str;
+}, "~S,~S,~S");
+c$.replaceAllCharacters = Clazz.defineMethod (c$, "replaceAllCharacters", 
+function (str, strFrom, strTo) {
+for (var i = strFrom.length; --i >= 0; ) {
+var chFrom = strFrom.substring (i, i + 1);
+str = javajs.util.PT.rep (str, chFrom, strTo);
+}
+return str;
+}, "~S,~S,~S");
+c$.trim = Clazz.defineMethod (c$, "trim", 
+function (str, chars) {
+if (str == null || str.length == 0) return str;
+if (chars.length == 0) return str.trim ();
+var len = str.length;
+var k = 0;
+while (k < len && chars.indexOf (str.charAt (k)) >= 0) k++;
+
+var m = str.length - 1;
+while (m > k && chars.indexOf (str.charAt (m)) >= 0) m--;
+
+return str.substring (k, m + 1);
+}, "~S,~S");
+c$.trimQuotes = Clazz.defineMethod (c$, "trimQuotes", 
+function (value) {
+return (value != null && value.length > 1 && value.startsWith ("\"") && value.endsWith ("\"") ? value.substring (1, value.length - 1) : value);
+}, "~S");
+c$.isNonStringPrimitive = Clazz.defineMethod (c$, "isNonStringPrimitive", 
+function (info) {
+return Clazz.instanceOf (info, Number) || Clazz.instanceOf (info, Boolean);
+}, "~O");
+c$.arrayGet = Clazz.defineMethod (c$, "arrayGet", 
+($fz = function (info, i) {
+{
+return info[i];
+}}, $fz.isPrivate = true, $fz), "~O,~N");
+c$.toJSON = Clazz.defineMethod (c$, "toJSON", 
+function (infoType, info) {
+if (info == null) return javajs.util.PT.packageJSON (infoType, null);
+if (javajs.util.PT.isNonStringPrimitive (info)) return javajs.util.PT.packageJSON (infoType, info.toString ());
+var s = null;
+var sb = null;
+while (true) {
+if (Clazz.instanceOf (info, String)) {
+s = info;
+{
+if (typeof s == "undefined") s = "null"
+}if (s.indexOf ("{\"") != 0) {
+s = javajs.util.PT.rep (s, "\"", "\\\"");
+s = javajs.util.PT.rep (s, "\n", "\\n");
+s = "\"" + s + "\"";
+}break;
+}if (Clazz.instanceOf (info, javajs.api.JSONEncodable)) {
+if ((s = (info).toJSON ()) == null) s = "null";
+break;
+}sb =  new javajs.util.SB ();
+if (Clazz.instanceOf (info, java.util.Map)) {
+sb.append ("{ ");
+var sep = "";
+for (var key, $key = (info).keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) {
+sb.append (sep).append (javajs.util.PT.packageJSON (key, javajs.util.PT.toJSON (null, (info).get (key))));
+sep = ",";
+}
+sb.append (" }");
+break;
+}if (Clazz.instanceOf (info, javajs.util.Lst)) {
+sb.append ("[ ");
+var n = (info).size ();
+for (var i = 0; i < n; i++) {
+if (i > 0) sb.appendC (',');
+sb.append (javajs.util.PT.toJSON (null, (info).get (i)));
+}
+sb.append (" ]");
+break;
+}if (Clazz.instanceOf (info, javajs.util.M34)) {
+var len = (Clazz.instanceOf (info, javajs.util.M4) ? 4 : 3);
+var x =  Clazz.newFloatArray (len, 0);
+var m = info;
+sb.appendC ('[');
+for (var i = 0; i < len; i++) {
+if (i > 0) sb.appendC (',');
+m.getRow (i, x);
+sb.append (javajs.util.PT.toJSON (null, x));
+}
+sb.appendC (']');
+break;
+}s = javajs.util.PT.nonArrayString (info);
+if (s == null) {
+sb.append ("[");
+var n = javajs.util.AU.getLength (info);
+for (var i = 0; i < n; i++) {
+if (i > 0) sb.appendC (',');
+sb.append (javajs.util.PT.toJSON (null, javajs.util.PT.arrayGet (info, i)));
+}
+sb.append ("]");
+break;
+}info = info.toString ();
+}
+return javajs.util.PT.packageJSON (infoType, (s == null ? sb.toString () : s));
+}, "~S,~O");
+c$.nonArrayString = Clazz.defineMethod (c$, "nonArrayString", 
+function (x) {
+{
+var s = x.toString(); return (s.startsWith("[object") &&
+s.endsWith("Array]") ? null : s);
+}}, "~O");
+c$.byteArrayToJSON = Clazz.defineMethod (c$, "byteArrayToJSON", 
+function (data) {
+var sb =  new javajs.util.SB ();
+sb.append ("[");
+var n = data.length;
+for (var i = 0; i < n; i++) {
+if (i > 0) sb.appendC (',');
+sb.appendI (data[i] & 0xFF);
+}
+sb.append ("]");
+return sb.toString ();
+}, "~A");
+c$.packageJSON = Clazz.defineMethod (c$, "packageJSON", 
+function (infoType, info) {
+return (infoType == null ? info : "\"" + infoType + "\": " + info);
+}, "~S,~S");
+c$.escapeUrl = Clazz.defineMethod (c$, "escapeUrl", 
+function (url) {
+url = javajs.util.PT.rep (url, "\n", "");
+url = javajs.util.PT.rep (url, "%", "%25");
+url = javajs.util.PT.rep (url, "#", "%23");
+url = javajs.util.PT.rep (url, "[", "%5B");
+url = javajs.util.PT.rep (url, "]", "%5D");
+url = javajs.util.PT.rep (url, " ", "%20");
+return url;
+}, "~S");
+c$.esc = Clazz.defineMethod (c$, "esc", 
+function (str) {
+if (str == null || str.length == 0) return "\"\"";
+var haveEscape = false;
+var i = 0;
+for (; i < "\\\\\tt\rr\nn\"\"".length; i += 2) if (str.indexOf ("\\\\\tt\rr\nn\"\"".charAt (i)) >= 0) {
+haveEscape = true;
+break;
+}
+if (haveEscape) while (i < "\\\\\tt\rr\nn\"\"".length) {
+var pt = -1;
+var ch = "\\\\\tt\rr\nn\"\"".charAt (i++);
+var ch2 = "\\\\\tt\rr\nn\"\"".charAt (i++);
+var sb =  new javajs.util.SB ();
+var pt0 = 0;
+while ((pt = str.indexOf (ch, pt + 1)) >= 0) {
+sb.append (str.substring (pt0, pt)).appendC ('\\').appendC (ch2);
+pt0 = pt + 1;
+}
+sb.append (str.substring (pt0, str.length));
+str = sb.toString ();
+}
+return "\"" + javajs.util.PT.escUnicode (str) + "\"";
+}, "~S");
+c$.escUnicode = Clazz.defineMethod (c$, "escUnicode", 
+function (str) {
+for (var i = str.length; --i >= 0; ) if (str.charCodeAt (i) > 0x7F) {
+var s = "0000" + Integer.toHexString (str.charCodeAt (i));
+str = str.substring (0, i) + "\\u" + s.substring (s.length - 4) + str.substring (i + 1);
+}
+return str;
+}, "~S");
+c$.escF = Clazz.defineMethod (c$, "escF", 
+function (f) {
+var sf = "" + f;
+{
+if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0)
+sf += ".0";
+}return sf;
+}, "~N");
+c$.join = Clazz.defineMethod (c$, "join", 
+function (s, c, i0) {
+if (s.length < i0) return null;
+var sb =  new javajs.util.SB ();
+sb.append (s[i0++]);
+for (var i = i0; i < s.length; i++) sb.appendC (c).append (s[i]);
+
+return sb.toString ();
+}, "~A,~S,~N");
+c$.isLike = Clazz.defineMethod (c$, "isLike", 
+function (a, b) {
+var areEqual = a.equals (b);
+if (areEqual) return true;
+var isStart = b.startsWith ("*");
+var isEnd = b.endsWith ("*");
+return (!isStart && !isEnd) ? areEqual : isStart && isEnd ? b.length == 1 || a.contains (b.substring (1, b.length - 1)) : isStart ? a.endsWith (b.substring (1)) : a.startsWith (b.substring (0, b.length - 1));
+}, "~S,~S");
+c$.getMapValueNoCase = Clazz.defineMethod (c$, "getMapValueNoCase", 
+function (h, key) {
+if ("this".equals (key)) return h;
+var val = h.get (key);
+if (val == null) for (var e, $e = h.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) if (e.getKey ().equalsIgnoreCase (key)) return e.getValue ();
+
+return val;
+}, "java.util.Map,~S");
+c$.clean = Clazz.defineMethod (c$, "clean", 
+function (s) {
+return javajs.util.PT.rep (javajs.util.PT.replaceAllCharacters (s, " \t\n\r", " "), "  ", " ").trim ();
+}, "~S");
+c$.fdup = Clazz.defineMethod (c$, "fdup", 
+function (f, pt, n) {
+var ch;
+var count = 0;
+for (var i = pt; --i >= 1; ) {
+if (javajs.util.PT.isDigit (ch = f.charAt (i))) continue;
+switch (ch) {
+case '.':
+if (count++ != 0) return f;
+continue;
+case '-':
+if (i != 1 && f.charAt (i - 1) != '.') return f;
+continue;
+default:
+return f;
+}
+}
+var s = f.substring (0, pt + 1);
+var sb =  new javajs.util.SB ();
+for (var i = 0; i < n; i++) sb.append (s);
+
+sb.append (f.substring (pt + 1));
+return sb.toString ();
+}, "~S,~N,~N");
+c$.formatString = Clazz.defineMethod (c$, "formatString", 
+function (strFormat, key, strT, floatT, doubleT, doOne) {
+if (strFormat == null) return null;
+if ("".equals (strFormat)) return "";
+var len = key.length;
+if (strFormat.indexOf ("%") < 0 || len == 0 || strFormat.indexOf (key) < 0) return strFormat;
+var strLabel = "";
+var ich;
+var ichPercent;
+var ichKey;
+for (ich = 0; (ichPercent = strFormat.indexOf ('%', ich)) >= 0 && (ichKey = strFormat.indexOf (key, ichPercent + 1)) >= 0; ) {
+if (ich != ichPercent) strLabel += strFormat.substring (ich, ichPercent);
+ich = ichPercent + 1;
+if (ichKey > ichPercent + 6) {
+strLabel += '%';
+continue;
+}try {
+var alignLeft = false;
+if (strFormat.charAt (ich) == '-') {
+alignLeft = true;
+++ich;
+}var zeroPad = false;
+if (strFormat.charAt (ich) == '0') {
+zeroPad = true;
+++ich;
+}var ch;
+var width = 0;
+while ((ch = strFormat.charAt (ich)) >= '0' && (ch <= '9')) {
+width = (10 * width) + (ch.charCodeAt (0) - 48);
+++ich;
+}
+var precision = 2147483647;
+var isExponential = false;
+if (strFormat.charAt (ich) == '.') {
+++ich;
+if ((ch = strFormat.charAt (ich)) == '-') {
+isExponential = true;
+++ich;
+}if ((ch = strFormat.charAt (ich)) >= '0' && ch <= '9') {
+precision = ch.charCodeAt (0) - 48;
+++ich;
+}if (isExponential) precision = -precision - (strT == null ? 1 : 0);
+}var st = strFormat.substring (ich, ich + len);
+if (!st.equals (key)) {
+ich = ichPercent + 1;
+strLabel += '%';
+continue;
+}ich += len;
+if (!Float.isNaN (floatT)) strLabel += javajs.util.PT.formatF (floatT, width, precision, alignLeft, zeroPad);
+ else if (strT != null) strLabel += javajs.util.PT.formatS (strT, width, precision, alignLeft, zeroPad);
+ else if (!Double.isNaN (doubleT)) strLabel += javajs.util.PT.formatD (doubleT, width, precision, alignLeft, zeroPad, true);
+if (doOne) break;
+} catch (ioobe) {
+if (Clazz.exceptionOf (ioobe, IndexOutOfBoundsException)) {
+ich = ichPercent;
+break;
+} else {
+throw ioobe;
+}
+}
+}
+strLabel += strFormat.substring (ich);
+return strLabel;
+}, "~S,~S,~S,~N,~N,~B");
+c$.formatStringS = Clazz.defineMethod (c$, "formatStringS", 
+function (strFormat, key, strT) {
+return javajs.util.PT.formatString (strFormat, key, strT, NaN, NaN, false);
+}, "~S,~S,~S");
+c$.formatStringF = Clazz.defineMethod (c$, "formatStringF", 
+function (strFormat, key, floatT) {
+return javajs.util.PT.formatString (strFormat, key, null, floatT, NaN, false);
+}, "~S,~S,~N");
+c$.formatStringI = Clazz.defineMethod (c$, "formatStringI", 
+function (strFormat, key, intT) {
+return javajs.util.PT.formatString (strFormat, key, "" + intT, NaN, NaN, false);
+}, "~S,~S,~N");
+c$.sprintf = Clazz.defineMethod (c$, "sprintf", 
+function (strFormat, list, values) {
+if (values == null) return strFormat;
+var n = list.length;
+if (n == values.length) try {
+for (var o = 0; o < n; o++) {
+if (values[o] == null) continue;
+switch (list.charAt (o)) {
+case 's':
+strFormat = javajs.util.PT.formatString (strFormat, "s", values[o], NaN, NaN, true);
+break;
+case 'f':
+strFormat = javajs.util.PT.formatString (strFormat, "f", null, (values[o]).floatValue (), NaN, true);
+break;
+case 'i':
+strFormat = javajs.util.PT.formatString (strFormat, "d", "" + values[o], NaN, NaN, true);
+strFormat = javajs.util.PT.formatString (strFormat, "i", "" + values[o], NaN, NaN, true);
+break;
+case 'd':
+strFormat = javajs.util.PT.formatString (strFormat, "e", null, NaN, (values[o]).doubleValue (), true);
+break;
+case 'p':
+var pVal = values[o];
+strFormat = javajs.util.PT.formatString (strFormat, "p", null, pVal.x, NaN, true);
+strFormat = javajs.util.PT.formatString (strFormat, "p", null, pVal.y, NaN, true);
+strFormat = javajs.util.PT.formatString (strFormat, "p", null, pVal.z, NaN, true);
+break;
+case 'q':
+var qVal = values[o];
+strFormat = javajs.util.PT.formatString (strFormat, "q", null, qVal.x, NaN, true);
+strFormat = javajs.util.PT.formatString (strFormat, "q", null, qVal.y, NaN, true);
+strFormat = javajs.util.PT.formatString (strFormat, "q", null, qVal.z, NaN, true);
+strFormat = javajs.util.PT.formatString (strFormat, "q", null, qVal.w, NaN, true);
+break;
+case 'S':
+var sVal = values[o];
+for (var i = 0; i < sVal.length; i++) strFormat = javajs.util.PT.formatString (strFormat, "s", sVal[i], NaN, NaN, true);
+
+break;
+case 'F':
+var fVal = values[o];
+for (var i = 0; i < fVal.length; i++) strFormat = javajs.util.PT.formatString (strFormat, "f", null, fVal[i], NaN, true);
+
+break;
+case 'I':
+var iVal = values[o];
+for (var i = 0; i < iVal.length; i++) strFormat = javajs.util.PT.formatString (strFormat, "d", "" + iVal[i], NaN, NaN, true);
+
+for (var i = 0; i < iVal.length; i++) strFormat = javajs.util.PT.formatString (strFormat, "i", "" + iVal[i], NaN, NaN, true);
+
+break;
+case 'D':
+var dVal = values[o];
+for (var i = 0; i < dVal.length; i++) strFormat = javajs.util.PT.formatString (strFormat, "e", null, NaN, dVal[i], true);
+
+}
+}
+return javajs.util.PT.rep (strFormat, "%%", "%");
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+System.out.println ("TextFormat.sprintf error " + list + " " + strFormat);
+return javajs.util.PT.rep (strFormat, "%", "?");
+}, "~S,~S,~A");
+c$.formatCheck = Clazz.defineMethod (c$, "formatCheck", 
+function (strFormat) {
+if (strFormat == null || strFormat.indexOf ('p') < 0 && strFormat.indexOf ('q') < 0) return strFormat;
+strFormat = javajs.util.PT.rep (strFormat, "%%", "\1");
+strFormat = javajs.util.PT.rep (strFormat, "%p", "%6.2p");
+strFormat = javajs.util.PT.rep (strFormat, "%q", "%6.2q");
+var format = javajs.util.PT.split (strFormat, "%");
+var sb =  new javajs.util.SB ();
+sb.append (format[0]);
+for (var i = 1; i < format.length; i++) {
+var f = "%" + format[i];
+var pt;
+if (f.length >= 3) {
+if ((pt = f.indexOf ('p')) >= 0) f = javajs.util.PT.fdup (f, pt, 3);
+if ((pt = f.indexOf ('q')) >= 0) f = javajs.util.PT.fdup (f, pt, 4);
+}sb.append (f);
+}
+return sb.toString ().$replace ('\1', '%');
+}, "~S");
+c$.leftJustify = Clazz.defineMethod (c$, "leftJustify", 
+function (s, s1, s2) {
+s.append (s2);
+var n = s1.length - s2.length;
+if (n > 0) s.append (s1.substring (0, n));
+}, "javajs.util.SB,~S,~S");
+c$.rightJustify = Clazz.defineMethod (c$, "rightJustify", 
+function (s, s1, s2) {
+var n = s1.length - s2.length;
+if (n > 0) s.append (s1.substring (0, n));
+s.append (s2);
+}, "javajs.util.SB,~S,~S");
+c$.safeTruncate = Clazz.defineMethod (c$, "safeTruncate", 
+function (f, n) {
+if (f > -0.001 && f < 0.001) f = 0;
+return (f + "         ").substring (0, n);
+}, "~N,~N");
+c$.isWild = Clazz.defineMethod (c$, "isWild", 
+function (s) {
+return s != null && (s.indexOf ("*") >= 0 || s.indexOf ("?") >= 0);
+}, "~S");
+c$.isMatch = Clazz.defineMethod (c$, "isMatch", 
+function (search, match, checkStar, allowInitialStar) {
+if (search.equals (match)) return true;
+var mLen = match.length;
+if (mLen == 0) return false;
+var isStar0 = (checkStar && allowInitialStar ? match.charAt (0) == '*' : false);
+if (mLen == 1 && isStar0) return true;
+var isStar1 = (checkStar && match.endsWith ("*"));
+var haveQ = (match.indexOf ('?') >= 0);
+if (!haveQ) {
+if (isStar0) return (isStar1 ? (mLen < 3 || search.indexOf (match.substring (1, mLen - 1)) >= 0) : search.endsWith (match.substring (1)));
+ else if (isStar1) return search.startsWith (match.substring (0, mLen - 1));
+}var sLen = search.length;
+var qqqq = "????";
+var nq = 4;
+while (nq < sLen) {
+qqqq += qqqq;
+nq += 4;
+}
+if (checkStar) {
+if (isStar0) {
+match = qqqq + match.substring (1);
+mLen += nq - 1;
+}if (isStar1) {
+match = match.substring (0, mLen - 1) + qqqq;
+mLen += nq - 1;
+}}if (mLen < sLen) return false;
+var ich = 0;
+while (mLen > sLen) {
+if (allowInitialStar && match.charAt (ich) == '?') {
+++ich;
+} else if (match.charAt (ich + mLen - 1) != '?') {
+return false;
+}--mLen;
+}
+for (var i = sLen; --i >= 0; ) {
+var chm = match.charAt (ich + i);
+if (chm == '?') continue;
+var chs = search.charAt (i);
+if (chm != chs && (chm != '\1' || chs != '?')) return false;
+}
+return true;
+}, "~S,~S,~B,~B");
+c$.replaceQuotedStrings = Clazz.defineMethod (c$, "replaceQuotedStrings", 
+function (s, list, newList) {
+var n = list.size ();
+for (var i = 0; i < n; i++) {
+var name = list.get (i);
+var newName = newList.get (i);
+if (!newName.equals (name)) s = javajs.util.PT.rep (s, "\"" + name + "\"", "\"" + newName + "\"");
+}
+return s;
+}, "~S,javajs.util.Lst,javajs.util.Lst");
+c$.replaceStrings = Clazz.defineMethod (c$, "replaceStrings", 
+function (s, list, newList) {
+var n = list.size ();
+for (var i = 0; i < n; i++) {
+var name = list.get (i);
+var newName = newList.get (i);
+if (!newName.equals (name)) s = javajs.util.PT.rep (s, name, newName);
+}
+return s;
+}, "~S,javajs.util.Lst,javajs.util.Lst");
+c$.isDigit = Clazz.defineMethod (c$, "isDigit", 
+function (ch) {
+var c = (ch).charCodeAt (0);
+return (48 <= c && c <= 57);
+}, "~S");
+c$.isUpperCase = Clazz.defineMethod (c$, "isUpperCase", 
+function (ch) {
+var c = (ch).charCodeAt (0);
+return (65 <= c && c <= 90);
+}, "~S");
+c$.isLowerCase = Clazz.defineMethod (c$, "isLowerCase", 
+function (ch) {
+var c = (ch).charCodeAt (0);
+return (97 <= c && c <= 122);
+}, "~S");
+c$.isLetter = Clazz.defineMethod (c$, "isLetter", 
+function (ch) {
+var c = (ch).charCodeAt (0);
+return (65 <= c && c <= 90 || 97 <= c && c <= 122);
+}, "~S");
+c$.isLetterOrDigit = Clazz.defineMethod (c$, "isLetterOrDigit", 
+function (ch) {
+var c = (ch).charCodeAt (0);
+return (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57);
+}, "~S");
+c$.isWhitespace = Clazz.defineMethod (c$, "isWhitespace", 
+function (ch) {
+var c = (ch).charCodeAt (0);
+return (c >= 0x1c && c <= 0x20 || c >= 0x9 && c <= 0xd);
+}, "~S");
+c$.fixPtFloats = Clazz.defineMethod (c$, "fixPtFloats", 
+function (pt, f) {
+pt.x = Math.round (pt.x * f) / f;
+pt.y = Math.round (pt.y * f) / f;
+pt.z = Math.round (pt.z * f) / f;
+}, "javajs.util.T3,~N");
+c$.fixDouble = Clazz.defineMethod (c$, "fixDouble", 
+function (d, f) {
+return Math.round (d * f) / f;
+}, "~N,~N");
+c$.parseFloatFraction = Clazz.defineMethod (c$, "parseFloatFraction", 
+function (s) {
+var pt = s.indexOf ("/");
+return (pt < 0 ? javajs.util.PT.parseFloat (s) : javajs.util.PT.parseFloat (s.substring (0, pt)) / javajs.util.PT.parseFloat (s.substring (pt + 1)));
+}, "~S");
+Clazz.defineStatics (c$,
+"tensScale",  Clazz.newFloatArray (-1, [10, 100, 1000, 10000, 100000, 1000000]),
+"decimalScale",  Clazz.newFloatArray (-1, [0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001, 0.0000001, 0.00000001, 0.000000001]),
+"FLOAT_MIN_SAFE", 2E-45,
+"escapable", "\\\\\tt\rr\nn\"\"",
+"FRACTIONAL_PRECISION", 100000,
+"CARTESIAN_PRECISION", 10000);
+});
index 0db2469..bfc5444 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.util.P4"], "javajs.util.Quat", ["java.lang.Float", "javajs.util.A4", "$.M3", "$.V3"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.q0 = 0;\r
-this.q1 = 0;\r
-this.q2 = 0;\r
-this.q3 = 0;\r
-this.mat = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "Quat");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-this.q0 = 1;\r
-});\r
-c$.newQ = Clazz.defineMethod (c$, "newQ", \r
-function (q) {\r
-var q1 =  new javajs.util.Quat ();\r
-q1.set (q);\r
-return q1;\r
-}, "javajs.util.Quat");\r
-c$.newVA = Clazz.defineMethod (c$, "newVA", \r
-function (v, theta) {\r
-var q =  new javajs.util.Quat ();\r
-q.setTA (v, theta);\r
-return q;\r
-}, "javajs.util.T3,~N");\r
-c$.newM = Clazz.defineMethod (c$, "newM", \r
-function (mat) {\r
-var q =  new javajs.util.Quat ();\r
-q.setM (javajs.util.M3.newM3 (mat));\r
-return q;\r
-}, "javajs.util.M3");\r
-c$.newAA = Clazz.defineMethod (c$, "newAA", \r
-function (a) {\r
-var q =  new javajs.util.Quat ();\r
-q.setAA (a);\r
-return q;\r
-}, "javajs.util.A4");\r
-c$.newP4 = Clazz.defineMethod (c$, "newP4", \r
-function (pt) {\r
-var q =  new javajs.util.Quat ();\r
-q.setP4 (pt);\r
-return q;\r
-}, "javajs.util.P4");\r
-c$.new4 = Clazz.defineMethod (c$, "new4", \r
-function (q1, q2, q3, q0) {\r
-var q =  new javajs.util.Quat ();\r
-if (q0 < -1) {\r
-q.q0 = -1;\r
-return q;\r
-}if (q0 > 1) {\r
-q.q0 = 1;\r
-return q;\r
-}q.q0 = q0;\r
-q.q1 = q1;\r
-q.q2 = q2;\r
-q.q3 = q3;\r
-return q;\r
-}, "~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "set", \r
-function (q) {\r
-this.q0 = q.q0;\r
-this.q1 = q.q1;\r
-this.q2 = q.q2;\r
-this.q3 = q.q3;\r
-}, "javajs.util.Quat");\r
-Clazz.defineMethod (c$, "setP4", \r
-($fz = function (pt) {\r
-var factor = (pt == null ? 0 : pt.distance4 (javajs.util.Quat.qZero));\r
-if (factor == 0) {\r
-this.q0 = 1;\r
-return;\r
-}this.q0 = pt.w / factor;\r
-this.q1 = pt.x / factor;\r
-this.q2 = pt.y / factor;\r
-this.q3 = pt.z / factor;\r
-}, $fz.isPrivate = true, $fz), "javajs.util.P4");\r
-Clazz.defineMethod (c$, "setTA", \r
-function (pt, theta) {\r
-if (pt.x == 0 && pt.y == 0 && pt.z == 0) {\r
-this.q0 = 1;\r
-return;\r
-}var fact = (Math.sin (theta / 2 * 0.017453292519943295) / Math.sqrt (pt.x * pt.x + pt.y * pt.y + pt.z * pt.z));\r
-this.q0 = (Math.cos (theta / 2 * 0.017453292519943295));\r
-this.q1 = (pt.x * fact);\r
-this.q2 = (pt.y * fact);\r
-this.q3 = (pt.z * fact);\r
-}, "javajs.util.T3,~N");\r
-Clazz.defineMethod (c$, "setAA", \r
-function (a) {\r
-var aa = javajs.util.A4.newAA (a);\r
-if (aa.angle == 0) aa.y = 1;\r
-this.setM ( new javajs.util.M3 ().setAA (aa));\r
-}, "javajs.util.A4");\r
-Clazz.defineMethod (c$, "setM", \r
-($fz = function (mat) {\r
-this.mat = mat;\r
-var trace = mat.m00 + mat.m11 + mat.m22;\r
-var temp;\r
-var w;\r
-var x;\r
-var y;\r
-var z;\r
-if (trace >= 0.5) {\r
-w = Math.sqrt (1.0 + trace);\r
-x = (mat.m21 - mat.m12) / w;\r
-y = (mat.m02 - mat.m20) / w;\r
-z = (mat.m10 - mat.m01) / w;\r
-} else if ((temp = mat.m00 + mat.m00 - trace) >= 0.5) {\r
-x = Math.sqrt (1.0 + temp);\r
-w = (mat.m21 - mat.m12) / x;\r
-y = (mat.m10 + mat.m01) / x;\r
-z = (mat.m20 + mat.m02) / x;\r
-} else if ((temp = mat.m11 + mat.m11 - trace) >= 0.5 || mat.m11 > mat.m22) {\r
-y = Math.sqrt (1.0 + temp);\r
-w = (mat.m02 - mat.m20) / y;\r
-x = (mat.m10 + mat.m01) / y;\r
-z = (mat.m21 + mat.m12) / y;\r
-} else {\r
-z = Math.sqrt (1.0 + mat.m22 + mat.m22 - trace);\r
-w = (mat.m10 - mat.m01) / z;\r
-x = (mat.m20 + mat.m02) / z;\r
-y = (mat.m21 + mat.m12) / z;\r
-}this.q0 = (w * 0.5);\r
-this.q1 = (x * 0.5);\r
-this.q2 = (y * 0.5);\r
-this.q3 = (z * 0.5);\r
-}, $fz.isPrivate = true, $fz), "javajs.util.M3");\r
-Clazz.defineMethod (c$, "setRef", \r
-function (qref) {\r
-if (qref == null) {\r
-this.mul (this.getFixFactor ());\r
-return;\r
-}if (this.dot (qref) >= 0) return;\r
-this.q0 *= -1;\r
-this.q1 *= -1;\r
-this.q2 *= -1;\r
-this.q3 *= -1;\r
-}, "javajs.util.Quat");\r
-c$.getQuaternionFrame = Clazz.defineMethod (c$, "getQuaternionFrame", \r
-function (center, x, xy) {\r
-var vA = javajs.util.V3.newV (x);\r
-var vB = javajs.util.V3.newV (xy);\r
-if (center != null) {\r
-vA.sub (center);\r
-vB.sub (center);\r
-}return javajs.util.Quat.getQuaternionFrameV (vA, vB, null, false);\r
-}, "javajs.util.P3,javajs.util.T3,javajs.util.T3");\r
-c$.getQuaternionFrameV = Clazz.defineMethod (c$, "getQuaternionFrameV", \r
-function (vA, vB, vC, yBased) {\r
-if (vC == null) {\r
-vC =  new javajs.util.V3 ();\r
-vC.cross (vA, vB);\r
-if (yBased) vA.cross (vB, vC);\r
-}var vBprime =  new javajs.util.V3 ();\r
-vBprime.cross (vC, vA);\r
-vA.normalize ();\r
-vBprime.normalize ();\r
-vC.normalize ();\r
-var mat =  new javajs.util.M3 ();\r
-mat.setColumnV (0, vA);\r
-mat.setColumnV (1, vBprime);\r
-mat.setColumnV (2, vC);\r
-var q = javajs.util.Quat.newM (mat);\r
-return q;\r
-}, "javajs.util.V3,javajs.util.V3,javajs.util.V3,~B");\r
-Clazz.defineMethod (c$, "getMatrix", \r
-function () {\r
-if (this.mat == null) this.setMatrix ();\r
-return this.mat;\r
-});\r
-Clazz.defineMethod (c$, "setMatrix", \r
-($fz = function () {\r
-this.mat =  new javajs.util.M3 ();\r
-this.mat.m00 = this.q0 * this.q0 + this.q1 * this.q1 - this.q2 * this.q2 - this.q3 * this.q3;\r
-this.mat.m01 = 2 * this.q1 * this.q2 - 2 * this.q0 * this.q3;\r
-this.mat.m02 = 2 * this.q1 * this.q3 + 2 * this.q0 * this.q2;\r
-this.mat.m10 = 2 * this.q1 * this.q2 + 2 * this.q0 * this.q3;\r
-this.mat.m11 = this.q0 * this.q0 - this.q1 * this.q1 + this.q2 * this.q2 - this.q3 * this.q3;\r
-this.mat.m12 = 2 * this.q2 * this.q3 - 2 * this.q0 * this.q1;\r
-this.mat.m20 = 2 * this.q1 * this.q3 - 2 * this.q0 * this.q2;\r
-this.mat.m21 = 2 * this.q2 * this.q3 + 2 * this.q0 * this.q1;\r
-this.mat.m22 = this.q0 * this.q0 - this.q1 * this.q1 - this.q2 * this.q2 + this.q3 * this.q3;\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "add", \r
-function (x) {\r
-return javajs.util.Quat.newVA (this.getNormal (), this.getTheta () + x);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "mul", \r
-function (x) {\r
-return (x == 1 ? javajs.util.Quat.new4 (this.q1, this.q2, this.q3, this.q0) : javajs.util.Quat.newVA (this.getNormal (), this.getTheta () * x));\r
-}, "~N");\r
-Clazz.defineMethod (c$, "mulQ", \r
-function (p) {\r
-return javajs.util.Quat.new4 (this.q0 * p.q1 + this.q1 * p.q0 + this.q2 * p.q3 - this.q3 * p.q2, this.q0 * p.q2 + this.q2 * p.q0 + this.q3 * p.q1 - this.q1 * p.q3, this.q0 * p.q3 + this.q3 * p.q0 + this.q1 * p.q2 - this.q2 * p.q1, this.q0 * p.q0 - this.q1 * p.q1 - this.q2 * p.q2 - this.q3 * p.q3);\r
-}, "javajs.util.Quat");\r
-Clazz.defineMethod (c$, "div", \r
-function (p) {\r
-return this.mulQ (p.inv ());\r
-}, "javajs.util.Quat");\r
-Clazz.defineMethod (c$, "divLeft", \r
-function (p) {\r
-return this.inv ().mulQ (p);\r
-}, "javajs.util.Quat");\r
-Clazz.defineMethod (c$, "dot", \r
-function (q) {\r
-return this.q0 * q.q0 + this.q1 * q.q1 + this.q2 * q.q2 + this.q3 * q.q3;\r
-}, "javajs.util.Quat");\r
-Clazz.defineMethod (c$, "inv", \r
-function () {\r
-return javajs.util.Quat.new4 (-this.q1, -this.q2, -this.q3, this.q0);\r
-});\r
-Clazz.defineMethod (c$, "negate", \r
-function () {\r
-return javajs.util.Quat.new4 (-this.q1, -this.q2, -this.q3, -this.q0);\r
-});\r
-Clazz.defineMethod (c$, "getFixFactor", \r
-($fz = function () {\r
-return (this.q0 < 0 || this.q0 == 0 && (this.q1 < 0 || this.q1 == 0 && (this.q2 < 0 || this.q2 == 0 && this.q3 < 0)) ? -1 : 1);\r
-}, $fz.isPrivate = true, $fz));\r
-Clazz.defineMethod (c$, "getVector", \r
-function (i) {\r
-return this.getVectorScaled (i, 1);\r
-}, "~N");\r
-Clazz.defineMethod (c$, "getVectorScaled", \r
-function (i, scale) {\r
-if (i == -1) {\r
-scale *= this.getFixFactor ();\r
-return javajs.util.V3.new3 (this.q1 * scale, this.q2 * scale, this.q3 * scale);\r
-}if (this.mat == null) this.setMatrix ();\r
-var v =  new javajs.util.V3 ();\r
-this.mat.getColumnV (i, v);\r
-if (scale != 1) v.scale (scale);\r
-return v;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "getNormal", \r
-function () {\r
-var v = javajs.util.Quat.getRawNormal (this);\r
-v.scale (this.getFixFactor ());\r
-return v;\r
-});\r
-c$.getRawNormal = Clazz.defineMethod (c$, "getRawNormal", \r
-($fz = function (q) {\r
-var v = javajs.util.V3.new3 (q.q1, q.q2, q.q3);\r
-if (v.length () == 0) return javajs.util.V3.new3 (0, 0, 1);\r
-v.normalize ();\r
-return v;\r
-}, $fz.isPrivate = true, $fz), "javajs.util.Quat");\r
-Clazz.defineMethod (c$, "getTheta", \r
-function () {\r
-return (Math.acos (Math.abs (this.q0)) * 2 * 180 / 3.141592653589793);\r
-});\r
-Clazz.defineMethod (c$, "getThetaRadians", \r
-function () {\r
-return (Math.acos (Math.abs (this.q0)) * 2);\r
-});\r
-Clazz.defineMethod (c$, "getNormalDirected", \r
-function (v0) {\r
-var v = this.getNormal ();\r
-if (v.x * v0.x + v.y * v0.y + v.z * v0.z < 0) {\r
-v.scale (-1);\r
-}return v;\r
-}, "javajs.util.V3");\r
-Clazz.defineMethod (c$, "get3dProjection", \r
-function (v3d) {\r
-v3d.set (this.q1, this.q2, this.q3);\r
-return v3d;\r
-}, "javajs.util.V3");\r
-Clazz.defineMethod (c$, "getThetaDirected", \r
-function (axisAngle) {\r
-var theta = this.getTheta ();\r
-var v = this.getNormal ();\r
-if (axisAngle.x * this.q1 + axisAngle.y * this.q2 + axisAngle.z * this.q3 < 0) {\r
-v.scale (-1);\r
-theta = -theta;\r
-}axisAngle.set4 (v.x, v.y, v.z, theta);\r
-return axisAngle;\r
-}, "javajs.util.P4");\r
-Clazz.defineMethod (c$, "getThetaDirectedV", \r
-function (vector) {\r
-var theta = this.getTheta ();\r
-var v = this.getNormal ();\r
-if (vector.x * this.q1 + vector.y * this.q2 + vector.z * this.q3 < 0) {\r
-v.scale (-1);\r
-theta = -theta;\r
-}return theta;\r
-}, "javajs.util.V3");\r
-Clazz.defineMethod (c$, "toPoint4f", \r
-function () {\r
-return javajs.util.P4.new4 (this.q1, this.q2, this.q3, this.q0);\r
-});\r
-Clazz.defineMethod (c$, "toAxisAngle4f", \r
-function () {\r
-var theta = 2 * Math.acos (Math.abs (this.q0));\r
-var sinTheta2 = Math.sin (theta / 2);\r
-var v = this.getNormal ();\r
-if (sinTheta2 < 0) {\r
-v.scale (-1);\r
-theta = 3.141592653589793 - theta;\r
-}return javajs.util.A4.newVA (v, theta);\r
-});\r
-Clazz.defineMethod (c$, "transform2", \r
-function (pt, ptNew) {\r
-if (this.mat == null) this.setMatrix ();\r
-this.mat.rotate2 (pt, ptNew);\r
-return ptNew;\r
-}, "javajs.util.T3,javajs.util.T3");\r
-Clazz.defineMethod (c$, "leftDifference", \r
-function (q2) {\r
-var q2adjusted = (this.dot (q2) < 0 ? q2.negate () : q2);\r
-return this.inv ().mulQ (q2adjusted);\r
-}, "javajs.util.Quat");\r
-Clazz.defineMethod (c$, "rightDifference", \r
-function (q2) {\r
-var q2adjusted = (this.dot (q2) < 0 ? q2.negate () : q2);\r
-return this.mulQ (q2adjusted.inv ());\r
-}, "javajs.util.Quat");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "{" + this.q1 + " " + this.q2 + " " + this.q3 + " " + this.q0 + "}";\r
-});\r
-c$.div = Clazz.defineMethod (c$, "div", \r
-function (data1, data2, nMax, isRelative) {\r
-var n;\r
-if (data1 == null || data2 == null || (n = Math.min (data1.length, data2.length)) == 0) return null;\r
-if (nMax > 0 && n > nMax) n = nMax;\r
-var dqs =  new Array (n);\r
-for (var i = 0; i < n; i++) {\r
-if (data1[i] == null || data2[i] == null) return null;\r
-dqs[i] = (isRelative ? data1[i].divLeft (data2[i]) : data1[i].div (data2[i]));\r
-}\r
-return dqs;\r
-}, "~A,~A,~N,~B");\r
-c$.sphereMean = Clazz.defineMethod (c$, "sphereMean", \r
-function (data, retStddev, criterion) {\r
-if (data == null || data.length == 0) return  new javajs.util.Quat ();\r
-if (retStddev == null) retStddev =  Clazz.newFloatArray (1, 0);\r
-if (data.length == 1) {\r
-retStddev[0] = 0;\r
-return javajs.util.Quat.newQ (data[0]);\r
-}var diff = 3.4028235E38;\r
-var lastStddev = 3.4028235E38;\r
-var qMean = javajs.util.Quat.simpleAverage (data);\r
-var maxIter = 100;\r
-var iter = 0;\r
-while (diff > criterion && lastStddev != 0 && iter < maxIter) {\r
-qMean = javajs.util.Quat.newMean (data, qMean);\r
-retStddev[0] = javajs.util.Quat.stdDev (data, qMean);\r
-diff = Math.abs (retStddev[0] - lastStddev);\r
-lastStddev = retStddev[0];\r
-}\r
-return qMean;\r
-}, "~A,~A,~N");\r
-c$.simpleAverage = Clazz.defineMethod (c$, "simpleAverage", \r
-($fz = function (ndata) {\r
-var mean = javajs.util.V3.new3 (0, 0, 1);\r
-var v = ndata[0].getNormal ();\r
-mean.add (v);\r
-for (var i = ndata.length; --i >= 0; ) mean.add (ndata[i].getNormalDirected (mean));\r
-\r
-mean.sub (v);\r
-mean.normalize ();\r
-var f = 0;\r
-for (var i = ndata.length; --i >= 0; ) f += Math.abs (ndata[i].get3dProjection (v).dot (mean));\r
-\r
-if (f != 0) mean.scale (f / ndata.length);\r
-f = Math.sqrt (1 - mean.lengthSquared ());\r
-if (Float.isNaN (f)) f = 0;\r
-return javajs.util.Quat.newP4 (javajs.util.P4.new4 (mean.x, mean.y, mean.z, f));\r
-}, $fz.isPrivate = true, $fz), "~A");\r
-c$.newMean = Clazz.defineMethod (c$, "newMean", \r
-($fz = function (data, mean) {\r
-var sum =  new javajs.util.V3 ();\r
-var v;\r
-var q;\r
-var dq;\r
-for (var i = data.length; --i >= 0; ) {\r
-q = data[i];\r
-dq = q.div (mean);\r
-v = dq.getNormal ();\r
-v.scale (dq.getTheta ());\r
-sum.add (v);\r
-}\r
-sum.scale (1 / data.length);\r
-var dqMean = javajs.util.Quat.newVA (sum, sum.length ());\r
-return dqMean.mulQ (mean);\r
-}, $fz.isPrivate = true, $fz), "~A,javajs.util.Quat");\r
-c$.stdDev = Clazz.defineMethod (c$, "stdDev", \r
-($fz = function (data, mean) {\r
-var sum2 = 0;\r
-var n = data.length;\r
-for (var i = n; --i >= 0; ) {\r
-var theta = data[i].div (mean).getTheta ();\r
-sum2 += theta * theta;\r
-}\r
-return Math.sqrt (sum2 / n);\r
-}, $fz.isPrivate = true, $fz), "~A,javajs.util.Quat");\r
-Clazz.defineMethod (c$, "getEulerZYZ", \r
-function () {\r
-var rA;\r
-var rB;\r
-var rG;\r
-if (this.q1 == 0 && this.q2 == 0) {\r
-var theta = this.getTheta ();\r
-return  Clazz.newFloatArray (-1, [this.q3 < 0 ? -theta : theta, 0, 0]);\r
-}rA = Math.atan2 (2 * (this.q2 * this.q3 + this.q0 * this.q1), 2 * (-this.q1 * this.q3 + this.q0 * this.q2));\r
-rB = Math.acos (this.q3 * this.q3 - this.q2 * this.q2 - this.q1 * this.q1 + this.q0 * this.q0);\r
-rG = Math.atan2 (2 * (this.q2 * this.q3 - this.q0 * this.q1), 2 * (this.q0 * this.q2 + this.q1 * this.q3));\r
-return  Clazz.newFloatArray (-1, [(rA / 0.017453292519943295), (rB / 0.017453292519943295), (rG / 0.017453292519943295)]);\r
-});\r
-Clazz.defineMethod (c$, "getEulerZXZ", \r
-function () {\r
-var rA;\r
-var rB;\r
-var rG;\r
-if (this.q1 == 0 && this.q2 == 0) {\r
-var theta = this.getTheta ();\r
-return  Clazz.newFloatArray (-1, [this.q3 < 0 ? -theta : theta, 0, 0]);\r
-}rA = Math.atan2 (2 * (this.q1 * this.q3 - this.q0 * this.q2), 2 * (this.q0 * this.q1 + this.q2 * this.q3));\r
-rB = Math.acos (this.q3 * this.q3 - this.q2 * this.q2 - this.q1 * this.q1 + this.q0 * this.q0);\r
-rG = Math.atan2 (2 * (this.q1 * this.q3 + this.q0 * this.q2), 2 * (-this.q2 * this.q3 + this.q0 * this.q1));\r
-return  Clazz.newFloatArray (-1, [(rA / 0.017453292519943295), (rB / 0.017453292519943295), (rG / 0.017453292519943295)]);\r
-});\r
-c$.qZero = c$.prototype.qZero =  new javajs.util.P4 ();\r
-Clazz.defineStatics (c$,\r
-"RAD_PER_DEG", 0.017453292519943295);\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.util.P4"], "javajs.util.Quat", ["java.lang.Float", "javajs.util.A4", "$.M3", "$.V3"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.q0 = 0;
+this.q1 = 0;
+this.q2 = 0;
+this.q3 = 0;
+this.mat = null;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "Quat");
+Clazz.makeConstructor (c$, 
+function () {
+this.q0 = 1;
+});
+c$.newQ = Clazz.defineMethod (c$, "newQ", 
+function (q) {
+var q1 =  new javajs.util.Quat ();
+q1.set (q);
+return q1;
+}, "javajs.util.Quat");
+c$.newVA = Clazz.defineMethod (c$, "newVA", 
+function (v, theta) {
+var q =  new javajs.util.Quat ();
+q.setTA (v, theta);
+return q;
+}, "javajs.util.T3,~N");
+c$.newM = Clazz.defineMethod (c$, "newM", 
+function (mat) {
+var q =  new javajs.util.Quat ();
+q.setM (javajs.util.M3.newM3 (mat));
+return q;
+}, "javajs.util.M3");
+c$.newAA = Clazz.defineMethod (c$, "newAA", 
+function (a) {
+var q =  new javajs.util.Quat ();
+q.setAA (a);
+return q;
+}, "javajs.util.A4");
+c$.newP4 = Clazz.defineMethod (c$, "newP4", 
+function (pt) {
+var q =  new javajs.util.Quat ();
+q.setP4 (pt);
+return q;
+}, "javajs.util.P4");
+c$.new4 = Clazz.defineMethod (c$, "new4", 
+function (q1, q2, q3, q0) {
+var q =  new javajs.util.Quat ();
+if (q0 < -1) {
+q.q0 = -1;
+return q;
+}if (q0 > 1) {
+q.q0 = 1;
+return q;
+}q.q0 = q0;
+q.q1 = q1;
+q.q2 = q2;
+q.q3 = q3;
+return q;
+}, "~N,~N,~N,~N");
+Clazz.defineMethod (c$, "set", 
+function (q) {
+this.q0 = q.q0;
+this.q1 = q.q1;
+this.q2 = q.q2;
+this.q3 = q.q3;
+}, "javajs.util.Quat");
+Clazz.defineMethod (c$, "setP4", 
+($fz = function (pt) {
+var factor = (pt == null ? 0 : pt.distance4 (javajs.util.Quat.qZero));
+if (factor == 0) {
+this.q0 = 1;
+return;
+}this.q0 = pt.w / factor;
+this.q1 = pt.x / factor;
+this.q2 = pt.y / factor;
+this.q3 = pt.z / factor;
+}, $fz.isPrivate = true, $fz), "javajs.util.P4");
+Clazz.defineMethod (c$, "setTA", 
+function (pt, theta) {
+if (pt.x == 0 && pt.y == 0 && pt.z == 0) {
+this.q0 = 1;
+return;
+}var fact = (Math.sin (theta / 2 * 0.017453292519943295) / Math.sqrt (pt.x * pt.x + pt.y * pt.y + pt.z * pt.z));
+this.q0 = (Math.cos (theta / 2 * 0.017453292519943295));
+this.q1 = (pt.x * fact);
+this.q2 = (pt.y * fact);
+this.q3 = (pt.z * fact);
+}, "javajs.util.T3,~N");
+Clazz.defineMethod (c$, "setAA", 
+function (a) {
+var aa = javajs.util.A4.newAA (a);
+if (aa.angle == 0) aa.y = 1;
+this.setM ( new javajs.util.M3 ().setAA (aa));
+}, "javajs.util.A4");
+Clazz.defineMethod (c$, "setM", 
+($fz = function (mat) {
+this.mat = mat;
+var trace = mat.m00 + mat.m11 + mat.m22;
+var temp;
+var w;
+var x;
+var y;
+var z;
+if (trace >= 0.5) {
+w = Math.sqrt (1.0 + trace);
+x = (mat.m21 - mat.m12) / w;
+y = (mat.m02 - mat.m20) / w;
+z = (mat.m10 - mat.m01) / w;
+} else if ((temp = mat.m00 + mat.m00 - trace) >= 0.5) {
+x = Math.sqrt (1.0 + temp);
+w = (mat.m21 - mat.m12) / x;
+y = (mat.m10 + mat.m01) / x;
+z = (mat.m20 + mat.m02) / x;
+} else if ((temp = mat.m11 + mat.m11 - trace) >= 0.5 || mat.m11 > mat.m22) {
+y = Math.sqrt (1.0 + temp);
+w = (mat.m02 - mat.m20) / y;
+x = (mat.m10 + mat.m01) / y;
+z = (mat.m21 + mat.m12) / y;
+} else {
+z = Math.sqrt (1.0 + mat.m22 + mat.m22 - trace);
+w = (mat.m10 - mat.m01) / z;
+x = (mat.m20 + mat.m02) / z;
+y = (mat.m21 + mat.m12) / z;
+}this.q0 = (w * 0.5);
+this.q1 = (x * 0.5);
+this.q2 = (y * 0.5);
+this.q3 = (z * 0.5);
+}, $fz.isPrivate = true, $fz), "javajs.util.M3");
+Clazz.defineMethod (c$, "setRef", 
+function (qref) {
+if (qref == null) {
+this.mul (this.getFixFactor ());
+return;
+}if (this.dot (qref) >= 0) return;
+this.q0 *= -1;
+this.q1 *= -1;
+this.q2 *= -1;
+this.q3 *= -1;
+}, "javajs.util.Quat");
+c$.getQuaternionFrame = Clazz.defineMethod (c$, "getQuaternionFrame", 
+function (center, x, xy) {
+var vA = javajs.util.V3.newV (x);
+var vB = javajs.util.V3.newV (xy);
+if (center != null) {
+vA.sub (center);
+vB.sub (center);
+}return javajs.util.Quat.getQuaternionFrameV (vA, vB, null, false);
+}, "javajs.util.P3,javajs.util.T3,javajs.util.T3");
+c$.getQuaternionFrameV = Clazz.defineMethod (c$, "getQuaternionFrameV", 
+function (vA, vB, vC, yBased) {
+if (vC == null) {
+vC =  new javajs.util.V3 ();
+vC.cross (vA, vB);
+if (yBased) vA.cross (vB, vC);
+}var vBprime =  new javajs.util.V3 ();
+vBprime.cross (vC, vA);
+vA.normalize ();
+vBprime.normalize ();
+vC.normalize ();
+var mat =  new javajs.util.M3 ();
+mat.setColumnV (0, vA);
+mat.setColumnV (1, vBprime);
+mat.setColumnV (2, vC);
+var q = javajs.util.Quat.newM (mat);
+return q;
+}, "javajs.util.V3,javajs.util.V3,javajs.util.V3,~B");
+Clazz.defineMethod (c$, "getMatrix", 
+function () {
+if (this.mat == null) this.setMatrix ();
+return this.mat;
+});
+Clazz.defineMethod (c$, "setMatrix", 
+($fz = function () {
+this.mat =  new javajs.util.M3 ();
+this.mat.m00 = this.q0 * this.q0 + this.q1 * this.q1 - this.q2 * this.q2 - this.q3 * this.q3;
+this.mat.m01 = 2 * this.q1 * this.q2 - 2 * this.q0 * this.q3;
+this.mat.m02 = 2 * this.q1 * this.q3 + 2 * this.q0 * this.q2;
+this.mat.m10 = 2 * this.q1 * this.q2 + 2 * this.q0 * this.q3;
+this.mat.m11 = this.q0 * this.q0 - this.q1 * this.q1 + this.q2 * this.q2 - this.q3 * this.q3;
+this.mat.m12 = 2 * this.q2 * this.q3 - 2 * this.q0 * this.q1;
+this.mat.m20 = 2 * this.q1 * this.q3 - 2 * this.q0 * this.q2;
+this.mat.m21 = 2 * this.q2 * this.q3 + 2 * this.q0 * this.q1;
+this.mat.m22 = this.q0 * this.q0 - this.q1 * this.q1 - this.q2 * this.q2 + this.q3 * this.q3;
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "add", 
+function (x) {
+return javajs.util.Quat.newVA (this.getNormal (), this.getTheta () + x);
+}, "~N");
+Clazz.defineMethod (c$, "mul", 
+function (x) {
+return (x == 1 ? javajs.util.Quat.new4 (this.q1, this.q2, this.q3, this.q0) : javajs.util.Quat.newVA (this.getNormal (), this.getTheta () * x));
+}, "~N");
+Clazz.defineMethod (c$, "mulQ", 
+function (p) {
+return javajs.util.Quat.new4 (this.q0 * p.q1 + this.q1 * p.q0 + this.q2 * p.q3 - this.q3 * p.q2, this.q0 * p.q2 + this.q2 * p.q0 + this.q3 * p.q1 - this.q1 * p.q3, this.q0 * p.q3 + this.q3 * p.q0 + this.q1 * p.q2 - this.q2 * p.q1, this.q0 * p.q0 - this.q1 * p.q1 - this.q2 * p.q2 - this.q3 * p.q3);
+}, "javajs.util.Quat");
+Clazz.defineMethod (c$, "div", 
+function (p) {
+return this.mulQ (p.inv ());
+}, "javajs.util.Quat");
+Clazz.defineMethod (c$, "divLeft", 
+function (p) {
+return this.inv ().mulQ (p);
+}, "javajs.util.Quat");
+Clazz.defineMethod (c$, "dot", 
+function (q) {
+return this.q0 * q.q0 + this.q1 * q.q1 + this.q2 * q.q2 + this.q3 * q.q3;
+}, "javajs.util.Quat");
+Clazz.defineMethod (c$, "inv", 
+function () {
+return javajs.util.Quat.new4 (-this.q1, -this.q2, -this.q3, this.q0);
+});
+Clazz.defineMethod (c$, "negate", 
+function () {
+return javajs.util.Quat.new4 (-this.q1, -this.q2, -this.q3, -this.q0);
+});
+Clazz.defineMethod (c$, "getFixFactor", 
+($fz = function () {
+return (this.q0 < 0 || this.q0 == 0 && (this.q1 < 0 || this.q1 == 0 && (this.q2 < 0 || this.q2 == 0 && this.q3 < 0)) ? -1 : 1);
+}, $fz.isPrivate = true, $fz));
+Clazz.defineMethod (c$, "getVector", 
+function (i) {
+return this.getVectorScaled (i, 1);
+}, "~N");
+Clazz.defineMethod (c$, "getVectorScaled", 
+function (i, scale) {
+if (i == -1) {
+scale *= this.getFixFactor ();
+return javajs.util.V3.new3 (this.q1 * scale, this.q2 * scale, this.q3 * scale);
+}if (this.mat == null) this.setMatrix ();
+var v =  new javajs.util.V3 ();
+this.mat.getColumnV (i, v);
+if (scale != 1) v.scale (scale);
+return v;
+}, "~N,~N");
+Clazz.defineMethod (c$, "getNormal", 
+function () {
+var v = javajs.util.Quat.getRawNormal (this);
+v.scale (this.getFixFactor ());
+return v;
+});
+c$.getRawNormal = Clazz.defineMethod (c$, "getRawNormal", 
+($fz = function (q) {
+var v = javajs.util.V3.new3 (q.q1, q.q2, q.q3);
+if (v.length () == 0) return javajs.util.V3.new3 (0, 0, 1);
+v.normalize ();
+return v;
+}, $fz.isPrivate = true, $fz), "javajs.util.Quat");
+Clazz.defineMethod (c$, "getTheta", 
+function () {
+return (Math.acos (Math.abs (this.q0)) * 2 * 180 / 3.141592653589793);
+});
+Clazz.defineMethod (c$, "getThetaRadians", 
+function () {
+return (Math.acos (Math.abs (this.q0)) * 2);
+});
+Clazz.defineMethod (c$, "getNormalDirected", 
+function (v0) {
+var v = this.getNormal ();
+if (v.x * v0.x + v.y * v0.y + v.z * v0.z < 0) {
+v.scale (-1);
+}return v;
+}, "javajs.util.V3");
+Clazz.defineMethod (c$, "get3dProjection", 
+function (v3d) {
+v3d.set (this.q1, this.q2, this.q3);
+return v3d;
+}, "javajs.util.V3");
+Clazz.defineMethod (c$, "getThetaDirected", 
+function (axisAngle) {
+var theta = this.getTheta ();
+var v = this.getNormal ();
+if (axisAngle.x * this.q1 + axisAngle.y * this.q2 + axisAngle.z * this.q3 < 0) {
+v.scale (-1);
+theta = -theta;
+}axisAngle.set4 (v.x, v.y, v.z, theta);
+return axisAngle;
+}, "javajs.util.P4");
+Clazz.defineMethod (c$, "getThetaDirectedV", 
+function (vector) {
+var theta = this.getTheta ();
+var v = this.getNormal ();
+if (vector.x * this.q1 + vector.y * this.q2 + vector.z * this.q3 < 0) {
+v.scale (-1);
+theta = -theta;
+}return theta;
+}, "javajs.util.V3");
+Clazz.defineMethod (c$, "toPoint4f", 
+function () {
+return javajs.util.P4.new4 (this.q1, this.q2, this.q3, this.q0);
+});
+Clazz.defineMethod (c$, "toAxisAngle4f", 
+function () {
+var theta = 2 * Math.acos (Math.abs (this.q0));
+var sinTheta2 = Math.sin (theta / 2);
+var v = this.getNormal ();
+if (sinTheta2 < 0) {
+v.scale (-1);
+theta = 3.141592653589793 - theta;
+}return javajs.util.A4.newVA (v, theta);
+});
+Clazz.defineMethod (c$, "transform2", 
+function (pt, ptNew) {
+if (this.mat == null) this.setMatrix ();
+this.mat.rotate2 (pt, ptNew);
+return ptNew;
+}, "javajs.util.T3,javajs.util.T3");
+Clazz.defineMethod (c$, "leftDifference", 
+function (q2) {
+var q2adjusted = (this.dot (q2) < 0 ? q2.negate () : q2);
+return this.inv ().mulQ (q2adjusted);
+}, "javajs.util.Quat");
+Clazz.defineMethod (c$, "rightDifference", 
+function (q2) {
+var q2adjusted = (this.dot (q2) < 0 ? q2.negate () : q2);
+return this.mulQ (q2adjusted.inv ());
+}, "javajs.util.Quat");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "{" + this.q1 + " " + this.q2 + " " + this.q3 + " " + this.q0 + "}";
+});
+c$.div = Clazz.defineMethod (c$, "div", 
+function (data1, data2, nMax, isRelative) {
+var n;
+if (data1 == null || data2 == null || (n = Math.min (data1.length, data2.length)) == 0) return null;
+if (nMax > 0 && n > nMax) n = nMax;
+var dqs =  new Array (n);
+for (var i = 0; i < n; i++) {
+if (data1[i] == null || data2[i] == null) return null;
+dqs[i] = (isRelative ? data1[i].divLeft (data2[i]) : data1[i].div (data2[i]));
+}
+return dqs;
+}, "~A,~A,~N,~B");
+c$.sphereMean = Clazz.defineMethod (c$, "sphereMean", 
+function (data, retStddev, criterion) {
+if (data == null || data.length == 0) return  new javajs.util.Quat ();
+if (retStddev == null) retStddev =  Clazz.newFloatArray (1, 0);
+if (data.length == 1) {
+retStddev[0] = 0;
+return javajs.util.Quat.newQ (data[0]);
+}var diff = 3.4028235E38;
+var lastStddev = 3.4028235E38;
+var qMean = javajs.util.Quat.simpleAverage (data);
+var maxIter = 100;
+var iter = 0;
+while (diff > criterion && lastStddev != 0 && iter < maxIter) {
+qMean = javajs.util.Quat.newMean (data, qMean);
+retStddev[0] = javajs.util.Quat.stdDev (data, qMean);
+diff = Math.abs (retStddev[0] - lastStddev);
+lastStddev = retStddev[0];
+}
+return qMean;
+}, "~A,~A,~N");
+c$.simpleAverage = Clazz.defineMethod (c$, "simpleAverage", 
+($fz = function (ndata) {
+var mean = javajs.util.V3.new3 (0, 0, 1);
+var v = ndata[0].getNormal ();
+mean.add (v);
+for (var i = ndata.length; --i >= 0; ) mean.add (ndata[i].getNormalDirected (mean));
+
+mean.sub (v);
+mean.normalize ();
+var f = 0;
+for (var i = ndata.length; --i >= 0; ) f += Math.abs (ndata[i].get3dProjection (v).dot (mean));
+
+if (f != 0) mean.scale (f / ndata.length);
+f = Math.sqrt (1 - mean.lengthSquared ());
+if (Float.isNaN (f)) f = 0;
+return javajs.util.Quat.newP4 (javajs.util.P4.new4 (mean.x, mean.y, mean.z, f));
+}, $fz.isPrivate = true, $fz), "~A");
+c$.newMean = Clazz.defineMethod (c$, "newMean", 
+($fz = function (data, mean) {
+var sum =  new javajs.util.V3 ();
+var v;
+var q;
+var dq;
+for (var i = data.length; --i >= 0; ) {
+q = data[i];
+dq = q.div (mean);
+v = dq.getNormal ();
+v.scale (dq.getTheta ());
+sum.add (v);
+}
+sum.scale (1 / data.length);
+var dqMean = javajs.util.Quat.newVA (sum, sum.length ());
+return dqMean.mulQ (mean);
+}, $fz.isPrivate = true, $fz), "~A,javajs.util.Quat");
+c$.stdDev = Clazz.defineMethod (c$, "stdDev", 
+($fz = function (data, mean) {
+var sum2 = 0;
+var n = data.length;
+for (var i = n; --i >= 0; ) {
+var theta = data[i].div (mean).getTheta ();
+sum2 += theta * theta;
+}
+return Math.sqrt (sum2 / n);
+}, $fz.isPrivate = true, $fz), "~A,javajs.util.Quat");
+Clazz.defineMethod (c$, "getEulerZYZ", 
+function () {
+var rA;
+var rB;
+var rG;
+if (this.q1 == 0 && this.q2 == 0) {
+var theta = this.getTheta ();
+return  Clazz.newFloatArray (-1, [this.q3 < 0 ? -theta : theta, 0, 0]);
+}rA = Math.atan2 (2 * (this.q2 * this.q3 + this.q0 * this.q1), 2 * (-this.q1 * this.q3 + this.q0 * this.q2));
+rB = Math.acos (this.q3 * this.q3 - this.q2 * this.q2 - this.q1 * this.q1 + this.q0 * this.q0);
+rG = Math.atan2 (2 * (this.q2 * this.q3 - this.q0 * this.q1), 2 * (this.q0 * this.q2 + this.q1 * this.q3));
+return  Clazz.newFloatArray (-1, [(rA / 0.017453292519943295), (rB / 0.017453292519943295), (rG / 0.017453292519943295)]);
+});
+Clazz.defineMethod (c$, "getEulerZXZ", 
+function () {
+var rA;
+var rB;
+var rG;
+if (this.q1 == 0 && this.q2 == 0) {
+var theta = this.getTheta ();
+return  Clazz.newFloatArray (-1, [this.q3 < 0 ? -theta : theta, 0, 0]);
+}rA = Math.atan2 (2 * (this.q1 * this.q3 - this.q0 * this.q2), 2 * (this.q0 * this.q1 + this.q2 * this.q3));
+rB = Math.acos (this.q3 * this.q3 - this.q2 * this.q2 - this.q1 * this.q1 + this.q0 * this.q0);
+rG = Math.atan2 (2 * (this.q1 * this.q3 + this.q0 * this.q2), 2 * (-this.q2 * this.q3 + this.q0 * this.q1));
+return  Clazz.newFloatArray (-1, [(rA / 0.017453292519943295), (rB / 0.017453292519943295), (rG / 0.017453292519943295)]);
+});
+c$.qZero = c$.prototype.qZero =  new javajs.util.P4 ();
+Clazz.defineStatics (c$,
+"RAD_PER_DEG", 0.017453292519943295);
+});
index 2611f4e..0617f27 100644 (file)
Binary files a/bin/javajs/util/Rdr.class and b/bin/javajs/util/Rdr.class differ
index 6f65dc5..45a14ab 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.api.GenericLineReader"], "javajs.util.Rdr", ["java.io.BufferedInputStream", "$.BufferedReader", "$.ByteArrayInputStream", "$.InputStreamReader", "$.StringReader", "javajs.util.AU", "$.Base64", "$.Encoding", "$.SB"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.reader = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "Rdr", null, javajs.api.GenericLineReader);\r
-Clazz.makeConstructor (c$, \r
-function (reader) {\r
-this.reader = reader;\r
-}, "java.io.BufferedReader");\r
-Clazz.overrideMethod (c$, "readNextLine", \r
-function () {\r
-return this.reader.readLine ();\r
-});\r
-c$.readCifData = Clazz.defineMethod (c$, "readCifData", \r
-function (parser, br) {\r
-return parser.set (null, br).getAllCifData ();\r
-}, "javajs.api.GenericCifDataParser,java.io.BufferedReader");\r
-c$.fixUTF = Clazz.defineMethod (c$, "fixUTF", \r
-function (bytes) {\r
-var encoding = javajs.util.Rdr.getUTFEncoding (bytes);\r
-if (encoding !== javajs.util.Encoding.NONE) try {\r
-var s =  String.instantialize (bytes, encoding.name ().$replace ('_', '-'));\r
-switch (encoding) {\r
-case javajs.util.Encoding.UTF8:\r
-case javajs.util.Encoding.UTF_16BE:\r
-case javajs.util.Encoding.UTF_16LE:\r
-s = s.substring (1);\r
-break;\r
-default:\r
-break;\r
-}\r
-return s;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.UnsupportedEncodingException)) {\r
-System.out.println (e);\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return  String.instantialize (bytes);\r
-}, "~A");\r
-c$.getUTFEncoding = Clazz.defineMethod (c$, "getUTFEncoding", \r
-($fz = function (bytes) {\r
-if (bytes.length >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) return javajs.util.Encoding.UTF8;\r
-if (bytes.length >= 4 && bytes[0] == 0 && bytes[1] == 0 && bytes[2] == 0xFE && bytes[3] == 0xFF) return javajs.util.Encoding.UTF_32BE;\r
-if (bytes.length >= 4 && bytes[0] == 0xFF && bytes[1] == 0xFE && bytes[2] == 0 && bytes[3] == 0) return javajs.util.Encoding.UTF_32LE;\r
-if (bytes.length >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE) return javajs.util.Encoding.UTF_16LE;\r
-if (bytes.length >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF) return javajs.util.Encoding.UTF_16BE;\r
-return javajs.util.Encoding.NONE;\r
-}, $fz.isPrivate = true, $fz), "~A");\r
-c$.getUTFEncodingForStream = Clazz.defineMethod (c$, "getUTFEncodingForStream", \r
-($fz = function (is) {\r
-{\r
-is.resetStream();\r
-}var abMagic =  Clazz.newByteArray (4, 0);\r
-abMagic[3] = 1;\r
-try {\r
-is.mark (5);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-return javajs.util.Encoding.NONE;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-is.read (abMagic, 0, 4);\r
-is.reset ();\r
-return javajs.util.Rdr.getUTFEncoding (abMagic);\r
-}, $fz.isPrivate = true, $fz), "java.io.BufferedInputStream");\r
-c$.isBase64 = Clazz.defineMethod (c$, "isBase64", \r
-function (sb) {\r
-return (sb.indexOf (";base64,") == 0);\r
-}, "javajs.util.SB");\r
-c$.isCompoundDocumentS = Clazz.defineMethod (c$, "isCompoundDocumentS", \r
-function (is) {\r
-return javajs.util.Rdr.isCompoundDocumentB (javajs.util.Rdr.getMagic (is, 8));\r
-}, "java.io.InputStream");\r
-c$.isCompoundDocumentB = Clazz.defineMethod (c$, "isCompoundDocumentB", \r
-function (bytes) {\r
-return (bytes.length >= 8 && bytes[0] == 0xD0 && bytes[1] == 0xCF && bytes[2] == 0x11 && bytes[3] == 0xE0 && bytes[4] == 0xA1 && bytes[5] == 0xB1 && bytes[6] == 0x1A && bytes[7] == 0xE1);\r
-}, "~A");\r
-c$.isGzipS = Clazz.defineMethod (c$, "isGzipS", \r
-function (is) {\r
-return javajs.util.Rdr.isGzipB (javajs.util.Rdr.getMagic (is, 2));\r
-}, "java.io.InputStream");\r
-c$.isGzipB = Clazz.defineMethod (c$, "isGzipB", \r
-function (bytes) {\r
-return (bytes != null && bytes.length >= 2 && bytes[0] == 0x1F && bytes[1] == 0x8B);\r
-}, "~A");\r
-c$.isPickleS = Clazz.defineMethod (c$, "isPickleS", \r
-function (is) {\r
-return javajs.util.Rdr.isPickleB (javajs.util.Rdr.getMagic (is, 2));\r
-}, "java.io.InputStream");\r
-c$.isPickleB = Clazz.defineMethod (c$, "isPickleB", \r
-function (bytes) {\r
-return (bytes != null && bytes.length >= 2 && bytes[0] == 0x7D && bytes[1] == 0x71);\r
-}, "~A");\r
-c$.isPngZipStream = Clazz.defineMethod (c$, "isPngZipStream", \r
-function (is) {\r
-return javajs.util.Rdr.isPngZipB (javajs.util.Rdr.getMagic (is, 55));\r
-}, "java.io.InputStream");\r
-c$.isPngZipB = Clazz.defineMethod (c$, "isPngZipB", \r
-function (bytes) {\r
-return (bytes[50] == 0 && bytes[51] == 0x50 && bytes[52] == 0x4E && bytes[53] == 0x47 && bytes[54] == 0x4A);\r
-}, "~A");\r
-c$.isZipS = Clazz.defineMethod (c$, "isZipS", \r
-function (is) {\r
-return javajs.util.Rdr.isZipB (javajs.util.Rdr.getMagic (is, 4));\r
-}, "java.io.InputStream");\r
-c$.isZipB = Clazz.defineMethod (c$, "isZipB", \r
-function (bytes) {\r
-return (bytes.length >= 4 && bytes[0] == 0x50 && bytes[1] == 0x4B && bytes[2] == 0x03 && bytes[3] == 0x04);\r
-}, "~A");\r
-c$.getMagic = Clazz.defineMethod (c$, "getMagic", \r
-($fz = function (is, n) {\r
-var abMagic =  Clazz.newByteArray (n, 0);\r
-{\r
-is.resetStream();\r
-}try {\r
-is.mark (n + 1);\r
-is.read (abMagic, 0, n);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-try {\r
-is.reset ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return abMagic;\r
-}, $fz.isPrivate = true, $fz), "java.io.InputStream,~N");\r
-c$.guessMimeTypeForBytes = Clazz.defineMethod (c$, "guessMimeTypeForBytes", \r
-function (bytes) {\r
-switch (bytes.length < 2 ? -1 : bytes[1]) {\r
-case 0:\r
-return "image/jpg";\r
-case 0x49:\r
-return "image/gif";\r
-case 0x4D:\r
-return "image/BMP";\r
-case 0x50:\r
-return "image/png";\r
-default:\r
-return "image/unknown";\r
-}\r
-}, "~A");\r
-c$.getBIS = Clazz.defineMethod (c$, "getBIS", \r
-function (bytes) {\r
-return  new java.io.BufferedInputStream ( new java.io.ByteArrayInputStream (bytes));\r
-}, "~A");\r
-c$.getBR = Clazz.defineMethod (c$, "getBR", \r
-function (string) {\r
-return  new java.io.BufferedReader ( new java.io.StringReader (string));\r
-}, "~S");\r
-c$.getUnzippedInputStream = Clazz.defineMethod (c$, "getUnzippedInputStream", \r
-function (jzt, bis) {\r
-while (javajs.util.Rdr.isGzipS (bis)) bis =  new java.io.BufferedInputStream (jzt.newGZIPInputStream (bis));\r
-\r
-return bis;\r
-}, "javajs.api.GenericZipTools,java.io.BufferedInputStream");\r
-c$.getBytesFromSB = Clazz.defineMethod (c$, "getBytesFromSB", \r
-function (sb) {\r
-return (javajs.util.Rdr.isBase64 (sb) ? javajs.util.Base64.decodeBase64 (sb.substring (8)) : sb.toBytes (0, -1));\r
-}, "javajs.util.SB");\r
-c$.getStreamAsBytes = Clazz.defineMethod (c$, "getStreamAsBytes", \r
-function (bis, out) {\r
-var buf =  Clazz.newByteArray (1024, 0);\r
-var bytes = (out == null ?  Clazz.newByteArray (4096, 0) : null);\r
-var len = 0;\r
-var totalLen = 0;\r
-while ((len = bis.read (buf, 0, 1024)) > 0) {\r
-totalLen += len;\r
-if (out == null) {\r
-if (totalLen >= bytes.length) bytes = javajs.util.AU.ensureLengthByte (bytes, totalLen * 2);\r
-System.arraycopy (buf, 0, bytes, totalLen - len, len);\r
-} else {\r
-out.write (buf, 0, len);\r
-}}\r
-bis.close ();\r
-if (out == null) {\r
-return javajs.util.AU.arrayCopyByte (bytes, totalLen);\r
-}return totalLen + " bytes";\r
-}, "java.io.BufferedInputStream,javajs.util.OC");\r
-c$.getBufferedReader = Clazz.defineMethod (c$, "getBufferedReader", \r
-function (bis, charSet) {\r
-if (javajs.util.Rdr.getUTFEncodingForStream (bis) === javajs.util.Encoding.NONE) return  new java.io.BufferedReader ( new java.io.InputStreamReader (bis, (charSet == null ? "UTF-8" : charSet)));\r
-var bytes = javajs.util.Rdr.getLimitedStreamBytes (bis, -1);\r
-bis.close ();\r
-return javajs.util.Rdr.getBR (charSet == null ? javajs.util.Rdr.fixUTF (bytes) :  String.instantialize (bytes, charSet));\r
-}, "java.io.BufferedInputStream,~S");\r
-c$.getLimitedStreamBytes = Clazz.defineMethod (c$, "getLimitedStreamBytes", \r
-function (is, n) {\r
-var buflen = (n > 0 && n < 1024 ? n : 1024);\r
-var buf =  Clazz.newByteArray (buflen, 0);\r
-var bytes =  Clazz.newByteArray (n < 0 ? 4096 : n, 0);\r
-var len = 0;\r
-var totalLen = 0;\r
-if (n < 0) n = 2147483647;\r
-while (totalLen < n && (len = is.read (buf, 0, buflen)) > 0) {\r
-totalLen += len;\r
-if (totalLen > bytes.length) bytes = javajs.util.AU.ensureLengthByte (bytes, totalLen * 2);\r
-System.arraycopy (buf, 0, bytes, totalLen - len, len);\r
-if (n != 2147483647 && totalLen + buflen > bytes.length) buflen = bytes.length - totalLen;\r
-}\r
-if (totalLen == bytes.length) return bytes;\r
-buf =  Clazz.newByteArray (totalLen, 0);\r
-System.arraycopy (bytes, 0, buf, 0, totalLen);\r
-return buf;\r
-}, "java.io.InputStream,~N");\r
-c$.StreamToUTF8String = Clazz.defineMethod (c$, "StreamToUTF8String", \r
-function (bis) {\r
-var data =  new Array (1);\r
-try {\r
-javajs.util.Rdr.readAllAsString (javajs.util.Rdr.getBufferedReader (bis, "UTF-8"), -1, true, data, 0);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return data[0];\r
-}, "java.io.BufferedInputStream");\r
-c$.readAllAsString = Clazz.defineMethod (c$, "readAllAsString", \r
-function (br, nBytesMax, allowBinary, data, i) {\r
-try {\r
-var sb = javajs.util.SB.newN (8192);\r
-var line;\r
-if (nBytesMax < 0) {\r
-line = br.readLine ();\r
-if (allowBinary || line != null && line.indexOf ('\0') < 0 && (line.length != 4 || line.charCodeAt (0) != 65533 || line.indexOf ("PNG") != 1)) {\r
-sb.append (line).appendC ('\n');\r
-while ((line = br.readLine ()) != null) sb.append (line).appendC ('\n');\r
-\r
-}} else {\r
-var n = 0;\r
-var len;\r
-while (n < nBytesMax && (line = br.readLine ()) != null) {\r
-if (nBytesMax - n < (len = line.length) + 1) line = line.substring (0, nBytesMax - n - 1);\r
-sb.append (line).appendC ('\n');\r
-n += len + 1;\r
-}\r
-}br.close ();\r
-data[i] = sb.toString ();\r
-return true;\r
-} catch (ioe) {\r
-if (Clazz.exceptionOf (ioe, Exception)) {\r
-data[i] = ioe.toString ();\r
-return false;\r
-} else {\r
-throw ioe;\r
-}\r
-}\r
-}, "java.io.BufferedReader,~N,~B,~A,~N");\r
-c$.getPngZipPointAndCount = Clazz.defineMethod (c$, "getPngZipPointAndCount", \r
-function (bis, pt_count) {\r
-bis.mark (75);\r
-try {\r
-var data = javajs.util.Rdr.getLimitedStreamBytes (bis, 74);\r
-bis.reset ();\r
-var pt = 0;\r
-for (var i = 64, f = 1; --i > 54; f *= 10) pt += (data[i] - 48) * f;\r
-\r
-var n = 0;\r
-for (var i = 74, f = 1; --i > 64; f *= 10) n += (data[i] - 48) * f;\r
-\r
-pt_count[0] = pt;\r
-pt_count[1] = n;\r
-} catch (e) {\r
-pt_count[1] = 0;\r
-}\r
-}, "java.io.BufferedInputStream,~A");\r
-c$.getPngZipStream = Clazz.defineMethod (c$, "getPngZipStream", \r
-function (bis, asNewStream) {\r
-if (!javajs.util.Rdr.isPngZipStream (bis)) return bis;\r
-var data =  Clazz.newByteArray (0, 0);\r
-bis.mark (75);\r
-try {\r
-var pt_count =  Clazz.newIntArray (2, 0);\r
-javajs.util.Rdr.getPngZipPointAndCount (bis, pt_count);\r
-if (pt_count[1] != 0) {\r
-var pt = pt_count[0];\r
-while (pt > 0) pt -= bis.skip (pt);\r
-\r
-if (!asNewStream) return bis;\r
-data = javajs.util.Rdr.getLimitedStreamBytes (bis, pt_count[1]);\r
-}} catch (e) {\r
-} finally {\r
-try {\r
-if (asNewStream) bis.close ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}\r
-return javajs.util.Rdr.getBIS (data);\r
-}, "java.io.BufferedInputStream,~B");\r
-c$.getZipRoot = Clazz.defineMethod (c$, "getZipRoot", \r
-function (fileName) {\r
-var pt = fileName.indexOf ("|");\r
-return (pt < 0 ? fileName : fileName.substring (0, pt));\r
-}, "~S");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.api.GenericLineReader"], "javajs.util.Rdr", ["java.io.BufferedInputStream", "$.BufferedReader", "$.ByteArrayInputStream", "$.InputStreamReader", "$.StringReader", "javajs.util.AU", "$.Base64", "$.Encoding", "$.SB"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.reader = null;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "Rdr", null, javajs.api.GenericLineReader);
+Clazz.makeConstructor (c$, 
+function (reader) {
+this.reader = reader;
+}, "java.io.BufferedReader");
+Clazz.overrideMethod (c$, "readNextLine", 
+function () {
+return this.reader.readLine ();
+});
+c$.readCifData = Clazz.defineMethod (c$, "readCifData", 
+function (parser, br) {
+return parser.set (null, br).getAllCifData ();
+}, "javajs.api.GenericCifDataParser,java.io.BufferedReader");
+c$.fixUTF = Clazz.defineMethod (c$, "fixUTF", 
+function (bytes) {
+var encoding = javajs.util.Rdr.getUTFEncoding (bytes);
+if (encoding !== javajs.util.Encoding.NONE) try {
+var s =  String.instantialize (bytes, encoding.name ().$replace ('_', '-'));
+switch (encoding) {
+case javajs.util.Encoding.UTF8:
+case javajs.util.Encoding.UTF_16BE:
+case javajs.util.Encoding.UTF_16LE:
+s = s.substring (1);
+break;
+default:
+break;
+}
+return s;
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.UnsupportedEncodingException)) {
+System.out.println (e);
+} else {
+throw e;
+}
+}
+return  String.instantialize (bytes);
+}, "~A");
+c$.getUTFEncoding = Clazz.defineMethod (c$, "getUTFEncoding", 
+($fz = function (bytes) {
+if (bytes.length >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) return javajs.util.Encoding.UTF8;
+if (bytes.length >= 4 && bytes[0] == 0 && bytes[1] == 0 && bytes[2] == 0xFE && bytes[3] == 0xFF) return javajs.util.Encoding.UTF_32BE;
+if (bytes.length >= 4 && bytes[0] == 0xFF && bytes[1] == 0xFE && bytes[2] == 0 && bytes[3] == 0) return javajs.util.Encoding.UTF_32LE;
+if (bytes.length >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE) return javajs.util.Encoding.UTF_16LE;
+if (bytes.length >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF) return javajs.util.Encoding.UTF_16BE;
+return javajs.util.Encoding.NONE;
+}, $fz.isPrivate = true, $fz), "~A");
+c$.getUTFEncodingForStream = Clazz.defineMethod (c$, "getUTFEncodingForStream", 
+($fz = function (is) {
+{
+is.resetStream();
+}var abMagic =  Clazz.newByteArray (4, 0);
+abMagic[3] = 1;
+try {
+is.mark (5);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+return javajs.util.Encoding.NONE;
+} else {
+throw e;
+}
+}
+is.read (abMagic, 0, 4);
+is.reset ();
+return javajs.util.Rdr.getUTFEncoding (abMagic);
+}, $fz.isPrivate = true, $fz), "java.io.BufferedInputStream");
+c$.isBase64 = Clazz.defineMethod (c$, "isBase64", 
+function (sb) {
+return (sb.indexOf (";base64,") == 0);
+}, "javajs.util.SB");
+c$.isCompoundDocumentS = Clazz.defineMethod (c$, "isCompoundDocumentS", 
+function (is) {
+return javajs.util.Rdr.isCompoundDocumentB (javajs.util.Rdr.getMagic (is, 8));
+}, "java.io.InputStream");
+c$.isCompoundDocumentB = Clazz.defineMethod (c$, "isCompoundDocumentB", 
+function (bytes) {
+return (bytes.length >= 8 && bytes[0] == 0xD0 && bytes[1] == 0xCF && bytes[2] == 0x11 && bytes[3] == 0xE0 && bytes[4] == 0xA1 && bytes[5] == 0xB1 && bytes[6] == 0x1A && bytes[7] == 0xE1);
+}, "~A");
+c$.isGzipS = Clazz.defineMethod (c$, "isGzipS", 
+function (is) {
+return javajs.util.Rdr.isGzipB (javajs.util.Rdr.getMagic (is, 2));
+}, "java.io.InputStream");
+c$.isGzipB = Clazz.defineMethod (c$, "isGzipB", 
+function (bytes) {
+return (bytes != null && bytes.length >= 2 && bytes[0] == 0x1F && bytes[1] == 0x8B);
+}, "~A");
+c$.isPickleS = Clazz.defineMethod (c$, "isPickleS", 
+function (is) {
+return javajs.util.Rdr.isPickleB (javajs.util.Rdr.getMagic (is, 2));
+}, "java.io.InputStream");
+c$.isPickleB = Clazz.defineMethod (c$, "isPickleB", 
+function (bytes) {
+return (bytes != null && bytes.length >= 2 && bytes[0] == 0x7D && bytes[1] == 0x71);
+}, "~A");
+c$.isPngZipStream = Clazz.defineMethod (c$, "isPngZipStream", 
+function (is) {
+return javajs.util.Rdr.isPngZipB (javajs.util.Rdr.getMagic (is, 55));
+}, "java.io.InputStream");
+c$.isPngZipB = Clazz.defineMethod (c$, "isPngZipB", 
+function (bytes) {
+return (bytes[50] == 0 && bytes[51] == 0x50 && bytes[52] == 0x4E && bytes[53] == 0x47 && bytes[54] == 0x4A);
+}, "~A");
+c$.isZipS = Clazz.defineMethod (c$, "isZipS", 
+function (is) {
+return javajs.util.Rdr.isZipB (javajs.util.Rdr.getMagic (is, 4));
+}, "java.io.InputStream");
+c$.isZipB = Clazz.defineMethod (c$, "isZipB", 
+function (bytes) {
+return (bytes.length >= 4 && bytes[0] == 0x50 && bytes[1] == 0x4B && bytes[2] == 0x03 && bytes[3] == 0x04);
+}, "~A");
+c$.getMagic = Clazz.defineMethod (c$, "getMagic", 
+($fz = function (is, n) {
+var abMagic =  Clazz.newByteArray (n, 0);
+{
+is.resetStream();
+}try {
+is.mark (n + 1);
+is.read (abMagic, 0, n);
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+} else {
+throw e;
+}
+}
+try {
+is.reset ();
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+} else {
+throw e;
+}
+}
+return abMagic;
+}, $fz.isPrivate = true, $fz), "java.io.InputStream,~N");
+c$.guessMimeTypeForBytes = Clazz.defineMethod (c$, "guessMimeTypeForBytes", 
+function (bytes) {
+switch (bytes.length < 2 ? -1 : bytes[1]) {
+case 0:
+return "image/jpg";
+case 0x49:
+return "image/gif";
+case 0x4D:
+return "image/BMP";
+case 0x50:
+return "image/png";
+default:
+return "image/unknown";
+}
+}, "~A");
+c$.getBIS = Clazz.defineMethod (c$, "getBIS", 
+function (bytes) {
+return  new java.io.BufferedInputStream ( new java.io.ByteArrayInputStream (bytes));
+}, "~A");
+c$.getBR = Clazz.defineMethod (c$, "getBR", 
+function (string) {
+return  new java.io.BufferedReader ( new java.io.StringReader (string));
+}, "~S");
+c$.getUnzippedInputStream = Clazz.defineMethod (c$, "getUnzippedInputStream", 
+function (jzt, bis) {
+while (javajs.util.Rdr.isGzipS (bis)) bis =  new java.io.BufferedInputStream (jzt.newGZIPInputStream (bis));
+
+return bis;
+}, "javajs.api.GenericZipTools,java.io.BufferedInputStream");
+c$.getBytesFromSB = Clazz.defineMethod (c$, "getBytesFromSB", 
+function (sb) {
+return (javajs.util.Rdr.isBase64 (sb) ? javajs.util.Base64.decodeBase64 (sb.substring (8)) : sb.toBytes (0, -1));
+}, "javajs.util.SB");
+c$.getStreamAsBytes = Clazz.defineMethod (c$, "getStreamAsBytes", 
+function (bis, out) {
+var buf =  Clazz.newByteArray (1024, 0);
+var bytes = (out == null ?  Clazz.newByteArray (4096, 0) : null);
+var len = 0;
+var totalLen = 0;
+while ((len = bis.read (buf, 0, 1024)) > 0) {
+totalLen += len;
+if (out == null) {
+if (totalLen >= bytes.length) bytes = javajs.util.AU.ensureLengthByte (bytes, totalLen * 2);
+System.arraycopy (buf, 0, bytes, totalLen - len, len);
+} else {
+out.write (buf, 0, len);
+}}
+bis.close ();
+if (out == null) {
+return javajs.util.AU.arrayCopyByte (bytes, totalLen);
+}return totalLen + " bytes";
+}, "java.io.BufferedInputStream,javajs.util.OC");
+c$.getBufferedReader = Clazz.defineMethod (c$, "getBufferedReader", 
+function (bis, charSet) {
+if (javajs.util.Rdr.getUTFEncodingForStream (bis) === javajs.util.Encoding.NONE) return  new java.io.BufferedReader ( new java.io.InputStreamReader (bis, (charSet == null ? "UTF-8" : charSet)));
+var bytes = javajs.util.Rdr.getLimitedStreamBytes (bis, -1);
+bis.close ();
+return javajs.util.Rdr.getBR (charSet == null ? javajs.util.Rdr.fixUTF (bytes) :  String.instantialize (bytes, charSet));
+}, "java.io.BufferedInputStream,~S");
+c$.getLimitedStreamBytes = Clazz.defineMethod (c$, "getLimitedStreamBytes", 
+function (is, n) {
+var buflen = (n > 0 && n < 1024 ? n : 1024);
+var buf =  Clazz.newByteArray (buflen, 0);
+var bytes =  Clazz.newByteArray (n < 0 ? 4096 : n, 0);
+var len = 0;
+var totalLen = 0;
+if (n < 0) n = 2147483647;
+while (totalLen < n && (len = is.read (buf, 0, buflen)) > 0) {
+totalLen += len;
+if (totalLen > bytes.length) bytes = javajs.util.AU.ensureLengthByte (bytes, totalLen * 2);
+System.arraycopy (buf, 0, bytes, totalLen - len, len);
+if (n != 2147483647 && totalLen + buflen > bytes.length) buflen = bytes.length - totalLen;
+}
+if (totalLen == bytes.length) return bytes;
+buf =  Clazz.newByteArray (totalLen, 0);
+System.arraycopy (bytes, 0, buf, 0, totalLen);
+return buf;
+}, "java.io.InputStream,~N");
+c$.StreamToUTF8String = Clazz.defineMethod (c$, "StreamToUTF8String", 
+function (bis) {
+var data =  new Array (1);
+try {
+javajs.util.Rdr.readAllAsString (javajs.util.Rdr.getBufferedReader (bis, "UTF-8"), -1, true, data, 0);
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+} else {
+throw e;
+}
+}
+return data[0];
+}, "java.io.BufferedInputStream");
+c$.readAllAsString = Clazz.defineMethod (c$, "readAllAsString", 
+function (br, nBytesMax, allowBinary, data, i) {
+try {
+var sb = javajs.util.SB.newN (8192);
+var line;
+if (nBytesMax < 0) {
+line = br.readLine ();
+if (allowBinary || line != null && line.indexOf ('\0') < 0 && (line.length != 4 || line.charCodeAt (0) != 65533 || line.indexOf ("PNG") != 1)) {
+sb.append (line).appendC ('\n');
+while ((line = br.readLine ()) != null) sb.append (line).appendC ('\n');
+
+}} else {
+var n = 0;
+var len;
+while (n < nBytesMax && (line = br.readLine ()) != null) {
+if (nBytesMax - n < (len = line.length) + 1) line = line.substring (0, nBytesMax - n - 1);
+sb.append (line).appendC ('\n');
+n += len + 1;
+}
+}br.close ();
+data[i] = sb.toString ();
+return true;
+} catch (ioe) {
+if (Clazz.exceptionOf (ioe, Exception)) {
+data[i] = ioe.toString ();
+return false;
+} else {
+throw ioe;
+}
+}
+}, "java.io.BufferedReader,~N,~B,~A,~N");
+c$.getPngZipPointAndCount = Clazz.defineMethod (c$, "getPngZipPointAndCount", 
+function (bis, pt_count) {
+bis.mark (75);
+try {
+var data = javajs.util.Rdr.getLimitedStreamBytes (bis, 74);
+bis.reset ();
+var pt = 0;
+for (var i = 64, f = 1; --i > 54; f *= 10) pt += (data[i] - 48) * f;
+
+var n = 0;
+for (var i = 74, f = 1; --i > 64; f *= 10) n += (data[i] - 48) * f;
+
+pt_count[0] = pt;
+pt_count[1] = n;
+} catch (e) {
+pt_count[1] = 0;
+}
+}, "java.io.BufferedInputStream,~A");
+c$.getPngZipStream = Clazz.defineMethod (c$, "getPngZipStream", 
+function (bis, asNewStream) {
+if (!javajs.util.Rdr.isPngZipStream (bis)) return bis;
+var data =  Clazz.newByteArray (0, 0);
+bis.mark (75);
+try {
+var pt_count =  Clazz.newIntArray (2, 0);
+javajs.util.Rdr.getPngZipPointAndCount (bis, pt_count);
+if (pt_count[1] != 0) {
+var pt = pt_count[0];
+while (pt > 0) pt -= bis.skip (pt);
+
+if (!asNewStream) return bis;
+data = javajs.util.Rdr.getLimitedStreamBytes (bis, pt_count[1]);
+}} catch (e) {
+} finally {
+try {
+if (asNewStream) bis.close ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+}
+return javajs.util.Rdr.getBIS (data);
+}, "java.io.BufferedInputStream,~B");
+c$.getZipRoot = Clazz.defineMethod (c$, "getZipRoot", 
+function (fileName) {
+var pt = fileName.indexOf ("|");
+return (pt < 0 ? fileName : fileName.substring (0, pt));
+}, "~S");
+});
index daa1518..b597d0f 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.sb = null;\r
-this.s = null;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "SB");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-{\r
-this.s = "";\r
-}});\r
-c$.newN = Clazz.defineMethod (c$, "newN", \r
-function (n) {\r
-{\r
-return new javajs.util.SB();\r
-}}, "~N");\r
-c$.newS = Clazz.defineMethod (c$, "newS", \r
-function (s) {\r
-{\r
-var sb = new javajs.util.SB();\r
-sb.s = s;\r
-return sb;\r
-}}, "~S");\r
-Clazz.defineMethod (c$, "append", \r
-function (s) {\r
-{\r
-this.s += s\r
-}return this;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "appendC", \r
-function (c) {\r
-{\r
-this.s += c;\r
-}return this;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "appendI", \r
-function (i) {\r
-{\r
-this.s += i\r
-}return this;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "appendB", \r
-function (b) {\r
-{\r
-this.s += b\r
-}return this;\r
-}, "~B");\r
-Clazz.defineMethod (c$, "appendF", \r
-function (f) {\r
-{\r
-var sf = "" + f;\r
-if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0)\r
-sf += ".0" ;\r
-this.s += sf;\r
-}return this;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "appendD", \r
-function (d) {\r
-{\r
-var sf = "" + d;\r
-if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0)\r
-sf += ".0" ;\r
-this.s += sf;\r
-}return this;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "appendSB", \r
-function (buf) {\r
-{\r
-this.s += buf.s;\r
-}return this;\r
-}, "javajs.util.SB");\r
-Clazz.defineMethod (c$, "appendO", \r
-function (data) {\r
-if (data != null) {\r
-{\r
-this.s += data.toString();\r
-}}return this;\r
-}, "~O");\r
-Clazz.defineMethod (c$, "appendCB", \r
-function (cb, off, len) {\r
-{\r
-for (var i = len,j=off; --i >= 0;)\r
-this.s += cb[j++];\r
-}}, "~A,~N,~N");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-{\r
-return this.s;\r
-}});\r
-Clazz.defineMethod (c$, "length", \r
-function () {\r
-{\r
-return this.s.length;\r
-}});\r
-Clazz.defineMethod (c$, "indexOf", \r
-function (s) {\r
-{\r
-return this.s.indexOf(s);\r
-}}, "~S");\r
-Clazz.defineMethod (c$, "charAt", \r
-function (i) {\r
-{\r
-return this.s.charAt(i);\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "charCodeAt", \r
-function (i) {\r
-{\r
-return this.s.charCodeAt(i);\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "setLength", \r
-function (n) {\r
-{\r
-this.s = this.s.substring(0, n);\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "lastIndexOf", \r
-function (s) {\r
-{\r
-return this.s.lastIndexOf(s);\r
-}}, "~S");\r
-Clazz.defineMethod (c$, "indexOf2", \r
-function (s, i) {\r
-{\r
-return this.s.indexOf(s, i);\r
-}}, "~S,~N");\r
-Clazz.defineMethod (c$, "substring", \r
-function (i) {\r
-{\r
-return this.s.substring(i);\r
-}}, "~N");\r
-Clazz.defineMethod (c$, "substring2", \r
-function (i, j) {\r
-{\r
-return this.s.substring(i, j);\r
-}}, "~N,~N");\r
-Clazz.defineMethod (c$, "toBytes", \r
-function (off, len) {\r
-if (len < 0) len = this.length () - off;\r
-var b =  Clazz.newByteArray (len, 0);\r
-for (var i = off + len, j = i - off; --i >= off; ) b[--j] = (this.charAt (i)).charCodeAt (0);\r
-\r
-return b;\r
-}, "~N,~N");\r
-Clazz.defineMethod (c$, "replace", \r
-function (start, end, str) {\r
-{\r
-this.s = this.s.substring(0, start) + str + this.s.substring(end);\r
-}}, "~N,~N,~S");\r
-Clazz.defineMethod (c$, "insert", \r
-function (offset, str) {\r
-this.replace (offset, offset, str);\r
-}, "~N,~S");\r
+Clazz.declarePackage ("javajs.util");
+c$ = Clazz.decorateAsClass (function () {
+this.sb = null;
+this.s = null;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "SB");
+Clazz.makeConstructor (c$, 
+function () {
+{
+this.s = "";
+}});
+c$.newN = Clazz.defineMethod (c$, "newN", 
+function (n) {
+{
+return new javajs.util.SB();
+}}, "~N");
+c$.newS = Clazz.defineMethod (c$, "newS", 
+function (s) {
+{
+var sb = new javajs.util.SB();
+sb.s = s;
+return sb;
+}}, "~S");
+Clazz.defineMethod (c$, "append", 
+function (s) {
+{
+this.s += s
+}return this;
+}, "~S");
+Clazz.defineMethod (c$, "appendC", 
+function (c) {
+{
+this.s += c;
+}return this;
+}, "~S");
+Clazz.defineMethod (c$, "appendI", 
+function (i) {
+{
+this.s += i
+}return this;
+}, "~N");
+Clazz.defineMethod (c$, "appendB", 
+function (b) {
+{
+this.s += b
+}return this;
+}, "~B");
+Clazz.defineMethod (c$, "appendF", 
+function (f) {
+{
+var sf = "" + f;
+if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0)
+sf += ".0" ;
+this.s += sf;
+}return this;
+}, "~N");
+Clazz.defineMethod (c$, "appendD", 
+function (d) {
+{
+var sf = "" + d;
+if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0)
+sf += ".0" ;
+this.s += sf;
+}return this;
+}, "~N");
+Clazz.defineMethod (c$, "appendSB", 
+function (buf) {
+{
+this.s += buf.s;
+}return this;
+}, "javajs.util.SB");
+Clazz.defineMethod (c$, "appendO", 
+function (data) {
+if (data != null) {
+{
+this.s += data.toString();
+}}return this;
+}, "~O");
+Clazz.defineMethod (c$, "appendCB", 
+function (cb, off, len) {
+{
+for (var i = len,j=off; --i >= 0;)
+this.s += cb[j++];
+}}, "~A,~N,~N");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+{
+return this.s;
+}});
+Clazz.defineMethod (c$, "length", 
+function () {
+{
+return this.s.length;
+}});
+Clazz.defineMethod (c$, "indexOf", 
+function (s) {
+{
+return this.s.indexOf(s);
+}}, "~S");
+Clazz.defineMethod (c$, "charAt", 
+function (i) {
+{
+return this.s.charAt(i);
+}}, "~N");
+Clazz.defineMethod (c$, "charCodeAt", 
+function (i) {
+{
+return this.s.charCodeAt(i);
+}}, "~N");
+Clazz.defineMethod (c$, "setLength", 
+function (n) {
+{
+this.s = this.s.substring(0, n);
+}}, "~N");
+Clazz.defineMethod (c$, "lastIndexOf", 
+function (s) {
+{
+return this.s.lastIndexOf(s);
+}}, "~S");
+Clazz.defineMethod (c$, "indexOf2", 
+function (s, i) {
+{
+return this.s.indexOf(s, i);
+}}, "~S,~N");
+Clazz.defineMethod (c$, "substring", 
+function (i) {
+{
+return this.s.substring(i);
+}}, "~N");
+Clazz.defineMethod (c$, "substring2", 
+function (i, j) {
+{
+return this.s.substring(i, j);
+}}, "~N,~N");
+Clazz.defineMethod (c$, "toBytes", 
+function (off, len) {
+if (len < 0) len = this.length () - off;
+var b =  Clazz.newByteArray (len, 0);
+for (var i = off + len, j = i - off; --i >= off; ) b[--j] = (this.charAt (i)).charCodeAt (0);
+
+return b;
+}, "~N,~N");
+Clazz.defineMethod (c$, "replace", 
+function (start, end, str) {
+{
+this.s = this.s.substring(0, start) + str + this.s.substring(end);
+}}, "~N,~N,~S");
+Clazz.defineMethod (c$, "insert", 
+function (offset, str) {
+this.replace (offset, offset, str);
+}, "~N,~S");
index 691fb2c..229c2ac 100644 (file)
@@ -1,12 +1,12 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.util.DataReader"], "javajs.util.StringDataReader", ["java.io.StringReader"], function () {\r
-c$ = Clazz.declareType (javajs.util, "StringDataReader", javajs.util.DataReader);\r
-Clazz.makeConstructor (c$, \r
-function (data) {\r
-Clazz.superConstructor (this, javajs.util.StringDataReader, [ new java.io.StringReader (data)]);\r
-}, "~S");\r
-Clazz.overrideMethod (c$, "setData", \r
-function (data) {\r
-return  new javajs.util.StringDataReader (data);\r
-}, "~O");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.util.DataReader"], "javajs.util.StringDataReader", ["java.io.StringReader"], function () {
+c$ = Clazz.declareType (javajs.util, "StringDataReader", javajs.util.DataReader);
+Clazz.makeConstructor (c$, 
+function (data) {
+Clazz.superConstructor (this, javajs.util.StringDataReader, [ new java.io.StringReader (data)]);
+}, "~S");
+Clazz.overrideMethod (c$, "setData", 
+function (data) {
+return  new javajs.util.StringDataReader (data);
+}, "~O");
+});
index a914fe2..81c591c 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.api.JSONEncodable"], "javajs.util.T3", ["java.lang.Float"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.x = 0;\r
-this.y = 0;\r
-this.z = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "T3", null, [javajs.api.JSONEncodable, java.io.Serializable]);\r
-Clazz.defineMethod (c$, "set", \r
-function (x, y, z) {\r
-this.x = x;\r
-this.y = y;\r
-this.z = z;\r
-}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "setA", \r
-function (t) {\r
-this.x = t[0];\r
-this.y = t[1];\r
-this.z = t[2];\r
-}, "~A");\r
-Clazz.defineMethod (c$, "setT", \r
-function (t1) {\r
-this.x = t1.x;\r
-this.y = t1.y;\r
-this.z = t1.z;\r
-}, "javajs.util.T3");\r
-Clazz.defineMethod (c$, "add2", \r
-function (t1, t2) {\r
-this.x = t1.x + t2.x;\r
-this.y = t1.y + t2.y;\r
-this.z = t1.z + t2.z;\r
-}, "javajs.util.T3,javajs.util.T3");\r
-Clazz.defineMethod (c$, "add", \r
-function (t1) {\r
-this.x += t1.x;\r
-this.y += t1.y;\r
-this.z += t1.z;\r
-}, "javajs.util.T3");\r
-Clazz.defineMethod (c$, "distanceSquared", \r
-function (p1) {\r
-var dx = this.x - p1.x;\r
-var dy = this.y - p1.y;\r
-var dz = this.z - p1.z;\r
-return (dx * dx + dy * dy + dz * dz);\r
-}, "javajs.util.T3");\r
-Clazz.defineMethod (c$, "distance", \r
-function (p1) {\r
-return Math.sqrt (this.distanceSquared (p1));\r
-}, "javajs.util.T3");\r
-Clazz.defineMethod (c$, "sub2", \r
-function (t1, t2) {\r
-this.x = t1.x - t2.x;\r
-this.y = t1.y - t2.y;\r
-this.z = t1.z - t2.z;\r
-}, "javajs.util.T3,javajs.util.T3");\r
-Clazz.defineMethod (c$, "sub", \r
-function (t1) {\r
-this.x -= t1.x;\r
-this.y -= t1.y;\r
-this.z -= t1.z;\r
-}, "javajs.util.T3");\r
-Clazz.defineMethod (c$, "scale", \r
-function (s) {\r
-this.x *= s;\r
-this.y *= s;\r
-this.z *= s;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "add3", \r
-function (a, b, c) {\r
-this.x += a;\r
-this.y += b;\r
-this.z += c;\r
-}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "scaleT", \r
-function (p) {\r
-this.x *= p.x;\r
-this.y *= p.y;\r
-this.z *= p.z;\r
-}, "javajs.util.T3");\r
-Clazz.defineMethod (c$, "scaleAdd2", \r
-function (s, t1, t2) {\r
-this.x = s * t1.x + t2.x;\r
-this.y = s * t1.y + t2.y;\r
-this.z = s * t1.z + t2.z;\r
-}, "~N,javajs.util.T3,javajs.util.T3");\r
-Clazz.defineMethod (c$, "ave", \r
-function (a, b) {\r
-this.x = (a.x + b.x) / 2;\r
-this.y = (a.y + b.y) / 2;\r
-this.z = (a.z + b.z) / 2;\r
-}, "javajs.util.T3,javajs.util.T3");\r
-Clazz.defineMethod (c$, "dot", \r
-function (v) {\r
-return this.x * v.x + this.y * v.y + this.z * v.z;\r
-}, "javajs.util.T3");\r
-Clazz.defineMethod (c$, "lengthSquared", \r
-function () {\r
-return this.x * this.x + this.y * this.y + this.z * this.z;\r
-});\r
-Clazz.defineMethod (c$, "length", \r
-function () {\r
-return Math.sqrt (this.lengthSquared ());\r
-});\r
-Clazz.defineMethod (c$, "normalize", \r
-function () {\r
-var d = this.length ();\r
-this.x /= d;\r
-this.y /= d;\r
-this.z /= d;\r
-});\r
-Clazz.defineMethod (c$, "cross", \r
-function (v1, v2) {\r
-this.set (v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - v1.y * v2.x);\r
-}, "javajs.util.T3,javajs.util.T3");\r
-Clazz.overrideMethod (c$, "hashCode", \r
-function () {\r
-var bits = 1;\r
-bits = 31 * bits + javajs.util.T3.floatToIntBits0 (this.x);\r
-bits = 31 * bits + javajs.util.T3.floatToIntBits0 (this.y);\r
-bits = 31 * bits + javajs.util.T3.floatToIntBits0 (this.z);\r
-return (bits ^ (bits >> 32));\r
-});\r
-c$.floatToIntBits0 = Clazz.defineMethod (c$, "floatToIntBits0", \r
-function (f) {\r
-return (f == 0 ? 0 : Float.floatToIntBits (f));\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "equals", \r
-function (t1) {\r
-if (!(Clazz.instanceOf (t1, javajs.util.T3))) return false;\r
-var t2 = t1;\r
-return (this.x == t2.x && this.y == t2.y && this.z == t2.z);\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "{" + this.x + ", " + this.y + ", " + this.z + "}";\r
-});\r
-Clazz.overrideMethod (c$, "toJSON", \r
-function () {\r
-return "[" + this.x + "," + this.y + "," + this.z + "]";\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.api.JSONEncodable"], "javajs.util.T3", ["java.lang.Float"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.x = 0;
+this.y = 0;
+this.z = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "T3", null, [javajs.api.JSONEncodable, java.io.Serializable]);
+Clazz.defineMethod (c$, "set", 
+function (x, y, z) {
+this.x = x;
+this.y = y;
+this.z = z;
+}, "~N,~N,~N");
+Clazz.defineMethod (c$, "setA", 
+function (t) {
+this.x = t[0];
+this.y = t[1];
+this.z = t[2];
+}, "~A");
+Clazz.defineMethod (c$, "setT", 
+function (t1) {
+this.x = t1.x;
+this.y = t1.y;
+this.z = t1.z;
+}, "javajs.util.T3");
+Clazz.defineMethod (c$, "add2", 
+function (t1, t2) {
+this.x = t1.x + t2.x;
+this.y = t1.y + t2.y;
+this.z = t1.z + t2.z;
+}, "javajs.util.T3,javajs.util.T3");
+Clazz.defineMethod (c$, "add", 
+function (t1) {
+this.x += t1.x;
+this.y += t1.y;
+this.z += t1.z;
+}, "javajs.util.T3");
+Clazz.defineMethod (c$, "distanceSquared", 
+function (p1) {
+var dx = this.x - p1.x;
+var dy = this.y - p1.y;
+var dz = this.z - p1.z;
+return (dx * dx + dy * dy + dz * dz);
+}, "javajs.util.T3");
+Clazz.defineMethod (c$, "distance", 
+function (p1) {
+return Math.sqrt (this.distanceSquared (p1));
+}, "javajs.util.T3");
+Clazz.defineMethod (c$, "sub2", 
+function (t1, t2) {
+this.x = t1.x - t2.x;
+this.y = t1.y - t2.y;
+this.z = t1.z - t2.z;
+}, "javajs.util.T3,javajs.util.T3");
+Clazz.defineMethod (c$, "sub", 
+function (t1) {
+this.x -= t1.x;
+this.y -= t1.y;
+this.z -= t1.z;
+}, "javajs.util.T3");
+Clazz.defineMethod (c$, "scale", 
+function (s) {
+this.x *= s;
+this.y *= s;
+this.z *= s;
+}, "~N");
+Clazz.defineMethod (c$, "add3", 
+function (a, b, c) {
+this.x += a;
+this.y += b;
+this.z += c;
+}, "~N,~N,~N");
+Clazz.defineMethod (c$, "scaleT", 
+function (p) {
+this.x *= p.x;
+this.y *= p.y;
+this.z *= p.z;
+}, "javajs.util.T3");
+Clazz.defineMethod (c$, "scaleAdd2", 
+function (s, t1, t2) {
+this.x = s * t1.x + t2.x;
+this.y = s * t1.y + t2.y;
+this.z = s * t1.z + t2.z;
+}, "~N,javajs.util.T3,javajs.util.T3");
+Clazz.defineMethod (c$, "ave", 
+function (a, b) {
+this.x = (a.x + b.x) / 2;
+this.y = (a.y + b.y) / 2;
+this.z = (a.z + b.z) / 2;
+}, "javajs.util.T3,javajs.util.T3");
+Clazz.defineMethod (c$, "dot", 
+function (v) {
+return this.x * v.x + this.y * v.y + this.z * v.z;
+}, "javajs.util.T3");
+Clazz.defineMethod (c$, "lengthSquared", 
+function () {
+return this.x * this.x + this.y * this.y + this.z * this.z;
+});
+Clazz.defineMethod (c$, "length", 
+function () {
+return Math.sqrt (this.lengthSquared ());
+});
+Clazz.defineMethod (c$, "normalize", 
+function () {
+var d = this.length ();
+this.x /= d;
+this.y /= d;
+this.z /= d;
+});
+Clazz.defineMethod (c$, "cross", 
+function (v1, v2) {
+this.set (v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - v1.y * v2.x);
+}, "javajs.util.T3,javajs.util.T3");
+Clazz.overrideMethod (c$, "hashCode", 
+function () {
+var bits = 1;
+bits = 31 * bits + javajs.util.T3.floatToIntBits0 (this.x);
+bits = 31 * bits + javajs.util.T3.floatToIntBits0 (this.y);
+bits = 31 * bits + javajs.util.T3.floatToIntBits0 (this.z);
+return (bits ^ (bits >> 32));
+});
+c$.floatToIntBits0 = Clazz.defineMethod (c$, "floatToIntBits0", 
+function (f) {
+return (f == 0 ? 0 : Float.floatToIntBits (f));
+}, "~N");
+Clazz.overrideMethod (c$, "equals", 
+function (t1) {
+if (!(Clazz.instanceOf (t1, javajs.util.T3))) return false;
+var t2 = t1;
+return (this.x == t2.x && this.y == t2.y && this.z == t2.z);
+}, "~O");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "{" + this.x + ", " + this.y + ", " + this.z + "}";
+});
+Clazz.overrideMethod (c$, "toJSON", 
+function () {
+return "[" + this.x + "," + this.y + "," + this.z + "]";
+});
+});
index 4040423..984370c 100644 (file)
@@ -1,87 +1,87 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (null, "javajs.util.T3d", ["java.lang.Double"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.x = 0;\r
-this.y = 0;\r
-this.z = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "T3d", null, java.io.Serializable);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "set", \r
-function (x, y, z) {\r
-this.x = x;\r
-this.y = y;\r
-this.z = z;\r
-}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "setA", \r
-function (t) {\r
-this.x = t[0];\r
-this.y = t[1];\r
-this.z = t[2];\r
-}, "~A");\r
-Clazz.defineMethod (c$, "setT", \r
-function (t1) {\r
-this.x = t1.x;\r
-this.y = t1.y;\r
-this.z = t1.z;\r
-}, "javajs.util.T3d");\r
-Clazz.defineMethod (c$, "add2", \r
-function (t1, t2) {\r
-this.x = t1.x + t2.x;\r
-this.y = t1.y + t2.y;\r
-this.z = t1.z + t2.z;\r
-}, "javajs.util.T3d,javajs.util.T3d");\r
-Clazz.defineMethod (c$, "add", \r
-function (t1) {\r
-this.x += t1.x;\r
-this.y += t1.y;\r
-this.z += t1.z;\r
-}, "javajs.util.T3d");\r
-Clazz.defineMethod (c$, "sub2", \r
-function (t1, t2) {\r
-this.x = t1.x - t2.x;\r
-this.y = t1.y - t2.y;\r
-this.z = t1.z - t2.z;\r
-}, "javajs.util.T3d,javajs.util.T3d");\r
-Clazz.defineMethod (c$, "sub", \r
-function (t1) {\r
-this.x -= t1.x;\r
-this.y -= t1.y;\r
-this.z -= t1.z;\r
-}, "javajs.util.T3d");\r
-Clazz.defineMethod (c$, "scale", \r
-function (s) {\r
-this.x *= s;\r
-this.y *= s;\r
-this.z *= s;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "scaleAdd", \r
-function (s, t1, t2) {\r
-this.x = s * t1.x + t2.x;\r
-this.y = s * t1.y + t2.y;\r
-this.z = s * t1.z + t2.z;\r
-}, "~N,javajs.util.T3d,javajs.util.T3d");\r
-Clazz.overrideMethod (c$, "hashCode", \r
-function () {\r
-var xbits = javajs.util.T3d.doubleToLongBits0 (this.x);\r
-var ybits = javajs.util.T3d.doubleToLongBits0 (this.y);\r
-var zbits = javajs.util.T3d.doubleToLongBits0 (this.z);\r
-return (xbits ^ (xbits >> 32) ^ ybits ^ (ybits >> 32) ^ zbits ^ (zbits >> 32));\r
-});\r
-c$.doubleToLongBits0 = Clazz.defineMethod (c$, "doubleToLongBits0", \r
-function (d) {\r
-return (d == 0 ? 0 : Double.doubleToLongBits (d));\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "equals", \r
-function (t1) {\r
-if (!(Clazz.instanceOf (t1, javajs.util.T3d))) return false;\r
-var t2 = t1;\r
-return (this.x == t2.x && this.y == t2.y && this.z == t2.z);\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "{" + this.x + ", " + this.y + ", " + this.z + "}";\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (null, "javajs.util.T3d", ["java.lang.Double"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.x = 0;
+this.y = 0;
+this.z = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "T3d", null, java.io.Serializable);
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.defineMethod (c$, "set", 
+function (x, y, z) {
+this.x = x;
+this.y = y;
+this.z = z;
+}, "~N,~N,~N");
+Clazz.defineMethod (c$, "setA", 
+function (t) {
+this.x = t[0];
+this.y = t[1];
+this.z = t[2];
+}, "~A");
+Clazz.defineMethod (c$, "setT", 
+function (t1) {
+this.x = t1.x;
+this.y = t1.y;
+this.z = t1.z;
+}, "javajs.util.T3d");
+Clazz.defineMethod (c$, "add2", 
+function (t1, t2) {
+this.x = t1.x + t2.x;
+this.y = t1.y + t2.y;
+this.z = t1.z + t2.z;
+}, "javajs.util.T3d,javajs.util.T3d");
+Clazz.defineMethod (c$, "add", 
+function (t1) {
+this.x += t1.x;
+this.y += t1.y;
+this.z += t1.z;
+}, "javajs.util.T3d");
+Clazz.defineMethod (c$, "sub2", 
+function (t1, t2) {
+this.x = t1.x - t2.x;
+this.y = t1.y - t2.y;
+this.z = t1.z - t2.z;
+}, "javajs.util.T3d,javajs.util.T3d");
+Clazz.defineMethod (c$, "sub", 
+function (t1) {
+this.x -= t1.x;
+this.y -= t1.y;
+this.z -= t1.z;
+}, "javajs.util.T3d");
+Clazz.defineMethod (c$, "scale", 
+function (s) {
+this.x *= s;
+this.y *= s;
+this.z *= s;
+}, "~N");
+Clazz.defineMethod (c$, "scaleAdd", 
+function (s, t1, t2) {
+this.x = s * t1.x + t2.x;
+this.y = s * t1.y + t2.y;
+this.z = s * t1.z + t2.z;
+}, "~N,javajs.util.T3d,javajs.util.T3d");
+Clazz.overrideMethod (c$, "hashCode", 
+function () {
+var xbits = javajs.util.T3d.doubleToLongBits0 (this.x);
+var ybits = javajs.util.T3d.doubleToLongBits0 (this.y);
+var zbits = javajs.util.T3d.doubleToLongBits0 (this.z);
+return (xbits ^ (xbits >> 32) ^ ybits ^ (ybits >> 32) ^ zbits ^ (zbits >> 32));
+});
+c$.doubleToLongBits0 = Clazz.defineMethod (c$, "doubleToLongBits0", 
+function (d) {
+return (d == 0 ? 0 : Double.doubleToLongBits (d));
+}, "~N");
+Clazz.overrideMethod (c$, "equals", 
+function (t1) {
+if (!(Clazz.instanceOf (t1, javajs.util.T3d))) return false;
+var t2 = t1;
+return (this.x == t2.x && this.y == t2.y && this.z == t2.z);
+}, "~O");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "{" + this.x + ", " + this.y + ", " + this.z + "}";
+});
+});
index bc24bf4..43b9910 100644 (file)
@@ -1,48 +1,48 @@
-Clazz.declarePackage ("javajs.util");\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.x = 0;\r
-this.y = 0;\r
-this.z = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "T3i", null, java.io.Serializable);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.defineMethod (c$, "set", \r
-function (x, y, z) {\r
-this.x = x;\r
-this.y = y;\r
-this.z = z;\r
-}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "setT", \r
-function (t1) {\r
-this.x = t1.x;\r
-this.y = t1.y;\r
-this.z = t1.z;\r
-}, "javajs.util.T3i");\r
-Clazz.defineMethod (c$, "add", \r
-function (t) {\r
-this.x += t.x;\r
-this.y += t.y;\r
-this.z += t.z;\r
-}, "javajs.util.T3i");\r
-Clazz.defineMethod (c$, "scaleAdd", \r
-function (s, t1, t2) {\r
-this.x = s * t1.x + t2.x;\r
-this.y = s * t1.y + t2.y;\r
-this.z = s * t1.z + t2.z;\r
-}, "~N,javajs.util.T3i,javajs.util.T3i");\r
-Clazz.overrideMethod (c$, "hashCode", \r
-function () {\r
-return this.x ^ this.y ^ this.z;\r
-});\r
-Clazz.overrideMethod (c$, "equals", \r
-function (o) {\r
-if (!(Clazz.instanceOf (o, javajs.util.T3i))) return false;\r
-var t = o;\r
-return (this.x == t.x && this.y == t.y && this.z == t.z);\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "(" + this.x + ", " + this.y + ", " + this.z + ")";\r
-});\r
+Clazz.declarePackage ("javajs.util");
+c$ = Clazz.decorateAsClass (function () {
+this.x = 0;
+this.y = 0;
+this.z = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "T3i", null, java.io.Serializable);
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.defineMethod (c$, "set", 
+function (x, y, z) {
+this.x = x;
+this.y = y;
+this.z = z;
+}, "~N,~N,~N");
+Clazz.defineMethod (c$, "setT", 
+function (t1) {
+this.x = t1.x;
+this.y = t1.y;
+this.z = t1.z;
+}, "javajs.util.T3i");
+Clazz.defineMethod (c$, "add", 
+function (t) {
+this.x += t.x;
+this.y += t.y;
+this.z += t.z;
+}, "javajs.util.T3i");
+Clazz.defineMethod (c$, "scaleAdd", 
+function (s, t1, t2) {
+this.x = s * t1.x + t2.x;
+this.y = s * t1.y + t2.y;
+this.z = s * t1.z + t2.z;
+}, "~N,javajs.util.T3i,javajs.util.T3i");
+Clazz.overrideMethod (c$, "hashCode", 
+function () {
+return this.x ^ this.y ^ this.z;
+});
+Clazz.overrideMethod (c$, "equals", 
+function (o) {
+if (!(Clazz.instanceOf (o, javajs.util.T3i))) return false;
+var t = o;
+return (this.x == t.x && this.y == t.y && this.z == t.z);
+}, "~O");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "(" + this.x + ", " + this.y + ", " + this.z + ")";
+});
index 3ea8edd..d33a2c7 100644 (file)
@@ -1,37 +1,37 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.util.T3"], "javajs.util.T4", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.w = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "T4", javajs.util.T3);\r
-Clazz.defineMethod (c$, "set4", \r
-function (x, y, z, w) {\r
-this.x = x;\r
-this.y = y;\r
-this.z = z;\r
-this.w = w;\r
-}, "~N,~N,~N,~N");\r
-Clazz.defineMethod (c$, "scale4", \r
-function (s) {\r
-this.scale (s);\r
-this.w *= s;\r
-}, "~N");\r
-Clazz.overrideMethod (c$, "hashCode", \r
-function () {\r
-return javajs.util.T3.floatToIntBits0 (this.x) ^ javajs.util.T3.floatToIntBits0 (this.y) ^ javajs.util.T3.floatToIntBits0 (this.z) ^ javajs.util.T3.floatToIntBits0 (this.w);\r
-});\r
-Clazz.overrideMethod (c$, "equals", \r
-function (o) {\r
-if (!(Clazz.instanceOf (o, javajs.util.T4))) return false;\r
-var t = o;\r
-return (this.x == t.x && this.y == t.y && this.z == t.z && this.w == t.w);\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "toString", \r
-function () {\r
-return "(" + this.x + ", " + this.y + ", " + this.z + ", " + this.w + ")";\r
-});\r
-Clazz.overrideMethod (c$, "toJSON", \r
-function () {\r
-return "[" + this.x + ", " + this.y + ", " + this.z + ", " + this.w + "]";\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.util.T3"], "javajs.util.T4", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.w = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "T4", javajs.util.T3);
+Clazz.defineMethod (c$, "set4", 
+function (x, y, z, w) {
+this.x = x;
+this.y = y;
+this.z = z;
+this.w = w;
+}, "~N,~N,~N,~N");
+Clazz.defineMethod (c$, "scale4", 
+function (s) {
+this.scale (s);
+this.w *= s;
+}, "~N");
+Clazz.overrideMethod (c$, "hashCode", 
+function () {
+return javajs.util.T3.floatToIntBits0 (this.x) ^ javajs.util.T3.floatToIntBits0 (this.y) ^ javajs.util.T3.floatToIntBits0 (this.z) ^ javajs.util.T3.floatToIntBits0 (this.w);
+});
+Clazz.overrideMethod (c$, "equals", 
+function (o) {
+if (!(Clazz.instanceOf (o, javajs.util.T4))) return false;
+var t = o;
+return (this.x == t.x && this.y == t.y && this.z == t.z && this.w == t.w);
+}, "~O");
+Clazz.overrideMethod (c$, "toString", 
+function () {
+return "(" + this.x + ", " + this.y + ", " + this.z + ", " + this.w + ")";
+});
+Clazz.overrideMethod (c$, "toJSON", 
+function () {
+return "[" + this.x + ", " + this.y + ", " + this.z + ", " + this.w + "]";
+});
+});
index 37591c1..28f7077 100644 (file)
@@ -1,31 +1,31 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.util.T3"], "javajs.util.V3", null, function () {\r
-c$ = Clazz.declareType (javajs.util, "V3", javajs.util.T3);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-c$.newV = Clazz.defineMethod (c$, "newV", \r
-function (t) {\r
-return javajs.util.V3.new3 (t.x, t.y, t.z);\r
-}, "javajs.util.T3");\r
-c$.newVsub = Clazz.defineMethod (c$, "newVsub", \r
-function (t1, t2) {\r
-return javajs.util.V3.new3 (t1.x - t2.x, t1.y - t2.y, t1.z - t2.z);\r
-}, "javajs.util.T3,javajs.util.T3");\r
-c$.new3 = Clazz.defineMethod (c$, "new3", \r
-function (x, y, z) {\r
-var v =  new javajs.util.V3 ();\r
-v.x = x;\r
-v.y = y;\r
-v.z = z;\r
-return v;\r
-}, "~N,~N,~N");\r
-Clazz.defineMethod (c$, "angle", \r
-function (v1) {\r
-var xx = this.y * v1.z - this.z * v1.y;\r
-var yy = this.z * v1.x - this.x * v1.z;\r
-var zz = this.x * v1.y - this.y * v1.x;\r
-var cross = Math.sqrt (xx * xx + yy * yy + zz * zz);\r
-return Math.abs (Math.atan2 (cross, this.dot (v1)));\r
-}, "javajs.util.V3");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.util.T3"], "javajs.util.V3", null, function () {
+c$ = Clazz.declareType (javajs.util, "V3", javajs.util.T3);
+Clazz.makeConstructor (c$, 
+function () {
+});
+c$.newV = Clazz.defineMethod (c$, "newV", 
+function (t) {
+return javajs.util.V3.new3 (t.x, t.y, t.z);
+}, "javajs.util.T3");
+c$.newVsub = Clazz.defineMethod (c$, "newVsub", 
+function (t1, t2) {
+return javajs.util.V3.new3 (t1.x - t2.x, t1.y - t2.y, t1.z - t2.z);
+}, "javajs.util.T3,javajs.util.T3");
+c$.new3 = Clazz.defineMethod (c$, "new3", 
+function (x, y, z) {
+var v =  new javajs.util.V3 ();
+v.x = x;
+v.y = y;
+v.z = z;
+return v;
+}, "~N,~N,~N");
+Clazz.defineMethod (c$, "angle", 
+function (v1) {
+var xx = this.y * v1.z - this.z * v1.y;
+var yy = this.z * v1.x - this.x * v1.z;
+var zz = this.x * v1.y - this.y * v1.x;
+var cross = Math.sqrt (xx * xx + yy * yy + zz * zz);
+return Math.abs (Math.atan2 (cross, this.dot (v1)));
+}, "javajs.util.V3");
+});
index 729c5a3..c3a166e 100644 (file)
@@ -1,27 +1,27 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.util.T3d"], "javajs.util.V3d", null, function () {\r
-c$ = Clazz.declareType (javajs.util, "V3d", javajs.util.T3d);\r
-Clazz.defineMethod (c$, "cross", \r
-function (v1, v2) {\r
-this.set (v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - v1.y * v2.x);\r
-}, "javajs.util.V3d,javajs.util.V3d");\r
-Clazz.defineMethod (c$, "normalize", \r
-function () {\r
-var d = this.length ();\r
-this.x /= d;\r
-this.y /= d;\r
-this.z /= d;\r
-});\r
-Clazz.defineMethod (c$, "dot", \r
-function (v) {\r
-return this.x * v.x + this.y * v.y + this.z * v.z;\r
-}, "javajs.util.V3d");\r
-Clazz.defineMethod (c$, "lengthSquared", \r
-function () {\r
-return this.x * this.x + this.y * this.y + this.z * this.z;\r
-});\r
-Clazz.defineMethod (c$, "length", \r
-function () {\r
-return Math.sqrt (this.lengthSquared ());\r
-});\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.util.T3d"], "javajs.util.V3d", null, function () {
+c$ = Clazz.declareType (javajs.util, "V3d", javajs.util.T3d);
+Clazz.defineMethod (c$, "cross", 
+function (v1, v2) {
+this.set (v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - v1.y * v2.x);
+}, "javajs.util.V3d,javajs.util.V3d");
+Clazz.defineMethod (c$, "normalize", 
+function () {
+var d = this.length ();
+this.x /= d;
+this.y /= d;
+this.z /= d;
+});
+Clazz.defineMethod (c$, "dot", 
+function (v) {
+return this.x * v.x + this.y * v.y + this.z * v.z;
+}, "javajs.util.V3d");
+Clazz.defineMethod (c$, "lengthSquared", 
+function () {
+return this.x * this.x + this.y * this.y + this.z * this.z;
+});
+Clazz.defineMethod (c$, "length", 
+function () {
+return Math.sqrt (this.lengthSquared ());
+});
+});
index ee4fff9..68b0ce4 100644 (file)
@@ -1,73 +1,73 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (null, "javajs.util.XmlUtil", ["javajs.util.PT"], function () {\r
-c$ = Clazz.declareType (javajs.util, "XmlUtil");\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-c$.openDocument = Clazz.defineMethod (c$, "openDocument", \r
-function (data) {\r
-data.append ("<?xml version=\"1.0\"?>\n");\r
-}, "javajs.util.SB");\r
-c$.openTag = Clazz.defineMethod (c$, "openTag", \r
-function (sb, name) {\r
-sb.append ("<").append (name).append (">\n");\r
-}, "javajs.util.SB,~S");\r
-c$.openTagAttr = Clazz.defineMethod (c$, "openTagAttr", \r
-function (sb, name, attributes) {\r
-javajs.util.XmlUtil.appendTagAll (sb, name, attributes, null, false, false);\r
-sb.append ("\n");\r
-}, "javajs.util.SB,~S,~A");\r
-c$.closeTag = Clazz.defineMethod (c$, "closeTag", \r
-function (sb, name) {\r
-sb.append ("</").append (name).append (">\n");\r
-}, "javajs.util.SB,~S");\r
-c$.appendTagAll = Clazz.defineMethod (c$, "appendTagAll", \r
-function (sb, name, attributes, data, isCdata, doClose) {\r
-var closer = ">";\r
-if (name.endsWith ("/")) {\r
-name = name.substring (0, name.length - 1);\r
-if (data == null) {\r
-closer = "/>\n";\r
-doClose = false;\r
-}}sb.append ("<").append (name);\r
-if (attributes != null) for (var i = 0; i < attributes.length; i++) {\r
-var o = attributes[i];\r
-if (o == null) continue;\r
-if (Clazz.instanceOf (o, Array)) for (var j = 0; j < (o).length; j += 2) javajs.util.XmlUtil.appendAttrib (sb, (o)[j], (o)[j + 1]);\r
-\r
- else javajs.util.XmlUtil.appendAttrib (sb, o, attributes[++i]);\r
-}\r
-sb.append (closer);\r
-if (data != null) {\r
-if (isCdata) data = javajs.util.XmlUtil.wrapCdata (data);\r
-sb.appendO (data);\r
-}if (doClose) javajs.util.XmlUtil.closeTag (sb, name);\r
-}, "javajs.util.SB,~S,~A,~O,~B,~B");\r
-c$.wrapCdata = Clazz.defineMethod (c$, "wrapCdata", \r
-function (data) {\r
-var s = "" + data;\r
-return (s.indexOf ("&") < 0 && s.indexOf ("<") < 0 ? (s.startsWith ("\n") ? "" : "\n") + s : "<![CDATA[" + javajs.util.PT.rep (s, "]]>", "]]]]><![CDATA[>") + "]]>");\r
-}, "~O");\r
-c$.unwrapCdata = Clazz.defineMethod (c$, "unwrapCdata", \r
-function (s) {\r
-return (s.startsWith ("<![CDATA[") && s.endsWith ("]]>") ? javajs.util.PT.rep (s.substring (9, s.length - 3), "]]]]><![CDATA[>", "]]>") : s);\r
-}, "~S");\r
-c$.appendTagObj = Clazz.defineMethod (c$, "appendTagObj", \r
-function (sb, name, attributes, data) {\r
-javajs.util.XmlUtil.appendTagAll (sb, name, attributes, data, false, true);\r
-}, "javajs.util.SB,~S,~A,~O");\r
-c$.appendTag = Clazz.defineMethod (c$, "appendTag", \r
-function (sb, name, data) {\r
-if (Clazz.instanceOf (data, Array)) javajs.util.XmlUtil.appendTagAll (sb, name, data, null, false, true);\r
- else javajs.util.XmlUtil.appendTagAll (sb, name, null, data, false, true);\r
-}, "javajs.util.SB,~S,~O");\r
-c$.appendCdata = Clazz.defineMethod (c$, "appendCdata", \r
-function (sb, name, attributes, data) {\r
-javajs.util.XmlUtil.appendTagAll (sb, name, attributes, data, true, true);\r
-}, "javajs.util.SB,~S,~A,~S");\r
-c$.appendAttrib = Clazz.defineMethod (c$, "appendAttrib", \r
-function (sb, name, value) {\r
-if (value == null) return;\r
-sb.append (" ").appendO (name).append ("=\"").appendO (value).append ("\"");\r
-}, "javajs.util.SB,~O,~O");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (null, "javajs.util.XmlUtil", ["javajs.util.PT"], function () {
+c$ = Clazz.declareType (javajs.util, "XmlUtil");
+Clazz.makeConstructor (c$, 
+function () {
+});
+c$.openDocument = Clazz.defineMethod (c$, "openDocument", 
+function (data) {
+data.append ("<?xml version=\"1.0\"?>\n");
+}, "javajs.util.SB");
+c$.openTag = Clazz.defineMethod (c$, "openTag", 
+function (sb, name) {
+sb.append ("<").append (name).append (">\n");
+}, "javajs.util.SB,~S");
+c$.openTagAttr = Clazz.defineMethod (c$, "openTagAttr", 
+function (sb, name, attributes) {
+javajs.util.XmlUtil.appendTagAll (sb, name, attributes, null, false, false);
+sb.append ("\n");
+}, "javajs.util.SB,~S,~A");
+c$.closeTag = Clazz.defineMethod (c$, "closeTag", 
+function (sb, name) {
+sb.append ("</").append (name).append (">\n");
+}, "javajs.util.SB,~S");
+c$.appendTagAll = Clazz.defineMethod (c$, "appendTagAll", 
+function (sb, name, attributes, data, isCdata, doClose) {
+var closer = ">";
+if (name.endsWith ("/")) {
+name = name.substring (0, name.length - 1);
+if (data == null) {
+closer = "/>\n";
+doClose = false;
+}}sb.append ("<").append (name);
+if (attributes != null) for (var i = 0; i < attributes.length; i++) {
+var o = attributes[i];
+if (o == null) continue;
+if (Clazz.instanceOf (o, Array)) for (var j = 0; j < (o).length; j += 2) javajs.util.XmlUtil.appendAttrib (sb, (o)[j], (o)[j + 1]);
+
+ else javajs.util.XmlUtil.appendAttrib (sb, o, attributes[++i]);
+}
+sb.append (closer);
+if (data != null) {
+if (isCdata) data = javajs.util.XmlUtil.wrapCdata (data);
+sb.appendO (data);
+}if (doClose) javajs.util.XmlUtil.closeTag (sb, name);
+}, "javajs.util.SB,~S,~A,~O,~B,~B");
+c$.wrapCdata = Clazz.defineMethod (c$, "wrapCdata", 
+function (data) {
+var s = "" + data;
+return (s.indexOf ("&") < 0 && s.indexOf ("<") < 0 ? (s.startsWith ("\n") ? "" : "\n") + s : "<![CDATA[" + javajs.util.PT.rep (s, "]]>", "]]]]><![CDATA[>") + "]]>");
+}, "~O");
+c$.unwrapCdata = Clazz.defineMethod (c$, "unwrapCdata", 
+function (s) {
+return (s.startsWith ("<![CDATA[") && s.endsWith ("]]>") ? javajs.util.PT.rep (s.substring (9, s.length - 3), "]]]]><![CDATA[>", "]]>") : s);
+}, "~S");
+c$.appendTagObj = Clazz.defineMethod (c$, "appendTagObj", 
+function (sb, name, attributes, data) {
+javajs.util.XmlUtil.appendTagAll (sb, name, attributes, data, false, true);
+}, "javajs.util.SB,~S,~A,~O");
+c$.appendTag = Clazz.defineMethod (c$, "appendTag", 
+function (sb, name, data) {
+if (Clazz.instanceOf (data, Array)) javajs.util.XmlUtil.appendTagAll (sb, name, data, null, false, true);
+ else javajs.util.XmlUtil.appendTagAll (sb, name, null, data, false, true);
+}, "javajs.util.SB,~S,~O");
+c$.appendCdata = Clazz.defineMethod (c$, "appendCdata", 
+function (sb, name, attributes, data) {
+javajs.util.XmlUtil.appendTagAll (sb, name, attributes, data, true, true);
+}, "javajs.util.SB,~S,~A,~S");
+c$.appendAttrib = Clazz.defineMethod (c$, "appendAttrib", 
+function (sb, name, value) {
+if (value == null) return;
+sb.append (" ").appendO (name).append ("=\"").appendO (value).append ("\"");
+}, "javajs.util.SB,~O,~O");
+});
index 8f318ca..8d9db8e 100644 (file)
@@ -1,45 +1,45 @@
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (null, "javajs.util.ZipData", ["javajs.util.Rdr", "$.ZipTools"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.isEnabled = true;\r
-this.buf = null;\r
-this.pt = 0;\r
-this.nBytes = 0;\r
-Clazz.instantialize (this, arguments);\r
-}, javajs.util, "ZipData");\r
-Clazz.makeConstructor (c$, \r
-function (nBytes) {\r
-this.nBytes = nBytes;\r
-}, "~N");\r
-Clazz.defineMethod (c$, "addBytes", \r
-function (byteBuf, nSectorBytes, nBytesRemaining) {\r
-if (this.pt == 0) {\r
-if (!javajs.util.Rdr.isGzipB (byteBuf)) {\r
-this.isEnabled = false;\r
-return -1;\r
-}this.buf =  Clazz.newByteArray (nBytesRemaining, 0);\r
-}var nToAdd = Math.min (nSectorBytes, nBytesRemaining);\r
-System.arraycopy (byteBuf, 0, this.buf, this.pt, nToAdd);\r
-this.pt += nToAdd;\r
-return nBytesRemaining - nToAdd;\r
-}, "~A,~N,~N");\r
-Clazz.defineMethod (c$, "addTo", \r
-function (jzt, data) {\r
-data.append (javajs.util.ZipData.getGzippedBytesAsString (jzt, this.buf));\r
-}, "javajs.api.GenericZipTools,javajs.util.SB");\r
-c$.getGzippedBytesAsString = Clazz.defineMethod (c$, "getGzippedBytesAsString", \r
-function (jzt, bytes) {\r
-try {\r
-var bis = jzt.getUnGzippedInputStream (bytes);\r
-var s = javajs.util.ZipTools.getStreamAsString (bis);\r
-bis.close ();\r
-return s;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-return "";\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "javajs.api.GenericZipTools,~A");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (null, "javajs.util.ZipData", ["javajs.util.Rdr", "$.ZipTools"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.isEnabled = true;
+this.buf = null;
+this.pt = 0;
+this.nBytes = 0;
+Clazz.instantialize (this, arguments);
+}, javajs.util, "ZipData");
+Clazz.makeConstructor (c$, 
+function (nBytes) {
+this.nBytes = nBytes;
+}, "~N");
+Clazz.defineMethod (c$, "addBytes", 
+function (byteBuf, nSectorBytes, nBytesRemaining) {
+if (this.pt == 0) {
+if (!javajs.util.Rdr.isGzipB (byteBuf)) {
+this.isEnabled = false;
+return -1;
+}this.buf =  Clazz.newByteArray (nBytesRemaining, 0);
+}var nToAdd = Math.min (nSectorBytes, nBytesRemaining);
+System.arraycopy (byteBuf, 0, this.buf, this.pt, nToAdd);
+this.pt += nToAdd;
+return nBytesRemaining - nToAdd;
+}, "~A,~N,~N");
+Clazz.defineMethod (c$, "addTo", 
+function (jzt, data) {
+data.append (javajs.util.ZipData.getGzippedBytesAsString (jzt, this.buf));
+}, "javajs.api.GenericZipTools,javajs.util.SB");
+c$.getGzippedBytesAsString = Clazz.defineMethod (c$, "getGzippedBytesAsString", 
+function (jzt, bytes) {
+try {
+var bis = jzt.getUnGzippedInputStream (bytes);
+var s = javajs.util.ZipTools.getStreamAsString (bis);
+bis.close ();
+return s;
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+return "";
+} else {
+throw e;
+}
+}
+}, "javajs.api.GenericZipTools,~A");
+});
index ee31ca7..6d95ca3 100644 (file)
Binary files a/bin/javajs/util/ZipTools.class and b/bin/javajs/util/ZipTools.class differ
index 5e0ad7b..fba24e6 100644 (file)
-Clazz.declarePackage ("javajs.util");\r
-Clazz.load (["javajs.api.GenericZipTools"], "javajs.util.ZipTools", ["java.io.BufferedInputStream", "$.IOException", "java.lang.Boolean", "java.util.zip.CRC32", "$.GZIPInputStream", "$.ZipEntry", "$.ZipInputStream", "javajs.api.GenericZipInputStream", "$.ZInputStream", "javajs.util.BArray", "$.Lst", "$.PT", "$.Rdr", "$.SB"], function () {\r
-c$ = Clazz.declareType (javajs.util, "ZipTools", null, javajs.api.GenericZipTools);\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.overrideMethod (c$, "newZipInputStream", \r
-function (is) {\r
-return javajs.util.ZipTools.newZIS (is);\r
-}, "java.io.InputStream");\r
-c$.newZIS = Clazz.defineMethod (c$, "newZIS", \r
-($fz = function (is) {\r
-return (Clazz.instanceOf (is, javajs.api.ZInputStream) ? is : Clazz.instanceOf (is, java.io.BufferedInputStream) ?  new javajs.api.GenericZipInputStream (is) :  new javajs.api.GenericZipInputStream ( new java.io.BufferedInputStream (is)));\r
-}, $fz.isPrivate = true, $fz), "java.io.InputStream");\r
-Clazz.overrideMethod (c$, "getAllZipData", \r
-function (is, subfileList, name0, binaryFileList, fileData) {\r
-var zis = javajs.util.ZipTools.newZIS (is);\r
-var ze;\r
-var listing =  new javajs.util.SB ();\r
-binaryFileList = "|" + binaryFileList + "|";\r
-var prefix = javajs.util.PT.join (subfileList, '/', 1);\r
-var prefixd = null;\r
-if (prefix != null) {\r
-prefixd = prefix.substring (0, prefix.indexOf ("/") + 1);\r
-if (prefixd.length == 0) prefixd = null;\r
-}try {\r
-while ((ze = zis.getNextEntry ()) != null) {\r
-var name = ze.getName ();\r
-if (prefix != null && prefixd != null && !(name.equals (prefix) || name.startsWith (prefixd))) continue;\r
-listing.append (name).appendC ('\n');\r
-var sname = "|" + name.substring (name.lastIndexOf ("/") + 1) + "|";\r
-var asBinaryString = (binaryFileList.indexOf (sname) >= 0);\r
-var bytes = javajs.util.Rdr.getLimitedStreamBytes (zis, ze.getSize ());\r
-var str;\r
-if (asBinaryString) {\r
-str = this.getBinaryStringForBytes (bytes);\r
-name += ":asBinaryString";\r
-} else {\r
-str = javajs.util.Rdr.fixUTF (bytes);\r
-}str = "BEGIN Directory Entry " + name + "\n" + str + "\nEND Directory Entry " + name + "\n";\r
-fileData.put (name0 + "|" + name, str);\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-fileData.put ("#Directory_Listing", listing.toString ());\r
-}, "java.io.InputStream,~A,~S,~S,java.util.Map");\r
-Clazz.defineMethod (c$, "getBinaryStringForBytes", \r
-($fz = function (bytes) {\r
-var ret =  new javajs.util.SB ();\r
-for (var i = 0; i < bytes.length; i++) ret.append (Integer.toHexString (bytes[i] & 0xFF)).appendC (' ');\r
-\r
-return ret.toString ();\r
-}, $fz.isPrivate = true, $fz), "~A");\r
-Clazz.overrideMethod (c$, "getZipFileDirectory", \r
-function (bis, list, listPtr, asBufferedInputStream) {\r
-var ret;\r
-if (list == null || listPtr >= list.length) return this.getZipDirectoryAsStringAndClose (bis);\r
-bis = javajs.util.Rdr.getPngZipStream (bis, true);\r
-var fileName = list[listPtr];\r
-var zis =  new java.util.zip.ZipInputStream (bis);\r
-var ze;\r
-try {\r
-var isAll = (fileName.equals ("."));\r
-if (isAll || fileName.lastIndexOf ("/") == fileName.length - 1) {\r
-ret =  new javajs.util.SB ();\r
-while ((ze = zis.getNextEntry ()) != null) {\r
-var name = ze.getName ();\r
-if (isAll || name.startsWith (fileName)) ret.append (name).appendC ('\n');\r
-}\r
-var str = ret.toString ();\r
-return (asBufferedInputStream ? javajs.util.Rdr.getBIS (str.getBytes ()) : str);\r
-}var pt = fileName.indexOf (":asBinaryString");\r
-var asBinaryString = (pt > 0);\r
-if (asBinaryString) fileName = fileName.substring (0, pt);\r
-fileName = fileName.$replace ('\\', '/');\r
-while ((ze = zis.getNextEntry ()) != null && !fileName.equals (ze.getName ())) {\r
-}\r
-var bytes = (ze == null ? null : javajs.util.Rdr.getLimitedStreamBytes (zis, ze.getSize ()));\r
-ze = null;\r
-zis.close ();\r
-if (bytes == null) return "";\r
-if (javajs.util.Rdr.isZipB (bytes) || javajs.util.Rdr.isPngZipB (bytes)) return this.getZipFileDirectory (javajs.util.Rdr.getBIS (bytes), list, ++listPtr, asBufferedInputStream);\r
-if (asBufferedInputStream) return javajs.util.Rdr.getBIS (bytes);\r
-if (asBinaryString) {\r
-ret =  new javajs.util.SB ();\r
-for (var i = 0; i < bytes.length; i++) ret.append (Integer.toHexString (bytes[i] & 0xFF)).appendC (' ');\r
-\r
-return ret.toString ();\r
-}if (javajs.util.Rdr.isGzipB (bytes)) bytes = javajs.util.Rdr.getLimitedStreamBytes (this.getUnGzippedInputStream (bytes), -1);\r
-return javajs.util.Rdr.fixUTF (bytes);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-return "";\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "java.io.BufferedInputStream,~A,~N,~B");\r
-Clazz.overrideMethod (c$, "getZipFileContentsAsBytes", \r
-function (bis, list, listPtr) {\r
-var ret =  Clazz.newByteArray (0, 0);\r
-var fileName = list[listPtr];\r
-if (fileName.lastIndexOf ("/") == fileName.length - 1) return ret;\r
-try {\r
-bis = javajs.util.Rdr.getPngZipStream (bis, true);\r
-var zis =  new java.util.zip.ZipInputStream (bis);\r
-var ze;\r
-while ((ze = zis.getNextEntry ()) != null) {\r
-if (!fileName.equals (ze.getName ())) continue;\r
-var bytes = javajs.util.Rdr.getLimitedStreamBytes (zis, ze.getSize ());\r
-return ((javajs.util.Rdr.isZipB (bytes) || javajs.util.Rdr.isPngZipB (bytes)) && ++listPtr < list.length ? this.getZipFileContentsAsBytes (javajs.util.Rdr.getBIS (bytes), list, listPtr) : bytes);\r
-}\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return ret;\r
-}, "java.io.BufferedInputStream,~A,~N");\r
-Clazz.overrideMethod (c$, "getZipDirectoryAsStringAndClose", \r
-function (bis) {\r
-var sb =  new javajs.util.SB ();\r
-var s =  new Array (0);\r
-try {\r
-s = this.getZipDirectoryOrErrorAndClose (bis, null);\r
-bis.close ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println (e.toString ());\r
-} else {\r
-throw e;\r
-}\r
-}\r
-for (var i = 0; i < s.length; i++) sb.append (s[i]).appendC ('\n');\r
-\r
-return sb.toString ();\r
-}, "java.io.BufferedInputStream");\r
-Clazz.overrideMethod (c$, "getZipDirectoryAndClose", \r
-function (bis, manifestID) {\r
-var s =  new Array (0);\r
-try {\r
-s = this.getZipDirectoryOrErrorAndClose (bis, manifestID);\r
-bis.close ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.out.println (e.toString ());\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return s;\r
-}, "java.io.BufferedInputStream,~S");\r
-Clazz.defineMethod (c$, "getZipDirectoryOrErrorAndClose", \r
-($fz = function (bis, manifestID) {\r
-bis = javajs.util.Rdr.getPngZipStream (bis, true);\r
-var v =  new javajs.util.Lst ();\r
-var zis =  new java.util.zip.ZipInputStream (bis);\r
-var ze;\r
-var manifest = null;\r
-while ((ze = zis.getNextEntry ()) != null) {\r
-var fileName = ze.getName ();\r
-if (manifestID != null && fileName.startsWith (manifestID)) manifest = javajs.util.ZipTools.getStreamAsString (zis);\r
- else if (!fileName.startsWith ("__MACOS")) v.addLast (fileName);\r
-}\r
-zis.close ();\r
-if (manifestID != null) v.add (0, manifest == null ? "" : manifest + "\n############\n");\r
-return v.toArray ( new Array (v.size ()));\r
-}, $fz.isPrivate = true, $fz), "java.io.BufferedInputStream,~S");\r
-c$.getStreamAsString = Clazz.defineMethod (c$, "getStreamAsString", \r
-function (is) {\r
-return javajs.util.Rdr.fixUTF (javajs.util.Rdr.getLimitedStreamBytes (is, -1));\r
-}, "java.io.InputStream");\r
-Clazz.overrideMethod (c$, "newGZIPInputStream", \r
-function (is) {\r
-return  new java.io.BufferedInputStream ( new java.util.zip.GZIPInputStream (is, 512));\r
-}, "java.io.InputStream");\r
-Clazz.overrideMethod (c$, "getUnGzippedInputStream", \r
-function (bytes) {\r
-try {\r
-return javajs.util.Rdr.getUnzippedInputStream (this, javajs.util.Rdr.getBIS (bytes));\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-return null;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "addZipEntry", \r
-function (zos, fileName) {\r
-(zos).putNextEntry ( new java.util.zip.ZipEntry (fileName));\r
-}, "~O,~S");\r
-Clazz.overrideMethod (c$, "closeZipEntry", \r
-function (zos) {\r
-(zos).closeEntry ();\r
-}, "~O");\r
-Clazz.overrideMethod (c$, "getZipOutputStream", \r
-function (bos) {\r
-{\r
-return javajs.api.Interface.getInterface(\r
-"java.util.zip.ZipOutputStream").setZOS(bos);\r
-}}, "~O");\r
-Clazz.overrideMethod (c$, "getCrcValue", \r
-function (bytes) {\r
-var crc =  new java.util.zip.CRC32 ();\r
-crc.update (bytes, 0, bytes.length);\r
-return crc.getValue ();\r
-}, "~A");\r
-Clazz.overrideMethod (c$, "readFileAsMap", \r
-function (bis, bdata, name) {\r
-var pt = (name == null ? -1 : name.indexOf ("|"));\r
-name = (pt >= 0 ? name.substring (pt + 1) : null);\r
-try {\r
-if (javajs.util.Rdr.isPngZipStream (bis)) {\r
-var isImage = "_IMAGE_".equals (name);\r
-if (name == null || isImage) bdata.put ((isImage ? "_DATA_" : "_IMAGE_"),  new javajs.util.BArray (javajs.util.ZipTools.getPngImageBytes (bis)));\r
-if (!isImage) this.cacheZipContents (bis, name, bdata, true);\r
-} else if (javajs.util.Rdr.isZipS (bis)) {\r
-this.cacheZipContents (bis, name, bdata, true);\r
-} else if (name == null) {\r
-bdata.put ("_DATA_",  new javajs.util.BArray (javajs.util.Rdr.getLimitedStreamBytes (bis, -1)));\r
-} else {\r
-throw  new java.io.IOException ("ZIP file " + name + " not found");\r
-}bdata.put ("$_BINARY_$", Boolean.TRUE);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-bdata.clear ();\r
-bdata.put ("_ERROR_", e.getMessage ());\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "java.io.BufferedInputStream,java.util.Map,~S");\r
-Clazz.overrideMethod (c$, "cacheZipContents", \r
-function (bis, fileName, cache, asByteArray) {\r
-var zis = javajs.util.ZipTools.newZIS (bis);\r
-var ze;\r
-var listing =  new javajs.util.SB ();\r
-var n = 0;\r
-var oneFile = (asByteArray && fileName != null);\r
-var pt = (oneFile ? fileName.indexOf ("|") : -1);\r
-var file0 = (pt >= 0 ? fileName : null);\r
-if (pt >= 0) fileName = fileName.substring (0, pt);\r
-try {\r
-while ((ze = zis.getNextEntry ()) != null) {\r
-var name = ze.getName ();\r
-if (fileName != null) {\r
-if (oneFile) {\r
-if (!name.equalsIgnoreCase (fileName)) continue;\r
-} else {\r
-listing.append (name).appendC ('\n');\r
-}}var nBytes = ze.getSize ();\r
-var bytes = javajs.util.Rdr.getLimitedStreamBytes (zis, nBytes);\r
-if (file0 != null) {\r
-this.readFileAsMap (javajs.util.Rdr.getBIS (bytes), cache, file0);\r
-return null;\r
-}n += bytes.length;\r
-var o = (asByteArray ?  new javajs.util.BArray (bytes) : bytes);\r
-cache.put ((oneFile ? "_DATA_" : (fileName == null ? "" : fileName + "|") + name), o);\r
-if (oneFile) break;\r
-}\r
-zis.close ();\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-try {\r
-zis.close ();\r
-} catch (e1) {\r
-if (Clazz.exceptionOf (e1, java.io.IOException)) {\r
-} else {\r
-throw e1;\r
-}\r
-}\r
-return null;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (n == 0 || fileName == null) return null;\r
-System.out.println ("ZipTools cached " + n + " bytes from " + fileName);\r
-return listing.toString ();\r
-}, "java.io.BufferedInputStream,~S,java.util.Map,~B");\r
-c$.getPngImageBytes = Clazz.defineMethod (c$, "getPngImageBytes", \r
-($fz = function (bis) {\r
-try {\r
-if (javajs.util.Rdr.isPngZipStream (bis)) {\r
-var pt_count =  Clazz.newIntArray (2, 0);\r
-javajs.util.Rdr.getPngZipPointAndCount (bis, pt_count);\r
-if (pt_count[1] != 0) return javajs.util.ZipTools.deActivatePngZipB (javajs.util.Rdr.getLimitedStreamBytes (bis, pt_count[0]));\r
-}return javajs.util.Rdr.getLimitedStreamBytes (bis, -1);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, java.io.IOException)) {\r
-return null;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, $fz.isPrivate = true, $fz), "java.io.BufferedInputStream");\r
-c$.deActivatePngZipB = Clazz.defineMethod (c$, "deActivatePngZipB", \r
-($fz = function (bytes) {\r
-if (javajs.util.Rdr.isPngZipB (bytes)) bytes[51] = 32;\r
-return bytes;\r
-}, $fz.isPrivate = true, $fz), "~A");\r
-});\r
+Clazz.declarePackage ("javajs.util");
+Clazz.load (["javajs.api.GenericZipTools"], "javajs.util.ZipTools", ["java.io.BufferedInputStream", "$.IOException", "java.lang.Boolean", "java.util.zip.CRC32", "$.GZIPInputStream", "$.ZipEntry", "$.ZipInputStream", "javajs.api.GenericZipInputStream", "$.ZInputStream", "javajs.util.BArray", "$.Lst", "$.PT", "$.Rdr", "$.SB"], function () {
+c$ = Clazz.declareType (javajs.util, "ZipTools", null, javajs.api.GenericZipTools);
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.overrideMethod (c$, "newZipInputStream", 
+function (is) {
+return javajs.util.ZipTools.newZIS (is);
+}, "java.io.InputStream");
+c$.newZIS = Clazz.defineMethod (c$, "newZIS", 
+($fz = function (is) {
+return (Clazz.instanceOf (is, javajs.api.ZInputStream) ? is : Clazz.instanceOf (is, java.io.BufferedInputStream) ?  new javajs.api.GenericZipInputStream (is) :  new javajs.api.GenericZipInputStream ( new java.io.BufferedInputStream (is)));
+}, $fz.isPrivate = true, $fz), "java.io.InputStream");
+Clazz.overrideMethod (c$, "getAllZipData", 
+function (is, subfileList, name0, binaryFileList, fileData) {
+var zis = javajs.util.ZipTools.newZIS (is);
+var ze;
+var listing =  new javajs.util.SB ();
+binaryFileList = "|" + binaryFileList + "|";
+var prefix = javajs.util.PT.join (subfileList, '/', 1);
+var prefixd = null;
+if (prefix != null) {
+prefixd = prefix.substring (0, prefix.indexOf ("/") + 1);
+if (prefixd.length == 0) prefixd = null;
+}try {
+while ((ze = zis.getNextEntry ()) != null) {
+var name = ze.getName ();
+if (prefix != null && prefixd != null && !(name.equals (prefix) || name.startsWith (prefixd))) continue;
+listing.append (name).appendC ('\n');
+var sname = "|" + name.substring (name.lastIndexOf ("/") + 1) + "|";
+var asBinaryString = (binaryFileList.indexOf (sname) >= 0);
+var bytes = javajs.util.Rdr.getLimitedStreamBytes (zis, ze.getSize ());
+var str;
+if (asBinaryString) {
+str = this.getBinaryStringForBytes (bytes);
+name += ":asBinaryString";
+} else {
+str = javajs.util.Rdr.fixUTF (bytes);
+}str = "BEGIN Directory Entry " + name + "\n" + str + "\nEND Directory Entry " + name + "\n";
+fileData.put (name0 + "|" + name, str);
+}
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+fileData.put ("#Directory_Listing", listing.toString ());
+}, "java.io.InputStream,~A,~S,~S,java.util.Map");
+Clazz.defineMethod (c$, "getBinaryStringForBytes", 
+($fz = function (bytes) {
+var ret =  new javajs.util.SB ();
+for (var i = 0; i < bytes.length; i++) ret.append (Integer.toHexString (bytes[i] & 0xFF)).appendC (' ');
+
+return ret.toString ();
+}, $fz.isPrivate = true, $fz), "~A");
+Clazz.overrideMethod (c$, "getZipFileDirectory", 
+function (bis, list, listPtr, asBufferedInputStream) {
+var ret;
+if (list == null || listPtr >= list.length) return this.getZipDirectoryAsStringAndClose (bis);
+bis = javajs.util.Rdr.getPngZipStream (bis, true);
+var fileName = list[listPtr];
+var zis =  new java.util.zip.ZipInputStream (bis);
+var ze;
+try {
+var isAll = (fileName.equals ("."));
+if (isAll || fileName.lastIndexOf ("/") == fileName.length - 1) {
+ret =  new javajs.util.SB ();
+while ((ze = zis.getNextEntry ()) != null) {
+var name = ze.getName ();
+if (isAll || name.startsWith (fileName)) ret.append (name).appendC ('\n');
+}
+var str = ret.toString ();
+return (asBufferedInputStream ? javajs.util.Rdr.getBIS (str.getBytes ()) : str);
+}var pt = fileName.indexOf (":asBinaryString");
+var asBinaryString = (pt > 0);
+if (asBinaryString) fileName = fileName.substring (0, pt);
+fileName = fileName.$replace ('\\', '/');
+while ((ze = zis.getNextEntry ()) != null && !fileName.equals (ze.getName ())) {
+}
+var bytes = (ze == null ? null : javajs.util.Rdr.getLimitedStreamBytes (zis, ze.getSize ()));
+ze = null;
+zis.close ();
+if (bytes == null) return "";
+if (javajs.util.Rdr.isZipB (bytes) || javajs.util.Rdr.isPngZipB (bytes)) return this.getZipFileDirectory (javajs.util.Rdr.getBIS (bytes), list, ++listPtr, asBufferedInputStream);
+if (asBufferedInputStream) return javajs.util.Rdr.getBIS (bytes);
+if (asBinaryString) {
+ret =  new javajs.util.SB ();
+for (var i = 0; i < bytes.length; i++) ret.append (Integer.toHexString (bytes[i] & 0xFF)).appendC (' ');
+
+return ret.toString ();
+}if (javajs.util.Rdr.isGzipB (bytes)) bytes = javajs.util.Rdr.getLimitedStreamBytes (this.getUnGzippedInputStream (bytes), -1);
+return javajs.util.Rdr.fixUTF (bytes);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+return "";
+} else {
+throw e;
+}
+}
+}, "java.io.BufferedInputStream,~A,~N,~B");
+Clazz.overrideMethod (c$, "getZipFileContentsAsBytes", 
+function (bis, list, listPtr) {
+var ret =  Clazz.newByteArray (0, 0);
+var fileName = list[listPtr];
+if (fileName.lastIndexOf ("/") == fileName.length - 1) return ret;
+try {
+bis = javajs.util.Rdr.getPngZipStream (bis, true);
+var zis =  new java.util.zip.ZipInputStream (bis);
+var ze;
+while ((ze = zis.getNextEntry ()) != null) {
+if (!fileName.equals (ze.getName ())) continue;
+var bytes = javajs.util.Rdr.getLimitedStreamBytes (zis, ze.getSize ());
+return ((javajs.util.Rdr.isZipB (bytes) || javajs.util.Rdr.isPngZipB (bytes)) && ++listPtr < list.length ? this.getZipFileContentsAsBytes (javajs.util.Rdr.getBIS (bytes), list, listPtr) : bytes);
+}
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+return ret;
+}, "java.io.BufferedInputStream,~A,~N");
+Clazz.overrideMethod (c$, "getZipDirectoryAsStringAndClose", 
+function (bis) {
+var sb =  new javajs.util.SB ();
+var s =  new Array (0);
+try {
+s = this.getZipDirectoryOrErrorAndClose (bis, null);
+bis.close ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println (e.toString ());
+} else {
+throw e;
+}
+}
+for (var i = 0; i < s.length; i++) sb.append (s[i]).appendC ('\n');
+
+return sb.toString ();
+}, "java.io.BufferedInputStream");
+Clazz.overrideMethod (c$, "getZipDirectoryAndClose", 
+function (bis, manifestID) {
+var s =  new Array (0);
+try {
+s = this.getZipDirectoryOrErrorAndClose (bis, manifestID);
+bis.close ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.out.println (e.toString ());
+} else {
+throw e;
+}
+}
+return s;
+}, "java.io.BufferedInputStream,~S");
+Clazz.defineMethod (c$, "getZipDirectoryOrErrorAndClose", 
+($fz = function (bis, manifestID) {
+bis = javajs.util.Rdr.getPngZipStream (bis, true);
+var v =  new javajs.util.Lst ();
+var zis =  new java.util.zip.ZipInputStream (bis);
+var ze;
+var manifest = null;
+while ((ze = zis.getNextEntry ()) != null) {
+var fileName = ze.getName ();
+if (manifestID != null && fileName.startsWith (manifestID)) manifest = javajs.util.ZipTools.getStreamAsString (zis);
+ else if (!fileName.startsWith ("__MACOS")) v.addLast (fileName);
+}
+zis.close ();
+if (manifestID != null) v.add (0, manifest == null ? "" : manifest + "\n############\n");
+return v.toArray ( new Array (v.size ()));
+}, $fz.isPrivate = true, $fz), "java.io.BufferedInputStream,~S");
+c$.getStreamAsString = Clazz.defineMethod (c$, "getStreamAsString", 
+function (is) {
+return javajs.util.Rdr.fixUTF (javajs.util.Rdr.getLimitedStreamBytes (is, -1));
+}, "java.io.InputStream");
+Clazz.overrideMethod (c$, "newGZIPInputStream", 
+function (is) {
+return  new java.io.BufferedInputStream ( new java.util.zip.GZIPInputStream (is, 512));
+}, "java.io.InputStream");
+Clazz.overrideMethod (c$, "getUnGzippedInputStream", 
+function (bytes) {
+try {
+return javajs.util.Rdr.getUnzippedInputStream (this, javajs.util.Rdr.getBIS (bytes));
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+return null;
+} else {
+throw e;
+}
+}
+}, "~A");
+Clazz.overrideMethod (c$, "addZipEntry", 
+function (zos, fileName) {
+(zos).putNextEntry ( new java.util.zip.ZipEntry (fileName));
+}, "~O,~S");
+Clazz.overrideMethod (c$, "closeZipEntry", 
+function (zos) {
+(zos).closeEntry ();
+}, "~O");
+Clazz.overrideMethod (c$, "getZipOutputStream", 
+function (bos) {
+{
+return javajs.api.Interface.getInterface(
+"java.util.zip.ZipOutputStream").setZOS(bos);
+}}, "~O");
+Clazz.overrideMethod (c$, "getCrcValue", 
+function (bytes) {
+var crc =  new java.util.zip.CRC32 ();
+crc.update (bytes, 0, bytes.length);
+return crc.getValue ();
+}, "~A");
+Clazz.overrideMethod (c$, "readFileAsMap", 
+function (bis, bdata, name) {
+var pt = (name == null ? -1 : name.indexOf ("|"));
+name = (pt >= 0 ? name.substring (pt + 1) : null);
+try {
+if (javajs.util.Rdr.isPngZipStream (bis)) {
+var isImage = "_IMAGE_".equals (name);
+if (name == null || isImage) bdata.put ((isImage ? "_DATA_" : "_IMAGE_"),  new javajs.util.BArray (javajs.util.ZipTools.getPngImageBytes (bis)));
+if (!isImage) this.cacheZipContents (bis, name, bdata, true);
+} else if (javajs.util.Rdr.isZipS (bis)) {
+this.cacheZipContents (bis, name, bdata, true);
+} else if (name == null) {
+bdata.put ("_DATA_",  new javajs.util.BArray (javajs.util.Rdr.getLimitedStreamBytes (bis, -1)));
+} else {
+throw  new java.io.IOException ("ZIP file " + name + " not found");
+}bdata.put ("$_BINARY_$", Boolean.TRUE);
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+bdata.clear ();
+bdata.put ("_ERROR_", e.getMessage ());
+} else {
+throw e;
+}
+}
+}, "java.io.BufferedInputStream,java.util.Map,~S");
+Clazz.overrideMethod (c$, "cacheZipContents", 
+function (bis, fileName, cache, asByteArray) {
+var zis = javajs.util.ZipTools.newZIS (bis);
+var ze;
+var listing =  new javajs.util.SB ();
+var n = 0;
+var oneFile = (asByteArray && fileName != null);
+var pt = (oneFile ? fileName.indexOf ("|") : -1);
+var file0 = (pt >= 0 ? fileName : null);
+if (pt >= 0) fileName = fileName.substring (0, pt);
+try {
+while ((ze = zis.getNextEntry ()) != null) {
+var name = ze.getName ();
+if (fileName != null) {
+if (oneFile) {
+if (!name.equalsIgnoreCase (fileName)) continue;
+} else {
+listing.append (name).appendC ('\n');
+}}var nBytes = ze.getSize ();
+var bytes = javajs.util.Rdr.getLimitedStreamBytes (zis, nBytes);
+if (file0 != null) {
+this.readFileAsMap (javajs.util.Rdr.getBIS (bytes), cache, file0);
+return null;
+}n += bytes.length;
+var o = (asByteArray ?  new javajs.util.BArray (bytes) : bytes);
+cache.put ((oneFile ? "_DATA_" : (fileName == null ? "" : fileName + "|") + name), o);
+if (oneFile) break;
+}
+zis.close ();
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+try {
+zis.close ();
+} catch (e1) {
+if (Clazz.exceptionOf (e1, java.io.IOException)) {
+} else {
+throw e1;
+}
+}
+return null;
+} else {
+throw e;
+}
+}
+if (n == 0 || fileName == null) return null;
+System.out.println ("ZipTools cached " + n + " bytes from " + fileName);
+return listing.toString ();
+}, "java.io.BufferedInputStream,~S,java.util.Map,~B");
+c$.getPngImageBytes = Clazz.defineMethod (c$, "getPngImageBytes", 
+($fz = function (bis) {
+try {
+if (javajs.util.Rdr.isPngZipStream (bis)) {
+var pt_count =  Clazz.newIntArray (2, 0);
+javajs.util.Rdr.getPngZipPointAndCount (bis, pt_count);
+if (pt_count[1] != 0) return javajs.util.ZipTools.deActivatePngZipB (javajs.util.Rdr.getLimitedStreamBytes (bis, pt_count[0]));
+}return javajs.util.Rdr.getLimitedStreamBytes (bis, -1);
+} catch (e) {
+if (Clazz.exceptionOf (e, java.io.IOException)) {
+return null;
+} else {
+throw e;
+}
+}
+}, $fz.isPrivate = true, $fz), "java.io.BufferedInputStream");
+c$.deActivatePngZipB = Clazz.defineMethod (c$, "deActivatePngZipB", 
+($fz = function (bytes) {
+if (javajs.util.Rdr.isPngZipB (bytes)) bytes[51] = 32;
+return bytes;
+}, $fz.isPrivate = true, $fz), "~A");
+});
diff --git a/bin/lang/Messages.properties b/bin/lang/Messages.properties
deleted file mode 100644 (file)
index b2bf58b..0000000
+++ /dev/null
@@ -1,1247 +0,0 @@
-action.refresh_services = Refresh Services
-action.reset_services = Reset Services
-action.merge_results = Merge Results
-action.load_scheme = Load scheme
-action.save_scheme = Save scheme
-action.save_image = Save Image
-action.paste = Paste
-action.show_html_source = Show HTML Source
-action.print = Print
-action.web_service = Web Service
-action.cancel_job = Cancel Job
-action.start_job = Start Job
-action.revert = Revert
-action.move_down = Move Down
-action.move_up = Move Up
-action.remove_return_datatype = Remove return datatype
-action.add_return_datatype = Add return datatype
-action.remove_input_parameter = Remove selected input parameter
-action.add_input_parameter = Add input parameter
-action.edit = Edit
-action.new = New
-action.open_file = Open file
-action.show_unconserved = Show Unconserved
-action.open_new_alignment = Open new alignment
-action.raise_associated_windows = Raise Associated Windows
-action.minimize_associated_windows = Minimize Associated Windows
-action.close_all = Close all
-action.load_project = Load Project
-action.save_project = Save Project
-action.quit = Quit
-action.expand_views = Expand Views
-action.gather_views = Gather Views
-action.page_setup = Page Setup
-action.reload = Reload
-action.load = Load
-action.open = Open
-action.cancel = Cancel
-action.create = Create
-action.update = Update
-action.delete = Delete
-action.snapshot = Snapshot
-action.clear = Clear
-action.accept = Accept
-action.select_ddbb = --- Select Database ---
-action.undo = Undo
-action.redo = Redo
-action.reset = Reset
-action.remove_left = Remove left
-action.remove_right = Remove right
-action.remove_empty_columns = Remove Empty Columns
-action.remove_all_gaps = Remove All Gaps
-action.left_justify_alignment = Left Justify Alignment
-action.right_justify_alignment = Right Justify Alignment
-action.boxes = Boxes
-action.text = Text
-action.by_pairwise_id = by Pairwise Identity
-action.by_id = by Id
-action.by_length = by Length
-action.by_group = by Group
-action.unmark_as_reference = Unmark as Reference 
-action.set_as_reference = Set as Reference 
-action.remove = Remove
-action.remove_redundancy = Remove Redundancy...
-action.pairwise_alignment = Pairwise Alignments...
-action.by_rna_helixes = by RNA Helices
-action.user_defined = User Defined...
-action.by_conservation = By Conservation
-action.wrap = Wrap
-action.show_gaps = Show Gaps
-action.show_hidden_markers = Show Hidden Markers
-action.find = Find
-action.undefine_groups = Undefine Groups
-action.create_groups = Create Groups
-action.make_groups_selection = Make Groups For Selection
-action.copy = Copy
-action.cut = Cut
-action.font = Font...
-action.scale_above = Scale Above
-action.scale_left = Scale Left
-action.scale_right = Scale Right
-action.by_tree_order = By Tree Order
-action.sort = Sort
-action.calculate_tree = Calculate Tree
-action.help = Help
-action.by_annotation = by Annotation...
-action.invert_sequence_selection = Invert Sequence Selection
-action.invert_column_selection = Invert Column Selection
-action.show = Show
-action.hide = Hide
-action.ok = OK
-action.set_defaults = Defaults
-action.create_group = Create Group
-action.remove_group = Remove Group
-action.edit_group = Edit Group
-action.border_colour = Border colour
-action.edit_new_group = Edit New Group
-action.hide_sequences = Hide Sequences
-action.sequences = Sequences
-action.ids = IDS
-action.ids_sequences = IDS and sequences
-action.reveal_all = Reveal All
-action.reveal_sequences = Reveal Sequences
-action.find_all = Find all
-action.find_next = Find next
-action.file = File
-action.view = View
-action.annotations = Annotations
-action.change_params = Change Parameters
-action.apply = Apply
-action.apply_threshold_all_groups = Apply threshold to all groups
-action.apply_all_groups = Apply to all Groups
-action.by_chain = By Chain
-action.by_sequence = By Sequence
-action.paste_annotations = Paste Annotations
-action.format = Format
-action.select = Select
-action.new_view = New View
-action.close = Close
-action.add = Add
-action.save_as_default = Save as default
-action.save_as = Save as
-action.save = Save
-action.cancel_fetch = Cancel Fetch
-action.save_omit_hidden_columns = Save / Omit Hidden Regions
-action.change_font = Change Font
-action.change_font_tree_panel = Change Font (Tree Panel)
-action.colour = Colour
-action.calculate = Calculate
-action.select_all = Select all
-action.deselect_all = Deselect all
-action.invert_selection = Invert selection
-action.using_jmol = Using Jmol
-action.link = Link
-action.group_link = Group Link
-action.show_chain = Show Chain
-action.show_group = Show Group
-action.fetch_db_references = Fetch DB References
-action.view_flanking_regions = Show flanking regions
-label.view_flanking_regions = Show sequence data either side of the subsequences involved in this alignment
-label.str = Str:
-label.seq = Seq:
-label.structures_manager = Structures Manager
-label.nickname = Nickname:
-label.url = URL:
-label.input_file_url = Enter URL or Input File
-label.select_feature = Select feature:
-label.name = Name
-label.name_param = Name: {0}
-label.group = Group
-label.group_name = Group Name
-label.group_description = Group Description
-label.edit_group_name_description = Edit Group Name/Description
-label.colour = Colour:
-label.description = Description:
-label.start = Start:
-label.end = End:
-label.current_parameter_set_name = Current parameter set name:
-label.service_action = Service Action:
-label.post_url = POST URL:
-label.url_suffix = URL Suffix
-label.sequence_source = Sequence Source
-label.per_seq = per Sequence
-label.result_vertically_separable = Results are vertically separable
-label.amend = Amend
-label.undo_command = Undo {0}
-label.redo_command = Redo {0}
-label.principal_component_analysis = Principal Component Analysis
-label.average_distance_identity = Average Distance Using % Identity
-label.neighbour_joining_identity = Neighbour Joining Using % Identity
-label.treecalc_title = {0} Using {1}
-label.tree_calc_av = Average Distance
-label.tree_calc_nj = Neighbour Joining
-label.select_score_model = Select score model
-label.score_model_pid = % Identity
-label.score_model_blosum62 = BLOSUM62
-label.score_model_pam250 = PAM 250
-label.score_model_conservation = Physicochemical property conservation
-label.score_model_enhconservation = Physicochemical property conservation
-label.status_bar = Status bar
-label.out_to_textbox = Output to Textbox
-label.clustalx = Clustalx
-label.clustal = Clustal
-label.zappo = Zappo
-label.taylor = Taylor
-label.blc = BLC
-label.fasta = Fasta
-label.msf = MSF
-label.pfam = PFAM
-label.pileup = Pileup
-label.pir = PIR
-label.hydrophobicity = Hydrophobicity
-label.helix_propensity = Helix Propensity
-label.strand_propensity = Strand Propensity
-label.turn_propensity = Turn Propensity
-label.buried_index = Buried Index
-label.purine_pyrimidine = Purine/Pyrimidine
-label.percentage_identity = Percentage Identity
-label.blosum62 = BLOSUM62
-label.blosum62_score = BLOSUM62 Score
-label.tcoffee_scores = T-Coffee Scores
-label.average_distance_bloslum62 = Average Distance Using BLOSUM62
-label.neighbour_blosum62 = Neighbour Joining Using BLOSUM62
-label.show_annotations = Show annotations
-label.hide_annotations = Hide annotations
-label.show_all_seq_annotations = Show sequence related
-label.hide_all_seq_annotations = Hide sequence related
-label.show_all_al_annotations = Show alignment related
-label.hide_all_al_annotations = Hide alignment related
-label.hide_all = Hide all
-label.add_reference_annotations = Add reference annotations
-label.find_tip = Search alignment, selection or sequence ids for a subsequence (ignoring gaps).<br>Accepts regular expressions - search Help for 'regex' for details.
-label.colour_text = Colour Text
-label.show_non_conversed = Show nonconserved
-label.overview_window = Overview Window
-label.none = None
-label.above_identity_threshold = Above Identity Threshold
-label.show_sequence_features = Show Sequence Features
-label.nucleotide = Nucleotide
-label.protein = Protein
-label.to_new_alignment = To New Alignment
-label.to_this_alignment = Add To This Alignment
-label.apply_colour_to_all_groups = Apply Colour To All Groups
-label.modify_identity_thereshold = Modify Identity Threshold...
-label.modify_conservation_thereshold = Modify Conservation Threshold...
-label.input_from_textbox = Input from textbox
-label.centre_column_labels = Centre column labels
-label.automatic_scrolling = Automatic Scrolling
-label.documentation = Documentation
-label.about = About...
-label.show_sequence_limits = Show Sequence Limits
-label.feature_settings = Feature Settings...
-label.all_columns = All Columns
-label.all_sequences = All Sequences
-label.selected_columns = Selected Columns 
-label.selected_sequences = Selected Sequences
-label.except_selected_sequences = All except selected sequences
-label.all_but_selected_region = All but Selected Region (Shift+Ctrl+H)
-label.selected_region = Selected Region
-label.all_sequences_columns = All Sequences and Columns
-label.hide_insertions = Hide columns gapped for selection
-label.hide_selected_annotations = Hide selected annotations
-label.show_selected_annotations = Show selected annotations
-label.group_consensus = Group Consensus
-label.group_conservation = Group Conservation
-label.show_consensus_histogram = Show Consensus Histogram
-label.show_consensus_logo = Show Consensus Logo
-label.norm_consensus_logo = Normalise Consensus Logo
-label.apply_all_groups = Apply to all groups
-label.autocalculated_annotation = Autocalculated Annotation
-label.show_first = Show first
-label.show_last = Show last
-label.struct_from_pdb = Process secondary structure from PDB
-label.use_rnaview = Use RNAView for secondary structure
-label.autoadd_secstr = Add secondary structure annotation to alignment
-label.autoadd_temp = Add Temperature Factor annotation to alignment
-label.structure_viewer = Default structure viewer
-label.chimera_path = Path to Chimera program
-label.chimera_path_tip = Jalview will first try any path entered here, else standard installation locations.<br>Double-click to browse for file.
-label.invalid_chimera_path = Chimera path not found or not executable
-label.chimera_missing = Chimera structure viewer not found.<br/>Please enter the path to Chimera (if installed),<br/>or download and install UCSF Chimera.
-label.chimera_failed = Error opening Chimera - is it installed?\nCheck path in Preferences, Structure
-label.min_colour = Minimum Colour
-label.max_colour = Maximum Colour
-label.use_original_colours = Use Original Colours
-label.threshold_minmax = Threshold is min/max
-label.represent_group_with = Represent Group with {0}
-label.selection = Selection
-label.group_colour = Group Colour
-label.sequence = Sequence
-label.view_pdb_structure = View PDB Structure
-label.min = Min:
-label.max = Max:
-label.colour_by_label = Colour by label
-label.new_feature = New Feature
-label.match_case = Match Case
-label.view_alignment_editor = View in alignment editor
-label.labels = Labels
-label.output_values = Output Values...
-label.output_points = Output points...
-label.output_transformed_points = Output transformed points
-label.input_data = Input Data...
-label.nucleotide_matrix = Nucleotide matrix
-label.protein_matrix = Protein matrix
-label.show_bootstrap_values = Show Bootstrap Values
-label.show_distances = Show distances
-label.mark_unassociated_leaves = Mark Unassociated Leaves
-label.fit_to_window = Fit To Window
-label.newick_format = Newick Format
-label.select_newick_like_tree_file = Select a newick-like tree file
-label.colours = Colours
-label.view_mapping = View Mapping
-label.wireframe = Wireframe
-label.depthcue = Depthcue
-label.z_buffering = Z Buffering
-label.charge_cysteine = Charge & Cysteine
-label.all_chains_visible = All Chains Visible
-label.successfully_added_features_alignment = Successfully added features to alignment
-label.keyboard_editing_mode = Keyboard editing mode is {0}
-label.paste_features_annotations_Tcoffee_here = Paste your features / annotations / T-coffee score file here.
-label.removed_columns = Removed {0} columns.
-label.removed_empty_columns = Removed {0} empty columns.
-label.paste_newick_tree_file = Paste your Newick tree file here.
-label.order_by_params = Order by {0}
-label.html_content = <html>{0}</html>
-label.paste_pdb_file= Paste your PDB file here.
-label.paste_pdb_file_for_sequence = Paste PDB file for sequence {0}
-label.could_not_parse_newick_file  = Could not parse Newick file\!\n {0}
-label.successfully_pasted_tcoffee_scores_to_alignment= Successfully pasted T-Coffee scores to alignment.
-label.failed_add_tcoffee_scores = Failed to add T-Coffee scores: 
-label.successfully_pasted_annotation_to_alignment= Successfully pasted annotation to alignment.
-label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file = Couldn't parse pasted text as a valid annotation, feature, GFF, or T-Coffee score file
-label.successfully_pasted_alignment_file = Successfully pasted alignment file
-label.paste_your_alignment_file = Paste your alignment file here
-label.paste_your = Paste your
-label.finished_searching = Finished searching
-label.search_results= Search results {0} : {1}
-label.found_match_for = Found match for {0}
-label.font = Font:
-label.size = Size:
-label.style = Style:
-label.enter_redundancy_threshold = Enter the redundancy threshold
-label.calculating = Calculating....
-label.modify_conservation_visibility = Modify conservation visibility
-label.colour_residues_above_occurence = Colour residues above % occurence
-label.set_this_label_text = set this label text
-label.sequences_from = Sequences from {0}
-label.successfully_loaded_file  = Successfully loaded file {0}
-label.successfully_saved_to_file_in_format = Successfully saved to file: {0} in {1} format.
-label.copied_sequences_to_clipboard = Copied {0} sequences to clipboard.
-label.check_file_matches_sequence_ids_alignment = Check that the file matches sequence IDs in the alignment.
-label.problem_reading_tcoffee_score_file = Problem reading T-COFFEE score file
-label.source_to_target = {0} ... {1}
-label.per_sequence_only= Per-sequence only
-label.to_file = to File
-label.to_textbox = to Textbox
-label.jalview = Jalview
-label.csv_spreadsheet = CSV (Spreadsheet)
-label.status = Status
-label.channels = Channels
-label.channel_title_item_count = {0} ({1})
-label.blog_item_published_on_date = {0} {1} 
-label.select_das_service_from_table = Select a DAS service from the table to read a full description here.</font></html>
-label.session_update = Session Update
-label.new_vamsas_session = New Vamsas Session
-label.load_vamsas_session = Load Vamsas Session
-label.save_vamsas_session = Save Vamsas Session
-label.select_vamsas_session_opened_as_new_vamsas_session= Select a vamsas session to be opened as a new vamsas session.
-label.open_saved_vamsas_session = Open a saved VAMSAS session
-label.groovy_console = Groovy Console...
-label.lineart = Lineart
-label.dont_ask_me_again = Don't ask me again
-label.select_eps_character_rendering_style = Select EPS character rendering style
-label.invert_selection = Invert Selection
-label.optimise_order = Optimise Order
-label.seq_sort_by_score = Sequence sort by Score
-label.load_colours = Load Colours
-label.save_colours = Save Colours
-label.fetch_das_features = Fetch DAS Features
-label.selected_database_to_fetch_from = Selected {0} database {1} to fetch from {2} 
-label.database_param = Database: {0}
-label.example = Example
-label.example_param = Example: {0}
-label.select_file_format_before_saving = You must select a file format before saving!
-label.file_format_not_specified = File format not specified
-label.alignment_contains_hidden_columns = The Alignment contains hidden regions (hidden sequences/columns).\nDo you want to save only the visible alignment?
-label.couldnt_save_file = Couldn't save file: {0}
-label.error_saving_file = Error Saving File
-label.remove_from_default_list = Remove from default list?
-label.remove_user_defined_colour = Remove user defined colour
-label.you_must_select_least_two_sequences = You must select at least 2 sequences.
-label.invalid_selection = Invalid Selection
-label.principal_component_analysis_must_take_least_four_input_sequences = Principal component analysis must take\nat least 4 input sequences.
-label.sequence_selection_insufficient = Sequence selection insufficient
-label.you_need_more_two_sequences_selected_build_tree = You need to have more than two sequences selected to build a tree!
-label.not_enough_sequences = Not enough sequences
-label.selected_region_to_tree_may_only_contain_residues_or_gaps =  The selected region to create a tree may\nonly contain residues or gaps.\nTry using the Pad function in the edit menu,\nor one of the multiple sequence alignment web services.
-label.sequences_selection_not_aligned = Sequences in selection are not aligned
-label.sequences_must_be_aligned_before_creating_tree = The sequences must be aligned before creating a tree.\nTry using the Pad function in the edit menu,\n or one of the multiple sequence alignment web services.
-label.sequences_not_aligned = Sequences not aligned
-label.problem_reading_tree_file =  Problem reading tree file
-label.possible_problem_with_tree_file = Possible problem with tree file
-label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation = Please select at least three bases in at least one sequence in order to perform a cDNA translation.
-label.translation_failed = Translation Failed
-label.error_when_translating_sequences_submit_bug_report = Unfortunately, something went wrong when translating your sequences.\nPlease take a look in the Jalview java console\nand submit a bug report including the stacktrace.
-label.implementation_error  = Implementation error:
-label.automatically_associate_pdb_files_with_sequences_same_name = Do you want to automatically associate the {0} PDB files with sequences in the alignment that have the same name?
-label.automatically_associate_pdb_files_by_name = Automatically Associate PDB files by name
-label.ignore_unmatched_dropped_files_info = <html>Do you want to <em>ignore</em> the {0} files whose names did not match any sequence IDs ?</html>
-label.ignore_unmatched_dropped_files = Ignore unmatched dropped files?
-label.view_name_original = Original
-label.enter_view_name = Enter View Name
-label.enter_label = Enter label
-label.enter_label_for_the_structure = Enter a label for the structure?
-label.pdb_entry_is_already_displayed = {0} is already displayed.\nDo you want to re-use this viewer ?
-label.map_sequences_to_visible_window = Map Sequences to Visible Window: {0}
-label.add_pdbentry_to_view = Do you want to add {0} to the view called\n{1}\n
-label.align_to_existing_structure_view = Align to existing structure view
-label.pdb_entries_couldnt_be_retrieved = The following pdb entries could not be retrieved from the PDB\:\n{0}\nPlease retry, or try downloading them manually.
-label.couldnt_load_file = Couldn't load file
-label.couldnt_find_pdb_id_in_file = Couldn't find a PDB id in the file supplied. Please enter an Id to identify this structure.
-label.no_pdb_id_in_file = No PDB Id in File
-label.couldnt_read_pasted_text = Couldn't read the pasted text {0}
-label.error_parsing_text = Error parsing text
-label.enter_local_das_source = Enter Nickname & URL of Local DAS Source
-label.you_can_only_edit_or_remove_local_das_sources = You can only edit or remove local DAS Sources!
-label.public_das_source = Public DAS source - not editable
-label.input_alignment_from_url = Input Alignment From URL
-label.input_alignment = Input Alignment
-label.couldnt_import_as_vamsas_session = Couldn't import {0} as a new vamsas session.
-label.vamsas_document_import_failed = Vamsas Document Import Failed
-label.couldnt_locate = Couldn't locate {0}
-label.url_not_found = URL not found
-label.no_link_selected = No link selected
-label.new_sequence_url_link = New sequence URL link
-label.cannot_edit_annotations_in_wrapped_view = Cannot edit annotations in wrapped view
-label.wrapped_view_no_edit = Wrapped view - no edit
-label.error_retrieving_data = Error Retrieving Data
-label.user_colour_scheme_must_have_name = User colour scheme must have a name
-label.no_name_colour_scheme = No name for colour scheme
-label.invalid_url = Invalid URL !
-label.error_loading_file = Error loading file
-label.problems_opening_file = Encountered problems opening {0}!!
-label.file_open_error = File open error
-label.no_das_sources_selected_warn = No das sources were selected.\nPlease select some sources and\ntry again.
-label.no_das_sources_selected_title = No DAS Sources Selected
-label.colour_scheme_exists_overwrite = Colour scheme {0} exists.\nContinue saving colour scheme as {1}?"
-label.duplicate_scheme_name = Duplicate scheme name
-label.jalview_new_questionnaire = There is a new Questionnaire available. Would you like to complete it now ?\n
-label.jalview_user_survey = Jalview User Survey
-label.alignment_properties = Alignment Properties: {0}
-label.alignment_props = Alignment Properties
-label.input_cut_paste = Cut & Paste Input
-label.input_cut_paste_params = Cut & Paste Input - {0}
-label.alignment_output_command = Alignment output - {0}
-label.annotations = Annotations
-label.structure_options = Structure Options
-label.features = Features
-label.overview_params = Overview {0}
-label.paste_newick_file = Paste Newick file
-label.load_tree_from_file = From File - 
-label.colour_by_annotation = Colour by Annotation
-label.selection_output_command = Selection output - {0}
-label.annotation_for_displayid = <p><h2>Annotation for {0} </h2></p><p>
-label.pdb_sequence_mapping = PDB - Sequence Mapping
-label.pca_details = PCA details
-label.redundancy_threshold_selection = Redundancy threshold selection
-label.user_defined_colours = User defined colours
-label.jalviewLite_release = JalviewLite - Release {0}
-label.jaview_build_date = Build date: {0}
-label.jalview_authors_1 = Authors: Jim Procter, Andrew Waterhouse, Mungo Carstairs, Tochukwu Ofoegbu, Lauren Lui, Jan Engelhardt,
-label.jalview_authors_2 = Natasha Sherstnev, Daniel Barton, Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton.
-label.jalview_dev_managers = Development managed by The Barton Group, University of Dundee, Scotland, UK.
-label.jalview_distribution_lists = For help, see the FAQ at www.jalview.org and/or join the jalview-discuss@jalview.org mailing list
-label.jalview_please_cite = If  you use Jalview, please cite:
-label.jalview_cite_1_authors = Waterhouse, A.M., Procter, J.B., Martin, D.M.A, Clamp, M. and Barton, G. J. (2009)
-label.jalview_cite_1_title = Jalview Version 2 - a multiple sequence alignment editor and analysis workbench
-label.jalview_cite_1_ref = Bioinformatics doi: 10.1093/bioinformatics/btp033
-label.right_click = Right click
-label.to_add_annotation = to add annotation
-label.alignment_has_no_annotations = Alignment has no annotations
-label.retrieving_pdb_data = Retrieving PDB data...
-label.label = Label
-label.no_features_added_to_this_alignment = No Features added to this alignment!!
-label.features_can_be_added_from_searches_1 = (Features can be added from searches or
-label.features_can_be_added_from_searches_2 = from Jalview / GFF features files)
-label.calculating_pca= Calculating PCA
-label.reveal_columns = Reveal Columns
-label.jalview_cannot_open_file = Jalview can't open file
-label.jalview_applet = Jalview applet
-label.loading_data = Loading data
-label.memory_stats = Total Free Memory: {0} MB; Max Memory: {1} MB; {2} %
-label.calculating_tree = Calculating tree
-label.state_queueing = queuing
-label.state_running = running
-label.state_complete = complete
-label.state_completed = finished
-label.state_job_cancelled = job cancelled!!
-label.state_job_error = job error!
-label.server_error_try_later = Server Error! (try later)
-label.error_loading_pdb_data = Error loading PDB data!!
-label.fetching_pdb_data = Fetching PDB data...
-label.structure_type = Structure type
-label.settings_for_type = Settings for {0}
-label.view_full_application = View in Full Application
-label.load_associated_tree = Load Associated Tree ...
-label.load_features_annotations = Load Features/Annotations ...
-label.export_features = Export Features ...
-label.export_annotations = Export Annotations ...
-label.to_upper_case = To Upper Case
-label.to_lower_case = To Lower Case
-label.toggle_case = Toggle Case
-label.edit_name_description = Edit Name/Description ...
-label.create_sequence_feature = Create Sequence Feature ...
-label.edit_sequence = Edit Sequence
-label.edit_sequences = Edit Sequences
-label.sequence_details = Sequence Details
-label.jmol_help = Jmol Help
-label.chimera_help = Chimera Help
-label.close_viewer = Close Viewer
-label.confirm_close_chimera = This will close Jalview''s connection to {0}.<br>Do you want to close the Chimera window as well?
-label.chimera_help = Chimera Help
-label.all = All
-label.sort_by = Sort alignment by
-label.sort_by_score = Sort by Score
-label.sort_by_density = Sort by Density
-label.sequence_sort_by_density = Sequence sort by Density
-label.sort_ann_by = Sort annotations by
-label.sort_annotations_by_sequence = Sort by sequence
-label.sort_annotations_by_label = Sort by label
-label.reveal = Reveal
-label.hide_columns = Hide Columns
-label.load_jalview_annotations = Load Jalview Annotations or Features File
-label.load_tree_file = Load a tree file
-label.retrieve_parse_sequence_database_records_alignment_or_selected_sequences = Retrieve and parse sequence database records for the alignment or the currently selected sequences
-label.standard_databases = Standard Databases
-label.fetch_embl_uniprot = Fetch from EMBL/EMBLCDS or Uniprot/PDB and any selected DAS sources
-label.reset_min_max_colours_to_defaults = Reset min and max colours to defaults from user preferences.
-label.align_structures_using_linked_alignment_views = Align structures using {0} linked alignment views
-label.connect_to_session = Connect to session {0}
-label.threshold_feature_display_by_score = Threshold the feature display by score.
-label.threshold_feature_no_thereshold = No Threshold
-label.threshold_feature_above_thereshold = Above Threshold
-label.threshold_feature_below_thereshold = Below Threshold
-label.adjust_thereshold = Adjust threshold
-label.toggle_absolute_relative_display_threshold = Toggle between absolute and relative display threshold.
-label.display_features_same_type_different_label_using_different_colour = Display features of the same type with a different label using a different colour. (e.g. domain features)
-label.select_colour_minimum_value = Select Colour for Minimum Value
-label.select_colour_maximum_value = Select Colour for Maximum Value
-label.open_new_jmol_view_with_all_structures_associated_current_selection_superimpose_using_alignment = Open a new structure viewer with all structures associated with the current selection and superimpose them using the alignment.
-label.open_url_param = Open URL {0}
-label.open_url_seqs_param = Open URL ({0}..) ({1} seqs)
-label.load_pdb_file_associate_with_sequence = Load a PDB file and associate it with sequence {0}
-label.reveal_hidden_columns = Reveal Hidden Columns with Right Mouse Button
-label.dark_colour = Dark Colour
-label.light_colour = Light Colour
-label.highlightnode = Left click to select leaves.<br>Double-click to invert leaves.<br>Right click to change colour.
-label.load_colour_scheme = Load colour scheme
-label.copy_format_from = Copy format from
-label.toggle_enabled_views = When enabled, allows many views to be selected.
-label.select_all_views = Select all views
-label.select_many_views = Select many views
-label.edit_notes_parameter_set = Click to edit the notes for this parameter set.
-label.open_local_file = Open local file
-label.enable_automatically_sort_alignment_when_open_new_tree = Enable this to automatically sort<br>the alignment when you open<br> a new tree.
-label.listen_for_selections = Listen for selections
-label.selections_mirror_selections_made_same_sequences_other_views = When selected, selections in this view will mirror<br>selections made on the same sequences in other views.
-label.toggle_sequence_visibility = Shift+H toggles sequence visiblity
-label.toggle_columns_visibility = Ctrl+H toggles column visiblity.
-label.toggles_visibility_hidden_selected_regions = H toggles visibility of hidden or selected regions
-label.rename_tab_eXpand_reGroup=  Right-click to rename tab <br> Press X to eXpand tabs, G to reGroup.
-label.right_align_sequence_id = Right Align Sequence Id
-label.sequence_id_tooltip = Sequence ID Tooltip
-label.no_services = <No Services>
-label.select_copy_raw_html = Select this if you want to copy raw html
-label.share_data_vamsas_applications = Share data with other vamsas applications
-label.connect_to = Connect to
-label.join_existing_vamsas_session = Join an existing vamsas session
-label.from_url = from URL
-label.any_trees_calculated_or_loaded_alignment_automatically_sort = When selected, any trees calculated or loaded onto the alignment will automatically sort the alignment
-label.sort_with_new_tree = Sort With New Tree
-label.from_textbox = from Textbox
-label.window = Window
-label.preferences = Preferences
-label.tools = Tools
-label.fetch_sequences = Fetch Sequence(s)
-label.stop_vamsas_session = Stop Vamsas Session
-label.collect_garbage = Collect Garbage
-label.show_memory_usage = Show Memory Usage
-label.show_java_console = Show Java Console
-label.show_jalview_news = Show Jalview News
-label.take_snapshot = Take snapshot
-label.monospaced_fonts_faster_to_render = Monospaced fonts are faster to render
-label.anti_alias_fonts = Anti-alias Fonts (Slower to render)
-label.monospaced_font= Monospaced
-label.quality = Quality
-label.maximize_window = Maximize Window
-label.conservation = Conservation
-label.consensus = Consensus
-label.histogram = Histogram
-label.logo = Logo
-label.non_positional_features = List Non-positional Features
-label.database_references = List Database References
-label.share_selection_across_views = Share selection across views
-label.scroll_highlighted_regions = Scroll to highlighted regions
-label.gap_symbol = Gap Symbol
-label.prot_alignment_colour = Protein Alignment Colour
-label.nuc_alignment_colour = Nucleotide Alignment Colour
-label.address = Address
-label.port = Port
-label.default_browser_unix = Default Browser (Unix)
-label.send_usage_statistics = Send usage statistics
-label.check_for_questionnaires = Check for questionnaires
-label.check_for_latest_version = Check for latest version
-label.url_linkfrom_sequence_id = URL link from Sequence ID
-label.use_proxy_server = Use a proxy server
-label.eps_rendering_style = EPS rendering style
-label.append_start_end = Append /start-end (/15-380)
-label.full_sequence_id = Full Sequence Id
-label.smooth_font = Smooth Font
-label.autocalculate_consensus = AutoCalculate Consensus
-label.pad_gaps = Pad Gaps
-label.pad_gaps_when_editing = Pad Gaps When Editing
-label.automatically_set_id_width = Automatically set ID width
-label.figure_id_column_width = Figure ID column width
-label.use_modeller_output = Use Modeller Output
-label.wrap_alignment = Wrap Alignment
-label.right_align_ids = Right Align Ids
-label.sequence_name_italics = Italic Sequence Ids
-label.open_overview = Open Overview
-label.default_colour_scheme_for_alignment = Default Colour Scheme for alignment
-label.annotation_shading_default = Annotation Shading Default
-label.default_minimum_colour_annotation_shading = Default Minimum Colour for annotation shading
-label.default_maximum_colour_annotation_shading = Default Maximum Colour for annotation shading
-label.visual = Visual
-label.connections = Connections
-label.output = Output
-label.editing = Editing
-label.das_settings = DAS Settings
-label.web_services = Web Services
-label.right_click_to_edit_currently_selected_parameter = Right click to edit currently selected parameter.
-label.let_jmol_manage_structure_colours = Let Jmol manage structure colours
-label.let_chimera_manage_structure_colours = Let Chimera manage structure colours
-label.marks_leaves_tree_not_associated_with_sequence = Marks leaves of tree not associated with a sequence
-label.index_web_services_menu_by_host_site = Index web services in menu by the host site
-label.option_want_informed_web_service_URL_cannot_be_accessed_jalview_when_starts_up = Check this option if you want to be informed<br>when a web service URL cannot be accessed by Jalview<br>when it starts up
-label.new_service_url = New Service URL
-label.edit_service_url = Edit Service URL
-label.delete_service_url = Delete Service URL
-label.details = Details
-label.options = Options
-label.parameters = Parameters
-label.available_das_sources = Available DAS Sources
-label.full_details = Full Details
-label.authority = Authority
-label.type = Type
-label.proxy_server = Proxy Server
-label.file_output = File Output
-label.select_input_type = Select input type
-label.set_options_for_type = Set options for type
-label.data_input_parameters = Data input parameters
-label.data_returned_by_service = Data returned by service
-label.rsbs_encoded_service = RSBS Encoded Service
-label.parsing_errors = Parsing errors
-label.simple_bioinformatics_rest_services = Simple Bioinformatics Rest Services
-label.web_service_discovery_urls = Web Service Discovery URLS
-label.input_parameter_name = Input Parameter name
-label.short_descriptive_name_for_service = Short descriptive name for service
-label.function_service_performs = What kind of function the service performs (e.g. alignment, analysis, search, etc).
-label.brief_description_service = Brief description of service
-label.url_post_data_service = URL to post data to service. Include any special parameters needed here
-label.optional_suffix = Optional suffix added to URL when retrieving results from service
-label.preferred_gap_character = Which gap character does this service prefer?
-label.gap_character = Gap character
-label.move_return_type_up_order= Move return type up order
-label.move_return_type_down_order= Move return type down order
-label.update_user_parameter_set = Update this existing user parameter set
-label.delete_user_parameter_set = Delete the currently selected user parameter set
-label.create_user_parameter_set = Create a new parameter set with the current settings.
-label.revert_changes_user_parameter_set = Undo all changes to the current parameter set
-label.start_job_current_settings = Start Job with current settings
-label.cancel_job_close_dialog = Close this dialog and cancel job
-label.input_output = Input/Output
-label.cut_paste = Cut'n'Paste
-label.adjusting_parameters_for_calculation = Adjusting parameters for existing Calculation
-label.2d_rna_structure_line = 2D RNA {0} (alignment)
-label.2d_rna_sequence_name = 2D RNA - {0}
-label.edit_name_and_description_current_group = Edit name and description of current group.
-label.view_structure_for = View structure for {0}
-label.view_all_structures = View all {0} structures.
-label.view_all_representative_structures = View all {0} representative structures.
-label.open_new_jmol_view_with_all_representative_structures_associated_current_selection_superimpose_using_alignment = Opens a new structure viewer with all representative structures\nassociated with the current selection\nsuperimposed with the current alignment.
-label.associate_structure_with_sequence = Associate Structure with Sequence
-label.from_file = from file
-label.enter_pdb_id = Enter PDB Id
-label.discover_pdb_ids = Discover PDB ids
-label.text_colour = Text Colour
-label.structure = Structure
-label.view_structure = View Structure
-label.view_protein_structure = View Protein Structure
-label.view_rna_structure = View Nucleotide Structure
-label.clustalx_colours = Clustalx colours
-label.above_identity_percentage = Above % Identity
-label.create_sequence_details_report_annotation_for = Annotation for {0}
-label.sequence_details_for = Sequence Details for {0}
-label.sequence_name = Sequence Name
-label.sequence_description = Sequence Description
-label.edit_sequence_name_description = Edit Sequence Name/Description
-label.spaces_converted_to_backslashes = Spaces have been converted to _
-label.no_spaces_allowed_sequence_name = No spaces allowed in Sequence Name
-label.select_outline_colour = Select Outline Colour
-label.web_browser_not_found_unix = Unixers\: Couldn't find default web browser.\nAdd the full path to your browser in Preferences."
-label.web_browser_not_found = Web browser not found
-label.select_pdb_file_for = Select a PDB file for {0}
-label.html = HTML
-label.wrap = Wrap
-label.show_database_refs = Show Database Refs
-label.show_non_positional_features = Show Non-Positional Features
-label.save_png_image = Save As PNG Image
-label.load_tree_for_sequence_set = Load a tree for this sequence set
-label.export_image = Export Image
-label.vamsas_store = VAMSAS store
-label.translate_cDNA = Translate as cDNA
-label.linked_view_title = Linked cDNA and protein view
-label.align = Align
-label.extract_scores = Extract Scores
-label.get_cross_refs = Get Cross-References
-label.sort_alignment_new_tree = Sort Alignment With New Tree
-label.add_sequences = Add Sequences
-label.new_window = New Window
-label.split_window = Split Window
-label.refresh_available_sources = Refresh Available Sources
-label.use_registry = Use Registry
-label.add_local_source = Add Local Source
-label.set_as_default = Set as Default
-label.show_labels = Show labels
-label.background_colour = Background Colour
-label.associate_nodes_with = Associate Nodes With
-label.jalview_pca_calculation = Jalview PCA Calculation
-label.link_name = Link Name
-label.pdb_file = PDB file
-label.colour_with_jmol = Colour with Jmol
-label.colour_with_chimera = Colour with Chimera
-label.align_structures = Align structures
-label.jmol = Jmol
-label.chimera = Chimera
-label.sort_alignment_by_tree = Sort Alignment By Tree
-label.mark_unlinked_leaves = Mark Unlinked Leaves
-label.associate_leaves_with = Associate Leaves With
-label.save_colour_scheme_with_unique_name_added_to_colour_menu = Save your colour scheme with a unique name and it will be added to the Colour menu
-label.case_sensitive = Case Sensitive
-label.lower_case_colour = Lower Case Colour
-label.index_by_host = Index by host
-label.index_by_type = Index by type
-label.enable_jabaws_services = Enable JABAWS Services
-label.display_warnings = Display warnings
-label.move_url_up = Move URL up
-label.move_url_down = Move URL down
-label.add_sbrs_definition = Add a SBRS definition
-label.edit_sbrs_definition = Edit SBRS definition
-label.delete_sbrs_definition = Delete SBRS definition
-label.your_sequences_have_been_verified = Your sequences have been verified against known sequence databases. Some of the ids have been\n altered, most likely the start/end residue will have been updated.\n Save your alignment to maintain the updated id.\n\n
-label.sequence_names_updated = Sequence names updated
-label.dbref_search_completed = DBRef search completed
-label.show_all_chains = Show all chains
-label.fetch_all_param = Fetch all {0}
-label.paste_new_window = Paste To New Window
-label.settings_for_param = Settings for {0}
-label.view_params = View {0}
-label.all_views = All Views
-label.align_sequences_to_existing_alignment = Align sequences to an existing alignment
-label.realign_with_params = Realign with {0}
-label.calcname_with_default_settings = {0} with Defaults
-label.action_with_default_settings = {0} with default settings
-label.edit_settings_and_run = Edit settings and run...
-label.view_and_change_parameters_before_alignment = View and change the parameters before alignment
-label.run_with_preset_params = Run {0} with preset
-label.view_and_change_parameters_before_running_calculation = View and change parameters before running calculation
-label.view_documentation = View documentation
-label.select_return_type = Select return type
-label.translation_of_params = Translation of {0}
-label.features_for_params = Features for - {0}
-label.annotations_for_params = Annotations for - {0}
-label.generating_features_for_params = Generating features for - {0}
-label.generating_annotations_for_params = Generating annotations for - {0}
-label.varna_params = VARNA - {0}
-label.sequence_feature_settings = Sequence Feature Settings
-label.pairwise_aligned_sequences = Pairwise Aligned Sequences
-label.original_data_for_params = Original Data for {0}
-label.points_for_params = Points for {0}
-label.transformed_points_for_params = Transformed points for {0}
-label.graduated_color_for_params = Graduated Feature Colour for {0}
-label.select_backgroud_colour = Select Background Colour
-label.invalid_font = Invalid Font
-label.separate_multiple_accession_ids = Enter one or more PDB Ids
-label.separate_multiple_query_values = Enter one or more {0}s separated by a semi-colon ";"
-label.search_all = Enter one or more search values separated by a semi-colon ";" (Note: This Searches the entire PDB database)
-label.replace_commas_semicolons = Replace commas with semi-colons
-label.parsing_failed_syntax_errors_shown_below_param = Parsing failed. Syntax errors shown below {0}
-label.parsing_failed_unrecoverable_exception_thrown_param = \nParsing failed. An unrecoverable exception was thrown\:\n {0}
-label.example_query_param = Example query: {0}
-label.enter_value_increase_conservation_visibility = Enter value to increase conservation visibility
-label.enter_percentage_identity_above_which_colour_residues = Enter % identity above which to colour residues
-label.wswublast_client_credits = To display sequence features an exact Uniprot id with 100% sequence identity match must be entered.\nIn order to display these features, try changing the names of your sequences to the ids suggested below.\n\nRunning WSWUBlast at EBI.\nPlease quote Pillai S., Silventoinen V., Kallio K., Senger M., Sobhany S., Tate J., Velankar S., Golovin A., Henrick K., Rice P., Stoehr P., Lopez R.\nSOAP-based services provided by the European Bioinformatics Institute.\nNucleic Acids Res. 33(1)\:W25-W28 (2005));
-label.blasting_for_unidentified_sequence = BLASTing for unidentified sequences
-label.select_columns_containing = Select columns containing
-label.select_columns_not_containing = Select columns that do not contain
-option.trim_retrieved_seqs = Trim retrieved sequences
-label.trim_retrieved_sequences = When the reference sequence is longer than the sequence that you are working with, only keep the relevant subsequences.
-label.use_sequence_id_1 = Use $SEQUENCE_ID$ or $SEQUENCE_ID=/<regex>/=$
-label.use_sequence_id_2 = \nto embed sequence id in URL
-label.ws_parameters_for = Parameters for {0}
-label.switch_server = Switch server
-label.choose_jabaws_server = Choose a server for running this service
-label.services_at = Services at {0}
-label.rest_client_submit = {0} using {1}
-label.fetch_retrieve_from =Retrieve from {0}</html>
-label.fetch_retrieve_from_all_sources = Retrieve from all {0} sources in {1}<br>First is :{2}<html> 
-#label.feature_settings_click_drag = <html>Click/drag feature types up or down to change render order.<br/>Double click to select columns containing feature in alignment/current selection<br/>Pressing Alt will select columns outside features rather than inside<br/>Pressing Shift to modify current selection (rather than clear current selection)<br/>Press CTRL or Command/Meta to toggle columns in/outside features<br/></html>
-label.feature_settings_click_drag = Drag up or down to change render order.<br/>Double click to select columns containing feature.
-label.transparency_tip = Adjust transparency to 'see through' feature colours.
-label.opt_and_params_further_details = see further details by right-clicking
-label.opt_and_params_show_brief_desc_image_link = <html>Click to show brief description<br><img src="{0}"/> Right click for further information.</html> 
-label.opt_and_params_show_brief_desc = <html>Click to show brief description<br></html>
-label.adjusts_width_generated_eps_png = <html>Adjusts the width of the generated EPS or PNG file to ensure even the longest sequence ID or annotation label is displayed</html>
-label.manually_specify_width_left_column = <html>Manually specify the width of the left hand column where sequence IDs and annotation labels will be rendered in exported alignment figures. This setting will be ignored if 'Automatically set ID width' is set</html>
-label.job_created_when_checked = <html>When checked, a job is created for every sequence in the current selection.</html>
-label.when_checked_job_visible_region_and_results = <html>When checked, a single job is created for the visible region and results mapped back onto their location in the alignment. Otherwise, a job would be created for every contiguous region visible in the alignment or current selection (e.g. a multiple alignment).</html>
-label.flat_file_representation = <html>Flat file representation of this rest service using the Really Simple Bioinformatics Service formalism</html>
-label.result_of_parsing_rsbs = <html>Results of parsing the RSBS representation</html>
-label.user_preset = User Preset
-label.service_preset = Service Preset
-label.run_with_preset = Run {0} with preset
-label.view_service_doc_url = <html>View <a href="{0}">{1}</a></html>
-label.submit_sequence = <html>Submit {0} {1} {2} {3} to<br/>{4}</html>
-action.by_title_param = by {0}
-label.alignment = Alignment
-label.secondary_structure_prediction = Secondary Structure Prediction
-label.sequence_database_search = Sequence Database Search
-label.analysis = Analysis
-label.protein_disorder = Protein Disorder 
-label.source_from_db_source = Sources from {0}
-label.from_msname = from {0}
-label.superpose_with = Superpose with ...
-action.do = Do
-label.scale_label_to_column = Scale Label to Column
-label.add_new_row = Add New Row
-label.edit_label_description = Edit Label/Description
-label.hide_row = Hide This Row
-label.delete_row = Delete This Row
-label.show_all_hidden_rows = Show All Hidden Rows
-label.export_annotation = Export Annotation
-label.copy_consensus_sequence = Copy Consensus Sequence
-label.helix = Helix
-label.sheet = Sheet
-label.rna_helix = RNA Helix
-label.remove_annotation = Remove Annotation
-label.colour_by = Colour by...
-label.muscle_multiple_protein_sequence_alignment = Muscle Multiple Protein Sequence Alignment
-label.mafft_multiple_sequence_alignment = MAFFT Multiple Sequence Alignment
-label.clustalw_multiple_sequence_alignment = ClustalW Multiple Sequence Alignment
-label.jnet_secondary_structure_prediction = JNet Secondary Structure Prediction
-label.multiharmony = Multi-Harmony
-label.unable_start_web_service_analysis = Unable to start web service analysis
-label.job_couldnt_be_started_check_input = The Job couldn't be started. Please check your input, and the Jalview console for any warning messages.
-label.prompt_each_time = Prompt each time
-label.use_source = Use Source
-label.couldnt_save_project = Couldn't save project
-label.error_whilst_saving_current_state_to = Error whilst saving current state to {0}
-label.error_whilst_loading_project_from = Error whilst loading project from {0}
-label.couldnt_load_project = Couldn't load project
-label.pca_sequences_not_aligned = The sequences must be aligned before calculating PCA.\nTry using the Pad function in the edit menu,\nor one of the multiple sequence alignment web services.
-label.invalid_name_preset_exists = Invalid name - preset already exists.
-label.invalid_name = Invalid name
-label.set_proxy_settings = Please set up your proxy settings in the 'Connections' tab of the Preferences window
-label.proxy_authorization_failed = Proxy Authorization Failed
-label.internal_jalview_error = Internal Jalview Error
-label.secondary_structure_prediction_service_couldnt_be_located = The Secondary Structure Prediction Service named {0} at {1} couldn't be located.
-label.service_called_is_not_msa_service = The Service called \n{0}\nis not a \nMultiple Sequence Alignment Service\!
-label.msa_service_is_unknown = The Multiple Sequence Alignment Service named {0} is unknown
-label.service_called_is_not_seq_search_service = The Service called \n{0}\nis not a \nSequence Search Service\!
-label.seq_search_service_is_unknown = The Sequence Search Service named {0} is unknown
-label.feature_type = Feature Type
-label.display = Display
-label.service_url = Service URL
-label.copied_sequences = Copied sequences
-label.cut_sequences = Cut Sequences
-label.conservation_colour_increment = Conservation Colour Increment ({0})
-label.percentage_identity_thereshold = Percentage Identity Threshold ({0})
-label.error_unsupported_owwner_user_colour_scheme = Unsupported owner for User Colour scheme dialog
-label.save_alignment_to_file = Save Alignment to file
-label.save_features_to_file = Save Features to File
-label.save_annotation_to_file = Save Annotation to File
-label.no_features_on_alignment = No features found on alignment
-label.save_pdb_file = Save PDB File
-label.save_text_to_file = Save Text to File
-label.save_state = Save State
-label.restore_state = Restore State
-label.saving_jalview_project = Saving jalview project {0}
-label.loading_jalview_project = Loading jalview project {0}
-label.save_vamsas_document_archive = Save Vamsas Document Archive
-label.saving_vamsas_doc = Saving VAMSAS Document to {0}
-label.load_feature_colours = Load Feature Colours
-label.save_feature_colours = Save Feature Colour Scheme
-label.dataset_for = {0} Dataset for {1}
-label.select_startup_file = Select startup file
-label.select_default_browser = Select default web browser
-label.save_tree_as_newick = Save tree as newick file
-label.create_eps_from_tree = Create EPS file from tree
-label.create_png_from_tree = Create PNG image from tree
-label.save_colour_scheme = Save colour scheme
-label.edit_params_for = Edit parameters for {0}
-label.choose_filename_for_param_file = Choose a filename for this parameter file
-label.save_as_html = Save as HTML
-label.recently_opened = Recently Opened
-label.blasting_for_unidentified_sequence_jobs_running = BLASTing for unidentified sequences - {0}  jobs running.
-label.tree_from = Tree from {0}
-label.webservice_job_title = {0} using {1}
-label.select_visible_region_of = selected {0} region of {1}
-label.visible = Visible
-label.select_unselect_visible_regions_from = select and unselected {0} regions from {1}
-label.visible_region_of = visible region of
-label.webservice_job_title_on = {0} using {1} on {2}
-label.updating_vamsas_session = Updating vamsas session
-label.loading_file = Loading File: {0}
-label.edit_params = Edit {0}
-error.not_implemented = Not implemented
-error.no_such_method_as_clone1_for = No such method as clone1 for {0}
-error.null_from_clone1 = Null from clone1!
-error.implementation_error_sortbyfeature = Implementation Error - sortByFeature method must be one of FEATURE_SCORE, FEATURE_LABEL or FEATURE_DENSITY.
-error.not_yet_implemented = Not yet implemented
-error.unknown_type_dna_or_pep = Unknown Type {0} - dna or pep are the only allowed values.
-error.implementation_error_dont_know_thereshold_annotationcolourgradient = Implementation error: don't know about threshold setting for current AnnotationColourGradient.
-error.implementation_error_embeddedpopup_not_null = Implementation error - embeddedPopup must be non-null
-error.invalid_colour_for_mycheckbox = Invalid color for MyCheckBox
-error.implementation_error_unrecognised_render_object_for_features_type = Implementation Error: Unrecognised render object {0} for features of type {1}
-error.implementation_error_unsupported_feature_colour_object = Implementation error: Unsupported feature colour object.
-error.invalid_separator_parameter = Invalid separator parameter - must be non-zero length
-error.alignment_cigararray_not_implemented = Alignment(CigarArray) not yet implemented
-error.weak_sequencei_equivalence_not_yet_implemented = Weak sequenceI equivalence not yet implemented.
-error.implementation_error_can_only_make_alignmnet_from_cigararray = Implementation Error - can only make an alignment view from a CigarArray of sequences.
-error.empty_view_cannot_be_updated = empty view cannot be updated.
-error.mismatch_between_number_of_sequences_in_block = Mismatch between number of sequences in block {0} ({1}) and the original view ({2})
-error.padding_not_yet_implemented = Padding not yet implemented
-error.mismatch_between_visible_blocks_to_update_and_number_of_contigs_in_view = Mismatch between visible blocks to update and number of contigs in view (contigs=0,blocks={0})
-error.unknown_seq_cigar_operation = Unknown SeqCigar operation {0}
-error.implementation_bug_parse_cigar_string = Implementation bug in parseCigarString
-error.implementation_error_invalid_operation_string = Implementation error. Invalid operation string.
-error.invalid_range_string = Invalid range string (must be zero or positive number)
-error.implementation_error_delete_range_out_of_bounds = Implementation Error: deleteRange out of bounds: start must be non-negative and less than end.
-error.implementation_error = Implementation error
-error.implementation_error_unknown_operation = Implementation Error! Unknown operation {0}
-error.implementation_error_unexpected_null_from_get_sequence_and_deletions = Implementation Error - unexpected null from getSequenceAndDeletions
-error.implementation_error_set_seq_null = Implementation Error - _setSeq(null,...)
-error.implementation_error_s = Implementation Error: _s= {0}
-error.implementation_error_seqcigar_possible = SeqCigar: Possible implementation error: sequence is longer than dataset sequence
-error.implmentation_bug_seq_null = Implementation Bug. Null seq
-error.implementation_bug_cigar_operation_list_range_list = Implementation Bug. Cigar Operation list!= range list
-error.not_yet_implemented_cigar_object_from_cigar_string = NOT YET Implemented: Constructing a Cigar object from a cigar string and a gapped sequence.
-error.implementation_bug_cigar_operation = Implementation Bug. Cigar Operation {0} {1} not one of {2}, {3}, or {4}.
-error.implementation_error_for_new_cigar = Implementation error for new Cigar(SequenceI)
-error.implementation_error_cigar_seq_no_operations = Implementation error: {0}th sequence Cigar has no operations.
-error.implementation_error_jmol_getting_data = Implementation error - Jmol seems to be still working on getting its data - report at http://issues.jalview.org/browse/JAL-1016
-error.implementation_error_no_pdbentry_from_index = Implementation error - no corresponding pdbentry (for index {0}) to add sequences mappings to
-error.jmol_version_not_compatible_with_jalview_version = Jmol version {0} is not compatible with this version of Jalview. Report this problem at issues.jalview.org
-error.not_implemented_remove = Remove: Not implemented
-error.not_implemented_clone = Clone: Not implemented
-error.implementation_error_chimera_getting_data = Implementation error - Chimera seems to be still working on getting its data - report at http://issues.jalview.org/browse/JAL-1016
-error.call_setprogressbar_before_registering_handler = call setProgressBar before registering the progress bar's handler.
-label.cancelled_params = Cancelled {0}
-error.implementation_error_cannot_show_view_alignment_frame = Implementation error: cannot show a view from another alignment in an AlignFrame.
-error.implementation_error_dont_know_about_thereshold_setting = Implementation error: don't know about threshold setting for current AnnotationColourGradient.
-error.eps_generation_not_implemented = EPS Generation not yet implemented
-error.png_generation_not_implemented = PNG Generation not yet implemented
-error.try_join_vamsas_session_another = Trying to join a vamsas session when another is already connected
-error.invalid_vamsas_session_id = Invalid vamsas session id
-error.implementation_error_cannot_create_groovyshell = Implementation Error. Cannot create groovyShell without Groovy on the classpath!
-label.groovy_support_failed = Jalview Groovy Support Failed
-label.couldnt_create_groovy_shell = Couldn't create the groovy Shell. Check the error log for the details of what went wrong.
-error.unsupported_version_calcIdparam = Unsupported Version for calcIdparam {0}
-error.implementation_error_cant_reorder_tree = Implementation Error: Can't reorder this tree. Not DefaultMutableTreeNode.
-error.invalid_value_for_option = Invalid value {0} for option {1}
-error.implementation_error_cannot_import_vamsas_doc = Implementation Error - cannot import existing vamsas document into an existing session, Yet!
-label.vamsas_doc_couldnt_be_opened_as_new_session = VAMSAS Document could not be opened as a new session - please choose another
-error.implementation_error_vamsas_operation_not_init = Impementation error! Vamsas Operations when client not initialised and connected
-error.jalview_no_connected_vamsas_session = Jalview not connected to Vamsas session
-error.implementation_error_cannot_recover_vamsas_object_mappings = IMPLEMENTATION ERROR: Cannot recover vamsas object mappings - no backup was made
-error.setstatus_called_non_existent_job_pane = setStatus called for non-existent job pane {0}
-error.implementation_error_cannot_find_marshaller_for_param_set =Implementation error: Can't find a marshaller for the parameter set
-error.implementation_error_old_jalview_object_not_bound =IMPLEMENTATION ERROR: old jalview object is not bound ! ({0})
-error.implementation_error_vamsas_doc_class_should_bind_to_type = Implementation Error: Vamsas Document Class {0} should bind to a {1} (found a {2})
-error.implementation_error_jalview_class_should_bind_to_type = Implementation Error: Jalview Class {0} should bind to a {1} (found a {2})
-error.invalid_vamsas_rangetype_cannot_resolve_lists = Invalid vamsas RangeType - cannot resolve both lists of Pos and Seg from choice!
-error.implementation_error_maplist_is_null = Implementation error. MapList is null for initMapType.
-error.implementation_error_cannot_have_null_alignment = Implementation error: Cannot have null alignment property key
-error.implementation_error_null_fileparse = Implementation error. Null FileParse in copy constructor
-error.implementation_error_cannot_map_alignment_sequences = IMPLEMENTATION ERROR: Cannot map an alignment of sequences from different datasets into a single alignment in the vamsas document.
-error.implementation_error_cannot_duplicate_colour_scheme = Serious implementation error: cannot duplicate colourscheme {0}
-error.implementation_error_structure_selection_manager_null = Implementation error. Structure selection manager's context is 'null'
-exception.ssm_context_is_null = SSM context is null
-error.idstring_seqstrings_only_one_per_sequence = idstrings and seqstrings contain one string each per sequence
-error.cannot_have_mixed_length_replacement_vectors = Cannot have mixed length replacement vectors. Replacement vector for {0} is {1} strings long, and have already seen a {2} length vector.
-error.cannot_have_zero_length_vector_replacement_strings = Cannot have zero length vector of replacement strings - either 1 value or n values.
-error.implementation_error_multiple_single_sequence_prediction_jobs_not_supported = Implementation Error! Multiple single sequence prediction jobs are not yet supported
-error.implementation_error_invalid_msa_index_for_job =Implementation Error! Invalid msaIndex for JPredJob on parent MSA input object!
-error.implementation_error_startjob_called = Implementation error - StartJob(JpredJob) called on {0}
-error.multiple_jnet_subjob_merge_not_implemented = Multiple JNet subjob merging not yet implemented
-label.job_never_ran = Job never ran - input returned to user.
-error.implementation_error_minlen_must_be_greater_zero = Implementation error: minlen must be zero or more
-error.implementation_error_msawbjob_called = Implementation error - StartJob(MsaWSJob) called on a WSJobInstance {0}
-error.implementation_error_cannot_attach_ws_menu_entry = IMPLEMENTATION ERROR: cannot attach WS Menu Entry without service handle reference!
-error.parameter_migration_not_implemented_yet = Parameter migration not implemented yet
-error.implementation_error_cannot_set_jaba_option = Implementation error: cannot set Jaba Option to a value outside its allowed value range!
-error.implementation_error_valuetype_doesnt_support_jabaws_type = IMPLEMENTATION ERROR: jalview.ws.params.ValueConstrainI.ValueType does not support the JABAWS type : {0}
-error.cannot_create_jabaws_param_set = Cannot create a JabaWSParamSet from non-JabaWS parameters
-error.cannot_set_arguments_to_jabaws_param_set = Cannot set arguments to a JabaWSParamSet that are not JabaWS arguments
-error.implementation_error_runner_config_not_available = Implementation Error: Runner Config not available for a JABAWS service of type {0} ({1})
-error.implementation_error_cannot_handle_jaba_param = Implementation Error: Cannot handle Jaba parameter object {0}
-error.implementation_error_attempt_to_delete_service_preset = Implementation error: Attempt to delete a service preset!
-error.implementation_error_cannot_locate_oldname_presetname = Implementation error: Can't locate either oldname ({0}) or presetName ({1}in the datastore!"
-error.implementation_error_jabaws_param_set_only_handled_by = Implementation error: JabaWsParamSets can only be handled by JabaParamStore
-error.cannot_set_source_file_for = Cannot set source file for {0}
-error.mismatch_service_instance_preset = Probable mismatch between service instance and preset!
-error.cannot_set_params_for_ws_preset = Cannot set Parameters for a Jaba Web service's preset
-error.implementation_error_can_only_instantiate_jaba_param_sets = Implementation error: Can only instantiate Jaba parameter sets
-error.no_aacon_service_found = No AACon service found
-error.implementation_error_couldnt_copy_value_constraint = Implementation error: could not copy ValueConstrain!
-error.couldnt_encode_as_utf8 = Couldn't encode {0} as UTF-8.
-error.tree_inputtype_not_yet_implemented = Tree InputType not yet implemented
-error.implementation_error_need_to_have_httpresponse = Implementation Error: need to have an HttpResponse to process
-error.dbrefsource_implementation_exception =DBRefSource Implementation Exception
-error.implementation_error_dbinstance_must_implement_interface = Implmentation Error - getDbInstances must be given a class that implements jalview.ws.seqfetcher.DbSourceProxy (was given{0})
-error.implementation_error_must_init_dbsources =Implementation error. Must initialise dbSources
-label.view_controller_toggled_marked = {0} {1} columns {2} containing features of type {3}  across {4} sequence(s)
-label.toggled = Toggled
-label.marked = Marked
-label.not = not
-label.no_feature_of_type_found = No features of type {0} found.
-label.submission_params = Submission {0}
-label.empty_alignment_job = Empty Alignment Job
-label.add_new_sbrs_service = Add a new Simple Bioinformatics Rest Service
-label.edit_sbrs_entry = Edit Simple Bioinformatics Rest Service entry
-label.pca_recalculating = Recalculating PCA
-label.pca_calculating = Calculating PCA
-label.select_foreground_colour = Choose foreground colour
-label.select_colour_for_text = Select Colour for Text
-label.adjunst_foreground_text_colour_thereshold = Adjust Foreground Text Colour Threshold
-label.select_subtree_colour = Select Sub-Tree Colour
-label.create_new_sequence_features = Create New Sequence Feature(s)
-label.amend_delete_features = Amend/Delete Features for {0}
-exception.out_of_bounds_for_file = Out of bounds for file: i={0}, Final Buffer: i0={1} iend={2}
-exception.null_string_given_to_regex_search = Null String Given to Regex.search
-exception.null_string_like_given_to_regex_search = Null StringLike Given to Regex.search
-exception.null_string_given_to_regex_reverse_search = Null String Given to Regex.reverseSearch
-exception.null_string_like_given_to_regex_reverse_search = Null StringLike Given to Regex.reverseSearch
-exception.null_string_like_given_to_regex_search_from = Null String Given to Regex.searchFrom
-exception.null_string_like_given_to_regex_search_region = Null String Given to Regex.searchRegion
-exception.replace_null_regex_pointer = Replacer has null Regex pointer
-exception.bad_pattern_to_regex_perl_code = bad pattern to Regex.perlCode: {0}
-exception.no_stub_implementation_for_interface = There is no stub implementation for the interface: {0}
-exception.cannot_set_endpoint_address_unknown_port = Cannot set Endpoint Address for Unknown Port {0}
-exception.querying_matching_opening_parenthesis_for_non_closing_parenthesis = Querying matching opening parenthesis for non-closing parenthesis character {0}
-exception.mismatched_unseen_closing_char = Mismatched (unseen) closing character {0}
-exception.mismatched_closing_char = Mismatched closing character {0}
-exception.mismatched_opening_char = Mismatched opening character {0} at {1}
-exception.invalid_datasource_couldnt_obtain_reader = Invalid datasource. Could not obtain Reader
-exception.index_value_not_in_range = {0}: Index value {1} not in range [0..{2}]
-exception.unterminated_cigar_string = Unterminated cigar string
-exception.unexpected_operation_cigar_string_pos = Unexpected operation {0} in cigar string (position {1} in {2}
-exception.couldnt_parse_responde_from_annotated3d_server = Couldn't parse response from Annotate3d server
-exception.application_test_npe = Application test: throwing an NullPointerException It should arrive at the console
-exception.overwriting_vamsas_id_binding = Overwriting vamsas id binding
-exception.overwriting_jalview_id_binding = Overwriting jalview id binding
-error.implementation_error_unknown_file_format_string = Implementation error: Unknown file format string
-exception.failed_to_resolve_gzip_stream = Failed to resolve GZIP stream
-exception.problem_opening_file_also_tried = Problem opening {0} (also tried {1}) : {2}
-exception.problem_opening_file = Problem opening {0} : {1}
-exception.failed_to_read_data_from_source = Failed to read data from source: {0}
-exception.no_init_source_stream = Unitialised Source Stream
-exception.invalid_source_stream = Invalid Source Stream: {0}
-error.implementation_error_reset_called_for_invalid_source = Implementation Error: Reset called for invalid source.
-exception.number_of_residues_in_query_sequence_differ_from_prediction = Number of residues in {0} supposed query sequence ({1}\n{2})\ndiffer from number of prediction sites in prediction ({3})
-label.mapped = mapped
-exception.jpredconcide_entry_has_unexpected_number_of_columns = JPredConcise: Entry ({0}) has an unexpected number of columns
-exception.couldnt_parse_concise_annotation_for_prediction = Couldn't parse concise annotation for prediction profile.\n{0}
-exception.newfile = NewickFile\: {0}\n
-label.no_tree_read_in = No Tree read in
-exception.rnaml_couldnt_access_datasource = Couldn't access datasource ({0})
-exception.ranml_couldnt_process_data = Couldn't process data as RNAML file ({0})
-exception.ranml_invalid_file = Invalid RNAML file ({0})
-exception.ranml_problem_parsing_data = Problem parsing data as RNAML ({0})
-exception.pfam_no_sequences_found = No sequences found (PFAM input)
-exception.stockholm_invalid_format = This file is not in valid STOCKHOLM format: First line does not contain '# STOCKHOLM'
-exception.couldnt_parse_sequence_line = Could not parse sequence line: {0}
-exception.error_parsing_line = Error parsing {0}
-exception.unknown_annotation_detected = Unknown annotation detected: {0} {1}
-exception.couldnt_store_sequence_mappings = Couldn't store sequence mappings for {0}
-exception.matrix_too_many_iteration = Too many iterations in {0} (max is {1})
-exception.browser_not_found = Exception in finding browser: {0}
-exception.browser_unable_to_locate = Unable to locate browser: {0}
-exception.invocation_target_exception_creating_aedesc = InvocationTargetException while creating AEDesc: {0}
-exception.illegal_access_building_apple_evt= IllegalAccessException while building AppleEvent: {0}
-exception.instantiation_creating_aedesc = InstantiationException while creating AEDesc: {0}
-exception.unable_to_launch_url = Unable to launch URL: {0}
-exception.unable_to_create_internet_config = Unable to create an Internet Config instance: {0}
-exception.invocation_target_calling_url = InvocationTargetException while calling openURL: {0}
-exception.illegal_access_calling_url = IllegalAccessException while calling openURL: {0}
-exception.interrupted_launching_browser = InterruptedException while launching browser: {0}
-exception.das_source_doesnt_support_sequence_command = Source {0} does not support the sequence command.
-exception.invalid_das_source = Invalid das source: {0}
-exception.ebiembl_retrieval_failed_on = EBI EMBL XML retrieval failed on {0}:{1}
-label.no_embl_record_found = # No EMBL record retrieved for {0}:{1}
-label.embl_successfully_parsed = # Successfully parsed the {0} queries into an Alignment
-exception.no_pdb_records_for_chain = No PDB Records for {0} chain {1}
-exception.unexpected_handling_rnaml_translation_for_pdb = Unexpected exception when handling RNAML translation of PDB data
-exception.couldnt_recover_sequence_properties_for_alignment = Couldn't recover sequence properties for alignment
-exception.unknown_format_for_file = Unknown format {0} for file \: \n{1}
-label.remove_gaps = Remove Gaps
-exception.couldnt_recover_sequence_props_for_jnet_query = Couldn't recover sequence properties for JNet Query sequence!
-exception.server_timeout_try_later = Server timed out - try again later\n
-exception.web_service_returned_null_try_later= Server at {0} returned null object, it probably cannot be contacted. Try again later.
-exception.cannot_contact_service_endpoint_at = Cannot contact service endpoint at {0}
-error.implementation_error_cannot_find_service_url_in_given_set = Implementation error: Cannot find service url in the given url set!
-error.implementation_error_cannot_find_service_url_in_given_set_param_store = Implementation error: Cannot find service url in the given url set for this service parameter store ({0}}
-exception.jobsubmission_invalid_params_set = Invalid parameter set. Check Jalview implementation
-exception.notvaliddata_group_contains_less_than_min_seqs = Group contains less than {0} sequences.
-exception.outofmemory_loading_pdb_file = Out of memory loading PDB File
-exception.eps_coudnt_write_output_file = Could not write to the output file: {0}
-exception.eps_method_not_supported = Method not currently supported by EpsGraphics2D version {0}
-exception.eps_unable_to_get_inverse_matrix = Unable to get inverse of matrix: {0}
-warn.job_cannot_be_cancelled_close_window = This job cannot be cancelled.\nJust close the window.
-warn.service_not_supported = Service not supported!
-warn.input_is_too_big = Input is too big!
-warn.invalid_job_param_set = Invalid job parameter set!
-warn.oneseq_msainput_selection = The current selection only contains a single sequence. Do you want to submit all sequences for alignment instead ?   
-info.job_couldnt_be_run_server_doesnt_support_program = Job could not be run because the server doesn't support this program.\n{0}
-info.job_couldnt_be_run_exceeded_hard_limit = Job could not be run because it exceeded a hard limit on the server.\n{0}
-info.job_couldnt_be_run_incorrect_param_setting = Job could not be run because some of the parameter settings are not supported by the server.\n{0}\nPlease check to make sure you have used the correct parameter set for this service\!\n
-info.no_jobs_ran = No jobs ran
-info.failed_to_submit_prediction = Failed to submit the prediction\:\n{0} {1}
-info.invalid_jnet_job_result_data ={0}\n{1}\nInvalid JNet job result data\!\n{2}
-info.failed_to_submit_sequences_for_alignment = Failed to submit sequences for alignment.\nIt is most likely that there is a problem with the server.\nJust close the window\n
-info.alignment_object_method_notes = \nAlignment Object Method Notes\n
-info.server_exception = \n{0} Server exception\!\n{1}
-info.invalid_msa_input_mininfo = Need at least two sequences with at least 3 residues each, with no hidden regions between them.  
-info.invalid_msa_notenough = Not enough sequence data to align
-status.processing_commandline_args = Processing commandline arguments...
-status.das_features_being_retrived = DAS features being retrieved...
-status.searching_for_sequences_from = Searching for sequences from {0}
-status.finished_searching_for_sequences_from = Finished searching for sequences from {0}
-label.eps_file = EPS file
-label.png_image = PNG image
-status.saving_file = Saving {0}
-status.export_complete = Export complete.
-status.fetching_pdb = Fetching PDB {0}
-status.refreshing_news = Refreshing news
-status.importing_vamsas_session_from = Importing VAMSAS session from {0}
-status.opening_params = Opening {0}
-status.waiting_sequence_database_fetchers_init = Waiting for Sequence Database Fetchers to initialise
-status.init_sequence_database_fetchers = Initialising Sequence Database Fetchers
-status.fetching_sequence_queries_from = Fetching {0} sequence queries from {1}
-status.finshed_querying = Finished querying
-status.parsing_results = Parsing results.
-status.processing = Processing...
-status.refreshing_web_service_menus = Refreshing Web Service Menus
-status.collecting_job_results = Collecting job results.
-status.fetching_das_sequence_features = Fetching DAS Sequence Features
-status.no_das_sources_active = No DAS Sources Active
-status.das_feature_fetching_cancelled = DAS Feature Fetching Cancelled
-status.das_feature_fetching_complete = DAS Feature Fetching Complete
-status.fetching_db_refs = Fetching db refs
-status.loading_cached_pdb_entries = Loading Cached PDB Entries
-status.searching_for_pdb_structures = Searching for PDB Structures
-status.opening_file = opening file
-status.colouring_chimera = Colouring Chimera
-label.font_doesnt_have_letters_defined = Font doesn't have letters defined\nso cannot be used\nwith alignment data
-label.font_too_small = Font size is too small
-label.error_loading_file_params = Error loading file {0}
-label.error_loading_jalview_file = Error loading Jalview file
-warn.out_of_memory_when_action = Out of memory when {0}\!\!\nSee help files for increasing Java Virtual Machine memory.
-warn.out_of_memory_loading_file = Out of memory loading file {0}\!\!\nSee help files for increasing Java Virtual Machine memory.
-label.out_of_memory = Out of memory
-label.invalid_id_column_width = Invalid ID Column width
-warn.user_defined_width_requirements = The user defined width for the\nannotation and sequence ID columns\nin exported figures must be\nat least 12 pixels wide.
-label.couldnt_create_sequence_fetcher = Couldn't create SequenceFetcher
-warn.couldnt_create_sequence_fetcher_client = Could not create the sequence fetcher client. Check error logs for details.
-warn.server_didnt_pass_validation = Service did not pass validation.\nCheck the Jalview Console for more details.
-warn.url_must_contain = Sequence URL must contain $SEQUENCE_ID$ or a regex $SEQUENCE_ID=/<regex>/=$
-info.validate_jabaws_server = Validate JabaWS Server ?\n(Look in console output for results)
-label.test_server = Test Server?
-info.you_want_jalview_to_find_uniprot_accessions = Do you want Jalview to find\nUniprot Accession ids for given sequence names?
-label.find_uniprot_accession_ids = Find Uniprot Accession Ids
-label.new_sequence_fetcher = New Sequence Fetcher
-label.additional_sequence_fetcher = Additional Sequence Fetcher
-label.select_database_retrieval_source = Select Database Retrieval Source
-label.overwrite_existing_file = Overwrite existing file?
-label.file_already_exists = File exists
-label.edit_jabaws_url = Edit JABAWS URL
-label.add_jabaws_url = Add new JABAWS URL
-label.news_from_jalview = News from http://www.jalview.org
-label.cut_paste_alignmen_file = Cut & Paste Alignment File
-label.enter_redundancy_thereshold = Enter the redundancy threshold
-label.select_dark_light_set_thereshold = <html><i>Select a dark and light text colour, then set the threshold to<br>switch between colours, based on background colour</i></html>
-label.select_feature_colour = Select Feature Colour
-label.delete_all = Delete all sequences
-warn.delete_all = <html>Deleting all sequences will close the alignment window.<br>Confirm deletion or Cancel.
-label.add_annotations_for = Add annotations for
-label.choose_annotations = Choose annotations
-label.find = Find
-label.invalid_search = Search string invalid
-error.invalid_regex = Invalid regular expression
-label.ignore_gaps_consensus = Ignore Gaps In Consensus
-label.show_group_histogram = Show Group Histogram
-label.show_group_logo = Show Group Logo
-label.normalise_group_logo = Normalise Group Logo
-label.show_histogram = Show Histogram
-label.show_logo = Show Logo
-label.normalise_logo = Normalise Logo
-label.no_colour_selection_in_scheme = Please make a colour selection before applying colour scheme
-label.no_colour_selection_warn = Error saving colour scheme
-label.open_split_window? = Would you like to open as a split window, with cDNA and protein linked?
-label.open_split_window = Open split window
-label.no_mappings = No mappings found
-label.mapping_failed = No sequence mapping could be made between the alignments.<br>A mapping requires sequence names to match, and equivalent sequence lengths.
-action.no = No
-action.yes = Yes
-label.for = for
-label.select_by_annotation = Select/Hide Columns by Annotation
-action.select_by_annotation = Select/Hide Columns by Annotation...
-label.threshold_filter =  Threshold Filter
-action.hide = Hide
-action.select = Select
-label.alpha_helix = Alpha Helix
-label.beta_strand = Beta Strand
-label.turn = Turn
-label.select_all = Select All
-label.structures_filter = Structures Filter
-label.search_filter = Search Filter
-label.description = Description
-label.include_description= Include Description
-action.back = Back
-label.hide_insertions = Hide Insertions
-label.mark_as_representative = Mark as representative
-label.open_jabaws_web_page = Open JABAWS web page
-label.opens_the_jabaws_server_homepage = Opens the JABAWS server's homepage in web browser
-label.pdb_sequence_getcher = PDB Sequence Fetcher
-label.result = result
-label.results = results
-label.structure_chooser = Structure Chooser
-label.select = Select : 
-label.invert = Invert 
-label.select_pdb_file = Select PDB File
-info.select_filter_option = Select Filter Option/Manual Entry
-info.associate_wit_sequence = Associate with Sequence
-label.search_result = Search Result
-label.found_structures_summary = Found Structures Summary
-label.configure_displayed_columns = Configure Displayed Columns
-label.start_jalview = Start Jalview
-label.biojs_html_export = BioJS
-label.scale_as_cdna = Scale protein residues to codons
-label.scale_protein_to_cdna = Scale Protein to cDNA
-label.scale_protein_to_cdna_tip = Make protein residues same width as codons in split frame views
-info.select_annotation_row = Select Annotation Row
-info.enter_search_text_here = Enter Search Text Here
-info.enter_search_text_to_enable = Enter Search Text to Enable
-info.search_in_annotation_label = Search in {0} Label
-info.search_in_annotation_description = Search in {0} Description
-info.change_threshold_mode_to_enable = Change Threshold Mode to Enable
diff --git a/bin/lang/Messages_es.properties b/bin/lang/Messages_es.properties
deleted file mode 100644 (file)
index 6db40cf..0000000
+++ /dev/null
@@ -1,1136 +0,0 @@
-action.refresh_services = Refrescar servicios
-action.reset_services = Reiniciar servicios
-action.merge_results = Unificar resultados
-action.load_scheme = Cargar esquema
-action.save_scheme = Guardar esquema
-action.save_image = Guardar imagen
-action.paste = Pegar
-action.show_html_source = Mostrar código HTML
-action.print = Imprimir
-action.web_service = Servicio web
-action.cancel_job = Cancelar trabajo
-action.start_job = Arrancar trabajo
-action.revert = Deshacer
-action.move_down = Mover hacia abajo
-action.move_up = Mover hacia arriba
-action.remove_return_datatype = Borrar tipo de datos de retorno
-action.add_return_datatype = Añadir tipo de datos de retorno
-action.remove_input_parameter = Borrar el parámetro de entrada seleccionado
-action.add_input_parameter = Añadir parámetro de entrada seleccionado
-action.edit = Editar
-action.new = Nuevo
-action.open_file = Abrir fichero
-action.show_unconserved = Mostrar regiones no conservadas
-action.open_new_alignment = Abrir nuevo alineamiento
-action.raise_associated_windows = Destacar ventanas asociadas
-action.minimize_associated_windows = Minimizar ventanas asociadas
-action.close_all = Cerrar todo
-action.load_project = Cargar proyecto
-action.save_project = Guardar proyecto
-action.quit = Salir
-action.expand_views = Expandir vistas
-action.gather_views = Capturar vistas
-action.page_setup = Configuración de la página
-action.reload = Recargar
-action.load = Cargar
-action.open = Abrir
-action.cancel = Cancelar
-action.create = Crear
-action.update = Actualizar
-action.delete = Borrar
-action.snapshot = Imagen
-action.clear = Limpiar
-action.accept = Aceptar
-action.select_ddbb = --- Seleccionar base de datos ---
-action.undo = Deshacer
-action.redo = Rehacer
-action.reset = Reiniciar
-action.remove_left = Eliminar parte izquierda
-action.remove_right = Eliminar parte derecha
-action.remove_empty_columns = Eliminar las columnas vacías
-action.remove_all_gaps = Eliminar todos los huecos
-action.left_justify_alignment = Ajustar el alineamiento a la izquierda
-action.right_justify_alignment = Ajustar el alineamiento a la derecha
-action.boxes = Casillas
-action.text = Texto
-action.by_pairwise_id = Identificar por parejas
-action.by_id = Por identificador
-action.by_length = Por longitud
-action.by_group = Por grupo
-action.remove = Eliminar
-action.remove_redundancy = Eliminar redundancia...
-action.pairwise_alignment = Alineamiento de pares...
-action.by_rna_helixes = Por hélices de RNA
-action.user_defined = Definido por el usuario...
-action.by_conservation = Por conservación
-action.wrap = Envolver
-action.show_gaps = Mostrar huecos
-action.show_hidden_markers = Mostrar marcadores ocultos
-action.find = Buscar
-action.undefine_groups = Grupos sin definir
-action.create_groups = Crear grupos
-action.make_groups_selection = Hacer grupos para seleccionar
-action.copy = Copiar
-action.cut = Cortar
-action.font = Fuente...
-action.scale_above = Escala superior
-action.scale_left = Escala izquierda
-action.scale_right = Escala derecha
-action.by_tree_order = Por orden del árbol
-action.sort = Ordenar
-action.calculate_tree = Calcular árbol
-action.help = Ayuda
-action.by_annotation = Por anotación...
-action.invert_sequence_selection = Invertir selección de secuencias
-action.invert_column_selection = Invertir selección de columnas
-action.show = Mostrar
-action.hide = Ocultar
-action.ok = OK
-action.set_defaults = Defecto
-action.create_group = Crear grupo
-action.remove_group = Eliminar grupo
-action.edit_group = Editar grupo
-action.border_colour = Color del borde
-action.edit_new_group = Editar nuevo grupo
-action.hide_sequences = Ocultar secuencias
-action.sequences = Secuencias
-action.ids = IDS
-action.ids_sequences = IDS y secuencias
-action.reveal_all = Revelar todo
-action.reveal_sequences = Revelar secuencias
-action.find_all = Buscar todo
-action.find_next = Buscar siguiente
-action.file = Archivo
-action.view = Ver 
-action.change_params = Cambiar parámetros
-action.apply = Aplicar
-action.apply_threshold_all_groups = Aplicar umbral a todos los grupos
-action.apply_all_groups = Aplicar a todos los grupos
-action.by_chain = Por cadena
-action.by_sequence = Por secuencia
-action.paste_annotations = Pegar anotaciones
-action.format = Formato
-action.select = Seleccionar
-action.new_view = Nueva vista
-action.close = Cerrar
-action.add = Añadir
-action.save_as_default = Guardar como por defecto
-action.save_as = Guardar como
-action.save = Guardar
-action.cancel_fetch = Cancelar búsqueda
-action.save_omit_hidden_columns = Guardar / Omitir las columnas ocultas
-action.change_font = Cambiar Fuente
-action.change_font_tree_panel = Cambiar fuente (panel del árbol)
-action.colour = Color
-action.calculate = Calcular
-action.select_all = Seleccionar Todo
-action.deselect_all = Deseleccionar Todo
-action.invert_selection = Invertir selección
-action.using_jmol = Usar Jmol
-action.link = Enlazar
-action.group_link = Enlazar grupo
-action.show_chain = Mostrar cadena
-action.show_group = Mostrar grupo
-action.fetch_db_references = Recuperar referencias a base de datos
-action.view_flanking_regions = Mostrar flancos
-label.view_flanking_regions = Mostrar los datos de la secuencia a ambos lados de las subsecuencias implicadas en este alineamiento
-label.str = Str: 
-label.seq = Seq: 
-label.structures_manager = Administrar estructuras
-label.nickname = Sobrenombre:
-label.url = URL: 
-label.input_file_url = Introducir URL en el fichero de entrada
-label.select_feature = Seleccionar función:
-label.name = Nombre:
-label.name_param = Nombre: {0}
-label.group = Grupo:
-label.group_name = Nombre del grupo
-label.group_description = Descripción del grupo
-label.edit_group_name_description = Editar nombre/descripción del grupo
-label.colour = Color:
-label.description = Descripción:
-label.start = Comenzar:
-label.end = Terminar:
-label.current_parameter_set_name = Nombre actual del conjunto de parámetros:
-label.service_action = Acción de servicio:
-label.post_url = POST URL: 
-label.url_suffix = URL Sufijo
-label.sequence_source = Fuente de la secuencia
-label.per_seq = por secuencia
-label.result_vertically_separable = Los resultados son separables verticalmente
-label.amend = Modificar
-label.undo_command = Deshacer {0}
-label.redo_command = Rehacer {0}
-label.principal_component_analysis = Análisis del Componente Principal
-label.average_distance_identity = Distancia Media Usando % de Identidad
-label.neighbour_joining_identity = Unir vecinos utilizando % de Identidad
-label.treecalc_title = {0} utilizando {1}
-label.tree_calc_av = Distancia media
-label.tree_calc_nj = Unir vecinos
-label.select_score_model = Selecciones modelo de puntuación
-label.score_model_pid = % Identidad
-label.score_model_blosum62 = BLOSUM62
-label.score_model_pam250 = PAM 250
-label.score_model_conservation = Conservación de las propiedades físico-químicas
-label.score_model_enhconservation = Conservación de las propiedades físico-químicas
-label.status_bar = Barra de estado
-label.out_to_textbox = Generar cuadro de texto
-label.clustalx = Clustalx
-label.clustal = Clustal
-label.zappo = Zappo
-label.taylor = Taylor
-label.blc = BLC
-label.fasta = Fasta
-label.msf = MSF
-label.pfam = PFAM
-label.pileup = Pileup
-label.pir = PIR
-label.hydrophobicity = Hidrofobicidad
-label.helix_propensity = Tendencia de la hélice
-label.strand_propensity = Tendencia de la hebra
-label.turn_propensity = Tendencia de giro
-label.buried_index = Índice de encubrimiento
-label.purine_pyrimidine = Purina/Pirimidina
-label.percentage_identity = Porcentaje de identidad
-label.blosum62 = BLOSUM62
-label.blosum62_score = Puntuación del BLOSUM62 
-label.tcoffee_scores = Puntuación del T-Coffee
-label.average_distance_bloslum62 = Distancia Media Usando BLOSUM62
-label.neighbour_blosum62 = Neighbour Joining usando BLOSUM62
-label.show_annotations = Mostrar anotaciones
-label.colour_text = Color del texto
-label.show_non_conversed = Mostrar no conservadas
-label.overview_window = Ventana resumen
-label.none = Ninguno
-label.above_identity_threshold = Por encima del umbral de identidad
-label.show_sequence_features = Mostrar las características de las secuencias
-label.nucleotide = Nucleótido
-label.to_new_alignment = A nuevo alineamiento
-label.to_this_alignment = Añadir a este alineamiento
-label.apply_colour_to_all_groups = Aplicar color a todos los grupos
-label.modify_identity_thereshold = Modificar el umbral de identidad...
-label.modify_conservation_thereshold = Modificar el umbral de conservación...
-label.input_from_textbox = Introducir desde el cuadro de texto
-label.centre_column_labels = Centrar las etiquetas de las columnas
-label.automatic_scrolling = Desplazamiento automático
-label.documentation = Documentación
-label.about = Acerca de...
-label.show_sequence_limits = Mostrar los límites de la secuencia
-label.feature_settings = Ajustar funciones...
-label.sequence_features = Funciones de la secuencia
-label.all_columns = Todas las columnas
-label.all_sequences = Todas las secuencias
-label.selected_columns = Columnas seleccionadas
-label.selected_sequences = Secuencias seleccionadas
-label.all_but_selected_region = Todo menos la región seleccionada (Shift+Ctrl+H)
-label.selected_region = Región seleccionada
-label.all_sequences_columns = Todas las secuencias y columnas
-label.group_consensus = Consenso de grupo
-label.group_conservation = Conservación de grupo
-label.show_consensus_histogram = Mostrar el histograma de consenso
-label.show_consensus_logo = Mostrar el logo de consenso
-label.norm_consensus_logo = Normalizar el logo de consenso
-label.apply_all_groups = Aplicar a todos los grupos
-label.autocalculated_annotation = Anotación autocalculada
-label.min_colour = Color mínimo
-label.max_colour = Color máximo
-label.use_original_colours = Usar colores originales
-label.threshold_minmax = El umbral es mín/máx
-label.represent_group_with = Representar al grupo con
-label.selection = Seleccionar
-label.group_colour = Color del grupo
-label.sequence = Secuencia
-label.view_pdb_structure = Ver estructura PDB
-label.min = Mín:
-label.max = Máx:
-label.colour_by_label = Color por etiquetas
-label.new_feature = Nueva función
-label.match_case = Hacer corresponder mayúsculas y minúsculas
-label.view_alignment_editor = Ver en el editor de alineamientos
-label.labels = Etiquetas
-label.output_values = Valores de salida...
-label.output_points = Puntos de salida...
-label.output_transformed_points = Puntos de salida transformados
-label.input_data = Datos de entrada...
-label.nucleotide_matrix = Matriz nucleotídica
-label.protein_matrix = Matriz proteica
-label.show_bootstrap_values = Mostrar valores de Bootstrap
-label.show_distances = Mostrar distancias
-label.mark_unassociated_leaves = Marcar hojas no asociadas
-label.fit_to_window = Ajustar a la ventana
-label.newick_format = Formato Newick
-label.select_newick_like_tree_file = Seleccione un fichero de árbol tipo Newick
-label.colours = Colores
-label.view_mapping = Ver mapeado
-label.wireframe = Estructura metálica
-label.depthcue = Clave de profundidad
-label.z_buffering = Tamponamiento Z
-label.charge_cysteine = Carga & Cisteína
-label.all_chains_visible = Todas las cadenas visibles
-label.successfully_added_features_alignment = Funciones añadidas exitosamente al alineamiento
-label.keyboard_editing_mode = El modo de editar teclado es {0}
-label.paste_features_annotations_Tcoffee_here = Pegar tus funciones / anotaciones / puntuación del fichero T-coffee aquí.
-label.removed_columns = {0} columnas eliminadas.
-label.removed_empty_columns = {0} columnas vacías eliminadas.
-label.paste_newick_tree_file = Pegar su fichero árbol Newick aquí. 
-label.order_by_params = Ordenar por {0}
-label.html_content = <html>{0}</html>
-label.paste_pdb_file= Pegar tu fichero PDB aquí.
-label.paste_pdb_file_for_sequence = Pegar fichero PDB para la secuencia {0}
-label.could_not_parse_newick_file  = No se pudo analizar el fichero Newick\\\!\\n {0}
-label.successfully_pasted_tcoffee_scores_to_alignment= Pegada exitosamente la puntuación T-Coffee al alineamiento.
-label.failed_add_tcoffee_scores = Fallo al añadir las puntuaciones T-Coffee: 
-label.successfully_pasted_annotation_to_alignment = Anotación pegada exitosamente al alineamiento.
-label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file = No es posible parsear el texto pegado como una anotación características, GFF, o fichero T-Coffee válidos
-label.successfully_pasted_alignment_file = Fichero de alineamiento pegado exitosamente
-label.paste_your_alignment_file = Pegar su fichero de alineamiento aquí
-label.paste_your = Pegar su
-label.finished_searching = Búsqueda finalizada
-label.search_results= Buscar Resultados {0} : {1}
-label.found_match_for = Buscar coincidencia para {0}
-label.font = Fuente:
-label.size = Talla:
-label.style = Estilo:
-label.enter_redundancy_threshold = Introducir el umbral de redundancia
-label.calculating = Calculando....
-label.modify_conservation_visibility = Modificar la visibilidad de conservación
-label.colour_residues_above_occurence = Residuos de color por encima del % de aparición 
-label.set_this_label_text = fijar como etiqueta 
-label.sequences_from = Secuencias de {0}
-label.successfully_loaded_file  = Fichero cargado exitosamente {0}
-label.successfully_saved_to_file_in_format = Guardado exitosamente en el fichero: {0} en formato {1}.
-label.copied_sequences_to_clipboard = Copiadas {0} secuencias en el portapapeles.
-label.check_file_matches_sequence_ids_alignment = Comprobar que el fichero coincide con el ID de la secuencia en el alineamiento.
-label.problem_reading_tcoffee_score_file = Problema de lectura del fichero de puntuaciones T-COFFEE
-label.source_to_target = {0} a {1}
-label.per_sequence_only= Sólo por secuencia
-label.to_file = a fichero
-label.to_textbox = a cuadro de texto
-label.jalview = Jalview
-label.csv_spreadsheet = CSV (Hoja de cálculo)
-label.status =  [Estado]
-label.channels = Canales
-label.channel_title_item_count = {0} ({1})
-label.blog_item_published_on_date = {0} {1} 
-label.select_das_service_from_table = Seleccionar servicio DAS de la tabla para leer una descripción completa aquí.
-label.session_update = Actualizar sesión
-label.new_vamsas_session = Nueva sesión Vamsas
-label.load_vamsas_session = Cargar sesión Vamsas
-label.save_vamsas_session = Guardar sesión Vamsas
-label.select_vamsas_session_opened_as_new_vamsas_session= Selecciones una sesión vamsas para abrirla como una nueva sesión.
-label.open_saved_vamsas_session = Abrir una sesión VAMSAS guardada
-label.groovy_console = Consola Groovy 
-label.lineart = lineart
-label.dont_ask_me_again = No volver a preguntar
-label.select_eps_character_rendering_style = Seleccionar el carácter EPS como estilo de visualización 
-label.invert_selection = Invertir selección
-label.optimise_order = Optimizar orden
-label.seq_sort_by_score = Ordenar las secuencias por puntuación
-label.load_colours = Cargar colores
-label.save_colours = Guardar colores
-label.fetch_das_features = Recuperar funciones DAS
-label.selected_database_to_fetch_from = Seleccionada {0} Base de datos {1} para buscar de {2} 
-label.database_param = Base de datos: {0}
-label.example = Ejemplo
-label.example_param = Ejemplo: {0}
-label.select_file_format_before_saving = Debe seleccionar un formato de fichero antes de guardar!
-label.file_format_not_specified = Formato de fichero no especificado
-label.alignment_contains_hidden_columns = El alineamiento contiene columnas ocultas.\\nQuieres guardar s\u00F3lo el alineamiento visible?
-label.couldnt_save_file = No se pudo guardar el fichero: {0}
-label.error_saving_file = Error guardando el fichero
-label.remove_from_default_list = eliminar de la lista de defectuosos?
-label.remove_user_defined_colour = Eliminar el color definido por el usuario
-label.you_must_select_least_two_sequences = Debes seleccionar al menos 2 secuencias.
-label.invalid_selection = Selección inválida
-label.principal_component_analysis_must_take_least_four_input_sequences = El an\u00E1lisis de la componente principal debe tomar\\nal menos 4 secuencias de entrada.
-label.sequence_selection_insufficient = Selección de secuencias insuficiente
-label.you_need_more_two_sequences_selected_build_tree = necesitas seleccionar más de dos secuencias para construir un árbol!
-label.not_enough_sequences = No suficientes secuencias
-label.selected_region_to_tree_may_only_contain_residues_or_gaps = La regi\u00F3n seleccionada para construir un \u00E1rbol puede\\ncontener s\u00F3lo residuos o espacios.\\nPrueba usando la funci\u00F3n Pad en el men\u00FA de edici\u00F3n,\\n o uno de los m\u00FAltiples servicios web de alineamiento de secuencias.
-label.sequences_selection_not_aligned = Las secuencias seleccionadas no están alineadas
-label.sequences_must_be_aligned_before_creating_tree = Las secuencias deben estar alineadas antes de crear el \u00E1rbol.\\nPrueba usando la funci\u00F3n Pad en el men\u00FA de editar,\\n o uno de los m\u00FAltiples servicios web de alineamiento de secuencias.
-label.sequences_not_aligned = Secuencias no alineadas
-label.problem_reading_tree_file =  Problema al leer el fichero del árbol
-label.possible_problem_with_tree_file = Posible problema con el fichero del árbol
-label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation = Por favor seleccionar al menos tres bases de al menos una secuencia para poder realizar la traducción de cDNA.
-label.translation_failed = Translation Failed
-label.error_when_translating_sequences_submit_bug_report = Desafortunadamente, algo fue mal a la hora de traducir tus secuencias.\\nPor favor, revisa la consola Jalview java \\ny presenta un informe de error que incluya el seguimiento.
-label.implementation_error  = Error de implementación:
-label.automatically_associate_pdb_files_with_sequences_same_name = Quieres asociar automáticamente los {0} ficheros PDB con las secuencias del alineamiento que tengan el mismo nombre?
-label.automatically_associate_pdb_files_by_name = Asociar los ficheros PDB por nombre automáticamente
-label.ignore_unmatched_dropped_files_info = Quieres <em>ignorar</em> los {0} ficheros cuyos nombres no coincidan con ningún IDs de las secuencias ?
-label.ignore_unmatched_dropped_files = Ignorar los ficheros sin coincidencias?
-label.enter_view_name = Introducir nombre visible (¿?)
-label.enter_label = Introducir etiqueta
-label.enter_label_for_the_structure = Introducir una etiqueta para la estructura?
-label.pdb_entry_is_already_displayed = {0} Ya est\u00E1 mostrado.\\nQuieres volver a usar este visor?
-label.map_sequences_to_visible_window = Mapa de secuencias en ventana visible: {0}
-label.add_pdbentry_to_view = Quieres a\u00F1adir {0} a la vista llamada\\n{1}\\n
-label.align_to_existing_structure_view = Alinear a una estructura ya existente
-label.pdb_entries_couldnt_be_retrieved = Las siguientes entradas pdb no pueden ser extra\u00EDdas del PDB\\\:\\n{0}\\nPor favor, prueba descarg\u00E1ndolas manualmente.
-label.couldnt_load_file = No se pudo cargar el fichero
-label.couldnt_find_pdb_id_in_file = No se pudo encontrar un Id PDB en el fichero suministrado. Por favor, introduzca un Id para identificar esta estructura.
-label.no_pdb_id_in_file = No hay un Id PDB en el fichero
-label.couldnt_read_pasted_text = No se pudo leer el texto pegado {0}
-label.error_parsing_text = Error analizando el texto
-label.enter_local_das_source = Intruduzca el Nickname & URL de la fuente DAS local
-label.you_can_only_edit_or_remove_local_das_sources = Sólo puedes editar o eliminar fuentes DAS locales!
-label.public_das_source = Fuente pública DAS - no editable
-label.input_alignment_from_url = Alineamiento de entrada desde URL
-label.input_alignment = Alineamiento de entrada
-label.couldnt_import_as_vamsas_session = No se pudo importar {0} como una nueva sesión Vamsas.
-label.vamsas_document_import_failed =  Fallo en la importación del documento Vamsas
-label.couldnt_locate = No se pudo localizar {0}
-label.url_not_found = URL no encontrada
-label.no_link_selected = Enlace no seleccionado
-label.new_sequence_url_link = Enlace a una nueva secuencia URL
-label.cannot_edit_annotations_in_wrapped_view = No se pueden editar anotaciones en vista envolvente
-label.wrapped_view_no_edit = Vista envolvente - no editar
-label.error_retrieving_data = Error en la recuperación de datos
-label.user_colour_scheme_must_have_name = El esquema de colores del usuario debe tener un nombre
-label.no_name_colour_scheme = No hay nombre para el esquema de colores 
-label.invalid_url = URL Invalido!
-label.error_loading_file = Error al cargar el fichero
-label.problems_opening_file = Encontrados problemas al abrir el fichero {0}!!
-label.file_open_error = Error al abrir el fichero
-label.no_das_sources_selected_warn = No han sido seleccionadas fuentes DAS.\\nPor favor, seleccione algunas fuentes y\\npruebe de nuevo.
-label.no_das_sources_selected_title = No han sido seleccionadas fuentes DAS
-label.colour_scheme_exists_overwrite = El esquema de colores {0} ya existe.\\nContinuar guardando el esquema de colores como {1}?
-label.duplicate_scheme_name = Duplicar nombre de esquema
-label.jalview_new_questionnaire = Hay un nuevo cuestionario disponible. Querr\u00EDa completarlo ahora ?\\n
-label.jalview_user_survey = Encuesta de usuario Jalview 
-label.alignment_properties = Propiedades del alineamiento: {0}
-label.alignment_props = Propiedades del alineamiento
-label.input_cut_paste = Cortar y pegar la entrada
-label.input_cut_paste_params = Cortar y pegar la entrada - {0}
-label.alignment_output_command = Alineamiento de salida - {0}
-label.annotations = Anotaciones
-label.features = Funciones
-label.overview_params = Visión general {0}
-label.paste_newick_file = Pegar nuevo fichero Newick
-label.load_tree_from_file = desde fichero - 
-label.colour_by_annotation = Color por anotación
-label.selection_output_command = Seleccionar salida - {0}
-label.annotation_for_displayid = <p><h2>Anotación para {0} </h2></p><p>
-label.pdb_sequence_mapping = PDB - Mapeado de secuencia
-label.pca_details = detalles de la PCA
-label.redundancy_threshold_selection = Selección del umbral de redundancia
-label.user_defined_colours = Colores definidos del usuario
-label.jalviewLite_release = JalviewLite - versión {0}
-label.jaview_build_date = Fecha de creación: {0}
-label.jalview_authors_1 = Authors: Jim Procter, Andrew Waterhouse, Mungo Carstairs, Tochukwu Ofoegbu, Lauren Lui, Jan Engelhardt,
-label.jalview_authors_2 = Natasha Sherstnev, Daniel Barton, Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton.
-label.jalview_dev_managers = Desarrollo gestionado por The Barton Group, University of Dundee, Scotland, UK.
-label.jalview_distribution_lists = Para ayuda, ver el FAQ at www.jalview.org y/o adjuntar la lista de envío jalview-discuss@jalview.org
-label.jalview_please_cite = Si usa Jalview incluya la siguiente cita, por favor:
-label.jalview_cite_1_authors = Waterhouse, A.M., Procter, J.B., Martin, D.M.A, Clamp, M. and Barton, G. J. (2009)
-label.jalview_cite_1_title = Jalview Version 2 - un editor de alineamiento múltiple de secuencias y banco de trabajo de análisis
-label.jalview_cite_1_ref =  Bioinformaticos doi: 10.1093/bioinformatics/btp033
-label.right_click = clic en el botón derecho
-label.to_add_annotation = para añadir anotación
-label.alignment_has_no_annotations = El alineamiento no tiene anotaciones
-label.retrieving_pdb_data = Recuperación de datos PDB...
-label.label = Etiqueta
-label.no_features_added_to_this_alignment = No hay funciones asociadas a este alineamiento!!
-label.features_can_be_added_from_searches_1 = (Las funciones pueden ser añadidas de búsquedas o
-label.features_can_be_added_from_searches_2 = de ficheros de funciones Jalview / GFF)
-label.calculating_pca= Calculando PCA
-label.reveal_columns = Mostrar Columnas
-label.jalview_cannot_open_file = Jalview no puede abrir el fichero
-label.jalview_applet = Aplicación Jalview  
-label.loading_data = Cargando datos
-label.memory_stats = Memoria libre total: {0} MB; Memoria máxima: {1} MB; {2} %
-label.calculating_tree = Calculando árbol
-label.state_queueing = En cola 
-label.state_running = Procesando
-label.state_complete = Completar
-label.state_completed = Finalizado
-label.state_job_cancelled = ¡Trabajo cancelado!
-label.state_job_error = Error del trabajo!
-label.server_error_try_later = ¡Error del servidor! (Intentar más tarde)
-label.error_loading_pdb_data = ¡Error cargando los datos PDB!
-label.fetching_pdb_data = Buscando los datos PDB...
-label.structure_type = Estructura_tipo
-label.settings_for_type = Ajustes para {0}
-label.view_full_application = Ver en la aplicación completa 
-label.load_associated_tree = Cargar árbol asociado ...
-label.load_features_annotations = Cargar características/anotaciones ...
-label.export_features = Exportar características...
-label.export_annotations = Exportar anotaciones ...
-label.jalview_copy = Copiar (sólo Jalview)
-label.jalview_cut = Cortar (sólo Jalview)
-label.to_upper_case = Pasar a mayúsculas
-label.to_lower_case = Pasar a minúsculas
-label.toggle_case = Alternar mayúsculas y minúsculas
-label.edit_name_description = Editar nombre/descripción
-label.create_sequence_feature = Crear función de secuencia
-label.edit_sequence = Editar secuencia
-label.edit_sequences = Editar secuencias
-label.sequence_details = Detalles de la secuencia
-label.jmol_help = Ayuda de Jmol 
-label.all = Todo
-label.sort_by = Ordenar por
-label.sort_by_score = Ordenar por puntuación
-label.sort_by_density = Ordenar por densidad
-label.sequence_sort_by_density = Ordenar las secuencias por densidad
-label.reveal = Revelar
-label.hide_columns = Ocultar columnas
-label.load_jalview_annotations = Cargar un fichero de anotación de Jalivew o un fichero de características
-label.load_tree_file = Cargar un fichero de árbol
-label.retrieve_parse_sequence_database_records_alignment_or_selected_sequences = Recuperar y parsear un registro de secuencia de base de datos para el alineamiento o secuencias actualmente seleccionados
-label.standard_databases = Bases de datos estándar
-label.fetch_embl_uniprot = Recuperar de EMBL/EMBLCDS o Uniprot/PDB y de cualquier fuente DAS seleccionada
-label.reset_min_max_colours_to_defaults = Reiniciar los colores min y max colours a los valores por defecto establecidos en las preferencias de usuario
-label.align_structures_using_linked_alignment_views = Alinear las estructuras utlizando las {0} vistas de alineamiento enlazadas
-label.connect_to_session = Conectar a la sesión {0}
-label.threshold_feature_display_by_score = Filtrar la característica mostrada por puntuación.
-label.threshold_feature_no_thereshold = Sin umbral
-label.threshold_feature_above_thereshold = Por encima del umbral
-label.threshold_feature_below_thereshold = Por debajo del umbral
-label.adjust_thereshold = Ajustar umbral
-label.toggle_absolute_relative_display_threshold = Cambiar entre mostrar el umbral absoluto y el relativo.
-label.display_features_same_type_different_label_using_different_colour = Mostrar las características del mismo tipo con una etiqueta diferente y empleando un color distinto (p.e. características del dominio)
-label.select_colour_minimum_value = Seleccionar el color para el valor mínimo
-label.select_colour_maximum_value = Seleccionar el color para el valor máximo
-label.open_new_jmol_view_with_all_structures_associated_current_selection_superimpose_using_alignment = Abrir una nueva vista Jmol con todas las estructuras asociadas con la selección acxtual y superponer las utilizando el alineamiento.
-label.open_url_param = Abrir URL {0}
-label.open_url_seqs_param = Abrir URL ({0}..) ({1} secuencias)
-label.load_pdb_file_associate_with_sequence = Cargar un fichero PDB y asociarlo con la secuencia {0}
-label.reveal_hidden_columns = Revelar las columnas ocultas con el botón derecho del ratón
-label.dark_colour = Oscurecer color
-label.light_colour = Aclarar color
-label.highlightnode = Pulse el botón izquierdo para seleccionar las hojas.<br>Haga doble clic para invertir las hojas.<br>Pulse el botón derecho para cambiar el color.
-label.load_colour_scheme = Cargar esquema cromático
-label.toggle_enabled_views = Cuando está habilitado, permite que se seleccionen varias vistas.
-label.edit_notes_parameter_set = Haga clic para editar las notas de este conjunto de parámetros.
-label.open_local_file = Abrir fichero local
-label.enable_automatically_sort_alignment_when_open_new_tree = Habilite esta opción para ordenar automáticamente<br>el alineamiento cuando abra<br> un nuevo árbol.
-label.listen_for_selections = Atención a las selecciones
-label.selections_mirror_selections_made_same_sequences_other_views = Cuando está habilitado, las selecciones de esta vista serán un reflejo<br>de las selecciones realizadas en las mismas secuencias de otras vistas.
-label.toggle_sequence_visibility = Shift+H cambia la visibilidad de la secuencia
-label.toggle_columns_visibility = Ctrl+H cambia la visibilidad de la columna
-label.toggles_visibility_hidden_selected_regions = H cambiar la visibilidad de las regiones ocultas o seleccionadas
-label.rename_tab_eXpand_reGroup=  Haga clic en el botón derecho para renombrar la pestaña<br>Presione X para expandir las tablas y G para reagrupar.
-label.right_align_sequence_id = Alinear a la derecha el ID de la secuencia
-label.sequence_id_tooltip = Ayuda del ID de la secuencia
-label.no_services = <Sin Servicios>
-label.select_copy_raw_html = Seleccione esta opción si desea copiar el html en bruto
-label.share_data_vamsas_applications = Compartir datos con otras aplicaciones vamsas
-label.connect_to = Conectar a
-label.join_existing_vamsas_session = Unirse a una sesión vamsas existente
-label.from_url = desde una URL
-label.any_trees_calculated_or_loaded_alignment_automatically_sort = Cuando está habilitado, cualquier árbol calculado o cargado en el alineamiento lo ordenará
-label.sort_with_new_tree = Ordenar con el nuevo árbol
-label.from_textbox = desde un área de texto
-label.window = Ventana
-label.preferences = Preferencias
-label.tools = Herramientas
-label.fetch_sequences = Recuperar secuencia(s)
-label.stop_vamsas_session = Parar sesión vamsas
-label.collect_garbage = Recolector de basura
-label.show_memory_usage = Mostrar uso de memoria
-label.show_java_console = Mostrar consola de Java
-label.show_jalview_news = Mostrar las noticias de Jalview
-label.take_snapshot = Tomar captura
-label.monospaced_fonts_faster_to_render = Las fuentes monoespaciadas son más rápidas de pintar
-label.anti_alias_fonts = Fuentes anti-alias (más lentas de pintar)
-label.monospaced_font= Monoespaciadas
-label.quality = Calidad
-label.maximize_window = Maximizar ventana
-label.conservation = Conservación
-label.consensus = Consenso
-label.histogram = Histograma
-label.logo = Logo
-label.non_positional_features = Características no posicionales
-label.database_references = Referencias a base de datos
-label.share_selection_across_views = Compartir la selección en todas las vistas
-label.scroll_highlighted_regions = Desplazarse hasta las regiones resaltadas
-label.gap_symbol = Símbolo del hueco
-label.alignment_colour = Color del alineamiento
-label.address = Dirección
-label.port = Puerto
-label.default_browser_unix = Navegador por defecto (Unix)
-label.send_usage_statistics = Enviar estadísticas de uso
-label.check_for_questionnaires = Comprobar los cuestionarios
-label.check_for_latest_version = Comprobar la última versión
-label.url_linkfrom_sequence_id = URL del enlace del ID de la secuencia
-label.use_proxy_server = Utilizar un servidor proxy
-label.eps_rendering_style = Estilo de visualización EPS
-label.append_start_end = Añadir /inicio-fin (/15-380)
-label.full_sequence_id = ID de la secuencia completo
-label.smooth_font = Fuente alargada
-label.autocalculate_consensus = Autocalcular consenso
-label.pad_gaps = Rellenar huecos
-label.pad_gaps_when_editing = Rellenar huecos al editar
-label.automatically_set_id_width = Establecer automáticamente al anchura del ID
-label.figure_id_column_width = Anchura de la columna del ID de la Figura
-label.use_modeller_output = Utilizar la salidad del Modeller
-label.wrap_alignment = Envolver alineamiento
-label.right_align_ids = Alinear IDs a la derecha
-label.sequence_name_italics = Nombre de la secuencia en cursiva
-label.open_overview = Abrir resumen
-label.default_colour_scheme_for_alignment = Esquema cromático por defecto para el alineamiento
-label.annotation_shading_default = Sombreado por defecto de la anotación
-label.default_minimum_colour_annotation_shading = Por mínimo por defecto para el sombreado de la anotación
-label.default_maximum_colour_annotation_shading = Por máximo por defecto para el sombreado de la anotación
-label.visual = Visual
-label.connections = Conexiones
-label.output = Salida
-label.editing = Edición
-label.das_settings = Configuración DAS
-label.web_services = Servicios web
-label.right_click_to_edit_currently_selected_parameter = Haga clic en el botón derecho para editar el parámetro seleccionado actualmente.
-label.let_jmol_manage_structure_colours = Permitir que Jmol gestione la estructuras cromáticas
-label.marks_leaves_tree_not_associated_with_sequence = Marcar las hojas del árbol que no están asociadas a una secuencia
-label.index_web_services_menu_by_host_site = Indizar los servicios web en el menú por el host que los aloja
-label.option_want_informed_web_service_URL_cannot_be_accessed_jalview_when_starts_up = Marque esta opción si desea ser informado<br>cuando no se pueda acceder a la URL de un servicio web<br>al arrancar Jalview.
-label.new_service_url = Nueva URL del servicio
-label.edit_service_url = Editar la URL del servicio
-label.delete_service_url = Borrar la URL del servicio
-label.details = Detalles
-label.options = Opciones
-label.parameters = Paramétros
-label.available_das_sources = Fuentes DAS disponibles
-label.full_details = Detalles completos
-label.authority = Autoridad
-label.type = Tipo
-label.proxy_server = Servidor proxy
-label.file_output = Fichero de salida
-label.select_input_type = Seleccionar el tipo de entrada
-label.set_options_for_type = Establecer opciones para el tipo
-label.data_input_parameters = Datos de los parámetros de entrada
-label.data_returned_by_service = Datos devueltos por el servicio
-label.rsbs_encoded_service = Servicio RSBS codificado
-label.parsing_errors = Errores de parseo
-label.simple_bioinformatics_rest_services = Simple Bioinformatics Rest Services
-label.web_service_discovery_urls = URL de descubrimiento de servicios web
-label.input_parameter_name = Nombre del parámetro de entrada
-label.short_descriptive_name_for_service = Nombre corto descriptivo del servicio
-label.function_service_performs = Tipo de función que realiza el servicio (p.e. alineamiento, análisis, búsqueda, etc).
-label.brief_description_service = Descripción breve del servicio
-label.url_post_data_service = URL a la que enviar los datos del servicio. Incluya cualquier parámetro especial que se necesite aquí
-label.optional_suffix = Sufijo opcional añadido a la URL al recuperar los resultados del servicio
-label.preferred_gap_character = ¿Qué caracter para el hueco prefiere el servicio?
-label.gap_character = Carácter para hueco
-label.move_return_type_up_order= Mover el tipo de returno hacia arriba en el orden
-label.move_return_type_down_order= Mover el tipo de returno hacia abajo en el orden
-label.update_user_parameter_set = Actualizar el conjunto de parámetros de usuario existente
-label.delete_user_parameter_set = Borrar el conjunto de parámetros de usuario existente
-label.create_user_parameter_set = Crear un nuevo conjunto de parámetro con la configuración actual.
-label.revert_changes_user_parameter_set = Deshacer todos los cambios en el conjunto de parámetros actual
-label.start_job_current_settings = Arrancar trabajo con la configuración actual
-label.cancel_job_close_dialog = Cerrar este diálogo y cancelar el trabajo
-label.input_output = Entrada/Salida
-label.cut_paste = Cortar y pegar
-label.adjusting_parameters_for_calculation = Ajustar los parámetros para el cálculo existente
-label.2d_rna_structure_line = 2D RNA {0}
-label.2d_rna_sequence_name = 2D RNA - {0}
-label.edit_name_and_description_current_group = Editar el nombre y la descripción del grupo actual.
-label.view_structure_for = Visualizar la estructura para {0}
-label.view_all_structures = Visualizar todas las {0} estructuras.
-label.view_all_representative_structures = Visualizar todas las {0} estructuras representativas.
-label.open_new_jmol_view_with_all_representative_structures_associated_current_selection_superimpose_using_alignment = Abrir una nueva vista de Jmol con todas las estructuras representativas\nasociadas con la selecci\u00F3n actual\nsuperpuesta con el alineamiento actual.
-label.associate_structure_with_sequence = Asociar estructura con la secuencia
-label.from_file = desde fichero
-label.enter_pdb_id = Introducir PDB Id
-label.discover_pdb_ids = Buscar PDB ids
-label.text_colour = Color del texto
-label.structure = Estructura
-label.view_structure = Visualizar estructura
-label.clustalx_colours = Colores de Clustalx
-label.above_identity_percentage = Sobre % identidad
-label.create_sequence_details_report_annotation_for = Anotación para {0}
-label.sequece_details_for = Detalles de la secuencia para {0}
-label.sequence_name = Nombre de la secuencia
-label.sequence_description = Descripción de la secuencia
-label.edit_sequence_name_description = Editar el nombre/descripción de la secuencia
-label.spaces_converted_to_backslashes = Los espacios se han convertido en _
-label.no_spaces_allowed_sequence_name = No se permiten espacios en el nombre de la secuencia
-label.select_outline_colour = Seleccionar el color del límite
-label.web_browser_not_found_unix = Unixers\: No es posible encontrar el navegador web por defecto.\nA\u00F1ada la ruta completa de su navegador en la pesta\u00F1a de Preferencias.
-label.web_browser_not_found = No se encuentra el navegador web
-label.select_pdb_file_for = Seleccione un fichero PDB para {0}
-label.html = HTML
-label.wrap = Envolver
-label.show_database_refs = Mostrar las referencias en base de datos
-label.show_non_positional_features = Mostrar las características no posicionales
-label.save_png_image = Guardar como imagen PNG
-label.load_tree_for_sequence_set = Cargar un árbol para este conjunto de secuencias
-label.export_image = Exportar imagen
-label.vamsas_store = Almacén VAMSAS
-label.translate_cDNA = Traducir cDNA
-label.extract_scores = Extraer puntuaciones
-label.get_cross_refs = Obtener referencias cruzadas
-label.sort_alignment_new_tree = Alinear el alineamiento con el nuevo árbol
-label.add_sequences = Añadir secuencias
-label.new_window = Nueva ventana
-label.refresh_available_sources = Refrescar las fuentes disponibles
-label.use_registry = Utilizar el registro
-label.add_local_source = Añadir fuente local
-label.set_as_default = Establecer por defecto
-label.show_labels = Mostrar etiquetas
-label.background_colour = Color de fondo
-label.associate_nodes_with = Asociar nodos con
-label.jalview_pca_calculation = Cálculo del PCA por Jalview
-label.link_name = Nombre del enalce
-label.pdb_file = Fichero PDB
-label.colour_with_jmol = Colorear con Jmol
-label.align_structures = Alinear estructuras
-label.jmol = Jmol
-label.sort_alignment_by_tree = Ordenar alineamiento por árbol
-label.mark_unlinked_leaves = Marcar las hojas como no enlazadas
-label.associate_leaves_with = Asociar hojas con
-label.save_colour_scheme_with_unique_name_added_to_colour_menu = Guarde el esquema cromáticos con un nombre único y se añadirá al menú de colores
-label.case_sensitive = Sensible a mayúsculas
-label.lower_case_colour = Color para las minúsculas
-label.index_by_host = Indizar por host
-label.index_by_type = Indizar por tipo
-label.enable_jabaws_services = Habilitar servicios JABAWS
-label.display_warnings = Mostrar advertencias
-label.move_url_up = Mover la URL hacia arriba
-label.move_url_down = Mover la URL hacia abajo
-label.add_sbrs_definition = Añadir una definición SBRS 
-label.edit_sbrs_definition = Editar una definición SBRS 
-label.delete_sbrs_definition = Borrar una definición SBRS 
-label.your_sequences_have_been_verified = Sus secuencias has sido verificadas en una base de datos de secuencias conocidas. Algunos de sus ID se han alterado y\n, probablemente, el residuo de inicio/fin se haya actualizado.\nGuarde su alineamiento para mantener el ID actualizado.\n\n 
-label.sequence_names_updated = Nombres de secuencia actualizados
-label.dbref_search_completed = Búsqueda de DBRef terminada
-label.show_all_chains = Mostrar todas las cadenas
-label.fetch_all_param = Recuperar todas {0}
-label.paste_new_window = Pegar en una nueva ventana
-label.settings_for_param = Configuración para {0}
-label.view_params = Visualizar {0}
-label.select_all_views = Seleccionar todas las vistas
-label.align_sequences_to_existing_alignment = Alinear las secuencias con el alineamiento existente
-label.realign_with_params = Realinear con {0}
-label.calcname_with_default_settings = {0} por defecto
-label.action_with_default_settings = {0} con la configuración por defecto
-label.edit_settings_and_run = Editar la configuración y ejecutar...
-label.view_and_change_parameters_before_alignment = Ver y cambiar los parámetros antes del alineamiento
-label.run_with_preset_params = Ejecutar {0} con preconfiguración
-label.view_and_change_parameters_before_running_calculation = Ver y cambiar los parámetros antes de lanzar el cálculo
-label.view_documentation = Ver documentación
-label.select_return_type = Seleccionar el tipo de retorno
-label.translation_of_params = Traducción de {0}
-label.features_for_params = Características de - {0}
-label.annotations_for_params = Anotaciones de - {0}
-label.generating_features_for_params = Generando características de - {0}
-label.generating_annotations_for_params = Generando anotaciones de - {0}
-label.varna_params = VARNA - {0}
-label.sequence_feature_settings = Configuración de las características de la secuencia
-label.pairwise_aligned_sequences = Secuencias alineadas a pares
-label.original_data_for_params = Datos originales de {0}
-label.points_for_params = Puntos de {0}
-label.transformed_points_for_params = Puntos transformados de {0}
-label.graduated_color_for_params = Color graduado para la característica de {0}
-label.select_backgroud_colour = Seleccionar color de fondo
-label.invalid_font = Fuente no válida
-label.separate_multiple_accession_ids = Separar los accession id con un punto y coma ";"
-label.replace_commas_semicolons = Cambiar comas por puntos y comas
-label.parsing_failed_syntax_errors_shown_below_param = Parseo erróneo. A continuación, se muestras los errores de sintaxis {0}
-label.parsing_failed_unrecoverable_exception_thrown_param = \nParseo err\u00F3neo. Se ha lanzado una excepci\u00F3n fatal\:\n {0}
-label.example_query_param = Consulta de ejemplo: {0}
-label.enter_value_increase_conservation_visibility = Introduzca un valor para incrementar la visibilidad de la conservación
-label.enter_percentage_identity_above_which_colour_residues = Introduza un % de identidad por encima del cual se colorearán los residuos
-label.wswublast_client_credits = Para mostrar las caracter\u00EDsticas de una secuencia, debe indicarse un id de Uniprot cuya secuencia se corresponda al 100 % con la introducida.\nPara mostrar estas caracter\u00EDsticas, prueba a cambar los nombre de sus secuencia con los ID que se sugieren a continuaci\u00F3n.\n\nRunning WSWUBlast at EBI.\nPlease quote Pillai S., Silventoinen V., Kallio K., Senger M., Sobhany S., Tate J., Velankar S., Golovin A., Henrick K., Rice P., Stoehr P., Lopez R.\nSOAP-based services provided by the European Bioinformatics Institute.\nNucleic Acids Res. 33(1)\:W25-W28 (2005));
-label.blasting_for_unidentified_sequence = Ejecutar BLAST para la secuencias sin identificar
-label.select_columns_containing = Seleccione las columnas que contengan
-label.select_columns_not_containing = Seleccione las columnas que no contengan
-option.trim_retrieved_seqs = Ajustar las secuencias recuperadas
-label.trim_retrieved_sequences = Cuando la secuencia de referencia es más larga que la secuencia con la que está trabajando, sólo se mantienen las subsecuencias relevantes.
-label.use_sequence_id_1 = Utilice $SEQUENCE_ID$ o $SEQUENCE_ID=/<regex>/=$
-label.use_sequence_id_2 = \nto para embeber el id de la secuencia en una URL
-label.ws_parameters_for = Parámetros para {0}
-label.switch_server = Cambiar servidor
-label.open_jabaws_web_page = Abra el página principal del servidor JABAWS en un navegador web
-label.choose_jabaws_server = Escoja un servidor para ejecutar este servicio
-label.services_at = Servicios en {0}
-label.rest_client_submit = {0} utilizando {1}
-label.fetch_retrieve_from =Recuperar de {0}
-label.fetch_retrieve_from_all_sources = Recuperar de todas las fuentes {0} en {1}<br>La primera es :{2}
-label.feature_settings_click_drag = Haga clic o arrastre los tipos de las características hacia arriba o hacia abajo para cambiar el orden de visualización.<br/>Haga doble clic para seleccionar las columnas que contienen las características del alineamiento/selección actual.<br/>
-label.opt_and_params_further_details = ver los detalles adicionales haciendo clic en el botón derecho
-label.opt_and_params_show_brief_desc_image_link = Haga clic para ver una descripción breve<br><img src="{0}"/>Haga clic en el botón derecho para obtener información adicional.
-label.opt_and_params_show_brief_desc = Haga clic para ver una descripción breve<br>
-label.adjusts_width_generated_eps_png = Ajusta la anchura del fichero EPS o PNG generado para asegurar incluso que el ID de la secuencia más larga o las etiquetas de anotación se muestran
-label.manually_specify_width_left_column = Especificar manualmente la anchura de la columna izquierda en las etiquetas de los ID de la secuencia y las anotaciones se mostrar en las figuras del alineamiento exportado.Esta configuraicón se ignorará si está marcada la opción 'Establecer automáticamente al anchura del ID'
-label.job_created_when_checked = Cuando está habilitado, se crea un trabajo para cada secuencia de la selección actual
-label.when_checked_job_visible_region_and_results = Cuando está habilitado, se crea un único trabajo para la región visible y los resultados de mapean en su ubicación dentro del alineamiento. En caso contrario, se creará un trabajo para cada región visible y contigua en el alineamiento o selección actual (p.e. un alineamiento múlitple).</html>
-label.flat_file_representation = La representación del fichero plano de este servicio utilizando el formalismo Really Simple Bioinformatics Service</html>
-label.result_of_parsing_rsbs = Resultados de parsear la representación RSBS</html>
-label.user_preset = Preselección de usuario
-label.service_preset = Preselección del servicio
-label.run_with_preset = Ejecutar {0} con preselección
-label.view_service_doc_url = Visualizar <a href="{0}">{1}</a></html>
-label.submit_sequence = Enviar {0} {1} {2} {3} a<br/>{4}</html>
-action.by_title_param = por {0}
-label.alignment = Alineamiento
-label.secondary_structure_prediction = Predicción de la estructura secundaria
-label.sequence_database_search = Búsqueda en base de datos de secuencias
-label.analysis = Análisis
-label.protein_disorder = Desorden en la proteína 
-label.source_from_db_source = Fuentes de {0}
-label.from_msname = de {0}
-label.superpose_with = Superponer con...
-action.do = Hacer
-label.scale_label_to_column = Ajustar la etiqueta a la columna
-label.add_new_row = Añadir nuevo fila
-label.edit_label_description = Editar etiqueta/descripción
-label.hide_row = Ocultar esta fila
-label.delete_row = Borrar esta fila
-label.show_all_hidden_rows = Mostrar todas las filas ocultas
-label.export_annotation = Exportar anotación
-label.copy_consensus_sequence = Copiar secuencia de consenso
-label.helix = Hélice
-label.sheet = Hoja
-label.rna_helix = Hélice de ARN
-label.remove_annotation = Borrar anotación
-label.colour_by = Colorear por...
-label.muscle_multiple_protein_sequence_alignment = Alineamiento múltiple de secuencias de proteínas con Muscle
-label.mafft_multiple_sequence_alignment = Alineamiento múltiple de secuencias con MAFFT
-label.clustalw_multiple_sequence_alignment = Alineamiento múltiple de secuencias con ClustalW
-label.jnet_secondary_structure_prediction = Predicción de la estructura secundaria con JNet
-label.multiharmony = Multi-Harmony
-label.unable_start_web_service_analysis = No es posible iniciar el servicio web de análisis
-label.job_couldnt_be_started_check_input = El trabajo no puede arrancarse. Por favor, compruebe los parámetros de entrada y los mensajes de advertencia de la consola de Jalview.
-label.prompt_each_time = Preguntar siempre
-label.use_source = Fuente
-label.couldnt_save_project = No es posible guardar el proyecto
-label.error_whilst_saving_current_state_to = Error mientras se guardaba el estado a {0}
-label.error_whilst_loading_project_from = Error cargando el proyecto desde  {0}
-label.couldnt_load_project = No es posible cargar el proyecto
-label.pca_sequences_not_aligned = Las secuencias deben estar alineadas antes de calcular el PCA.\nPruebe a utilizar la funci\u00F3n de rellenar huecos en el men\u00FA Editar,\no cualquiera de los servicios web de alineamiento m\u00FAltiple.
-label.invalid_name_preset_exists = Nombre no válido - esta preconfiguración ya existe.
-label.invalid_name = Nombre no válido
-label.set_proxy_settings = Por favor, configure su proxy en la pestaña 'Conexiones' de la ventana de Preferencia
-label.proxy_authorization_failed = Autorización del proxy fallida
-label.internal_jalview_error = Error interno de Jalview
-label.secondary_structure_prediction_service_couldnt_be_located = No se ha podido encontrar el Servicio de Predicciónd de la Estructura Secudaria {0} en {1}.
-label.service_called_is_not_msa_service = El Servicio llamado \n{0}\nno es un \nServicio de Alineamiento M\u00FAltiple de Secuencias\!
-label.msa_service_is_unknown = El Servicio de Alineamiento Múltiple llamado {0} es desconocido
-label.service_called_is_not_seq_search_service = El Servicio llamando \n{0}\nno es un \nServicio de B\u00FAsqueda de Secuencias\!
-label.seq_search_service_is_unknown = El Servicio de Búsqueda de Sencuencias llamado {0} es desconocido
-label.feature_type = Tipo de característisca
-label.display = Representación
-label.service_url = URL del servicio
-label.copied_sequences = Secuencias copiadas
-label.cut_sequences = Cortar secuencias
-label.conservation_colour_increment = Incremento de Conservación del Color ({0})
-label.percentage_identity_thereshold = Umbral del Porcentaje de Identidad ({0})
-label.error_unsupported_owwner_user_colour_scheme = Propietario no soportado para el diálogo del Esquema Cromático del Usuario
-label.save_alignment_to_file = Guardar Alineamiento en fichero
-label.save_features_to_file = Guardar Características en un fichero
-label.save_annotation_to_file = Guardar Anotación en un fichero
-label.no_features_on_alignment = No se han encontrado características en el alineamiento
-label.save_pdb_file = Guardar fichero PDB 
-label.save_text_to_file = Guardar Texto en un fichero
-label.save_state = Guardar estado
-label.restore_state = Restaurar estado
-label.saving_jalview_project = Guardando el proyecto de Jalview {0}
-label.loading_jalview_project = Cargando el proyecto de Jalview {0}
-label.save_vamsas_document_archive = Guardar el archivo de documento Vamsas
-label.saving_vamsas_doc = Guardando el documento VAMSAS en {0}
-label.load_feature_colours = Cargar colores de características
-label.save_feature_colours = Guardar esquema cromático de características
-label.dataset_for = {0} conjunto de datos para {1}
-label.select_startup_file = Seleccionar fichero de arranque
-label.select_default_browser = Seleccionar navegador web por defecto
-label.save_tree_as_newick = Guardar árbol como fichero newick
-label.create_eps_from_tree = Crear un fichero EPS a partir de un árbol
-label.create_png_from_tree = Crear una imagen PNG a partir de un árbol
-label.save_colour_scheme = Guardar esquema cromático
-label.edit_params_for = Editar los parámetros de {0}
-label.choose_filename_for_param_file = Escoja un nombre de fichero para este fichero de parámetros
-label.save_as_html = Guardar como HTML
-label.recently_opened = Abiertos recientemente
-label.blasting_for_unidentified_sequence_jobs_running = Ejecutando BLAST de las secuencias no indentificadas - {0}  trabajos en marcha.
-label.tree_from = Árbol de {0}
-label.webservice_job_title = {0} usando {1}
-label.select_visible_region_of = seleccionada {0} región de {1}
-label.visible = Visible
-label.select_unselect_visible_regions_from = seleccionada y deseleccionadas {0} regiones de {1}
-label.visible_region_of = región visible de
-label.webservice_job_title_on = {0} usando {1} de {2}
-label.updating_vamsas_session = Actualizando sesión VAMSAS
-label.loading_file = Cargando fichero: {0}
-label.edit_params = Editar {0}
-error.not_implemented = No implementado
-error.no_such_method_as_clone1_for = No existe ese método como un clone1 de {0}
-error.null_from_clone1 = Nulo de clone1!
-error.implementation_error_sortbyfeature = Error de implementación - sortByFeature debe ser uno de FEATURE_SCORE, FEATURE_LABEL o FEATURE_DENSITY.
-error.not_yet_implemented = No se ha implementado todavía
-error.unknown_type_dna_or_pep = Tipo desconocido {0} - dna o pep son los únicos valores permitidos
-error.implementation_error_dont_know_thereshold_annotationcolourgradient = Error de implementación: no se conoce el valor umbral para el AnnotationColourGradient actual.
-error.implementation_error_embeddedpopup_not_null = Error de implementación - embeddedPopup debe ser no nulo.
-error.invalid_colour_for_mycheckbox = Color no válido para MyCheckBox
-error.implementation_error_unrecognised_render_object_for_features_type = Error de implementación: no se reconoce el objeto de representación {0} para las características de tipo {1}
-error.implementation_error_unsupported_feature_colour_object = Error de implementación: objeto de color de características no soportado.
-error.invalid_separator_parameter = Separador de parámetros no válido - debe tener longitud mayor que cero
-error.alignment_cigararray_not_implemented = Alignment(CigarArray) no se ha implementado todavía
-error.weak_sequencei_equivalence_not_yet_implemented = Equivalencia débil sequenceI no se ha implementado todavía.
-error.implementation_error_can_only_make_alignmnet_from_cigararray = Error de implementación - sólo se puede construir un vista de alineamiento a partir de una CigarArray de secuencias.
-error.empty_view_cannot_be_updated = una vista vacía no se puede actualizar.
-error.mismatch_between_number_of_sequences_in_block = No hay coincidencia entre el número de secuencias en el bloque {0} ({1}) y la vista original ({2})
-error.padding_not_yet_implemented = El relleno no se ha implementado todavía
-error.mismatch_between_visible_blocks_to_update_and_number_of_contigs_in_view = No hay coincidencia entre los bloques visibles para actualizar y el número de contigs en la vista (contigs=0,blocks={0})
-error.unknown_seq_cigar_operation = Operación SeqCigar {0} desconocida
-error.implementation_bug_parse_cigar_string = Bug de implementación en parseCigarString
-error.implementation_error_invalid_operation_string = Error de implementación. Cadena de operación no válida.
-error.invalid_range_string = Rango de la cadena no válido (debe ser cero o un número positivo)
-error.implementation_error_delete_range_out_of_bounds = Error de implementación: deleteRange fuera de rango: el comienzo debe ser cero o positivo y menor que el final.
-error.implementation_error = Error de implementación
-error.implementation_error_unknown_operation = ¡Error de implementación! Operación desconocida {0}
-error.implementation_error_unexpected_null_from_get_sequence_and_deletions = Error de implementación - valor nulo no esperado en getSequenceAndDeletions
-error.implementation_error_set_seq_null = Error de implementación - _setSeq(null,...)
-error.implementation_error_s = Error de implementación: _s= {0}
-error.implementation_error_seqcigar_possible = SeqCigar: posible error de implementación: la secuencia es más larga de el conjunto de datos de la secuencia
-error.implmentation_bug_seq_null = Bug de implementación. Seq nula
-error.implementation_bug_cigar_operation_list_range_list = Bug de implementación: Cigar Operation list!= range list
-error.not_yet_implemented_cigar_object_from_cigar_string = No implementado todavía: construcción de un objeto Cigar desde una cadena y una secuencia con huecos.
-error.implementation_bug_cigar_operation = Bug de implementación. La operación Cigar {0} {1} no es ni {2}, ni {3} ni {4}.
-error.implementation_error_for_new_cigar = Error de implementación en new Cigar(SequenceI)
-error.implementation_error_cigar_seq_no_operations = Error de implementación: la {0}a secuencia Cigar no tiene operaciones.
-error.implementation_error_jmol_getting_data = Error de implementación - Jmol parece estar todavía intentando recuperar sus datos - informe de ello en http://issues.jalview.org/browse/JAL-1016
-error.implementation_error_no_pdbentry_from_index = Error de implementación - no existe la correspondiente entrada pdb (para el índice {0}) para añadir el mapeo de secuencias a
-error.jmol_version_not_compatible_with_jalview_version = La versión {0} de Jmol no es compatible con esta versión de Jalview. Informe de este problema en http://issues.jalview.org
-error.not_implemented_remove = Borrar: no implementado
-error.not_implemented_clone = Clonar: no implementado
-error.implementation_error_chimera_getting_data = Error de implementación - Chimera parece estar todavía intentando recuperar sus datos - informe de ello en http://issues.jalview.org/browse/JAL-1016
-error.call_setprogressbar_before_registering_handler = llamada a setProgressBar antes de registrar el manejador de la barra de estado
-label.cancelled_params = {0} cancelado
-error.implementation_error_cannot_show_view_alignment_frame = Error de implementación: no es posible mostrar una vista de otro alineamiento en un AlignFrame.
-error.implementation_error_dont_know_about_thereshold_setting = Error de implementación: no se conoce la configuración del umbral para el AnnotationColourGradient actual.
-error.eps_generation_not_implemented = La generación de EPS no se ha implementado todavía
-error.png_generation_not_implemented = La generación de PNG no se ha implementado todavía
-error.try_join_vamsas_session_another = Tratando de establecer una sesión VAMSAS cuando ya había otra conectada
-error.invalid_vamsas_session_id = Identificador de sesión VAMSAS no válido
-error.implementation_error_cannot_create_groovyshell = Error de implementación:no se puede crear groovyShell sin Groovy en el classpath
-label.groovy_support_failed = El soporte Groovy de Jalview ha fallado
-label.couldnt_create_groovy_shell = No es posible crear el shell de Groovy. Compruebe el fichero de log para conocer los detalles.
-error.unsupported_version_calcIdparam = Versión no soportada de {0}
-error.implementation_error_cant_reorder_tree = Error de implementación: no es posible reordenar este árbol. No DefaultMutableTreeNode.
-error.invalid_value_for_option = Valor no válido de {0} para la opción {1}
-error.implementation_error_cannot_import_vamsas_doc = Error de implementación - todavía no es posible importar el documento VAMSAS existente en una sesión existente.
-label.vamsas_doc_couldnt_be_opened_as_new_session = El documento VAMSAS no ha podido abrirse como una nueva sesión. Por favor, escoja otra.
-error.implementation_error_vamsas_operation_not_init = ¡Error de implementación! Operaciones VAMSAS cuando el cliente no estaba inicializado ni conectado
-error.jalview_no_connected_vamsas_session = Jalview está conectado a una sesión VAMSAS
-error.implementation_error_cannot_recover_vamsas_object_mappings = Error de implementación: no es posible recuperar los mapeos del objeto VAMSAS - no se ha hecho ningún backup 
-error.setstatus_called_non_existent_job_pane = se lllamado a setStatus para el panel de trabajo {0} no existente
-error.implementation_error_cannot_find_marshaller_for_param_set =Error de implementación: no puede encontrar un marshaller para el conjunto de parámetros
-error.implementation_error_old_jalview_object_not_bound =Error de implementación: ¡el objeto Jalview antiguo no está enlazado! ({0})
-error.implementation_error_vamsas_doc_class_should_bind_to_type = Error de implementación: la clase de documento VAMSAS {0} debe enlazar a {1} (pero se ha encontrado que lo está a {2})
-error.implementation_error_jalview_class_should_bind_to_type = Error de implementación: la clase Jalview {0} debe enlazar a {1} (pero se ha encontrado que lo está a {2})
-error.invalid_vamsas_rangetype_cannot_resolve_lists = RangeType VAMSAS no válido - ¡no es posible resolver ambas listas de Pos y Seg con los valores elegidos!
-error.implementation_error_maplist_is_null = Error de implementación. MapList es nulo en initMapType.
-error.implementation_error_cannot_have_null_alignment = Error de implementación: no es posible tener una clave nula en el alineamiento
-error.implementation_error_null_fileparse = Error de implementación. FileParse nulo en el construictor de copia
-error.implementation_error_cannot_map_alignment_sequences = Error de implementación: no es posible maper un alineamiento de secuencias desde distintos conjuntos de datos en un único alineamiento en el documento VAMSAS.
-error.implementation_error_cannot_duplicate_colour_scheme = Error grave de implementación: no es posible duplicar el esquema cromático {0}
-error.implementation_error_structure_selection_manager_null = Error de implementación. El contexto structure selection manager's es nulo
-exception.ssm_context_is_null = El contexto SSM es nulo
-error.idstring_seqstrings_only_one_per_sequence = idstrings y seqstrings contienen una cadena por cada secuencia
-error.cannot_have_mixed_length_replacement_vectors = No es posible tener vectores de reemplazo de distinta longitud. El vector de reemplazo para {0} es de {1} cadenas de largo, pero se ha considerado ya como un vector de longitud {2}.
-error.cannot_have_zero_length_vector_replacement_strings = No es posible tener un vector de cadenas de reemplazo de longitud cero - debe ser uno o n.
-error.implementation_error_multiple_single_sequence_prediction_jobs_not_supported = ¡Error de implementación! Todavía no se soportan varios trabajos de predicción asociados a una única secuencia.
-error.implementation_error_invalid_msa_index_for_job = ¡Error de implementación! Valor msaIndex no válido para JPredJob en el objeto de entrada MSA padre!
-error.implementation_error_startjob_called = Error de implementación - StartJob(JpredJob) invocado en {0}
-error.multiple_jnet_subjob_merge_not_implemented = Todavía no se han implementado varios subtrabajos JNet conjuntos.
-label.job_never_ran = El trabajo nunca se ejecutó - entrada devuelta al usuario.
-error.implementation_error_minlen_must_be_greater_zero = Error de implementación: minlen debe ser cero o más
-error.implementation_error_msawbjob_called = Error de implementación - StartJob(MsaWSJob) invocado en un WSJobInstance {0}
-error.implementation_error_cannot_attach_ws_menu_entry = Error de implementación: ¡no es posible adjunto una WS Menu Entry sin una referencia a un manejador del servicio!
-error.parameter_migration_not_implemented_yet = La migración de parámetros no se ha implementado todavía
-error.implementation_error_cannot_set_jaba_option = Error de implementación: no es posible establecer el valor de Jaba Option a un valor fuera de su rango permitido
-error.implementation_error_valuetype_doesnt_support_jabaws_type = Error de implementación: jalview.ws.params.ValueConstrainI.ValueType no soporta el tipo JABAWS: {0}
-error.cannot_create_jabaws_param_set = No es posible crear un JabaWSParamSet con parámetros no JabaWS
-error.cannot_set_arguments_to_jabaws_param_set = No es posible establecer argumentos en JabaWSParamSet que no sean argumentos JabaWS 
-error.implementation_error_runner_config_not_available = Error de implementación: Runner Config no está disponible para un servicio JABAWS de tipo  {0} ({1})
-error.implementation_error_cannot_handle_jaba_param = Error de implementación: no es posible manejar el objeto del parámetro Jaba {0}
-error.implementation_error_attempt_to_delete_service_preset = Error de implementación: intento de borrar un servicio preestablecido
-error.implementation_error_cannot_locate_oldname_presetname = Error de implementación: no es posible localizar ni el nombre antiguo ({0}) ni el presetName ({1} en el almacén de datos.
-error.implementation_error_jabaws_param_set_only_handled_by = Error de implementación: JabaWsParamSets sólo puede ser manejado por JabaParamStore
-error.cannot_set_source_file_for = No es posible establecer el fichero fuente para {0}
-error.mismatch_service_instance_preset = Posible desajuste entre la instancia del servicio y la prestablecida
-error.cannot_set_params_for_ws_preset = No es posible establecer los parámetros para el servicio web JABA presestablecido
-error.implementation_error_can_only_instantiate_jaba_param_sets = Error de implementación: sólo se puede instanciar conjuntos de parámetros Jaba
-error.no_aacon_service_found = No se ha encontrado ningún servicio AACon 
-error.implementation_error_couldnt_copy_value_constraint = Error de implementación: ¡no se puede copiar ValueConstrain!
-error.couldnt_encode_as_utf8 = No se ha podido codificar {0} como UTF-8.
-error.tree_inputtype_not_yet_implemented = No se ha implementado todavía el árbol como InputType
-error.implementation_error_need_to_have_httpresponse = Error de implementación: se necesita tener un HttpResponse que procesar
-error.dbrefsource_implementation_exception = Excepción de implementación DBRefSource
-error.implementation_error_dbinstance_must_implement_interface = Error de Implementación- getDbInstances debe recibir una clase que implemente jalview.ws.seqfetcher.DbSourceProxy (recibió {0})
-error.implementation_error_must_init_dbsources =Error de implementación. Debe inicializar dbSources
-label.view_controller_toggled_marked = {0} {1} columnas {2} conteniendo características del tipo  {3} en {4} secuencia(s)
-label.toggled = Invertida
-label.marked = Marcada
-label.not = no
-label.no_feature_of_type_found = No se han encontrado características del tipo {0}.
-label.submission_params = Envío {0}
-label.empty_alignment_job = Trabajo de alineamiento vacío
-label.add_new_sbrs_service = Añadir un nuevo SBRS
-label.edit_sbrs_entry = Editar entrada SBRS
-label.pca_recalculating = Recalculando PCA
-label.pca_calculating = Calculando PCA
-label.select_foreground_colour = Escoger color del primer plano
-label.select_colour_for_text = Seleccione el color del texto
-label.adjunst_foreground_text_colour_thereshold = Ajustar el umbral del color del texto en primer plano
-label.select_subtree_colour = Seleccioanr el color del sub-árbol
-label.create_new_sequence_features = Crear nueva(s) característica(s) de secuencia
-label.amend_delete_features = Arrelgar/Borrar características de {0}
-exception.out_of_bounds_for_file = Fuera de rango para el fichero: i={0}, Buffer final: i0={1} iend={2}
-exception.null_string_given_to_regex_search = Cadena nula enviada a Regex.search
-exception.null_string_like_given_to_regex_search = StringLike nula enviada a Regex.search
-exception.null_string_given_to_regex_reverse_search = Cadena nula enviada a Regex.reverseSearch
-exception.null_string_like_given_to_regex_reverse_search = StringLike nula enviada a Regex.reverseSearch
-exception.null_string_like_given_to_regex_search_from = Cadena nula enviada a Regex.searchFrom
-exception.null_string_like_given_to_regex_search_region = Cadena nula enviada a  Regex.searchRegion
-exception.replace_null_regex_pointer = Reemplazador tiene un puntero Regex nulo
-exception.bad_pattern_to_regex_perl_code = patrón erróneo en Regex.perlCode: {0}
-exception.no_stub_implementation_for_interface = No existe una implementación del stub para la interfaz: {0}
-exception.cannot_set_endpoint_address_unknown_port = No es posible estabelcer la dirección de punto final para el puerto desconocido {0}
-exception.querying_matching_opening_parenthesis_for_non_closing_parenthesis = Consultando la coincidencia de apertura de paréntesis para paréntesis sin cerrar (?)
-exception.mismatched_unseen_closing_char = Discordancia (no vista) en el carácter de cierre {0}
-exception.mismatched_closing_char = Carácter de cierre discordante {0}
-exception.mismatched_opening_char = Carácter de apertura discordante {0} en {1}
-exception.invalid_datasource_couldnt_obtain_reader = Fuente de datos no válida. No es posible obtener el Reader
-exception.index_value_not_in_range = {0}: el valor del índice {1} en se encuentra en el rango [0..{2}]
-exception.unterminated_cigar_string = Cadena cigar sin terminar
-exception.unexpected_operation_cigar_string_pos = Operación no esperada {0} en una cadena cigar (posición {1} en {2})
-exception.couldnt_parse_responde_from_annotated3d_server = No es posible parsear la respuesta procedente del servidor Annotate3d 
-exception.application_test_npe = Prueba de aplicación: lanzando un NullPointerException que debe aparecer en la consola
-exception.overwriting_vamsas_id_binding = Sobreescribiendo la asociación al VAMSAS id
-exception.overwriting_jalview_id_binding = Sobreescribiendo la asociación al Jalview id
-error.implementation_error_unknown_file_format_string = Error de implementación: cadena de formato de fichero desconocido
-exception.failed_to_resolve_gzip_stream = Fallo al resolver el flujo GZIP 
-exception.problem_opening_file_also_tried = Problema abriendo {0} (también se intentó {1}) : {2}
-exception.problem_opening_file = Problema abriendo {0} : {1}
-exception.failed_to_read_data_from_source = Error al leer datos de la fuente: {0}
-exception.no_init_source_stream = Flujo de fuente sin inicializar
-exception.invalid_source_stream = Flujo de fuente no válida: {0}
-error.implementation_error_reset_called_for_invalid_source = Error de implementación: se ha invocado un Reset en una fuente no válida.
-exception.number_of_residues_in_query_sequence_differ_from_prediction = El n\u00FAmero de residuos en la supuesta secuencia consultada {0} ({1}\n{2})\ndifiere del n\u00FAmero de sitios de predicci\u00F3n en la predicci\u00F3n ({3})
-label.mapped = mapeado
-exception.jpredconcide_entry_has_unexpected_number_of_columns = JPredConcise: La entrada ({0}) tiene un número inesperado de columnas
-exception.couldnt_parse_concise_annotation_for_prediction = No es posible parsear la anotaci\u00F3n concisa para el perfil de predicci\u00F3n.\n{0}
-exception.newfile = Fichero Newick\: {0}\n
-label.no_tree_read_in = No hay lectura de árbol en
-exception.rnaml_couldnt_access_datasource = No ha sido posible acceder la fuente de datos ({0})
-exception.ranml_couldnt_process_data = No ha sido posible procesar los datos como un fichero RNAML ({0})
-exception.ranml_invalid_file = Fichero RNAML no válido ({0})
-exception.ranml_problem_parsing_data = Problema parseando los datos como RNAML ({0})
-exception.pfam_no_sequences_found = No se han encontrado secuencias (entrada PFAM)
-exception.stockholm_invalid_format = Este fichero no es tiene un formato STOCKHOLM válido: la primera línea no contiene '# STOCKHOLM'
-exception.couldnt_parse_sequence_line = No es posible parse la línea de secuencia: {0}
-exception.error_parsing_line = Error parseando {0}
-exception.unknown_annotation_detected = Anotación desconocida detectada: {0} {1}
-exception.couldnt_store_sequence_mappings = No es posible almacenar los mapeos de secuencia para {0}
-exception.matrix_too_many_iteration = Demasiadas iteraciones en {0} (el máximo es {1})
-exception.browser_not_found = Excepción al buscar el navegador: {0}
-exception.browser_unable_to_locate = Imposible encontrar el navegador: {0}
-exception.invocation_target_exception_creating_aedesc = InvocationTargetException mientras se creaba AEDesc: {0}
-exception.illegal_access_building_apple_evt= IllegalAccessException mientras se construía AppleEvent: {0}
-exception.instantiation_creating_aedesc = InstantiationException mientras se creaba AEDesc: {0}
-exception.unable_to_launch_url = Imposible lanzar la URL: {0}
-exception.unable_to_create_internet_config = Imposible crear una instancia de configuración de Internet: {0}
-exception.invocation_target_calling_url = InvocationTargetException mientras se invocaba openURL: {0}
-exception.illegal_access_calling_url = IllegalAccessException mientras se invocaba openURL: {0}
-exception.interrupted_launching_browser = InterruptedException mientras se lanzaba el navegador: {0}
-exception.das_source_doesnt_support_sequence_command = La fuente {0} no soporta el comando sequence.
-exception.invalid_das_source = Fuente DAS no válida: {0}
-exception.ebiembl_retrieval_failed_on = La recuperación de datos EBI EMBL XML ha fallado en {0}:{1}
-label.no_embl_record_found = # No se ha recuperado ningún registro EMBL de {0}:{1}
-label.embl_successfully_parsed = # Se han parseado con éxito las consultas {0} en un alineamiento
-exception.no_pdb_records_for_chain = No se han encontrado registros {0} para la cadena {1}
-exception.unexpected_handling_rnaml_translation_for_pdb = Excepcion inesperada cuando se traducían a RNAML los datos PDB
-exception.couldnt_recover_sequence_properties_for_alignment = No es posible recuperar las propiedades de la secuencia para el alineamiento
-exception.unknown_format_for_file = Formato desconocido {0} para el fichero \: \n{1}
-label.remove_gaps = Eliminar huecos
-exception.couldnt_recover_sequence_props_for_jnet_query = No ha sido posible recuperar las propiedades de la secuencia para la secuencia JNet Query!
-exception.server_timeout_try_later = Tiempo de conexi\u00F3n ha expirado - int\u00E9ntelo de nuevo m\u00E1s tarde\n
-exception.web_service_returned_null_try_later= El servidor {0} ha devuelto un objeto nulo, por lo que probablemente no se haya podido contactar con él. Inténtelo de nuevo más tarde.
-exception.cannot_contact_service_endpoint_at = No es posible contactar por el punto de acceso al servicio en {0}
-error.implementation_error_cannot_find_service_url_in_given_set = Error de implementación: no es posible encontrar la URL del servicio en el conjunto de URL proporcionado
-error.implementation_error_cannot_find_service_url_in_given_set_param_store = Error de implementación: la URL del servicio en el conjunto de URL  para este almacén de parámetros del servicio({0})
-exception.jobsubmission_invalid_params_set = Conjunto de parámetros no válido. Comprueba la implementación de Jalview
-exception.notvaliddata_group_contains_less_than_min_seqs = El grupo contiene menos de {0} secuencias.
-exception.outofmemory_loading_pdb_file = Sin menoria al cargar el fichero PDB
-exception.eps_coudnt_write_output_file = No es posible escribir el fichero de salida: {0}
-exception.eps_method_not_supported = Método actualmente no suportado por la versión {0} de EpsGraphics2D
-exception.eps_unable_to_get_inverse_matrix = Imposible obtener la inversa de la matrix: {0}
-warn.job_cannot_be_cancelled_close_window = Este trabajo no se puede cancelar.\nSimplemente, cierre la ventana.
-warn.service_not_supported = ¡Servicio no soportado!
-warn.input_is_too_big = ¡El tamaño de la entrada es demasiado grande!
-warn.invalid_job_param_set = ¡Conjunto de parámetros del trabajo no válido!
-info.job_couldnt_be_run_server_doesnt_support_program = No es posible ejecutar el trabajo porque el servidor no soporta este programa.\n{0}
-info.job_couldnt_be_run_exceeded_hard_limit = No es posible ejecutar el trabajo porque excede los l\u00EDmites del servidor.\n{0}
-info.job_couldnt_be_run_incorrect_param_setting = No es posible ejecutar el trabjao porque el servidor no soporta algunos de los par\u00E1metros.\n{0}\nPor favor, aseg\u00FArese de que ha usado los par\u00E1metros adecuados para este servicio\n
-info.no_jobs_ran = No se ha ejecutado ningún trabajo
-info.failed_to_submit_prediction = Error al enviar la predicci\u00F3n\:\n{0} {1}
-info.invalid_jnet_job_result_data ={0}\n{1}\nResultados del trabajo JNet no v\u00E1lidos\!\n{2}
-info.failed_to_submit_sequences_for_alignment = Error al enviar la secuencias para el alineamiento.\nLo m\u00E1s probable es que haya un problema en el servidor.\nSimplemente, cierre la ventana\n
-info.alignment_object_method_notes = \nNotas sobre los m\u00E9todos del objeto alineamiento\n
-info.server_exception = \n{0} Excepci\u00F3n del servidor\!\n{1}
-status.processing_commandline_args = Procesando los argumentos de la línea de comandos...
-status.das_features_being_retrived = Recuperando características DAS...
-status.searching_for_sequences_from = Buscando secuencias en {0}
-status.finished_searching_for_sequences_from = Finalizada la búsqueda de secuencias en {0}
-label.eps_file = Fichero EPS
-label.png_image = Imagen PNG
-status.saving_file = Guardando {0}
-status.export_complete = Exportación completada.
-status.fetching_pdb = Recuperando PDB {0}
-status.refreshing_news = Refrescando noticias
-status.importing_vamsas_session_from = Importando sesión VAMSAS de {0}
-status.opening_params = Abriendo {0}
-status.waiting_sequence_database_fetchers_init = Esperando la inicialización de los recuperadores de bases de datos de secuencias
-status.init_sequence_database_fetchers = Inicializando recuperadores de bases de datos de secuencias
-status.fetching_sequence_queries_from = Recuperando {0} consultas de secuencias de {1}
-status.finshed_querying = Consulta finalizada
-status.parsing_results = Parseando resultados.
-status.processing = Procesando...
-status.refreshing_web_service_menus = Refrescando los menús de servicios web
-status.collecting_job_results = Recolectando los resultados de los trabajos.
-status.fetching_das_sequence_features = Recuperando las características DAS de las secuencias
-status.no_das_sources_active = No existe ninguna fuente DAS activa
-status.das_feature_fetching_cancelled = Recuperación de características DAS cancelada
-status.das_feature_fetching_complete = Recuperación de características DAS completada
-status.fetching_db_refs = Recuperando db refs
-label.font_doesnt_have_letters_defined = La fuente no tiene letras definidas\npor lo que no puede emplease\ncon datos de alineamientos
-label.font_too_small = Tamaño de la letra es demasiado pequeña
-label.error_loading_file_params = Error cargando el fichero {0}
-label.error_loading_jalview_file = Error cargando el fichero Jalview 
-warn.out_of_memory_when_action = Sin memoria al {0}\!\!\nConsulte los ficheros de ayuda para ajustar la memoria de la m\u00E1quina virtual de Java.
-warn.out_of_memory_loading_file = Sin memoria al cargar el fichero {0}\!\!\nConsulte los ficheros de ayuda para ajustar la memoria de la m\u00E1quina virtual de Java.
-label.out_of_memory = Sin memoria
-label.invalid_id_column_width = Identificador de anchura de columna no válido
-warn.user_defined_width_requirements = La anchura definida por el usuario para la \nlas columnas de anotaci\u00F3n e identificador de secuencias\nen figuras exportadas debe ser\na, al menos, de 12 p\u00EDxels
-label.couldnt_create_sequence_fetcher = No es posible crear SequenceFetcher
-warn.couldnt_create_sequence_fetcher_client = No es posible crear el cliente de recuperador de secuencias. Comprueba el fichero de log para más detalles.
-warn.server_didnt_pass_validation = El servicio no ha pasado la validaci\u00F3n.\nCompruebe la consola de Jalview para m\u00E1s detalles.
-warn.url_must_contain = La URL de la secuencia debe contener $SEQUENCE_ID$ o un regex $SEQUENCE_ID=/<regex>/=$
-info.validate_jabaws_server = \u00BFValidar el servidor JabaWS?\n(Consulte la consola de salida para obtener los resultados)
-label.test_server = ¿Probar servidor?
-info.you_want_jalview_to_find_uniprot_accessions = \u00BFDesea que Jalview encuentre\nUniprot Accession ids para los nombres de secuencias dados?
-label.find_uniprot_accession_ids = Buscar Uniprot Accession Ids
-label.new_sequence_fetcher = Añadir recuperador de secuencias
-label.additional_sequence_fetcher = Recuperador de secuencia adicional
-label.select_database_retrieval_source = Seleccionar fuente de recuperación de bases de datos
-label.overwrite_existing_file = ¿Sobreescribir el fichero existente?
-label.file_already_exists = El fichero existe
-label.edit_jabaws_url = Editar JABAWS URL
-label.add_jabaws_url = Añadir nueva JABAWS URL
-label.news_from_jalview = Noticias de http://www.jalview.org
-label.cut_paste_alignmen_file = Cortar & Pegar fichero de alineamiento
-label.enter_redundancy_thereshold = Introducir el umbral de redundancia
-label.select_dark_light_set_thereshold = <i>Seleccionar un color oscuro y un color claro para el texto y establecer el umbral en que<br>cambiar entre colores, basándose en el color de fondo</i>
-label.select_feature_colour = Seleccionar color de las características
-label.ignore_gaps_consensus = Ignorar huecos en el consenso
-label.show_group_histogram = Mostrar histograma de grupo
-label.show_group_logo = Mostrar logo de grupo
-label.normalise_group_logo = Normalizar el logo de grupo
-label.show_histogram = Mostrar histograma
-label.show_logo = Mostrar logo
-label.normalise_logo = Normalizar logo
-label.no_colour_selection_in_scheme = Por favor, seleccione un color antes de aplicar el esquema cromático
-label.no_colour_selection_warn = Error guardando el esquema cromático
\ No newline at end of file
index 41d9f27..8033210 100644 (file)
@@ -1,4 +1,4 @@
-Clazz.declarePackage ("netscape.javascript");\r
-Clazz.load (["java.lang.Exception"], "netscape.javascript.JSException", null, function () {\r
-c$ = Clazz.declareType (netscape.javascript, "JSException", Exception);\r
-});\r
+Clazz.declarePackage ("netscape.javascript");
+Clazz.load (["java.lang.Exception"], "netscape.javascript.JSException", null, function () {
+c$ = Clazz.declareType (netscape.javascript, "JSException", Exception);
+});
index 661d426..e43f247 100644 (file)
@@ -1,19 +1,19 @@
-Clazz.declarePackage ("netscape.javascript");\r
-c$ = Clazz.declareType (netscape.javascript, "JSObject");\r
-c$.getWindow = Clazz.defineMethod (c$, "getWindow", \r
-function (jvlite) {\r
-{\r
-return window;\r
-}}, "jalview.bin.JalviewLite");\r
-Clazz.defineMethod (c$, "call", \r
-function (func, params) {\r
-{\r
-alert("call " + func);\r
-func.apply(null, params);\r
-}}, "~S,~A");\r
-Clazz.defineMethod (c$, "eval", \r
-function (string) {\r
-{\r
-alert("evval " + string);\r
-}return this.eval (string);\r
-}, "~S");\r
+Clazz.declarePackage ("netscape.javascript");
+c$ = Clazz.declareType (netscape.javascript, "JSObject");
+c$.getWindow = Clazz.defineMethod (c$, "getWindow", 
+function (jvlite) {
+{
+return window;
+}}, "jalview.bin.JalviewLite");
+Clazz.defineMethod (c$, "call", 
+function (func, params) {
+{
+alert("call " + func);
+func.apply(null, params);
+}}, "~S,~A");
+Clazz.defineMethod (c$, "eval", 
+function (string) {
+{
+alert("evval " + string);
+}return this.eval (string);
+}, "~S");
index d15a01d..b4a3c0f 100644 (file)
@@ -1,8 +1,8 @@
-Clazz.declarePackage ("org.exolab.castor.mapping");\r
-c$ = Clazz.declareType (org.exolab.castor.mapping, "Mapping");\r
-Clazz.makeConstructor (c$, \r
-function (classLoader) {\r
-}, "ClassLoader");\r
-Clazz.defineMethod (c$, "loadMapping", \r
-function (url) {\r
-}, "java.net.URL");\r
+Clazz.declarePackage ("org.exolab.castor.mapping");
+c$ = Clazz.declareType (org.exolab.castor.mapping, "Mapping");
+Clazz.makeConstructor (c$, 
+function (classLoader) {
+}, "ClassLoader");
+Clazz.defineMethod (c$, "loadMapping", 
+function (url) {
+}, "java.net.URL");
index 09f0175..70aff82 100644 (file)
@@ -1,24 +1,24 @@
-Clazz.declarePackage ("org.exolab.castor.xml");\r
-c$ = Clazz.declareType (org.exolab.castor.xml, "Unmarshaller");\r
-Clazz.makeConstructor (c$, \r
-function (record) {\r
-}, "~O");\r
-Clazz.defineMethod (c$, "setIgnoreExtraElements", \r
-function (b) {\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setIgnoreExtraAttributes", \r
-function (b) {\r
-}, "~B");\r
-Clazz.defineMethod (c$, "setMapping", \r
-function (map) {\r
-}, "org.exolab.castor.mapping.Mapping");\r
-Clazz.defineMethod (c$, "setLogWriter", \r
-function (printWriter) {\r
-}, "java.io.PrintWriter");\r
-Clazz.defineMethod (c$, "unmarshal", \r
-function (file) {\r
-return null;\r
-}, "java.io.Reader");\r
-Clazz.defineMethod (c$, "setDebug", \r
-function (debugEnabled) {\r
-}, "~B");\r
+Clazz.declarePackage ("org.exolab.castor.xml");
+c$ = Clazz.declareType (org.exolab.castor.xml, "Unmarshaller");
+Clazz.makeConstructor (c$, 
+function (record) {
+}, "~O");
+Clazz.defineMethod (c$, "setIgnoreExtraElements", 
+function (b) {
+}, "~B");
+Clazz.defineMethod (c$, "setIgnoreExtraAttributes", 
+function (b) {
+}, "~B");
+Clazz.defineMethod (c$, "setMapping", 
+function (map) {
+}, "org.exolab.castor.mapping.Mapping");
+Clazz.defineMethod (c$, "setLogWriter", 
+function (printWriter) {
+}, "java.io.PrintWriter");
+Clazz.defineMethod (c$, "unmarshal", 
+function (file) {
+return null;
+}, "java.io.Reader");
+Clazz.defineMethod (c$, "setDebug", 
+function (debugEnabled) {
+}, "~B");
index 42c1406..078e834 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("org.jmol.viewer");\r
-c$ = Clazz.declareType (org.jmol.viewer, "Viewer");\r
+Clazz.declarePackage ("org.jmol.viewer");
+c$ = Clazz.declareType (org.jmol.viewer, "Viewer");
diff --git a/bin/swingjs/JSEvent.js b/bin/swingjs/JSEvent.js
deleted file mode 100644 (file)
index 35812e3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Clazz.declarePackage ("swingjs");\r
-Clazz.load (["java.awt.event.InvocationEvent"], "swingjs.JSEvent", null, function () {\r
-c$ = Clazz.declareType (swingjs, "JSEvent", java.awt.event.InvocationEvent);\r
-});\r
index 5c12398..92f41fb 100644 (file)
@@ -1,49 +1,49 @@
-Clazz.declarePackage ("swingjs");\r
-Clazz.load (["java.lang.Thread", "swingjs.api.JSFunction"], "swingjs.JSThread", null, function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.isJS = false;\r
-Clazz.instantialize (this, arguments);\r
-}, swingjs, "JSThread", Thread, swingjs.api.JSFunction);\r
-Clazz.makeConstructor (c$, \r
-function (group, name) {\r
-Clazz.superConstructor (this, swingjs.JSThread, [group, name]);\r
-{\r
-this.isJS = true;\r
-}}, "ThreadGroup,~S");\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-this.run1 (0);\r
-});\r
-Clazz.defineMethod (c$, "start", \r
-function () {\r
-{\r
-swingjs.JSToolkit.setTimeout(this, 1, 0);\r
-}});\r
-Clazz.defineMethod (c$, "sleepAndReturn", \r
-function (delay, state) {\r
-if (!this.isJS) {\r
-Thread.sleep (delay);\r
-return false;\r
-}var me = this;\r
-var r = ((Clazz.isClassDefined ("swingjs.JSThread$1") ? 0 : swingjs.JSThread.$JSThread$1$ ()), Clazz.innerTypeInstance (swingjs.JSThread$1, this, Clazz.cloneFinals ("me", me, "state", state)));\r
-{\r
-setTimeout(\r
-function() {java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(new java.awt.event.InvocationEvent(me, r))},\r
-delay\r
-);\r
-}return true;\r
-}, "~N,~N");\r
-c$.$JSThread$1$ = function () {\r
-Clazz.pu$h ();\r
-c$ = Clazz.declareAnonymous (swingjs, "JSThread$1", null, Runnable);\r
-Clazz.overrideMethod (c$, "run", \r
-function () {\r
-this.f$.me.run1 (this.f$.state);\r
-});\r
-c$ = Clazz.p0p ();\r
-};\r
-Clazz.defineStatics (c$,\r
-"INIT", 0,\r
-"LOOP", 1,\r
-"DONE", 2);\r
-});\r
+Clazz.declarePackage ("swingjs");
+Clazz.load (["java.lang.Thread", "swingjs.api.JSFunction"], "swingjs.JSThread", null, function () {
+c$ = Clazz.decorateAsClass (function () {
+this.isJS = false;
+Clazz.instantialize (this, arguments);
+}, swingjs, "JSThread", Thread, swingjs.api.JSFunction);
+Clazz.makeConstructor (c$, 
+function (group, name) {
+Clazz.superConstructor (this, swingjs.JSThread, [group, name]);
+{
+this.isJS = true;
+}}, "ThreadGroup,~S");
+Clazz.overrideMethod (c$, "run", 
+function () {
+this.run1 (0);
+});
+Clazz.defineMethod (c$, "start", 
+function () {
+{
+swingjs.JSToolkit.setTimeout(this, 1, 0);
+}});
+Clazz.defineMethod (c$, "sleepAndReturn", 
+function (delay, state) {
+if (!this.isJS) {
+Thread.sleep (delay);
+return false;
+}var me = this;
+var r = ((Clazz.isClassDefined ("swingjs.JSThread$1") ? 0 : swingjs.JSThread.$JSThread$1$ ()), Clazz.innerTypeInstance (swingjs.JSThread$1, this, Clazz.cloneFinals ("me", me, "state", state)));
+{
+setTimeout(
+function() {java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(new java.awt.event.InvocationEvent(me, r))},
+delay
+);
+}return true;
+}, "~N,~N");
+c$.$JSThread$1$ = function () {
+Clazz.pu$h ();
+c$ = Clazz.declareAnonymous (swingjs, "JSThread$1", null, Runnable);
+Clazz.overrideMethod (c$, "run", 
+function () {
+this.f$.me.run1 (this.f$.state);
+});
+c$ = Clazz.p0p ();
+};
+Clazz.defineStatics (c$,
+"INIT", 0,
+"LOOP", 1,
+"DONE", 2);
+});
index f518093..ad28942 100644 (file)
@@ -1,58 +1,58 @@
-Clazz.declarePackage ("swingjs.api");\r
-c$ = Clazz.declareType (swingjs.api, "DOMNode");\r
-c$.createElement = Clazz.defineMethod (c$, "createElement", \r
-function (key, id) {\r
-var obj = null;\r
-{\r
-obj = document.createElement(key);\r
-obj.id = id;\r
-}return obj;\r
-}, "~S,~S");\r
-c$.getParent = Clazz.defineMethod (c$, "getParent", \r
-function (obj) {\r
-{\r
-return obj.parentNode;\r
-}}, "swingjs.api.DOMNode");\r
-c$.remove = Clazz.defineMethod (c$, "remove", \r
-function (obj) {\r
-{\r
-try {\r
-var p = obj.parentNode;\r
-p.removeNode(obj);\r
-} catch(e) {};\r
-return p;\r
-}}, "swingjs.api.DOMNode");\r
-c$.add = Clazz.defineMethod (c$, "add", \r
-function (parent, child) {\r
-{\r
-parent && parent.appendChild(child);\r
-}}, "swingjs.api.DOMNode,swingjs.api.DOMNode");\r
-c$.getAttr = Clazz.defineMethod (c$, "getAttr", \r
-function (obj, attr) {\r
-{\r
-if (obj)return obj[attr];\r
-}}, "swingjs.api.DOMNode,~S");\r
-Clazz.defineMethod (c$, "getStyle", \r
-function (style) {\r
-{\r
-if (obj)return obj.style[style];\r
-}}, "~S");\r
-c$.setAttr = Clazz.defineMethod (c$, "setAttr", \r
-function (obj, attr, val) {\r
-{\r
-obj[attr] = (val == "TRUE" ? true : val);\r
-}return obj;\r
-}, "swingjs.api.DOMNode,~S,~O");\r
-c$.setStyles = Clazz.defineMethod (c$, "setStyles", \r
-function (obj, attr) {\r
-{\r
-for (var i = 0; i < attr.length;) {\r
-//System.out.println(["DOMNode.setStyles ",attr[i],attr[i+1]])\r
-;\r
-obj.style[attr[i++]] = attr[i++]; }\r
-}return obj;\r
-}, "swingjs.api.DOMNode,~A");\r
-c$.setSize = Clazz.defineMethod (c$, "setSize", \r
-function (obj, width, height) {\r
-return swingjs.api.DOMNode.setStyles (obj, ["width", width + "px", "height", height + "px"]);\r
-}, "swingjs.api.DOMNode,~N,~N");\r
+Clazz.declarePackage ("swingjs.api");
+c$ = Clazz.declareType (swingjs.api, "DOMNode");
+c$.createElement = Clazz.defineMethod (c$, "createElement", 
+function (key, id) {
+var obj = null;
+{
+obj = document.createElement(key);
+obj.id = id;
+}return obj;
+}, "~S,~S");
+c$.getParent = Clazz.defineMethod (c$, "getParent", 
+function (obj) {
+{
+return obj.parentNode;
+}}, "swingjs.api.DOMNode");
+c$.remove = Clazz.defineMethod (c$, "remove", 
+function (obj) {
+{
+try {
+var p = obj.parentNode;
+p.removeNode(obj);
+} catch(e) {};
+return p;
+}}, "swingjs.api.DOMNode");
+c$.add = Clazz.defineMethod (c$, "add", 
+function (parent, child) {
+{
+parent && parent.appendChild(child);
+}}, "swingjs.api.DOMNode,swingjs.api.DOMNode");
+c$.getAttr = Clazz.defineMethod (c$, "getAttr", 
+function (obj, attr) {
+{
+if (obj)return obj[attr];
+}}, "swingjs.api.DOMNode,~S");
+Clazz.defineMethod (c$, "getStyle", 
+function (style) {
+{
+if (obj)return obj.style[style];
+}}, "~S");
+c$.setAttr = Clazz.defineMethod (c$, "setAttr", 
+function (obj, attr, val) {
+{
+obj[attr] = (val == "TRUE" ? true : val);
+}return obj;
+}, "swingjs.api.DOMNode,~S,~O");
+c$.setStyles = Clazz.defineMethod (c$, "setStyles", 
+function (obj, attr) {
+{
+for (var i = 0; i < attr.length;) {
+//System.out.println(["DOMNode.setStyles ",attr[i],attr[i+1]])
+;
+obj.style[attr[i++]] = attr[i++]; }
+}return obj;
+}, "swingjs.api.DOMNode,~A");
+c$.setSize = Clazz.defineMethod (c$, "setSize", 
+function (obj, width, height) {
+return swingjs.api.DOMNode.setStyles (obj, ["width", width + "px", "height", height + "px"]);
+}, "swingjs.api.DOMNode,~N,~N");
index 4923079..1c8077b 100644 (file)
@@ -1,2 +1,2 @@
-Clazz.declarePackage ("swingjs.api");\r
-Clazz.declareInterface (swingjs.api, "JSFunction");\r
+Clazz.declarePackage ("swingjs.api");
+Clazz.declareInterface (swingjs.api, "JSFunction");
index 9df0400..589dc74 100644 (file)
@@ -1,15 +1,21 @@
-package fr.orsay.lri.varna.models.rna;\r
-\r
-public class RNA {\r
-\r
-       public int getSize() {\r
-               // TODO Auto-generated method stub\r
-               return 0;\r
-       }\r
-\r
-       public String getStructDBN(boolean b) {\r
-               // TODO Auto-generated method stub\r
-               return null;\r
-       }\r
-\r
-}\r
+package fr.orsay.lri.varna.models.rna;
+
+/**
+ * unused in applet?
+ * 
+ * 
+ */
+
+public class RNA {
+
+       public int getSize() {
+               // TODO Auto-generated method stub
+               return 0;
+       }
+
+       public String getStructDBN(boolean b) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+}