Package org.cfeclipse.cfml.editors.actions

Source Code of org.cfeclipse.cfml.editors.actions.InsertGetAndSetAction

package org.cfeclipse.cfml.editors.actions;

import java.util.Iterator;

import org.cfeclipse.cfml.dialogs.GetterAndSetterDialog;
import org.cfeclipse.cfml.editors.CFMLEditor;
import org.cfeclipse.cfml.editors.ICFDocument;
import org.cfeclipse.cfml.editors.partitioner.CFEPartition;
import org.cfeclipse.cfml.editors.partitioner.CFEPartitioner;
import org.cfeclipse.cfml.editors.partitioner.scanners.CFPartitionScanner;
import org.cfeclipse.cfml.parser.CFNodeList;
import org.cfeclipse.cfml.parser.CFParser;
import org.cfeclipse.cfml.parser.docitems.DocItem;
import org.cfeclipse.cfml.parser.docitems.TagItem;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.text.TextSelection;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IEditorActionDelegate;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.texteditor.ITextEditor;

public class InsertGetAndSetAction implements IWorkbenchWindowActionDelegate,IEditorActionDelegate{
  protected ICFDocument cfdocument = null;
  protected ITextSelection docselection = null;
  protected ITextEditor editor = null;
 
 
  public InsertGetAndSetAction(){
    super();
  }
  public void setActiveEditor(IAction action, IEditorPart targetEditor) {
    if( targetEditor instanceof ITextEditor || targetEditor instanceof CFMLEditor ){
     
      editor = (ITextEditor)targetEditor;
      IDocument doc = editor.getDocumentProvider().getDocument(editor.getEditorInput());
      cfdocument = (ICFDocument) doc;
      docselection = (ITextSelection) editor.getSelectionProvider().getSelection();
    }
   
  }

  public void run(IAction action) {
   
   
    //We open a dialog, with a tree
    GetterAndSetterDialog dialog = new GetterAndSetterDialog(editor.getSite().getShell());
    dialog.open();
   
    int startpos = docselection.getOffset();
    int len = Math.max(docselection.getLength(),1);
   
    //check what type of document this is
   
   
    DocItem docroot  = cfdocument.getCFDocument().getDocumentRoot();
   
    CFNodeList nodes = docroot.selectNodes("//cfproperty");
    
    Iterator nodeIter = nodes.iterator();
   
    while(nodeIter.hasNext()){
      TagItem property = (TagItem)nodeIter.next();
      StringBuffer sb = new StringBuffer();
     
      String propName = property.getAttributeValue("name");
      String propType = property.getAttributeValue("type");
     
      sb.append("<cffunction name=\"" + createFunctionName("get", propName) + "\" returntype=\"" + propType + "\">\n");
      sb.append("\t<cfreturn "  + propName + " />\n");
      sb.append("</cffunction>");
      sb.append("\n\n");
     
      sb.append("<cffunction name=\"" + createFunctionName("set", propName) + "\" returntype=\"void\">\n");
      sb.append("\t<cfargument name=\"" + createFunctionName("", propName) + "\" type=\"" + propType + "\">\n");
      sb.append("\t\t<cfset " + propName + " = arguments."+ createFunctionName("", propName) + " />\n");
      sb.append("</cffunction>");
     
     
     
     
     
      System.out.println(sb.toString());
      /*
       * <cffunction name="get<bla>" returntype="void">
       *     <cfargument name="" type="">
       * </cffunction>
       *
       */
     
    }
  }

  private String createFunctionName(String type, String propertyName){
    //Need to check the propertyName
    String dspProperty = propertyName;
    if(propertyName.split("\\.").length > 1){
      dspProperty = propertyName.split("\\.")[1];
    }
   
    String firstChar = (dspProperty.charAt(0) + "").toUpperCase();
    String retGetName = type + firstChar + dspProperty.subSequence(1, dspProperty.length());
    return retGetName;
  }
 
  public void selectionChanged(IAction action, ISelection selection){
    if(editor != null){
      setActiveEditor(null,  editor.getSite().getPage().getActiveEditor());
    }
  }

  public void dispose() {
    // TODO Auto-generated method stub
   
  }
  public void init(IWorkbenchWindow window) {
    IEditorPart activeEditor = window.getActivePage().getActiveEditor();
    if(activeEditor instanceof ITextEditor){
      editor = (ITextEditor)activeEditor;
    }
   
  }

}
TOP

Related Classes of org.cfeclipse.cfml.editors.actions.InsertGetAndSetAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.