views:

410

answers:

3

Is there a CTRL+space -like way of "auto-constructing" a switch case around a given Java Enum in Eclipse? I'd like a stub with all Enum cases...

EDIT: Dupe of http://stackoverflow.com/questions/868261/is-there-a-template-or-something-for-generating-a-switch-statement-for-java-enum ? :-(

A: 

You can add your own code templates using: Windows->Preferences->Java->Editor->Templates.

Once you have added a code template, type enough characters of the template name to make it unique; type CTRL+Space; and your defined code will replace the template name characters.

The template for switch is predefined in Eclipse Galileo. sw+CTRL+Space should give you a switch statement. You might have to adapt an existing template to give you the switch-enum combination.

richj
A: 

I don't know if it's possible to do this as a template, because the template would have to know which enum type you were using. But you could write a little script to print out the statement for you, and then just copy its output into your source file.

public class SwitchWriter {
  public static void printSwitchStatement(String varName, Class<?> E) {
    System.out.format("switch(%s) {\n", varName);
    for (Object o : E.getEnumConstants()) {
      System.out.format("case %s:\n  // TODO: Auto-generated switch statement stub\n  break;\n", o);
    }
    System.out.println("default:\n  // TODO: Auto-generated switch statement stub\n}");
  }
}

Output of SwitchWriter.printSwitchStatement("action", java.awt.Desktop.Action.class):

switch(action) {
case OPEN:
  // TODO: Auto-generated switch statement stub
  break;
case EDIT:
  // TODO: Auto-generated switch statement stub
  break;
case PRINT:
  // TODO: Auto-generated switch statement stub
  break;
case MAIL:
  // TODO: Auto-generated switch statement stub
  break;
case BROWSE:
  // TODO: Auto-generated switch statement stub
  break;
default:
  // TODO: Auto-generated switch statement stub
}
MatrixFrog
+4  A: 

It has been in Eclipse for ages. It's admittedly only a bit hard to find. First start with

switch (myEnum) {

}

Then go with your cursor to the line with the switch keyword and press Ctrl+1 and choose Add missing case statements. This way it will insert any possible case. You'd expect this option to be available inside the statement blocks as well, but no.

alt text

BalusC
Eclipse has so many features that are awesome but hard to find. Are there any good quick references? There was a recent SO thread that had a lot of good tips.
Jonathon
@Jon: http://stackoverflow.com/questions/54886/hidden-features-of-eclipse
BalusC