Program: 52789
Project: 52789
Buggy source:
private void onMouseHover(Event event){
  Date hoverDate=getHoverDate(event);
  if (tip != null && !tip.isDisposed())   tip.dispose();
  tip=new Shell(Display.getDefault().getActiveShell(),SWT.ON_TOP | SWT.TOOL);
  tip.setLayout(new FillLayout());
  final Composite container=new Composite(tip,SWT.NONE);
  GridLayoutFactory.swtDefaults().numColumns(2).applyTo(container);
  container.setForeground(tip.getDisplay().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
  container.setBackground(tip.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
  Label left=new Label(container,SWT.NONE);
  left.setText(Messages.ColumnDate);
  Label right=new Label(container,SWT.NONE);
  right.setText(String.format(dateFormat,hoverDate));
  for (  ISeries series : chart.getSeriesSet().getSeries()) {
    int line=Arrays.binarySearch(series.getXDateSeries(),hoverDate);
    if (line < 0)     continue;
    double value=series.getYSeries()[line];
    left=new Label(container,SWT.NONE);
    left.setText(series.getId());
    right=new Label(container,SWT.RIGHT);
    right.setText(String.format("String_Node_Str",value));
    GridDataFactory.fillDefaults().align(SWT.END,SWT.FILL).applyTo(right);
  }
  Point size=tip.computeSize(SWT.DEFAULT,SWT.DEFAULT);
  Point pt=chart.getPlotArea().toDisplay(event.x,event.y);
  tip.setBounds(pt.x,pt.y,size.x,size.y);
  tip.setVisible(true);
  container.addListener(SWT.FocusOut,new Listener(){
    @Override public void handleEvent(    Event event){
      closeToolTip();
    }
  }
);
  container.forceFocus();
}

Fixed version (ground truth):
private void onMouseHover(Event event){
  Date hoverDate=getHoverDate(event);
  if (tip != null && !tip.isDisposed())   tip.dispose();
  tip=new Shell(Display.getDefault().getActiveShell(),SWT.ON_TOP | SWT.TOOL);
  tip.setLayout(new FillLayout());
  final Composite container=new Composite(tip,SWT.NONE);
  container.setBackgroundMode(SWT.INHERIT_FORCE);
  GridLayoutFactory.swtDefaults().numColumns(2).applyTo(container);
  Color foregroundColor=tip.getDisplay().getSystemColor(SWT.COLOR_INFO_FOREGROUND);
  container.setForeground(foregroundColor);
  container.setBackground(tip.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
  Label left=new Label(container,SWT.NONE);
  left.setForeground(foregroundColor);
  left.setText(Messages.ColumnDate);
  Label right=new Label(container,SWT.NONE);
  right.setForeground(foregroundColor);
  right.setText(String.format(dateFormat,hoverDate));
  for (  ISeries series : chart.getSeriesSet().getSeries()) {
    int line=Arrays.binarySearch(series.getXDateSeries(),hoverDate);
    if (line < 0)     continue;
    double value=series.getYSeries()[line];
    left=new Label(container,SWT.NONE);
    left.setForeground(foregroundColor);
    left.setText(series.getId());
    right=new Label(container,SWT.RIGHT);
    right.setForeground(foregroundColor);
    right.setText(String.format("String_Node_Str",value));
    GridDataFactory.fillDefaults().align(SWT.END,SWT.FILL).applyTo(right);
  }
  Point size=tip.computeSize(SWT.DEFAULT,SWT.DEFAULT);
  Point pt=chart.getPlotArea().toDisplay(event.x,event.y);
  tip.setBounds(pt.x,pt.y,size.x,size.y);
  tip.setVisible(true);
  container.addListener(SWT.FocusOut,new Listener(){
    @Override public void handleEvent(    Event event){
      closeToolTip();
    }
  }
);
  container.forceFocus();
}