Package org.dyno.visual.swing.parser.listener

Source Code of org.dyno.visual.swing.parser.listener.AnonymousInnerModel

/************************************************************************************
* Copyright (c) 2008 William Chen.                                                 *
*                                                                                  *
* All rights reserved. This program and the accompanying materials are made        *
* available under the terms of the Eclipse Public License v1.0 which accompanies   *
* this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html *
*                                                                                  *
* Use is subject to the terms of Eclipse Public License v1.0.                      *
*                                                                                  *
* Contributors:                                                                    *
*     William Chen - initial API and implementation.                               *
************************************************************************************/

package org.dyno.visual.swing.parser.listener;

import java.beans.EventSetDescriptor;
import java.beans.MethodDescriptor;
import java.util.List;

import org.dyno.visual.swing.plugin.spi.WidgetAdapter;
import org.eclipse.jdt.core.dom.AnonymousClassDeclaration;
import org.eclipse.jdt.core.dom.Block;
import org.eclipse.jdt.core.dom.ClassInstanceCreation;
import org.eclipse.jdt.core.dom.MethodDeclaration;
import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
import org.eclipse.jdt.core.dom.rewrite.ImportRewrite;

@SuppressWarnings("unchecked")
public class AnonymousInnerModel extends AbstractInnerModel {
  private AnonymousClassDeclaration anonymousClass;
 
  public void addMethod(MethodDescriptor methodDesc) {
    CodeSnippet content = new CodeSnippet(adapter, eventSet, methodDesc, "");
    methods.put(methodDesc, content);
  }

 
  protected void createNewListenerContent(ImportRewrite imports, StringBuilder builder, boolean hasAdapter){
    if (anonymousClass != null) {
      builder.append(anonymousClass.toString());
    } else {
      createNewListener(imports, builder, hasAdapter);
    }
  }

 
  protected boolean parse(WidgetAdapter adapter, EventSetDescriptor esd, MethodDescriptor mListener, ClassInstanceCreation instanceExpression) {
    AnonymousClassDeclaration acd = instanceExpression.getAnonymousClassDeclaration();
    anonymousClass = acd;
    List bodys = acd.bodyDeclarations();
    for (Object element : bodys) {
      if (element instanceof MethodDeclaration) {
        if (processListenerMethod(adapter, esd, mListener, (MethodDeclaration) element)) {
          return true;
        }
      }
    }
    return false;
  }

 
  protected IEventMethod getDelegatingContent(WidgetAdapter adapter, EventSetDescriptor eventSet, MethodDescriptor methodDesc, Block body, SingleVariableDeclaration var) {
    List statements = body.statements();
    StringBuilder builder = new StringBuilder();
    for (Object stmt : statements) {
      builder.append(stmt.toString());
    }
    return new CodeSnippet(adapter, eventSet, methodDesc, builder.toString());
  }
}
TOP

Related Classes of org.dyno.visual.swing.parser.listener.AnonymousInnerModel

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.