1 11 package org.eclipse.jdt.internal.ui.wizards.buildpaths.newsourcepage; 12 13 import java.util.ArrayList ; 14 15 import org.eclipse.core.runtime.CoreException; 16 import org.eclipse.core.runtime.IPath; 17 18 import org.eclipse.core.resources.IProject; 19 import org.eclipse.core.resources.IResource; 20 21 import org.eclipse.swt.widgets.Shell; 22 23 import org.eclipse.jface.operation.IRunnableContext; 24 import org.eclipse.jface.resource.JFaceResources; 25 import org.eclipse.jface.viewers.IStructuredSelection; 26 import org.eclipse.jface.viewers.StructuredSelection; 27 import org.eclipse.jface.window.Window; 28 import org.eclipse.jface.wizard.WizardDialog; 29 30 import org.eclipse.ui.IWorkbenchSite; 31 import org.eclipse.ui.PlatformUI; 32 import org.eclipse.ui.part.ISetSelectionTarget; 33 34 import org.eclipse.jdt.core.IClasspathEntry; 35 import org.eclipse.jdt.core.IJavaElement; 36 import org.eclipse.jdt.core.IJavaProject; 37 import org.eclipse.jdt.core.IPackageFragmentRoot; 38 import org.eclipse.jdt.core.JavaModelException; 39 40 import org.eclipse.jdt.internal.corext.buildpath.BuildpathDelta; 41 import org.eclipse.jdt.internal.corext.buildpath.ClasspathModifier; 42 43 import org.eclipse.jdt.ui.PreferenceConstants; 44 45 import org.eclipse.jdt.internal.ui.JavaPluginImages; 46 import org.eclipse.jdt.internal.ui.util.ExceptionHandler; 47 import org.eclipse.jdt.internal.ui.util.PixelConverter; 48 import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages; 49 import org.eclipse.jdt.internal.ui.wizards.buildpaths.CPListElement; 50 import org.eclipse.jdt.internal.ui.wizards.buildpaths.EditFilterWizard; 51 52 public class EditFilterAction extends BuildpathModifierAction { 54 55 public EditFilterAction(IWorkbenchSite site) { 56 this(site, null, PlatformUI.getWorkbench().getProgressService()); 57 } 58 59 public EditFilterAction(IRunnableContext context, ISetSelectionTarget selectionTarget) { 60 this(null, selectionTarget, context); 61 } 62 63 private EditFilterAction(IWorkbenchSite site, ISetSelectionTarget selectionTarget, IRunnableContext context) { 64 super(site, selectionTarget, BuildpathModifierAction.EDIT_FILTERS); 65 66 setText(NewWizardMessages.NewSourceContainerWorkbookPage_ToolBar_Edit_label); 67 setImageDescriptor(JavaPluginImages.DESC_ELCL_CONFIGURE_BUILDPATH_FILTERS); 68 setToolTipText(NewWizardMessages.NewSourceContainerWorkbookPage_ToolBar_Edit_tooltip); 69 setDescription(NewWizardMessages.PackageExplorerActionGroup_FormText_Edit); 70 setDisabledImageDescriptor(JavaPluginImages.DESC_DLCL_CONFIGURE_BUILDPATH_FILTERS); 71 } 72 73 76 public String getDetailedDescription() { 77 if (!isEnabled()) 78 return null; 79 80 81 return NewWizardMessages.PackageExplorerActionGroup_FormText_Edit; 82 } 83 84 87 public void run() { 88 Shell shell= getShell(); 89 90 try { 91 EditFilterWizard wizard= createWizard(); 92 wizard.init(PlatformUI.getWorkbench(), new StructuredSelection(getSelectedElements().get(0))); 93 94 WizardDialog dialog= new WizardDialog(shell, wizard); 95 PixelConverter converter= new PixelConverter(JFaceResources.getDialogFont()); 96 dialog.setMinimumPageSize(converter.convertWidthInCharsToPixels(70), converter.convertHeightInCharsToPixels(20)); 97 dialog.create(); 98 int res= dialog.open(); 99 if (res == Window.OK) { 100 BuildpathDelta delta= new BuildpathDelta(getToolTipText()); 101 102 ArrayList newEntries= wizard.getExistingEntries(); 103 delta.setNewEntries((CPListElement[])newEntries.toArray(new CPListElement[newEntries.size()])); 104 105 IResource resource= wizard.getCreatedElement().getCorrespondingResource(); 106 delta.addCreatedResource(resource); 107 108 delta.setDefaultOutputLocation(wizard.getOutputLocation()); 109 110 informListeners(delta); 111 112 selectAndReveal(new StructuredSelection(wizard.getCreatedElement())); 113 } 114 115 notifyResult(res == Window.OK); 116 } catch (CoreException e) { 117 String title= NewWizardMessages.AbstractOpenWizardAction_createerror_title; 118 String message= NewWizardMessages.AbstractOpenWizardAction_createerror_message; 119 ExceptionHandler.handle(e, shell, title, message); 120 } 121 } 122 123 private EditFilterWizard createWizard() throws CoreException { 124 IJavaProject javaProject= null; 125 Object firstElement= getSelectedElements().get(0); 126 if (firstElement instanceof IJavaProject) { 127 javaProject= (IJavaProject)firstElement; 128 } else { 129 javaProject= ((IPackageFragmentRoot)firstElement).getJavaProject(); 130 } 131 CPListElement[] existingEntries= CPListElement.createFromExisting(javaProject); 132 CPListElement elementToEdit= findElement((IJavaElement)firstElement, existingEntries); 133 return new EditFilterWizard(existingEntries, elementToEdit, getOutputLocation(javaProject)); 134 } 135 136 private IPath getOutputLocation(IJavaProject javaProject) { 137 try { 138 return javaProject.getOutputLocation(); 139 } catch (CoreException e) { 140 IProject project= javaProject.getProject(); 141 IPath projPath= project.getFullPath(); 142 return projPath.append(PreferenceConstants.getPreferenceStore().getString(PreferenceConstants.SRCBIN_BINNAME)); 143 } 144 } 145 146 private static CPListElement findElement(IJavaElement element, CPListElement[] elements) { 147 IPath path= element.getPath(); 148 for (int i= 0; i < elements.length; i++) { 149 CPListElement cur= elements[i]; 150 if (cur.getEntryKind() == IClasspathEntry.CPE_SOURCE && cur.getPath().equals(path)) { 151 return cur; 152 } 153 } 154 return null; 155 } 156 157 protected boolean canHandle(IStructuredSelection selection) { 158 if (selection.size() != 1) 159 return false; 160 161 try { 162 Object element= selection.getFirstElement(); 163 if (element instanceof IJavaProject) { 164 return ClasspathModifier.isSourceFolder((IJavaProject)element); 165 } else if (element instanceof IPackageFragmentRoot) { 166 IPackageFragmentRoot packageFragmentRoot= ((IPackageFragmentRoot) element); 167 if (packageFragmentRoot.getKind() != IPackageFragmentRoot.K_SOURCE) 168 return false; 169 170 return packageFragmentRoot.getJavaProject() != null; 171 } 172 } catch (JavaModelException e) { 173 } 174 return false; 175 } 176 } 177 | Popular Tags |