--- /dev/null
+package net.sourceforge.phpdt.internal.ui.util;
+
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+//incastrix
+//import org.eclipse.jface.text.Assert;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.dialogs.ElementListSelectionDialog;
+import org.eclipse.ui.model.IWorkbenchAdapter;
+
+public class PHPFileSelector extends ResourceSelector {
+ static class FileLabelProvider extends LabelProvider {
+ /**
+ * Returns the implementation of IWorkbenchAdapter for the given object.
+ *
+ * @param o
+ * the object to look up.
+ * @return IWorkbenchAdapter or <code>null</code> if the adapter is
+ * not defined or the object is not adaptable.
+ */
+ protected final IWorkbenchAdapter getAdapter(Object o) {
+ if (!(o instanceof IAdaptable)) {
+ return null;
+ }
+ return (IWorkbenchAdapter) ((IAdaptable) o)
+ .getAdapter(IWorkbenchAdapter.class);
+ }
+
+ /*
+ * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
+ */
+ public String getText(Object element) {
+ if (element instanceof IFile) {
+ // query the element for its label
+ IWorkbenchAdapter adapter = getAdapter(element);
+ if (adapter == null) {
+ return ""; //$NON-NLS-1$
+ }
+ String filename = adapter.getLabel(element);
+ IPath path = ((IFile) element).getFullPath();
+ String filePathname = path != null ? path.toString() : ""; //$NON-NLS-1$
+ return filename + " (" + filePathname + ")";
+ }
+ return super.getText(element);
+ }
+ }
+
+ protected PHPProjectSelector phpProjectSelector;
+
+ public PHPFileSelector(Composite parent, PHPProjectSelector aProjectSelector) {
+ super(parent);
+ Assert.isNotNull(aProjectSelector);
+ phpProjectSelector = aProjectSelector;
+
+ browseDialogTitle = "File Selection";
+ }
+
+ protected Object[] getPHPFiles() {
+ IProject phpProject = phpProjectSelector.getSelection();
+ if (phpProject == null)
+ return new Object[0];
+
+ PHPElementVisitor visitor = new PHPElementVisitor();
+ try {
+ phpProject.accept(visitor);
+ } catch (CoreException e) {
+ PHPeclipsePlugin.log(e);
+ }
+ return visitor.getCollectedPHPFiles();
+ }
+
+ public IFile getSelection() {
+ String fileName = getSelectionText();
+ if (fileName != null && !fileName.equals("")) {
+ IPath filePath = new Path(fileName);
+ IProject project = phpProjectSelector.getSelection();
+ if (project != null && project.exists(filePath))
+ return project.getFile(filePath);
+ }
+
+ return null;
+ }
+
+ protected void handleBrowseSelected() {
+ // ElementListSelectionDialog dialog = new
+ // ElementListSelectionDialog(getShell(), new WorkbenchLabelProvider());
+ ElementListSelectionDialog dialog = new ElementListSelectionDialog(
+ getShell(), new FileLabelProvider());
+
+ dialog.setTitle(browseDialogTitle);
+ dialog.setMessage(browseDialogMessage);
+ dialog.setElements(getPHPFiles());
+
+ if (dialog.open() == ElementListSelectionDialog.OK) {
+ textField.setText(((IResource) dialog.getFirstResult())
+ .getProjectRelativePath().toString());
+ }
+ }
+
+ protected String validateResourceSelection() {
+ IFile selection = getSelection();
+ return selection == null ? EMPTY_STRING : selection
+ .getProjectRelativePath().toString();
+ }
+}
\ No newline at end of file