{
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())
- {
- hideSelSequences_actionPerformed(null);
- hide = true;
- }
- else if (!(toggleCols && viewport.colSel.getSelected().size() > 0))
- {
- showAllSeqs_actionPerformed(null);
- }
- }
-
- if (toggleCols)
- {
- if (viewport.colSel.getSelected().size() > 0)
- {
- hideSelColumns_actionPerformed(null);
- if (!toggleSeqs)
- {
- viewport.selectionGroup = sg;
- }
- }
- else if (!hide)
- {
- showAllColumns_actionPerformed(null);
- }
- }
- break;
+ toggleHiddenRegions(toggleSeqs,toggleCols);
+ break;
}
case KeyEvent.VK_PAGE_UP:
if (viewport.wrapAlignment)
showTranslation.setVisible(nucleotide);
conservationMenuItem.setEnabled(!nucleotide);
modifyConservation.setEnabled(!nucleotide);
-
+ showGroupConservation.setEnabled(!nucleotide);
// Remember AlignFrame always starts as protein
if (!nucleotide)
{
viewBoxesMenuItem.setSelected(av.showBoxes);
viewTextMenuItem.setSelected(av.showText);
showUnconservedMenuItem.setSelected(av.showUnconserved);
+ showGroupConsensus.setSelected(av.showGroupConsensus);
+ showGroupConservation.setSelected(av.showGroupConservation);
+ showConsensusHistogram.setSelected(av.showConsensusHistogram);
+ showSequenceLogo.setSelected(av.showSequenceLogo);
setColourSelected(ColourSchemeProperty.getColourName(av
.getGlobalColourScheme()));
}
JPanel progressPanel;
+ Long lId=new Long(id);
GridLayout layout = (GridLayout) statusPanel.getLayout();
- if (progressBars.get(new Long(id)) != null)
+ if (progressBars.get(lId) != null)
{
progressPanel = (JPanel) progressBars.get(new Long(id));
statusPanel.remove(progressPanel);
- progressBars.remove(progressPanel);
+ progressBars.remove(lId);
progressPanel = null;
if (message != null)
{
statusBar.setText(message);
}
- if (progressBarHandlers.contains(new Long(id)))
+ if (progressBarHandlers.contains(lId))
{
- progressBarHandlers.remove(new Long(id));
+ progressBarHandlers.remove(lId);
}
layout.setRows(layout.getRows() - 1);
}
layout.setRows(layout.getRows() + 1);
statusPanel.add(progressPanel);
- progressBars.put(new Long(id), progressPanel);
+ progressBars.put(lId, progressPanel);
}
// update GUI
setMenusForViewport();
{
if (fileName != null)
{
+ // TODO: work out how to recover feature settings for correct view(s) when file is reloaded.
if (currentFileFormat.equals("Jalview"))
{
JInternalFrame[] frames = Desktop.desktop.getAllFrames();
protocol, currentFileFormat);
newframe.setBounds(bounds);
-
+ if (featureSettings!=null && featureSettings.isShowing()) {
+ final Rectangle fspos = featureSettings.frame.getBounds();
+ // TODO: need a 'show feature settings' function that takes bounds - need to refactor Desktop.addFrame
+ newframe.featureSettings_actionPerformed(null);
+ final FeatureSettings nfs = newframe.featureSettings;
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run()
+ {
+ nfs.frame.setBounds(fspos);
+ }
+ });
+ this.featureSettings.close();
+ this.featureSettings=null;
+ }
this.closeMenuItem_actionPerformed(true);
}
}
{
if (!jalview.io.AppletFormatAdapter.isValidFormat(format, true))
{
- // JBPNote need to have a raise_gui flag here
- JOptionPane.showInternalMessageDialog(this, "Cannot save file "
- + fileName + " using format " + format,
- "Alignment output format not supported",
- JOptionPane.WARNING_MESSAGE);
+ warningMessage("Cannot save file " + fileName + " using format "
+ + format, "Alignment output format not supported");
saveAs_actionPerformed(null);
+ // JBPNote need to have a raise_gui flag here
return false;
}
return success;
}
+ private void warningMessage(String warning, String title)
+ {
+ if (new jalview.util.Platform().isHeadless())
+ {
+ System.err.println("Warning: " + title + "\nWarning: " + warning);
+
+ }
+ else
+ {
+ JOptionPane.showInternalMessageDialog(this, warning, title,
+ JOptionPane.WARNING_MESSAGE);
+ }
+ return;
+ }
+
/**
* DOCUMENT ME!
*
viewport.historyList.push(command);
viewport.redoList.clear();
updateEditMenuBar();
- viewport.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null;
+ viewport.hasHiddenColumns = (viewport.colSel!=null && viewport.colSel.getHiddenColumns() != null && viewport.colSel.getHiddenColumns().size()>0);
}
}
if (originalSource != null)
{
- originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null;
+ originalSource.hasHiddenColumns = (viewport.colSel!=null && viewport.colSel.getHiddenColumns() != null && viewport.colSel.getHiddenColumns().size()>0);
originalSource.firePropertyChange("alignment", null,
originalSource.alignment.getSequences());
}
if (originalSource != null)
{
- originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null;
+ originalSource.hasHiddenColumns = (viewport.colSel!=null && viewport.colSel.getHiddenColumns() != null && viewport.colSel.getHiddenColumns().size()>0);
originalSource.firePropertyChange("alignment", null,
originalSource.alignment.getSequences());
}
viewport.sequenceColours = null;
viewport.setSelectionGroup(null);
PaintRefresher.Refresh(this, viewport.getSequenceSetId());
+ alignPanel.updateAnnotation();
alignPanel.paintAlignment(true);
}
viewport.hideAllSelectedSeqs();
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(null);
+ sg = viewport.getSelectionGroup();
+ toggleSeqs = true;
+
+ }
+ viewport.expandColSelection(sg,true);
+ // finally invert the column selection and get the new sequence selection.
+ invertColSel_actionPerformed(null);
+ toggleCols = true;
+ }
+ }
+
+ if (toggleSeqs)
+ {
+ if (sg != null
+ && sg.getSize() != viewport.alignment.getHeight())
+ {
+ hideSelSequences_actionPerformed(null);
+ hide = true;
+ }
+ else if (!(toggleCols && viewport.colSel.getSelected().size() > 0))
+ {
+ showAllSeqs_actionPerformed(null);
+ }
+ }
+
+ if (toggleCols)
+ {
+ if (viewport.colSel.getSelected().size() > 0)
+ {
+ hideSelColumns_actionPerformed(null);
+ if (!toggleSeqs)
+ {
+ viewport.selectionGroup = sg;
+ }
+ }
+ else if (!hide)
+ {
+ showAllColumns_actionPerformed(null);
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see jalview.jbgui.GAlignFrame#hideAllButSelection_actionPerformed(java.awt.event.ActionEvent)
+ */
+ public void hideAllButSelection_actionPerformed(ActionEvent e)
+ {
+ toggleHiddenRegions(false, false);
+ }
+
+ /* (non-Javadoc)
+ * @see jalview.jbgui.GAlignFrame#hideAllSelection_actionPerformed(java.awt.event.ActionEvent)
+ */
+ public void hideAllSelection_actionPerformed(ActionEvent e)
+ {
+ SequenceGroup sg = viewport.getSelectionGroup();
+ viewport.expandColSelection(sg,false);
+ viewport.hideAllSelectedSeqs();
+ viewport.hideSelectedColumns();
+ alignPanel.paintAlignment(true);
+ }
+
+ /* (non-Javadoc)
+ * @see jalview.jbgui.GAlignFrame#showAllhidden_actionPerformed(java.awt.event.ActionEvent)
+ */
+ public void showAllhidden_actionPerformed(ActionEvent e)
+ {
+ viewport.showAllHiddenColumns();
+ viewport.showAllHiddenSeqs();
+ alignPanel.paintAlignment(true);
+ }
public void hideSelColumns_actionPerformed(ActionEvent e)
{
featureSettings.close();
featureSettings = null;
}
+ if (!showSeqFeatures.isSelected())
+ {
+ // make sure features are actually displayed
+ showSeqFeatures.setSelected(true);
+ showSeqFeatures_actionPerformed(null);
+ }
featureSettings = new FeatureSettings(this);
}
}
else
{
- // are the sequences aligned?
- if (!viewport.alignment.isAligned())
+ // are the visible sequences aligned?
+ if (!viewport.alignment.isAligned(false))
{
JOptionPane
.showMessageDialog(
// jobs
// TODO: viewport.alignment.isAligned is a global state - the local
// selection may well be aligned - we preserve 2.0.8 behaviour for moment.
- if (!viewport.alignment.isAligned())
+ if (!viewport.alignment.isAligned(false))
{
seqs.setSequences(new SeqCigar[]
{ seqs.getSequences()[0] });
+ // TODO: if seqs.getSequences().length>1 then should really have warned user!
+
}
return seqs;
}
.getServiceClient(sh);
impl.attachWSMenuEntry(seqsrchmenu, this);
}
- // finally, add the whole shebang onto the webservices menu
wsmenu.add(seqsrchmenu);
}
+ // finally, add the whole shebang onto the webservices menu
resetWebServiceMenu();
for (int i = 0, j = wsmenu.size(); i < j; i++)
{
{
webService.removeAll();
build_fetchdbmenu(webService);
+ build_urlServiceMenu(webService);
+ }
+
+ /**
+ * construct any groupURL type service menu entries.
+ * @param webService
+ */
+ private void build_urlServiceMenu(JMenu webService)
+ {
+ jalview.ws.EnfinEnvision2OneWay.getInstance().attachWSMenuEntry(webService, this);
}
/*
// update the min/max ranges where necessary
alignPanel.seqPanel.seqCanvas.fr.findAllFeatures(true);
}
+ if (featureSettings!=null)
+ {
+ featureSettings.setTableData();
+ }
alignPanel.paintAlignment(true);
}
}
/**
- * Attempt to load a "dropped" file or URL string: First by testing whether it's and
- * Annotation file, then a JNet file, and finally a features file. If all are
- * false then the user may have dropped an alignment file onto this
+ * Attempt to load a "dropped" file or URL string: First by testing whether
+ * it's and Annotation file, then a JNet file, and finally a features file. If
+ * all are false then the user may have dropped an alignment file onto this
* AlignFrame.
*
* @param file
try
{
String protocol = jalview.io.FormatAdapter.FILE;
- String f=file.toLowerCase();
- if (f.indexOf("http:") == 0 || f.indexOf("https:")==0 || f.indexOf("file:") == 0)
+ String f = file.toLowerCase();
+ if (f.indexOf("http:") == 0 || f.indexOf("https:") == 0
+ || f.indexOf("file:") == 0)
{
protocol = jalview.io.FormatAdapter.URL;
}
viewport.setShowUnconserved(showUnconservedMenuItem.getState());
alignPanel.paintAlignment(true);
}
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * jalview.jbgui.GAlignFrame#showGroupConsensus_actionPerformed(java.awt.event
+ * .ActionEvent)
+ */
+ protected void showGroupConsensus_actionPerformed(ActionEvent e)
+ {
+ viewport.setShowGroupConsensus(showGroupConsensus.getState());
+ alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState());
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * jalview.jbgui.GAlignFrame#showGroupConservation_actionPerformed(java.awt
+ * .event.ActionEvent)
+ */
+ protected void showGroupConservation_actionPerformed(ActionEvent e)
+ {
+ viewport.setShowGroupConservation(showGroupConservation.getState());
+ alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState());
+ }
+
+ /* (non-Javadoc)
+ * @see jalview.jbgui.GAlignFrame#showConsensusHistogram_actionPerformed(java.awt.event.ActionEvent)
+ */
+ protected void showConsensusHistogram_actionPerformed(ActionEvent e)
+ {
+ viewport.setShowConsensusHistogram(showConsensusHistogram.getState());
+ alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState());
+ }
+
+ /* (non-Javadoc)
+ * @see jalview.jbgui.GAlignFrame#showConsensusProfile_actionPerformed(java.awt.event.ActionEvent)
+ */
+ protected void showSequenceLogo_actionPerformed(ActionEvent e)
+ {
+ viewport.setShowSequenceLogo(showSequenceLogo.getState());
+ alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState());
+ }
+ protected void applyAutoAnnotationSettings_actionPerformed(ActionEvent e)
+ {
+ alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState());
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * jalview.jbgui.GAlignFrame#makeGrpsFromSelection_actionPerformed(java.awt
+ * .event.ActionEvent)
+ */
+ protected void makeGrpsFromSelection_actionPerformed(ActionEvent e)
+ {
+ 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);
+ }
+ }
}
class PrintThread extends Thread