*/
package jalview.gui;
-import java.awt.BorderLayout;
-import java.awt.Component;
-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.JCheckBoxMenuItem;
-import javax.swing.JEditorPane;
-import javax.swing.JInternalFrame;
-import javax.swing.JLayeredPane;
-import javax.swing.JMenu;
-import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
-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.api.AlignViewControllerI;
import jalview.api.AlignViewportI;
import jalview.api.AlignmentViewPanel;
+import jalview.api.FeatureSettingsControllerI;
import jalview.api.SplitContainerI;
import jalview.api.ViewStyleI;
import jalview.api.analysis.ScoreModelI;
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.HtmlSvgOutput;
import jalview.ws.jws2.jabaws2.Jws2Instance;
import jalview.ws.seqfetcher.DbSourceProxy;
+import java.awt.BorderLayout;
+import java.awt.Component;
+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.JCheckBoxMenuItem;
+import javax.swing.JEditorPane;
+import javax.swing.JInternalFrame;
+import javax.swing.JLayeredPane;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.JScrollPane;
+import javax.swing.SwingUtilities;
+
/**
* DOCUMENT ME!
*
if (hiddenSeqs != null && hiddenSeqs.length > 0)
{
viewport.hideSequence(hiddenSeqs);
- viewport.setHasHiddenRows(true);
}
alignPanel = new AlignmentPanel(this, viewport);
addAlignmentPanel(alignPanel, true);
return false;
}
- ExportData exportData = getAlignmentForExport();
- FormatAdapter f = new FormatAdapter(viewport);
+ ExportData exportData = getAlignmentForExport(format);
+ FormatAdapter f = new FormatAdapter(alignPanel);
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();
+ ExportData exportData = getAlignmentForExport(e.getActionCommand());
+ if (exportData.getSettings().isCancelled())
+ {
+ return;
+ }
CutAndPasteTransfer cap = new CutAndPasteTransfer();
cap.setForInput(null);
-
try
{
- cap.setText(new FormatAdapter(viewport).formatSequences(
+ cap.setText(new FormatAdapter(alignPanel, exportData.getSettings())
+ .formatSequences(
e.getActionCommand(),
exportData.getAlignment(),
exportData.getOmitHidden(), exportData.getStartEndPostions(),
}
- public ExportData getAlignmentForExport()
+ public ExportData getAlignmentForExport(String exportFomat)
{
AlignmentI alignmentToExport = null;
String[] omitHidden = null;
int[] alignmentStartEnd = new int[2];
- FeatureRenderer fr = new FeatureRenderer(this.alignPanel);
- viewport.setFeatureRenderer(fr);
+
HiddenSequences hiddenSeqs = viewport.getAlignment()
.getHiddenSequences();
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;
+ AlignExportSettings settings = new AlignExportSettings(hasHiddenSeqs,
+ viewport.hasHiddenColumns(), exportFomat);
+ 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);
}
@Override
public void bioJSMenuItem_actionPerformed(ActionEvent e)
{
- BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel,
- alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer());
+ BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel);
bjs.exportJalviewAlignmentAsBioJsHtmlFile();
}
public void createImageMap(File file, String image)
public FeatureSettings featureSettings;
@Override
+ public FeatureSettingsControllerI getFeatureSettingsUI()
+ {
+ return featureSettings;
+ }
+
+ @Override
public void featureSettings_actionPerformed(ActionEvent e)
{
if (featureSettings != null)
* contents or path to retrieve file
* @param type
* access mode of file (see jalview.io.AlignFile)
- * @return true if features file was parsed corectly.
+ * @return true if features file was parsed correctly.
*/
public boolean parseFeaturesFile(String file, String type)
{
- boolean featuresFile = false;
- try
- {
- featuresFile = new FeaturesFile(file, type).parse(viewport
- .getAlignment().getDataset(), alignPanel.getSeqPanel().seqCanvas
- .getFeatureRenderer().getFeatureColours(), false,
- jalview.bin.Cache.getDefault("RELAXEDSEQIDMATCHING", false));
- } catch (Exception ex)
- {
- ex.printStackTrace();
- }
+ return avc.parseFeaturesFile(file, type,
+ jalview.bin.Cache.getDefault("RELAXEDSEQIDMATCHING", false));
+
+ }
- if (featuresFile)
+ @Override
+ public void refreshFeatureUI(boolean enableIfNecessary)
+ {
+ // note - currently this is only still here rather than in the controller
+ // because of the featureSettings hard reference that is yet to be
+ // abstracted
+ if (enableIfNecessary)
{
viewport.setShowSequenceFeatures(true);
showSeqFeatures.setSelected(true);
- if (alignPanel.getSeqPanel().seqCanvas.fr != null)
- {
- // update the min/max ranges where necessary
- alignPanel.getSeqPanel().seqCanvas.fr.findAllFeatures(true);
- }
- if (featureSettings != null)
- {
- featureSettings.setTableData();
- }
- alignPanel.paintAlignment(true);
}
- return featuresFile;
- }
+ }
@Override
public void dragEnter(DropTargetDragEvent evt)
{
private int[] startEnd;
- public ExportData(AlignmentI align, String[] ommit, 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()
{
this.startEnd = startEnd;
}
+
+ public AlignExportSettings getSettings()
+ {
+ return settings;
+ }
+
+ public void setSettings(AlignExportSettings settings)
+ {
+ this.settings = settings;
+ }
}
}