Skip to main content



      Home
Home » Eclipse Projects » Plugin Development Environment (PDE) » Refactoring: extract nested class
Refactoring: extract nested class [message #658098] Sun, 06 March 2011 07:02 Go to next message
Eclipse UserFriend
Is there a way to extract an inner class (a class fully declared inside
another, not an anonymous one) to make it an external, public one (in
it's own .java file)?
I would have thought it an obvious thing, but I couldn't find a way to
do it (aside from the usual copy & paste, obviously).
I see "Convert anonymous class to nested", but not a "Convert nested to
top level".
There are several commands sounding promising (e.g.: "Extract Class" or
"Move Type to new file"), but they do not do what I need.
Where did You hide this command? ;)

TiA
Mauro
Re: Refactoring: extract nested class [message #658108 is a reply to message #658098] Sun, 06 March 2011 09:57 Go to previous messageGo to next message
Eclipse UserFriend
On Sun, 2011-03-06 at 13:02 +0100, Mauro Condarelli wrote:
> Is there a way to extract an inner class (a class fully declared inside
> another, not an anonymous one) to make it an external, public one (in
> it's own .java file)?
> I would have thought it an obvious thing, but I couldn't find a way to
> do it (aside from the usual copy & paste, obviously).
> I see "Convert anonymous class to nested", but not a "Convert nested to
> top level".
> There are several commands sounding promising (e.g.: "Extract Class" or
> "Move Type to new file"), but they do not do what I need.
> Where did You hide this command? ;)
>
> TiA
> Mauro

The Move Type to new file refactoring provides this function. You say
that it doesn't do what you need. Could you provide an example of
exactly what you are trying to do and why Move Type doesn't match your
needs?
Re: Refactoring: extract nested class [message #658111 is a reply to message #658108] Sun, 06 March 2011 11:18 Go to previous message
Eclipse UserFriend
Il 06/03/2011 15:57, David Wegener ha scritto:
> On Sun, 2011-03-06 at 13:02 +0100, Mauro Condarelli wrote:
>> Is there a way to extract an inner class (a class fully declared inside
>> another, not an anonymous one) to make it an external, public one (in
>> it's own .java file)?
>> I would have thought it an obvious thing, but I couldn't find a way to
>> do it (aside from the usual copy & paste, obviously).
>> I see "Convert anonymous class to nested", but not a "Convert nested to
>> top level".
>> There are several commands sounding promising (e.g.: "Extract Class" or
>> "Move Type to new file"), but they do not do what I need.
>> Where did You hide this command? ;)
>>
>> TiA
>> Mauro
>
> The Move Type to new file refactoring provides this function. You say
> that it doesn't do what you need. Could you provide an example of
> exactly what you are trying to do and why Move Type doesn't match your
> needs?
>
In an Editor generated automatically by EMF ("Generate editor") I have the following:


public class WorldEditor
extends MultiPageEditorPart
implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider {

...

public IContentOutlinePage getContentOutlinePage() {
if (contentOutlinePage == null) {
// The content outline is just a tree.
//
class MyContentOutlinePage extends ContentOutlinePage {
@Override
public void createControl(Composite parent) {
super.createControl(parent);
contentOutlineViewer = getTreeViewer();
contentOutlineViewer.addSelectionChangedListener(this);
....

I want to extract MyContentOutlinePage to its own file.

if I select it (I tried moving cursor on it, selecting the name and selecting the whole class) and then do Refactor->Move Type to New File... I get:

Operation Unavailable
To activate this refactoring, please select the name of a member type or a secondary type.

What am I doing wrong?

TiA
Mauro
Previous Topic:Building eclipse 3.6.2 for win64
Next Topic:Content of http://download.eclipse.org/eclipse/updates/3.6 ?
Goto Forum:
  


Current Time: Fri Jul 25 17:56:51 EDT 2025

Powered by FUDForum. Page generated in 0.13928 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top