From: gmungoc Date: Mon, 15 Jun 2015 11:19:54 +0000 (+0100) Subject: Merge branch 'develop' of https://source.jalview.org/git/jalview.git into develop X-Git-Tag: Release_2_10_0~609 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=b3206ecee2cb2787e7481c7aefc73f06fc3798c1;hp=fd1c6fd67abdd50ff0d77410d3da9be66be315ce;p=jalview.git Merge branch 'develop' of https://source.jalview.org/git/jalview.git into develop --- diff --git a/build.xml b/build.xml index 0b2a62c..c079df9 100755 --- a/build.xml +++ b/build.xml @@ -539,6 +539,8 @@ + + diff --git a/src/jalview/api/AlignViewControllerGuiI.java b/src/jalview/api/AlignViewControllerGuiI.java index b08a0aa..584f596 100644 --- a/src/jalview/api/AlignViewControllerGuiI.java +++ b/src/jalview/api/AlignViewControllerGuiI.java @@ -20,10 +20,7 @@ */ package jalview.api; -import java.util.List; - import jalview.commands.CommandI; -import jalview.schemes.ColourSchemeI; /** * Interface implemented by gui implementations managing a Jalview Alignment @@ -44,13 +41,4 @@ public interface AlignViewControllerGuiI void addHistoryItem(CommandI command); - void setShowSeqFeatures(boolean show); - - void setMenusForViewport(); - - void changeColour(ColourSchemeI cs); - - void hideColumns(List colsToHide); - - void syncHiddenSequences(); } diff --git a/src/jalview/api/ComplexAlignFile.java b/src/jalview/api/ComplexAlignFile.java new file mode 100644 index 0000000..133a739 --- /dev/null +++ b/src/jalview/api/ComplexAlignFile.java @@ -0,0 +1,43 @@ +package jalview.api; + +import jalview.datamodel.ColumnSelection; +import jalview.datamodel.SequenceI; +import jalview.schemes.ColourSchemeI; + +/** + * This interface should be implemented by complex file parser with the ability + * to store linked data and complex view states in addition to Alignment data + * + * + */ +public interface ComplexAlignFile +{ + /** + * Determines if Sequence features should be shown + * + * @return + */ + public boolean isShowSeqFeatures(); + + /** + * Obtains the colour scheme from a complex file parser + * + * @return + */ + public ColourSchemeI getColourScheme(); + + /** + * Retrieves the Column selection/hidden column from a complex file parser + * + * @return + */ + public ColumnSelection getColumnSelection(); + + /** + * Retrieves hidden sequences from a complex file parser + * + * @return + */ + public SequenceI[] getHiddenSequences(); + +} diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index 1b1a5b8..1510a14 100644 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -156,6 +156,20 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, public AlignFrame(AlignmentI al, JalviewLite applet, String title, boolean embedded, boolean addToDisplay) { + this(al, null, null, applet, title, embedded, addToDisplay); + } + + public AlignFrame(AlignmentI al, SequenceI[] hiddenSeqs, + ColumnSelection columnSelection, JalviewLite applet, + String title, boolean embedded) + { + this(al, hiddenSeqs, columnSelection, applet, title, embedded, true); + } + + public AlignFrame(AlignmentI al, SequenceI[] hiddenSeqs, + ColumnSelection columnSelection, JalviewLite applet, + String title, boolean embedded, boolean addToDisplay) + { if (applet != null) { jalviewServletURL = applet.getParameter("APPLICATION_URL"); @@ -191,6 +205,17 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } } viewport = new AlignViewport(al, applet); + + if (hiddenSeqs != null && hiddenSeqs.length > 0) + { + viewport.hideSequence(hiddenSeqs); + viewport.setHasHiddenRows(true); + } + if (columnSelection != null) + { + viewport.setColumnSelection(columnSelection); + } + alignPanel = new AlignmentPanel(this, viewport); avc = new jalview.controller.AlignViewController(this, viewport, alignPanel); @@ -4182,32 +4207,4 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { this.splitFrame = sf; } - - @Override - public void setShowSeqFeatures(boolean b) - { - this.sequenceFeatures.setState(b); - viewport.setShowSequenceFeatures(b); - } - - @Override - public void setMenusForViewport() - { - // setMenusFromViewport(viewport); - - } - - @Override - public void hideColumns(List colsToHide) - { - // TODO Auto-generated method stub - - } - - @Override - public void syncHiddenSequences() - { - // TODO Auto-generated method stub - - } } diff --git a/src/jalview/appletgui/CutAndPasteTransfer.java b/src/jalview/appletgui/CutAndPasteTransfer.java index 5b699a6..bb2fa12 100644 --- a/src/jalview/appletgui/CutAndPasteTransfer.java +++ b/src/jalview/appletgui/CutAndPasteTransfer.java @@ -34,19 +34,20 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import jalview.analysis.AlignmentUtils; +import jalview.api.ComplexAlignFile; import jalview.bin.JalviewLite; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; +import jalview.datamodel.ColumnSelection; import jalview.datamodel.PDBEntry; import jalview.datamodel.SequenceI; import jalview.io.AnnotationFile; import jalview.io.AppletFormatAdapter; import jalview.io.FileParse; -import jalview.io.HtmlFile; import jalview.io.IdentifyFile; -import jalview.io.JSONFile; import jalview.io.NewickFile; import jalview.io.TCoffeeScoreFile; +import jalview.schemes.ColourSchemeI; import jalview.schemes.TCoffeeColourScheme; import jalview.util.MessageManager; @@ -249,20 +250,32 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, } if (newWindow) { - AlignFrame af = new AlignFrame(al, alignFrame.viewport.applet, - "Cut & Paste input - " + format, false); - af.statusBar - .setText(MessageManager - .getString("label.successfully_pasted_annotation_to_alignment")); + AlignFrame af; - if (source instanceof HtmlFile) + if (source instanceof ComplexAlignFile) { - ((HtmlFile) source).applySettingsToAlignmentView(af); + ColumnSelection colSel = ((ComplexAlignFile) source) + .getColumnSelection(); + SequenceI[] hiddenSeqs = ((ComplexAlignFile) source) + .getHiddenSequences(); + boolean showSeqFeatures = ((ComplexAlignFile) source) + .isShowSeqFeatures(); + ColourSchemeI cs = ((ComplexAlignFile) source).getColourScheme(); + af = new AlignFrame(al, hiddenSeqs, colSel, + alignFrame.viewport.applet, "Cut & Paste input - " + + format, false); + af.getAlignViewport().setShowSequenceFeatures(showSeqFeatures); + af.changeColour(cs); } - else if (source instanceof JSONFile) + else { - ((JSONFile) source).applySettingsToAlignmentView(af); + af = new AlignFrame(al, alignFrame.viewport.applet, + "Cut & Paste input - " + format, false); } + + af.statusBar + .setText(MessageManager + .getString("label.successfully_pasted_annotation_to_alignment")); } else { diff --git a/src/jalview/datamodel/Sequence.java b/src/jalview/datamodel/Sequence.java index 9f328ee..9e93444 100755 --- a/src/jalview/datamodel/Sequence.java +++ b/src/jalview/datamodel/Sequence.java @@ -59,7 +59,6 @@ public class Sequence implements SequenceI RNA rna; - private boolean hidden; /** * This annotation is displayed below the alignment but the positions are tied @@ -1285,16 +1284,5 @@ public class Sequence implements SequenceI return result; } - @Override - public boolean isHidden() - { - return this.hidden; - } - - @Override - public void setHidden(Boolean hidden) - { - this.hidden = hidden; - } } diff --git a/src/jalview/datamodel/SequenceI.java b/src/jalview/datamodel/SequenceI.java index bd193fb..38ae372 100755 --- a/src/jalview/datamodel/SequenceI.java +++ b/src/jalview/datamodel/SequenceI.java @@ -419,17 +419,4 @@ public interface SequenceI */ public List getInsertions(); - /** - * - * @return returns true if the sequence is hidden - */ - public boolean isHidden(); - - /** - * - * @param hidden - * visibility status of the sequence - */ - public void setHidden(Boolean hidden); - } diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 8462b8d..db61f77 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -240,6 +240,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, this(al, hiddenColumns, width, height, null); } + /** * Create alignment frame for al with hiddenColumns, a specific width and * height, and specific sequenceId @@ -289,6 +290,29 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, init(); } + public AlignFrame(AlignmentI al, SequenceI[] hiddenSeqs, + ColumnSelection hiddenColumns, int width, int height) + { + setSize(width, height); + + if (al.getDataset() == null) + { + al.setDataset(null); + } + + viewport = new AlignViewport(al, hiddenColumns); + + if (hiddenSeqs != null && hiddenSeqs.length > 0) + { + viewport.hideSequence(hiddenSeqs); + viewport.setHasHiddenRows(true); + } + alignPanel = new AlignmentPanel(this, viewport); + addAlignmentPanel(alignPanel, true); + init(); + } + + /** * Make a new AlignFrame from existing alignmentPanels * @@ -6108,33 +6132,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } - @Override - public void hideColumns(List colsToHide) - { - for (int[] colRange : colsToHide) - { - viewport.hideColumns(colRange[0], colRange[1]); - } - - } - - @Override - public void syncHiddenSequences() - { - AlignmentI al = viewport.getAlignment(); - HiddenSequences hiddenSeqs = al.getHiddenSequences(); - boolean hasHiddenRows = false; - for (SequenceI seq : al.getSequencesArray()) - { - if (seq.isHidden()) - { - hiddenSeqs.hideSequence(seq); - hasHiddenRows = true; - } - } - viewport.setHasHiddenRows(hasHiddenRows); - firePropertyChange("alignment", null, al.getSequences()); - } } class PrintThread extends Thread diff --git a/src/jalview/gui/CutAndPasteTransfer.java b/src/jalview/gui/CutAndPasteTransfer.java index 6f15ddf..f3c4d87 100644 --- a/src/jalview/gui/CutAndPasteTransfer.java +++ b/src/jalview/gui/CutAndPasteTransfer.java @@ -20,17 +20,6 @@ */ package jalview.gui; -import jalview.datamodel.Alignment; -import jalview.io.FileParse; -import jalview.io.FormatAdapter; -import jalview.io.HtmlFile; -import jalview.io.IdentifyFile; -import jalview.io.JSONFile; -import jalview.io.JalviewFileChooser; -import jalview.io.JalviewFileView; -import jalview.jbgui.GCutAndPasteTransfer; -import jalview.util.MessageManager; - import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; @@ -45,6 +34,19 @@ import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import javax.swing.SwingUtilities; +import jalview.api.ComplexAlignFile; +import jalview.datamodel.Alignment; +import jalview.datamodel.ColumnSelection; +import jalview.datamodel.SequenceI; +import jalview.io.FileParse; +import jalview.io.FormatAdapter; +import jalview.io.IdentifyFile; +import jalview.io.JalviewFileChooser; +import jalview.io.JalviewFileView; +import jalview.jbgui.GCutAndPasteTransfer; +import jalview.schemes.ColourSchemeI; +import jalview.util.MessageManager; + /** * Cut'n'paste files into the desktop See JAL-1105 * @@ -218,23 +220,35 @@ public class CutAndPasteTransfer extends GCutAndPasteTransfer } else { - AlignFrame af = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH, - AlignFrame.DEFAULT_HEIGHT); - af.currentFileFormat = format; - Desktop.addInternalFrame(af, title, AlignFrame.DEFAULT_WIDTH, - AlignFrame.DEFAULT_HEIGHT); - af.statusBar.setText(MessageManager - .getString("label.successfully_pasted_alignment_file")); - if (source instanceof HtmlFile) + AlignFrame af; + if (source instanceof ComplexAlignFile) { - ((HtmlFile) source).applySettingsToAlignmentView(af); + ColumnSelection colSel = ((ComplexAlignFile) source) + .getColumnSelection(); + SequenceI[] hiddenSeqs = ((ComplexAlignFile) source) + .getHiddenSequences(); + boolean showSeqFeatures = ((ComplexAlignFile) source) + .isShowSeqFeatures(); + ColourSchemeI cs = ((ComplexAlignFile) source).getColourScheme(); + af = new AlignFrame(al, hiddenSeqs, colSel, + AlignFrame.DEFAULT_WIDTH, + AlignFrame.DEFAULT_HEIGHT); + + af.getViewport().setShowSequenceFeatures(showSeqFeatures); + af.changeColour(cs); } - else if (source instanceof JSONFile) + else { - ((JSONFile) source).applySettingsToAlignmentView(af); + af = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH, + AlignFrame.DEFAULT_HEIGHT); } + af.currentFileFormat = format; + Desktop.addInternalFrame(af, title, AlignFrame.DEFAULT_WIDTH, + AlignFrame.DEFAULT_HEIGHT); + af.statusBar.setText(MessageManager + .getString("label.successfully_pasted_alignment_file")); try { diff --git a/src/jalview/gui/JvSwingUtils.java b/src/jalview/gui/JvSwingUtils.java index e4cbf61..b6f85b3 100644 --- a/src/jalview/gui/JvSwingUtils.java +++ b/src/jalview/gui/JvSwingUtils.java @@ -20,8 +20,6 @@ */ package jalview.gui; -import jalview.util.MessageManager; - import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; @@ -39,6 +37,8 @@ import javax.swing.JPanel; import javax.swing.JScrollBar; import javax.swing.SwingConstants; +import jalview.util.MessageManager; + /** * useful functions for building Swing GUIs * @@ -60,15 +60,34 @@ public final class JvSwingUtils public static String wrapTooltip(boolean enclose, String ttext) { ttext = ttext.trim(); - if (ttext.length() < 60) + boolean maxLenghtExceeded = false; + + if (ttext.contains("
")) + { + String[] htmllines = ttext.split("
"); + for (String line : htmllines) + { + maxLenghtExceeded = line.length() > 60; + if (maxLenghtExceeded) + { + break; + } + } + } + else + { + maxLenghtExceeded = ttext.length() > 60; + } + + if (!maxLenghtExceeded) { return enclose ? "" + ttext + "" : ttext; } else { - return (enclose ? "" : "") - + "
" + ttext - + "
" + ((enclose ? "" : "")); + return (enclose ? "
" + : "") + + ttext + ((enclose ? "
" : "")); } } diff --git a/src/jalview/io/AppletFormatAdapter.java b/src/jalview/io/AppletFormatAdapter.java index e2cd43a..78aa86b 100755 --- a/src/jalview/io/AppletFormatAdapter.java +++ b/src/jalview/io/AppletFormatAdapter.java @@ -436,7 +436,6 @@ public class AppletFormatAdapter else if (format.equals(JSONFile.FILE_DESC)) { alignFile = new JSONFile(source); - // ((JSONFile) afile).setViewport(viewport); al = new Alignment(alignFile.getSeqsAsArray()); alignFile.addAnnotations(al); alignFile.addSeqGroups(al); diff --git a/src/jalview/io/FileLoader.java b/src/jalview/io/FileLoader.java index a27777f..e27c666 100755 --- a/src/jalview/io/FileLoader.java +++ b/src/jalview/io/FileLoader.java @@ -20,22 +20,25 @@ */ package jalview.io; +import java.util.StringTokenizer; +import java.util.Vector; + +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; + +import jalview.api.ComplexAlignFile; import jalview.datamodel.AlignmentI; +import jalview.datamodel.ColumnSelection; import jalview.datamodel.PDBEntry; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; import jalview.gui.AlignViewport; import jalview.gui.Desktop; import jalview.gui.Jalview2XML; +import jalview.schemes.ColourSchemeI; import jalview.structure.StructureSelectionManager; import jalview.util.MessageManager; -import java.util.StringTokenizer; -import java.util.Vector; - -import javax.swing.JOptionPane; -import javax.swing.SwingUtilities; - public class FileLoader implements Runnable { String file; @@ -335,26 +338,38 @@ public class FileLoader implements Runnable } else { - alignFrame = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH, - AlignFrame.DEFAULT_HEIGHT); - - alignFrame.statusBar.setText(MessageManager.formatMessage( - "label.successfully_loaded_file", new String[] - { title })); - if (!protocol.equals(AppletFormatAdapter.PASTE)) { alignFrame.setFileName(file, format); } - if (source instanceof HtmlFile) + if (source instanceof ComplexAlignFile) { - ((HtmlFile) source).applySettingsToAlignmentView(alignFrame); + ColumnSelection colSel = ((ComplexAlignFile) source) + .getColumnSelection(); + SequenceI[] hiddenSeqs = ((ComplexAlignFile) source) + .getHiddenSequences(); + boolean showSeqFeatures = ((ComplexAlignFile) source) + .isShowSeqFeatures(); + ColourSchemeI cs = ((ComplexAlignFile) source) + .getColourScheme(); + alignFrame = new AlignFrame(al, hiddenSeqs, colSel, + AlignFrame.DEFAULT_WIDTH, + AlignFrame.DEFAULT_HEIGHT); + + alignFrame.getViewport().setShowSequenceFeatures( + showSeqFeatures); + alignFrame.changeColour(cs); } - else if (source instanceof JSONFile) + else { - ((JSONFile) source).applySettingsToAlignmentView(alignFrame); + alignFrame = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH, + AlignFrame.DEFAULT_HEIGHT); } + alignFrame.statusBar.setText(MessageManager.formatMessage( + "label.successfully_loaded_file", new String[] + { title })); + if (raiseGUI) { // add the window to the GUI diff --git a/src/jalview/io/HtmlFile.java b/src/jalview/io/HtmlFile.java index 3dd937d..73aa5d2 100644 --- a/src/jalview/io/HtmlFile.java +++ b/src/jalview/io/HtmlFile.java @@ -22,16 +22,17 @@ package jalview.io; import java.io.IOException; -import java.util.List; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; -import jalview.api.AlignViewControllerGuiI; +import jalview.api.ComplexAlignFile; +import jalview.datamodel.ColumnSelection; +import jalview.datamodel.SequenceI; import jalview.schemes.ColourSchemeI; -public class HtmlFile extends AlignFile +public class HtmlFile extends AlignFile implements ComplexAlignFile { public static final String FILE_EXT = "html"; @@ -41,7 +42,9 @@ public class HtmlFile extends AlignFile private boolean showSeqFeatures; - private List hiddenColumns; + private ColumnSelection columnSelection; + + private SequenceI[] hiddenSequences; public HtmlFile() { @@ -80,21 +83,14 @@ public class HtmlFile extends AlignFile this.annotations = jsonFile.getAnnotations(); this.showSeqFeatures = jsonFile.isShowSeqFeatures(); this.colourScheme = jsonFile.getColourScheme(); - this.hiddenColumns = jsonFile.getHiddenColumns(); + this.hiddenSequences = jsonFile.getHiddenSequences(); + this.columnSelection = jsonFile.getColumnSelection(); } catch (Exception e) { e.printStackTrace(); } } - public void applySettingsToAlignmentView(AlignViewControllerGuiI avc) - { - avc.setShowSeqFeatures(isShowSeqFeatures()); - avc.changeColour(getColourScheme()); - avc.setMenusForViewport(); - avc.hideColumns(hiddenColumns); - avc.syncHiddenSequences(); - } @Override public String print() @@ -123,4 +119,24 @@ public class HtmlFile extends AlignFile this.colourScheme = colourScheme; } + public ColumnSelection getColumnSelection() + { + return columnSelection; + } + + public void setColumnSelection(ColumnSelection columnSelection) + { + this.columnSelection = columnSelection; + } + + public SequenceI[] getHiddenSequences() + { + return hiddenSequences; + } + + public void setHiddenSequences(SequenceI[] hiddenSequences) + { + this.hiddenSequences = hiddenSequences; + } + } diff --git a/src/jalview/io/JSONFile.java b/src/jalview/io/JSONFile.java index 8882f97..d2b8412 100644 --- a/src/jalview/io/JSONFile.java +++ b/src/jalview/io/JSONFile.java @@ -33,12 +33,13 @@ import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; -import jalview.api.AlignViewControllerGuiI; import jalview.api.AlignViewportI; +import jalview.api.ComplexAlignFile; import jalview.api.FeatureRenderer; import jalview.api.FeaturesDisplayedI; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.Annotation; +import jalview.datamodel.ColumnSelection; import jalview.datamodel.HiddenSequences; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceFeature; @@ -54,7 +55,7 @@ import jalview.json.binding.v1.SequencePojo; import jalview.schemes.ColourSchemeI; import jalview.schemes.ColourSchemeProperty; -public class JSONFile extends AlignFile +public class JSONFile extends AlignFile implements ComplexAlignFile { private ColourSchemeI colourScheme; @@ -82,8 +83,12 @@ public class JSONFile extends AlignFile private List hiddenColumns; + private ColumnSelection columnSelection; + private List hiddenSeqRefs; + private ArrayList hiddenSequences; + public JSONFile() { super(); @@ -234,11 +239,9 @@ public class JSONFile extends AlignFile return null; } - System.out.println("--- Hidden Sections ---"); // hidden column business if (getViewport().hasHiddenColumns()) { - System.out.print("Hidden Cols : "); List hiddenCols = getViewport().getColumnSelection() .getHiddenColumns(); StringBuilder hiddenColsBuilder = new StringBuilder(); @@ -250,7 +253,6 @@ public class JSONFile extends AlignFile hiddenColsBuilder.deleteCharAt(0); hiddenSections[0] = hiddenColsBuilder.toString(); - System.out.println(hiddenSections[0]); } // hidden rows/seqs business @@ -262,8 +264,6 @@ public class JSONFile extends AlignFile } SequenceI[] hiddenSeqs = hiddenSeqsObj.hiddenSequences; - System.out.print("Hidden Seqs : "); - // if(hiddenSeqs != null){ StringBuilder hiddenSeqsBuilder = new StringBuilder(); for (SequenceI hiddenSeq : hiddenSeqs) { @@ -273,12 +273,10 @@ public class JSONFile extends AlignFile } } if (hiddenSeqsBuilder.length() > 0) - { + { hiddenSeqsBuilder.deleteCharAt(0); - } + } hiddenSections[1] = hiddenSeqsBuilder.toString(); - System.out.println(hiddenSections[1]); - // } return hiddenSections; } @@ -394,6 +392,7 @@ public class JSONFile extends AlignFile parseHiddenCols(jvSettingsJsonObj); } + hiddenSequences = new ArrayList(); seqMap = new Hashtable(); for (Iterator sequenceIter = seqJsonArray.iterator(); sequenceIter .hasNext();) @@ -408,7 +407,7 @@ public class JSONFile extends AlignFile end); if (hiddenSeqRefs != null && hiddenSeqRefs.contains(seqUniqueId)) { - seq.setHidden(true); + hiddenSequences.add(seq); } seqs.add(seq); seqMap.put(seqUniqueId, seq); @@ -517,14 +516,14 @@ public class JSONFile extends AlignFile public void parseHiddenCols(JSONObject jvSettingsJson) { - hiddenColumns = new ArrayList(); String hiddenCols = (String) jvSettingsJson.get("hiddenCols"); if(hiddenCols != null && !hiddenCols.isEmpty()){ + columnSelection = new ColumnSelection(); String[] rangeStrings = hiddenCols.split(";"); for(String rangeString : rangeStrings){ String[] range = rangeString.split("-"); - hiddenColumns.add(new int[] - { Integer.valueOf(range[0]), Integer.valueOf(range[1]) }); + columnSelection.hideColumns(Integer.valueOf(range[0]), + Integer.valueOf(range[1])); } } } @@ -545,9 +544,6 @@ public class JSONFile extends AlignFile String descripiton = (String) jsonFeature.get("description"); String seqRef = (String) jsonFeature.get("sequenceRef"); Float score = Float.valueOf(jsonFeature.get("score").toString()); - // Hashtable otherDetails = (Hashtable) jsonFeature - // .get("otherDetails"); - // sequenceFeature.otherDetails = otherDetails; Sequence seq = seqMap.get(seqRef); SequenceFeature sequenceFeature = new SequenceFeature(); @@ -588,15 +584,6 @@ public class JSONFile extends AlignFile return jalviewColor; } - public void applySettingsToAlignmentView(AlignViewControllerGuiI avc) - { - avc.setShowSeqFeatures(isShowSeqFeatures()); - avc.changeColour(getColourScheme()); - avc.setMenusForViewport(); - avc.hideColumns(hiddenColumns); - avc.syncHiddenSequences(); - } - public String getGlobalColorScheme() { return globalColorScheme; @@ -637,6 +624,7 @@ public class JSONFile extends AlignFile this.jsonExportSettings = jsonExportSettings; } + public static String getJSONData(AlignViewportI av) { JSONFile jsonFile = new JSONFile(); @@ -686,6 +674,34 @@ public class JSONFile extends AlignFile return hiddenColumns; } + public ColumnSelection getColumnSelection() + { + return columnSelection; + } + + public void setColumnSelection(ColumnSelection columnSelection) + { + this.columnSelection = columnSelection; + } + + public SequenceI[] getHiddenSequences() + { + if (hiddenSequences == null || hiddenSequences.isEmpty()) + { + return new SequenceI[] + {}; + } + synchronized (hiddenSequences) + { + return hiddenSequences.toArray(new SequenceI[hiddenSequences.size()]); + } + } + + public void setHiddenSequences(ArrayList hiddenSequences) + { + this.hiddenSequences = hiddenSequences; + } + public class JSONExportSettings { private boolean exportSequence;