Changeset 1215
- Timestamp:
- 11/01/07 15:57:00 (1 year ago)
- Files:
-
- org.jalcedo.generator/trunk/org.jalcedo.generator.beans.ui/src/org/jalcedo/generator/beans/ui/internal/resource/messages.properties (modified) (1 diff)
- org.jalcedo.generator/trunk/org.jalcedo.generator.beans.ui/src/org/jalcedo/generator/beans/ui/wizardpages/InputPackagePage.java (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
org.jalcedo.generator/trunk/org.jalcedo.generator.beans.ui/src/org/jalcedo/generator/beans/ui/internal/resource/messages.properties
r1128 r1215 23 23 InputPackagePage.title=Select package 24 24 InputPackagePage.description=Select package which is target of this template. 25 InputPackagePage.chooseSourceFolder.title=Source Folder Selection 26 InputPackagePage.chooseSourceFolder.message=Choose a source folder: 27 InputPackagePage.chooseSourceFolder.emptyMessage=Cannot find source folder to select. org.jalcedo.generator/trunk/org.jalcedo.generator.beans.ui/src/org/jalcedo/generator/beans/ui/wizardpages/InputPackagePage.java
r1212 r1215 14 14 import java.util.List; 15 15 16 import org.eclipse.core.resources.ResourcesPlugin;17 import org.eclipse.core.runtime.IPath;18 16 import org.eclipse.core.runtime.IStatus; 19 17 import org.eclipse.jdt.core.IJavaElement; 20 import org.eclipse.jdt.core.IJavaModel;21 18 import org.eclipse.jdt.core.IJavaProject; 22 19 import org.eclipse.jdt.core.IPackageFragment; 23 20 import org.eclipse.jdt.core.IPackageFragmentRoot; 24 import org.eclipse.jdt.core.JavaCore;25 21 import org.eclipse.jdt.core.JavaModelException; 26 import org.eclipse.jdt.internal.ui.JavaPlugin;27 import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages;28 import org.eclipse.jdt.internal.ui.wizards.TypedElementSelectionValidator;29 import org.eclipse.jdt.internal.ui.wizards.TypedViewerFilter;30 import org.eclipse.jdt.ui.JavaElementComparator;31 22 import org.eclipse.jdt.ui.JavaElementLabelProvider; 32 import org.eclipse.jdt.ui.StandardJavaElementContentProvider;33 23 import org.eclipse.jdt.ui.wizards.NewTypeWizardPage; 34 import org.eclipse.jface.viewers.ILabelProvider;35 24 import org.eclipse.jface.viewers.IStructuredSelection; 36 import org.eclipse.jface.viewers.Viewer;37 import org.eclipse.jface.viewers.ViewerFilter;38 25 import org.eclipse.jface.window.Window; 39 26 import org.eclipse.swt.SWT; 40 27 import org.eclipse.swt.layout.GridLayout; 41 28 import org.eclipse.swt.widgets.Composite; 42 import org.eclipse.ui.dialogs.Element TreeSelectionDialog;29 import org.eclipse.ui.dialogs.ElementListSelectionDialog; 43 30 import org.jalcedo.generator.beans.StatusChangeListener; 44 31 import org.jalcedo.generator.beans.ui.internal.resource.Messages; … … 58 45 59 46 public class InputPackagePage extends NewTypeWizardPage { 60 private final static String PAGE_NAME = "InputPackagePage"; 47 private final static String PAGE_NAME = "InputPackagePage"; //$NON-NLS-1$ 61 48 private List<StatusChangeListener> listeners = new ArrayList<StatusChangeListener>(); 62 49 … … 204 191 } 205 192 206 // TODO this method is copied from NewContainerWizardPage. Refactor thid 207 // method. 193 /** 194 * プロジェクトの持つ source package fragment root を取得する. 195 * 196 * @param javaProject 197 * @return 198 */ 199 private IJavaElement[] findSourceFolders(IJavaProject javaProject) { 200 201 List<IPackageFragmentRoot> rootList = new ArrayList<IPackageFragmentRoot>(); 202 try { 203 for (IPackageFragmentRoot root : javaProject 204 .getPackageFragmentRoots()) { 205 if (root.getKind() == IPackageFragmentRoot.K_SOURCE) { 206 rootList.add(root); 207 } 208 } 209 } catch (JavaModelException e) { 210 // TODO Auto-generated catch block 211 e.printStackTrace(); 212 } 213 214 return rootList.toArray(new IPackageFragmentRoot[rootList.size()]); 215 } 216 217 /* 218 * (non-Javadoc) 219 * 220 * @see org.eclipse.jdt.ui.wizards.NewContainerWizardPage#chooseContainer() 221 */ 208 222 @Override 209 223 protected IPackageFragmentRoot chooseContainer() { 210 IJavaElement initElement = getPackageFragmentRoot(); 211 Class[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, 212 IJavaProject.class }; 213 TypedElementSelectionValidator validator = new TypedElementSelectionValidator( 214 acceptedClasses, false) { 215 public boolean isSelectedValid(Object element) { 216 try { 217 if (element instanceof IJavaProject) { 218 IJavaProject jproject = (IJavaProject) element; 219 IPath path = jproject.getProject().getFullPath(); 220 return (jproject.findPackageFragmentRoot(path) != null); 221 } else if (element instanceof IPackageFragmentRoot) { 222 return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); 223 } 224 return true; 225 } catch (JavaModelException e) { 226 JavaPlugin.log(e.getStatus()); // just log, no UI in 227 // validation 228 } 229 return false; 230 } 231 }; 232 233 acceptedClasses = new Class[] { IJavaModel.class, 234 IPackageFragmentRoot.class, IJavaProject.class }; 235 ViewerFilter filter = new TypedViewerFilter(acceptedClasses) { 236 public boolean select(Viewer viewer, Object parent, Object element) { 237 if (element instanceof IJavaProject) { 238 IJavaProject jp = (IJavaProject) element; 239 if (!getJavaProject().equals(jp)) { 240 return false; 241 } 242 } 243 244 if (element instanceof IPackageFragmentRoot) { 245 try { 246 IPackageFragmentRoot root = (IPackageFragmentRoot) element; 247 return (root.getKind() == IPackageFragmentRoot.K_SOURCE); 248 } catch (JavaModelException e) { 249 JavaPlugin.log(e.getStatus()); // just log, no UI in 250 // validation 251 return false; 252 } 253 } 254 return super.select(viewer, parent, element); 255 // return false; 256 } 257 }; 258 259 StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider(); 260 ILabelProvider labelProvider = new JavaElementLabelProvider( 261 JavaElementLabelProvider.SHOW_DEFAULT); 262 ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog( 263 getShell(), labelProvider, provider); 264 dialog.setValidator(validator); 265 dialog.setComparator(new JavaElementComparator()); 266 dialog 267 .setTitle(NewWizardMessages.NewContainerWizardPage_ChooseSourceContainerDialog_title); 268 dialog 269 .setMessage(NewWizardMessages.NewContainerWizardPage_ChooseSourceContainerDialog_description); 270 dialog.addFilter(filter); 271 dialog.setInput(JavaCore.create(ResourcesPlugin.getWorkspace() 272 .getRoot())); 273 dialog.setInitialSelection(initElement); 224 IPackageFragmentRoot defaultRoot = getPackageFragmentRoot(); 225 IJavaElement[] roots = findSourceFolders(getJavaProject()); 226 227 if (roots == null) { 228 roots = new IJavaElement[0]; 229 } 230 231 ElementListSelectionDialog dialog = new ElementListSelectionDialog( 232 getShell(), new JavaElementLabelProvider( 233 JavaElementLabelProvider.SHOW_DEFAULT)); 234 dialog.setIgnoreCase(false); 235 dialog.setTitle(Messages 236 .getString("InputPackagePage.chooseSourceFolder.title")); //$NON-NLS-1$ 237 dialog.setMessage(Messages 238 .getString("InputPackagePage.chooseSourceFolder.message")); //$NON-NLS-1$ 239 dialog.setEmptyListMessage(Messages 240 .getString("InputPackagePage.chooseSourceFolder.emptyMessage")); //$NON-NLS-1$ 241 dialog.setElements(roots); 274 242 dialog.setHelpAvailable(false); 275 243 244 if (defaultRoot != null) { 245 dialog.setInitialSelections(new Object[] { defaultRoot }); 246 } 247 276 248 if (dialog.open() == Window.OK) { 277 Object element = dialog.getFirstResult(); 278 if (element instanceof IJavaProject) { 279 IJavaProject jproject = (IJavaProject) element; 280 return jproject.getPackageFragmentRoot(jproject.getProject()); 281 } else if (element instanceof IPackageFragmentRoot) { 282 return (IPackageFragmentRoot) element; 283 } 284 return null; 249 return (IPackageFragmentRoot) dialog.getFirstResult(); 285 250 } 286 251 return null; 287 252 } 253 288 254 }
