Когда я добавляю в комбо новый элемент со строкой, которая длиннее текущей, текст в Ubuntu находится вне комбо, но в Windows все хорошо.
Как мне обновить / обновить /изменить размер панели управления / панели инструментов после добавления нового элемента?
Почему текст вне комбо в Ubuntu?
Мое расширение в 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;
}
}
}
}