/*******************************************************************************
* Copyright © 2011, 2013 IBM Corporation and others.
* 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
*
* Contributors:
* IBM Corporation - initial API and implementation
*
*******************************************************************************/
package org.eclipse.edt.gen.javascriptdev.templates;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.edt.gen.javascript.CommonUtilities;
import org.eclipse.edt.gen.javascript.Context;
import org.eclipse.edt.gen.javascriptdev.Constants;
import org.eclipse.edt.mof.codegen.api.TabbedWriter;
import org.eclipse.edt.mof.egl.FunctionParameter;
import org.eclipse.edt.mof.egl.Library;
import org.eclipse.edt.mof.egl.MemberAccess;
import org.eclipse.edt.mof.egl.MemberName;
import org.eclipse.edt.mof.egl.PartName;
public class MemberAccessTemplate extends org.eclipse.edt.gen.javascript.templates.MemberAccessTemplate {
public void genSetLocalFunctionVariable(MemberAccess access, Context ctx, TabbedWriter out) {
// No need to update - it's still the same object
}
@Override
public void genMemberAccess(MemberAccess expr, Context ctx, TabbedWriter out) {
super.genMemberAccess(expr, ctx, out);
Object veEdit = ctx.getParameter(Constants.PARAMETER_VE_ENABLE_EDITING);
if (veEdit != null && Boolean.TRUE.equals(veEdit) && CommonUtilities.isRUIWidget(expr.getMember().getType()) && expr.getQualifier() != null &&
((expr.getQualifier() instanceof MemberName && !(((MemberName)expr.getQualifier()).getMember() instanceof FunctionParameter)) ||
((expr.getQualifier() instanceof PartName) && ((PartName)expr.getQualifier()).getPart() instanceof Library))){
List references = (List)ctx.get( Constants.REFERENCES_WIDGETS );
if ( references == null ) {
references = new ArrayList();
ctx.put( Constants.REFERENCES_WIDGETS, references );
}
references.add( expr );
}
}
public void genReferencedWidgets(MemberAccess expr, Context ctx, TabbedWriter out) {
String idName = null;
if ( expr.getQualifier() instanceof MemberName ) {
idName = ((MemberName)expr.getQualifier()).getId();
} else if ( expr.getQualifier() instanceof PartName ) {
idName = ((PartName)expr.getQualifier()).getId();
}
if ( idName != null ) {
out.print("(function(x){ if ( x !== null && x !== undefined ) egl.setWidgetMoveable( x.");
ctx.invoke(genAccessor, expr.getMember(), ctx, out);
out.print(", \"");
out.print( idName );
out.print( ".");
ctx.invoke(genAccessor, expr.getMember(), ctx, out);
out.print( "\" );}( ");
ctx.invoke(genExpression, expr.getQualifier(), ctx, out);
out.println(" )); ");
}
}
}