*/
package jalview.gui;
-import jalview.analysis.AAFrequency;
import jalview.analysis.AlignmentSorter;
import jalview.analysis.AlignmentUtils;
-import jalview.analysis.Conservation;
import jalview.analysis.CrossRef;
import jalview.analysis.Dna;
import jalview.analysis.ParseProperties;
import jalview.analysis.SequenceIdMatcher;
+import jalview.api.AlignExportSettingI;
import jalview.api.AlignViewControllerGuiI;
import jalview.api.AlignViewControllerI;
import jalview.api.AlignViewportI;
import jalview.api.ViewStyleI;
import jalview.api.analysis.ScoreModelI;
import jalview.bin.Cache;
+import jalview.bin.Jalview;
import jalview.commands.CommandI;
import jalview.commands.EditCommand;
import jalview.commands.EditCommand.Action;
import jalview.datamodel.AlignedCodonFrame;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentExportData;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.AlignmentOrder;
import jalview.datamodel.AlignmentView;
*/
void init()
{
- progressBar = new ProgressBar(this.statusPanel, this.statusBar);
+ if (!Jalview.isHeadlessMode())
+ {
+ progressBar = new ProgressBar(this.statusPanel, this.statusBar);
+ }
avc = new jalview.controller.AlignViewController(this, viewport,
alignPanel);
public void internalFrameClosed(
javax.swing.event.InternalFrameEvent evt)
{
- System.out.println("deregistering discoverer listener");
+ // System.out.println("deregistering discoverer listener");
Desktop.instance.removeJalviewPropertyChangeListener("services",
thisListener);
closeMenuItem_actionPerformed(true);
@Override
public void addFromText_actionPerformed(ActionEvent e)
{
- Desktop.instance.inputTextboxMenuItem_actionPerformed(viewport);
+ Desktop.instance.inputTextboxMenuItem_actionPerformed(viewport
+ .getAlignPanel());
}
@Override
{
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
+ if (!Jalview.isHeadlessMode())
+ {
+ saveAs_actionPerformed(null);
+ }
return false;
}
- ExportData exportData = getAlignmentForExport(format);
- FormatAdapter f = new FormatAdapter(alignPanel);
+ AlignmentExportData exportData = getAlignmentForExport(format,
+ viewport, null);
+ if (exportData.getSettings().isCancelled())
+ {
+ return false;
+ }
+ FormatAdapter f = new FormatAdapter(alignPanel,
+ exportData.getSettings());
String output = f.formatSequences(format,
exportData.getAlignment(), // class cast exceptions will
// occur in the distant future
protected void outputText_actionPerformed(ActionEvent e)
{
- ExportData exportData = getAlignmentForExport(e.getActionCommand());
+ AlignmentExportData exportData = getAlignmentForExport(
+ e.getActionCommand(), viewport, null);
if (exportData.getSettings().isCancelled())
{
return;
}
- public ExportData getAlignmentForExport(String exportFomat)
+ public static AlignmentExportData getAlignmentForExport(String exportFormat,
+ AlignViewportI viewport,
+ AlignExportSettingI exportSettings)
{
AlignmentI alignmentToExport = null;
+ AlignExportSettingI settings = exportSettings;
String[] omitHidden = null;
int[] alignmentStartEnd = new int[2];
{ 0, alignmentToExport.getWidth() - 1 };
boolean hasHiddenSeqs = hiddenSeqs.getSize() > 0;
- AlignExportSettings settings = new AlignExportSettings(hasHiddenSeqs,
- viewport.hasHiddenColumns(), exportFomat);
- settings.isExportAnnotations();
+ if (settings == null)
+ {
+ settings = new AlignExportSettings(hasHiddenSeqs,
+ viewport.hasHiddenColumns(), exportFormat);
+ }
+ // settings.isExportAnnotations();
if (viewport.hasHiddenColumns() && !settings.isExportHiddenColumns())
{
alignmentStartEnd = getStartEnd(alignmentStartEnd, viewport
.getColumnSelection().getHiddenColumns());
}
- return new ExportData(alignmentToExport, omitHidden, alignmentStartEnd,
+ AlignmentExportData ed = new AlignmentExportData(alignmentToExport, omitHidden, alignmentStartEnd,
settings);
+ return ed;
}
- private static int[] getStartEnd(int[] aligmentStartEnd,
+ public static int[] getStartEnd(int[] aligmentStartEnd,
List<int[]> hiddenCols)
{
int startPos = aligmentStartEnd[0];
for (int[] hiddenCol : hiddenCols)
{
// System.out.println("comparing : " + hiddenCol[0] + "-" + hiddenCol[1]);
-
lowestRange = (hiddenCol[0] <= startPos) ? hiddenCol : lowestRange;
higestRange = (hiddenCol[1] >= endPos) ? hiddenCol : higestRange;
}
if (closeAllTabs)
{
+ /*
+ * this will raise an INTERNAL_FRAME_CLOSED event and this method will
+ * be called recursively, with the frame now in 'closed' state
+ */
this.setClosed(true);
}
} catch (Exception ex)
viewport.getSelectionGroup().getEndRes() + groupAdjustment);
}
+ /*
+ * just extend the last slide command if compatible; but not if in
+ * SplitFrame mode (to ensure all edits are broadcast - JAL-1802)
+ */
boolean appendHistoryItem = false;
Deque<CommandI> historyList = viewport.getHistoryList();
- if (historyList != null
+ boolean inSplitFrame = getSplitViewContainer() != null;
+ if (!inSplitFrame && historyList != null
&& historyList.size() > 0
&& historyList.peek() instanceof SlideSequencesCommand)
{
}
/*
- * Views share the same edits, undo and redo stacks, mappings.
+ * Views share the same edits undo and redo stacks
*/
newap.av.setHistoryList(viewport.getHistoryList());
newap.av.setRedoList(viewport.getRedoList());
- newap.av.getAlignment().setCodonFrames(
- viewport.getAlignment().getCodonFrames());
+
+ /*
+ * Views share the same mappings; need to deregister any new mappings
+ * created by copyAlignPanel, and register the new reference to the shared
+ * mappings
+ */
+ newap.av.replaceMappings(viewport.getAlignment());
newap.av.viewName = getNewViewName(viewTitle);
*/
public void changeColour(ColourSchemeI cs)
{
- // TODO: compare with applet and pull up to model method
- int threshold = 0;
+ // TODO: pull up to controller method
if (cs != null)
{
+ // Make sure viewport is up to date w.r.t. any sliders
if (viewport.getAbovePIDThreshold())
{
- threshold = SliderPanel.setPIDSliderSource(alignPanel, cs,
+ int threshold = SliderPanel.setPIDSliderSource(alignPanel, cs,
"Background");
- cs.setThreshold(threshold, viewport.isIgnoreGapsConsensus());
- }
- else
- {
- cs.setThreshold(0, viewport.isIgnoreGapsConsensus());
+ viewport.setThreshold(threshold);
}
if (viewport.getConservationSelected())
{
-
- Alignment al = (Alignment) viewport.getAlignment();
- Conservation c = new Conservation("All",
- ResidueProperties.propHash, 3, al.getSequences(), 0,
- al.getWidth() - 1);
-
- c.calculate();
- c.verdict(false, viewport.getConsPercGaps());
-
- cs.setConservation(c);
-
cs.setConservationInc(SliderPanel.setConservationSlider(alignPanel,
cs, "Background"));
}
- else
- {
- cs.setConservation(null);
- }
-
- cs.setConsensus(viewport.getSequenceConsensusHash());
}
viewport.setGlobalColourScheme(cs);
- if (viewport.getColourAppliesToAllGroups())
- {
-
- for (SequenceGroup sg : viewport.getAlignment().getGroups())
- {
- if (cs == null)
- {
- sg.cs = null;
- continue;
- }
-
- if (cs instanceof ClustalxColourScheme)
- {
- sg.cs = new ClustalxColourScheme(sg,
- viewport.getHiddenRepSequences());
- }
- else if (cs instanceof UserColourScheme)
- {
- sg.cs = new UserColourScheme(((UserColourScheme) cs).getColours());
- }
- else
- {
- try
- {
- sg.cs = cs.getClass().newInstance();
- } catch (Exception ex)
- {
- }
- }
-
- if (viewport.getAbovePIDThreshold()
- || cs instanceof PIDColourScheme
- || cs instanceof Blosum62ColourScheme)
- {
- sg.cs.setThreshold(threshold, viewport.isIgnoreGapsConsensus());
-
- sg.cs.setConsensus(AAFrequency.calculate(
- sg.getSequences(viewport.getHiddenRepSequences()),
- sg.getStartRes(), sg.getEndRes() + 1));
- }
- else
- {
- sg.cs.setThreshold(0, viewport.isIgnoreGapsConsensus());
- }
-
- if (viewport.getConservationSelected())
- {
- Conservation c = new Conservation("Group",
- ResidueProperties.propHash, 3, sg.getSequences(viewport
- .getHiddenRepSequences()), sg.getStartRes(),
- sg.getEndRes() + 1);
- c.calculate();
- c.verdict(false, viewport.getConsPercGaps());
- sg.cs.setConservation(c);
- }
- else
- {
- sg.cs.setConservation(null);
- }
- }
- }
-
- if (alignPanel.getOverviewPanel() != null)
- {
- alignPanel.getOverviewPanel().updateOverviewImage();
- }
-
alignPanel.paintAlignment(true);
}
final List<JMenuItem> legacyItems = new ArrayList<JMenuItem>();
try
{
- System.err.println("Building ws menu again "
- + Thread.currentThread());
+ // System.err.println("Building ws menu again "
+ // + Thread.currentThread());
// TODO: add support for context dependent disabling of services based
// on
// alignment and current selection
al.getCodonFrames().addAll(cf);
final StructureSelectionManager ssm = StructureSelectionManager
.getStructureSelectionManager(Desktop.instance);
- ssm.addMappings(cf);
+ ssm.registerMappings(cf);
}
else
{
"Exception during translation. Please report this !", ex);
final String msg = MessageManager
.getString("label.error_when_translating_sequences_submit_bug_report");
- final String title = MessageManager
+ final String errorTitle = MessageManager
.getString("label.implementation_error")
+ MessageManager.getString("translation_failed");
- JOptionPane.showMessageDialog(Desktop.desktop, msg, title,
+ JOptionPane.showMessageDialog(Desktop.desktop, msg, errorTitle,
JOptionPane.ERROR_MESSAGE);
return;
}
{
final String msg = MessageManager
.getString("label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation");
- final String title = MessageManager
+ final String errorTitle = MessageManager
.getString("label.translation_failed");
- JOptionPane.showMessageDialog(Desktop.desktop, msg, title,
+ JOptionPane.showMessageDialog(Desktop.desktop, msg, errorTitle,
JOptionPane.WARNING_MESSAGE);
}
else
if (Cache.getDefault(Preferences.ENABLE_SPLIT_FRAME, true))
{
final SequenceI[] seqs = viewport.getSelectionAsNewSequence();
- viewport.openSplitFrame(af, new Alignment(seqs),
- al.getCodonFrames());
+ viewport.openSplitFrame(af, new Alignment(seqs));
}
else
{
aa.visible = visible;
}
}
- alignPanel.validateAnnotationDimensions(false);
+ alignPanel.validateAnnotationDimensions(true);
alignPanel.alignmentChanged();
}
sf.setComplementVisible(this, show);
}
}
-
- public class ExportData
- {
- private AlignmentI alignment;
-
- private String[] omitHidden;
-
- private int[] startEnd;
-
- private AlignExportSettings settings;
-
- public ExportData(AlignmentI align, String[] ommit, int[] startEnd,
- AlignExportSettings settings)
- {
- this.alignment = align;
- this.omitHidden = ommit;
- this.startEnd = startEnd;
- this.settings = settings;
- }
-
- public AlignmentI getAlignment()
- {
- return alignment;
- }
-
- public void setAlignment(AlignmentI alignment)
- {
- this.alignment = alignment;
- }
-
- public String[] getOmitHidden()
- {
- return omitHidden;
- }
-
- public void setOmitHidden(String[] omitHidden)
- {
- this.omitHidden = omitHidden;
- }
-
- public int[] getStartEndPostions()
- {
- return startEnd;
- }
-
- public void setStartEndPostions(int[] startEnd)
- {
- this.startEnd = startEnd;
- }
-
- public AlignExportSettings getSettings()
- {
- return settings;
- }
-
- public void setSettings(AlignExportSettings settings)
- {
- this.settings = settings;
- }
- }
-
}
class PrintThread extends Thread