Program: 58451
Project: 58451
Buggy source:
/** 
 * render the Mouseover_Label in the Mainview, called by renderMouseOver(GL gl)
 * @param gl
 * @param x
 * @param y
 * @param fArMappingColor
 * @param fOpacity
 * @param iContentIndex
 */
private void renderMouseOverLabel(GL gl,float x,float y,float[] fArMappingColor,float fOpacity,int iContentIndex){
  textRenderer.setColor(0,0,0,1);
  x=x + 0.1f;
  gl.glTranslatef(x,y,0);
  String sLabel=null;
  String genLabel=null;
  if (useCase.getDataDomain() == EDataDomain.GENETIC_DATA) {
    genLabel=idMappingManager.getID(EIDType.EXPRESSION_INDEX,EIDType.GENE_SYMBOL,iContentIndex);
  }
 else   if (useCase.getDataDomain() == EDataDomain.UNSPECIFIED) {
    genLabel=idMappingManager.getID(EIDType.EXPRESSION_INDEX,EIDType.UNSPECIFIED,iContentIndex);
  }
  if (genLabel == null || genLabel.equals("String_Node_Str"))   genLabel="String_Node_Str";
  String tmpString=currentSelection.toString();
  if (contentSelectionManager.checkStatus(currentSelection,iContentIndex))   sLabel=tmpString + "String_Node_Str" + genLabel+ "String_Node_Str"+ +set.get(storageVA.get(iSelectedAxisIndexX)).getFloat(EDataRepresentation.RAW,iContentIndex)+ "String_Node_Str"+ set.get(storageVA.get(iSelectedAxisIndexY)).getFloat(EDataRepresentation.RAW,iContentIndex);
 else   if (contentSelectionManager.checkStatus(SelectionType.SELECTION,iContentIndex))   sLabel="String_Node_Str" + genLabel + "String_Node_Str"+ +set.get(storageVA.get(iSelectedAxisIndexX)).getFloat(EDataRepresentation.RAW,iContentIndex)+ "String_Node_Str"+ set.get(storageVA.get(iSelectedAxisIndexY)).getFloat(EDataRepresentation.RAW,iContentIndex);
 else   sLabel="String_Node_Str" + genLabel + "String_Node_Str"+ +set.get(storageVA.get(iSelectedAxisIndexX)).getFloat(EDataRepresentation.RAW,iContentIndex)+ "String_Node_Str"+ set.get(storageVA.get(iSelectedAxisIndexY)).getFloat(EDataRepresentation.RAW,iContentIndex);
  float fScaling=renderStyle.getSmallFontScalingFactor();
  if (isRenderedRemote())   fScaling*=1.5f;
  Rectangle2D bounds=textRenderer.getScaledBounds(gl,sLabel,fScaling,ScatterPlotRenderStyle.MIN_NUMBER_TEXT_SIZE);
  float boxLengh=(float)bounds.getWidth() + 0.2f;
  float boxHight=(float)bounds.getHeight();
  gl.glColor3f(1.0f,1.0f,0.0f);
  gl.glBegin(GL.GL_POLYGON);
  gl.glVertex3f(0.0f,-0.02f,ScatterPlotRenderStyle.LABEL_Z);
  gl.glVertex3f(0.0f,boxHight,ScatterPlotRenderStyle.LABEL_Z);
  gl.glVertex3f(boxLengh,boxHight,ScatterPlotRenderStyle.LABEL_Z);
  gl.glVertex3f(boxLengh,-0.02f,ScatterPlotRenderStyle.LABEL_Z);
  gl.glEnd();
  gl.glPushAttrib(GL.GL_CURRENT_BIT | GL.GL_LINE_BIT);
  textRenderer.begin3DRendering();
  textRenderer.draw3D(gl,sLabel,0,0,ScatterPlotRenderStyle.TEXT_ON_LABEL_Z,fScaling,ScatterPlotRenderStyle.MIN_AXIS_LABEL_TEXT_SIZE);
  textRenderer.end3DRendering();
  gl.glPopAttrib();
  gl.glTranslatef(-x,-y,0);
}

