public ComboboxFigure(Composite parent, final IPropertySource propertySource) {
    super();
    Combo cb = new Combo(parent, SWT.DROP_DOWN);
    cb.setVisible(false);
    cb.setBounds(-100, -100, 10, 10);
    Point p = cb.computeSize(SWT.DEFAULT, SWT.DEFAULT);
    cb.dispose();
    mComboHeight = p.y;

    setLayoutManager(new XYLayout());
    Rectangle[] bounds =
        calculateBounds(
            (Rectangle) propertySource.getPropertyValue(InstallOptionsWidget.PROPERTY_BOUNDS));
    mComboFigure =
        new ComboFigure(parent, new CustomPropertySourceWrapper(propertySource, bounds[0]));
    mListFigure =
        new ListFigure(
            parent, new CustomPropertySourceWrapper(propertySource, bounds[1]), SWT.SINGLE);
    mListFigure.setBorder(new LineBorder(ColorManager.getColor(ColorManager.BLACK)));
    mListFigure.setVisible(mShowDropdown);
    add(mComboFigure);
    add(mListFigure);
  }
 /* (non-Javadoc)
  * @see net.sf.eclipsensis.installoptions.figures.IInstallOptionsFigure#setDisabled(boolean)
  */
 public void setDisabled(boolean disabled) {
   mListFigure.setDisabled(disabled);
   mComboFigure.setDisabled(disabled);
 }
 public void setShowDropdown(boolean flag) {
   if (mShowDropdown != flag) {
     mShowDropdown = flag;
     mListFigure.setVisible(mShowDropdown);
   }
 }
 public void setListItems(List<String> listItems) {
   mListFigure.setListItems(listItems);
 }
 public List<String> getListItems() {
   return mListFigure.getListItems();
 }
 /* (non-Javadoc)
  * @see net.sf.eclipsensis.installoptions.figures.IInstallOptionsFigure#refresh()
  */
 public void refresh() {
   mComboFigure.refresh();
   mListFigure.refresh();
 }
 public void setState(String state) {
   mComboFigure.setState(state);
   mListFigure.setState(state);
 }