*/
protected void htmlMenuItem_actionPerformed(ActionEvent e)
{
- new HTMLOutput(viewport,
+ new HTMLOutput(alignPanel,
alignPanel.seqPanel.seqCanvas.getSequenceRenderer(),
alignPanel.seqPanel.seqCanvas.getFeatureRenderer());
}
jmolpopup = JmolPopup.newJmolPopup(viewer);
viewer.evalStringQuiet(command);
+
+ colourBySequence = true;
}
SequenceRenderer sr = ap.seqPanel.seqCanvas.getSequenceRenderer();
boolean showFeatures = false;
+
if (ap.av.showSequenceFeatures)
{
showFeatures = true;
if (fr == null)
{
- fr = new jalview.gui.FeatureRenderer(ap.av);
+ fr = new jalview.gui.FeatureRenderer(ap);
}
fr.transferSettings(ap.seqPanel.seqCanvas.getFeatureRenderer());
{
for (int m = 0; m < mapping.length; m++)
{
- if (mapping[m].getSequence() == sequence[s])
+ if (mapping[m].getSequence() == sequence[s]
+ && ap.av.alignment.findIndex(sequence[s])>-1)
{
for (int r = 0; r < sequence[s].getLength(); r++)
{
*/
public class FeatureRenderer
{
+ AlignmentPanel ap;
AlignViewport av;
Color resBoxColour;
float transparency = 1.0f;
* @param av
* DOCUMENT ME!
*/
- public FeatureRenderer(AlignViewport av)
+ public FeatureRenderer(AlignmentPanel ap)
{
- this.av = av;
+ this.ap = ap;
+ this.av = ap.av;
}
+
public void transferSettings(FeatureRenderer fr)
{
- renderOrder = fr.renderOrder;
- featureGroups = fr.featureGroups;
- featureColours = fr.featureColours;
- transparency = fr.transparency;
- featureOrder = fr.featureOrder;
+ this.renderOrder = fr.renderOrder;
+ this.featureGroups = fr.featureGroups;
+ this.featureColours = fr.featureColours;
+ this.transparency = fr.transparency;
+ this.featureOrder = fr.featureOrder;
}
BufferedImage offscreenImage;
if (featureGroups != null
&& sequenceFeatures[sfindex].featureGroup != null
- &&
+ &&
sequenceFeatures[sfindex].featureGroup.length()!=0
&& featureGroups.containsKey(sequenceFeatures[sfindex].featureGroup)
&&
{
if (!av.featuresDisplayed.containsKey(features[index].getType()))
{
+ if(featureGroups.containsKey(features[index].getType()))
+ {
+ boolean visible = ( (Boolean) featureGroups.get(
+ features[index].featureGroup)).booleanValue();
+
+ if(!visible)
+ {
+ System.out.println(features[index].featureGroup
+ +" not visible");
+ index++;
+ continue;
+ }
+ }
+
+
if (! (features[index].begin == 0 && features[index].end == 0))
{
// If beginning and end are 0, the feature is for the whole sequence
}
public Color getColour(String featureType)
{
- if (featureColours.get(featureType) == null)
+ if (!featureColours.containsKey(featureType))
{
jalview.schemes.UserColourScheme ucs = new
jalview.schemes.UserColourScheme();
static String lastFeatureGroupAdded;
static String lastDescriptionAdded;
- public boolean createNewFeatures(SequenceI[] sequences,
- SequenceFeature[] features)
- {
- return amendFeatures(sequences, features, true, null);
- }
-
int featureIndex = 0;
boolean amendFeatures(final SequenceI[] sequences,
final SequenceFeature[] features,
boolean newFeatures,
final AlignmentPanel ap)
{
- findAllFeatures();
featureIndex = 0;
{
public void mousePressed(MouseEvent evt)
{
- colour.setBackground(
- JColorChooser.showDialog(Desktop.desktop,
- "Select Feature Colour",
- colour.getBackground()));
+ Color col = JColorChooser.showDialog(Desktop.desktop,
+ "Select Feature Colour",
+ colour.getBackground());
+ if (col != null)
+ colour.setBackground(col);
+
}
});
sf.type = lastFeatureAdded;
sf.featureGroup = lastFeatureGroupAdded;
sf.description = lastDescriptionAdded;
+
setColour(sf.type, colour.getBackground());
+ av.featuresDisplayed.put(sf.type,
+ new Integer(colour.getBackground().getRGB()));
+
try
{
sf.begin = ( (Integer) start.getValue()).intValue();
ffile.parseDescriptionHTML(sf, false);
}
}
- else
+ else //NEW FEATURES ADDED
{
if (reply == JOptionPane.OK_OPTION
- && name.getText() != null
- && source.getText() != null)
+ && lastFeatureAdded.length()>0)
{
for (int i = 0; i < sequences.length; i++)
{
features[i].type = lastFeatureAdded;
- features[i].featureGroup = lastFeatureGroupAdded;
+ if (lastFeatureGroupAdded!=null)
+ features[i].featureGroup = lastFeatureGroupAdded;
features[i].description = lastDescriptionAdded;
sequences[i].addSequenceFeature(features[i]);
ffile.parseDescriptionHTML(features[i], false);
av.featuresDisplayed = new Hashtable();
}
- if (featureGroups == null)
+ if (lastFeatureGroupAdded != null)
{
- featureGroups = new Hashtable();
+ if (featureGroups == null)
+ featureGroups = new Hashtable();
+ featureGroups.put(lastFeatureGroupAdded, new Boolean(true));
}
-
Color col = colour.getBackground();
setColour(lastFeatureAdded, colour.getBackground());
-
- if(lastFeatureGroupAdded!=null)
- {
- featureGroups.put(lastFeatureGroupAdded, new Boolean(true));
- av.featuresDisplayed.put(lastFeatureGroupAdded,
+ av.featuresDisplayed.put(lastFeatureAdded,
new Integer(col.getRGB()));
- }
- findAllFeatures();
+
+ findAllFeatures(false);
+
+ ap.paintAlignment(true);
+
return true;
}
}
}
- findAllFeatures();
+ ap.paintAlignment(true);
return true;
}
fs.handlingUpdate=false;
}
}
-
+
});
-
+
frame = new JInternalFrame();
frame.setContentPane(this);
Desktop.addInternalFrame(frame, "Sequence Feature Settings", 400, 450);
* true when Feature Settings are updating from feature renderer
*/
private boolean handlingUpdate=false;
-
+
/**
* contains a float[3] for each feature type string. created by setTableData
*/
index++;
}
}
-
+
resetTable(null);
validate();
}
/**
- *
+ *
* @param group
* @return true if group has been seen before and is already added to set.
*/
{
visible = ( (Boolean) fr.featureGroups.get(group)).booleanValue();
} else {
- visible=true; // new group is always made visible
+ visible=true; // new group is always made visible
}
if (groupPanel == null)
if (alreadyAdded)
{
-
+
return true;
}
boolean sort=false;
for (int i=0;i<width.length; i++) {
//awidth = (float[]) typeWidth.get(data[i][0]);
- if (width[i]==0)
+ if (width[i]==0)
{
width[i] = fr.getOrder(data[i][0].toString());
if (width[i]<0)
{
width[i] = fr.setOrder(data[i][0].toString(), i/data.length);
}
- } else {
+ } else {
width[i] /=max; // normalize
- fr.setOrder(data[i][0].toString(), width[i]); // store for later
+ fr.setOrder(data[i][0].toString(), width[i]); // store for later
}
if (i>0)
sort = sort || width[i-1]>width[i];
if (sort)
jalview.util.QuickSort.sort(width, data);
// update global priority order
-
+
updateFeatureRenderer(data,false);
table.repaint();
}
{
fr.setFeaturePriority(data, visibleNew);
af.alignPanel.paintAlignment(true);
-
- if (af.alignPanel.overviewPanel != null)
- {
- af.alignPanel.overviewPanel.updateOverviewImage();
- }
}
int selectedRow = -1;
}
if (ap.seqPanel.seqCanvas.getFeatureRenderer()
- .createNewFeatures(seqs, features))
+ .amendFeatures(seqs, features, true, ap))
{
ap.alignFrame.showSeqFeatures.setSelected(true);
av.setShowSequenceFeatures(true);
sr = new SequenceRenderer(av);\r
sr.renderGaps = false;\r
sr.forOverview = true;\r
- fr = new FeatureRenderer(av);\r
+ fr = new FeatureRenderer(ap);\r
\r
// scale the initial size of overviewpanel to shape of alignment\r
float initialScale = (float) av.alignment.getWidth() /\r
*/\r
public void paintComponent(Graphics g)\r
{\r
- if (miniMe != null && !resizing)\r
+ if(resizing)\r
+ {\r
+ g.setColor(Color.white);\r
+ g.fillRect(0,0,getWidth(),getHeight());\r
+ }\r
+ else if (miniMe != null)\r
{\r
g.drawImage(miniMe, 0, 0, this);\r
}\r
}\r
\r
if (ap.seqPanel.seqCanvas.getFeatureRenderer()\r
- .createNewFeatures(seqs, features))\r
+ .amendFeatures(seqs, features, true, ap))\r
{\r
ap.alignFrame.showSeqFeatures.setSelected(true);\r
ap.av.setShowSequenceFeatures(true);\r
*\r
* @param av DOCUMENT ME!\r
*/\r
- public SeqCanvas(AlignViewport av)\r
+ public SeqCanvas(AlignmentPanel ap)\r
{\r
- this.av = av;\r
- fr = new FeatureRenderer(av);\r
+ this.av = ap.av;\r
+ fr = new FeatureRenderer(ap);\r
sr = new SequenceRenderer(av);\r
setLayout(new BorderLayout());\r
PaintRefresher.Register(this, av.getSequenceSetId());\r
return fr;\r
}\r
\r
- public AlignViewport getViewport()\r
- {\r
- return av;\r
- }\r
\r
/**\r
* DOCUMENT ME!\r
* @param avp DOCUMENT ME!\r
* @param p DOCUMENT ME!\r
*/\r
- public SeqPanel(AlignViewport avp, AlignmentPanel p)\r
+ public SeqPanel(AlignViewport av, AlignmentPanel ap)\r
{\r
linkImageURL = getClass().getResource("/images/link.gif");\r
ToolTipManager.sharedInstance().registerComponent(this);\r
ToolTipManager.sharedInstance().setInitialDelay(0);\r
ToolTipManager.sharedInstance().setDismissDelay(10000);\r
- this.av = avp;\r
+ this.av = av;\r
setBackground(Color.white);\r
\r
- seqCanvas = new SeqCanvas(avp);\r
+ seqCanvas = new SeqCanvas(ap);\r
setLayout(new BorderLayout());\r
add(seqCanvas, BorderLayout.CENTER);\r
\r
- ap = p;\r
+ this.ap = ap;\r
\r
if (!av.isDataset())\r
{\r
continue;\r
}\r
\r
+\r
if ( (features[i].getBegin() <= res) &&\r
(features[i].getEnd() >= res))\r
{\r
ap.alignFrame.addHistoryItem(editCommand);\r
av.firePropertyChange("alignment", null,\r
av.getAlignment().getSequences());\r
+ ap.paintAlignment(true);\r
}\r
\r
startseq = -1;\r
}\r
\r
endEditing();\r
-\r
- ap.paintAlignment(true);\r
}\r
\r
/**\r
SliderPanel.setPIDSliderSource(ap, stretchGroup.cs,\r
stretchGroup.getName());\r
}\r
+ PaintRefresher.Refresh(this, av.getSequenceSetId());\r
+ ap.paintAlignment(true);\r
}\r
+\r
changeEndRes = false;\r
changeStartRes = false;\r
stretchGroup = null;\r
\r
- PaintRefresher.Refresh(this, av.getSequenceSetId());\r
- ap.paintAlignment(true);\r
}\r
\r
/**\r
FeatureRenderer fr;\r
Color color;\r
\r
- public HTMLOutput(AlignViewport av, SequenceRenderer sr, FeatureRenderer fr1)\r
+ public HTMLOutput(AlignmentPanel ap, SequenceRenderer sr, FeatureRenderer fr1)\r
{\r
- this.av = av;\r
+ this.av = ap.av;\r
this.sr = sr;\r
\r
- fr = new FeatureRenderer(av);\r
+ fr = new FeatureRenderer(ap);\r
fr.transferSettings(fr1);\r
\r
JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.\r