Merge branch 'releases/Release_2_11_1_Branch' into task/JAL-3608_and_JAL-3609_merged_...
authorBen Soares <b.soares@dundee.ac.uk>
Wed, 8 Jul 2020 13:37:24 +0000 (14:37 +0100)
committerBen Soares <b.soares@dundee.ac.uk>
Wed, 8 Jul 2020 13:37:24 +0000 (14:37 +0100)
1  2 
resources/lang/Messages_es.properties
src/jalview/gui/AlignFrame.java

@@@ -211,7 -211,7 +211,7 @@@ label.show_non_conserved = Mostrar no c
  label.overview_window = Ventana resumen
  label.none = Ninguno
  label.above_identity_threshold = Por encima del umbral de identidad
- label.show_sequence_features = Mostrar las características de las secuencias
+ label.show_sequence_features = Mostrar las características de secuencia
  label.nucleotide = Nucleótido
  label.to_new_alignment = A nuevo alineamiento
  label.to_this_alignment = Añadir a este alineamiento
@@@ -693,7 -693,12 +693,12 @@@ label.annotations_for_params = Anotacio
  label.generating_features_for_params = Generando características de - {0}
  label.generating_annotations_for_params = Generando anotaciones de - {0}
  label.varna_params = VARNA - {0}
- label.sequence_feature_settings = Configuración de las características de la secuencia
+ label.sequence_feature_settings = Configuración de las características de secuencia
+ label.sequence_feature_settings_for = Configuración de las características de secuencia para {0}
+ label.sequence_feature_settings_for_view = Configuración de las características de secuencia para vista "{0}"
+ label.sequence_feature_settings_for_CDS_and_Protein = Configuración de las características de secuencia para CDS y Proteína 
+ action.undo_changes_to_feature_settings = Deshacer todos los cambios no aplicados
+ action.undo_changes_to_feature_settings_and_close_the_dialog = Deshacer cambios pendientes, cerrar diálogo
  label.pairwise_aligned_sequences = Secuencias alineadas a pares
  label.original_data_for_params = Datos originales de {0}
  label.points_for_params = Puntos de {0}
@@@ -1191,6 -1196,7 +1196,7 @@@ warn.urls_not_contacted=URLs que no pud
  label.prot_alignment_colour=Color del Alineamiento Proteico
  info.associate_wit_sequence=Asociar con secuencia
  label.protein=Proteína
+ label.CDS=CDS
  warn.oneseq_msainput_selection=La selección actual sólo contiene una única secuencia. ¿Quieres enviar todas las secuencias para la alineación en su lugar?
  label.use_rnaview=Usar RNAView para estructura secondaria
  label.search_all=Introducir uno o más valores de búsqueda separados por punto y coma ";" (Nota: buscará en toda la base de datos PDB)
@@@ -1341,7 -1347,6 +1347,7 @@@ label.backupfiles_confirm_save_file = C
  label.backupfiles_confirm_save_file_backupfiles_roll_wrong = Posiblemente algo está mal con los archivos de respaldos.
  label.backupfiles_confirm_save_new_saved_file_ok = El nuevo archivo guardado parece estar bien.
  label.backupfiles_confirm_save_new_saved_file_not_ok = El nuevo archivo guardado podría no estar bien.
 +label.continue_operation = ¿Continuar operación?
  label.backups = Respaldos
  label.backup = Respaldo
  label.backup_files = Archivos de respaldos
@@@ -1408,7 -1413,3 +1414,7 @@@ label.include_linked_features = Inclui
  label.include_linked_tooltip = Incluir características de {0}<br>convertidas a coordenadas de secuencia local
  label.features_not_shown = {0} característica(s) no mostradas
  label.no_features_to_sort_by = No hay características para ordenar
 +label.log_level = Nivel del registro
 +label.log_level_tooltip = Establezca temporalmente el nivel de registro para esta consola
 +label.copy_to_clipboard = Copiar en el portapapeles
 +label.copy_to_clipboard_tooltip = Copie todo el texto de registro en esta consola al portapapeles del sistema
   */
  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.FocusAdapter;
 +import java.awt.event.FocusEvent;
 +import java.awt.event.ItemEvent;
 +import java.awt.event.ItemListener;
 +import java.awt.event.KeyAdapter;
 +import java.awt.event.KeyEvent;
 +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.io.FileWriter;
 +import java.io.IOException;
 +import java.io.PrintWriter;
 +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.Vector;
 +
 +import javax.swing.ButtonGroup;
 +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.JScrollPane;
 +import javax.swing.SwingUtilities;
 +
  import jalview.analysis.AlignmentSorter;
  import jalview.analysis.AlignmentUtils;
  import jalview.analysis.CrossRef;
