Program: 140300
Project: 140300
Buggy source:
protected Control createDialogArea(Composite parent){
  Composite comp=(Composite)super.createDialogArea(parent);
  Tree tree=new TooltipTree(comp,SWT.BORDER){
    protected String getItemTooltipText(    TreeItem item){
      if (item.getData(INDICATORITEM) == null) {
        return item.getText();
      }
      IndicatorDefinition indicatorDefinition=((IIndicatorNode)item.getData(INDICATORITEM)).getIndicatorInstance().getIndicatorDefinition();
      String description=TaggedValueHelper.getDescription(indicatorDefinition);
      return description.equals(PluginConstant.EMPTY_STRING) ? item.getText() : description;
    }
  }
;
  GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(true,true).applyTo(tree);
  ((GridData)tree.getLayoutData()).widthHint=650;
  ((GridData)tree.getLayoutData()).heightHint=380;
  createTreeStructure(tree);
  tree.setLinesVisible(true);
  tree.addSelectionListener(new SelectionListener(){
    public void widgetDefaultSelected(    SelectionEvent e){
    }
    public void widgetSelected(    SelectionEvent e){
      IIndicatorNode indicatorNode=((IIndicatorNode)e.item.getData(INDICATORITEM));
      if (indicatorNode == null) {
        purposeLabel.setText(PURPOSE + ((TreeItem)e.item).getText());
        descriptionLabel.setText(DESCRIPTION + ((TreeItem)e.item).getText());
        return;
      }
      Indicator indicator=indicatorNode.getIndicatorInstance();
      IndicatorDefinition indicatorDefinition=indicator.getIndicatorDefinition();
      purposeLabel.setText(PURPOSE + TaggedValueHelper.getPurpose(indicatorDefinition));
      String description=DESCRIPTION + TaggedValueHelper.getDescription(indicatorDefinition);
      description=splitLongString(description);
      descriptionLabel.setText(description);
    }
    private String splitLongString(    String longString){
      if (longString.length() > ROW_MAX_LENGTH) {
        char space=' ';
        for (int i=ROW_MAX_LENGTH; i > 0; i--) {
          if (longString.charAt(i) == space) {
            String substring1=longString.substring(0,i);
            String lineSeparator=System.getProperty("String_Node_Str","String_Node_Str");
            String substring2=longString.substring(i,longString.length());
            substring2=splitLongString(substring2);
            longString=substring1 + lineSeparator + substring2;
            break;
          }
        }
      }
      return longString;
    }
  }
);
  tree.pack();
  purposeLabel=new Label(comp,SWT.NULL);
  GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(true,true).applyTo(purposeLabel);
  descriptionLabel=new Label(comp,SWT.NULL);
  GridDataFactory.fillDefaults().grab(true,true).applyTo(descriptionLabel);
  ((GridData)descriptionLabel.getLayoutData()).heightHint=40;
  comp.layout();
  return comp;
}

Fixed version (ground truth):
protected Control createDialogArea(Composite parent){
  Composite comp=(Composite)super.createDialogArea(parent);
  Tree tree=new TooltipTree(comp,SWT.BORDER){
    protected String getItemTooltipText(    TreeItem item){
      if (item.getData(INDICATORITEM) == null) {
        return item.getText();
      }
      IndicatorDefinition indicatorDefinition=((IIndicatorNode)item.getData(INDICATORITEM)).getIndicatorInstance().getIndicatorDefinition();
      String description=TaggedValueHelper.getDescription(indicatorDefinition);
      return description.equals(PluginConstant.EMPTY_STRING) ? item.getText() : description;
    }
  }
;
  GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(true,true).applyTo(tree);
  ((GridData)tree.getLayoutData()).widthHint=650;
  ((GridData)tree.getLayoutData()).heightHint=380;
  createTreeStructure(tree);
  tree.setLinesVisible(true);
  tree.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent e){
      IIndicatorNode indicatorNode=((IIndicatorNode)e.item.getData(INDICATORITEM));
      if (indicatorNode == null) {
        purposeLabel.setText(PURPOSE + ((TreeItem)e.item).getText());
        descriptionLabel.setText(DESCRIPTION + ((TreeItem)e.item).getText());
        return;
      }
      Indicator indicator=indicatorNode.getIndicatorInstance();
      IndicatorDefinition indicatorDefinition=indicator.getIndicatorDefinition();
      purposeLabel.setText(PURPOSE + TaggedValueHelper.getPurpose(indicatorDefinition));
      String description=DESCRIPTION + TaggedValueHelper.getDescription(indicatorDefinition);
      description=splitLongString(description);
      descriptionLabel.setText(description);
    }
    private String splitLongString(    String longString){
      if (longString.length() > ROW_MAX_LENGTH) {
        char space=' ';
        for (int i=ROW_MAX_LENGTH; i > 0; i--) {
          if (longString.charAt(i) == space) {
            String substring1=longString.substring(0,i);
            String lineSeparator=System.getProperty("String_Node_Str","String_Node_Str");
            String substring2=longString.substring(i,longString.length());
            substring2=splitLongString(substring2);
            longString=substring1 + lineSeparator + substring2;
            break;
          }
        }
      }
      return longString;
    }
  }
);
  tree.pack();
  purposeLabel=new Label(comp,SWT.NULL);
  GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(true,true).applyTo(purposeLabel);
  descriptionLabel=new Label(comp,SWT.NULL);
  GridDataFactory.fillDefaults().grab(true,true).applyTo(descriptionLabel);
  ((GridData)descriptionLabel.getLayoutData()).heightHint=40;
  comp.layout();
  return comp;
}