[ANN] Lineage 2.0

Still in time for the plugin contest, but much later than anticipated, I
  present Lineage 2.0

Feature highlights

Easy subclassing:
Position the cursor on the class or reference to a class you want to
subclass and press Alt+Enter. An "Extend Class" intention appears, which
when invoked, allows you to specify name, visibility (default: public)
and destination package (default: the package from which you invoked
it). All fields and button are accessible via the keyboard for the
highest efficiency.

Easy subclassing by inner class:
Creating an inner subclass of another class is just as easy as creating
a regular subclass. Press Alt+Enter on a class or reference to a class
and invoke "Extend Class with Inner Class". The Extend Class dialog now
allows you to specify a destination class (using IDEA's familiar Class
Chooser dialog) and if the created class should be declared "static".

Highlight Usages in File for "import":
Invoking highlight (default CtrlShiftF7) usages on the "import"
keyword, will highlight all references to the class imported in the open
file. When the import statement is an "on demand" import, a chooser will
first popup, allowing you to choose which class to highlight or to
highlight all imported classes.

Highlight Usages in File for "extends" and "implements":
Easily highlight all implementing or overriding methods in the file by
invoking Highlight Usages in File on an "extends" or "implements"
keyword. If necessary a chooser will pop up where you can specify from
which class you want the implementing/overriding members highlighted


This plugin is compatible with IntelliJ IDEA 6.0 and can be found in the
Aviable list of the Plugins dialog in the Settings of IntelliJ IDEA.
Alternatively it can be downloaded from:
http://plugins.intellij.net/plugin/?id=104

2 comments

Cool ;)

Some first observations:

- The OK button is always named "Extend", even when when implementing an interface

- Shift-Tab doesn't work in the text Editors (I've got a fix available if you're
interested)

- When implementing an interface, it would be nice if the implementing class was
made abstract when not all methods are chosen to be implemented

- I get the exception below when invoking "Implement Abstract Class with Inner
Class" on this code fragment:

public PsiElementVisitor buildVisitor(ProblemsHolder holder, boolean isOnTheFly) {
  return new PsiElement(SubClassDialog.java:125)

- I'm also not sure if I like that the intentions are available on
class-references, this kinda clutters the intention-list, but isn't a really big
deal.


Sascha

0

Another issue: The overridden "Highlight Usages in File" action doesn't work any
more in injected language contexts. You need to manually copy the flag from
"isInInjectedContext()" for the action to work properly.

Sascha

0

Please sign in to leave a comment.