Después de cambiar a Eclipse Neon, noté que WorkbenchWindowControlContribution no se muestra por completo. No hubo ningún problema con ellos en Eclipse Mars .
Un elemento simple que consta de una Label y un Text se ve así en Neon :
El código del artículo es el siguiente:
package experiments; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.menus.WorkbenchWindowControlContribution; public class ControlContributionItem extends WorkbenchWindowControlContribution { public static final String ID = "MyControlContributionItem"; //$NON-NLS-1$ @Override protected Control createControl(Composite parent) { Composite rootComp = new Composite(parent, SWT.NONE); GridLayout gridLayout = new GridLayout(2, false); gridLayout.marginHeight = 0; gridLayout.verticalSpacing = 0; rootComp.setLayout(gridLayout); Label label = new Label(rootComp, SWT.NONE); label.setText("Label"); //$NON-NLS-1$ Text text = new Text(rootComp, SWT.BORDER | SWT.READ_ONLY); text.setText("Text"); GridData data = new GridData(SWT.FILL, SWT.CENTER, false, true); FontData fontData = text.getFont().getFontData()[0]; Font boldFont = new Font(parent.getDisplay(), fontData.getName(), fontData.getHeight(), fontData.getStyle() | SWT.BOLD); text.setFont(boldFont); data.widthHint = 120; text.setLayoutData(data); rootComp.pack(); return rootComp; } } La parte relacionada en plugin.xml
<extension point="org.eclipse.ui.menus"> <menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar"> <toolbar id="MyControlContributionItem"> <control class="experiments.ControlContributionItem" id="MyControlContributionItem"> </control> </toolbar> </menuContribution> </extension>¿Puede ser un error en Neon?
Sí, esto es un error, informado aquí:
También eche un vistazo a este, que se adapta más a su descripción, ya que se trata de la barra de herramientas:
Error 471326: las contribuciones de control de la barra de herramientas principal están cortadas
Aquí hay una solución:
La clase debe extender ControlContribution en lugar de WorkbenchWindowControlContribution .
En YourApplicationNameActionBarAdvisor.fillCoolBar() (reemplace YourApplicationName) agregue: toolbar.add(new YourControlContribution());