1
2
3
4
5
6
7 package org.weda.tapestry;
8
9 import java.util.Map;
10 import org.apache.tapestry.AbstractComponent;
11 import org.apache.tapestry.IMarkupWriter;
12 import org.apache.tapestry.IRequestCycle;
13 import org.apache.tapestry.components.ILinkComponent;
14 import org.apache.tapestry.components.LinkEventType;
15 import org.apache.tapestry.engine.IEngineService;
16 import org.apache.tapestry.engine.ILink;
17 import org.apache.tapestry.services.LinkFactory;
18 import org.weda.property.ObjectDescriptorRegistry;
19 import org.weda.data.DataProviderLinkBuilder;
20 import org.weda.data.DataProviderLinkBuilderException;
21 import org.weda.data.impl.AbstractDataProviderLinkBuilder;
22
23 /**
24 *
25 * @author Mikhail Titov
26 */
27 public class TapestryDataProviderLinkBuilder
28 extends AbstractDataProviderLinkBuilder
29 {
30 private LinkFactory linkFactory;
31 private IEngineService dataViewerEngine;
32 private IRequestCycle requestCycle;
33
34 protected String formLink(Map<String, String> parameters) {
35 LinkComponent link = new LinkComponent(parameters);
36 return link.getLink(requestCycle).getURL();
37 }
38
39 private class LinkComponent
40 extends AbstractComponent implements ILinkComponent
41 {
42 private Map<String, String> valueIdParameters;
43
44 public LinkComponent(Map<String, String> valueIdParameters)
45 {
46 this.valueIdParameters = valueIdParameters;
47 }
48
49 public void addEventHandler(LinkEventType linkEventType, String string)
50 {
51 }
52
53 public ILink getLink(IRequestCycle cycle) {
54 ILink link = linkFactory.constructLink(
55 dataViewerEngine, false, valueIdParameters, true);
56 return link;
57 }
58
59 protected void renderComponent(
60 IMarkupWriter iMarkupWriter, IRequestCycle iRequestCycle) {
61 }
62
63 public void renderAdditionalAttributes(
64 IMarkupWriter iMarkupWriter, IRequestCycle iRequestCycle) {
65 }
66
67 public boolean isDisabled() {
68 return false;
69 }
70
71 public String getTarget() {
72 return null;
73 }
74
75 public String getScheme() {
76 return null;
77 }
78
79 public Integer getPort() {
80 return null;
81 }
82
83 public String getAnchor() {
84 return null;
85 }
86
87 public void renderBody(IMarkupWriter writer, IRequestCycle cycle) {
88 super.renderBody(writer, cycle);
89 writer.print("View");
90 }
91 }
92
93 public void setDataViewerEngine(IEngineService dataViewerEngine) {
94 this.dataViewerEngine = dataViewerEngine;
95 }
96
97 public void setLinkFactory(LinkFactory linkFactory) {
98 this.linkFactory = linkFactory;
99 }
100
101 public void setRequestCycle(IRequestCycle requestCycle) {
102 this.requestCycle = requestCycle;
103 }
104
105 }