diff options
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/SourceFolderButtonDialogField.java')
-rw-r--r-- | jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/SourceFolderButtonDialogField.java | 340 |
1 files changed, 0 insertions, 340 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/SourceFolderButtonDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/SourceFolderButtonDialogField.java deleted file mode 100644 index 420a95093..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/SourceFolderButtonDialogField.java +++ /dev/null @@ -1,340 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. and others. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Path; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IJavaModel; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.IPackageFragmentRoot; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.ui.JavaElementComparator; -import org.eclipse.jdt.ui.JavaElementLabelProvider; -import org.eclipse.jdt.ui.StandardJavaElementContentProvider; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.jface.window.Window; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; -import org.eclipse.ui.dialogs.ElementTreeSelectionDialog; - -/** - * This class provides a source folder selection DialogFiled. There are two - * conditions: 1. If you set the IProject instance, the source folder selection - * will only be limited in the specified project 2. If you set null, the source - * folder selection is allowed in all workspaces - * - * - * @author mengbo - * @version 1.5 - */ -public class SourceFolderButtonDialogField extends StringButtonDialogField { - /** Create the logger for this class */ - private static Logger _log = JSFUICommonPlugin - .getLogger(SourceFolderButtonDialogField.class); - - /** - * package fragment root corresponding to the input type (can be null) - */ - private IPackageFragmentRoot _fCurrRoot; - - private IProject _project; - - /** - * @param project - */ - public SourceFolderButtonDialogField(IProject project) { - super(null); - - _project = project; - - setLabelText(DialogFieldResources.getInstance().getString( - "SourceFolderButtonDialogField.container.label")); //$NON-NLS-1$ - - setButtonLabel(DialogFieldResources.getInstance().getString( - "SourceFolderButtonDialogField.container.button")); //$NON-NLS-1$ - - setStringButtonAdapter(new IStringButtonAdapter() { - public void changeControlPressed(DialogField field) { - containerChangeControlPressed(field); - } - - }); - } - - /** - * @return Returns the project. - */ - public IProject getProject() { - return _project; - } - - /** - * @param project - * The project to set. - */ - public void setProject(IProject project) { - this._project = project; - } - - /** - * @param field - */ - protected void containerChangeControlPressed(DialogField field) { - // take the current jproject as init element of the dialog - IPackageFragmentRoot root = getPackageFragmentRoot(); - root = chooseSourceContainer(root); - if (root != null) { - setPackageFragmentRoot(root, true); - } - } - - /** - * Sets the current source folder (model and text field) to the given - * package fragment root. - * - * @param root - * The new root. - * @param canBeModified - * if <code>false</code> the source folder field can not be - * changed by the user. If <code>true</code> the field is - * editable - */ - public void setPackageFragmentRoot(IPackageFragmentRoot root, - boolean canBeModified) { - _fCurrRoot = root; - String str = (root == null) ? "" : root.getPath().makeRelative().toString(); //$NON-NLS-1$ - setText(str); - setEnabled(canBeModified); - } - - /** - * Returns the <code>IPackageFragmentRoot</code> that corresponds to the - * current value of the source folder field. - * - * @return the IPackageFragmentRoot or <code>null</code> if the current - * source folder value is not a valid package fragment root - * - */ - public IPackageFragmentRoot getPackageFragmentRoot() { - return _fCurrRoot; - } - - /** - * Returns the current text of source folder text field. - * - * @return the text of the source folder text field - */ - public String getPackageFragmentRootText() { - return getText(); - } - - /** - * choose source container dialog - * - * @param initElement - * @return - */ - private IPackageFragmentRoot chooseSourceContainer(IJavaElement initElement) { - Class[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, - IJavaProject.class, }; - - TypedElementSelectionValidator validator = new TypedElementSelectionValidator( - acceptedClasses, false) { - // TODO: never used -// public boolean isSelectedValid(Object element) { -// try { -// if (element instanceof IJavaProject) { -// IJavaProject jproject = (IJavaProject) element; -// IPath path = jproject.getProject().getFullPath(); -// return (jproject.findPackageFragmentRoot(path) != null); -// } else if (element instanceof IPackageFragmentRoot) { -// return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); -// } -// return true; -// } catch (JavaModelException e) { -// _log.error("JavaModelException"); // just log, no ui in -// // validation -// } -// return false; -// } - }; - - acceptedClasses = new Class[] { IJavaModel.class, - IPackageFragmentRoot.class, IJavaProject.class, }; - ViewerFilter filter = new TypedViewerFilter(acceptedClasses) { - public boolean select(Viewer viewer, Object parent, Object element) { - if (element instanceof IPackageFragmentRoot) { - try { - return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); - } catch (JavaModelException e) { - _log.error(e); // just log, no ui - // in validation - return false; - } - } - return super.select(viewer, parent, element); - } - }; - - StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider(); - ILabelProvider labelProvider = new JavaElementLabelProvider( - JavaElementLabelProvider.SHOW_DEFAULT); - ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog( - getShell(), labelProvider, provider); - dialog.setValidator(validator); - dialog.setComparator(new JavaElementComparator()); - // HibernateWizardPage.ChooseSourceContainerDialog.Title = Folder - // Selection - dialog - .setTitle(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.ChooseSourceContainerDialog.Title")); //$NON-NLS-1$ - // HibernateWizardPage.ChooseSourceContainerDialog.Description = Choose - // a folder: - dialog - .setMessage(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.ChooseSourceContainerDialog.Description")); //$NON-NLS-1$ - dialog.addFilter(filter); - if (_project != null) { - dialog.setInput(JavaCore.create(_project)); - } else { - dialog.setInput(JavaCore.create(ResourcesPlugin.getWorkspace() - .getRoot())); - } - dialog.setInitialSelection(initElement); - - if (dialog.open() == Window.OK) { - Object element = dialog.getFirstResult(); - if (element instanceof IJavaProject) { - IJavaProject jproject = (IJavaProject) element; - return jproject.getPackageFragmentRoot(jproject.getProject()); - } else if (element instanceof IPackageFragmentRoot) { - return (IPackageFragmentRoot) element; - } - return null; - } - return null; - } - - /** - * This method updates the model and returns an error status. The underlying - * model is only valid if the returned status is OK. - * - * @return the model's error status - */ - public IStatus getChangedStatus() { - StatusInfo status = new StatusInfo(); - - _fCurrRoot = null; - String str = getPackageFragmentRootText(); - if (str.length() == 0) { - // SourceFolderButtonDialogField.error.EnterContainerName = Folder - // name is empty. - status.setError(DialogFieldResources.getInstance().getString( - "SourceFolderButtonDialogField.error.EnterContainerName")); //$NON-NLS-1$ - return status; - } - IPath path = new Path(str); - IResource res = ResourcesPlugin.getWorkspace().getRoot().findMember( - path); - if (res != null) { - int resType = res.getType(); - if (resType == IResource.PROJECT || resType == IResource.FOLDER) { - IProject proj = res.getProject(); - if (!proj.isOpen()) { - status - .setError(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.error.ProjectClosed", proj.getFullPath().toString())); //$NON-NLS-1$ - return status; - } - if (_project != null && proj != _project) { - // HibernateWizardPage.error.NotSameProject = The project - // should be \''{0}\''. - status - .setError(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.error.NotSameProject", _project.getName())); //$NON-NLS-1$ - return status; - } - IJavaProject jproject = JavaCore.create(proj); - _fCurrRoot = jproject.getPackageFragmentRoot(res); - if (res.exists()) { - try { - if (!proj.hasNature(JavaCore.NATURE_ID)) { - if (resType == IResource.PROJECT) { - status - .setError(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.warning.NotAJavaProject", proj.getName())); //$NON-NLS-1$ - } else { - status - .setWarning(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.warning.NotInAJavaProject", proj.getName())); //$NON-NLS-1$ - } - return status; - } - } catch (CoreException e) { - status - .setWarning(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.warning.NotAJavaProject", proj.getName())); //$NON-NLS-1$ - } - if (!jproject.isOnClasspath(_fCurrRoot)) { - status - .setWarning(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.warning.NotOnClassPath", str)); //$NON-NLS-1$ - } - if (_fCurrRoot.isArchive()) { - status - .setError(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.error.ContainerIsBinary", str)); //$NON-NLS-1$ - return status; - } - } - return status; - } - status.setError(DialogFieldResources.getInstance().getString( - "SourceFolderButtonDialogField.error.NotAFolder", str)); //$NON-NLS-1$ - return status; - } - status - .setError(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.error.ContainerDoesNotExist", str)); //$NON-NLS-1$ - return status; - } - -} |