Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
jenkins
提交
353bbfa5
J
jenkins
项目概览
xxadev
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
353bbfa5
编写于
7月 29, 2011
作者:
K
Kohsuke Kawaguchi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
adding one more example
上级
57777440
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
86 addition
and
0 deletion
+86
-0
ui-samples-plugin/src/main/java/jenkins/plugins/ui_samples/ModularizeViewScript.java
...java/jenkins/plugins/ui_samples/ModularizeViewScript.java
+28
-0
ui-samples-plugin/src/main/resources/jenkins/plugins/ui_samples/ModularizeViewScript/index.groovy
...kins/plugins/ui_samples/ModularizeViewScript/index.groovy
+58
-0
未找到文件。
ui-samples-plugin/src/main/java/jenkins/plugins/ui_samples/ModularizeViewScript.java
0 → 100644
浏览文件 @
353bbfa5
package
jenkins.plugins.ui_samples
;
import
hudson.Extension
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* Define portions of view fragments in separate methods/classes to improve reuse.
*
* @author Kohsuke Kawaguchi
*/
@Extension
public
class
ModularizeViewScript
extends
UISample
{
@Override
public
String
getDescription
()
{
return
"Define portions of view fragments in separate methods/classes to improve reuse"
;
}
public
List
<
SourceFile
>
getSourceFiles
()
{
// TODO: generate this from index
return
Arrays
.
asList
(
new
SourceFile
(
"index.groovy"
));
}
@Extension
public
static
final
class
DescriptorImpl
extends
UISampleDescriptor
{
}
}
ui-samples-plugin/src/main/resources/jenkins/plugins/ui_samples/ModularizeViewScript/index.groovy
0 → 100644
浏览文件 @
353bbfa5
package
jenkins.plugins.ui_samples.ModularizeViewScript
import
org.kohsuke.stapler.jelly.groovy.JellyBuilder
import
lib.FormTagLib
namespace
(
"/lib/samples"
).
sample
(
title:
_
(
"Define View Fragments Elsewhere"
))
{
// normally this is how you generate tags,
// but these are actually just a syntax sugar for method calls to the "delegate" object.
h2
(
"One"
)
div
(
style:
"border:1px solid blue"
)
{
p
(
"some pointless text"
)
}
// so all we need to do is to pass around this delegate object and then you can generate fragments
// from elsewhere
new
SomeGenerator
(
builder
).
generateSomeFragment
()
}
// I defined this class here just to make the sample concise.
// this class can be defined anywhere, and typically you'd do this somewhere in your src/main/groovy
static
class
SomeGenerator
{
JellyBuilder
builder
;
FormTagLib
f
;
SomeGenerator
(
JellyBuilder
builder
)
{
this
.
builder
=
builder
f
=
builder
.
namespace
(
FormTagLib
.
class
)
}
// this wrapper makes it so that we don't have to explicitly call with "builder."
// the 'with' method in GDK doesn't work nicely because it does DELEGATE_FIRST resolution,
// and you can accidentally pick up variables defined in the ancestor JellyContexts.
def
generate
(
Closure
closure
)
{
closure
=
closure
.
clone
();
closure
.
delegate
=
builder
;
return
closure
.
call
();
}
def
generateSomeFragment
()
{
generate
{
h2
(
"Two"
)
// this call is a shorthand for builder.h2("Two")
div
(
style:
"background-color:gray; padding:2em"
)
{
// calling other methods
generateMoreFragment
(
"Testing generation"
);
}
}
}
def
generateMoreFragment
(
String
msg
)
{
generate
{
h2
(
msg
);
f
.
textarea
();
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录