Program: 59083
Project: 59083
Buggy source:
private void renderCoordinateSystem(GL gl,final int iNumberAxis){
  textRenderer.setColor(0,0,0,1);
  gl.glColor4fv(ParCoordsRenderStyle.X_AXIS_COLOR,0);
  gl.glLineWidth(ParCoordsRenderStyle.X_AXIS_LINE_WIDTH);
  gl.glPushName(pickingManager.getPickingID(iUniqueId,EPickingType.X_AXIS_SELECTION,1));
  gl.glBegin(GL.GL_LINES);
  gl.glVertex3f(-0.1f,0.0f,0.0f);
  gl.glVertex3f(((iNumberAxis - 1) * fAxisSpacing) + 0.1f,0.0f,0.0f);
  gl.glEnd();
  gl.glPopName();
  Set<Integer> selectedSet=verticalSelectionManager.getElements(EViewInternalSelectionType.SELECTION);
  Set<Integer> mouseOverSet=verticalSelectionManager.getElements(EViewInternalSelectionType.MOUSE_OVER);
  ArrayList<Integer> alAxisSelection;
  if (bRenderStorageHorizontally)   alAxisSelection=alContentSelection;
 else   alAxisSelection=alStorageSelection;
  int iCount=0;
  while (iCount < iNumberAxis) {
    if (selectedSet.contains(alAxisSelection.get(iCount))) {
      gl.glColor4fv(ParCoordsRenderStyle.Y_AXIS_SELECTED_COLOR,0);
      gl.glLineWidth(ParCoordsRenderStyle.Y_AXIS_SELECTED_LINE_WIDTH);
    }
 else     if (mouseOverSet.contains(alAxisSelection.get(iCount))) {
      gl.glColor4fv(ParCoordsRenderStyle.Y_AXIS_MOUSE_OVER_COLOR,0);
      gl.glLineWidth(ParCoordsRenderStyle.Y_AXIS_MOUSE_OVER_LINE_WIDTH);
    }
 else {
      gl.glColor4fv(ParCoordsRenderStyle.Y_AXIS_COLOR,0);
      gl.glLineWidth(ParCoordsRenderStyle.Y_AXIS_LINE_WIDTH);
    }
    gl.glPushName(pickingManager.getPickingID(iUniqueId,EPickingType.Y_AXIS_SELECTION,alAxisSelection.get(iCount)));
    gl.glBegin(GL.GL_LINES);
    gl.glVertex3f(iCount * fAxisSpacing,ParCoordsRenderStyle.Y_AXIS_LOW,ParCoordsRenderStyle.AXIS_Z);
    gl.glVertex3f(iCount * fAxisSpacing,renderStyle.getAxisHeight(),ParCoordsRenderStyle.AXIS_Z);
    gl.glVertex3f(iCount * fAxisSpacing - ParCoordsRenderStyle.AXIS_MARKER_WIDTH,renderStyle.getAxisHeight(),ParCoordsRenderStyle.AXIS_Z);
    gl.glVertex3f(iCount * fAxisSpacing + ParCoordsRenderStyle.AXIS_MARKER_WIDTH,renderStyle.getAxisHeight(),ParCoordsRenderStyle.AXIS_Z);
    gl.glEnd();
    String sAxisLabel=null;
switch (eAxisDataType) {
case EXPERIMENT:
      sAxisLabel=alDataStorages.get(iCount).getLabel();
    break;
case GENE:
  sAxisLabel=getRefSeqFromStorageIndex(alContentSelection.get(iCount));
break;
default :
sAxisLabel="String_Node_Str";
}
gl.glPushAttrib(GL.GL_CURRENT_BIT | GL.GL_LINE_BIT);
gl.glTranslatef(iCount * fAxisSpacing,renderStyle.getAxisHeight() + renderStyle.getAxisCaptionSpacing(),0);
gl.glRotatef(25,0,0,1);
textRenderer.begin3DRendering();
textRenderer.draw3D(sAxisLabel,0,0,0,renderStyle.getSmallFontScalingFactor());
textRenderer.end3DRendering();
gl.glRotatef(-25,0,0,1);
gl.glTranslatef(-iCount * fAxisSpacing,-(renderStyle.getAxisHeight() + renderStyle.getAxisCaptionSpacing()),0);
textRenderer.begin3DRendering();
textRenderer.draw3D(String.valueOf(1),iCount * fAxisSpacing + 2 * ParCoordsRenderStyle.AXIS_MARKER_WIDTH,renderStyle.getAxisHeight(),0,renderStyle.getSmallFontScalingFactor());
textRenderer.end3DRendering();
gl.glPopAttrib();
gl.glPopName();
int iNumberOfButtons=0;
if (iCount != 0 || iCount != iNumberAxis - 1) iNumberOfButtons=4;
 else iNumberOfButtons=3;
float fXButtonOrigin=0;
float fYButtonOrigin=0;
int iPickingID=-1;
fXButtonOrigin=iCount * fAxisSpacing - (iNumberOfButtons * renderStyle.getButtonWidht() + (iNumberOfButtons - 1) * renderStyle.getButtonSpacing()) / 2;
fYButtonOrigin=-renderStyle.getAxisButtonYOffset();
if (iCount != 0) {
iPickingID=pickingManager.getPickingID(iUniqueId,EPickingType.MOVE_AXIS_LEFT,iCount);
renderButton(gl,fXButtonOrigin,fYButtonOrigin,iPickingID,EIconTextures.ARROW_LEFT);
}
fXButtonOrigin=fXButtonOrigin + renderStyle.getButtonWidht() + renderStyle.getButtonSpacing();
iPickingID=pickingManager.getPickingID(iUniqueId,EPickingType.REMOVE_AXIS,iCount);
renderButton(gl,fXButtonOrigin,fYButtonOrigin,iPickingID,EIconTextures.REMOVE);
fXButtonOrigin=fXButtonOrigin + renderStyle.getButtonWidht() + renderStyle.getButtonSpacing();
iPickingID=pickingManager.getPickingID(iUniqueId,EPickingType.DUPLICATE_AXIS,iCount);
renderButton(gl,fXButtonOrigin,fYButtonOrigin,iPickingID,EIconTextures.DUPLICATE);
if (iCount != iNumberAxis - 1) {
fXButtonOrigin=fXButtonOrigin + renderStyle.getButtonWidht() + renderStyle.getButtonSpacing();
iPickingID=pickingManager.getPickingID(iUniqueId,EPickingType.MOVE_AXIS_RIGHT,iCount);
renderButton(gl,fXButtonOrigin,fYButtonOrigin,iPickingID,EIconTextures.ARROW_RIGHT);
}
iCount++;
}
}

