/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
*/
package jalview.gui;
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.GridLayout;
+import java.awt.Rectangle;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DropTargetDragEvent;
+import java.awt.dnd.DropTargetDropEvent;
+import java.awt.dnd.DropTargetEvent;
+import java.awt.dnd.DropTargetListener;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.print.PageFormat;
+import java.awt.print.PrinterJob;
+import java.beans.PropertyChangeEvent;
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Deque;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Set;
+import java.util.Vector;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JEditorPane;
+import javax.swing.JInternalFrame;
+import javax.swing.JLabel;
+import javax.swing.JLayeredPane;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.JScrollPane;
+import javax.swing.SwingUtilities;
+
import jalview.analysis.AAFrequency;
import jalview.analysis.AlignmentSorter;
import jalview.analysis.AlignmentUtils;
-import jalview.analysis.AlignmentUtils.MappingResult;
import jalview.analysis.Conservation;
import jalview.analysis.CrossRef;
import jalview.analysis.Dna;
import jalview.api.AlignViewControllerI;
import jalview.api.AlignViewportI;
import jalview.api.AlignmentViewPanel;
+import jalview.api.SplitContainerI;
+import jalview.api.ViewStyleI;
import jalview.api.analysis.ScoreModelI;
import jalview.bin.Cache;
import jalview.commands.CommandI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.gui.ViewSelectionMenu.ViewSetProvider;
import jalview.io.AlignmentProperties;
import jalview.io.AnnotationFile;
import jalview.io.BioJsHTMLOutput;
import jalview.schemes.TurnColourScheme;
import jalview.schemes.UserColourScheme;
import jalview.schemes.ZappoColourScheme;
-import jalview.structure.StructureSelectionManager;
import jalview.util.MessageManager;
import jalview.viewmodel.AlignmentViewport;
import jalview.ws.jws1.Discoverer;
import jalview.ws.jws2.jabaws2.Jws2Instance;
import jalview.ws.seqfetcher.DbSourceProxy;
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.GridLayout;
-import java.awt.Rectangle;
-import java.awt.Toolkit;
-import java.awt.datatransfer.Clipboard;
-import java.awt.datatransfer.DataFlavor;
-import java.awt.datatransfer.StringSelection;
-import java.awt.datatransfer.Transferable;
-import java.awt.dnd.DnDConstants;
-import java.awt.dnd.DropTargetDragEvent;
-import java.awt.dnd.DropTargetDropEvent;
-import java.awt.dnd.DropTargetEvent;
-import java.awt.dnd.DropTargetListener;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.KeyAdapter;
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.print.PageFormat;
-import java.awt.print.PrinterJob;
-import java.beans.PropertyChangeEvent;
-import java.io.File;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Deque;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Set;
-import java.util.Vector;
-
-import javax.swing.JButton;
-import javax.swing.JCheckBoxMenuItem;
-import javax.swing.JEditorPane;
-import javax.swing.JInternalFrame;
-import javax.swing.JLabel;
-import javax.swing.JLayeredPane;
-import javax.swing.JMenu;
-import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JProgressBar;
-import javax.swing.JRadioButtonMenuItem;
-import javax.swing.JScrollPane;
-import javax.swing.SwingUtilities;
-
/**
* DOCUMENT ME!
*
buildSortByAnnotationScoresMenu();
buildTreeMenu();
- if (viewport.wrapAlignment)
+ if (viewport.getWrapAlignment())
{
wrapMenuItem_actionPerformed(null);
}
addKeyListener();
+ final List<AlignmentPanel> selviews = new ArrayList<AlignmentPanel>();
+ final List<AlignmentPanel> origview = new ArrayList<AlignmentPanel>();
+ ViewSelectionMenu vsel = new ViewSelectionMenu("Transfer colours from",
+ new ViewSetProvider()
+ {
+
+ @Override
+ public AlignmentPanel[] getAllAlignmentPanels()
+ {
+ origview.clear();
+ origview.add(alignPanel);
+ return Desktop.getAlignmentPanels(null);
+ }
+ }, selviews, new ItemListener()
+ {
+
+ @Override
+ public void itemStateChanged(ItemEvent e)
+ {
+ if (origview.size() > 0)
+ {
+ ViewStyleI vs = selviews.get(0).getAlignViewport()
+ .getViewStyle();
+ origview.get(0).getAlignViewport().setViewStyle(vs);
+ AlignViewportI complement = origview.get(0)
+ .getAlignViewport().getCodingComplement();
+ if (complement != null)
+ {
+ AlignFrame af = Desktop.getAlignFrameFor(complement);
+ if (complement.isNucleotide())
+ {
+ complement.setViewStyle(vs);
+ vs.setCharWidth(vs.getCharWidth() / 3);
+ }
+ else
+ {
+ int rw = vs.getCharWidth();
+ vs.setCharWidth(rw * 3);
+ complement.setViewStyle(vs);
+ vs.setCharWidth(rw);
+ }
+ af.alignPanel.updateLayout();
+ af.setMenusForViewport();
+ }
+ origview.get(0).updateLayout();
+ origview.get(0).setSelected(true);
+ origview.get(0).alignFrame.setMenusForViewport();
+
+ }
+ }
+ });
+ formatMenu.add(vsel);
+
}
/**
public void setFileName(String file, String format)
{
fileName = file;
- currentFileFormat = format;
+ setFileFormat(format);
reload.setEnabled(true);
}
break;
}
case KeyEvent.VK_PAGE_UP:
- if (viewport.wrapAlignment)
+ if (viewport.getWrapAlignment())
{
alignPanel.scrollUp(true);
}
}
break;
case KeyEvent.VK_PAGE_DOWN:
- if (viewport.wrapAlignment)
+ if (viewport.getWrapAlignment())
{
alignPanel.scrollUp(false);
}
}).start();
}
+ /**
+ * Configure menu items that vary according to whether the alignment is
+ * nucleotide or protein
+ *
+ * @param nucleotide
+ */
public void setGUINucleotide(boolean nucleotide)
{
showTranslation.setVisible(nucleotide);
- cdna.setVisible(!nucleotide);
conservationMenuItem.setEnabled(!nucleotide);
modifyConservation.setEnabled(!nucleotide);
showGroupConservation.setEnabled(!nucleotide);
rnahelicesColour.setEnabled(nucleotide);
purinePyrimidineColour.setEnabled(nucleotide);
+ showComplementMenuItem.setText(MessageManager
+ .getString(nucleotide ? "label.protein" : "label.nucleotide"));
+ setColourSelected(jalview.bin.Cache.getDefault(
+ nucleotide ? Preferences.DEFAULT_COLOUR_NUC
+ : Preferences.DEFAULT_COLOUR_PROT, "None"));
}
/**
- * Builds codon mappings from this (protein) alignment to any compatible
- * nucleotide alignments. Mappings are built between sequences with the same
- * name and compatible lengths. Also makes the cDNA alignment a
- * CommandListener for the protein alignment so that edits are mirrored.
- */
- @Override
- protected void linkCdna_actionPerformed()
- {
- int linkedCount = 0;
- int alreadyLinkedCount = 0;
- final AlignmentI thisAlignment = this.alignPanel.getAlignment();
-
- for (AlignFrame af : Desktop.getAlignFrames())
- {
- if (af.alignPanel != null)
- {
- final AlignmentI thatAlignment = af.alignPanel.getAlignment();
- if (thatAlignment.isNucleotide())
- {
- MappingResult mapped = AlignmentUtils.mapProteinToCdna(
- thisAlignment, thatAlignment);
- if (mapped == MappingResult.AlreadyMapped)
- {
- alreadyLinkedCount++;
- }
- else if (mapped == MappingResult.Mapped)
- {
- final StructureSelectionManager ssm = StructureSelectionManager
- .getStructureSelectionManager(Desktop.instance);
- ssm.addMappings(thisAlignment.getCodonFrames());
- // enable the next line to enable linked editing
- // ssm.addCommandListener(af.getViewport());
- linkedCount++;
- }
- }
- }
- }
- String msg = "";
- if (linkedCount == 0 && alreadyLinkedCount == 0)
- {
- msg = MessageManager.getString("label.no_cdna");
- }
- else if (linkedCount > 0)
- {
- msg = MessageManager.formatMessage("label.linked_cdna", linkedCount);
- }
- else
- {
- msg = MessageManager.formatMessage("label.cdna_all_linked",
- alreadyLinkedCount);
- }
- setStatus(msg);
- }
-
- /**
- * Align any linked cDNA to match the alignment of this (protein) alignment.
- * Any mapped sequence regions will be realigned, unmapped sequences are not
- * affected.
- */
- @Override
- protected void alignCdna_actionPerformed()
- {
- int seqCount = 0;
- int alignCount = 0;
- final AlignmentI thisAlignment = this.alignPanel.getAlignment();
- for (AlignFrame af : Desktop.getAlignFrames())
- {
- if (af.alignPanel != null)
- {
- final AlignmentI thatAlignment = af.alignPanel.getAlignment();
- if (thatAlignment.isNucleotide())
- {
- int seqsAligned = thatAlignment.alignAs(thisAlignment);
- seqCount += seqsAligned;
- if (seqsAligned > 0)
- {
- af.alignPanel.alignmentChanged();
- alignCount++;
- }
- }
- }
- }
- setStatus(MessageManager.formatMessage("label.cdna_aligned", seqCount,
- alignCount));
- }
- /**
* set up menus for the current viewport. This may be called after any
* operation that affects the data in the current view (selection changed,
* etc) to update the menus to reflect the new state.
void setMenusFromViewport(AlignViewport av)
{
padGapsMenuitem.setSelected(av.isPadGaps());
- colourTextMenuItem.setSelected(av.showColourText);
+ colourTextMenuItem.setSelected(av.isShowColourText());
abovePIDThreshold.setSelected(av.getAbovePIDThreshold());
conservationMenuItem.setSelected(av.getConservationSelected());
seqLimits.setSelected(av.getShowJVSuffix());
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);
+ centreColumnLabelsMenuItem.setState(av.isCentreColumnLabels());
+ renderGapsMenuItem.setSelected(av.isRenderGaps());
+ wrapMenuItem.setSelected(av.getWrapAlignment());
+ scaleAbove.setVisible(av.getWrapAlignment());
+ scaleLeft.setVisible(av.getWrapAlignment());
+ scaleRight.setVisible(av.getWrapAlignment());
annotationPanelMenuItem.setState(av.isShowAnnotation());
/*
* Show/hide annotations only enabled if annotation panel is shown
hideAllSeqAnnotations.setEnabled(annotationPanelMenuItem.getState());
showAllAlAnnotations.setEnabled(annotationPanelMenuItem.getState());
hideAllAlAnnotations.setEnabled(annotationPanelMenuItem.getState());
- viewBoxesMenuItem.setSelected(av.showBoxes);
- viewTextMenuItem.setSelected(av.showText);
+ viewBoxesMenuItem.setSelected(av.getShowBoxes());
+ viewTextMenuItem.setSelected(av.getShowText());
showNonconservedMenuItem.setSelected(av.getShowUnconserved());
showGroupConsensus.setSelected(av.isShowGroupConsensus());
showGroupConservation.setSelected(av.isShowGroupConservation());
.getGlobalColourScheme()));
showSeqFeatures.setSelected(av.isShowSequenceFeatures());
- hiddenMarkers.setState(av.showHiddenMarkers);
+ hiddenMarkers.setState(av.getShowHiddenMarkers());
applyToAllGroups.setState(av.getColourAppliesToAllGroups());
- showNpFeatsMenuitem.setSelected(av.isShowNpFeats());
- showDbRefsMenuitem.setSelected(av.isShowDbRefs());
+ showNpFeatsMenuitem.setSelected(av.isShowNPFeats());
+ showDbRefsMenuitem.setSelected(av.isShowDBRefs());
autoCalculate.setSelected(av.autoCalculateConsensus);
sortByTree.setSelected(av.sortByTree);
listenToViewSelections.setSelected(av.followSelection);
return;
}
- List<SequenceI> seqs = new ArrayList<SequenceI>(sg.getSize());
- SequenceI seq;
- for (int i = 0; i < sg.getSize(); i++)
- {
- seq = sg.getSequenceAt(i);
- seqs.add(seq);
- }
-
- // If the cut affects all sequences, warn, remove highlighted columns
+ /*
+ * If the cut affects all sequences, warn, remove highlighted columns
+ */
if (sg.getSize() == viewport.getAlignment().getHeight())
{
int confirm = JOptionPane.showConfirmDialog(this,
sg.getEndRes() + 1);
}
- SequenceI[] cut = new SequenceI[seqs.size()];
- for (int i = 0; i < seqs.size(); i++)
- {
- cut[i] = seqs.get(i);
- }
+ SequenceI[] cut = sg.getSequences()
+ .toArray(new SequenceI[sg.getSize()]);
- /*
- * //ADD HISTORY ITEM
- */
addHistoryItem(new EditCommand(
MessageManager.getString("label.cut_sequences"), Action.CUT,
cut, sg.getStartRes(), sg.getEndRes() - sg.getStartRes() + 1,
newap.av.getAlignment().deleteAllAnnotations(false);
}
- newap.av.gatherViewsHere = false;
+ newap.av.setGatherViewsHere(false);
if (viewport.viewName == null)
{
if (alignPanels.size() == 2)
{
- viewport.gatherViewsHere = true;
+ viewport.setGatherViewsHere(true);
}
tabbedPane.setSelectedIndex(tabbedPane.getTabCount() - 1);
return newap;
@Override
public void centreColumnLabels_actionPerformed(ActionEvent e)
{
- viewport.centreColumnLabels = centreColumnLabelsMenuItem.getState();
+ viewport.setCentreColumnLabels(centreColumnLabelsMenuItem.getState());
alignPanel.paintAlignment(true);
}
@Override
protected void followHighlight_actionPerformed()
{
+ /*
+ * Set the 'follow' flag on the Viewport (and scroll to position if now
+ * true).
+ */
if (viewport.followHighlight = this.followHighlightMenuItem.getState())
{
alignPanel.scrollToPosition(
scaleLeft.setVisible(wrapMenuItem.isSelected());
scaleRight.setVisible(wrapMenuItem.isSelected());
viewport.setWrapAlignment(wrapMenuItem.isSelected());
- alignPanel.setWrapAlignment(wrapMenuItem.isSelected());
+ alignPanel.updateLayout();
}
@Override
public void hideSelSequences_actionPerformed(ActionEvent e)
{
viewport.hideAllSelectedSeqs();
- alignPanel.paintAlignment(true);
+// alignPanel.paintAlignment(true);
}
/**
{
final boolean setVisible = annotationPanelMenuItem.isSelected();
viewport.setShowAnnotation(setVisible);
- alignPanel.setAnnotationVisible(setVisible);
this.showAllSeqAnnotations.setEnabled(setVisible);
this.hideAllSeqAnnotations.setEnabled(setVisible);
this.showAllAlAnnotations.setEnabled(setVisible);
this.hideAllAlAnnotations.setEnabled(setVisible);
+ alignPanel.updateLayout();
}
@Override
{
threshold = SliderPanel.setPIDSliderSource(alignPanel, cs,
"Background");
- cs.setThreshold(threshold, viewport.getIgnoreGapsConsensus());
+ cs.setThreshold(threshold, viewport.isIgnoreGapsConsensus());
}
else
{
- cs.setThreshold(0, viewport.getIgnoreGapsConsensus());
+ cs.setThreshold(0, viewport.isIgnoreGapsConsensus());
}
if (viewport.getConservationSelected())
|| cs instanceof PIDColourScheme
|| cs instanceof Blosum62ColourScheme)
{
- sg.cs.setThreshold(threshold, viewport.getIgnoreGapsConsensus());
+ sg.cs.setThreshold(threshold, viewport.isIgnoreGapsConsensus());
sg.cs.setConsensus(AAFrequency.calculate(
sg.getSequences(viewport.getHiddenRepSequences()),
}
else
{
- sg.cs.setThreshold(0, viewport.getIgnoreGapsConsensus());
+ sg.cs.setThreshold(0, viewport.isIgnoreGapsConsensus());
}
if (viewport.getConservationSelected())
* DOCUMENT ME!
*/
@Override
- protected void LoadtreeMenuItem_actionPerformed(ActionEvent e)
+ protected void loadTreeMenuItem_actionPerformed(ActionEvent e)
{
// Pick the tree file
JalviewFileChooser chooser = new JalviewFileChooser(
public void actionPerformed(ActionEvent e)
{
// TODO: new thread for this call with vis-delay
- af.showProductsFor(af.viewport.getSequenceSelection(), ds,
+ af.showProductsFor(af.viewport.getSequenceSelection(),
isRegSel, dna, source);
}
return showp;
}
- protected void showProductsFor(SequenceI[] sel, Alignment ds,
- boolean isRegSel, boolean dna, String source)
+ protected void showProductsFor(final SequenceI[] sel,
+ final boolean isRegSel, final boolean dna, final String source)
{
- final boolean fisRegSel = isRegSel;
- final boolean fdna = dna;
- final String fsrc = source;
- final AlignFrame ths = this;
- final SequenceI[] fsel = sel;
Runnable foo = new Runnable()
{
public void run()
{
final long sttime = System.currentTimeMillis();
- ths.setProgressBar(MessageManager.formatMessage("status.searching_for_sequences_from", new Object[]{fsrc}), sttime);
+ AlignFrame.this.setProgressBar(MessageManager.formatMessage(
+ "status.searching_for_sequences_from", new Object[]
+ { source }), sttime);
try
{
- Alignment ds = ths.getViewport().getAlignment().getDataset(); // update
- // our local
- // dataset
- // reference
+ // update our local dataset reference
+ Alignment ds = AlignFrame.this.getViewport().getAlignment()
+ .getDataset();
Alignment prods = CrossRef
- .findXrefSequences(fsel, fdna, fsrc, ds);
+ .findXrefSequences(sel, dna, source, ds);
if (prods != null)
{
SequenceI[] sprods = new SequenceI[prods.getHeight()];
}
AlignFrame naf = new AlignFrame(al, DEFAULT_WIDTH,
DEFAULT_HEIGHT);
- String newtitle = "" + ((fdna) ? "Proteins " : "Nucleotides ")
- + " for " + ((fisRegSel) ? "selected region of " : "")
+ String newtitle = "" + ((dna) ? "Proteins" : "Nucleotides")
+ + " for " + ((isRegSel) ? "selected region of " : "")
+ getTitle();
- Desktop.addInternalFrame(naf, newtitle, DEFAULT_WIDTH,
- DEFAULT_HEIGHT);
+ naf.setTitle(newtitle);
+
+ // remove this flag once confirmed we want a split view
+ boolean asSplitFrame = true;
+ if (asSplitFrame)
+ {
+ final Alignment copyAlignment = new Alignment(new Alignment(
+ AlignFrame.this.viewport.getSequenceSelection()));
+ AlignFrame copyThis = new AlignFrame(copyAlignment,
+ AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
+ copyThis.setTitle(AlignFrame.this.getTitle());
+ // SplitFrame with dna above, protein below
+ SplitFrame sf = new SplitFrame(dna ? copyThis : naf,
+ dna ? naf : copyThis);
+ naf.setVisible(true);
+ copyThis.setVisible(true);
+ String linkedTitle = MessageManager
+ .getString("label.linked_view_title");
+ Desktop.addInternalFrame(sf, linkedTitle, -1, -1);
+ }
+ else
+ {
+ Desktop.addInternalFrame(naf, newtitle, DEFAULT_WIDTH,
+ DEFAULT_HEIGHT);
+ }
}
else
{
System.err.println("No Sequences generated for xRef type "
- + fsrc);
+ + source);
}
} catch (Exception e)
{
jalview.bin.Cache.log.error("Error when finding crossreferences",
e);
}
- ths.setProgressBar(MessageManager.formatMessage("status.finished_searching_for_sequences_from", new Object[]{fsrc}),
+ AlignFrame.this.setProgressBar(MessageManager.formatMessage(
+ "status.finished_searching_for_sequences_from",
+ new Object[]
+ { source }),
sttime);
}
/**
* Construct and display a new frame containing the translation of this
- * frame's cDNA sequences to their aligned protein (amino acid) equivalents.
+ * frame's DNA sequences to their aligned protein (amino acid) equivalents.
*/
@Override
public void showTranslation_actionPerformed(ActionEvent e)
else
{
AlignFrame af = new AlignFrame(al, DEFAULT_WIDTH, DEFAULT_HEIGHT);
- Desktop.addInternalFrame(af, MessageManager.formatMessage(
+ af.setFileFormat(this.currentFileFormat);
+ final String newTitle = MessageManager.formatMessage(
"label.translation_of_params", new Object[]
- { this.getTitle() }), DEFAULT_WIDTH, DEFAULT_HEIGHT);
- // enable next line for linked editing
- // viewport.getStructureSelectionManager().addCommandListener(viewport);
+ { this.getTitle() });
+ af.setTitle(newTitle);
+ final SequenceI[] seqs = viewport.getSelectionAsNewSequence();
+ viewport.openSplitFrame(af, new Alignment(seqs), al.getCodonFrames());
+ // Desktop.addInternalFrame(af, newTitle, DEFAULT_WIDTH, DEFAULT_HEIGHT);
}
}
/**
+ * Set the file format
+ *
+ * @param fileFormat
+ */
+ public void setFileFormat(String fileFormat)
+ {
+ this.currentFileFormat = fileFormat;
+ }
+
+ /**
* Try to load a features file onto the alignment.
*
* @param file
new JnetAnnotationMaker();
JnetAnnotationMaker.add_annotation(predictions,
viewport.getAlignment(), 0, false);
+ SequenceI repseq = viewport.getAlignment().getSequenceAt(0);
+ viewport.getAlignment().setSeqrep(repseq);
+ ColumnSelection cs = new ColumnSelection();
+ cs.hideInsertionsFor(repseq);
+ viewport.setColumnSelection(cs);
isAnnotation = true;
}
else
@Override
protected void showDbRefs_actionPerformed(ActionEvent e)
{
- viewport.setShowDbRefs(showDbRefsMenuitem.isSelected());
+ viewport.setShowDBRefs(showDbRefsMenuitem.isSelected());
}
/*
@Override
protected void showNpFeats_actionPerformed(ActionEvent e)
{
- viewport.setShowNpFeats(showNpFeatsMenuitem.isSelected());
+ viewport.setShowNPFeats(showNpFeatsMenuitem.isSelected());
}
/**
throw new Error(MessageManager.getString("error.implementation_error_cannot_show_view_alignment_frame"));
}
if (tabbedPane != null
- & alignPanels.indexOf(alignmentPanel) != tabbedPane
+ && tabbedPane.getTabCount() > 0
+ && alignPanels.indexOf(alignmentPanel) != tabbedPane
.getSelectedIndex())
{
tabbedPane.setSelectedIndex(alignPanels.indexOf(alignmentPanel));
* Open a new alignment window, with the cDNA associated with this (protein)
* alignment, aligned as is the protein.
*/
- @Override
protected void viewAsCdna_actionPerformed()
{
+ // TODO no longer a menu action - refactor as required
final AlignmentI alignment = getViewport().getAlignment();
Set<AlignedCodonFrame> mappings = alignment.getCodonFrames();
if (mappings == null)
Desktop.addInternalFrame(alignFrame, newtitle,
AlignFrame.DEFAULT_WIDTH,
AlignFrame.DEFAULT_HEIGHT);
+ }
+ /**
+ * Set visibility of dna/protein complement view (available when shown in a
+ * split frame).
+ *
+ * @param show
+ */
+ @Override
+ protected void showComplement_actionPerformed(boolean show)
+ {
+ SplitContainerI sf = getSplitViewContainer();
+ if (sf != null) {
+ sf.setComplementVisible(this, show);
+ }
}
}