KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > jsch > internal > ui > preference > SWTUtils


1 /*******************************************************************************
2  * Copyright (c) 2000, 2007 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation.
10  * Atsuhiko Yamanaka, JCraft,Inc. - Bug 170883
11  *******************************************************************************/

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 JavaDoc pageId, String JavaDoc 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 JavaDoc text, int margins) {
82         return createHFillGroup(parent, text, margins, 1);
83     }
84     
85     public static Group createHFillGroup(Composite parent, String JavaDoc 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 JavaDoc text, int margins) {
96         return createHVFillGroup(parent, text, margins, 1);
97     }
98     
99     public static Group createHVFillGroup(Composite parent, String JavaDoc 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     /**
121      * Create a grid layout with the specified number of columns and the
122      * standard spacings.
123      *
124      * @param numColumns
125      * the number of columns
126      * @param converter
127      * the pixel converter
128      * @param margins
129      * One of <code>MARGINS_DEFAULT</code>,
130      * <code>MARGINS_NONE</code> or <code>MARGINS_DIALOG</code>.
131      * @return the grid layout
132      */

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 JavaDoc message) {
159         return createLabel(parent, message, 1);
160     }
161
162     public static Label createLabel(Composite parent, String JavaDoc 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 JavaDoc message) {
171         return createCheckBox(parent, message, 1);
172     }
173
174     public static Button createCheckBox(Composite parent, String JavaDoc 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 JavaDoc message) {
182         return createRadioButton(parent, message, 1);
183     }
184
185     public static Button createRadioButton(Composite parent, String JavaDoc 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 JavaDoc [] 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