X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/util/ResourceSelector.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/util/ResourceSelector.java new file mode 100644 index 0000000..42e78de --- /dev/null +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/util/ResourceSelector.java @@ -0,0 +1,96 @@ +package net.sourceforge.phpdt.internal.ui.util; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +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.Shell; +import org.eclipse.swt.widgets.Text; + +public abstract class ResourceSelector { + protected final static String EMPTY_STRING = ""; + + protected Composite composite; + + protected Button browseButton; + + protected Text textField; + + protected String browseDialogMessage = EMPTY_STRING; + + protected String browseDialogTitle = EMPTY_STRING; + + protected String validatedSelectionText = EMPTY_STRING; + + public ResourceSelector(Composite parent) { + composite = new Composite(parent, SWT.NONE); + GridLayout compositeLayout = new GridLayout(); + compositeLayout.marginWidth = 0; + compositeLayout.marginHeight = 0; + compositeLayout.numColumns = 2; + composite.setLayout(compositeLayout); + + textField = new Text(composite, SWT.SINGLE | SWT.BORDER); + textField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + textField.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + validatedSelectionText = validateResourceSelection(); + } + }); + + browseButton = new Button(composite, SWT.PUSH); + browseButton.setText("Browse..."); + browseButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + handleBrowseSelected(); + } + }); + } + + protected abstract void handleBrowseSelected(); + + protected abstract String validateResourceSelection(); + + protected Shell getShell() { + return composite.getShell(); + } + + public void setLayoutData(Object layoutData) { + composite.setLayoutData(layoutData); + } + + public void addModifyListener(ModifyListener aListener) { + textField.addModifyListener(aListener); + } + + public void setBrowseDialogMessage(String aMessage) { + browseDialogMessage = aMessage; + } + + public void setBrowseDialogTitle(String aTitle) { + browseDialogTitle = aTitle; + } + + public void setEnabled(boolean enabled) { + composite.setEnabled(enabled); + textField.setEnabled(enabled); + browseButton.setEnabled(enabled); + } + + public String getSelectionText() { + return textField.getText(); + } + + public String getValidatedSelectionText() { + return validatedSelectionText; + } + + public void setSelectionText(String newText) { + textField.setText(newText); + } +}