11/*******************************************************************************
2- * Copyright 2000-2014 JetBrains s.r.o.
2+ * Copyright 2000-2016 JetBrains s.r.o.
33 *
44 * Licensed under the Apache License, Version 2.0 (the "License");
55 * you may not use this file except in compliance with the License.
2626import static org .jetbrains .kotlin .wizards .SWTWizardUtils .createText ;
2727
2828import org .eclipse .core .resources .IProject ;
29- import org .eclipse .core .resources .IResource ;
30- import org .eclipse .core .runtime .IPath ;
31- import org .eclipse .jdt .core .IClasspathEntry ;
32- import org .eclipse .jdt .core .IJavaElement ;
3329import org .eclipse .jdt .core .IJavaProject ;
3430import org .eclipse .jdt .core .IPackageFragment ;
3531import org .eclipse .jdt .core .IPackageFragmentRoot ;
@@ -134,12 +130,12 @@ public void modifyText(ModifyEvent e) {
134130 return name ;
135131 }
136132
137- private void setSourceDirByFolderName (String folderName ) {
133+ private void setSourceDirByFolderName (String srcFolder ) {
138134 try {
139135 sourceDir = null ;
140136 for (IJavaProject jp : JavaCore .create (getWorkspaceRoot ()).getJavaProjects ()) {
141137 for (IPackageFragmentRoot pfr : jp .getPackageFragmentRoots ()) {
142- if (pfr .getPath ().toPortableString ().equals (folderName )) {
138+ if (pfr .getPath ().toPortableString ().equals (srcFolder )) {
143139 sourceDir = pfr ;
144140 return ;
145141 }
@@ -153,8 +149,9 @@ private void setSourceDirByFolderName(String folderName) {
153149 private Text createSourceFolderField (Composite parent ) {
154150 createLabel (parent , SOURCE_FOLDER_LABEL_TITLE );
155151
156- String sourceFolderFromSelection = getSourceFolderFromSelection ();
157- setSourceDirByFolderName (sourceFolderFromSelection );
152+ IPackageFragmentRoot srcFolder = WizardUtilsKt .getSourceFolderBySelection (selection );
153+ String sourceFolderFromSelection = srcFolder != null ? srcFolder .getPath ().toOSString () : DEFAULT_SOURCE_FOLDER ;
154+ sourceDir = srcFolder ;
158155
159156 final Text folder = createText (parent , sourceFolderFromSelection );
160157 folder .addModifyListener (new ModifyListener () {
@@ -186,7 +183,8 @@ public void widgetSelected(SelectionEvent e) {
186183 private Text createPackageField (Composite parent ) {
187184 createLabel (parent , PACKAGE_LABEL_TITLE );
188185
189- String packageFromSelection = getPackageFromSelection ();
186+ IPackageFragment fragment = WizardUtilsKt .getPackageBySelection (selection );
187+ String packageFromSelection = fragment != null ? fragment .getElementName () : DEFAULT_PACKAGE ;
190188 packageName = packageFromSelection ;
191189
192190 final Text pkg = createText (parent , packageFromSelection );
@@ -232,105 +230,6 @@ public void widgetSelected(SelectionEvent e) {
232230 return pkg ;
233231 }
234232
235- private String getSourceFolderFromSelection () {
236- String defaultFolder = DEFAULT_SOURCE_FOLDER ;
237-
238- if (selection .isEmpty ()) {
239- return defaultFolder ;
240- }
241-
242- Object selectedObject = selection .getFirstElement ();
243-
244- if (selectedObject instanceof IJavaElement ) {
245- IJavaElement selectedJavaElement = (IJavaElement ) selectedObject ;
246- switch (selectedJavaElement .getElementType ()) {
247- case IJavaElement .JAVA_PROJECT :
248- return getDefaultSrcByProject ((IJavaProject ) selectedJavaElement );
249-
250- case IJavaElement .PACKAGE_FRAGMENT_ROOT :
251- return selectedJavaElement .getPath ().toPortableString ();
252-
253- case IJavaElement .PACKAGE_FRAGMENT :
254- case IJavaElement .COMPILATION_UNIT :
255- return selectedJavaElement .getPath ().uptoSegment (2 ).toPortableString ();
256- }
257- } else if (selectedObject instanceof IResource ) {
258- IResource selectedResource = (IResource ) selectedObject ;
259- switch (selectedResource .getType ()) {
260- case IResource .FOLDER :
261- return getDefaultSrcByProject (JavaCore .create (selectedResource .getProject ()));
262-
263- case IResource .FILE :
264- return selectedResource .getFullPath ().uptoSegment (2 ).toPortableString ();
265- }
266- }
267-
268- return defaultFolder ;
269- }
270-
271- private String getPackageFromSelection () {
272- String defaultPackage = DEFAULT_PACKAGE ;
273-
274- if (selection .isEmpty ()) {
275- return defaultPackage ;
276- }
277-
278- Object selectedObject = selection .getFirstElement ();
279-
280- if (selectedObject instanceof IJavaElement ) {
281- IJavaElement selectedJavaElement = (IJavaElement ) selectedObject ;
282- switch (selectedJavaElement .getElementType ()) {
283- case IJavaElement .PACKAGE_FRAGMENT :
284- return selectedJavaElement .getElementName ();
285-
286- case IJavaElement .COMPILATION_UNIT :
287- try {
288- return selectedJavaElement .getJavaProject ().findPackageFragment (
289- selectedJavaElement .getPath ().makeAbsolute ().removeLastSegments (1 )).getElementName ();
290- } catch (Exception e ) {
291- KotlinLogger .logAndThrow (e );
292- }
293- break ;
294- }
295- } else if (selectedObject instanceof IResource ) {
296- IResource selectedResource = (IResource ) selectedObject ;
297- switch (selectedResource .getType ()) {
298- case IResource .FILE :
299- try {
300- return JavaCore .create (selectedResource .getProject ()).findPackageFragment (
301- selectedResource .getFullPath ().makeAbsolute ().removeLastSegments (1 )).getElementName ();
302- } catch (Exception e ) {
303- KotlinLogger .logAndThrow (e );
304- }
305- break ;
306- }
307- }
308-
309- return defaultPackage ;
310- }
311-
312- private String getDefaultSrcByProject (IJavaProject javaProject ) {
313- String destFolder = javaProject .getPath ().toPortableString ();
314-
315- IClasspathEntry [] classpathEntries = null ;
316- try {
317- classpathEntries = javaProject .getRawClasspath ();
318- } catch (JavaModelException e ) {
319- KotlinLogger .logAndThrow (e );
320-
321- return destFolder ;
322- }
323-
324- for (IClasspathEntry classpathEntry : classpathEntries ) {
325- if (classpathEntry .getEntryKind () == IClasspathEntry .CPE_SOURCE ) {
326- destFolder += IPath .SEPARATOR + classpathEntry .getPath ().segment (1 );
327- break ;
328- }
329- }
330-
331- return destFolder ;
332- }
333-
334233 @ Override
335234 protected String createErrorMessage () {
336235 if (sourceDir != null && packageNameIsLegal ()) {
0 commit comments