/** * Copyright 2004-2016 Riccardo Solmi. All rights reserved. * This file is part of the Whole Platform. * * The Whole Platform is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The Whole Platform is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with the Whole Platform. If not, see <http://www.gnu.org/licenses/>. */ package org.whole.lang.java.ui.editparts; import org.eclipse.draw2d.IFigure; import org.eclipse.gef.EditPart; import org.whole.lang.java.model.*; import org.whole.lang.java.visitors.JavaIdentityDefaultVisitor; import org.whole.lang.model.adapters.IEntityAdapter; import org.whole.lang.ui.editparts.AbstractCompositePart; import org.whole.lang.ui.editparts.AbstractTextualEntityPart; import org.whole.lang.ui.editparts.CommaSeparatedCompositeFlowPart; import org.whole.lang.ui.editparts.CompositeColumnPart; import org.whole.lang.ui.editparts.CompositeColumnWithPlaceholderPart; import org.whole.lang.ui.editparts.CompositeRowPart; import org.whole.lang.ui.editparts.IEditPartFactory; import org.whole.lang.ui.editparts.KeywordDataEntityPart; import org.whole.lang.ui.editparts.ContentDataEntityPart; import org.whole.lang.ui.editparts.ContentTextualEntityPart; import org.whole.lang.ui.editparts.PlaceHolderPart; import org.whole.lang.ui.figures.LabelFactory; import org.whole.lang.ui.figures.QuotedStringFigure; import org.whole.lang.ui.figures.StringSeparatedCompositeRowFigure; import org.whole.lang.ui.notations.text.editparts.DefaultTextualPartFactory; /** * @author Riccardo Solmi */ public class JavaTextualPartFactoryVisitor extends JavaIdentityDefaultVisitor implements IEditPartFactory { protected EditPart part, context; public EditPart createEditPart(EditPart context, Object modelEntity) { this.context = context; ((IJavaEntity) modelEntity).accept(this); return part; } public boolean visitAdapter(IEntityAdapter entity) { part = new PlaceHolderPart(); return super.visitAdapter(entity); } public void visit(IJavaEntity entity) { part = DefaultTextualPartFactory.instance().createEditPart(context, entity); } public void visit(JavaSystemSoftware entity) { part = new CompositeColumnPart(); } @Override public void visit(LambdaExpression entity) { part = new LambdaExpressionPart(); } @Override public void visit(ConstructorReference entity) { part = new ConstructorReferencePart(); } @Override public void visit(ExpressionMethodReference entity) { part = new ExpressionMethodReferencePart(); } @Override public void visit(SuperMethodReference entity) { part = new SuperMethodReferencePart(); } @Override public void visit(TypeMethodReference entity) { part = new TypeMethodReferencePart(); } public void visit(InstanceofExpression entity) { part = new InstanceofExpressionPart(); } public void visit(IfStatement entity) { part = new IfStatementPart(); } @Override public void visit(SimpleName entity) { part = new ContentTextualEntityPart(); } @Override public void visit(QualifiedName entity) { part = new ContentTextualEntityPart(); } @Override public void visit(SimpleType entity) { part = new ContentDataEntityPart(); } @Override public void visit(QualifiedType entity) { part = new ContentDataEntityPart(); } public void visit(ArrayType entity) { part = new ArrayTypePart(); } public void visit(SingleVariableDeclaration entity) { part = new SingleVariableDeclarationPart(); } public void visit(SwitchCase entity) { part = new SwitchCasePart(); } public void visit(SwitchDefault entity) { part = new SwitchDefaultPart(); } public void visit(TypeParameter entity) { part = new TypeParameterPart(); } public void visit(ContinueStatement entity) { part = new ContinueStatementPart(); } public void visit(FieldDeclaration entity) { part = new FieldDeclarationPart(); } public void visit(NormalAnnotation entity) { part = new NormalAnnotationPart(); } public void visit(AnnotationTypeMemberDeclaration entity) { part = new AnnotationTypeMemberDeclarationPart(); } public void visit(SynchronizedStatement entity) { part = new SynchronizedStatementPart(); } public void visit(PrefixExpression entity) { part = new PrefixExpressionPart(); } public void visit(ParameterizedType entity) { part = new ParameterizedTypePart(); } @Override public void visit(AnnotatedType entity) { part = new AnnotatedTypePart(); } public void visit(SuperConstructorInvocation entity) { part = new SuperConstructorInvocationPart(); } public void visit(ExpressionStatement entity) { part = new ExpressionStatementPart(); } public void visit(NullLiteral entity) { part = new NullLiteralPart(); } public void visit(StringLiteral entity) { part = new AbstractTextualEntityPart() { public IFigure createFigure() { return new QuotedStringFigure(LabelFactory.createIdentifier()); } }; } @Override public void visit(CharLiteral entity) { part = new ContentDataEntityPart(); } @Override public void visit(BooleanLiteral entity) { part = new KeywordDataEntityPart(); } @Override public void visit(ByteLiteral entity) { part = new ContentDataEntityPart(); } @Override public void visit(DoubleLiteral entity) { part = new ContentDataEntityPart(); } @Override public void visit(FloatLiteral entity) { part = new ContentDataEntityPart(); } @Override public void visit(IntLiteral entity) { part = new ContentDataEntityPart(); } @Override public void visit(LongLiteral entity) { part = new ContentDataEntityPart(); } @Override public void visit(ShortLiteral entity) { part = new ContentDataEntityPart(); } public void visit(MethodDeclaration entity) { part = new MethodDeclarationPart(); } public void visit(ConstructorDeclaration entity) { part = new ConstructorDeclarationPart(); } public void visit(ThrowStatement entity) { part = new ThrowStatementPart(); } public void visit(ClassDeclaration entity) { part = new ClassDeclarationPart(); } public void visit(InterfaceDeclaration entity) { part = new InterfaceDeclarationPart(); } public void visit(PrimitiveType entity) { part = new KeywordDataEntityPart(); } public void visit(TypeLiteral entity) { part = new TypeLiteralPart(); } public void visit(MethodInvocation entity) { part = new MethodInvocationPart(); } public void visit(FieldAccess entity) { part = new FieldAccessPart(); } public void visit(ArrayInitializer entity) { part = new ArrayInitializerPart(); } public void visit(WhileStatement entity) { part = new WhileStatementPart(); } public void visit(LabeledStatement entity) { part = new LabeledStatementPart(); } public void visit(TryStatement entity) { part = new TryStatementPart(); } @Override public void visit(UnionType entity) { part = new AbstractCompositePart() { @Override protected IFigure createFigure() { return new StringSeparatedCompositeRowFigure("|", 8); } }; } @Override public void visit(IntersectionType entity) { part = new AbstractCompositePart() { @Override protected IFigure createFigure() { return new StringSeparatedCompositeRowFigure("&", 16); } }; } public void visit(Assignment entity) { part = new AssignmentPart(); } public void visit(WildcardType entity) { part = new WildcardTypePart(); } public void visit(SuperFieldAccess entity) { part = new SuperFieldAccessPart(); } public void visit(VariableDeclarationStatement entity) { part = new VariableDeclarationStatementPart(); } public void visit(VariableDeclarationExpression entity) { part = new VariableDeclarationExpressionPart(); } public void visit(MemberValuePair entity) { part = new MemberValuePairPart(); } public void visit(AnnotationTypeDeclaration entity) { part = new AnnotationTypeDeclarationPart(); } public void visit(ConstructorInvocation entity) { part = new ConstructorInvocationPart(); } public void visit(DoStatement entity) { part = new DoStatementPart(); } public void visit(VariableDeclarationFragment entity) { part = new VariableDeclarationFragmentPart(); } public void visit(AssertStatement entity) { part = new AssertStatementPart(); } public void visit(CastExpression entity) { part = new CastExpressionPart(); } public void visit(EnumDeclaration entity) { part = new EnumDeclarationPart(); } public void visit(ReturnStatement entity) { part = new ReturnStatementPart(); } public void visit(EnhancedForStatement entity) { part = new EnhancedForStatementPart(); } public void visit(EmptyStatement entity) { part = new EmptyStatementPart(); } public void visit(CatchClause entity) { part = new CatchClausePart(); } public void visit(ArrayCreation entity) { part = new ArrayCreationPart(); } public void visit(ParenthesizedExpression entity) { part = new ParenthesizedExpressionPart(); } public void visit(Modifier entity) { part = new KeywordDataEntityPart(); } public void visit(ImportDeclaration entity) { part = new ImportDeclarationPart(); } public void visit(ThisExpression entity) { part = new ThisExpressionPart(); } public void visit(TypeDeclarationStatement entity) { part = new TypeDeclarationStatementPart(); } public void visit(ClassInstanceCreation entity) { part = new ClassInstanceCreationPart(); } public void visit(PackageDeclaration entity) { part = new PackageDeclarationPart(); } public void visit(MethodRefParameter entity) { part = new MethodRefParameterPart(); } public void visit(MethodRefParameters entity) { part = new CommaSeparatedCompositeFlowPart(); } public void visit(MethodRef entity) { part = new MethodRefPart(); } public void visit(MemberRef entity) { part = new MemberRefPart(); } public void visit(DocElements entity) { part = new DocElementsPart(); } public void visit(TagName entity) { super.visit(entity); } public void visit(TagElement entity) { part = new TagElementPart(); } public void visit(Tags entity) { part = new CompositeColumnWithPlaceholderPart(); } public void visit(Javadoc entity) { part = new JavadocPart(!(context instanceof PackageDeclarationPart)); } public void visit(ArrayAccess entity) { part = new ArrayAccessPart(); } public void visit(BlockComment entity) { part = new BlockCommentPart(); } public void visit(EnumConstants entity) { part = new CommaSeparatedCompositeFlowPart(); } public void visit(EnumConstantDeclaration entity) { part = new EnumConstantDeclarationPart(); } public void visit(LineComment entity) { part = new LineCommentPart(); } public void visit(InfixExpression entity) { part = new InfixExpressionPart(); } public void visit(BreakStatement entity) { part = new BreakStatementPart(); } public void visit(SuperMethodInvocation entity) { part = new SuperMethodInvocationPart(); } public void visit(AnonymousClassDeclaration entity) { part = new CompositeColumnPart(); } public void visit(MarkerAnnotation entity) { part = new MarkerAnnotationPart(); } public void visit(SwitchStatement entity) { part = new SwitchStatementPart(); } public void visit(Block entity) { part = new CompositeColumnPart(); } public void visit(PostfixExpression entity) { part = new PostfixExpressionPart(); } public void visit(Initializer entity) { part = new InitializerPart(); } public void visit(SingleMemberAnnotation entity) { part = new SingleMemberAnnotationPart(); } public void visit(ForStatement entity) { part = new ForStatementPart(); } public void visit(CompilationUnit entity) { part = new CompilationUnitPart(); } public void visit(ConditionalExpression entity) { part = new ConditionalExpressionPart(); } public void visit(MemberValuePairs entity) { part = new CommaSeparatedCompositeFlowPart(); } public void visit(Types entity) { part = new CommaSeparatedCompositeFlowPart(); } public void visit(Arguments entity) { part = new CommaSeparatedCompositeFlowPart(); } public void visit(Parameters entity) { part = new CommaSeparatedCompositeFlowPart(); } public void visit(BodyDeclarations entity) { part = new CompositeColumnWithPlaceholderPart(); } public void visit(CatchClauses entity) { part = new CompositeColumnPart(); } public void visit(AssignmentOperator entity) { part = new ContentDataEntityPart(); } public void visit(VariableDeclarationFragments entity) { part = new CommaSeparatedCompositeFlowPart(); } public void visit(InfixOperator entity) { part = new ContentDataEntityPart(); } public void visit(Statements entity) { part = new CompositeColumnPart(); } public void visit(PostfixOperator entity) { part = new ContentDataEntityPart(); } public void visit(Expressions entity) { part = new ExpressionsPart(); } public void visit(ImportDeclarations entity) { part = new CompositeColumnPart(); } public void visit(TypeDeclarations entity) { part = new CompositeColumnPart(); } public void visit(ExtendedModifiers entity) { part = new CompositeRowPart(); } public void visit(Annotations entity) { part = new CompositeRowPart(); } public void visit(TypeParameters entity) { part = new CommaSeparatedCompositeFlowPart(); } }