1 12 package org.eclipse.jsch.internal.ui.preference; 13 14 import org.eclipse.core.runtime.Assert; 15 import org.eclipse.jface.dialogs.Dialog; 16 import org.eclipse.jface.dialogs.IDialogConstants; 17 import org.eclipse.swt.SWT; 18 import org.eclipse.swt.layout.GridData; 19 import org.eclipse.swt.layout.GridLayout; 20 import org.eclipse.swt.widgets.*; 21 import org.eclipse.ui.dialogs.PreferenceLinkArea; 22 import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer; 23 24 public class SWTUtils { 25 26 public static final int MARGINS_DEFAULT= -1; 27 public static final int MARGINS_NONE= 0; 28 public static final int MARGINS_DIALOG= 1; 29 30 public static PreferenceLinkArea createPreferenceLink(IWorkbenchPreferenceContainer container, Composite parent, String pageId, String text) { 31 final PreferenceLinkArea area = new PreferenceLinkArea(parent, SWT.NONE, pageId, text, container, null); 32 return area; 33 } 34 35 public static GridData createGridData(int width, int height, boolean hFill, boolean vFill) { 36 return createGridData(width, height, hFill ? SWT.FILL : SWT.BEGINNING, vFill ? SWT.FILL : SWT.CENTER, hFill, vFill); 37 } 38 39 public static GridData createGridData(int width, int height, int hAlign, int vAlign, boolean hGrab, boolean vGrab) { 40 final GridData gd= new GridData(hAlign, vAlign, hGrab, vGrab); 41 gd.widthHint= width; 42 gd.heightHint= height; 43 return gd; 44 } 45 46 public static GridData createHFillGridData() { 47 return createHFillGridData(1); 48 } 49 50 public static GridData createHFillGridData(int span) { 51 final GridData gd= createGridData(0, SWT.DEFAULT, SWT.FILL, SWT.CENTER, true, false); 52 gd.horizontalSpan= span; 53 return gd; 54 } 55 56 public static Composite createHFillComposite(Composite parent, int margins) { 57 return createHFillComposite(parent, margins, 1); 58 } 59 60 public static Composite createHFillComposite(Composite parent, int margins, int columns) { 61 final Composite composite= new Composite(parent, SWT.NONE); 62 composite.setFont(parent.getFont()); 63 composite.setLayoutData(createHFillGridData()); 64 composite.setLayout(createGridLayout(columns, new PixelConverter(parent), margins)); 65 return composite; 66 } 67 68 public static Composite createHVFillComposite(Composite parent, int margins) { 69 return createHVFillComposite(parent, margins, 1); 70 } 71 72 public static Composite createHVFillComposite(Composite parent, int margins, int columns) { 73 final Composite composite= new Composite(parent, SWT.NONE); 74 composite.setFont(parent.getFont()); 75 composite.setLayoutData(createHVFillGridData()); 76 composite.setLayout(createGridLayout(columns, new PixelConverter(parent), margins)); 77 return composite; 78 } 79 80 81 public static Group createHFillGroup(Composite parent, String text, int margins) { 82 return createHFillGroup(parent, text, margins, 1); 83 } 84 85 public static Group createHFillGroup(Composite parent, String text, int margins, int rows) { 86 final Group group= new Group(parent, SWT.NONE); 87 group.setFont(parent.getFont()); 88 group.setLayoutData(createHFillGridData()); 89 if (text != null) 90 group.setText(text); 91 group.setLayout(createGridLayout(rows, new PixelConverter(parent), margins)); 92 return group; 93 } 94 95 public static Group createHVFillGroup(Composite parent, String text, int margins) { 96 return createHVFillGroup(parent, text, margins, 1); 97 } 98 99 public static Group createHVFillGroup(Composite parent, String text, int margins, int rows) { 100 final Group group= new Group(parent, SWT.NONE); 101 group.setFont(parent.getFont()); 102 group.setLayoutData(createHVFillGridData()); 103 if (text != null) 104 group.setText(text); 105 group.setLayout(createGridLayout(rows, new PixelConverter(parent), margins)); 106 return group; 107 } 108 109 public static GridData createHVFillGridData() { 110 return createHVFillGridData(1); 111 } 112 113 public static GridData createHVFillGridData(int span) { 114 final GridData gd= createGridData(0, 0, true, true); 115 gd.horizontalSpan= span; 116 return gd; 117 } 118 119 120 133 public static GridLayout createGridLayout(int numColumns, PixelConverter converter, int margins) { 134 Assert.isTrue(margins == MARGINS_DEFAULT || margins == MARGINS_NONE || margins == MARGINS_DIALOG); 135 136 final GridLayout layout= new GridLayout(numColumns, false); 137 layout.horizontalSpacing= converter.convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); 138 layout.verticalSpacing= converter.convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); 139 140 switch (margins) { 141 case MARGINS_NONE: 142 layout.marginLeft= layout.marginRight= 0; 143 layout.marginTop= layout.marginBottom= 0; 144 break; 145 case MARGINS_DIALOG: 146 layout.marginLeft= layout.marginRight= converter.convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); 147 layout.marginTop= layout.marginBottom= converter.convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); 148 break; 149 case MARGINS_DEFAULT: 150 layout.marginLeft= layout.marginRight= layout.marginWidth; 151 layout.marginTop= layout.marginBottom= layout.marginHeight; 152 } 153 layout.marginWidth= layout.marginHeight= 0; 154 return layout; 155 } 156 157 158 public static Label createLabel(Composite parent, String message) { 159 return createLabel(parent, message, 1); 160 } 161 162 public static Label createLabel(Composite parent, String message, int span) { 163 final Label label= new Label(parent, SWT.WRAP); 164 if (message != null) 165 label.setText(message); 166 label.setLayoutData(createHFillGridData(span)); 167 return label; 168 } 169 170 public static Button createCheckBox(Composite parent, String message) { 171 return createCheckBox(parent, message, 1); 172 } 173 174 public static Button createCheckBox(Composite parent, String message, int span) { 175 final Button button= new Button(parent, SWT.CHECK); 176 button.setText(message); 177 button.setLayoutData(createHFillGridData(span)); 178 return button; 179 } 180 181 public static Button createRadioButton(Composite parent, String message) { 182 return createRadioButton(parent, message, 1); 183 } 184 185 public static Button createRadioButton(Composite parent, String message, int span) { 186 final Button button= new Button(parent, SWT.RADIO); 187 button.setText(message); 188 button.setLayoutData(createHFillGridData(span)); 189 return button; 190 } 191 192 193 public static Text createText(Composite parent) { 194 return createText(parent, 1); 195 } 196 197 public static Text createText(Composite parent, int span) { 198 final Text text= new Text(parent, SWT.SINGLE | SWT.BORDER); 199 text.setLayoutData(createHFillGridData(span)); 200 return text; 201 } 202 203 204 public static Control createPlaceholder(Composite parent, int heightInChars, int span) { 205 Assert.isTrue(heightInChars > 0); 206 final Control placeHolder= new Composite(parent, SWT.NONE); 207 final GridData gd= new GridData(SWT.BEGINNING, SWT.TOP, false, false); 208 gd.heightHint= new PixelConverter(parent).convertHeightInCharsToPixels(heightInChars); 209 gd.horizontalSpan= span; 210 placeHolder.setLayoutData(gd); 211 return placeHolder; 212 } 213 214 215 public static Control createPlaceholder(Composite parent, int heightInChars) { 216 return createPlaceholder(parent, heightInChars, 1); 217 } 218 219 public static PixelConverter createDialogPixelConverter(Control control) { 220 Dialog.applyDialogFont(control); 221 return new PixelConverter(control); 222 } 223 224 public static int calculateControlSize(PixelConverter converter, Control [] controls) { 225 return calculateControlSize(converter, controls, 0, controls.length - 1); 226 } 227 228 public static int calculateControlSize(PixelConverter converter, Control [] controls, int start, int end) { 229 int minimum= converter.convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH); 230 for (int i = start; i <= end; i++) { 231 final int length= controls[i].computeSize(SWT.DEFAULT, SWT.DEFAULT).x; 232 if (minimum < length) 233 minimum= length; 234 } 235 return minimum; 236 } 237 238 public static void equalizeControls(PixelConverter converter, Control [] controls) { 239 equalizeControls(converter, controls, 0, controls.length - 1); 240 } 241 242 public static void equalizeControls(PixelConverter converter, Control [] controls, int start, int end) { 243 final int size= calculateControlSize(converter, controls, start, end); 244 for (int i = start; i <= end; i++) { 245 final Control button= controls[i]; 246 if (button.getLayoutData() instanceof GridData) { 247 ((GridData)button.getLayoutData()).widthHint= size; 248 } 249 } 250 } 251 252 public static int getWidthInCharsForLongest(PixelConverter converter, String [] strings) { 253 int minimum= 0; 254 for (int i = 0; i < strings.length; i++) { 255 final int length= converter.convertWidthInCharsToPixels(strings[i].length()); 256 if (minimum < length) 257 minimum= length; 258 } 259 return minimum; 260 } 261 } 262 | Popular Tags |