package org.python.pydev.shared_ui.field_editors; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.preference.FileFieldEditor; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; public class FileFieldEditorCustom extends FileFieldEditor { public FileFieldEditorCustom(String name, String labelText, Composite parent) { super(name, labelText, parent); } @Override public void fillIntoGrid(Composite parent, int numColumns) { Assert.isTrue(parent.getLayout() instanceof GridLayout); doFillIntoGrid(parent, numColumns); adjustForNumColumns(numColumns); } /* (non-Javadoc) * Method declared on FieldEditor. */ @Override protected void adjustForNumColumns(int numColumns) { if (numColumns == 2) { // Label will take 2 cols and text/button the other 2 Label labelControl = getLabelControl(); GridData layoutData = (GridData) labelControl.getLayoutData(); if (layoutData == null) { layoutData = new GridData(); labelControl.setLayoutData(layoutData); } layoutData.horizontalSpan = 2; ((GridData) getTextControl().getLayoutData()).horizontalSpan = 1; } else if (numColumns == 1) { // 1 column each. Label labelControl = getLabelControl(); GridData layoutData = (GridData) labelControl.getLayoutData(); if (layoutData == null) { layoutData = new GridData(); labelControl.setLayoutData(layoutData); } layoutData.horizontalSpan = 1; ((GridData) getTextControl().getLayoutData()).horizontalSpan = 1; } else { ((GridData) getTextControl().getLayoutData()).horizontalSpan = numColumns - 2; } } }