@Override
 public void relocate(CellEditor celleditor) {
   Text text = (Text) celleditor.getControl();
   Point prefSize = text.computeSize(SWT.DEFAULT, SWT.DEFAULT);
   Rectangle rectangle = label.getTextBounds().getCopy();
   label.translateToAbsolute(rectangle);
   text.setBounds(rectangle.x - 1, rectangle.y - 1, prefSize.x + 1, prefSize.y + 1);
 }
 private String abbreviateLabel(Label label, String labelText, int currentLength) {
   label.setText(labelText);
   if (label.getFont() == null) {
     label.setFont(Display.getDefault().getSystemFont());
   }
   if (label.getTextBounds().width > MAX_LABEL_WIDTH) {
     String shorterLabelText = "";
     shorterLabelText =
         StringUtils.abbreviateMiddle(label.getText(), LABEL_TEXT_SEPARATOR, currentLength);
     currentLength--;
     label.setText(shorterLabelText);
     abbreviateLabel(label, shorterLabelText, currentLength);
   }
   return label.getText();
 }
 public void relocate(CellEditor celleditor) {
   Text text = (Text) celleditor.getControl();
   Point origin = getViewportOrigin().getNegated();
   Rectangle rect = label.getTextBounds().getCopy().expand(5, 0).translate(origin);
   text.setBounds(rect.x, rect.y, rect.width, rect.height);
 }
 /*
  * (non-Javadoc)
  *
  * @see
  * de.tub.tfs.muvitor.gef.directedit.IDirectEditPart.IGraphicalDirectEditPart
  * #getValueLabelTextBounds()
  */
 @Override
 public Rectangle getValueLabelTextBounds() {
   return counterLabel.getTextBounds();
 }