Выровнять текст в comboviewer на панели инструментов - PullRequest
0 голосов
/ 24 октября 2018

Когда я добавляю в комбо новый элемент со строкой, которая длиннее текущей, текст в Ubuntu находится вне комбо, но в Windows все хорошо.

Как мне обновить / обновить /изменить размер панели управления / панели инструментов после добавления нового элемента?

Почему текст вне комбо в Ubuntu?

Screenshot

Мое расширение в org.eclipse.ui:

<menuContribution
  allPopups="true"
  locationURI="toolbar:org.eclipse.ui.main.toolbar?after=connections">
  <toolbar id="ru.mycompany.rg.toolbarPINConnections">
    <control
      class="ru.mycompany.rg.custom.PINConnectionsControl"
      id="PINConnectionsControl">
    </control>
  </toolbar>
</menuContribution>

public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
...
  @Override
  protected void fillCoolBar(ICoolBarManager coolBar) {
    coolBar.add(new CoolItemGroupMarker("connections"));
  }

Мой элемент управления на панели инструментов:

public class PINConnectionsControl extends WorkbenchWindowControlContribution implements PropertyChangeListener, PrefConstants {
  private ComboViewer combo;

  @Override
  protected Control createControl(Composite parent) {        
    IPreferenceNode connectionsPreferenceNode = integrationNode.findSubNode(PINListConnectionsPreferenceNode.ID);

    Composite container = new Composite(parent, SWT.NONE);                
    container.setLayout(new FillLayout(SWT.HORIZONTAL));

    combo = new ComboViewer(container, SWT.DROP_DOWN | SWT.BORDER | SWT.READ_ONLY);

    combo.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof ConItem) {
                ConItem current = (ConItem) element;
                return current.getLabel();
            }
            return "";
        }
    });

    combo.setContentProvider(new ObservableListContentProvider());
    combo.setInput(PINListConnectionsModel.getInstance().getPINConnections());                       

    for(ConItem item:PINListConnectionsModel.getInstance().getPINConnections()) {            
        if(sCon.equals(item.getValue())) {
            ISelection selection = new StructuredSelection(item);
            combo.setSelection(selection);
            break;               
        }            
    }       
    ((PINListConnectionsPreferenceNode)connectionsPreferenceNode).addConListener(this);            

    //@see https://bugs.eclipse.org/bugs/show_bug.cgi?id=471313      
    parent.getParent().setRedraw(true);                       
    return container; 
  }

  @Override
  public boolean isDynamic() {
    return true;
  }

  @Override
  public void propertyChange(java.beans.PropertyChangeEvent event) {                
    for(ConItem item:PINListConnectionsModel.getInstance().getPINConnections()) {            
      if(event.getNewValue().equals(item.getValue())) {
        ISelection selection = new StructuredSelection(item);                
        combo.setSelection(selection);                                    
        break;               
      }            
    }                
  }
}
...