[Bio] / WebApplication / WebComponent.pm Repository:
ViewVC logotype

Annotation of /WebApplication/WebComponent.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.5 - (view) (download) (as text)

1 : paczian 1.1 package WebComponent;
2 :    
3 :     # WebComponent - abstract web component class
4 :    
5 : parrello 1.5 # $Id: WebComponent.pm,v 1.4 2008/09/04 18:59:15 parrello Exp $
6 : paczian 1.1
7 :     use strict;
8 :     use warnings;
9 : parrello 1.3 use FIG_Config;
10 : paczian 1.1
11 :     =pod
12 :    
13 :     =head1 NAME
14 :    
15 :     WebComponent - abstract web component class
16 :    
17 :     =head1 DESCRIPTION
18 :    
19 :     This module is the abstract WebComponent class used by the web application
20 :     framework. A web component is a reusable page element inherited from this
21 :     class. Each component is assigned an unique id (to support javascript
22 :     operations on the components).
23 :    
24 :     Using a web component is done by requesting the component from the application,
25 :     then setting parameters as supported by the specific component and finally
26 :     returning the html output of the component.
27 :    
28 :     =head1 METHODS
29 :    
30 :     =over 4
31 :    
32 :     =item * B<new> (I<application>, I<id>)
33 :    
34 :     Creates a new instance of the WebComponent object. The constructor requires
35 :     a reference to the web application object and an (unique) id. Unique ids
36 :     are used to manipulate html elements by javascript.
37 :    
38 :     =cut
39 :    
40 :     sub new {
41 :     my ($class, $application, $id) = @_;
42 :    
43 :     # check application
44 :     unless (ref $application and $application->isa("WebApplication")) {
45 : paarmann 1.2 die "Invalid application in __PACKAGE__ new.";
46 : paczian 1.1 }
47 :    
48 :     $id = '' unless (defined $id);
49 : parrello 1.4 my $sv_url = "$FIG_Config::cgi_url/seedviewer.cgi";
50 :     if (FIGRules::nmpdr_mode($application->cgi) && $FIG_Config::linkinSV) {
51 :     $sv_url = $FIG_Config::linkinSV;
52 :     }
53 : paczian 1.1 my $self = { 'application' => $application,
54 :     'id' => $id,
55 :     'css' => undef,
56 : parrello 1.4 'svURL' => $sv_url,
57 : paczian 1.1 };
58 :     bless $self, $class;
59 :    
60 :     return $self;
61 :     }
62 :    
63 :    
64 :     =pod
65 :    
66 :     =item * B<application> ()
67 :    
68 :     Returns the reference to the application object
69 :    
70 :     =cut
71 :    
72 :     sub application {
73 :     return $_[0]->{'application'};
74 :     }
75 :    
76 :    
77 :     =pod
78 :    
79 : parrello 1.3 =item * B<svURL> ()
80 :    
81 :     Returns the Seed Viewer URL
82 :    
83 :     =cut
84 :    
85 :     sub svURL {
86 :     return $_[0]->{svURL};
87 :     }
88 :    
89 :     =pod
90 :    
91 : paczian 1.1 =item * B<id> ()
92 :    
93 :     Returns the numerical id of the web component
94 :    
95 :     =cut
96 :    
97 :     sub id {
98 :     return $_[0]->{'id'};
99 :     }
100 :    
101 :    
102 :     =pod
103 :    
104 :     =item * B<get_trigger> (I<action_name>)
105 :    
106 :     Returns a unique cgi action param based on the I<action_name>.
107 :    
108 :     =cut
109 :    
110 :     sub get_trigger {
111 :     return 'wac_'.$_[0]->id.'_'.$_[1];
112 :     }
113 :    
114 :     =pod
115 :    
116 :     =item * B<require_javascript> ()
117 :    
118 :     Returns a reference to an array of javascript files to include into the
119 :     output page. By default the method returns the reference to an empty
120 :     array. Overload in inherited web components as needed.
121 :    
122 :     =cut
123 :    
124 :     sub require_javascript {
125 :     return [ ];
126 :     }
127 :    
128 :    
129 :     =pod
130 :    
131 :     =item * B<require_css> (I<css_file>)
132 :    
133 :     Returns the name of the css file to include into the the html of the web component.
134 :     If the optional parameter I<css_file> is given, the component will require that
135 :     css file instead of the default one.
136 :    
137 :     =cut
138 :    
139 :     sub require_css {
140 :     if ($_[1]) {
141 :     $_[0]->{'css'} = $_[1];
142 :     }
143 :     return $_[0]->{'css'};
144 :     }
145 :    
146 :    
147 :     =pod
148 :    
149 :     =item * B<output> ()
150 :    
151 :     Returns the html of the web component
152 :    
153 :     =cut
154 :    
155 :     sub output {
156 :     die "Abstract method 'output' must be implemented in __PACKAGE__.\n";
157 :     }
158 :    
159 : parrello 1.5 =head3 JavaCall
160 :    
161 :     my $string = $comp->JavaCall($name => @parms);
162 :    
163 :     Format a call to a java function. The parameters will all be converted to
164 :     string literals and assembled with the method name.
165 :    
166 :     =over 4
167 :    
168 :     =item name
169 :    
170 :     Name of the Java method to call.
171 :    
172 :     =item parms
173 :    
174 :     A list of strings. The strings will be converted to Javascript string literals
175 :     and specified as parameters on the method call.
176 :    
177 :     =item RETURN
178 :    
179 :     Returns a string that can be used as an event parameter to call the specified
180 :     Javascript method passing in the specified literal values.
181 :    
182 :     =back
183 :    
184 :     =cut
185 :    
186 :     sub JavaCall {
187 :     # Get the parameters.
188 :     my ($self, $name, @parms) = @_;
189 :     # Quote the strings.
190 :     my @literals;
191 :     for my $parm (@parms) {
192 :     $parm =~ s/\n/\\n/g;
193 :     $parm =~ s/'/\\'/g;
194 :     push @literals, "'$parm'";
195 :     }
196 :     # Assemble the call.
197 :     my $retVal = "$name(" . join(", ", @literals) . ")";
198 :     # Return the result.
199 :     return $retVal;
200 :     }
201 : paczian 1.1
202 :     1;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3