git://source.jalview.org
/
jalview.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
6a44ba8
)
JAL-3774 combined changes from bug/JAL-3774_splitFrameFinder: i) fixed focus Finder...
author
Ben Soares
<b.soares@dundee.ac.uk>
Thu, 16 Sep 2021 12:53:55 +0000
(13:53 +0100)
committer
Ben Soares
<b.soares@dundee.ac.uk>
Thu, 16 Sep 2021 12:53:55 +0000
(13:53 +0100)
resources/lang/Messages.properties
patch
|
blob
|
history
resources/lang/Messages_es.properties
patch
|
blob
|
history
src/jalview/gui/AlignFrame.java
patch
|
blob
|
history
src/jalview/gui/Finder.java
patch
|
blob
|
history
src/jalview/gui/SplitFrame.java
patch
|
blob
|
history
diff --git
a/resources/lang/Messages.properties
b/resources/lang/Messages.properties
index
ada04d6
..
4bc88e8
100644
(file)
--- a/
resources/lang/Messages.properties
+++ b/
resources/lang/Messages.properties
@@
-328,6
+328,7
@@
label.successfully_pasted_alignment_file = Successfully pasted alignment file
label.paste_your_alignment_file = Paste your alignment file here
label.paste_your = Paste your
label.finished_searching = Finished searching
label.paste_your_alignment_file = Paste your alignment file here
label.paste_your = Paste your
label.finished_searching = Finished searching
+label.subsequence_matches_found = {0} subsequence matches found
label.search_results= Search results {0} : {1}
label.found_match_for = Found match for {0}
label.font = Font:
label.search_results= Search results {0} : {1}
label.found_match_for = Found match for {0}
label.font = Font:
@@
-1132,6
+1133,7
@@
label.add_annotations_for = Add annotations for
action.choose_annotations = Choose Annotations...
label.choose_annotations = Choose Annotations
label.find = Find
action.choose_annotations = Choose Annotations...
label.choose_annotations = Choose Annotations
label.find = Find
+label.in = in
label.invalid_search = Search string invalid
error.invalid_regex = Invalid regular expression
label.ignore_gaps_consensus = Ignore Gaps In Consensus
label.invalid_search = Search string invalid
error.invalid_regex = Invalid regular expression
label.ignore_gaps_consensus = Ignore Gaps In Consensus
diff --git
a/resources/lang/Messages_es.properties
b/resources/lang/Messages_es.properties
index
cb3aba9
..
411643d
100644
(file)
--- a/
resources/lang/Messages_es.properties
+++ b/
resources/lang/Messages_es.properties
@@
-253,7
+253,7
@@
label.min_value = Valor m
label.no_value = Sin valor
label.colour_by_label = Color por etiquetas
label.new_feature = Nueva función
label.no_value = Sin valor
label.colour_by_label = Color por etiquetas
label.new_feature = Nueva función
-label.match_case = Hacer corresponder mayúsculas y minúsculas
+label.match_case = Distinguir min/mayúsculas
label.view_alignment_editor = Ver en el editor de alineamientos
label.labels = Etiquetas
label.output_values = Valores de salida...
label.view_alignment_editor = Ver en el editor de alineamientos
label.labels = Etiquetas
label.output_values = Valores de salida...
@@
-294,6
+294,7
@@
label.successfully_pasted_alignment_file = Fichero de alineamiento pegado exitos
label.paste_your_alignment_file = Pegar su fichero de alineamiento aquí
label.paste_your = Pegar su
label.finished_searching = Búsqueda finalizada
label.paste_your_alignment_file = Pegar su fichero de alineamiento aquí
label.paste_your = Pegar su
label.finished_searching = Búsqueda finalizada
+label.subsequence_matches_found = {0} resultados encontrados en subsequencias
label.search_results= Buscar Resultados {0} : {1}
label.found_match_for = Buscar coincidencia para {0}
label.font = Fuente:
label.search_results= Buscar Resultados {0} : {1}
label.found_match_for = Buscar coincidencia para {0}
label.font = Fuente:
@@
-1118,6
+1119,7
@@
action.set_as_reference=Marcar como Referencia
action.unmark_as_reference=Desmarcar como Referencia
label.open_viewer_failed=Error al abrir {0} - está instalado?\nCompruebe ruta en Preferencias, Estructura
label.find=Buscar
action.unmark_as_reference=Desmarcar como Referencia
label.open_viewer_failed=Error al abrir {0} - está instalado?\nCompruebe ruta en Preferencias, Estructura
label.find=Buscar
+label.in = en
label.select_pdb_file=Seleccionar Fichero PDB
label.structures_filter=Filtro de Estructuras
label.scale_protein_to_cdna=Adaptar proteína a cDNA
label.select_pdb_file=Seleccionar Fichero PDB
label.structures_filter=Filtro de Estructuras
label.scale_protein_to_cdna=Adaptar proteína a cDNA
diff --git
a/src/jalview/gui/AlignFrame.java
b/src/jalview/gui/AlignFrame.java
index
5370437
..
61ee231
100644
(file)
--- a/
src/jalview/gui/AlignFrame.java
+++ b/
src/jalview/gui/AlignFrame.java
@@
-2825,7
+2825,7
@@
public class AlignFrame extends GAlignFrame implements DropTargetListener,
@Override
public void findMenuItem_actionPerformed(ActionEvent e)
{
@Override
public void findMenuItem_actionPerformed(ActionEvent e)
{
- new Finder(alignPanel);
+ new Finder(alignPanel, false, null);
}
/**
}
/**
diff --git
a/src/jalview/gui/Finder.java
b/src/jalview/gui/Finder.java
index
d328452
..
df56986
100755
(executable)
--- a/
src/jalview/gui/Finder.java
+++ b/
src/jalview/gui/Finder.java
@@
-20,18
+20,10
@@
*/
package jalview.gui;
*/
package jalview.gui;
-import jalview.api.AlignViewportI;
-import jalview.api.FinderI;
-import jalview.datamodel.SearchResultMatchI;
-import jalview.datamodel.SearchResultsI;
-import jalview.datamodel.SequenceFeature;
-import jalview.datamodel.SequenceI;
-import jalview.jbgui.GFinder;
-import jalview.util.MessageManager;
-
import java.awt.Dimension;
import java.awt.Dimension;
-import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionEvent;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.HashMap;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.HashMap;
@@
-48,6
+40,15
@@
import javax.swing.KeyStroke;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
+import jalview.api.AlignViewportI;
+import jalview.api.FinderI;
+import jalview.datamodel.SearchResultMatchI;
+import jalview.datamodel.SearchResultsI;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceI;
+import jalview.jbgui.GFinder;
+import jalview.util.MessageManager;
+
/**
* Performs the menu option for searching the alignment, for the next or all
* matches. If matches are found, they are highlighted, and the user has the
/**
* Performs the menu option for searching the alignment, for the next or all
* matches. If matches are found, they are highlighted, and the user has the
@@
-82,33
+83,62
@@
public class Finder extends GFinder
private SearchResultsI searchResults;
private SearchResultsI searchResults;
+ /*
+ * true if Finder always acts on the same alignment,
+ * false if it acts on the alignment with focus
+ */
+ private boolean focusFixed;
+
/**
* Constructor given an associated alignment panel. Constructs and displays an
/**
* Constructor given an associated alignment panel. Constructs and displays an
- * internal frame where the user can enter a search string.
+ * internal frame where the user can enter a search string. The Finder may
+ * have 'fixed focus' (always act the panel for which it is constructed), or
+ * not (acts on the alignment that has focus). An optional 'scope' may be
+ * added to be shown in the title of the Finder frame.
*
* @param alignPanel
*
* @param alignPanel
+ * @param fixedFocus
+ * @param scope
*/
*/
- public Finder(AlignmentPanel alignPanel)
+ public Finder(AlignmentPanel alignPanel, boolean fixedFocus, String scope)
{
av = alignPanel.getAlignViewport();
ap = alignPanel;
{
av = alignPanel.getAlignViewport();
ap = alignPanel;
+ focusFixed = fixedFocus;
finders = new HashMap<>();
frame = new JInternalFrame();
frame.setContentPane(this);
frame.setLayer(JLayeredPane.PALETTE_LAYER);
finders = new HashMap<>();
frame = new JInternalFrame();
frame.setContentPane(this);
frame.setLayer(JLayeredPane.PALETTE_LAYER);
- frame.addInternalFrameListener(
- new InternalFrameAdapter()
- {
- @Override
- public void internalFrameClosing(InternalFrameEvent e)
- {
- closeAction();
- }
- });
+ frame.addInternalFrameListener(new InternalFrameAdapter()
+ {
+ @Override
+ public void internalFrameClosing(InternalFrameEvent e)
+ {
+ closeAction();
+ }
+ });
+ frame.addFocusListener(new FocusAdapter()
+ {
+ @Override
+ public void focusGained(FocusEvent e)
+ {
+ /*
+ * ensure 'ignore hidden columns' is only enabled
+ * if the alignment with focus has hidden columns
+ */
+ getFocusedViewport();
+ }
+ });
+
addEscapeHandler();
addEscapeHandler();
- Desktop.addInternalFrame(frame, MessageManager.getString("label.find"),
- true, MY_WIDTH, MY_HEIGHT, true, true);
+ String title = MessageManager.getString("label.find");
+ if (scope != null)
+ {
+ title += " " + scope;
+ }
+ Desktop.addInternalFrame(frame, title, MY_WIDTH, MY_HEIGHT);
+ frame.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT));
searchBox.getComponent().requestFocus();
}
searchBox.getComponent().requestFocus();
}
@@
-156,17
+186,18
@@
public class Finder extends GFinder
/**
* if !focusfixed and not in a desktop environment, checks that av and ap are
* valid. Otherwise, gets the topmost alignment window and sets av and ap
/**
* if !focusfixed and not in a desktop environment, checks that av and ap are
* valid. Otherwise, gets the topmost alignment window and sets av and ap
- * accordingly. Also sets the 'ignore hidden' checkbox disabled if the viewport
- * has no hidden columns.
+ * accordingly. Also sets the 'ignore hidden' checkbox disabled if the
+ * viewport has no hidden columns.
*
* @return false if no alignment window was found
*/
boolean getFocusedViewport()
{
*
* @return false if no alignment window was found
*/
boolean getFocusedViewport()
{
- if (Desktop.desktop == null)
+ if (focusFixed || Desktop.desktop == null)
{
if (ap != null && av != null)
{
{
if (ap != null && av != null)
{
+ ignoreHidden.setEnabled(av.hasHiddenColumns());
return true;
}
// we aren't in a desktop environment, so give up now.
return true;
}
// we aren't in a desktop environment, so give up now.
@@
-294,19
+325,25
@@
public class Finder extends GFinder
if (doFindAll)
{
// then we report the matches that were found
if (doFindAll)
{
// then we report the matches that were found
- String message = (idMatch.size() > 0) ? "" + idMatch.size() + " IDs"
- : "";
+ StringBuilder message = new StringBuilder();
+ if (idMatch.size() > 0)
+ {
+ message.append(idMatch.size()).append(" IDs");
+ }
if (searchResults != null)
{
if (idMatch.size() > 0 && searchResults.getCount() > 0)
{
if (searchResults != null)
{
if (idMatch.size() > 0 && searchResults.getCount() > 0)
{
- message += " and ";
+ message.append(" ").append(
+ MessageManager.getString("label.and").toLowerCase())
+ .append(" ");
}
}
- message += searchResults.getCount()
- + " subsequence matches found.";
+ message.append(MessageManager.formatMessage(
+ "label.subsequence_matches_found",
+ searchResults.getCount()));
}
}
- JvOptionPane.showInternalMessageDialog(this, message, null,
- JvOptionPane.PLAIN_MESSAGE);
+ JvOptionPane.showInternalMessageDialog(this, message.toString(),
+ null, JvOptionPane.INFORMATION_MESSAGE);
}
}
}
}
}
}
@@
-371,15
+408,4
@@
public class Finder extends GFinder
ap.alignFrame.requestFocus();
}
}
ap.alignFrame.requestFocus();
}
}
-
- @Override
- protected void paintComponent(Graphics g)
- {
- /*
- * enable 'hidden regions' option only if
- * 'top' viewport has hidden columns
- */
- getFocusedViewport();
- super.paintComponent(g);
- }
}
}
diff --git
a/src/jalview/gui/SplitFrame.java
b/src/jalview/gui/SplitFrame.java
index
7ade797
..
7ce8673
100644
(file)
--- a/
src/jalview/gui/SplitFrame.java
+++ b/
src/jalview/gui/SplitFrame.java
@@
-814,7
+814,11
@@
public class SplitFrame extends GSplitFrame implements SplitContainerI
if (c != null && c instanceof AlignFrame)
{
AlignFrame af = (AlignFrame) c;
if (c != null && c instanceof AlignFrame)
{
AlignFrame af = (AlignFrame) c;
- new Finder(af.alignPanel);
+ boolean dna = af.getViewport().getAlignment().isNucleotide();
+ String scope = MessageManager.getString("label.in") + " "
+ + (dna ? MessageManager.getString("label.nucleotide")
+ : MessageManager.getString("label.protein"));
+ new Finder(af.alignPanel, true, scope);
}
}
};
}
}
};