X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=015b95bfca2d7f2e126826dbe95e87e2d74ba3a2;hb=b5d61763044c1d72f06ce0e50da2171422a3774b;hp=07c4a54931b403631582b444ccb0a6209f8f9667;hpb=5f090b7d1cb8836903474f8f4d5e475be142d30c;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 07c4a54..015b95b 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -30,6 +30,7 @@ import jalview.analysis.ParseProperties; import jalview.analysis.SequenceIdMatcher; import jalview.api.AlignViewControllerGuiI; import jalview.api.AlignViewControllerI; +import jalview.api.AlignmentViewPanel; import jalview.api.analysis.ScoreModelI; import jalview.bin.Cache; import jalview.commands.CommandI; @@ -54,10 +55,11 @@ import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.io.AlignmentProperties; import jalview.io.AnnotationFile; +import jalview.io.BioJsHTMLOutput; import jalview.io.FeaturesFile; import jalview.io.FileLoader; import jalview.io.FormatAdapter; -import jalview.io.HTMLOutput; +import jalview.io.HtmlSvgOutput; import jalview.io.IdentifyFile; import jalview.io.JalviewFileChooser; import jalview.io.JalviewFileView; @@ -115,6 +117,7 @@ import java.beans.PropertyChangeEvent; import java.io.File; import java.net.URL; import java.util.ArrayList; +import java.util.Arrays; import java.util.Enumeration; import java.util.Hashtable; import java.util.List; @@ -379,7 +382,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .getKeyCode() <= KeyEvent.VK_NUMPAD9)) && Character.isDigit(evt.getKeyChar())) { - alignPanel.seqPanel.numberPressed(evt.getKeyChar()); + alignPanel.getSeqPanel().numberPressed(evt.getKeyChar()); } switch (evt.getKeyCode()) @@ -397,7 +400,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } if (viewport.cursorMode) { - alignPanel.seqPanel.moveCursor(0, 1); + alignPanel.getSeqPanel().moveCursor(0, 1); } break; @@ -408,7 +411,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } if (viewport.cursorMode) { - alignPanel.seqPanel.moveCursor(0, -1); + alignPanel.getSeqPanel().moveCursor(0, -1); } break; @@ -416,11 +419,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, case KeyEvent.VK_LEFT: if (evt.isAltDown() || !viewport.cursorMode) { - slideSequences(false, alignPanel.seqPanel.getKeyboardNo1()); + slideSequences(false, alignPanel.getSeqPanel().getKeyboardNo1()); } else { - alignPanel.seqPanel.moveCursor(-1, 0); + alignPanel.getSeqPanel().moveCursor(-1, 0); } break; @@ -428,18 +431,18 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, case KeyEvent.VK_RIGHT: if (evt.isAltDown() || !viewport.cursorMode) { - slideSequences(true, alignPanel.seqPanel.getKeyboardNo1()); + slideSequences(true, alignPanel.getSeqPanel().getKeyboardNo1()); } else { - alignPanel.seqPanel.moveCursor(1, 0); + alignPanel.getSeqPanel().moveCursor(1, 0); } break; case KeyEvent.VK_SPACE: if (viewport.cursorMode) { - alignPanel.seqPanel.insertGapAtCursor(evt.isControlDown() + alignPanel.getSeqPanel().insertGapAtCursor(evt.isControlDown() || evt.isShiftDown() || evt.isAltDown()); } break; @@ -463,7 +466,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } else { - alignPanel.seqPanel.deleteGapAtCursor(evt.isControlDown() + alignPanel.getSeqPanel().deleteGapAtCursor(evt.isControlDown() || evt.isShiftDown() || evt.isAltDown()); } @@ -472,19 +475,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, case KeyEvent.VK_S: if (viewport.cursorMode) { - alignPanel.seqPanel.setCursorRow(); + alignPanel.getSeqPanel().setCursorRow(); } break; case KeyEvent.VK_C: if (viewport.cursorMode && !evt.isControlDown()) { - alignPanel.seqPanel.setCursorColumn(); + alignPanel.getSeqPanel().setCursorColumn(); } break; case KeyEvent.VK_P: if (viewport.cursorMode) { - alignPanel.seqPanel.setCursorPosition(); + alignPanel.getSeqPanel().setCursorPosition(); } break; @@ -492,20 +495,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, case KeyEvent.VK_COMMA: if (viewport.cursorMode) { - alignPanel.seqPanel.setCursorRowAndColumn(); + alignPanel.getSeqPanel().setCursorRowAndColumn(); } break; case KeyEvent.VK_Q: if (viewport.cursorMode) { - alignPanel.seqPanel.setSelectionAreaAtCursor(true); + alignPanel.getSeqPanel().setSelectionAreaAtCursor(true); } break; case KeyEvent.VK_M: if (viewport.cursorMode) { - alignPanel.seqPanel.setSelectionAreaAtCursor(false); + alignPanel.getSeqPanel().setSelectionAreaAtCursor(false); } break; @@ -516,10 +519,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { (viewport.cursorMode ? "on" : "off") })); if (viewport.cursorMode) { - alignPanel.seqPanel.seqCanvas.cursorX = viewport.startRes; - alignPanel.seqPanel.seqCanvas.cursorY = viewport.startSeq; + alignPanel.getSeqPanel().seqCanvas.cursorX = viewport.startRes; + alignPanel.getSeqPanel().seqCanvas.cursorY = viewport.startSeq; } - alignPanel.seqPanel.seqCanvas.repaint(); + alignPanel.getSeqPanel().seqCanvas.repaint(); break; case KeyEvent.VK_F1: @@ -738,14 +741,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, abovePIDThreshold.setSelected(av.getAbovePIDThreshold()); conservationMenuItem.setSelected(av.getConservationSelected()); seqLimits.setSelected(av.getShowJVSuffix()); - idRightAlign.setSelected(av.rightAlignIds); + idRightAlign.setSelected(av.isRightAlignIds()); centreColumnLabelsMenuItem.setState(av.centreColumnLabels); renderGapsMenuItem.setSelected(av.renderGaps); wrapMenuItem.setSelected(av.wrapAlignment); scaleAbove.setVisible(av.wrapAlignment); scaleLeft.setVisible(av.wrapAlignment); scaleRight.setVisible(av.wrapAlignment); - annotationPanelMenuItem.setState(av.showAnnotation); + annotationPanelMenuItem.setState(av.isShowAnnotation()); /* * Show/hide annotations only enabled if annotation panel is shown */ @@ -765,7 +768,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, setColourSelected(ColourSchemeProperty.getColourName(av .getGlobalColourScheme())); - showSeqFeatures.setSelected(av.showSequenceFeatures); + showSeqFeatures.setSelected(av.isShowSequenceFeatures()); hiddenMarkers.setState(av.showHiddenMarkers); applyToAllGroups.setState(av.getColourAppliesToAllGroups()); showNpFeatsMenuitem.setSelected(av.isShowNpFeats()); @@ -896,7 +899,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public FeatureRenderer getFeatureRenderer() { - return alignPanel.seqPanel.seqCanvas.getFeatureRenderer(); + return alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer(); } @Override @@ -1227,11 +1230,18 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override protected void htmlMenuItem_actionPerformed(ActionEvent e) { - new HTMLOutput(alignPanel, - alignPanel.seqPanel.seqCanvas.getSequenceRenderer(), - alignPanel.seqPanel.seqCanvas.getFeatureRenderer()); + // new HTMLOutput(alignPanel, + // alignPanel.getSeqPanel().seqCanvas.getSequenceRenderer(), + // alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer()); + new HtmlSvgOutput(null, alignPanel); } + @Override + public void bioJSMenuItem_actionPerformed(ActionEvent e) + { + new BioJsHTMLOutput(alignPanel, + alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer()); + } public void createImageMap(File file, String image) { alignPanel.makePNGImageMap(file, image); @@ -1296,7 +1306,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public void exportAnnotations_actionPerformed(ActionEvent e) { new AnnotationExporter().exportAnnotations(alignPanel, - viewport.showAnnotation ? viewport.getAlignment() + viewport.isShowAnnotation() ? viewport.getAlignment() .getAlignmentAnnotation() : null, viewport .getAlignment().getGroups(), ((Alignment) viewport .getAlignment()).alignmentProperties); @@ -1622,7 +1632,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (viewport.cursorMode) { sg.add(viewport.getAlignment().getSequenceAt( - alignPanel.seqPanel.seqCanvas.cursorY)); + alignPanel.getSeqPanel().seqCanvas.cursorY)); } else if (viewport.getSelectionGroup() != null && viewport.getSelectionGroup().getSize() != viewport @@ -1672,7 +1682,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (viewport.cursorMode) { - alignPanel.seqPanel.moveCursor(size, 0); + alignPanel.getSeqPanel().moveCursor(size, 0); } else { @@ -1683,7 +1693,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (viewport.cursorMode) { - alignPanel.seqPanel.moveCursor(-size, 0); + alignPanel.getSeqPanel().moveCursor(-size, 0); } else { @@ -2111,9 +2121,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // >>>This is a fix for the moment, until a better solution is // found!!<<< - af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer() + af.alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer() .transferSettings( - alignPanel.seqPanel.seqCanvas.getFeatureRenderer()); + alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer()); // TODO: maintain provenance of an alignment, rather than just make the // title a concatenation of operations. @@ -2171,9 +2181,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // >>>This is a fix for the moment, until a better solution is // found!!<<< - af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer() + af.alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer() .transferSettings( - alignPanel.seqPanel.seqCanvas.getFeatureRenderer()); + alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer()); // TODO: maintain provenance of an alignment, rather than just make the // title a concatenation of operations. @@ -2337,14 +2347,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (viewport.cursorMode) { - alignPanel.seqPanel.keyboardNo1 = null; - alignPanel.seqPanel.keyboardNo2 = null; + alignPanel.getSeqPanel().keyboardNo1 = null; + alignPanel.getSeqPanel().keyboardNo2 = null; } viewport.setSelectionGroup(null); viewport.getColumnSelection().clear(); viewport.setSelectionGroup(null); - alignPanel.seqPanel.seqCanvas.highlightSearchResults(null); - alignPanel.idPanel.idCanvas.searchResults = null; + alignPanel.getSeqPanel().seqCanvas.highlightSearchResults(null); + alignPanel.getIdPanel().getIdCanvas().searchResults = null; alignPanel.paintAlignment(true); PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId()); viewport.sendSelection(); @@ -2745,7 +2755,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { viewport.setShowJVSuffix(seqLimits.isSelected()); - alignPanel.idPanel.idCanvas.setPreferredSize(alignPanel + alignPanel.getIdPanel().getIdCanvas().setPreferredSize(alignPanel .calculateIdWidth()); alignPanel.paintAlignment(true); } @@ -2753,7 +2763,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void idRightAlign_actionPerformed(ActionEvent e) { - viewport.rightAlignIds = idRightAlign.isSelected(); + viewport.setRightAlignIds(idRightAlign.isSelected()); alignPanel.paintAlignment(true); } @@ -2775,7 +2785,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (viewport.followHighlight = this.followHighlightMenuItem.getState()) { alignPanel.scrollToPosition( - alignPanel.seqPanel.seqCanvas.searchResults, false); + alignPanel.getSeqPanel().seqCanvas.searchResults, false); } } @@ -3082,7 +3092,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { viewport.setShowSequenceFeaturesHeight(showSeqFeaturesHeight .isSelected()); - if (viewport.getShowSequenceFeaturesHeight()) + if (viewport.isShowSequenceFeaturesHeight()) { // ensure we're actually displaying features viewport.setShowSequenceFeatures(true); @@ -4184,16 +4194,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ msa = viewport.getAlignmentView(true); } + else if (viewport.getSelectionGroup() != null + && viewport.getSelectionGroup().getSize() == 1) + { + int option = JOptionPane.showConfirmDialog(this, + MessageManager.getString("warn.oneseq_msainput_selection"), + MessageManager.getString("label.invalid_selection"), + JOptionPane.OK_CANCEL_OPTION); + if (option == JOptionPane.OK_OPTION) + { + msa = viewport.getAlignmentView(false); + } + } else { - /* - * Vector seqs = viewport.getAlignment().getSequences(); - * - * if (seqs.size() > 1) { msa = new SequenceI[seqs.size()]; - * - * for (int i = 0; i < seqs.size(); i++) { msa[i] = (SequenceI) - * seqs.elementAt(i); } } - */ msa = viewport.getAlignmentView(false); } return msa; @@ -4867,8 +4881,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, try { featuresFile = new FeaturesFile(file, type).parse(viewport - .getAlignment().getDataset(), alignPanel.seqPanel.seqCanvas - .getFeatureRenderer().featureColours, false, + .getAlignment().getDataset(), alignPanel.getSeqPanel().seqCanvas + .getFeatureRenderer().getFeatureColours(), false, jalview.bin.Cache.getDefault("RELAXEDSEQIDMATCHING", false)); } catch (Exception ex) { @@ -4877,12 +4891,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (featuresFile) { - viewport.showSequenceFeatures = true; + viewport.setShowSequenceFeatures(true); showSeqFeatures.setSelected(true); - if (alignPanel.seqPanel.seqCanvas.fr != null) + if (alignPanel.getSeqPanel().seqCanvas.fr != null) { // update the min/max ranges where necessary - alignPanel.seqPanel.seqCanvas.fr.findAllFeatures(true); + alignPanel.getSeqPanel().seqCanvas.fr.findAllFeatures(true); } if (featureSettings != null) { @@ -5816,6 +5830,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .setShowAutocalculatedAbove(isShowAutoCalculatedAbove()); alignPanel.paintAlignment(true); } + + /** + * + * @return alignment panels in this alignemnt frame + */ + public List getAlignPanels() + { + return alignPanels == null ? Arrays.asList(alignPanel) : alignPanels; + } } class PrintThread extends Thread