From 210eae7c9dd1d1081e708bfba167533ea4208204 Mon Sep 17 00:00:00 2001 From: jprocter Date: Tue, 14 Dec 2010 10:40:00 +0000 Subject: [PATCH] refactored and patched for JAL-721 new view creation functions for JAL-715 --- src/jalview/gui/AlignFrame.java | 126 ++++++++++++++++++++++----------------- 1 file changed, 72 insertions(+), 54 deletions(-) diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index b20314b..4c2e73a 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -2243,8 +2243,48 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public void newView_actionPerformed(ActionEvent e) { + newView(true); + } + /** + * + * @param copyAnnotation if true then duplicate all annnotation, groups and settings + * @return new alignment panel, already displayed. + */ + public AlignmentPanel newView(boolean copyAnnotation) + { + return newView(null, copyAnnotation); + } + /** + * + * @param viewTitle title of newly created view + * @return new alignment panel, already displayed. + */ + public AlignmentPanel newView(String viewTitle) + { + return newView(viewTitle, true); + } + /** + * + * @param viewTitle title of newly created view + * @param copyAnnotation if true then duplicate all annnotation, groups and settings + * @return new alignment panel, already displayed. + */ + public AlignmentPanel newView(String viewTitle, boolean copyAnnotation) + { AlignmentPanel newap = new Jalview2XML().copyAlignPanel(alignPanel, true); + if (!copyAnnotation) + { + // just remove all the current annotation except for the automatic stuff + newap.av.alignment.deleteAllGroups(); + for (AlignmentAnnotation alan: newap.av.alignment.getAlignmentAnnotation()) + { + if (!alan.autoCalculated) + { + newap.av.alignment.deleteAnnotation(alan); + }; + } + } newap.av.gatherViewsHere = false; @@ -2257,8 +2297,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, newap.av.redoList = viewport.redoList; int index = Desktop.getViewCount(viewport.getSequenceSetId()); - String newViewName = "View " + index; - + // make sure the new view has a unique name - this is essential for Jalview 2 archives + boolean addFirstIndex = false; + if (viewTitle==null || viewTitle.trim().length()==0) + { + viewTitle = "View"; + addFirstIndex = true; + } else { + index=1;// we count from 1 if given a specific name + } + String newViewName = viewTitle + ((addFirstIndex) ? " "+index : ""); Vector comps = (Vector) PaintRefresher.components.get(viewport .getSequenceSetId()); Vector existingNames = new Vector(); @@ -2276,7 +2324,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, while (existingNames.contains(newViewName)) { - newViewName = "View " + (++index); + newViewName = viewTitle + " "+(++index); } newap.av.viewName = newViewName; @@ -2288,6 +2336,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.gatherViewsHere = true; } tabbedPane.setSelectedIndex(tabbedPane.getTabCount() - 1); + return newap; } public void expandViews_actionPerformed(ActionEvent e) @@ -2663,57 +2712,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { JEditorPane editPane = new JEditorPane("text/html", ""); editPane.setEditable(false); - StringBuffer contents = new StringBuffer(""); - - float avg = 0; - int min = Integer.MAX_VALUE, max = 0; - for (int i = 0; i < viewport.alignment.getHeight(); i++) - { - int size = viewport.alignment.getSequenceAt(i).getEnd() - - viewport.alignment.getSequenceAt(i).getStart(); - avg += size; - if (size > max) - max = size; - if (size < min) - min = size; - } - avg = avg / (float) viewport.alignment.getHeight(); - - contents.append("
Sequences: " + viewport.alignment.getHeight()); - contents.append("
Minimum Sequence Length: " + min); - contents.append("
Maximum Sequence Length: " + max); - contents.append("
Average Length: " + (int) avg); - - if (((Alignment) viewport.alignment).getProperties() != null) - { - Hashtable props = ((Alignment) viewport.alignment).getProperties(); - Enumeration en = props.keys(); - contents.append("

"); - while (en.hasMoreElements()) - { - String key = en.nextElement().toString(); - StringBuffer val = new StringBuffer(); - String vals = props.get(key).toString(); - int pos = 0, npos; - do - { - npos = vals.indexOf("\n", pos); - if (npos == -1) - { - val.append(vals.substring(pos)); - } - else - { - val.append(vals.substring(pos, npos)); - val.append("
"); - } - pos = npos + 1; - } while (npos != -1); - contents.append(""); - } - contents.append("
" + key + "" + val + "
"); - } - editPane.setText(contents.toString() + ""); + StringBuffer contents = new AlignmentProperties(viewport.alignment).formatAsHtml(); + editPane.setText(""+contents.toString() + ""); JInternalFrame frame = new JInternalFrame(); frame.getContentPane().add(new JScrollPane(editPane)); @@ -3994,6 +3994,24 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, jalview.ws.EnfinEnvision2OneWay.getInstance().attachWSMenuEntry( webService, this); } + // TODO: remove this code when 2.7 is released + // DEBUG - alignmentView + /*JMenuItem testAlView = new JMenuItem("Test AlignmentView"); + final AlignFrame af = this; + testAlView.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) + { + jalview.datamodel.AlignmentView.testSelectionViews(af.viewport.alignment, af.viewport.colSel, af.viewport.selectionGroup); + } + + }); + webService.add(testAlView);*/ + // TODO: refactor to RestClient discoverer and merge menu entries for rest-style services with other types of analysis/calculation service + // SHmmr test client - still being implemented. + // jalview.ws.rest.RestClient.makeShmmrRestClient().attachWSMenuEntry(webService, this); + // DEBUG - alignmentView } /* -- 1.7.10.2