}
/**
- * DOCUMENT ME!
+ * Opens an Overview panel for the alignment, unless one is open already
*
* @param e
- * DOCUMENT ME!
*/
@Override
public void overviewMenuItem_actionPerformed(ActionEvent e)
return;
}
+ boolean showHiddenRegions = Cache.getDefault(Preferences.SHOW_OV_HIDDEN_AT_START,
+ false);
+ openOverviewPanel(showHiddenRegions);
+ }
+
+ public OverviewPanel openOverviewPanel(boolean showHidden)
+ {
JInternalFrame frame = new JInternalFrame();
- final OverviewPanel overview = new OverviewPanel(alignPanel);
+ final OverviewPanel overview = new OverviewPanel(alignPanel, showHidden);
frame.setContentPane(overview);
Desktop.addInternalFrame(frame, MessageManager
.formatMessage("label.overview_params", new Object[]
}
alignPanel.setOverviewPanel(overview);
+
+ return overview;
}
@Override
*/
package jalview.gui;
-import jalview.api.AlignViewportI;
-import jalview.bin.Cache;
-import jalview.renderer.OverviewRenderer;
-import jalview.renderer.OverviewResColourFinder;
-import jalview.viewmodel.OverviewDimensions;
-import jalview.viewmodel.seqfeatures.FeatureRendererModel;
-
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;
+import jalview.api.AlignViewportI;
+import jalview.bin.Cache;
+import jalview.renderer.OverviewRenderer;
+import jalview.renderer.OverviewResColourFinder;
+import jalview.viewmodel.OverviewDimensions;
+import jalview.viewmodel.seqfeatures.FeatureRendererModel;
+
public class OverviewCanvas extends JPanel
{
+ public static final Color OVERVIEW_DEFAULT_GAP = Color.lightGray;
+
+ public static final Color OVERVIEW_DEFAULT_LEGACY_GAP = Color.white;
+
+ public static final Color OVERVIEW_DEFAULT_RESIDUE = Color.white;
+
+ public static final Color OVERVIEW_DEFAULT_LEGACY_RESIDUE = Color.lightGray;
+
+ public static final Color OVERVIEW_DEFAULT_HIDDEN = Color.darkGray
+ .darker();
+
private static final Color TRANS_GREY = new Color(100, 100, 100, 25);
// This is set true if the alignment view changes whilst
boolean useLegacy = Cache.getDefault(Preferences.USE_LEGACY_GAP, false);
Color gapCol = Cache.getDefaultColour(Preferences.GAP_COLOUR,
- jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP);
+ OVERVIEW_DEFAULT_GAP);
Color hiddenCol = Cache.getDefaultColour(Preferences.HIDDEN_COLOUR,
- jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_HIDDEN);
- cf = new OverviewResColourFinder(useLegacy, gapCol, hiddenCol);
+ OVERVIEW_DEFAULT_HIDDEN);
+ Color residueCol = useLegacy ? OVERVIEW_DEFAULT_LEGACY_RESIDUE : OVERVIEW_DEFAULT_RESIDUE;
+
+ cf = new OverviewResColourFinder(gapCol, residueCol, hiddenCol);
setSize(od.getWidth(), od.getHeight());
}
@Override
public void paintComponent(Graphics g)
{
- //super.paintComponent(g);
+ // super.paintComponent(g);
if (restart)
{
{
// if there is annotation, scale the alignment and annotation
// separately
- if (od.getGraphHeight() > 0
- && od.getSequencesHeight() > 0 // BH 2019
- )
+ if (od.getGraphHeight() > 0 && od.getSequencesHeight() > 0 // BH 2019
+ )
{
BufferedImage topImage = lastMiniMe.getSubimage(0, 0,
od.getWidth(), od.getSequencesHeight());
{
g.drawImage(lastMiniMe, 0, 0, getWidth(), getHeight(), this);
}
-
+
// draw the box
g.setColor(Color.red);
od.drawBox(g);
}
-
public void dispose()
{
dispose = true;
}
}
}
+
+ public Color getGapColour()
+ {
+ return cf.getGapColour();
+ }
+
+ public Color getHiddenColour()
+ {
+ return cf.getHiddenColour();
+ }
+
+ public Color getResidueColour()
+ {
+ return cf.getResidueColour();
+ }
+
+ /**
+ * Sets the colours to use for gaps, residues and hidden regions
+ *
+ * @param gaps
+ * @param residues
+ * @param hidden
+ */
+ public void setColours(Color gaps, Color residues, Color hidden)
+ {
+ cf = new OverviewResColourFinder(gaps, residues, hidden);
+ }
}
*/
package jalview.gui;
-import jalview.bin.Cache;
-import jalview.renderer.OverviewRenderer;
-import jalview.util.MessageManager;
-import jalview.util.Platform;
-import jalview.viewmodel.OverviewDimensions;
-import jalview.viewmodel.OverviewDimensionsHideHidden;
-import jalview.viewmodel.OverviewDimensionsShowHidden;
-import jalview.viewmodel.ViewportListenerI;
-
import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.Dimension;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
+import jalview.renderer.OverviewRenderer;
+import jalview.util.MessageManager;
+import jalview.util.Platform;
+import jalview.viewmodel.OverviewDimensions;
+import jalview.viewmodel.OverviewDimensionsHideHidden;
+import jalview.viewmodel.OverviewDimensionsShowHidden;
+import jalview.viewmodel.ViewportListenerI;
+
/**
* Panel displaying an overview of the full alignment, with an interactive box
* representing the viewport onto the alignment.
*
* @param alPanel
* The alignment panel which is shown in the overview panel
+ * @param isShowHidden TODO
*/
- public OverviewPanel(AlignmentPanel alPanel)
+ public OverviewPanel(AlignmentPanel alPanel, boolean isShowHidden)
{
this.av = alPanel.av;
this.ap = alPanel;
- showHidden = Cache.getDefault(Preferences.SHOW_OV_HIDDEN_AT_START,
- false);
+ showHidden = isShowHidden;
if (showHidden)
{
od = new OverviewDimensionsShowHidden(av.getRanges(),
od = null;
}
}
+
+ public boolean isShowHiddenRegions()
+ {
+ return showHidden;
+ }
+
+ public OverviewCanvas getCanvas()
+ {
+ return oviewCanvas;
+ }
}
/*
* Set overview panel defaults
*/
- gapColour.setBackground(
- Cache.getDefaultColour(GAP_COLOUR,
- jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP));
- hiddenColour.setBackground(
- Cache.getDefaultColour(HIDDEN_COLOUR,
- jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_HIDDEN));
+ gapColour.setBackground(Cache.getDefaultColour(GAP_COLOUR,
+ OverviewCanvas.OVERVIEW_DEFAULT_GAP));
+ hiddenColour.setBackground(Cache.getDefaultColour(HIDDEN_COLOUR,
+ OverviewCanvas.OVERVIEW_DEFAULT_HIDDEN));
useLegacyGap.setSelected(Cache.getDefault(USE_LEGACY_GAP, false));
gapLabel.setEnabled(!useLegacyGap.isSelected());
gapColour.setEnabled(!useLegacyGap.isSelected());
* set choice of structure viewer, and path if saved as a preference;
* default to Jmol (first choice) if an unexpected value is found
*/
- String viewerType = Cache.getDefault(STRUCTURE_DISPLAY, ViewerType.JMOL.name());
+ String viewerType = Cache.getDefault(STRUCTURE_DISPLAY,
+ ViewerType.JMOL.name());
structViewer.setSelectedItem(viewerType);
String viewerPath = "";
ViewerType type = null;
{
if (validateViewerPath())
{
- Cache.setProperty(structViewer.getSelectedItem()
- .equals(ViewerType.CHIMERAX.name())
- ? CHIMERAX_PATH
- : CHIMERA_PATH, structureViewerPath.getText());
+ Cache.setProperty(
+ structViewer.getSelectedItem().equals(
+ ViewerType.CHIMERAX.name()) ? CHIMERAX_PATH
+ : CHIMERA_PATH,
+ structureViewerPath.getText());
}
}
});
annotations_actionPerformed(null); // update the display of the annotation
// settings
-
-
+
/*
* Set Backups tab defaults
*/
comboBox.addItem(promptEachTimeOpt);
comboBox.addItem(lineArtOpt);
comboBox.addItem(textOpt);
-
+
/*
* JalviewJS doesn't support Lineart so force it to Text
*/
Boolean.toString(structFromPdb.isSelected()));
String viewer = structViewer.getSelectedItem().toString();
String viewerPath = structureViewerPath.getText();
- Cache.applicationProperties.setProperty(STRUCTURE_DISPLAY,
- viewer);
+ Cache.applicationProperties.setProperty(STRUCTURE_DISPLAY, viewer);
if (viewer.equals(ViewerType.CHIMERA.name()))
{
Cache.setOrRemove(CHIMERA_PATH, viewerPath);
Cache.applicationProperties.setProperty(BackupFiles.ENABLED,
Boolean.toString(enableBackupFiles.isSelected()));
int preset = getComboIntStringKey(backupfilesPresetsCombo);
- Cache.applicationProperties.setProperty(BackupFiles.NS + "_PRESET", Integer.toString(preset));
+ Cache.applicationProperties.setProperty(BackupFiles.NS + "_PRESET",
+ Integer.toString(preset));
if (preset == BackupFilesPresetEntry.BACKUPFILESSCHEMECUSTOM)
{
BackupFilesPresetEntry customBFPE = getBackupfilesCurrentEntry();
BackupFilesPresetEntry.backupfilesPresetEntriesValues.put(
BackupFilesPresetEntry.BACKUPFILESSCHEMECUSTOM, customBFPE);
- Cache.applicationProperties
- .setProperty(BackupFilesPresetEntry.CUSTOMCONFIG,
- customBFPE.toString());
+ Cache.applicationProperties.setProperty(
+ BackupFilesPresetEntry.CUSTOMCONFIG, customBFPE.toString());
}
BackupFilesPresetEntry savedBFPE = BackupFilesPresetEntry.backupfilesPresetEntriesValues
if (!useLegacyGap.isSelected())
{
JalviewColourChooser.showColourChooser(this,
- MessageManager.getString("label.select_gap_colour"),
- gap);
+ MessageManager.getString("label.select_gap_colour"), gap);
}
}
public void hiddenColour_actionPerformed(JPanel hidden)
{
JalviewColourChooser.showColourChooser(this,
- MessageManager.getString("label.select_hidden_colour"),
- hidden);
+ MessageManager.getString("label.select_hidden_colour"), hidden);
}
@Override
boolean enabled = useLegacyGap.isSelected();
if (enabled)
{
- gapColour.setBackground(
- jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_LEGACY_GAP);
+ gapColour.setBackground(OverviewCanvas.OVERVIEW_DEFAULT_LEGACY_GAP);
}
else
{
- gapColour.setBackground(
- jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP);
+ gapColour.setBackground(OverviewCanvas.OVERVIEW_DEFAULT_GAP);
}
gapColour.setEnabled(!enabled);
gapLabel.setEnabled(!enabled);
useLegacyGap.setSelected(false);
useLegacyGaps_actionPerformed(null);
showHiddenAtStart.setSelected(false);
- hiddenColour.setBackground(
- jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_HIDDEN);
+ hiddenColour.setBackground(OverviewCanvas.OVERVIEW_DEFAULT_HIDDEN);
}
@Override
int getColumnColourFromSequence(SequenceGroup[] allGroups,
SequenceI seq, int lastcol)
{
- Color color = resColFinder.GAP_COLOUR;
+ Color color = resColFinder.gapColour;
if ((seq != null) && (seq.getLength() > lastcol))
{
*/
package jalview.renderer;
+import java.awt.Color;
+
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.util.Comparison;
-import java.awt.Color;
-
public class OverviewResColourFinder extends ResidueColourFinder
{
- final Color GAP_COLOUR; // default colour to use at gaps
-
- final Color RESIDUE_COLOUR; // default colour to use at residues
-
- final Color HIDDEN_COLOUR; // colour for hidden regions
-
- boolean useLegacy = false;
-
- public static final Color OVERVIEW_DEFAULT_GAP = Color.lightGray;
+ /*
+ * colour for gaps (unless overridden by colour scheme)
+ * - as set in Preferences, _or_ read from a project file
+ */
+ Color gapColour;
- public static final Color OVERVIEW_DEFAULT_LEGACY_GAP = Color.white;
+ /*
+ * colour for residues if no colour scheme set (before feature colouring)
+ * - as set in Preferences, _or_ read from a project file
+ */
+ Color residueColour;
- public static final Color OVERVIEW_DEFAULT_HIDDEN = Color.darkGray
- .darker();
+ /*
+ * colour for hidden regions
+ * - as set in Preferences, _or_ read from a project file
+ */
+ Color hiddenColour;
/**
* Constructor without colour settings (used by applet)
+ * @deprecated
*/
+ @Deprecated
public OverviewResColourFinder()
{
- this(false, OVERVIEW_DEFAULT_GAP, OVERVIEW_DEFAULT_HIDDEN);
+ this(Color.lightGray, Color.white, Color.darkGray.darker());
}
/**
- * Constructor with colour settings
+ * Constructor given default colours for gaps, residues and hidden regions
*
- * @param useLegacyColouring
- * whether to use legacy gap colouring (white gaps, grey residues)
- * @param gapCol
- * gap colour if not legacy
- * @param hiddenCol
- * hidden region colour (transparency applied by rendering code)
+ * @param gaps
+ * @param residues
+ * @param hidden
*/
- public OverviewResColourFinder(boolean useLegacyColouring, Color gapCol,
- Color hiddenCol)
+ public OverviewResColourFinder(Color gaps, Color residues, Color hidden)
{
- if (useLegacyColouring)
- {
- GAP_COLOUR = Color.white;
- RESIDUE_COLOUR = Color.lightGray;
- HIDDEN_COLOUR = hiddenCol;
- }
- else
- {
- GAP_COLOUR = gapCol;
- RESIDUE_COLOUR = Color.white;
- HIDDEN_COLOUR = hiddenCol;
- }
+ gapColour = gaps;
+ residueColour = residues;
+ hiddenColour = hidden;
}
@Override
public Color getBoxColour(ResidueShaderI shader, SequenceI seq, int i)
{
- Color resBoxColour = RESIDUE_COLOUR;
+ Color resBoxColour = residueColour;
char currentChar = seq.getCharAt(i);
// In the overview window, gaps are coloured grey, unless the colour scheme
if (Comparison.isGap(currentChar)
&& (!shader.getColourScheme().hasGapColour()))
{
- resBoxColour = GAP_COLOUR;
+ resBoxColour = gapColour;
}
else
{
}
else if (Comparison.isGap(currentChar))
{
- resBoxColour = GAP_COLOUR;
+ resBoxColour = gapColour;
}
return resBoxColour;
*/
@Override
protected Color getResidueBoxColour(boolean showBoxes,
- ResidueShaderI shader,
- SequenceGroup[] allGroups, SequenceI seq, int i)
+ ResidueShaderI shader, SequenceGroup[] allGroups, SequenceI seq,
+ int i)
{
ResidueShaderI currentShader;
SequenceGroup currentSequenceGroup = getCurrentSequenceGroup(allGroups,
}
/**
- * Supply hidden colour
+ * Returns the colour used for hidden regions
+ *
+ * @return
+ */
+ public Color getHiddenColour()
+ {
+ return hiddenColour;
+ }
+
+ /**
+ * Returns the colour used for gaps, if not overridden by the alignment colour
+ * scheme
+ *
+ * @return
+ */
+ public Color getGapColour()
+ {
+ return gapColour;
+ }
+
+ /**
+ * Returns the colour used for residues (before applying any feature
+ * colouring) if there is no alignment colour scheme
*
- * @return colour of hidden regions
+ * @return
*/
- protected Color getHiddenColour()
+ public Color getResidueColour()
{
- return HIDDEN_COLOUR;
+ return gapColour;
}
}
import static org.testng.Assert.assertEquals;
+import java.awt.Color;
+
+import org.testng.annotations.Test;
+
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.Sequence;
import jalview.viewmodel.OverviewDimensions;
import jalview.viewmodel.OverviewDimensionsShowHidden;
import jalview.viewmodel.ViewportRanges;
-
-import java.awt.Color;
-
-import org.testng.annotations.Test;
public class OverviewRendererTest
{
@Test
public void testGetColumnColourFromSequence()
{
- OverviewResColourFinder cf = new OverviewResColourFinder(false,
- Color.PINK, Color.green); // gapColour, hiddenColour
+ // gapColour, residueColour, hiddenColour
+ OverviewResColourFinder cf = new OverviewResColourFinder(
+ Color.PINK, Color.white, Color.green);
Sequence seq1 = new Sequence("seq1", "PQ-RL-");
Sequence seq2 = new Sequence("seq2", "FVE");
AlignmentI al = new Alignment(new SequenceI[] { seq1, seq2 });
import static org.testng.AssertJUnit.assertEquals;
+import java.awt.Color;
+import java.util.ArrayList;
+
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
import jalview.bin.Cache;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignViewport;
import jalview.gui.JvOptionPane;
+import jalview.gui.OverviewCanvas;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.UserColourScheme;
import jalview.schemes.ZappoColourScheme;
-import java.awt.Color;
-import java.util.ArrayList;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
public class OverviewResColourFinderTest
{
// gaps are grey, residues white
assertEquals(Color.white, rcf.getResidueColour(true,
- av.getResidueShading(),
- null, seq, 0, null));
- assertEquals(Color.lightGray, rcf
- .getResidueColour(true, av.getResidueShading(), null, seq, 2,
- null));
+ av.getResidueShading(), null, seq, 0, null));
+ assertEquals(Color.lightGray, rcf.getResidueColour(true,
+ av.getResidueShading(), null, seq, 2, null));
// unaffected by showBoxes setting
assertEquals(Color.white, rcf.getResidueColour(false,
av.setGlobalColourScheme(new ZappoColourScheme());
// @see ResidueProperties.zappo
- assertEquals(Color.pink,
- rcf.getResidueColour(true, av.getResidueShading(),
- null, seq, 0, null)); // M
- assertEquals(Color.green,
- rcf.getResidueColour(true, av.getResidueShading(),
- null, seq, 2, null)); // T
- assertEquals(Color.magenta,
- rcf.getResidueColour(true, av.getResidueShading(),
- null, seq, 5, null)); // G
- assertEquals(Color.orange,
- rcf.getResidueColour(true, av.getResidueShading(),
- null, seq, 12, null)); // F
+ assertEquals(Color.pink, rcf.getResidueColour(true,
+ av.getResidueShading(), null, seq, 0, null)); // M
+ assertEquals(Color.green, rcf.getResidueColour(true,
+ av.getResidueShading(), null, seq, 2, null)); // T
+ assertEquals(Color.magenta, rcf.getResidueColour(true,
+ av.getResidueShading(), null, seq, 5, null)); // G
+ assertEquals(Color.orange, rcf.getResidueColour(true,
+ av.getResidueShading(), null, seq, 12, null)); // F
// gap colour not specified so gaps are lightGray
- assertEquals(Color.lightGray, rcf
- .getResidueColour(true, av.getResidueShading(), null, seq, 3,
- null));
+ assertEquals(Color.lightGray, rcf.getResidueColour(true,
+ av.getResidueShading(), null, seq, 3, null));
// unaffected by showBoxes setting
assertEquals(Color.pink, rcf.getResidueColour(false,
av.getResidueShading(), null, seq, 12, null)); // F
// gap colour not specified so gaps are lightGray
- assertEquals(Color.lightGray, rcf
- .getResidueColour(false, av.getResidueShading(), null, seq, 3,
- null));
+ assertEquals(Color.lightGray, rcf.getResidueColour(false,
+ av.getResidueShading(), null, seq, 3, null));
}
av.setGlobalColourScheme(new UserColourScheme(newColours));
// gap colour not specified so gaps are lightGray
- assertEquals(Color.lightGray, rcf
- .getResidueColour(true, av.getResidueShading(), null, seq, 3,
- null));
+ assertEquals(Color.lightGray, rcf.getResidueColour(true,
+ av.getResidueShading(), null, seq, 3, null));
newColours[23] = Color.pink;
av.setGlobalColourScheme(new UserColourScheme(newColours));
// gap colour specified as pink
assertEquals(Color.pink, rcf.getResidueColour(true,
- av.getResidueShading(),
- null, seq, 3, null));
+ av.getResidueShading(), null, seq, 3, null));
// unaffected by showBoxes setting
// gap colour not specified so gaps are lightGray
{
SequenceI seq = new Sequence("name", "MA--TVLGSPRAPAFF");
AlignmentI al = new Alignment(new SequenceI[] { seq });
-
+
ColourSchemeI cs = new ZappoColourScheme();
ArrayList<SequenceI> seqlist = new ArrayList<>();
seqlist.add(seq);
al.addGroup(sg);
SequenceGroup[] groups = new SequenceGroup[1];
groups[0] = sg;
-
+
final AlignViewport av = new AlignViewport(al);
ResidueColourFinder rcf = new OverviewResColourFinder();
-
+
// G in group specified as magenta in Zappo
assertEquals(Color.magenta, rcf.getResidueColour(false,
av.getResidueShading(), groups, seq, 7, null));
av.getResidueShading(), groups, seq, 2, null));
// use legacy colouring
- rcf = new OverviewResColourFinder(true, Color.blue, Color.red);
-
+ rcf = new OverviewResColourFinder(Color.white, Color.lightGray, Color.red);
+
// G in group specified as magenta in Zappo
assertEquals(Color.magenta, rcf.getResidueColour(false,
av.getResidueShading(), groups, seq, 7, null));
av.getResidueShading(), groups, seq, 2, null));
// use new colouring
- rcf = new OverviewResColourFinder(false, Color.blue, Color.red);
+ rcf = new OverviewResColourFinder(Color.blue, Color.white, Color.red);
// G in group specified as magenta in Zappo
assertEquals(Color.magenta, rcf.getResidueColour(false,
// gaps gap colour
c = rcf.getBoxColour(shader, seq, 3);
- assertEquals(
- jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP,
- c);
+ assertEquals(OverviewCanvas.OVERVIEW_DEFAULT_GAP, c);
// legacy colouring set explicitly via constructor
- rcf = new OverviewResColourFinder(true, Color.blue, Color.red);
+ rcf = new OverviewResColourFinder(Color.white, Color.lightGray, Color.red);
shader = new ResidueShader();
// residues light gray
// gaps gap colour
c = rcf.getBoxColour(shader, seq, 3);
- assertEquals(
- jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP,
- c);
+ assertEquals(OverviewCanvas.OVERVIEW_DEFAULT_GAP, c);
// non legacy colouring with colour scheme
- rcf = new OverviewResColourFinder(false, Color.blue, Color.red);
+ rcf = new OverviewResColourFinder(Color.blue, Color.white, Color.red);
shader = new ResidueShader(new ZappoColourScheme());
// M residue pink
assertEquals(Color.blue, c);
// legacy colouring with colour scheme
- rcf = new OverviewResColourFinder(true, Color.blue, Color.red);
+ rcf = new OverviewResColourFinder(Color.white, Color.lightGray, Color.red);
// M residue pink
c = rcf.getBoxColour(shader, seq, 0);