annewman 发表于 2013-1-24 21:01:02

自定义Composite

package org.soyatec.windows.azure.jdt.ui;import java.io.File;import org.eclipse.swt.SWT;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.events.SelectionListener;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.layout.GridLayout;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.DirectoryDialog;import org.eclipse.swt.widgets.Label;import org.eclipse.swt.widgets.Text;import org.soyatec.windows.azure.jdt.AzureJdtPlugin;import org.soyatec.windows.azure.util.JFaceUtil;public class CustomStringButtonDialogField extends Composite {private Label fLabel;private Text fLocation;private Button fButton;private static final String DIALOGSTORE_LAST_EXTERNAL_LOC = AzureJdtPlugin.PLUGIN_ID+ ".last.external.project";public CustomStringButtonDialogField(Composite parent, int style,String label, String desc, int width) {super(parent, style);setLayout(new GridLayout(3, false));this.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));doFillIntoGrid(this, label, desc, width);addListener();}public void doFillIntoGrid(Composite parent, String label, String desc,int width) {fLabel = createLableControl(parent, label, desc, width);fLocation = JFaceUtil.createText(parent);fButton = getChangeControl(parent);}/** * Sets the label of the button. */public void setButtonLabel(String label) {fButton.setLayoutData(label);}/** * Sets the enable state of the button. */public void enableButton(boolean enable) {fButton.setEnabled(enable);}private Label createLableControl(Composite parent, String label,String desc, int width) {Label tooltipLabel = new Label(parent, SWT.None);tooltipLabel.setText(label);tooltipLabel.setToolTipText(desc);GridData data = new GridData();data.widthHint = width;tooltipLabel.setLayoutData(data);return tooltipLabel;}void addListener() {fButton.addSelectionListener(new SelectionListener() {public void widgetDefaultSelected(SelectionEvent e) {widgetSelected(e);}public void widgetSelected(SelectionEvent e) {onButtonPressed(e);}});}public void setLabelText(String text) {}private Button getChangeControl(Composite parent) {return JFaceUtil.createButton(parent, SWT.None, "Browse...", 1);}public Text getTextControl() {return fLocation;}public Button getButtonControl() {return fButton;}public String getText() {return fLocation.getText();}public void setText(String path) {this.fLocation.setText(path);}public void onButtonPressed(SelectionEvent e) {final DirectoryDialog dialog = new DirectoryDialog(this.getShell());dialog.setMessage("Choose a directory");String directoryName = fLocation.getText().trim();if (directoryName.length() == 0) {String prevLocation = AzureJdtPlugin.getDefault().getDialogSettings().get(DIALOGSTORE_LAST_EXTERNAL_LOC);if (prevLocation != null) {directoryName = prevLocation;}}if (directoryName.length() > 0) {final File path = new File(directoryName);if (path.exists())dialog.setFilterPath(directoryName);}final String selectedDirectory = dialog.open();if (selectedDirectory != null) {fLocation.setText(selectedDirectory);AzureJdtPlugin.getDefault().getDialogSettings().put(DIALOGSTORE_LAST_EXTERNAL_LOC, selectedDirectory);}}} 
页: [1]
查看完整版本: 自定义Composite