{
if (!fs.resettingTable && !fs.handlingUpdate) {
fs.handlingUpdate=true;
- fs.resetTable(null); // groups may be added with new seuqence feature types only
+ fs.resetTable(null); // new groups may be added with new seuqence feature types only
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
*/
if (!allGroups.contains(group))
{
allGroups.addElement(group);
- if (checkGroupState(group))
+ if (group!=null)
{
- // continue; // skip this group's feature - we've done it already ?
+ checkGroupState(group);
}
}
}
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;
}
return false;
}
boolean resettingTable=false;
- void resetTable(String[] groupChanged)
+ synchronized void resetTable(String[] groupChanged)
{
+ if (resettingTable==true)
+ {
+ return;
+ }
resettingTable=true;
typeWidth=new Hashtable();
// TODO: change avWidth calculation to 'per-sequence' average and use long rather than float
if (group == null || fr.featureGroups.get(group) == null ||
( (Boolean) fr.featureGroups.get(group)).booleanValue())
{
- checkGroupState(group);
+ if (group!=null)
+ checkGroupState(group);
type = tmpfeatures[index].getType();
if (!visibleChecks.contains(type))
{
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;
fetchDAS.setEnabled(true);
cancelDAS.setEnabled(false);
}
+ public void noDasSourceActive()
+ {
+ JOptionPane.showInternalConfirmDialog(Desktop.desktop,
+ "No das sources were selected.\n"
+ + "Please select some sources and\n"
+ +" try again.",
+ "No Sources Selected",
+ JOptionPane.DEFAULT_OPTION,
+ JOptionPane.INFORMATION_MESSAGE);
+ complete();
+ }
/////////////////////////////////////////////////////////////////////////
// http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
return this;
}
}
+
}
class ColorEditor