James Moger
2011-04-17 f1dfc23c493570e5be865664c17e368f46665609
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package com.gitblit.wicket;
 
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
 
import org.apache.wicket.Component;
import org.apache.wicket.PageParameters;
import org.apache.wicket.behavior.SimpleAttributeModifier;
import org.apache.wicket.markup.html.basic.Label;
import org.eclipse.jgit.lib.Constants;
 
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.utils.StringUtils;
import com.gitblit.utils.TimeUtils;
 
public class WicketUtils {
 
    public static void setCssClass(Component container, String value) {
        container.add(new SimpleAttributeModifier("class", value));
    }
 
    public static void setCssStyle(Component container, String value) {
        container.add(new SimpleAttributeModifier("style", value));
    }
 
    public static void setHtmlTitle(Component container, String value) {
        container.add(new SimpleAttributeModifier("title", value));
    }
 
    public static void setTicketCssClass(Component container, String state) {
        String css = null;
        if (state.equals("open")) {
            css = "bug_open";
        } else if (state.equals("hold")) {
            css = "bug_hold";
        } else if (state.equals("resolved")) {
            css = "bug_resolved";
        } else if (state.equals("invalid")) {
            css = "bug_invalid";
        }
        if (css != null) {
            setCssClass(container, css);
        }
    }
 
    public static void setAlternatingBackground(Component c, int i) {
        String clazz = i % 2 == 0 ? "dark" : "light";
        setCssClass(c, clazz);
    }
 
    public static Label createAuthorLabel(String wicketId, String author) {
        Label label = new Label(wicketId, author);
        WicketUtils.setHtmlTitle(label, author);
        return label;
    }
 
    public static PageParameters newRepositoryParameter(String repositoryName) {
        return new PageParameters("r=" + repositoryName);
    }
 
    public static PageParameters newObjectParameter(String repositoryName, String objectId) {
        if (StringUtils.isEmpty(objectId)) {
            return newRepositoryParameter(repositoryName);
        }
        return new PageParameters("r=" + repositoryName + ",h=" + objectId);
    }
 
    public static PageParameters newPathParameter(String repositoryName, String objectId, String path) {
        if (StringUtils.isEmpty(path)) {
            return newObjectParameter(repositoryName, objectId);
        }
        return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",f=" + path);
    }
 
    public static PageParameters newLogPageParameter(String repositoryName, String objectId, int pageNumber) {
        if (pageNumber <= 1) {
            return newObjectParameter(repositoryName, objectId);
        }
        return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",page=" + pageNumber);
    }
    
    public static PageParameters newHistoryPageParameter(String repositoryName, String objectId, String path, int pageNumber) {
        if (pageNumber <= 1) {
            return newObjectParameter(repositoryName, objectId);
        }
        return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",f=" + path + ",page=" + pageNumber);
    }
 
    public static PageParameters newBlobDiffParameter(String repositoryName, String baseCommitId, String commitId, String path) {
        return new PageParameters("r=" + repositoryName + ",h=" + commitId + ",f=" + path + ",hb=" + baseCommitId);
    }
 
    
    public static String getRepositoryName(PageParameters params) {
        return params.getString("r", "");
    }
 
    public static String getObject(PageParameters params) {
        return params.getString("h", Constants.HEAD);
    }
 
    public static String getPath(PageParameters params) {
        return params.getString("f", null);
    }
    
    public static String getBaseObjectId(PageParameters params) {
        return params.getString("hb", null);
    }
 
    public static int getPage(PageParameters params) {
        return params.getInt("page", 1); // index from 1
    }
 
    public static Label createDateLabel(String wicketId, Date date, TimeZone timeZone) {
        DateFormat df = new SimpleDateFormat(GitBlit.self().settings().getString(Keys.web.datestampShortFormat, "MM/dd/yy"));
        if (timeZone != null) {
            df.setTimeZone(timeZone);
        }
        String dateString = df.format(date);
        String title = TimeUtils.timeAgo(date);
        if ((System.currentTimeMillis() - date.getTime()) < 10 * 24 * 60 * 60 * 1000l) {
            String tmp = dateString;
            dateString = title;
            title = tmp;
        }
        Label label = new Label(wicketId, dateString);
        WicketUtils.setCssClass(label, TimeUtils.timeAgoCss(date));
        WicketUtils.setHtmlTitle(label, title);
        return label;
    }
 
    public static Label createTimestampLabel(String wicketId, Date date, TimeZone timeZone) {
        DateFormat df = new SimpleDateFormat(GitBlit.self().settings().getString(Keys.web.datetimestampLongFormat, "EEEE, MMMM d, yyyy h:mm a z"));
        if (timeZone != null) {
            df.setTimeZone(timeZone);
        }
        String dateString = df.format(date);
        String title = TimeUtils.timeAgo(date);
        Label label = new Label(wicketId, dateString);
        WicketUtils.setHtmlTitle(label, title);
        return label;
    }
}