X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=13a49346362b5c1aa14ad50f0e9e9e8f24a8e9e1;hb=36933f9b768b9f8ace600215c1ddb4882331b92b;hp=1cd2ea8100a92585891a0f734798b2253a826ae7;hpb=c4609f79463d463d471b207a092f4d5af807391d;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 1cd2ea8..13a4934 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -22,7 +22,6 @@ 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; @@ -56,17 +55,13 @@ 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; @@ -102,6 +97,7 @@ import jalview.datamodel.AlignmentI; import jalview.datamodel.AlignmentOrder; import jalview.datamodel.AlignmentView; import jalview.datamodel.ColumnSelection; +import jalview.datamodel.HiddenSequences; import jalview.datamodel.PDBEntry; import jalview.datamodel.SeqCigar; import jalview.datamodel.Sequence; @@ -315,6 +311,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ void init() { + progressBar = new ProgressBar(this.statusPanel, this.statusBar); + avc = new jalview.controller.AlignViewController(this, viewport, alignPanel); if (viewport.getAlignmentConservationAnnotation() == null) @@ -873,9 +871,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, updateEditMenuBar(); } - // methods for implementing IProgressIndicator - // need to refactor to a reusable stub class - Hashtable progressBars, progressBarHandlers; + private IProgressIndicator progressBar; /* * (non-Javadoc) @@ -885,78 +881,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void setProgressBar(String message, long id) { - if (progressBars == null) - { - progressBars = new Hashtable(); - progressBarHandlers = new Hashtable(); - } - - JPanel progressPanel; - Long lId = new Long(id); - GridLayout layout = (GridLayout) statusPanel.getLayout(); - if (progressBars.get(lId) != null) - { - progressPanel = (JPanel) progressBars.get(new Long(id)); - statusPanel.remove(progressPanel); - progressBars.remove(lId); - progressPanel = null; - if (message != null) - { - statusBar.setText(message); - } - if (progressBarHandlers.contains(lId)) - { - progressBarHandlers.remove(lId); - } - layout.setRows(layout.getRows() - 1); - } - else - { - progressPanel = new JPanel(new BorderLayout(10, 5)); - - JProgressBar progressBar = new JProgressBar(); - progressBar.setIndeterminate(true); - - progressPanel.add(new JLabel(message), BorderLayout.WEST); - progressPanel.add(progressBar, BorderLayout.CENTER); - - layout.setRows(layout.getRows() + 1); - statusPanel.add(progressPanel); - - progressBars.put(lId, progressPanel); - } - // update GUI - // setMenusForViewport(); - validate(); + progressBar.setProgressBar(message, id); } @Override public void registerHandler(final long id, final IProgressIndicatorHandler handler) { - if (progressBarHandlers == null || !progressBars.contains(new Long(id))) - { - throw new Error(MessageManager.getString("error.call_setprogressbar_before_registering_handler")); - } - progressBarHandlers.put(new Long(id), handler); - final JPanel progressPanel = (JPanel) progressBars.get(new Long(id)); - if (handler.canCancel()) - { - JButton cancel = new JButton( - MessageManager.getString("action.cancel")); - final IProgressIndicator us = this; - cancel.addActionListener(new ActionListener() - { - - @Override - public void actionPerformed(ActionEvent e) - { - handler.cancelActivity(id); - us.setProgressBar(MessageManager.formatMessage("label.cancelled_params", new Object[]{((JLabel) progressPanel.getComponent(0)).getText()}), id); - } - }); - progressPanel.add(cancel, BorderLayout.EAST); - } + progressBar.registerHandler(id, handler); } /** @@ -966,18 +898,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public boolean operationInProgress() { - if (progressBars != null && progressBars.size() > 0) - { - return true; - } - return false; + return progressBar.operationInProgress(); } @Override public void setStatus(String text) { statusBar.setText(text); - }; + } /* * Added so Castor Mapping file can obtain Jalview Version @@ -1170,11 +1098,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .lastIndexOf(java.io.File.separatorChar) + 1); } - /* - * First save any linked Chimera session. - */ - Desktop.instance.saveChimeraSessions(file); - success = new Jalview2XML().saveAlignment(this, file, shortName); statusBar.setText(MessageManager.formatMessage( @@ -1193,30 +1116,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return false; } - String[] omitHidden = null; - - if (viewport.hasHiddenColumns()) - { - 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); - - if (reply == JOptionPane.YES_OPTION) - { - omitHidden = viewport.getViewAsString(false); - } - } - FormatAdapter f = new FormatAdapter(); + ExportData exportData = getAlignmentForExport(); + FormatAdapter f = new FormatAdapter(viewport); String output = f.formatSequences(format, - viewport.getAlignment(), // class cast exceptions will + exportData.getAlignment(), // class cast exceptions will // occur in the distant future - omitHidden, f.getCacheSuffixDefault(format), + exportData.getOmitHidden(), f.getCacheSuffixDefault(format), viewport.getColumnSelection()); if (output == null) @@ -1257,6 +1162,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return success; } + private void warningMessage(String warning, String title) { if (new jalview.util.Platform().isHeadless()) @@ -1281,9 +1187,38 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override protected void outputText_actionPerformed(ActionEvent e) { - String[] omitHidden = null; - if (viewport.hasHiddenColumns()) + ExportData exportData = getAlignmentForExport(); + CutAndPasteTransfer cap = new CutAndPasteTransfer(); + cap.setForInput(null); + + try + { + cap.setText(new FormatAdapter(viewport).formatSequences( + e.getActionCommand(), + exportData.getAlignment(), + exportData.getOmitHidden(), + viewport.getColumnSelection())); + Desktop.addInternalFrame(cap, MessageManager.formatMessage( + "label.alignment_output_command", new Object[] + { e.getActionCommand() }), 600, 500); + } catch (OutOfMemoryError oom) + { + new OOMWarning("Outputting alignment as " + e.getActionCommand(), oom); + cap.dispose(); + } + + } + + public ExportData getAlignmentForExport() + { + AlignmentI alignmentToExport = null; + String[] omitHidden = null; + FeatureRenderer fr = new FeatureRenderer(this.alignPanel); + viewport.setFeatureRenderer(fr); + HiddenSequences hiddenSeqs = viewport.getAlignment() + .getHiddenSequences(); + if (viewport.hasHiddenColumns() || hiddenSeqs.getSize() > 0) { int reply = JOptionPane .showInternalConfirmDialog( @@ -1299,26 +1234,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { omitHidden = viewport.getViewAsString(false); } + else + { + alignmentToExport = viewport.getAlignment().getHiddenSequences() + .getFullAlignment(); + } } - - CutAndPasteTransfer cap = new CutAndPasteTransfer(); - cap.setForInput(null); - - try + if (alignmentToExport == null) { - Desktop.setCurrentAlignFrame(this); - cap.setText(new FormatAdapter().formatSequences(e.getActionCommand(), - viewport.getAlignment(), omitHidden, - viewport.getColumnSelection())); - Desktop.addInternalFrame(cap, MessageManager.formatMessage( - "label.alignment_output_command", new Object[] - { e.getActionCommand() }), 600, 500); - } catch (OutOfMemoryError oom) - { - new OOMWarning("Outputting alignment as " + e.getActionCommand(), oom); - cap.dispose(); + alignmentToExport = viewport.getAlignment(); } - + return new ExportData(alignmentToExport, omitHidden); } /** @@ -1339,8 +1265,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void bioJSMenuItem_actionPerformed(ActionEvent e) { - new BioJsHTMLOutput(alignPanel, + BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel, alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer()); + bjs.exportJalviewAlignmentAsBioJsHtmlFile(); } public void createImageMap(File file, String image) { @@ -6062,6 +5989,64 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sf.setComplementVisible(this, show); } } + + public class ExportData + { + private AlignmentI alignment; + + private String[] omitHidden; + + public ExportData(AlignmentI align, String[] ommit) + { + this.alignment = align; + this.omitHidden = ommit; + System.out.println(); + } + + 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; + } + } + + @Override + public void hideColumns(List colsToHide) + { + for (int[] colRange : colsToHide) + { + viewport.hideColumns(colRange[0], colRange[1]); + } + + } + + @Override + public void syncHiddenSequences() + { + AlignmentI al = viewport.getAlignment(); + HiddenSequences hiddenSeqs = al.getHiddenSequences(); + for (SequenceI seq : al.getSequencesArray()) + { + if (seq.isHidden()) + { + hiddenSeqs.hideSequence(seq); + } + } + } } class PrintThread extends Thread