X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=f502952c2afbba3f7dd134a768ff010a878abcfb;hb=eb3e681d6e82ccdd5d312d1981dfb306e7f479f0;hp=fe6b8d9db6cb98c21bce3f057bd1957b8518f83c;hpb=14b1b2a878190d5fffda298c4b9a901c72c74ad3;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index fe6b8d9..f502952 100644 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -20,6 +20,45 @@ */ package jalview.appletgui; +import java.awt.BorderLayout; +import java.awt.Canvas; +import java.awt.CheckboxMenuItem; +import java.awt.Color; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Label; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuItem; +import java.awt.Panel; +import java.awt.Rectangle; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URL; +import java.net.URLEncoder; +import java.util.Arrays; +import java.util.Deque; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.Vector; + +import org.jmol.viewer.Viewer; + import jalview.analysis.AlignmentSorter; import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder; import jalview.analysis.TreeBuilder; @@ -81,43 +120,6 @@ import jalview.util.MessageManager; import jalview.viewmodel.AlignmentViewport; import jalview.viewmodel.ViewportRanges; -import java.awt.BorderLayout; -import java.awt.Canvas; -import java.awt.CheckboxMenuItem; -import java.awt.Color; -import java.awt.FlowLayout; -import java.awt.Font; -import java.awt.FontMetrics; -import java.awt.Frame; -import java.awt.Graphics; -import java.awt.Label; -import java.awt.Menu; -import java.awt.MenuBar; -import java.awt.MenuItem; -import java.awt.Panel; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.FocusEvent; -import java.awt.event.FocusListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.io.IOException; -import java.net.URL; -import java.net.URLEncoder; -import java.util.Arrays; -import java.util.Deque; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.StringTokenizer; -import java.util.Vector; - -import org.jmol.viewer.Viewer; - public class AlignFrame extends EmbmenuFrame implements ActionListener, ItemListener, KeyListener, AlignViewControllerGuiI { @@ -416,7 +418,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, viewport.featureSettings.refreshTable(); } alignPanel.paintAlignment(true, true); - statusBar.setText(MessageManager + setStatus(MessageManager .getString("label.successfully_added_features_alignment")); } return featuresFile; @@ -574,8 +576,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, case KeyEvent.VK_F2: viewport.cursorMode = !viewport.cursorMode; - statusBar.setText(MessageManager - .formatMessage("label.keyboard_editing_mode", new String[] + setStatus(MessageManager.formatMessage("label.keyboard_editing_mode", + new String[] { (viewport.cursorMode ? "on" : "off") })); if (viewport.cursorMode) { @@ -1202,7 +1204,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } else if (source == featureSettings) { - new FeatureSettings(alignPanel); + showFeatureSettingsUI(); } else if (source == alProperties) { @@ -1447,14 +1449,13 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { features = formatter.printJalviewFormat( viewport.getAlignment().getSequencesArray(), - getDisplayedFeatureCols(), null, getDisplayedFeatureGroups(), - true); + alignPanel.getFeatureRenderer(), true, false); } else { - features = formatter.printGffFormat(viewport.getAlignment() - .getSequencesArray(), getDisplayedFeatureCols(), - getDisplayedFeatureGroups(), true); + features = formatter.printGffFormat( + viewport.getAlignment().getSequencesArray(), + alignPanel.getFeatureRenderer(), true, false); } if (displayTextbox) @@ -1571,18 +1572,24 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, try { new URL(url); - url = URLEncoder.encode(url); + url = URLEncoder.encode(url, "UTF-8"); } /* * When we finally deprecate 1.1 compatibility, we can start to use * URLEncoder.encode(url,"UTF-8") and then we'll need this catch: catch - * (UnsupportedEncodingException ex) { System.err.println("WARNING - + * (UnsupportedEncodingException ex) { jalview.bin.Console.errPrintln("WARNING - * IMPLEMENTATION ERROR - UNSUPPORTED ENCODING EXCEPTION FOR "+url); * ex.printStackTrace(); } */ catch (java.net.MalformedURLException ex) { url = viewport.applet.getCodeBase() + url; + } catch (UnsupportedEncodingException ex) + { + jalview.bin.Console.errPrintln( + "WARNING = IMPLEMENTATION ERROR - UNSUPPORTED ENCODING EXCEPTION FOR " + + url); + ex.printStackTrace(); } return url; } @@ -1906,7 +1913,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, static StringBuffer copiedSequences; - static Vector copiedHiddenColumns; + static HiddenColumns copiedHiddenColumns; protected void copy_actionPerformed() { @@ -1930,14 +1937,14 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if (viewport.hasHiddenColumns() && viewport.getSelectionGroup() != null) { - copiedHiddenColumns = new Vector<>(viewport.getAlignment() - .getHiddenColumns().getHiddenColumnsCopy()); int hiddenOffset = viewport.getSelectionGroup().getStartRes(); - for (int[] region : copiedHiddenColumns) - { - region[0] = region[0] - hiddenOffset; - region[1] = region[1] - hiddenOffset; - } + int hiddenCutoff = viewport.getSelectionGroup().getEndRes(); + + // create new HiddenColumns object with copy of hidden regions + // between startRes and endRes, offset by startRes + copiedHiddenColumns = new HiddenColumns( + viewport.getAlignment().getHiddenColumns(), hiddenOffset, + hiddenCutoff, hiddenOffset); } else { @@ -2006,13 +2013,13 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { try { - if (copiedSequences == null) { return; } - StringTokenizer st = new StringTokenizer(copiedSequences.toString()); + StringTokenizer st = new StringTokenizer(copiedSequences.toString(), + "\t"); Vector seqs = new Vector(); while (st.hasMoreElements()) { @@ -2044,14 +2051,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } AlignFrame af = new AlignFrame(new Alignment(newSeqs), viewport.applet, newtitle, false); - if (copiedHiddenColumns != null) - { - for (int i = 0; i < copiedHiddenColumns.size(); i++) - { - int[] region = copiedHiddenColumns.elementAt(i); - af.viewport.hideColumns(region[0], region[1]); - } - } + af.viewport.setHiddenColumns(copiedHiddenColumns); jalview.bin.JalviewLite.addFrame(af, newtitle, frameWidth, frameHeight); @@ -2080,7 +2080,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, seqs, 0, viewport.getAlignment().getWidth(), viewport.getAlignment())); - viewport.getRanges().setEndSeq(viewport.getAlignment().getHeight()); + viewport.getRanges().setEndSeq(viewport.getAlignment().getHeight() - 1); // BH + // 2019.04.18 viewport.getAlignment().getWidth(); viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); @@ -2356,8 +2357,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, column, al); } - statusBar.setText(MessageManager - .formatMessage("label.removed_columns", new String[] + setStatus(MessageManager.formatMessage("label.removed_columns", + new String[] { Integer.valueOf(trimRegion.getSize()).toString() })); addHistoryItem(trimRegion); @@ -2400,8 +2401,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, addHistoryItem(removeGapCols); - statusBar.setText(MessageManager - .formatMessage("label.removed_empty_columns", new String[] + setStatus(MessageManager.formatMessage("label.removed_empty_columns", + new String[] { Integer.valueOf(removeGapCols.getSize()).toString() })); // This is to maintain viewport position on first residue @@ -2974,7 +2975,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); if (viewport.applet.debug) { - System.err.println("Sorting " + alorder.getOrder().size() + jalview.bin.Console.errPrintln("Sorting " + alorder.getOrder().size() + " in alignment '" + getTitle() + "'"); } AlignmentSorter.sortBy(viewport.getAlignment(), alorder); @@ -3060,7 +3061,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { if (viewport.applet == null) { - System.out.println("Not running as applet - no browser available."); + jalview.bin.Console + .outPrintln("Not running as applet - no browser available."); } else { @@ -3519,17 +3521,17 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, hydrophobicityColour.setLabel( MessageManager.getString("label.colourScheme_hydrophobic")); hydrophobicityColour.addActionListener(this); - helixColour.setLabel(MessageManager - .getString("label.colourScheme_helix_propensity")); + helixColour.setLabel( + MessageManager.getString("label.colourScheme_helixpropensity")); helixColour.addActionListener(this); strandColour.setLabel(MessageManager - .getString("label.colourScheme_strand_propensity")); + .getString("label.colourScheme_strandpropensity")); strandColour.addActionListener(this); turnColour.setLabel( - MessageManager.getString("label.colourScheme_turn_propensity")); + MessageManager.getString("label.colourScheme_turnpropensity")); turnColour.addActionListener(this); buriedColour.setLabel( - MessageManager.getString("label.colourScheme_buried_index")); + MessageManager.getString("label.colourScheme_buriedindex")); buriedColour.addActionListener(this); purinePyrimidineColour.setLabel(MessageManager .getString("label.colourScheme_purine/pyrimidine")); @@ -3538,19 +3540,19 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, // .getString("label.rna_interaction")); // RNAInteractionColour.addActionListener(this); RNAHelixColour.setLabel( - MessageManager.getString("label.colourScheme_rna_helices")); + MessageManager.getString("label.colourScheme_rnahelices")); RNAHelixColour.addActionListener(this); userDefinedColour .setLabel(MessageManager.getString("action.user_defined")); userDefinedColour.addActionListener(this); PIDColour.setLabel( - MessageManager.getString("label.colourScheme_%_identity")); + MessageManager.getString("label.colourScheme_%identity")); PIDColour.addActionListener(this); BLOSUM62Colour.setLabel( MessageManager.getString("label.colourScheme_blosum62")); BLOSUM62Colour.addActionListener(this); tcoffeeColour.setLabel( - MessageManager.getString("label.colourScheme_t-coffee_scores")); + MessageManager.getString("label.colourScheme_t-coffeescores")); // it will be enabled only if a score file is provided tcoffeeColour.setEnabled(false); tcoffeeColour.addActionListener(this); @@ -3822,7 +3824,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, */ statusBar.setBackground(Color.white); statusBar.setFont(new java.awt.Font("Verdana", 0, 11)); - statusBar.setText(MessageManager.getString("label.status_bar")); + setStatus(MessageManager.getString("label.status_bar")); this.add(statusBar, BorderLayout.SOUTH); } @@ -3962,7 +3964,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, * without an additional javascript library to exchange messages between the * distinct applets. See http://issues.jalview.org/browse/JAL-621 * - * @param viewer + * @param jmolViewer * JmolViewer instance * @param sequenceIds * - sequence Ids to search for associations @@ -3976,13 +3978,14 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, viewer = (Viewer) jmolviewer; } catch (ClassCastException ex) { - System.err.println( + jalview.bin.Console.errPrintln( "Unsupported viewer object :" + jmolviewer.getClass()); } if (viewer == null) { - System.err.println("Can't use this object as a structure viewer:" - + jmolviewer.getClass()); + jalview.bin.Console + .errPrintln("Can't use this object as a structure viewer:" + + jmolviewer.getClass()); return null; } SequenceI[] seqs = null; @@ -4126,7 +4129,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, chains = (String[]) sqch[1]; if (seqs == null || seqs.length == 0) { - System.err.println( + jalview.bin.Console.errPrintln( "JalviewLite.AlignFrame:newStructureView: No sequence to bind structure to."); } if (protocol == null) @@ -4141,8 +4144,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } if (protocol == null) { - System.err.println("Couldn't work out protocol to open structure: " - + pdb.getId()); + jalview.bin.Console + .errPrintln("Couldn't work out protocol to open structure: " + + pdb.getId()); return; } } @@ -4150,10 +4154,11 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { // register the association(s) and quit, don't create any windows. if (StructureSelectionManager.getStructureSelectionManager(applet) - .setMapping(seqs, chains, pdb.getFile(), protocol, null) == null) + .setMapping(seqs, chains, pdb.getFile(), protocol, + null) == null) { - System.err.println("Failed to map " + pdb.getFile() + " (" - + protocol + ") to any sequences"); + jalview.bin.Console.errPrintln("Failed to map " + pdb.getFile() + + " (" + protocol + ") to any sequences"); } return; } @@ -4174,7 +4179,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } if (ajm != null) { - System.err.println( + jalview.bin.Console.errPrintln( "Incremental adding and aligning structure to existing Jmol view not yet implemented."); // try and add the pdb structure // ajm.addS @@ -4190,7 +4195,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } else { - new MCview.AppletPDBViewer(pdb, seqs, chains, alignPanel, protocol); + new mc_view.AppletPDBViewer(pdb, seqs, chains, alignPanel, protocol); } } @@ -4199,7 +4204,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, SequenceI[][] seqs, String[][] chains, String[] protocols) { // TODO Auto-generated method stub - System.err.println("Aligned Structure View: Not yet implemented."); + jalview.bin.Console + .errPrintln("Aligned Structure View: Not yet implemented."); } /** @@ -4256,9 +4262,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if (!file.isValid()) { // TODO: raise dialog for gui - System.err.println("Problems parsing T-Coffee scores: " + jalview.bin.Console.errPrintln("Problems parsing T-Coffee scores: " + file.getWarningMessage()); - System.err.println("Origin was:\n" + source); + jalview.bin.Console.errPrintln("Origin was:\n" + source); return false; } @@ -4271,7 +4277,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, || aln.getWidth() != file.getWidth())) { // TODO: raise a dialog box here rather than bomb out. - System.err.println( + jalview.bin.Console.errPrintln( "The scores matrix does not match the alignment dimensions"); } @@ -4287,10 +4293,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } else { - System.err.println("Problems resolving T-Coffee scores:"); + jalview.bin.Console.errPrintln("Problems resolving T-Coffee scores:"); if (file.getWarningMessage() != null) { - System.err.println(file.getWarningMessage()); + jalview.bin.Console.errPrintln(file.getWarningMessage()); } } return false; @@ -4338,4 +4344,24 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, return alignPanel.av.featureSettings; } + @Override + public FeatureSettingsControllerI showFeatureSettingsUI() + { + return new FeatureSettings(alignPanel); + } + + private Rectangle fs_bounds = null; + + @Override + public void setFeatureSettingsGeometry(Rectangle bounds) + { + fs_bounds = bounds; + } + + @Override + public Rectangle getFeatureSettingsGeometry() + { + return fs_bounds; + } + }