package jalview.appletgui;
import jalview.analysis.NJTree;
-import jalview.api.AlignExportSettingI;
import jalview.api.AlignViewportI;
-import jalview.api.FeatureRenderer;
+import jalview.api.FeatureSettingsModelI;
import jalview.bin.JalviewLite;
import jalview.commands.CommandI;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.ColumnSelection;
import jalview.datamodel.SearchResults;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.renderer.ResidueShader;
import jalview.schemes.ColourSchemeProperty;
import jalview.schemes.UserColourScheme;
-import jalview.structure.CommandListener;
import jalview.structure.SelectionSource;
import jalview.structure.StructureSelectionManager;
import jalview.structure.VamsasSource;
import jalview.viewmodel.AlignmentViewport;
+import jalview.viewmodel.ViewportRanges;
import java.awt.Font;
public class AlignViewport extends AlignmentViewport implements
- SelectionSource, VamsasSource, CommandListener
+ SelectionSource
{
boolean cursorMode = false;
private AnnotationColumnChooser annotationColumnSelectionState;
- private FeatureRenderer featureRenderer;
-
- private AlignExportSettingI exportSettings;
-
+ @Override
public void finalize()
{
applet = null;
calculator = new jalview.workers.AlignCalcManager();
this.applet = applet;
alignment = al;
+ ranges = new ViewportRanges(this.alignment);
// we always pad gaps
this.setPadGaps(true);
- this.startRes = 0;
- this.endRes = al.getWidth() - 1;
- this.startSeq = 0;
- this.endSeq = al.getHeight() - 1;
+
if (applet != null)
{
// get the width and height scaling factors if they were specified
if (applet != null)
{
- String colour = applet.getParameter("defaultColour");
-
+ String colour = al.isNucleotide() ? applet
+ .getParameter("defaultColourNuc") : applet
+ .getParameter("defaultColourProt");
+ if (colour == null)
+ {
+ colour = applet.getParameter("defaultColour");
+ }
if (colour == null)
{
colour = applet.getParameter("userDefinedColour");
if (colour != null)
{
- globalColourScheme = ColourSchemeProperty.getColour(alignment,
- colour);
- if (globalColourScheme != null)
+ residueShading = new ResidueShader(
+ ColourSchemeProperty.getColourScheme(alignment, colour));
+ if (residueShading != null)
{
- globalColourScheme.setConsensus(hconsensus);
+ residueShading.setConsensus(hconsensus);
}
}
if (applet.getParameter("userDefinedColour") != null)
{
- ((UserColourScheme) globalColourScheme).parseAppletParameter(applet
- .getParameter("userDefinedColour"));
+ residueShading = new ResidueShader(
+ new UserColourScheme(
+ applet.getParameter("userDefinedColour")));
}
}
initAutoAnnotation();
return font;
}
-
public void resetSeqLimits(int height)
{
- setEndSeq(height / getCharHeight());
+ ranges.setEndSeq(height / getCharHeight());
}
public void setCurrentTree(NJTree tree)
return currentTree;
}
-
boolean centreColumnLabels;
public boolean getCentreColumnLabels()
return followSelection;
}
+ @Override
public void sendSelection()
{
getStructureSelectionManager().sendSelection(
- new SequenceGroup(getSelectionGroup()),
- new ColumnSelection(getColumnSelection()), this);
+ new SequenceGroup(getSelectionGroup()),
+ new ColumnSelection(getColumnSelection()), this);
}
/**
.getStructureSelectionManager(applet);
}
- /**
- * synthesize a column selection if none exists so it covers the given
- * selection group. if wholewidth is false, no column selection is made if the
- * selection group covers the whole alignment width.
- *
- * @param sg
- * @param wholewidth
- */
- public void expandColSelection(SequenceGroup sg, boolean wholewidth)
- {
- int sgs, sge;
- if (sg != null
- && (sgs = sg.getStartRes()) >= 0
- && sg.getStartRes() <= (sge = sg.getEndRes())
- && (colSel == null || colSel.getSelected() == null || colSel
- .getSelected().size() == 0))
- {
- if (!wholewidth && alignment.getWidth() == (1 + sge - sgs))
- {
- // do nothing
- return;
- }
- if (colSel == null)
- {
- colSel = new ColumnSelection();
- }
- for (int cspos = sg.getStartRes(); cspos <= sg.getEndRes(); cspos++)
- {
- colSel.addElement(cspos);
- }
- }
- }
-
+ @Override
public boolean isNormaliseSequenceLogo()
{
return normaliseSequenceLogo;
*
* @return true if alignment characters should be displayed
*/
+ @Override
public boolean isValidCharWidth()
{
return validCharWidth;
* there is no complement, or it is not following highlights, or no mapping
* is found, the result will be empty.
*/
- SearchResults sr = new SearchResults();
+ SearchResultsI sr = new SearchResults();
int seqOffset = findComplementScrollTarget(sr);
if (!sr.isEmpty())
{
}
}
+ /**
+ * Applies the supplied feature settings descriptor to currently known
+ * features. This supports an 'initial configuration' of feature colouring
+ * based on a preset or user favourite. This may then be modified in the usual
+ * way using the Feature Settings dialogue.
+ *
+ * @param featureSettings
+ */
+ @Override
+ public void applyFeaturesStyle(FeatureSettingsModelI featureSettings)
+ {
+ // TODO implement for applet
+ }
}