/* | |
* Copyright 2011 gitblit.com. | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
package com.gitblit.wicket.pages; | |
import java.text.MessageFormat; | |
import java.util.Arrays; | |
import java.util.Date; | |
import java.util.List; | |
import org.apache.wicket.PageParameters; | |
import org.apache.wicket.markup.html.WebPage; | |
import org.apache.wicket.markup.html.basic.Label; | |
import org.eclipse.jgit.lib.Constants; | |
import org.eclipse.jgit.lib.Repository; | |
import com.gitblit.models.RefModel; | |
import com.gitblit.utils.JGitUtils; | |
import com.gitblit.wicket.CacheControl; | |
import com.gitblit.wicket.CacheControl.LastModified; | |
import com.gitblit.wicket.WicketUtils; | |
import com.gitblit.wicket.panels.GravatarImage; | |
import com.gitblit.wicket.panels.LinkPanel; | |
import com.gitblit.wicket.panels.RefsPanel; | |
@CacheControl(LastModified.BOOT) | |
public class TagPage extends RepositoryPage { | |
public TagPage(PageParameters params) { | |
super(params); | |
Repository r = getRepository(); | |
// Find tag in repository | |
List<RefModel> tags = JGitUtils.getTags(r, true, -1); | |
RefModel tagRef = null; | |
for (RefModel tag : tags) { | |
if (tag.getName().equals(objectId) || tag.getObjectId().getName().equals(objectId)) { | |
tagRef = tag; | |
break; | |
} | |
} | |
// Failed to find tag! | |
if (tagRef == null) { | |
error(MessageFormat.format(getString("gb.couldNotFindTag"), objectId), true); | |
} | |
// Display tag. | |
Class<? extends WebPage> linkClass; | |
PageParameters linkParameters = newCommitParameter(tagRef.getReferencedObjectId().getName()); | |
String typeKey; | |
switch (tagRef.getReferencedObjectType()) { | |
case Constants.OBJ_BLOB: | |
typeKey = "gb.blob"; | |
linkClass = BlobPage.class; | |
break; | |
case Constants.OBJ_TREE: | |
typeKey = "gb.tree"; | |
linkClass = TreePage.class; | |
break; | |
case Constants.OBJ_COMMIT: | |
default: | |
typeKey = "gb.commit"; | |
linkClass = CommitPage.class; | |
break; | |
} | |
add(new GravatarImage("taggerAvatar", tagRef.getAuthorIdent())); | |
add(new RefsPanel("tagName", repositoryName, Arrays.asList(tagRef))); | |
add(new Label("tagId", tagRef.getObjectId().getName())); | |
add(new LinkPanel("taggedObject", "list", tagRef.getReferencedObjectId().getName(), | |
linkClass, linkParameters)); | |
add(new Label("taggedObjectType", getString(typeKey))); | |
add(createPersonPanel("tagger", tagRef.getAuthorIdent(), com.gitblit.Constants.SearchType.AUTHOR)); | |
Date when = new Date(0); | |
if (tagRef.getAuthorIdent() != null) { | |
when = tagRef.getAuthorIdent().getWhen(); | |
} | |
add(WicketUtils.createTimestampLabel("tagDate", when, getTimeZone(), getTimeUtils())); | |
addFullText("fullMessage", tagRef.getFullMessage()); | |
} | |
@Override | |
protected String getPageName() { | |
return getString("gb.tag"); | |
} | |
@Override | |
protected Class<? extends BasePage> getRepoNavPageClass() { | |
return LogPage.class; | |
} | |
} |