01: // WebOnSwing - Web Application Framework
02: //Copyright (C) 2003 Fernando Damian Petrola
03: //
04: //This library is free software; you can redistribute it and/or
05: //modify it under the terms of the GNU Lesser General Public
06: //License as published by the Free Software Foundation; either
07: //version 2.1 of the License, or (at your option) any later version.
08: //
09: //This library is distributed in the hope that it will be useful,
10: //but WITHOUT ANY WARRANTY; without even the implied warranty of
11: //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12: //Lesser General Public License for more details.
13: //
14: //You should have received a copy of the GNU Lesser General Public
15: //License along with this library; if not, write to the Free Software
16: //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17:
18: package net.ar.webonswing.managers.contributors;
19:
20: import net.ar.webonswing.*;
21: import net.ar.webonswing.helpers.*;
22: import net.ar.webonswing.wrapping.*;
23:
24: /**
25: * Visita cada componente de una ventana, busca por cada uno el contribuidor que
26: * le corresponda y lo asigna a una propiedad del JComponent
27: *
28: * @author Fernando Damian Petrola
29: */
30: public class ComponentContributorAssigner extends
31: ComponentVisitorAdapter {
32: public static final String CONTRIBUTOR_NAME_PROPERTY = "theContributor";
33: protected String theWindowName;
34: protected ContributorManager theContributionStateManager = new ContributorManager();
35:
36: public ComponentContributorAssigner(VisualComponent aTopComponent) {
37: theWindowName = aTopComponent.getTypeId();
38: }
39:
40: public void assignContributorsFrom(VisualComponent aComponent) {
41: aComponent.accept(this );
42: }
43:
44: public void visitComponentBegin(VisualComponent aComponent) {
45: ComponentContributor theContributor = getContributor(aComponent);
46: aComponent.setContributor(theContributor);
47: theContributor.setComponent(aComponent);
48: }
49:
50: protected ComponentContributor getContributor(
51: VisualComponent aComponent) {
52: ComponentContributor result = aComponent.getContributor();
53:
54: if (result == null) {
55: String theContributorClassName = (String) aComponent
56: .getClientProperty(CONTRIBUTOR_NAME_PROPERTY);
57:
58: if (theContributorClassName == null
59: || theContributorClassName.equals("")) {
60: theContributorClassName = theContributionStateManager
61: .getContributorClassNameFromTreeState(
62: theWindowName, aComponent.getName());
63:
64: if (theContributorClassName == null
65: || theContributorClassName.equals(""))
66: theContributorClassName = WosFramework
67: .getInstance().getContributorManager()
68: .getDefaultComponentContributorClassName(
69: aComponent.getUIClassID());
70: }
71:
72: try {
73: result = (ComponentContributor) Class.forName(
74: theContributorClassName).newInstance();
75: } catch (Exception e) {
76: throw new WebOnSwingException(e);
77: }
78: }
79:
80: return result;
81: }
82: }
|