X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=1330cf6c604f1ca1ffb92adf852674e4b07754f9;hb=aff93619ba53584f9b01970832558331951d9dbf;hp=2159de59ca5df4d8e4420d580121554dca819f0c;hpb=2de8acfae59aced665e4c37ad0f7dcc2ed68818e;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index 2159de5..1330cf6 100755 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -26,6 +26,7 @@ import java.awt.*; import java.awt.event.*; import jalview.analysis.*; +import jalview.bin.JalviewLite; import jalview.commands.*; import jalview.datamodel.*; import jalview.io.*; @@ -175,6 +176,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } viewport.showSequenceFeatures = true; sequenceFeatures.setState(true); + if (viewport.featureSettings!=null) + { + viewport.featureSettings.refreshTable(); + } alignPanel.paintAlignment(true); } @@ -336,37 +341,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { boolean toggleSeqs = !evt.isControlDown(); boolean toggleCols = !evt.isShiftDown(); - boolean hide = false; - SequenceGroup sg = viewport.getSelectionGroup(); - - if (toggleSeqs) - { - if (sg != null && sg.getSize() != viewport.alignment.getHeight()) - { - hide = true; - viewport.hideAllSelectedSeqs(); - } - else if (!(toggleCols && viewport.colSel.getSelected().size() > 0)) - { - viewport.showAllHiddenSeqs(); - } - } - - if (toggleCols) - { - if (viewport.colSel.getSelected().size() > 0) - { - viewport.hideSelectedColumns(); - if (!toggleSeqs) - { - viewport.selectionGroup = sg; - } - } - else if (!hide) - { - viewport.showAllHiddenColumns(); - } - } + toggleHiddenRegions(toggleSeqs, toggleCols); break; } @@ -440,11 +415,11 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { if (evt.isAltDown()) { - viewport.invertColumnSelection(); + invertColSel_actionPerformed(); } else { - this.invertSequenceMenuItem_actionPerformed(); + invertSequenceMenuItem_actionPerformed(); } } break; @@ -466,7 +441,73 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } alignPanel.paintAlignment(true); } + /** + * called by key handler and the hide all/show all menu items + * @param toggleSeqs + * @param toggleCols + */ + private void toggleHiddenRegions(boolean toggleSeqs, + boolean toggleCols) + { + boolean hide = false; + SequenceGroup sg = viewport.getSelectionGroup(); + if (!toggleSeqs && !toggleCols) + { + // Hide everything by the current selection - this is a hack - we do the + // invert and then hide + // first check that there will be visible columns after the invert. + if ((viewport.colSel != null + && viewport.colSel.getSelected() != null && viewport.colSel + .getSelected().size() > 0) + || (sg != null && sg.getSize() > 0 && sg.getStartRes() <= sg + .getEndRes())) + { + // now invert the sequence set, if required - empty selection implies + // that no hiding is required. + if (sg != null) + { + invertSequenceMenuItem_actionPerformed(); + sg = viewport.getSelectionGroup(); + toggleSeqs = true; + } + viewport.expandColSelection(sg, true); + // finally invert the column selection and get the new sequence + // selection and indicate it should be hidden. + invertColSel_actionPerformed(); + toggleCols = true; + } + } + + if (toggleSeqs) + { + if (sg != null && sg.getSize() != viewport.alignment.getHeight()) + { + hide = true; + viewport.hideAllSelectedSeqs(); + } + else if (!(toggleCols && viewport.colSel.getSelected().size() > 0)) + { + viewport.showAllHiddenSeqs(); + } + } + + if (toggleCols) + { + if (viewport.colSel.getSelected().size() > 0) + { + viewport.hideSelectedColumns(); + if (!toggleSeqs) + { + viewport.selectionGroup = sg; + } + } + else if (!hide) + { + viewport.showAllHiddenColumns(); + } + } + } public void keyReleased(KeyEvent evt) { } @@ -646,6 +687,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { delete_actionPerformed(); } + else if (source == grpsFromSelection) + { + makeGrpsFromSelection_actionPerformed(); + } else if (source == deleteGroups) { deleteGroups_actionPerformed(); @@ -703,6 +748,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, else if (source == showSeqs) { viewport.showAllHiddenSeqs(); + alignPanel.paintAlignment(true); } else if (source == hideColumns) { @@ -713,6 +759,23 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, && viewport.getSelectionGroup() != null) { viewport.hideAllSelectedSeqs(); + alignPanel.paintAlignment(true); + } + else if (source == hideAllButSelection) { + toggleHiddenRegions(false,false); + alignPanel.paintAlignment(true); + } + else if (source == hideAllSelection) { + SequenceGroup sg = viewport.getSelectionGroup(); + viewport.expandColSelection(sg, false); + viewport.hideAllSelectedSeqs(); + viewport.hideSelectedColumns(); + alignPanel.paintAlignment(true); + } + else if (source == showAllHidden) { + viewport.showAllHiddenColumns(); + viewport.showAllHiddenSeqs(); + alignPanel.paintAlignment(true); } else if (source == featureSettings) { @@ -931,18 +994,34 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, return annotation; } + private Hashtable getDisplayedFeatureCols() + { + if (alignPanel.getFeatureRenderer()!=null) { + FeatureRenderer fr = alignPanel.getFeatureRenderer(); + Hashtable fcols = new Hashtable(); + Enumeration en = viewport.featuresDisplayed.keys(); + while (en.hasMoreElements()) + { + Object col = en.nextElement(); + fcols.put(col,fr.featureColours.get(col)); + } + return fcols; + } + return null; + } + public String outputFeatures(boolean displayTextbox, String format) { String features; if (format.equalsIgnoreCase("Jalview")) { features = new FeaturesFile().printJalviewFormat(viewport.alignment - .getSequencesArray(), viewport.featuresDisplayed); + .getSequencesArray(), getDisplayedFeatureCols()); } else { features = new FeaturesFile().printGFFFormat(viewport.alignment - .getSequencesArray(), viewport.featuresDisplayed); + .getSequencesArray(), getDisplayedFeatureCols()); } if (displayTextbox) @@ -1574,7 +1653,36 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, this.setVisible(false); } } - + protected void makeGrpsFromSelection_actionPerformed() + { + if (viewport.getSelectionGroup() != null) + { + SequenceGroup[] gps = jalview.analysis.Grouping.makeGroupsFrom( + viewport.getSequenceSelection(), viewport.getAlignmentView( + true).getSequenceStrings(viewport.getGapCharacter()), + viewport.alignment.getGroups()); + viewport.alignment.deleteAllGroups(); + viewport.sequenceColours = null; + viewport.setSelectionGroup(null); + // set view properties for each group + for (int g = 0; g < gps.length; g++) + { + // gps[g].setShowunconserved(viewport.getShowUnconserved()); + gps[g].setIncludeAllConsSymbols(viewport.isIncludeAllConsensusSymbols()); + viewport.alignment.addGroup(gps[g]); + Color col = new Color((int) (Math.random() * 255), (int) (Math + .random() * 255), (int) (Math.random() * 255)); + col = col.brighter(); + for (Enumeration sq = gps[g].getSequences(null).elements(); sq + .hasMoreElements(); viewport.setSequenceColour( + (SequenceI) sq.nextElement(), col)) + ; + } + PaintRefresher.Refresh(this, viewport.getSequenceSetId()); + // alignPanel.updateAnnotation(); + alignPanel.paintAlignment(true); + } + } protected void deleteGroups_actionPerformed() { viewport.alignment.deleteAllGroups(); @@ -1623,6 +1731,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId()); } + public void invertColSel_actionPerformed() + { + viewport.invertColumnSelection(); + alignPanel.paintAlignment(true); + PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId()); + } void trimAlignment(boolean trimLeft) { @@ -2340,10 +2454,11 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, class AboutPanel extends Canvas { String version; - - public AboutPanel(String version) + String builddate; + public AboutPanel(String version, String builddate) { this.version = version; + this.builddate = builddate; } public void paint(Graphics g) @@ -2359,6 +2474,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, // lite and application g.setFont(new Font("Helvetica", Font.BOLD, 14)); g.drawString("JalviewLite - Release " + version, x, y += fh); + g.setFont(new Font("Helvetica", Font.BOLD, 12)); + g.drawString("Build date: "+builddate, x, y += fh); g.setFont(new Font("Helvetica", Font.PLAIN, 12)); g .drawString( @@ -2381,30 +2498,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } } - String version = "test"; - java.net.URL url = getClass().getResource("/.build_properties"); - if (url != null) - { - try - { - BufferedReader reader = new BufferedReader(new InputStreamReader( - url.openStream())); - String line; - while ((line = reader.readLine()) != null) - { - if (line.indexOf("VERSION") > -1) - { - version = line.substring(line.indexOf("=") + 1); - } - } - } catch (Exception ex) - { - ex.printStackTrace(); - } - } - Frame frame = new Frame(); - frame.add(new AboutPanel(version)); + frame.add(new AboutPanel(JalviewLite.getVersion(), JalviewLite.getBuildDate())); jalview.bin.JalviewLite.addFrame(frame, "Jalview", 580, 220); } @@ -2565,6 +2660,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, MenuItem deleteGroups = new MenuItem(); + MenuItem grpsFromSelection= new MenuItem(); + MenuItem delete = new MenuItem(); MenuItem copy = new MenuItem(); @@ -2743,6 +2840,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, nucleotideColour.addActionListener(this); deleteGroups.setLabel("Undefine Groups"); deleteGroups.addActionListener(this); + grpsFromSelection.setLabel("Make Groups for selection"); + grpsFromSelection.addActionListener(this); copy.setLabel("Copy"); copy.addActionListener(this); cut.setLabel("Cut"); @@ -2809,11 +2908,17 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, menu2.setLabel("Hide"); hideColumns.setLabel("Selected Columns"); hideSequences.setLabel("Selected Sequences"); + hideAllButSelection.setLabel("All but Selected Region (Shift+Ctrl+H)"); + hideAllSelection.setLabel("Selected Region"); + showAllHidden.setLabel("All Sequences and Columns"); invertColSel.addActionListener(this); showColumns.addActionListener(this); showSeqs.addActionListener(this); hideColumns.addActionListener(this); hideSequences.addActionListener(this); + hideAllButSelection.addActionListener(this); + hideAllSelection.addActionListener(this); + showAllHidden.addActionListener(this); formatMenu.setLabel("Format"); selectMenu.setLabel("Select"); newView.setLabel("New View"); @@ -2912,8 +3017,11 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, helpMenu.add(about); menu1.add(showColumns); menu1.add(showSeqs); + menu1.add(showAllHidden); menu2.add(hideColumns); menu2.add(hideSequences); + menu2.add(hideAllSelection); + menu2.add(hideAllButSelection); formatMenu.add(font); formatMenu.add(seqLimits); formatMenu.add(wrapMenuItem); @@ -2932,7 +3040,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, selectMenu.add(deselectAllSequenceMenuItem); selectMenu.add(invertSequenceMenuItem); selectMenu.add(invertColSel); + selectMenu.add(grpsFromSelection); selectMenu.add(deleteGroups); + } MenuItem featureSettings = new MenuItem(); @@ -2955,6 +3065,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, MenuItem hideSequences = new MenuItem(); + MenuItem hideAllButSelection = new MenuItem(); + MenuItem hideAllSelection = new MenuItem(); + MenuItem showAllHidden = new MenuItem(); + Menu formatMenu = new Menu(); Menu selectMenu = new Menu();