3/27/2009

Configure default target class name when copying class in Eclipse

I often copy a class and paste it into the same package, just as a template for creating another similar class. This is well supported in both NetBeans and Eclipse. The small difference between the 2 IDE is in the default name for the target class: NetBeans uses the format "Foo_1", while Eclipse uses "CopyOfFoo". Since I will never use a class like CopyOfFoo, I prefer the short form used in NetBeans.

So how to configure the default target class name in Eclipse? I searched in Eclipse preference to no avail. A grep through Eclipse installation directory reveals 2 jar files containing the string "CopyOf"

Binary file ./plugins/org.eclipse.jdt.ui_3.4.1.r341_v20080827-1100.jar matches
Binary file ./plugins/org.eclipse.wst.jsdt.ui_1.0.12.v200809172136.jar matches
The first one looks right. So I first quit Eclipse, back up plugins/org.eclipse.jdt.ui_3.4.1.r341_v20080827-1100.jar, expand it to /tmp/eclipse, and edit the file org/eclipse/jdt/internal/corext/refactoring/refactoring.properties.

Change the value of the following property from CopyOf{0} to the desired value (say X{0}):
- CopyRefactoring_cu_copyOf1=CopyOf{0}
+ CopyRefactoring_cu_copyOf1=X{0}
Update plugins/org.eclipse.jdt.ui_3.4.1.r341_v20080827-1100.jar with modified refactoring.properties:
cd /tmp/eclipse
jar uvf $HOME/eclipse/plugins/org.eclipse.jdt.ui_3.4.1.r341_v20080827-1100.jar org/eclipse/jdt/internal/corext/refactoring/refactoring.properties
Ideally, I wanted to append, rather than prepend, the extra 'X', but it turns out {0}X is resolved to a file name like Foo.javaX, not FooX.java. So Eclipse refactoring complains about it not being a valid compilation unit.

Restart Eclipse and see the new default name in action.  These steps have worked for me (my Eclipse is Version 3.4.1), but this should not be the preferred way to configure Eclipse.  I wish it can be configured in preferences.  Any changes to that plugin jar may be overwritten when it is updated from remote repository.

4 comments:

Ernesto said...

Wow!!! excellent I am learnig to use Eclipse + Java and this is the best info I have found.

see my blog also

SvendK said...

Seems like it is finally going to be changed. Funny thing, the "bug report" is from 2006, no action until 2013, with a proposed fix ready just a few days ago. Timing :D

https://bugs.eclipse.org/bugs/show_bug.cgi?id=151668

Best regards, SvendK

Steve Smith said...

Great and Useful Article.

Online Java Training

Java Online Training India

Java Online Course

Java EE course

Java EE training

Best Recommended books for Spring framework

Java Interview Questions








Java Course in Chennai

Java Online Training India

Vũ Diệu Linh said...

I enjoyed on reading your blog post. Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article. Please visit my website, Friv 4000 Games is where all the free friv games.
Friv 4000