Fixed version (ground truth):
/** 
 * render the Mouseover_Label in the Mainview, called by renderMouseOver(GL gl)
 * @param gl
 * @param x
 * @param y
 * @param fArMappingColor
 * @param fOpacity
 * @param iContentIndex
 */
private void renderMouseOverLabel(GL gl,float x,float y,float[] fArMappingColor,float fOpacity,int iContentIndex){
  textRenderer.dispose();
  textRenderer=new CaleydoTextRenderer(new Font("String_Node_Str",Font.PLAIN,24),false);
  textRenderer.setColor(0,0,0,1);
  x=x + 0.1f;
  gl.glTranslatef(x,y,0);
  String sLabel=null;
  String genLabel=null;
  if (useCase.getDataDomain() == EDataDomain.GENETIC_DATA) {
    genLabel=idMappingManager.getID(EIDType.EXPRESSION_INDEX,EIDType.GENE_SYMBOL,iContentIndex);
  }
 else   if (useCase.getDataDomain() == EDataDomain.UNSPECIFIED) {
    genLabel=idMappingManager.getID(EIDType.EXPRESSION_INDEX,EIDType.UNSPECIFIED,iContentIndex);
  }
  if (genLabel == null || genLabel.equals("String_Node_Str"))   genLabel="String_Node_Str";
  String tmpString=currentSelection.toString();
  if (contentSelectionManager.checkStatus(currentSelection,iContentIndex))   sLabel=tmpString + "String_Node_Str" + genLabel+ "String_Node_Str"+ +set.get(storageVA.get(iSelectedAxisIndexX)).getFloat(EDataRepresentation.RAW,iContentIndex)+ "String_Node_Str"+ set.get(storageVA.get(iSelectedAxisIndexY)).getFloat(EDataRepresentation.RAW,iContentIndex);
 else   if (contentSelectionManager.checkStatus(SelectionType.SELECTION,iContentIndex))   sLabel="String_Node_Str" + genLabel + "String_Node_Str"+ +set.get(storageVA.get(iSelectedAxisIndexX)).getFloat(EDataRepresentation.RAW,iContentIndex)+ "String_Node_Str"+ set.get(storageVA.get(iSelectedAxisIndexY)).getFloat(EDataRepresentation.RAW,iContentIndex);
 else   sLabel="String_Node_Str" + genLabel + "String_Node_Str"+ +set.get(storageVA.get(iSelectedAxisIndexX)).getFloat(EDataRepresentation.RAW,iContentIndex)+ "String_Node_Str"+ set.get(storageVA.get(iSelectedAxisIndexY)).getFloat(EDataRepresentation.RAW,iContentIndex);
  float fScaling=renderStyle.getSmallFontScalingFactor();
  if (isRenderedRemote())   fScaling*=1.5f;
  Rectangle2D bounds=textRenderer.getScaledBounds(gl,sLabel,fScaling,ScatterPlotRenderStyle.MIN_NUMBER_TEXT_SIZE);
  float boxLengh=(float)bounds.getWidth() + 0.2f;
  float boxHight=(float)bounds.getHeight();
  gl.glColor3f(1.0f,1.0f,0.0f);
  gl.glBegin(GL.GL_POLYGON);
  gl.glVertex3f(0.0f,-0.02f,ScatterPlotRenderStyle.LABEL_Z);
  gl.glVertex3f(0.0f,boxHight,ScatterPlotRenderStyle.LABEL_Z);
  gl.glVertex3f(boxLengh,boxHight,ScatterPlotRenderStyle.LABEL_Z);
  gl.glVertex3f(boxLengh,-0.02f,ScatterPlotRenderStyle.LABEL_Z);
  gl.glEnd();
  gl.glPushAttrib(GL.GL_CURRENT_BIT | GL.GL_LINE_BIT);
  textRenderer.begin3DRendering();
  textRenderer.draw3D(gl,sLabel,0,0,ScatterPlotRenderStyle.TEXT_ON_LABEL_Z,fScaling,ScatterPlotRenderStyle.MIN_AXIS_LABEL_TEXT_SIZE);
  textRenderer.end3DRendering();
  gl.glPopAttrib();
  gl.glTranslatef(-x,-y,0);
}