Hi Adrian*,*
OFBiz uses ServiceLoader.load() to load widget loaders from [CLASSPATH]/META-INF/services/org.ofbiz.widget.WidgetLoader That means it allows us to create a custom widget loader with custom widgets However, your ModelWidgetVisitor class limit a number of widget classes to send to visit() method. I think it should use generic type like this: public interface ModelWidgetVisitor<T extends ModelWidget> { void visit(T t); } Best Regards, Chatree Srichart On Sat, Nov 1, 2014 at 11:57 PM, <[hidden email]> wrote: > Author: adrianc > Date: Sat Nov 1 16:57:07 2014 > New Revision: 1635990 > > URL: http://svn.apache.org/r1635990 > Log: > Add a screen widget model visitor. This will enable us to externalize a > lot of unrelated code that has been included in the models, as well as > provide a cleaner API for the renderers. > > Added: > > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java > Modified: > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java > > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java > > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java > > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java > > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java > > Modified: > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java?rev=1635990&r1=1635989&r2=1635990&view=diff > > ============================================================================== > --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java > (original) > +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java Sat > Nov 1 16:57:07 2014 > @@ -53,6 +53,8 @@ public abstract class ModelWidget implem > this.startLine = ((Integer) > widgetElement.getUserData("startLine")).intValue(); > } > > + public abstract void accept(ModelWidgetVisitor visitor); > + > /** > * Returns the widget's name. > * @return Widget's name > > Added: > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java?rev=1635990&view=auto > > ============================================================================== > --- > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java > (added) > +++ > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java > Sat Nov 1 16:57:07 2014 > @@ -0,0 +1,87 @@ > > +/******************************************************************************* > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, > + * software distributed under the License is distributed on an > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + * KIND, either express or implied. See the License for the > + * specific language governing permissions and limitations > + * under the License. > + > *******************************************************************************/ > +package org.ofbiz.widget; > + > +import org.ofbiz.widget.form.ModelForm; > +import org.ofbiz.widget.menu.ModelMenu; > +import org.ofbiz.widget.screen.HtmlWidget; > +import org.ofbiz.widget.screen.IterateSectionWidget; > +import org.ofbiz.widget.screen.ModelScreen; > +import org.ofbiz.widget.screen.ModelScreenWidget; > +import org.ofbiz.widget.tree.ModelTree; > + > +/** > + * A <code>ModelWidget</code> visitor. > + */ > +public interface ModelWidgetVisitor { > + > + void visit(HtmlWidget htmlWidget); > + > + void visit(HtmlWidget.HtmlTemplate htmlTemplate); > + > + void visit(HtmlWidget.HtmlTemplateDecorator htmlTemplateDecorator); > + > + void visit(HtmlWidget.HtmlTemplateDecoratorSection > htmlTemplateDecoratorSection); > + > + void visit(IterateSectionWidget iterateSectionWidget); > + > + void visit(ModelForm modelForm); > + > + void visit(ModelMenu modelMenu); > + > + void visit(ModelScreen modelScreen); > + > + void visit(ModelScreenWidget.ColumnContainer columnContainer); > + > + void visit(ModelScreenWidget.Container container); > + > + void visit(ModelScreenWidget.Content content); > + > + void visit(ModelScreenWidget.DecoratorScreen decoratorScreen); > + > + void visit(ModelScreenWidget.DecoratorSection decoratorSection); > + > + void visit(ModelScreenWidget.DecoratorSectionInclude > decoratorSectionInclude); > + > + void visit(ModelScreenWidget.Form form); > + > + void visit(ModelScreenWidget.HorizontalSeparator horizontalSeparator); > + > + void visit(ModelScreenWidget.Image image); > + > + void visit(ModelScreenWidget.IncludeScreen includeScreen); > + > + void visit(ModelScreenWidget.Label label); > + > + void visit(ModelScreenWidget.Link link); > + > + void visit(ModelScreenWidget.Menu menu); > + > + void visit(ModelScreenWidget.PlatformSpecific platformSpecific); > + > + void visit(ModelScreenWidget.PortalPage portalPage); > + > + void visit(ModelScreenWidget.Screenlet screenlet); > + > + void visit(ModelScreenWidget.Section section); > + > + void visit(ModelScreenWidget.Tree tree); > + > + void visit(ModelTree modelTree); > +} > > Modified: > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=1635990&r1=1635989&r2=1635990&view=diff > > ============================================================================== > --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java > (original) > +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java > Sat Nov 1 16:57:07 2014 > @@ -57,6 +57,7 @@ import org.ofbiz.service.ModelParam; > import org.ofbiz.service.ModelService; > import org.ofbiz.webapp.control.ConfigXMLReader; > import org.ofbiz.widget.ModelWidget; > +import org.ofbiz.widget.ModelWidgetVisitor; > import org.ofbiz.widget.WidgetWorker; > import org.w3c.dom.Element; > > @@ -3318,4 +3319,9 @@ public class ModelForm extends ModelWidg > > return allRequestsUsed; > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > Modified: > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java?rev=1635990&r1=1635989&r2=1635990&view=diff > > ============================================================================== > --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java > (original) > +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java > Sat Nov 1 16:57:07 2014 > @@ -30,6 +30,7 @@ import org.ofbiz.base.util.UtilXml; > import org.ofbiz.base.util.collections.FlexibleMapAccessor; > import org.ofbiz.base.util.string.FlexibleStringExpander; > import org.ofbiz.widget.ModelWidget; > +import org.ofbiz.widget.ModelWidgetVisitor; > import org.w3c.dom.Element; > > /** > @@ -598,4 +599,9 @@ public class ModelMenu extends ModelWidg > public void setExtraIndex(String extraIndex) { > this.extraIndex = FlexibleStringExpander.getInstance(extraIndex); > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > Modified: > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java?rev=1635990&r1=1635989&r2=1635990&view=diff > > ============================================================================== > --- > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java > (original) > +++ > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java > Sat Nov 1 16:57:07 2014 > @@ -37,6 +37,7 @@ import org.ofbiz.base.util.collections.M > import org.ofbiz.base.util.string.FlexibleStringExpander; > import org.ofbiz.base.util.template.FreeMarkerWorker; > import org.ofbiz.widget.ModelWidget; > +import org.ofbiz.widget.ModelWidgetVisitor; > import org.ofbiz.widget.html.HtmlWidgetRenderer; > import org.w3c.dom.Element; > > @@ -200,6 +201,11 @@ public class HtmlWidget extends ModelScr > public void renderWidgetString(Appendable writer, Map<String, > Object> context, ScreenStringRenderer screenStringRenderer) { > renderHtmlTemplate(writer, this.locationExdr, context); > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static class HtmlTemplateDecorator extends ModelScreenWidget { > @@ -240,6 +246,11 @@ public class HtmlWidget extends ModelScr > renderHtmlTemplate(writer, this.locationExdr, context); > contextMs.pop(); > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static class HtmlTemplateDecoratorSection extends > ModelScreenWidget { > @@ -259,5 +270,15 @@ public class HtmlWidget extends ModelScr > // render sub-widgets > renderSubWidgetsString(this.subWidgets, writer, context, > screenStringRenderer); > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > + } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > } > } > > Modified: > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java?rev=1635990&r1=1635989&r2=1635990&view=diff > > ============================================================================== > --- > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java > (original) > +++ > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java > Sat Nov 1 16:57:07 2014 > @@ -44,6 +44,7 @@ import org.ofbiz.base.util.collections.F > import org.ofbiz.base.util.collections.MapStack; > import org.ofbiz.base.util.string.FlexibleStringExpander; > import org.ofbiz.webapp.control.RequestHandler; > +import org.ofbiz.widget.ModelWidgetVisitor; > import org.ofbiz.widget.WidgetWorker; > import org.w3c.dom.Element; > > @@ -351,6 +352,11 @@ public class IterateSectionWidget extend > writer.append("</table>\n"); > > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > > > Modified: > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java?rev=1635990&r1=1635989&r2=1635990&view=diff > > ============================================================================== > --- > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java > (original) > +++ > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java > Sat Nov 1 16:57:07 2014 > @@ -38,6 +38,7 @@ import org.ofbiz.service.LocalDispatcher > import org.ofbiz.webapp.control.ConfigXMLReader; > import org.ofbiz.widget.ModelWidget; > import org.ofbiz.widget.ModelWidgetAction; > +import org.ofbiz.widget.ModelWidgetVisitor; > import org.w3c.dom.Element; > > /** > @@ -75,6 +76,11 @@ public class ModelScreen extends ModelWi > this.section = new ModelScreenWidget.Section(this, > sectionElement, true); > } > > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > + > public String getTransactionTimeout() { > return transactionTimeoutExdr.getOriginal(); > } > > Modified: > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java?rev=1635990&r1=1635989&r2=1635990&view=diff > > ============================================================================== > --- > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java > (original) > +++ > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java > Sat Nov 1 16:57:07 2014 > @@ -46,6 +46,7 @@ import org.ofbiz.entity.condition.Entity > import org.ofbiz.entity.util.EntityQuery; > import org.ofbiz.widget.ModelWidget; > import org.ofbiz.widget.ModelWidgetAction; > +import org.ofbiz.widget.ModelWidgetVisitor; > import org.ofbiz.widget.PortalPageWorker; > import org.ofbiz.widget.WidgetFactory; > import org.ofbiz.widget.WidgetWorker; > @@ -241,6 +242,11 @@ public abstract class ModelScreenWidget > } > > @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > + > + @Override > public void renderWidgetString(Appendable writer, Map<String, > Object> context, ScreenStringRenderer screenStringRenderer) throws > GeneralException, IOException { > // check the condition, if there is one > boolean condTrue = true; > @@ -331,6 +337,11 @@ public abstract class ModelScreenWidget > } > > @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > + > + @Override > public void renderWidgetString(Appendable writer, Map<String, > Object> context, ScreenStringRenderer screenStringRenderer) throws > GeneralException, IOException { > try { > screenStringRenderer.renderColumnContainer(writer, > context, this); > @@ -437,6 +448,11 @@ public abstract class ModelScreenWidget > public List<ModelScreenWidget> getSubWidgets() { > return subWidgets; > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class Screenlet extends ModelScreenWidget { > @@ -594,6 +610,11 @@ public abstract class ModelScreenWidget > public Menu getTabMenu() { > return this.tabMenu; > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class HorizontalSeparator extends > ModelScreenWidget { > @@ -619,6 +640,11 @@ public abstract class ModelScreenWidget > public String getStyle(Map<String, Object> context) { > return this.styleExdr.expandString(context); > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class IncludeScreen extends ModelScreenWidget { > @@ -685,6 +711,11 @@ public abstract class ModelScreenWidget > // defaults to false, so anything but true is false > return "true".equals(shareScopeString); > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class DecoratorScreen extends ModelScreenWidget { > @@ -744,6 +775,11 @@ public abstract class ModelScreenWidget > public Map<String, DecoratorSection> getSectionMap() { > return sectionMap; > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class DecoratorSection extends ModelScreenWidget { > @@ -766,6 +802,11 @@ public abstract class ModelScreenWidget > public List<ModelScreenWidget> getSubWidgets() { > return subWidgets; > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class DecoratorSectionInclude extends > ModelScreenWidget { > @@ -796,6 +837,11 @@ public abstract class ModelScreenWidget > } > } > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class Label extends ModelScreenWidget { > @@ -846,6 +892,11 @@ public abstract class ModelScreenWidget > public String getStyle(Map<String, Object> context) { > return this.styleExdr.expandString(context); > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class Form extends ModelScreenWidget { > @@ -921,6 +972,11 @@ public abstract class ModelScreenWidget > // defaults to false, so anything but true is false > return "true".equals(shareScopeString); > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class Tree extends ModelScreenWidget { > @@ -998,6 +1054,11 @@ public abstract class ModelScreenWidget > // defaults to false, so anything but true is false > return "true".equals(shareScopeString); > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class PlatformSpecific extends ModelScreenWidget { > @@ -1037,6 +1098,11 @@ public abstract class ModelScreenWidget > subWidget.renderWidgetString(writer, context, > screenStringRenderer); > } > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class Content extends ModelScreenWidget { > @@ -1175,6 +1241,11 @@ public abstract class ModelScreenWidget > public String getBorder() { > return this.border; > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class SubContent extends ModelScreenWidget { > @@ -1236,6 +1307,12 @@ public abstract class ModelScreenWidget > public boolean xmlEscape() { > return this.xmlEscape; > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + // TODO Auto-generated method stub > + > + } > } > > public static final class Menu extends ModelScreenWidget { > @@ -1282,6 +1359,11 @@ public abstract class ModelScreenWidget > public String getLocation(Map<String, Object> context) { > return this.locationExdr.expandString(context); > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class Link extends ModelScreenWidget { > @@ -1455,6 +1537,11 @@ public abstract class ModelScreenWidget > > return fullParameterMap; > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class Image extends ModelScreenWidget { > @@ -1531,6 +1618,11 @@ public abstract class ModelScreenWidget > public String getUrlMode() { > return this.urlMode; > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > public static final class PortalPage extends ModelScreenWidget { > @@ -1696,6 +1788,11 @@ public abstract class ModelScreenWidget > public String getUsePrivate() { > return Boolean.toString(this.usePrivate); > } > + > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > } > > } > > Modified: > ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java?rev=1635990&r1=1635989&r2=1635990&view=diff > > ============================================================================== > --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java > (original) > +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java > Sat Nov 1 16:57:07 2014 > @@ -50,6 +50,7 @@ import org.ofbiz.entity.model.ModelField > import org.ofbiz.entity.util.EntityListIterator; > import org.ofbiz.service.LocalDispatcher; > import org.ofbiz.widget.ModelWidget; > +import org.ofbiz.widget.ModelWidgetVisitor; > import org.ofbiz.widget.WidgetWorker; > import org.ofbiz.widget.screen.ModelScreen; > import org.ofbiz.widget.screen.ScreenFactory; > @@ -1106,6 +1107,9 @@ public class ModelTree extends ModelWidg > } > } > } > -} > - > > + @Override > + public void accept(ModelWidgetVisitor visitor) { > + visitor.visit(this); > + } > +} > > > |
Thank you for pointing that out. I will look into it.
Adrian Crum Sandglass Software www.sandglass-software.com On 11/2/2014 10:03 AM, Chatree Srichart wrote: > Hi Adrian*,* > > OFBiz uses ServiceLoader.load() to load widget loaders from > > [CLASSPATH]/META-INF/services/org.ofbiz.widget.WidgetLoader > > That means it allows us to create a custom widget loader with custom widgets > > However, your ModelWidgetVisitor class limit a number of widget classes to > send to visit() method. > > I think it should use generic type like this: > > public interface ModelWidgetVisitor<T extends ModelWidget> { > > void visit(T t); > } > > Best Regards, > Chatree Srichart > > On Sat, Nov 1, 2014 at 11:57 PM, <[hidden email]> wrote: > >> Author: adrianc >> Date: Sat Nov 1 16:57:07 2014 >> New Revision: 1635990 >> >> URL: http://svn.apache.org/r1635990 >> Log: >> Add a screen widget model visitor. This will enable us to externalize a >> lot of unrelated code that has been included in the models, as well as >> provide a cleaner API for the renderers. >> >> Added: >> >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java >> >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java >> >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java >> >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java >> >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java >> (original) >> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java Sat >> Nov 1 16:57:07 2014 >> @@ -53,6 +53,8 @@ public abstract class ModelWidget implem >> this.startLine = ((Integer) >> widgetElement.getUserData("startLine")).intValue(); >> } >> >> + public abstract void accept(ModelWidgetVisitor visitor); >> + >> /** >> * Returns the widget's name. >> * @return Widget's name >> >> Added: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java?rev=1635990&view=auto >> >> ============================================================================== >> --- >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java >> (added) >> +++ >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java >> Sat Nov 1 16:57:07 2014 >> @@ -0,0 +1,87 @@ >> >> +/******************************************************************************* >> + * Licensed to the Apache Software Foundation (ASF) under one >> + * or more contributor license agreements. See the NOTICE file >> + * distributed with this work for additional information >> + * regarding copyright ownership. The ASF licenses this file >> + * to you under the Apache License, Version 2.0 (the >> + * "License"); you may not use this file except in compliance >> + * with the License. You may obtain a copy of the License at >> + * >> + * http://www.apache.org/licenses/LICENSE-2.0 >> + * >> + * Unless required by applicable law or agreed to in writing, >> + * software distributed under the License is distributed on an >> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY >> + * KIND, either express or implied. See the License for the >> + * specific language governing permissions and limitations >> + * under the License. >> + >> *******************************************************************************/ >> +package org.ofbiz.widget; >> + >> +import org.ofbiz.widget.form.ModelForm; >> +import org.ofbiz.widget.menu.ModelMenu; >> +import org.ofbiz.widget.screen.HtmlWidget; >> +import org.ofbiz.widget.screen.IterateSectionWidget; >> +import org.ofbiz.widget.screen.ModelScreen; >> +import org.ofbiz.widget.screen.ModelScreenWidget; >> +import org.ofbiz.widget.tree.ModelTree; >> + >> +/** >> + * A <code>ModelWidget</code> visitor. >> + */ >> +public interface ModelWidgetVisitor { >> + >> + void visit(HtmlWidget htmlWidget); >> + >> + void visit(HtmlWidget.HtmlTemplate htmlTemplate); >> + >> + void visit(HtmlWidget.HtmlTemplateDecorator htmlTemplateDecorator); >> + >> + void visit(HtmlWidget.HtmlTemplateDecoratorSection >> htmlTemplateDecoratorSection); >> + >> + void visit(IterateSectionWidget iterateSectionWidget); >> + >> + void visit(ModelForm modelForm); >> + >> + void visit(ModelMenu modelMenu); >> + >> + void visit(ModelScreen modelScreen); >> + >> + void visit(ModelScreenWidget.ColumnContainer columnContainer); >> + >> + void visit(ModelScreenWidget.Container container); >> + >> + void visit(ModelScreenWidget.Content content); >> + >> + void visit(ModelScreenWidget.DecoratorScreen decoratorScreen); >> + >> + void visit(ModelScreenWidget.DecoratorSection decoratorSection); >> + >> + void visit(ModelScreenWidget.DecoratorSectionInclude >> decoratorSectionInclude); >> + >> + void visit(ModelScreenWidget.Form form); >> + >> + void visit(ModelScreenWidget.HorizontalSeparator horizontalSeparator); >> + >> + void visit(ModelScreenWidget.Image image); >> + >> + void visit(ModelScreenWidget.IncludeScreen includeScreen); >> + >> + void visit(ModelScreenWidget.Label label); >> + >> + void visit(ModelScreenWidget.Link link); >> + >> + void visit(ModelScreenWidget.Menu menu); >> + >> + void visit(ModelScreenWidget.PlatformSpecific platformSpecific); >> + >> + void visit(ModelScreenWidget.PortalPage portalPage); >> + >> + void visit(ModelScreenWidget.Screenlet screenlet); >> + >> + void visit(ModelScreenWidget.Section section); >> + >> + void visit(ModelScreenWidget.Tree tree); >> + >> + void visit(ModelTree modelTree); >> +} >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java >> (original) >> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java >> Sat Nov 1 16:57:07 2014 >> @@ -57,6 +57,7 @@ import org.ofbiz.service.ModelParam; >> import org.ofbiz.service.ModelService; >> import org.ofbiz.webapp.control.ConfigXMLReader; >> import org.ofbiz.widget.ModelWidget; >> +import org.ofbiz.widget.ModelWidgetVisitor; >> import org.ofbiz.widget.WidgetWorker; >> import org.w3c.dom.Element; >> >> @@ -3318,4 +3319,9 @@ public class ModelForm extends ModelWidg >> >> return allRequestsUsed; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java >> (original) >> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java >> Sat Nov 1 16:57:07 2014 >> @@ -30,6 +30,7 @@ import org.ofbiz.base.util.UtilXml; >> import org.ofbiz.base.util.collections.FlexibleMapAccessor; >> import org.ofbiz.base.util.string.FlexibleStringExpander; >> import org.ofbiz.widget.ModelWidget; >> +import org.ofbiz.widget.ModelWidgetVisitor; >> import org.w3c.dom.Element; >> >> /** >> @@ -598,4 +599,9 @@ public class ModelMenu extends ModelWidg >> public void setExtraIndex(String extraIndex) { >> this.extraIndex = FlexibleStringExpander.getInstance(extraIndex); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java >> (original) >> +++ >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java >> Sat Nov 1 16:57:07 2014 >> @@ -37,6 +37,7 @@ import org.ofbiz.base.util.collections.M >> import org.ofbiz.base.util.string.FlexibleStringExpander; >> import org.ofbiz.base.util.template.FreeMarkerWorker; >> import org.ofbiz.widget.ModelWidget; >> +import org.ofbiz.widget.ModelWidgetVisitor; >> import org.ofbiz.widget.html.HtmlWidgetRenderer; >> import org.w3c.dom.Element; >> >> @@ -200,6 +201,11 @@ public class HtmlWidget extends ModelScr >> public void renderWidgetString(Appendable writer, Map<String, >> Object> context, ScreenStringRenderer screenStringRenderer) { >> renderHtmlTemplate(writer, this.locationExdr, context); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static class HtmlTemplateDecorator extends ModelScreenWidget { >> @@ -240,6 +246,11 @@ public class HtmlWidget extends ModelScr >> renderHtmlTemplate(writer, this.locationExdr, context); >> contextMs.pop(); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static class HtmlTemplateDecoratorSection extends >> ModelScreenWidget { >> @@ -259,5 +270,15 @@ public class HtmlWidget extends ModelScr >> // render sub-widgets >> renderSubWidgetsString(this.subWidgets, writer, context, >> screenStringRenderer); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> + } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> } >> } >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java >> (original) >> +++ >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java >> Sat Nov 1 16:57:07 2014 >> @@ -44,6 +44,7 @@ import org.ofbiz.base.util.collections.F >> import org.ofbiz.base.util.collections.MapStack; >> import org.ofbiz.base.util.string.FlexibleStringExpander; >> import org.ofbiz.webapp.control.RequestHandler; >> +import org.ofbiz.widget.ModelWidgetVisitor; >> import org.ofbiz.widget.WidgetWorker; >> import org.w3c.dom.Element; >> >> @@ -351,6 +352,11 @@ public class IterateSectionWidget extend >> writer.append("</table>\n"); >> >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java >> (original) >> +++ >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java >> Sat Nov 1 16:57:07 2014 >> @@ -38,6 +38,7 @@ import org.ofbiz.service.LocalDispatcher >> import org.ofbiz.webapp.control.ConfigXMLReader; >> import org.ofbiz.widget.ModelWidget; >> import org.ofbiz.widget.ModelWidgetAction; >> +import org.ofbiz.widget.ModelWidgetVisitor; >> import org.w3c.dom.Element; >> >> /** >> @@ -75,6 +76,11 @@ public class ModelScreen extends ModelWi >> this.section = new ModelScreenWidget.Section(this, >> sectionElement, true); >> } >> >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> + >> public String getTransactionTimeout() { >> return transactionTimeoutExdr.getOriginal(); >> } >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java >> (original) >> +++ >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java >> Sat Nov 1 16:57:07 2014 >> @@ -46,6 +46,7 @@ import org.ofbiz.entity.condition.Entity >> import org.ofbiz.entity.util.EntityQuery; >> import org.ofbiz.widget.ModelWidget; >> import org.ofbiz.widget.ModelWidgetAction; >> +import org.ofbiz.widget.ModelWidgetVisitor; >> import org.ofbiz.widget.PortalPageWorker; >> import org.ofbiz.widget.WidgetFactory; >> import org.ofbiz.widget.WidgetWorker; >> @@ -241,6 +242,11 @@ public abstract class ModelScreenWidget >> } >> >> @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> + >> + @Override >> public void renderWidgetString(Appendable writer, Map<String, >> Object> context, ScreenStringRenderer screenStringRenderer) throws >> GeneralException, IOException { >> // check the condition, if there is one >> boolean condTrue = true; >> @@ -331,6 +337,11 @@ public abstract class ModelScreenWidget >> } >> >> @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> + >> + @Override >> public void renderWidgetString(Appendable writer, Map<String, >> Object> context, ScreenStringRenderer screenStringRenderer) throws >> GeneralException, IOException { >> try { >> screenStringRenderer.renderColumnContainer(writer, >> context, this); >> @@ -437,6 +448,11 @@ public abstract class ModelScreenWidget >> public List<ModelScreenWidget> getSubWidgets() { >> return subWidgets; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class Screenlet extends ModelScreenWidget { >> @@ -594,6 +610,11 @@ public abstract class ModelScreenWidget >> public Menu getTabMenu() { >> return this.tabMenu; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class HorizontalSeparator extends >> ModelScreenWidget { >> @@ -619,6 +640,11 @@ public abstract class ModelScreenWidget >> public String getStyle(Map<String, Object> context) { >> return this.styleExdr.expandString(context); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class IncludeScreen extends ModelScreenWidget { >> @@ -685,6 +711,11 @@ public abstract class ModelScreenWidget >> // defaults to false, so anything but true is false >> return "true".equals(shareScopeString); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class DecoratorScreen extends ModelScreenWidget { >> @@ -744,6 +775,11 @@ public abstract class ModelScreenWidget >> public Map<String, DecoratorSection> getSectionMap() { >> return sectionMap; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class DecoratorSection extends ModelScreenWidget { >> @@ -766,6 +802,11 @@ public abstract class ModelScreenWidget >> public List<ModelScreenWidget> getSubWidgets() { >> return subWidgets; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class DecoratorSectionInclude extends >> ModelScreenWidget { >> @@ -796,6 +837,11 @@ public abstract class ModelScreenWidget >> } >> } >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class Label extends ModelScreenWidget { >> @@ -846,6 +892,11 @@ public abstract class ModelScreenWidget >> public String getStyle(Map<String, Object> context) { >> return this.styleExdr.expandString(context); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class Form extends ModelScreenWidget { >> @@ -921,6 +972,11 @@ public abstract class ModelScreenWidget >> // defaults to false, so anything but true is false >> return "true".equals(shareScopeString); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class Tree extends ModelScreenWidget { >> @@ -998,6 +1054,11 @@ public abstract class ModelScreenWidget >> // defaults to false, so anything but true is false >> return "true".equals(shareScopeString); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class PlatformSpecific extends ModelScreenWidget { >> @@ -1037,6 +1098,11 @@ public abstract class ModelScreenWidget >> subWidget.renderWidgetString(writer, context, >> screenStringRenderer); >> } >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class Content extends ModelScreenWidget { >> @@ -1175,6 +1241,11 @@ public abstract class ModelScreenWidget >> public String getBorder() { >> return this.border; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class SubContent extends ModelScreenWidget { >> @@ -1236,6 +1307,12 @@ public abstract class ModelScreenWidget >> public boolean xmlEscape() { >> return this.xmlEscape; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + // TODO Auto-generated method stub >> + >> + } >> } >> >> public static final class Menu extends ModelScreenWidget { >> @@ -1282,6 +1359,11 @@ public abstract class ModelScreenWidget >> public String getLocation(Map<String, Object> context) { >> return this.locationExdr.expandString(context); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class Link extends ModelScreenWidget { >> @@ -1455,6 +1537,11 @@ public abstract class ModelScreenWidget >> >> return fullParameterMap; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class Image extends ModelScreenWidget { >> @@ -1531,6 +1618,11 @@ public abstract class ModelScreenWidget >> public String getUrlMode() { >> return this.urlMode; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class PortalPage extends ModelScreenWidget { >> @@ -1696,6 +1788,11 @@ public abstract class ModelScreenWidget >> public String getUsePrivate() { >> return Boolean.toString(this.usePrivate); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> } >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java >> (original) >> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java >> Sat Nov 1 16:57:07 2014 >> @@ -50,6 +50,7 @@ import org.ofbiz.entity.model.ModelField >> import org.ofbiz.entity.util.EntityListIterator; >> import org.ofbiz.service.LocalDispatcher; >> import org.ofbiz.widget.ModelWidget; >> +import org.ofbiz.widget.ModelWidgetVisitor; >> import org.ofbiz.widget.WidgetWorker; >> import org.ofbiz.widget.screen.ModelScreen; >> import org.ofbiz.widget.screen.ScreenFactory; >> @@ -1106,6 +1107,9 @@ public class ModelTree extends ModelWidg >> } >> } >> } >> -} >> - >> >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> +} >> >> >> > |
In reply to this post by Chatree Srichart
The same problem exists with the current ScreenStringRenderer interface.
You can extend ModelWidgetVisitor to include your custom widgets: public interface MyVisitor extends ModelWidgetVisitor { void visit(MyWidget myWidget); } and then your custom widget's accept method would look like this: @Override public void accept(ModelWidgetVisitor visitor) { if (visitor instanceof MyVisitor) { ((MyVisitor)visitor).visit(this); } } Adrian Crum Sandglass Software www.sandglass-software.com On 11/2/2014 10:03 AM, Chatree Srichart wrote: > Hi Adrian*,* > > OFBiz uses ServiceLoader.load() to load widget loaders from > > [CLASSPATH]/META-INF/services/org.ofbiz.widget.WidgetLoader > > That means it allows us to create a custom widget loader with custom widgets > > However, your ModelWidgetVisitor class limit a number of widget classes to > send to visit() method. > > I think it should use generic type like this: > > public interface ModelWidgetVisitor<T extends ModelWidget> { > > void visit(T t); > } > > Best Regards, > Chatree Srichart > > On Sat, Nov 1, 2014 at 11:57 PM, <[hidden email]> wrote: > >> Author: adrianc >> Date: Sat Nov 1 16:57:07 2014 >> New Revision: 1635990 >> >> URL: http://svn.apache.org/r1635990 >> Log: >> Add a screen widget model visitor. This will enable us to externalize a >> lot of unrelated code that has been included in the models, as well as >> provide a cleaner API for the renderers. >> >> Added: >> >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java >> >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java >> >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java >> >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java >> >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java >> (original) >> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java Sat >> Nov 1 16:57:07 2014 >> @@ -53,6 +53,8 @@ public abstract class ModelWidget implem >> this.startLine = ((Integer) >> widgetElement.getUserData("startLine")).intValue(); >> } >> >> + public abstract void accept(ModelWidgetVisitor visitor); >> + >> /** >> * Returns the widget's name. >> * @return Widget's name >> >> Added: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java?rev=1635990&view=auto >> >> ============================================================================== >> --- >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java >> (added) >> +++ >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidgetVisitor.java >> Sat Nov 1 16:57:07 2014 >> @@ -0,0 +1,87 @@ >> >> +/******************************************************************************* >> + * Licensed to the Apache Software Foundation (ASF) under one >> + * or more contributor license agreements. See the NOTICE file >> + * distributed with this work for additional information >> + * regarding copyright ownership. The ASF licenses this file >> + * to you under the Apache License, Version 2.0 (the >> + * "License"); you may not use this file except in compliance >> + * with the License. You may obtain a copy of the License at >> + * >> + * http://www.apache.org/licenses/LICENSE-2.0 >> + * >> + * Unless required by applicable law or agreed to in writing, >> + * software distributed under the License is distributed on an >> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY >> + * KIND, either express or implied. See the License for the >> + * specific language governing permissions and limitations >> + * under the License. >> + >> *******************************************************************************/ >> +package org.ofbiz.widget; >> + >> +import org.ofbiz.widget.form.ModelForm; >> +import org.ofbiz.widget.menu.ModelMenu; >> +import org.ofbiz.widget.screen.HtmlWidget; >> +import org.ofbiz.widget.screen.IterateSectionWidget; >> +import org.ofbiz.widget.screen.ModelScreen; >> +import org.ofbiz.widget.screen.ModelScreenWidget; >> +import org.ofbiz.widget.tree.ModelTree; >> + >> +/** >> + * A <code>ModelWidget</code> visitor. >> + */ >> +public interface ModelWidgetVisitor { >> + >> + void visit(HtmlWidget htmlWidget); >> + >> + void visit(HtmlWidget.HtmlTemplate htmlTemplate); >> + >> + void visit(HtmlWidget.HtmlTemplateDecorator htmlTemplateDecorator); >> + >> + void visit(HtmlWidget.HtmlTemplateDecoratorSection >> htmlTemplateDecoratorSection); >> + >> + void visit(IterateSectionWidget iterateSectionWidget); >> + >> + void visit(ModelForm modelForm); >> + >> + void visit(ModelMenu modelMenu); >> + >> + void visit(ModelScreen modelScreen); >> + >> + void visit(ModelScreenWidget.ColumnContainer columnContainer); >> + >> + void visit(ModelScreenWidget.Container container); >> + >> + void visit(ModelScreenWidget.Content content); >> + >> + void visit(ModelScreenWidget.DecoratorScreen decoratorScreen); >> + >> + void visit(ModelScreenWidget.DecoratorSection decoratorSection); >> + >> + void visit(ModelScreenWidget.DecoratorSectionInclude >> decoratorSectionInclude); >> + >> + void visit(ModelScreenWidget.Form form); >> + >> + void visit(ModelScreenWidget.HorizontalSeparator horizontalSeparator); >> + >> + void visit(ModelScreenWidget.Image image); >> + >> + void visit(ModelScreenWidget.IncludeScreen includeScreen); >> + >> + void visit(ModelScreenWidget.Label label); >> + >> + void visit(ModelScreenWidget.Link link); >> + >> + void visit(ModelScreenWidget.Menu menu); >> + >> + void visit(ModelScreenWidget.PlatformSpecific platformSpecific); >> + >> + void visit(ModelScreenWidget.PortalPage portalPage); >> + >> + void visit(ModelScreenWidget.Screenlet screenlet); >> + >> + void visit(ModelScreenWidget.Section section); >> + >> + void visit(ModelScreenWidget.Tree tree); >> + >> + void visit(ModelTree modelTree); >> +} >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java >> (original) >> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java >> Sat Nov 1 16:57:07 2014 >> @@ -57,6 +57,7 @@ import org.ofbiz.service.ModelParam; >> import org.ofbiz.service.ModelService; >> import org.ofbiz.webapp.control.ConfigXMLReader; >> import org.ofbiz.widget.ModelWidget; >> +import org.ofbiz.widget.ModelWidgetVisitor; >> import org.ofbiz.widget.WidgetWorker; >> import org.w3c.dom.Element; >> >> @@ -3318,4 +3319,9 @@ public class ModelForm extends ModelWidg >> >> return allRequestsUsed; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java >> (original) >> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java >> Sat Nov 1 16:57:07 2014 >> @@ -30,6 +30,7 @@ import org.ofbiz.base.util.UtilXml; >> import org.ofbiz.base.util.collections.FlexibleMapAccessor; >> import org.ofbiz.base.util.string.FlexibleStringExpander; >> import org.ofbiz.widget.ModelWidget; >> +import org.ofbiz.widget.ModelWidgetVisitor; >> import org.w3c.dom.Element; >> >> /** >> @@ -598,4 +599,9 @@ public class ModelMenu extends ModelWidg >> public void setExtraIndex(String extraIndex) { >> this.extraIndex = FlexibleStringExpander.getInstance(extraIndex); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java >> (original) >> +++ >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java >> Sat Nov 1 16:57:07 2014 >> @@ -37,6 +37,7 @@ import org.ofbiz.base.util.collections.M >> import org.ofbiz.base.util.string.FlexibleStringExpander; >> import org.ofbiz.base.util.template.FreeMarkerWorker; >> import org.ofbiz.widget.ModelWidget; >> +import org.ofbiz.widget.ModelWidgetVisitor; >> import org.ofbiz.widget.html.HtmlWidgetRenderer; >> import org.w3c.dom.Element; >> >> @@ -200,6 +201,11 @@ public class HtmlWidget extends ModelScr >> public void renderWidgetString(Appendable writer, Map<String, >> Object> context, ScreenStringRenderer screenStringRenderer) { >> renderHtmlTemplate(writer, this.locationExdr, context); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static class HtmlTemplateDecorator extends ModelScreenWidget { >> @@ -240,6 +246,11 @@ public class HtmlWidget extends ModelScr >> renderHtmlTemplate(writer, this.locationExdr, context); >> contextMs.pop(); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static class HtmlTemplateDecoratorSection extends >> ModelScreenWidget { >> @@ -259,5 +270,15 @@ public class HtmlWidget extends ModelScr >> // render sub-widgets >> renderSubWidgetsString(this.subWidgets, writer, context, >> screenStringRenderer); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> + } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> } >> } >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java >> (original) >> +++ >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java >> Sat Nov 1 16:57:07 2014 >> @@ -44,6 +44,7 @@ import org.ofbiz.base.util.collections.F >> import org.ofbiz.base.util.collections.MapStack; >> import org.ofbiz.base.util.string.FlexibleStringExpander; >> import org.ofbiz.webapp.control.RequestHandler; >> +import org.ofbiz.widget.ModelWidgetVisitor; >> import org.ofbiz.widget.WidgetWorker; >> import org.w3c.dom.Element; >> >> @@ -351,6 +352,11 @@ public class IterateSectionWidget extend >> writer.append("</table>\n"); >> >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java >> (original) >> +++ >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java >> Sat Nov 1 16:57:07 2014 >> @@ -38,6 +38,7 @@ import org.ofbiz.service.LocalDispatcher >> import org.ofbiz.webapp.control.ConfigXMLReader; >> import org.ofbiz.widget.ModelWidget; >> import org.ofbiz.widget.ModelWidgetAction; >> +import org.ofbiz.widget.ModelWidgetVisitor; >> import org.w3c.dom.Element; >> >> /** >> @@ -75,6 +76,11 @@ public class ModelScreen extends ModelWi >> this.section = new ModelScreenWidget.Section(this, >> sectionElement, true); >> } >> >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> + >> public String getTransactionTimeout() { >> return transactionTimeoutExdr.getOriginal(); >> } >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java >> (original) >> +++ >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java >> Sat Nov 1 16:57:07 2014 >> @@ -46,6 +46,7 @@ import org.ofbiz.entity.condition.Entity >> import org.ofbiz.entity.util.EntityQuery; >> import org.ofbiz.widget.ModelWidget; >> import org.ofbiz.widget.ModelWidgetAction; >> +import org.ofbiz.widget.ModelWidgetVisitor; >> import org.ofbiz.widget.PortalPageWorker; >> import org.ofbiz.widget.WidgetFactory; >> import org.ofbiz.widget.WidgetWorker; >> @@ -241,6 +242,11 @@ public abstract class ModelScreenWidget >> } >> >> @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> + >> + @Override >> public void renderWidgetString(Appendable writer, Map<String, >> Object> context, ScreenStringRenderer screenStringRenderer) throws >> GeneralException, IOException { >> // check the condition, if there is one >> boolean condTrue = true; >> @@ -331,6 +337,11 @@ public abstract class ModelScreenWidget >> } >> >> @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> + >> + @Override >> public void renderWidgetString(Appendable writer, Map<String, >> Object> context, ScreenStringRenderer screenStringRenderer) throws >> GeneralException, IOException { >> try { >> screenStringRenderer.renderColumnContainer(writer, >> context, this); >> @@ -437,6 +448,11 @@ public abstract class ModelScreenWidget >> public List<ModelScreenWidget> getSubWidgets() { >> return subWidgets; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class Screenlet extends ModelScreenWidget { >> @@ -594,6 +610,11 @@ public abstract class ModelScreenWidget >> public Menu getTabMenu() { >> return this.tabMenu; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class HorizontalSeparator extends >> ModelScreenWidget { >> @@ -619,6 +640,11 @@ public abstract class ModelScreenWidget >> public String getStyle(Map<String, Object> context) { >> return this.styleExdr.expandString(context); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class IncludeScreen extends ModelScreenWidget { >> @@ -685,6 +711,11 @@ public abstract class ModelScreenWidget >> // defaults to false, so anything but true is false >> return "true".equals(shareScopeString); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class DecoratorScreen extends ModelScreenWidget { >> @@ -744,6 +775,11 @@ public abstract class ModelScreenWidget >> public Map<String, DecoratorSection> getSectionMap() { >> return sectionMap; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class DecoratorSection extends ModelScreenWidget { >> @@ -766,6 +802,11 @@ public abstract class ModelScreenWidget >> public List<ModelScreenWidget> getSubWidgets() { >> return subWidgets; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class DecoratorSectionInclude extends >> ModelScreenWidget { >> @@ -796,6 +837,11 @@ public abstract class ModelScreenWidget >> } >> } >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class Label extends ModelScreenWidget { >> @@ -846,6 +892,11 @@ public abstract class ModelScreenWidget >> public String getStyle(Map<String, Object> context) { >> return this.styleExdr.expandString(context); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class Form extends ModelScreenWidget { >> @@ -921,6 +972,11 @@ public abstract class ModelScreenWidget >> // defaults to false, so anything but true is false >> return "true".equals(shareScopeString); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class Tree extends ModelScreenWidget { >> @@ -998,6 +1054,11 @@ public abstract class ModelScreenWidget >> // defaults to false, so anything but true is false >> return "true".equals(shareScopeString); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class PlatformSpecific extends ModelScreenWidget { >> @@ -1037,6 +1098,11 @@ public abstract class ModelScreenWidget >> subWidget.renderWidgetString(writer, context, >> screenStringRenderer); >> } >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class Content extends ModelScreenWidget { >> @@ -1175,6 +1241,11 @@ public abstract class ModelScreenWidget >> public String getBorder() { >> return this.border; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class SubContent extends ModelScreenWidget { >> @@ -1236,6 +1307,12 @@ public abstract class ModelScreenWidget >> public boolean xmlEscape() { >> return this.xmlEscape; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + // TODO Auto-generated method stub >> + >> + } >> } >> >> public static final class Menu extends ModelScreenWidget { >> @@ -1282,6 +1359,11 @@ public abstract class ModelScreenWidget >> public String getLocation(Map<String, Object> context) { >> return this.locationExdr.expandString(context); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class Link extends ModelScreenWidget { >> @@ -1455,6 +1537,11 @@ public abstract class ModelScreenWidget >> >> return fullParameterMap; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class Image extends ModelScreenWidget { >> @@ -1531,6 +1618,11 @@ public abstract class ModelScreenWidget >> public String getUrlMode() { >> return this.urlMode; >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> public static final class PortalPage extends ModelScreenWidget { >> @@ -1696,6 +1788,11 @@ public abstract class ModelScreenWidget >> public String getUsePrivate() { >> return Boolean.toString(this.usePrivate); >> } >> + >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> } >> >> } >> >> Modified: >> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java?rev=1635990&r1=1635989&r2=1635990&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java >> (original) >> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java >> Sat Nov 1 16:57:07 2014 >> @@ -50,6 +50,7 @@ import org.ofbiz.entity.model.ModelField >> import org.ofbiz.entity.util.EntityListIterator; >> import org.ofbiz.service.LocalDispatcher; >> import org.ofbiz.widget.ModelWidget; >> +import org.ofbiz.widget.ModelWidgetVisitor; >> import org.ofbiz.widget.WidgetWorker; >> import org.ofbiz.widget.screen.ModelScreen; >> import org.ofbiz.widget.screen.ScreenFactory; >> @@ -1106,6 +1107,9 @@ public class ModelTree extends ModelWidg >> } >> } >> } >> -} >> - >> >> + @Override >> + public void accept(ModelWidgetVisitor visitor) { >> + visitor.visit(this); >> + } >> +} >> >> >> > |
OK. I will try.
Thanks. On Sun, Nov 2, 2014 at 6:36 PM, Adrian Crum < [hidden email]> wrote: > The same problem exists with the current ScreenStringRenderer interface. > > You can extend ModelWidgetVisitor to include your custom widgets: > > public interface MyVisitor extends ModelWidgetVisitor { > void visit(MyWidget myWidget); > } > > and then your custom widget's accept method would look like this: > > @Override > public void accept(ModelWidgetVisitor visitor) { > if (visitor instanceof MyVisitor) { > ((MyVisitor)visitor).visit(this); > } > } > > > Adrian Crum > Sandglass Software > www.sandglass-software.com > > On 11/2/2014 10:03 AM, Chatree Srichart wrote: > >> Hi Adrian*,* >> >> OFBiz uses ServiceLoader.load() to load widget loaders from >> >> [CLASSPATH]/META-INF/services/org.ofbiz.widget.WidgetLoader >> >> That means it allows us to create a custom widget loader with custom >> widgets >> >> However, your ModelWidgetVisitor class limit a number of widget classes to >> send to visit() method. >> >> I think it should use generic type like this: >> >> public interface ModelWidgetVisitor<T extends ModelWidget> { >> >> void visit(T t); >> } >> >> Best Regards, >> Chatree Srichart >> >> On Sat, Nov 1, 2014 at 11:57 PM, <[hidden email]> wrote: >> >> Author: adrianc >>> Date: Sat Nov 1 16:57:07 2014 >>> New Revision: 1635990 >>> >>> URL: http://svn.apache.org/r1635990 >>> Log: >>> Add a screen widget model visitor. This will enable us to externalize a >>> lot of unrelated code that has been included in the models, as well as >>> provide a cleaner API for the renderers. >>> >>> Added: >>> >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ >>> ModelWidgetVisitor.java >>> Modified: >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ >>> ModelForm.java >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ >>> ModelMenu.java >>> >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java >>> >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ >>> IterateSectionWidget.java >>> >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ >>> ModelScreen.java >>> >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ >>> ModelScreenWidget.java >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ >>> ModelTree.java >>> >>> Modified: >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/ >>> src/org/ofbiz/widget/ModelWidget.java?rev=1635990& >>> r1=1635989&r2=1635990&view=diff >>> >>> ============================================================ >>> ================== >>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java >>> (original) >>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ModelWidget.java >>> Sat >>> Nov 1 16:57:07 2014 >>> @@ -53,6 +53,8 @@ public abstract class ModelWidget implem >>> this.startLine = ((Integer) >>> widgetElement.getUserData("startLine")).intValue(); >>> } >>> >>> + public abstract void accept(ModelWidgetVisitor visitor); >>> + >>> /** >>> * Returns the widget's name. >>> * @return Widget's name >>> >>> Added: >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ >>> ModelWidgetVisitor.java >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/ >>> src/org/ofbiz/widget/ModelWidgetVisitor.java?rev=1635990&view=auto >>> >>> ============================================================ >>> ================== >>> --- >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ >>> ModelWidgetVisitor.java >>> (added) >>> +++ >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/ >>> ModelWidgetVisitor.java >>> Sat Nov 1 16:57:07 2014 >>> @@ -0,0 +1,87 @@ >>> >>> +/********************************************************** >>> ********************* >>> + * Licensed to the Apache Software Foundation (ASF) under one >>> + * or more contributor license agreements. See the NOTICE file >>> + * distributed with this work for additional information >>> + * regarding copyright ownership. The ASF licenses this file >>> + * to you under the Apache License, Version 2.0 (the >>> + * "License"); you may not use this file except in compliance >>> + * with the License. You may obtain a copy of the License at >>> + * >>> + * http://www.apache.org/licenses/LICENSE-2.0 >>> + * >>> + * Unless required by applicable law or agreed to in writing, >>> + * software distributed under the License is distributed on an >>> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY >>> + * KIND, either express or implied. See the License for the >>> + * specific language governing permissions and limitations >>> + * under the License. >>> + >>> ************************************************************ >>> *******************/ >>> +package org.ofbiz.widget; >>> + >>> +import org.ofbiz.widget.form.ModelForm; >>> +import org.ofbiz.widget.menu.ModelMenu; >>> +import org.ofbiz.widget.screen.HtmlWidget; >>> +import org.ofbiz.widget.screen.IterateSectionWidget; >>> +import org.ofbiz.widget.screen.ModelScreen; >>> +import org.ofbiz.widget.screen.ModelScreenWidget; >>> +import org.ofbiz.widget.tree.ModelTree; >>> + >>> +/** >>> + * A <code>ModelWidget</code> visitor. >>> + */ >>> +public interface ModelWidgetVisitor { >>> + >>> + void visit(HtmlWidget htmlWidget); >>> + >>> + void visit(HtmlWidget.HtmlTemplate htmlTemplate); >>> + >>> + void visit(HtmlWidget.HtmlTemplateDecorator htmlTemplateDecorator); >>> + >>> + void visit(HtmlWidget.HtmlTemplateDecoratorSection >>> htmlTemplateDecoratorSection); >>> + >>> + void visit(IterateSectionWidget iterateSectionWidget); >>> + >>> + void visit(ModelForm modelForm); >>> + >>> + void visit(ModelMenu modelMenu); >>> + >>> + void visit(ModelScreen modelScreen); >>> + >>> + void visit(ModelScreenWidget.ColumnContainer columnContainer); >>> + >>> + void visit(ModelScreenWidget.Container container); >>> + >>> + void visit(ModelScreenWidget.Content content); >>> + >>> + void visit(ModelScreenWidget.DecoratorScreen decoratorScreen); >>> + >>> + void visit(ModelScreenWidget.DecoratorSection decoratorSection); >>> + >>> + void visit(ModelScreenWidget.DecoratorSectionInclude >>> decoratorSectionInclude); >>> + >>> + void visit(ModelScreenWidget.Form form); >>> + >>> + void visit(ModelScreenWidget.HorizontalSeparator >>> horizontalSeparator); >>> + >>> + void visit(ModelScreenWidget.Image image); >>> + >>> + void visit(ModelScreenWidget.IncludeScreen includeScreen); >>> + >>> + void visit(ModelScreenWidget.Label label); >>> + >>> + void visit(ModelScreenWidget.Link link); >>> + >>> + void visit(ModelScreenWidget.Menu menu); >>> + >>> + void visit(ModelScreenWidget.PlatformSpecific platformSpecific); >>> + >>> + void visit(ModelScreenWidget.PortalPage portalPage); >>> + >>> + void visit(ModelScreenWidget.Screenlet screenlet); >>> + >>> + void visit(ModelScreenWidget.Section section); >>> + >>> + void visit(ModelScreenWidget.Tree tree); >>> + >>> + void visit(ModelTree modelTree); >>> +} >>> >>> Modified: >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/ >>> src/org/ofbiz/widget/form/ModelForm.java?rev=1635990&r1= >>> 1635989&r2=1635990&view=diff >>> >>> ============================================================ >>> ================== >>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ >>> ModelForm.java >>> (original) >>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ >>> ModelForm.java >>> Sat Nov 1 16:57:07 2014 >>> @@ -57,6 +57,7 @@ import org.ofbiz.service.ModelParam; >>> import org.ofbiz.service.ModelService; >>> import org.ofbiz.webapp.control.ConfigXMLReader; >>> import org.ofbiz.widget.ModelWidget; >>> +import org.ofbiz.widget.ModelWidgetVisitor; >>> import org.ofbiz.widget.WidgetWorker; >>> import org.w3c.dom.Element; >>> >>> @@ -3318,4 +3319,9 @@ public class ModelForm extends ModelWidg >>> >>> return allRequestsUsed; >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> Modified: >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/ >>> src/org/ofbiz/widget/menu/ModelMenu.java?rev=1635990&r1= >>> 1635989&r2=1635990&view=diff >>> >>> ============================================================ >>> ================== >>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ >>> ModelMenu.java >>> (original) >>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ >>> ModelMenu.java >>> Sat Nov 1 16:57:07 2014 >>> @@ -30,6 +30,7 @@ import org.ofbiz.base.util.UtilXml; >>> import org.ofbiz.base.util.collections.FlexibleMapAccessor; >>> import org.ofbiz.base.util.string.FlexibleStringExpander; >>> import org.ofbiz.widget.ModelWidget; >>> +import org.ofbiz.widget.ModelWidgetVisitor; >>> import org.w3c.dom.Element; >>> >>> /** >>> @@ -598,4 +599,9 @@ public class ModelMenu extends ModelWidg >>> public void setExtraIndex(String extraIndex) { >>> this.extraIndex = FlexibleStringExpander. >>> getInstance(extraIndex); >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> Modified: >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/ >>> src/org/ofbiz/widget/screen/HtmlWidget.java?rev=1635990& >>> r1=1635989&r2=1635990&view=diff >>> >>> ============================================================ >>> ================== >>> --- >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java >>> (original) >>> +++ >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java >>> Sat Nov 1 16:57:07 2014 >>> @@ -37,6 +37,7 @@ import org.ofbiz.base.util.collections.M >>> import org.ofbiz.base.util.string.FlexibleStringExpander; >>> import org.ofbiz.base.util.template.FreeMarkerWorker; >>> import org.ofbiz.widget.ModelWidget; >>> +import org.ofbiz.widget.ModelWidgetVisitor; >>> import org.ofbiz.widget.html.HtmlWidgetRenderer; >>> import org.w3c.dom.Element; >>> >>> @@ -200,6 +201,11 @@ public class HtmlWidget extends ModelScr >>> public void renderWidgetString(Appendable writer, Map<String, >>> Object> context, ScreenStringRenderer screenStringRenderer) { >>> renderHtmlTemplate(writer, this.locationExdr, context); >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static class HtmlTemplateDecorator extends >>> ModelScreenWidget { >>> @@ -240,6 +246,11 @@ public class HtmlWidget extends ModelScr >>> renderHtmlTemplate(writer, this.locationExdr, context); >>> contextMs.pop(); >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static class HtmlTemplateDecoratorSection extends >>> ModelScreenWidget { >>> @@ -259,5 +270,15 @@ public class HtmlWidget extends ModelScr >>> // render sub-widgets >>> renderSubWidgetsString(this.subWidgets, writer, context, >>> screenStringRenderer); >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> + } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> } >>> } >>> >>> Modified: >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ >>> IterateSectionWidget.java >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/ >>> src/org/ofbiz/widget/screen/IterateSectionWidget.java?rev= >>> 1635990&r1=1635989&r2=1635990&view=diff >>> >>> ============================================================ >>> ================== >>> --- >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ >>> IterateSectionWidget.java >>> (original) >>> +++ >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ >>> IterateSectionWidget.java >>> Sat Nov 1 16:57:07 2014 >>> @@ -44,6 +44,7 @@ import org.ofbiz.base.util.collections.F >>> import org.ofbiz.base.util.collections.MapStack; >>> import org.ofbiz.base.util.string.FlexibleStringExpander; >>> import org.ofbiz.webapp.control.RequestHandler; >>> +import org.ofbiz.widget.ModelWidgetVisitor; >>> import org.ofbiz.widget.WidgetWorker; >>> import org.w3c.dom.Element; >>> >>> @@ -351,6 +352,11 @@ public class IterateSectionWidget extend >>> writer.append("</table>\n"); >>> >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> >>> >>> Modified: >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ >>> ModelScreen.java >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/ >>> src/org/ofbiz/widget/screen/ModelScreen.java?rev=1635990& >>> r1=1635989&r2=1635990&view=diff >>> >>> ============================================================ >>> ================== >>> --- >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ >>> ModelScreen.java >>> (original) >>> +++ >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ >>> ModelScreen.java >>> Sat Nov 1 16:57:07 2014 >>> @@ -38,6 +38,7 @@ import org.ofbiz.service.LocalDispatcher >>> import org.ofbiz.webapp.control.ConfigXMLReader; >>> import org.ofbiz.widget.ModelWidget; >>> import org.ofbiz.widget.ModelWidgetAction; >>> +import org.ofbiz.widget.ModelWidgetVisitor; >>> import org.w3c.dom.Element; >>> >>> /** >>> @@ -75,6 +76,11 @@ public class ModelScreen extends ModelWi >>> this.section = new ModelScreenWidget.Section(this, >>> sectionElement, true); >>> } >>> >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> + >>> public String getTransactionTimeout() { >>> return transactionTimeoutExdr.getOriginal(); >>> } >>> >>> Modified: >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ >>> ModelScreenWidget.java >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/ >>> src/org/ofbiz/widget/screen/ModelScreenWidget.java?rev= >>> 1635990&r1=1635989&r2=1635990&view=diff >>> >>> ============================================================ >>> ================== >>> --- >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ >>> ModelScreenWidget.java >>> (original) >>> +++ >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ >>> ModelScreenWidget.java >>> Sat Nov 1 16:57:07 2014 >>> @@ -46,6 +46,7 @@ import org.ofbiz.entity.condition.Entity >>> import org.ofbiz.entity.util.EntityQuery; >>> import org.ofbiz.widget.ModelWidget; >>> import org.ofbiz.widget.ModelWidgetAction; >>> +import org.ofbiz.widget.ModelWidgetVisitor; >>> import org.ofbiz.widget.PortalPageWorker; >>> import org.ofbiz.widget.WidgetFactory; >>> import org.ofbiz.widget.WidgetWorker; >>> @@ -241,6 +242,11 @@ public abstract class ModelScreenWidget >>> } >>> >>> @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> + >>> + @Override >>> public void renderWidgetString(Appendable writer, Map<String, >>> Object> context, ScreenStringRenderer screenStringRenderer) throws >>> GeneralException, IOException { >>> // check the condition, if there is one >>> boolean condTrue = true; >>> @@ -331,6 +337,11 @@ public abstract class ModelScreenWidget >>> } >>> >>> @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> + >>> + @Override >>> public void renderWidgetString(Appendable writer, Map<String, >>> Object> context, ScreenStringRenderer screenStringRenderer) throws >>> GeneralException, IOException { >>> try { >>> screenStringRenderer.renderColumnContainer(writer, >>> context, this); >>> @@ -437,6 +448,11 @@ public abstract class ModelScreenWidget >>> public List<ModelScreenWidget> getSubWidgets() { >>> return subWidgets; >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class Screenlet extends ModelScreenWidget { >>> @@ -594,6 +610,11 @@ public abstract class ModelScreenWidget >>> public Menu getTabMenu() { >>> return this.tabMenu; >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class HorizontalSeparator extends >>> ModelScreenWidget { >>> @@ -619,6 +640,11 @@ public abstract class ModelScreenWidget >>> public String getStyle(Map<String, Object> context) { >>> return this.styleExdr.expandString(context); >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class IncludeScreen extends ModelScreenWidget { >>> @@ -685,6 +711,11 @@ public abstract class ModelScreenWidget >>> // defaults to false, so anything but true is false >>> return "true".equals(shareScopeString); >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class DecoratorScreen extends >>> ModelScreenWidget { >>> @@ -744,6 +775,11 @@ public abstract class ModelScreenWidget >>> public Map<String, DecoratorSection> getSectionMap() { >>> return sectionMap; >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class DecoratorSection extends >>> ModelScreenWidget { >>> @@ -766,6 +802,11 @@ public abstract class ModelScreenWidget >>> public List<ModelScreenWidget> getSubWidgets() { >>> return subWidgets; >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class DecoratorSectionInclude extends >>> ModelScreenWidget { >>> @@ -796,6 +837,11 @@ public abstract class ModelScreenWidget >>> } >>> } >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class Label extends ModelScreenWidget { >>> @@ -846,6 +892,11 @@ public abstract class ModelScreenWidget >>> public String getStyle(Map<String, Object> context) { >>> return this.styleExdr.expandString(context); >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class Form extends ModelScreenWidget { >>> @@ -921,6 +972,11 @@ public abstract class ModelScreenWidget >>> // defaults to false, so anything but true is false >>> return "true".equals(shareScopeString); >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class Tree extends ModelScreenWidget { >>> @@ -998,6 +1054,11 @@ public abstract class ModelScreenWidget >>> // defaults to false, so anything but true is false >>> return "true".equals(shareScopeString); >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class PlatformSpecific extends >>> ModelScreenWidget { >>> @@ -1037,6 +1098,11 @@ public abstract class ModelScreenWidget >>> subWidget.renderWidgetString(writer, context, >>> screenStringRenderer); >>> } >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class Content extends ModelScreenWidget { >>> @@ -1175,6 +1241,11 @@ public abstract class ModelScreenWidget >>> public String getBorder() { >>> return this.border; >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class SubContent extends ModelScreenWidget { >>> @@ -1236,6 +1307,12 @@ public abstract class ModelScreenWidget >>> public boolean xmlEscape() { >>> return this.xmlEscape; >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + // TODO Auto-generated method stub >>> + >>> + } >>> } >>> >>> public static final class Menu extends ModelScreenWidget { >>> @@ -1282,6 +1359,11 @@ public abstract class ModelScreenWidget >>> public String getLocation(Map<String, Object> context) { >>> return this.locationExdr.expandString(context); >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class Link extends ModelScreenWidget { >>> @@ -1455,6 +1537,11 @@ public abstract class ModelScreenWidget >>> >>> return fullParameterMap; >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class Image extends ModelScreenWidget { >>> @@ -1531,6 +1618,11 @@ public abstract class ModelScreenWidget >>> public String getUrlMode() { >>> return this.urlMode; >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> public static final class PortalPage extends ModelScreenWidget { >>> @@ -1696,6 +1788,11 @@ public abstract class ModelScreenWidget >>> public String getUsePrivate() { >>> return Boolean.toString(this.usePrivate); >>> } >>> + >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> } >>> >>> } >>> >>> Modified: >>> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/ >>> src/org/ofbiz/widget/tree/ModelTree.java?rev=1635990&r1= >>> 1635989&r2=1635990&view=diff >>> >>> ============================================================ >>> ================== >>> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ >>> ModelTree.java >>> (original) >>> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ >>> ModelTree.java >>> Sat Nov 1 16:57:07 2014 >>> @@ -50,6 +50,7 @@ import org.ofbiz.entity.model.ModelField >>> import org.ofbiz.entity.util.EntityListIterator; >>> import org.ofbiz.service.LocalDispatcher; >>> import org.ofbiz.widget.ModelWidget; >>> +import org.ofbiz.widget.ModelWidgetVisitor; >>> import org.ofbiz.widget.WidgetWorker; >>> import org.ofbiz.widget.screen.ModelScreen; >>> import org.ofbiz.widget.screen.ScreenFactory; >>> @@ -1106,6 +1107,9 @@ public class ModelTree extends ModelWidg >>> } >>> } >>> } >>> -} >>> - >>> >>> + @Override >>> + public void accept(ModelWidgetVisitor visitor) { >>> + visitor.visit(this); >>> + } >>> +} >>> >>> >>> >>> >> |
Free forum by Nabble | Edit this page |