--- /dev/null
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+
+package jalview.api;
+
+/**
+ * Abstract interface implemented by Alignment Export dialog to retrieve user
+ * configurations
+ *
+ * @author tcnofoegbu
+ *
+ */
+public interface AlignExportSettingI
+{
+ /**
+ * Checks if hidden sequences should be exported
+ *
+ * @return
+ */
+ public boolean isExportHiddenSequences();
+
+ /**
+ * Checks if hidden columns shoulb be exported
+ *
+ * @return
+ */
+ public boolean isExportHiddenColumns();
+
+ /**
+ * Checks if Annotations should be exported, note this is available for
+ * complex flat file exports like JSON, HTML, GFF
+ *
+ * @return
+ */
+ public boolean isExportAnnotations();
+
+ /**
+ * Checks if SequenceFeatures should be exported, note this is available for
+ * complex flat file exports like JSON, HTML, GFF
+ *
+ * @return
+ */
+ public boolean isExportFeatures();
+
+ /**
+ * Checks if SequenceGroups should be exported, note this is available for
+ * complex flat file exports like JSON, HTML, GFF
+ *
+ * @return
+ */
+ public boolean isExportGroups();
+
+ /**
+ * Checks if settings/export process is cancelled
+ *
+ * @return
+ */
+ public boolean isCancelled();
+}
*/
void setFollowHighlight(boolean b);
+ /**
+ * Returns a FeatureRenderer instance
+ *
+ * @return
+ */
public FeatureRenderer getFeatureRenderer();
+ /**
+ * Sets a FeatureRenderer for a viewport
+ *
+ * @param featureRenderer
+ */
public void setFeatureRenderer(FeatureRenderer featureRenderer);
- public boolean isIncludeHiddenRegion();
+ /**
+ * Returns Settings for exporting an Alignment
+ *
+ * @return
+ */
+ public AlignExportSettingI getExportSettings();
}
FeatureRenderer fr = this.alignPanel.cloneFeatureRenderer();
viewport.setFeatureRenderer(fr);
- viewport.setIncludeHiddenRegion(false);
cap.setText(new AppletFormatAdapter(viewport).formatSequences(
e.getActionCommand(), viewport.getAlignment(),
viewport.getShowJVSuffix()));
import java.awt.Font;
import jalview.analysis.NJTree;
+import jalview.api.AlignExportSettingI;
import jalview.api.AlignViewportI;
import jalview.api.FeatureRenderer;
import jalview.bin.JalviewLite;
private FeatureRenderer featureRenderer;
- private boolean includeHiddenRegion = true;
+ private AlignExportSettingI exportSettings;
public void finalize()
{
}
- public boolean isIncludeHiddenRegion()
+ public AlignExportSettingI getExportSettings()
{
- return includeHiddenRegion;
+ return exportSettings;
}
- public void setIncludeHiddenRegion(boolean includeHiddenRegion)
+ public void setExportSettings(AlignExportSettingI exportSettings)
{
- this.includeHiddenRegion = includeHiddenRegion;
+ this.exportSettings = exportSettings;
}
+
}
--- /dev/null
+package jalview.gui;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.JDialog;
+import javax.swing.JInternalFrame;
+import javax.swing.JOptionPane;
+
+import jalview.api.AlignExportSettingI;
+import jalview.jbgui.GAlignExportSettings;
+
+@SuppressWarnings("serial")
+public class AlignExportSettings extends GAlignExportSettings implements
+ AlignExportSettingI
+{
+ protected JInternalFrame frame;
+
+ boolean cancelled = false;
+
+ private int width = 450;
+
+ private int height = 200;
+
+ JDialog dialog;
+
+ public AlignExportSettings(boolean hasHiddenSeq, boolean hasHiddenCols,
+ String alignFileFormat)
+ {
+ super(hasHiddenSeq, hasHiddenCols, alignFileFormat);
+
+ // frame = new JInternalFrame();
+ // frame.setContentPane(this);
+ // frame.setLayer(JLayeredPane.PALETTE_LAYER);
+ // Desktop.addInternalFrame(frame, "Export Settings", width, height);
+
+ JOptionPane pane = new JOptionPane(null, JOptionPane.DEFAULT_OPTION,
+ JOptionPane.DEFAULT_OPTION, null, new Object[]
+ { this });
+ dialog = pane.createDialog(Desktop.desktop, "Export Settings");
+
+ // dialog = new JDialog(Desktop.instance, true);
+ // dialog.setTitle("Export Settings");
+
+ dialog.pack();
+ dialog.setVisible(true);
+
+ dialog.setContentPane(this);
+ dialog.validate();
+
+ }
+
+ // public static void main(String[] args)
+ // {
+ // new AlignExportSettings(false, false, false);
+ // }
+
+ // public void cancel_actionPerformed(ActionEvent e)
+ // {
+ // try
+ // {
+ // frame.setClosed(true);
+ // } catch (Exception ex)
+ // {
+ // }
+ // }
+
+ public void ok_actionPerformed(ActionEvent e)
+ {
+ cancelled = false;
+ dialog.setVisible(false);
+ }
+
+ public void cancel_actionPerformed(ActionEvent e)
+ {
+ cancelled = true;
+ dialog.setVisible(false);
+ }
+
+ @Override
+ public boolean isExportHiddenSequences()
+ {
+ return chkHiddenSeqs.isSelected();
+ }
+
+ @Override
+ public boolean isExportHiddenColumns()
+ {
+ return chkHiddenCols.isSelected();
+ }
+
+ @Override
+ public boolean isExportAnnotations()
+ {
+ return chkExportAnnots.isSelected();
+ }
+
+ @Override
+ public boolean isExportFeatures()
+ {
+ return chkExportFeats.isSelected();
+ }
+
+ @Override
+ public boolean isExportGroups()
+ {
+ return chkExportGrps.isSelected();
+ }
+
+ @Override
+ public boolean isCancelled()
+ {
+ return cancelled;
+ }
+
+}
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;
return false;
}
- ExportData exportData = getAlignmentForExport();
+ ExportData exportData = getAlignmentForExport(format);
FormatAdapter f = new FormatAdapter(viewport);
String output = f.formatSequences(format,
exportData.getAlignment(), // class cast exceptions will
protected void outputText_actionPerformed(ActionEvent e)
{
- ExportData exportData = getAlignmentForExport();
+ ExportData exportData = getAlignmentForExport(e.getActionCommand());
+ if (exportData.getSettings().isCancelled())
+ {
+ return;
+ }
CutAndPasteTransfer cap = new CutAndPasteTransfer();
cap.setForInput(null);
-
try
{
cap.setText(new FormatAdapter(viewport).formatSequences(
}
- public ExportData getAlignmentForExport()
+ public ExportData getAlignmentForExport(String exportFomat)
{
AlignmentI alignmentToExport = null;
String[] omitHidden = null;
alignmentStartEnd = new int[]
{ 0, alignmentToExport.getWidth() - 1 };
- if (viewport.hasHiddenColumns() || hiddenSeqs.getSize() > 0)
- {
- int reply = JOptionPane
- .showInternalConfirmDialog(
- Desktop.desktop,
- MessageManager
- .getString("label.alignment_contains_hidden_columns"),
- MessageManager
- .getString("action.save_omit_hidden_columns"),
- JOptionPane.YES_NO_OPTION,
- JOptionPane.QUESTION_MESSAGE);
+ boolean hasHiddenSeqs = hiddenSeqs.getSize() > 0;
+ AlignExportSettingI settings = new AlignExportSettings(hasHiddenSeqs,
+ viewport.hasHiddenColumns(), exportFomat);
+ viewport.setExportSettings(settings);
+ settings.isExportAnnotations();
- if (reply == JOptionPane.YES_OPTION)
- {
- // export only visible region
- omitHidden = viewport.getViewAsString(false);
- alignmentToExport = viewport.getAlignment();
- alignmentStartEnd = getStartEnd(alignmentStartEnd, viewport
- .getColumnSelection().getHiddenColumns());
- viewport.setIncludeHiddenRegion(false);
- }
- else
- {
- // export all region including visible
- alignmentToExport = hiddenSeqs.getFullAlignment();
- viewport.setIncludeHiddenRegion(true);
- }
+ if (viewport.hasHiddenColumns() && !settings.isExportHiddenColumns())
+ {
+ omitHidden = viewport.getViewAsString(false);
}
- return new ExportData(alignmentToExport, omitHidden, alignmentStartEnd);
+ if (hasHiddenSeqs && settings.isExportHiddenSequences())
+ {
+ alignmentToExport = hiddenSeqs.getFullAlignment();
+ }
+ else
+ {
+ alignmentToExport = viewport.getAlignment();
+ alignmentStartEnd = getStartEnd(alignmentStartEnd, viewport
+ .getColumnSelection().getHiddenColumns());
+ }
+ return new ExportData(alignmentToExport, omitHidden, alignmentStartEnd,
+ settings);
}
private static int[] getStartEnd(int[] aligmentStartEnd,
@Override
protected void htmlMenuItem_actionPerformed(ActionEvent e)
{
- // new HTMLOutput(alignPanel,
- // alignPanel.getSeqPanel().seqCanvas.getSequenceRenderer(),
- // alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer());
new HtmlSvgOutput(null, alignPanel);
}
private int[] startEnd;
- public ExportData(AlignmentI align, String[] ommit, int[] startEnd)
+ private AlignExportSettingI settings;
+
+ public ExportData(AlignmentI align, String[] ommit, int[] startEnd,
+ AlignExportSettingI settings)
{
this.alignment = align;
this.omitHidden = ommit;
this.startEnd = startEnd;
+ this.settings = settings;
}
public AlignmentI getAlignment()
{
this.startEnd = startEnd;
}
+
+ public AlignExportSettingI getSettings()
+ {
+ return settings;
+ }
+
+ public void setSettings(AlignExportSettingI settings)
+ {
+ this.settings = settings;
+ }
}
}
import jalview.analysis.AlignmentUtils;
import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
import jalview.analysis.NJTree;
+import jalview.api.AlignExportSettingI;
import jalview.api.AlignViewportI;
import jalview.api.FeatureRenderer;
import jalview.api.ViewStyleI;
private FeatureRenderer featureRenderer;
private boolean includeHiddenRegion = true;
+
+ private AlignExportSettingI exportSettings;
+
String viewName;
/*
this.featureRenderer = featureRenderer;
}
- public boolean isIncludeHiddenRegion()
+ public AlignExportSettingI getExportSettings()
{
- return includeHiddenRegion;
+ return exportSettings;
}
- public void setIncludeHiddenRegion(boolean includeHiddenRegion)
+ public void setExportSettings(AlignExportSettingI exportSettings)
{
- this.includeHiddenRegion = includeHiddenRegion;
+ this.exportSettings = exportSettings;
}
}
private FeatureRenderer fr;
- private JSONExportSettings jsonExportSettings;
-
private List<int[]> hiddenColumns;
private ColumnSelection columnSelection;
String jsonOutput = null;
try
{
- if (getJsonExportSettings() == null)
- {
- jsonExportSettings = new JSONExportSettings();
- jsonExportSettings.setExportAnnotations(true);
- jsonExportSettings.setExportGroups(true);
- jsonExportSettings.setExportJalviewSettings(true);
- jsonExportSettings.setExportSequenceFeatures(true);
- }
-
AlignmentPojo jsonAlignmentPojo = new AlignmentPojo();
if (getViewport() != null)
{
jsonAlignmentPojo.getSeqs().add(jsonSeqPojo);
}
- if (jsonExportSettings.isExportJalviewSettings())
+ jsonAlignmentPojo.setGlobalColorScheme(globalColorScheme);
+ jsonAlignmentPojo.getAppSettings().put("application", application);
+ jsonAlignmentPojo.getAppSettings().put("version", version);
+ jsonAlignmentPojo.getAppSettings().put("webStartUrl", webstartUrl);
+ jsonAlignmentPojo.getAppSettings().put("showSeqFeatures",
+ String.valueOf(showSeqFeatures));
+
+ String[] hiddenSections = getHiddenSections();
+ if (hiddenSections != null)
{
- jsonAlignmentPojo.setGlobalColorScheme(globalColorScheme);
- jsonAlignmentPojo.getAppSettings().put("application", application);
- jsonAlignmentPojo.getAppSettings().put("version", version);
- jsonAlignmentPojo.getAppSettings().put("webStartUrl", webstartUrl);
- jsonAlignmentPojo.getAppSettings().put("showSeqFeatures",
- String.valueOf(showSeqFeatures));
-
- String[] hiddenSections = exportHiddenSections();
- if (hiddenSections != null && getViewport().isIncludeHiddenRegion())
+ if (hiddenSections[0] != null
+ && getViewport().getExportSettings()
+ .isExportHiddenColumns())
{
- if (hiddenSections[0] != null)
- {
- jsonAlignmentPojo.getAppSettings().put("hiddenCols",
- String.valueOf(hiddenSections[0]));
- }
- if (hiddenSections[1] != null)
- {
- jsonAlignmentPojo.getAppSettings().put("hiddenSeqs",
- String.valueOf(hiddenSections[1]));
- }
+ jsonAlignmentPojo.getAppSettings().put("hiddenCols",
+ String.valueOf(hiddenSections[0]));
+ }
+ if (hiddenSections[1] != null
+ && getViewport().getExportSettings()
+ .isExportHiddenSequences())
+ {
+ jsonAlignmentPojo.getAppSettings().put("hiddenSeqs",
+ String.valueOf(hiddenSections[1]));
}
}
- if (jsonExportSettings.isExportAnnotations())
+ if (getViewport().getExportSettings().isExportAnnotations())
{
jsonAlignmentPojo
.setAlignAnnotation(annotationToJsonPojo(annotations));
}
- if (jsonExportSettings.isExportSequenceFeatures())
+ if (getViewport().getExportSettings().isExportFeatures())
{
jsonAlignmentPojo
.setSeqFeatures(sequenceFeatureToJsonPojo(seqs, fr));
}
- if (jsonExportSettings.isExportGroups() && seqGroups != null
+ if (getViewport().getExportSettings().isExportGroups()
+ && seqGroups != null
&& seqGroups.size() > 0)
{
for (SequenceGroup seqGrp : seqGroups)
return jsonOutput;
}
- public String[] exportHiddenSections()
+ public String[] getHiddenSections()
{
String[] hiddenSections = new String[2];
if (getViewport() == null)
this.displayedFeatures = displayedFeatures;
}
- public JSONExportSettings getJsonExportSettings()
- {
- return jsonExportSettings;
- }
-
- public void setJsonExportSettings(JSONExportSettings jsonExportSettings)
- {
- this.jsonExportSettings = jsonExportSettings;
- }
-
public static String getJSONData(AlignViewportI av)
{
--- /dev/null
+package jalview.jbgui;
+
+import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JPanel;
+
+@SuppressWarnings("serial")
+public abstract class GAlignExportSettings extends JPanel
+{
+ protected JPanel hiddenRegionConfPanel = new JPanel();
+
+ protected JPanel complexExportPanel = new JPanel();
+
+ protected JPanel optionsPanel = new JPanel();
+
+ protected JPanel actionPanel = new JPanel();
+
+ protected BorderLayout hiddenRegionLayout = new BorderLayout();
+
+ protected BorderLayout complexExportLayout = new BorderLayout();
+
+ protected BorderLayout mainLayout = new BorderLayout();
+
+ protected JCheckBox chkAll = new JCheckBox("Check All");
+
+ protected JCheckBox chkHiddenSeqs = new JCheckBox(
+ "Export Hidden Sequences");
+
+ protected JCheckBox chkHiddenCols = new JCheckBox("Export Hidden Columns");
+
+ protected JCheckBox chkExportAnnots = new JCheckBox("Export Annotations");
+
+ protected JCheckBox chkExportFeats = new JCheckBox("Export Features");
+
+ protected JCheckBox chkExportGrps = new JCheckBox("Export Groups");
+
+ JButton btnOk = new JButton("Ok");
+
+ JButton btnCancel = new JButton("Cancel");
+
+ private boolean hasHiddenSeq, hasHiddenCols, isComplexAlignFile;
+
+ boolean isComplexFormat = false;
+
+ public GAlignExportSettings(boolean hasHiddenSeq, boolean hasHiddenCols,
+ String alignFileFormat)
+ {
+ this.hasHiddenSeq = hasHiddenSeq;
+ this.hasHiddenCols = hasHiddenCols;
+ String[] complexFormats =
+ { "JSON", "HTML" };
+
+ for (String format : complexFormats)
+ {
+ if (format.equalsIgnoreCase(alignFileFormat))
+ {
+ this.isComplexAlignFile = true;
+ break;
+ }
+ }
+
+ init();
+ }
+
+ public void init()
+ {
+ hiddenRegionConfPanel.setLayout(hiddenRegionLayout);
+ complexExportPanel.setLayout(complexExportLayout);
+ setLayout(mainLayout);
+
+ chkAll.addItemListener(new ItemListener()
+ {
+ public void itemStateChanged(ItemEvent e)
+ {
+ checkAllAction();
+ }
+ });
+
+ btnOk.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ ok_actionPerformed(e);
+ }
+ });
+
+ btnCancel.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ cancel_actionPerformed(e);
+ }
+ });
+
+ hiddenRegionConfPanel.add(chkAll, BorderLayout.NORTH);
+ hiddenRegionConfPanel.add(chkHiddenSeqs, BorderLayout.CENTER);
+ hiddenRegionConfPanel.add(chkHiddenCols, BorderLayout.SOUTH);
+ chkHiddenSeqs.setEnabled(hasHiddenSeq);
+ chkHiddenCols.setEnabled(hasHiddenCols);
+
+ complexExportPanel.add(chkExportAnnots, BorderLayout.NORTH);
+ complexExportPanel.add(chkExportFeats, BorderLayout.CENTER);
+ complexExportPanel.add(chkExportGrps, BorderLayout.SOUTH);
+
+ if (hasHiddenSeq || hasHiddenCols)
+ {
+ optionsPanel.add(hiddenRegionConfPanel);
+ }
+
+ if (isComplexAlignFile)
+ {
+ optionsPanel.add(complexExportPanel);
+ }
+ actionPanel.add(btnCancel);
+ actionPanel.add(btnOk);
+
+ add(optionsPanel, BorderLayout.NORTH);
+ add(actionPanel, BorderLayout.SOUTH);
+
+ }
+
+
+
+ private void checkAllAction()
+ {
+ boolean isSelected = chkAll.isSelected();
+ chkHiddenSeqs.setSelected(chkHiddenSeqs.isEnabled() && isSelected);
+ chkHiddenCols.setSelected(chkHiddenCols.isEnabled() && isSelected);
+ chkExportAnnots.setSelected(isComplexAlignFile
+ && chkExportAnnots.isEnabled() && isSelected);
+ chkExportFeats.setSelected(isComplexAlignFile
+ && chkExportFeats.isEnabled() && isSelected);
+ chkExportGrps.setSelected(isComplexAlignFile
+ && chkExportGrps.isEnabled() && isSelected);
+ }
+
+ public abstract void ok_actionPerformed(ActionEvent e);
+
+ public abstract void cancel_actionPerformed(ActionEvent e);
+}