ActionsForNode.java :  » IDE » tIDE » tide » syntaxtree » Java Open Source

Java Open Source » IDE » tIDE 
tIDE » tide » syntaxtree » ActionsForNode.java
package tide.syntaxtree;

import snow.utils.gui.NamedAction;
import java.awt.event.ActionEvent;
import snow.datatransfer.ClipboardUtils;
import javaparser.*;
import java.util.*;
import javax.swing.Action;

public final class ActionsForNode
{
   private ActionsForNode()
   {
   }

   /** These actions copies some text to clipboard...
   */
   public static List<Action> generateActionsForNode(ParserTreeNode tn)
   {
      List<Action> actions = new ArrayList<Action>();

      if(tn instanceof FieldNode)
      {
         final FieldNode fn = (FieldNode) tn;
         actions.add(new NamedAction("Create getter and setter for "+fn.name+" (CTRL+V to paste it)"){
           public void actionPerformed(ActionEvent ae) {
             generateGetSetCodeToClipboard(fn, true, true);
           }
         });
         actions.add(new NamedAction("Create getter for "+fn.name+" (CTRL+V to paste it)"){
           public void actionPerformed(ActionEvent ae) {
             generateGetSetCodeToClipboard(fn, true, false);
           }
         });
         actions.add(new NamedAction("Create setter for "+fn.name+" (CTRL+V to paste it)"){
           public void actionPerformed(ActionEvent ae) {
             generateGetSetCodeToClipboard(fn, false, true);
           }
         });

         actions.add(new NamedAction("Copy name (CTRL+V to paste it)"){
           public void actionPerformed(ActionEvent ae) {
             ClipboardUtils.copyToClipboard(fn.name);
           }
         });
      }
      if(tn instanceof MethodNode)
      {
         MethodNode mn = (MethodNode) tn;
         // ?
      }
      else if(tn instanceof EnumNode)
      {
         // not very useful in this syntax
         final EnumNode fn = (EnumNode) tn;
         actions.add(new NamedAction("Create enum switch for "+fn.name+" (CTRL+V to paste it)"){
           public void actionPerformed(ActionEvent ae) {
             //generateCodeToClipboard(fn, true, true);
             StringBuilder sb = new StringBuilder("   switch (xxx) {\n");
             for(int i=0; i<fn.getChildCount(); i++)
             {
                if(fn.getChildNodeAt(i) instanceof EnumConstantNode)
                {
                  sb.append("\n      case "+fn.getChildNodeAt(i)+": break;");  // usually break or return...
                }
             }
             sb.append("\n      default: break; // ");
             sb.append("\n   }");
             ClipboardUtils.copyToClipboard(sb.toString());
           }
         });
      }

      return actions;
   }

  /** Getter and/or setter.
  */
  private static void generateGetSetCodeToClipboard(FieldNode field, boolean getter, boolean setter)
  {
      String nameUp = field.name;
      if(Character.isLowerCase(nameUp.charAt(0)))
      {
         nameUp = Character.toUpperCase(nameUp.charAt(0)) + nameUp.substring(1);
      }
      StringBuilder sb = new StringBuilder();
      if(getter)
      {
        sb.append("   public ");
        if(field.isStatic()) sb.append("static ");  // static is already final
        else sb.append("final ");  // added Oct2007
        sb.append(field.type+" get"+nameUp+"() { return "+field.name+"; }\r\n");
      }

      if(setter)
      {
        sb.append("   public ");
        if(field.isStatic()) sb.append("static ");
        else sb.append("final ");  // added Oct2007
        sb.append("void set"+nameUp+"("+field.type+" a) { this."+field.name+" = a; }");
      }

      ClipboardUtils.copyToClipboard(sb.toString().trim());
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.