package org.nocket.gen.domain.visitor.properties; import gengui.domain.AbstractDomainReference; import java.io.File; import org.apache.commons.lang.BooleanUtils; import org.nocket.gen.domain.DMDWebGenContext; import org.nocket.gen.domain.element.ButtonElement; import org.nocket.gen.domain.element.CheckboxPropertyElement; import org.nocket.gen.domain.element.ChoicerPropertyElement; import org.nocket.gen.domain.element.HeadlineElement; import org.nocket.gen.domain.element.HiddenPropertyElement; import org.nocket.gen.domain.element.MultivalueButtonElement; import org.nocket.gen.domain.element.MultivalueColumnElement; import org.nocket.gen.domain.element.MultivaluePropertyElement; import org.nocket.gen.domain.element.ResourceElement; import org.nocket.gen.domain.element.SimplePropertyElement; /** * This visitor creates property file according to Wicket rules. The file is * placed in the same package as the domain class. If file does exists, new * properties will be added to it. Old properties are never overwritten. * * @author stang01 * @param <E> the element type */ public class WicketPropertiesVisitor<E extends AbstractDomainReference> extends AbstractPropertiesVisitor<E> { /** * Instantiates a new wicket properties visitor. * * @param context the context */ public WicketPropertiesVisitor(DMDWebGenContext<E> context) { super(context); } /* (non-Javadoc) * @see org.nocket.gen.domain.visitor.properties.AbstractPropertiesVisitor#getPropertiesFile() */ @Override protected File getPropertiesFile() { String basePath = getContext().getSrcDir() + File.separator + getContext().getFileAndClassNameStrategy().getFilenamePartAsPath(); File panelJavaSourceFile = new File(basePath + "Panel.java"); File panelPropertiesFile = new File(basePath + "Panel.properties"); if (panelPropertiesFile.exists() || panelJavaSourceFile.exists() || BooleanUtils.isTrue(getContext().getGeneratePanel())) { return panelPropertiesFile; } else { String pagePropertiesFile = basePath + "Page.properties"; return new File(pagePropertiesFile); } } /* (non-Javadoc) * @see org.nocket.gen.domain.visitor.DomainElementVisitorI#visitSimpleProperty(org.nocket.gen.domain.element.SimplePropertyElement) */ @Override public void visitSimpleProperty(SimplePropertyElement<E> e) { addProperty(e.getWicketId(), e.getPromptFormatted()); } /* (non-Javadoc) * @see org.nocket.gen.domain.visitor.DomainElementVisitorI#visitChoicerProperty(org.nocket.gen.domain.element.ChoicerPropertyElement) */ @Override public void visitChoicerProperty(ChoicerPropertyElement<E> e) { addProperty(e.getWicketId(), e.getPromptFormatted()); } /* (non-Javadoc) * @see org.nocket.gen.domain.visitor.DomainElementVisitorI#visitCheckboxProperty(org.nocket.gen.domain.element.CheckboxPropertyElement) */ @Override public void visitCheckboxProperty(CheckboxPropertyElement<E> e) { addProperty(e.getWicketId(), e.getPromptFormatted()); } /* (non-Javadoc) * @see org.nocket.gen.domain.visitor.DomainElementVisitorI#visitButton(org.nocket.gen.domain.element.ButtonElement) */ @Override public void visitButton(ButtonElement<E> e) { addProperty(e.getWicketId(), e.getPrompt()); } /* (non-Javadoc) * @see org.nocket.gen.domain.visitor.DomainElementVisitorI#visitResource(org.nocket.gen.domain.element.ResourceElement) */ @Override public void visitResource(ResourceElement<E> e) { addProperty(e.getWicketId(), e.getPrompt()); } /* (non-Javadoc) * @see org.nocket.gen.domain.visitor.DomainElementVisitorI#visitFieldsetOpen(org.nocket.gen.domain.element.HeadlineElement) */ @Override public void visitFieldsetOpen(HeadlineElement<E> e) { addProperty(e.getWicketId() + ".text", e.getPrompt()); } /* (non-Javadoc) * @see org.nocket.gen.domain.visitor.DomainElementVisitorI#visitMultivalueProperty(org.nocket.gen.domain.element.MultivaluePropertyElement) */ @Override public void visitMultivalueProperty(MultivaluePropertyElement<E> e) { for (MultivalueColumnElement column : e.getColumns()) { addProperty(column.getPropertiesWicketId(), column.getPrompt()); } for (MultivalueButtonElement<E> b : e.getButtonElements()) { boolean buttonAdded = addProperty(b.getPropertiesWicketId(), b.getPrompt()); if (buttonAdded) { // only add icon properties initially addProperty(b.getPropertiesWicketId() + ".icon.enabled", ""); addProperty(b.getPropertiesWicketId() + ".icon.disabled", ""); } } } /* (non-Javadoc) * @see org.nocket.gen.domain.visitor.DomainElementVisitorI#visitFieldsetClose() */ @Override public void visitFieldsetClose() { // ignore } /* (non-Javadoc) * @see org.nocket.gen.domain.visitor.DomainElementVisitorI#visitHiddenProperty(org.nocket.gen.domain.element.HiddenPropertyElement) */ @Override public void visitHiddenProperty(HiddenPropertyElement<E> e) { // ignore } }