Fixed version (ground truth):
private void renderCoordinateSystem(GL gl,final int iNumberAxis){
  textRenderer.setColor(0,0,0,1);
  gl.glColor4fv(ParCoordsRenderStyle.X_AXIS_COLOR,0);
  gl.glLineWidth(ParCoordsRenderStyle.X_AXIS_LINE_WIDTH);
  gl.glPushName(pickingManager.getPickingID(iUniqueId,EPickingType.X_AXIS_SELECTION,1));
  gl.glBegin(GL.GL_LINES);
  gl.glVertex3f(-0.1f,0.0f,0.0f);
  gl.glVertex3f(((iNumberAxis - 1) * fAxisSpacing) + 0.1f,0.0f,0.0f);
  gl.glEnd();
  gl.glPopName();
  Set<Integer> selectedSet=verticalSelectionManager.getElements(EViewInternalSelectionType.SELECTION);
  Set<Integer> mouseOverSet=verticalSelectionManager.getElements(EViewInternalSelectionType.MOUSE_OVER);
  ArrayList<Integer> alAxisSelection;
  if (bRenderStorageHorizontally)   alAxisSelection=alContentSelection;
 else   alAxisSelection=alStorageSelection;
  int iCount=0;
  while (iCount < iNumberAxis) {
    if (selectedSet.contains(alAxisSelection.get(iCount))) {
      gl.glColor4fv(ParCoordsRenderStyle.Y_AXIS_SELECTED_COLOR,0);
      gl.glLineWidth(ParCoordsRenderStyle.Y_AXIS_SELECTED_LINE_WIDTH);
    }
 else     if (mouseOverSet.contains(alAxisSelection.get(iCount))) {
      gl.glColor4fv(ParCoordsRenderStyle.Y_AXIS_MOUSE_OVER_COLOR,0);
      gl.glLineWidth(ParCoordsRenderStyle.Y_AXIS_MOUSE_OVER_LINE_WIDTH);
    }
 else {
      gl.glColor4fv(ParCoordsRenderStyle.Y_AXIS_COLOR,0);
      gl.glLineWidth(ParCoordsRenderStyle.Y_AXIS_LINE_WIDTH);
    }
    gl.glPushName(pickingManager.getPickingID(iUniqueId,EPickingType.Y_AXIS_SELECTION,alAxisSelection.get(iCount)));
    gl.glBegin(GL.GL_LINES);
    gl.glVertex3f(iCount * fAxisSpacing,ParCoordsRenderStyle.Y_AXIS_LOW,ParCoordsRenderStyle.AXIS_Z);
    gl.glVertex3f(iCount * fAxisSpacing,renderStyle.getAxisHeight(),ParCoordsRenderStyle.AXIS_Z);
    gl.glVertex3f(iCount * fAxisSpacing - ParCoordsRenderStyle.AXIS_MARKER_WIDTH,renderStyle.getAxisHeight(),ParCoordsRenderStyle.AXIS_Z);
    gl.glVertex3f(iCount * fAxisSpacing + ParCoordsRenderStyle.AXIS_MARKER_WIDTH,renderStyle.getAxisHeight(),ParCoordsRenderStyle.AXIS_Z);
    gl.glEnd();
    String sAxisLabel=null;
switch (eAxisDataType) {
case EXPERIMENT:
      sAxisLabel=alDataStorages.get(alStorageSelection.get(iCount)).getLabel();
    break;
case GENE:
  sAxisLabel=getRefSeqFromStorageIndex(alContentSelection.get(iCount));
break;
default :
sAxisLabel="String_Node_Str";
}
gl.glPushAttrib(GL.GL_CURRENT_BIT | GL.GL_LINE_BIT);
gl.glTranslatef(iCount * fAxisSpacing,renderStyle.getAxisHeight() + renderStyle.getAxisCaptionSpacing(),0);
gl.glRotatef(25,0,0,1);
textRenderer.begin3DRendering();
textRenderer.draw3D(sAxisLabel,0,0,0,renderStyle.getSmallFontScalingFactor());
textRenderer.end3DRendering();
gl.glRotatef(-25,0,0,1);
gl.glTranslatef(-iCount * fAxisSpacing,-(renderStyle.getAxisHeight() + renderStyle.getAxisCaptionSpacing()),0);
textRenderer.begin3DRendering();
textRenderer.draw3D(String.valueOf(1),iCount * fAxisSpacing + 2 * ParCoordsRenderStyle.AXIS_MARKER_WIDTH,renderStyle.getAxisHeight(),0,renderStyle.getSmallFontScalingFactor());
textRenderer.end3DRendering();
gl.glPopAttrib();
gl.glPopName();
int iNumberOfButtons=0;
if (iCount != 0 || iCount != iNumberAxis - 1) iNumberOfButtons=4;
 else iNumberOfButtons=3;
float fXButtonOrigin=0;
float fYButtonOrigin=0;
int iPickingID=-1;
fXButtonOrigin=iCount * fAxisSpacing - (iNumberOfButtons * renderStyle.getButtonWidht() + (iNumberOfButtons - 1) * renderStyle.getButtonSpacing()) / 2;
fYButtonOrigin=-renderStyle.getAxisButtonYOffset();
if (iCount != 0) {
iPickingID=pickingManager.getPickingID(iUniqueId,EPickingType.MOVE_AXIS_LEFT,iCount);
renderButton(gl,fXButtonOrigin,fYButtonOrigin,iPickingID,EIconTextures.ARROW_LEFT);
}
fXButtonOrigin=fXButtonOrigin + renderStyle.getButtonWidht() + renderStyle.getButtonSpacing();
iPickingID=pickingManager.getPickingID(iUniqueId,EPickingType.REMOVE_AXIS,iCount);
renderButton(gl,fXButtonOrigin,fYButtonOrigin,iPickingID,EIconTextures.REMOVE);
fXButtonOrigin=fXButtonOrigin + renderStyle.getButtonWidht() + renderStyle.getButtonSpacing();
iPickingID=pickingManager.getPickingID(iUniqueId,EPickingType.DUPLICATE_AXIS,iCount);
renderButton(gl,fXButtonOrigin,fYButtonOrigin,iPickingID,EIconTextures.DUPLICATE);
if (iCount != iNumberAxis - 1) {
fXButtonOrigin=fXButtonOrigin + renderStyle.getButtonWidht() + renderStyle.getButtonSpacing();
iPickingID=pickingManager.getPickingID(iUniqueId,EPickingType.MOVE_AXIS_RIGHT,iCount);
renderButton(gl,fXButtonOrigin,fYButtonOrigin,iPickingID,EIconTextures.ARROW_RIGHT);
}
iCount++;
}
}