@@@ -139,7 -91,6 +139,7 @@@ import jalview.schemes.ColourSchemes
  import jalview.schemes.ResidueColourScheme;
  import jalview.schemes.TCoffeeColourScheme;
  import jalview.util.MessageManager;
 +import jalview.util.Platform;
  import jalview.viewmodel.AlignmentViewport;
  import jalview.viewmodel.ViewportRanges;
  import jalview.ws.DBRefFetcher;
@@@ -149,6 -100,53 +149,6 @@@ import jalview.ws.jws2.Jws2Discoverer
  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.FocusAdapter;
 -import java.awt.event.FocusEvent;
 -import java.awt.event.ItemEvent;
 -import java.awt.event.ItemListener;
 -import java.awt.event.KeyAdapter;
 -import java.awt.event.KeyEvent;
 -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.io.FileWriter;
 -import java.io.PrintWriter;
 -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.Vector;
 -
 -import javax.swing.ButtonGroup;
 -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.JScrollPane;
 -import javax.swing.SwingUtilities;
 -
  /**
   * DOCUMENT ME!
   * 
@@@ -538,7 -536,8 +538,8 @@@ public class AlignFrame extends GAlignF
            }
            if (viewport.cursorMode)
            {
-             alignPanel.getSeqPanel().moveCursor(0, 1);
+             alignPanel.getSeqPanel().moveCursor(0, 1,
+                     evt.isShiftDown() && !evt.isAltDown());
            }
            break;
  
            }
            if (viewport.cursorMode)
            {
-             alignPanel.getSeqPanel().moveCursor(0, -1);
+             alignPanel.getSeqPanel().moveCursor(0, -1,
+                     evt.isShiftDown() && !evt.isAltDown());
            }
            break;
  
          case KeyEvent.VK_LEFT:
            }
            else
            {
-             alignPanel.getSeqPanel().moveCursor(-1, 0);
+             alignPanel.getSeqPanel().moveCursor(-1, 0, evt.isShiftDown());
            }
  
            break;
            }
            else
            {
-             alignPanel.getSeqPanel().moveCursor(1, 0);
+             alignPanel.getSeqPanel().moveCursor(1, 0, evt.isShiftDown());
            }
            break;
  
  
        statusBar.setText(MessageManager.formatMessage(
                "label.successfully_saved_to_file_in_format", new Object[]
 -              { fileName, format }));
 +              { file, format }));
  
      }
      else
        else
        {
          // create backupfiles object and get new temp filename destination
 +        Cache.log.debug("ALIGNFRAME making backupfiles object for " + file);
          BackupFiles backupfiles = new BackupFiles(file);
  
          try
          {
 -          PrintWriter out = new PrintWriter(
 -                  new FileWriter(backupfiles.getTempFilePath()));
 +          String tempFilePath = backupfiles.getTempFilePath();
 +          Cache.log.debug(
 +                  "ALIGNFRAME setting PrintWriter to " + tempFilePath);
 +          PrintWriter out = new PrintWriter(new FileWriter(tempFilePath));
 +
 +          Cache.log.debug(
 +                  "ALIGNFRAME about to write to temp file " + tempFilePath);
  
            out.print(output);
 +          Cache.log.debug("ALIGNFRAME about to close file");
            out.close();
 +          Cache.log.debug("ALIGNFRAME closed file");
            this.setTitle(file);
            statusBar.setText(MessageManager.formatMessage(
                    "label.successfully_saved_to_file_in_format", new Object[]
 -                  { fileName, format.getName() }));
 +                  { file, format.getName() }));
 +        } catch (IOException e)
 +        {
 +          success = false;
 +          Cache.log.error(
 +                  "ALIGNFRAME Something happened writing the temp file");
 +          Cache.log.error(e.getMessage());
 +          Cache.log.debug(Cache.getStackTraceString(e));
 +
          } catch (Exception ex)
          {
            success = false;
 -          ex.printStackTrace();
 +          Cache.log.error(
 +                  "ALIGNFRAME Something else happened writing the temp file");
 +          Cache.log.error(ex.getMessage());
 +          Cache.log.debug(Cache.getStackTraceString(ex));
          }
  
          backupfiles.setWriteSuccess(success);
 +        Cache.log.debug("ALIGNFRAME writing temp file was "
 +                + (success ? "" : "NOT ") + "successful");
          // do the backup file roll and rename the temp file to actual file
 +        Cache.log.debug("ALIGNFRAME about to rollBackupsAndRenameTempFile");
          success = backupfiles.rollBackupsAndRenameTempFile();
 +        Cache.log.debug("ALIGNFRAME performed rollBackupsAndRenameTempFile "
 +                + (success ? "" : "un") + "successfully");
  
        }
      }
  
      if (!success)
      {
 -      JvOptionPane.showInternalMessageDialog(this, MessageManager
 -              .formatMessage("label.couldnt_save_file", new Object[]
 -              { fileName }),
 -              MessageManager.getString("label.error_saving_file"),
 -              JvOptionPane.WARNING_MESSAGE);
 +      if (!Platform.isHeadless())
 +      {
 +        JvOptionPane.showInternalMessageDialog(this, MessageManager
 +                .formatMessage("label.couldnt_save_file", new Object[]
 +                { file }),
 +                MessageManager.getString("label.error_saving_file"),
 +                JvOptionPane.WARNING_MESSAGE);
 +      }
      }
  
      return success;
    synchronized void slideSequences(boolean right, int size)
    {
      List<SequenceI> sg = new ArrayList<>();
-     if (viewport.cursorMode)
-     {
-       sg.add(viewport.getAlignment()
-               .getSequenceAt(alignPanel.getSeqPanel().seqCanvas.cursorY));
-     }
-     else if (viewport.getSelectionGroup() != null
-             && viewport.getSelectionGroup().getSize() != viewport
-                     .getAlignment().getHeight())
+     if (viewport.getSelectionGroup() != null && viewport.getSelectionGroup()
+             .getSize() != viewport.getAlignment().getHeight())
      {
        sg = viewport.getSelectionGroup()
                .getSequences(viewport.getHiddenRepSequences());
      }
  
+     if (sg.size() == 0 && viewport.cursorMode)
+     {
+       sg.add(viewport.getAlignment()
+               .getSequenceAt(alignPanel.getSeqPanel().seqCanvas.cursorY));
+     }
      if (sg.size() < 1)
      {
        return;
      }
      viewport.setSelectionGroup(null);
      viewport.getColumnSelection().clear();
-     viewport.setSelectionGroup(null);
+     viewport.setSearchResults(null);
      alignPanel.getIdPanel().getIdCanvas().searchResults = null;
      // JAL-2034 - should delegate to
      // alignPanel to decide if overview needs
  
      if (viewport.getViewName() == null)
      {
 -      viewport.setViewName(MessageManager
 -              .getString("label.view_name_original"));
 +      viewport.setViewName(
 +              MessageManager.getString("label.view_name_original"));
      }
  
      /*
       * otherwise set the chosen colour scheme (or null for 'None')
       */
      ColourSchemeI cs = ColourSchemes.getInstance().getColourScheme(name,
 -            viewport,
 -            viewport.getAlignment(), viewport.getHiddenRepSequences());
 +            viewport, viewport.getAlignment(),
 +            viewport.getHiddenRepSequences());
      changeColour(cs);
    }
  
    }
  
    private Rectangle lastFeatureSettingsBounds = null;
 +
    @Override
    public void setFeatureSettingsGeometry(Rectangle bounds)
    {