X-Git-Url: http://secure.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/externaltools/variable/SpecificFolderResourceComponent.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/externaltools/variable/SpecificFolderResourceComponent.java
new file mode 100644
index 0000000..437ba7b
--- /dev/null
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/externaltools/variable/SpecificFolderResourceComponent.java
@@ -0,0 +1,110 @@
+package net.sourceforge.phpdt.externaltools.variable;
+
+/**********************************************************************
+Copyright (c) 2002 IBM Corp. and others. All rights reserved.
+This file is made available under the terms of the Common Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/cpl-v10.html
+
+Contributors:
+**********************************************************************/
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Label;
+import net.sourceforge.phpdt.externaltools.internal.model.ToolMessages;
+
+/**
+ * Visual component to edit the resource type variable
+ * value for the working directory. Variable is limited to a specific
+ * IContainer
resource.
+ *
+ * This class is not intended to be extended by clients. + *
+ */ +public class SpecificFolderResourceComponent extends ResourceComponent { + + /** + * Creates an instance + */ + public SpecificFolderResourceComponent() { + super(); + } + + /* (non-Javadoc) + * Method declared on ResourceComponent. + */ + protected void createSelectedResourceOption() { + // Do not present this option... + } + + /* (non-Javadoc) + * Method declared on ResourceComponent. + */ + protected void createResourceList() { + super.createResourceList(); + if (resourceList != null) + resourceList.addFilter(new FileFilter()); + } + + /* (non-Javadoc) + * Method declared on ResourceComponent. + */ + protected void createSpecificResourceOption() { + Label label = new Label(mainGroup, SWT.NONE); + GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL); + label.setLayoutData(data); + label.setFont(mainGroup.getFont()); + label.setText(ToolMessages.getString("ResourceComponent.specificResLabel")); //$NON-NLS-1$ + } + + /* (non-Javadoc) + * Method declared on ResourceComponent. + */ + protected boolean validateResourceListSelection() { + if (resourceList == null) + return true; + + IStructuredSelection sel = (IStructuredSelection) resourceList.getSelection(); + IResource resource = (IResource) sel.getFirstElement(); + if (resource == null || resource.getType() == IResource.FILE) { + getPage().setMessage(ToolMessages.getString("ResourceComponent.selectionRequired"), IMessageProvider.WARNING); //$NON-NLS-1$ + setIsValid(false); + return false; + } + + return true; + } + + + /** + * Filter to remove any IFile resources. + */ + private static final class FileFilter extends ViewerFilter { + /* (non-Javadoc) + * Method declared on ViewerFilter. + */ + public boolean select(Viewer viewer, Object parentElement, Object element) { + IResource resource = null; + if (element instanceof IResource) { + resource = (IResource) element; + } else { + if (element instanceof IAdaptable) { + IAdaptable adaptable = (IAdaptable) element; + resource = (IResource) adaptable.getAdapter(IResource.class); + } + } + + if (resource != null) + return resource.getType() != IResource.FILE; + else + return false; + } + } +}