/*
* Copyright 2012
* Ubiquitous Knowledge Processing (UKP) Lab and FG Language Technology
* Technische Universität Darmstadt
*
* 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 de.tudarmstadt.ukp.clarin.webanno.ui.annotation.dialog;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.head.CssHeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.link.PopupSettings;
import org.apache.wicket.markup.html.link.ResourceLink;
import org.apache.wicket.markup.html.list.AbstractItem;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.resource.ResourceStreamResource;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.apache.wicket.util.resource.FileResourceStream;
import org.apache.wicket.util.resource.IResourceStream;
import de.tudarmstadt.ukp.clarin.webanno.api.ProjectService;
import de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorState;
import de.tudarmstadt.ukp.clarin.webanno.ui.core.page.WebAnnoCssReference;
/**
* Modal window to display annotation guidelines
*/
public class GuidelineModalWindowPanel
extends Panel
{
private static final long serialVersionUID = -2102136855109258306L;
private @SpringBean ProjectService projectService;
private GuidelineForm guidelineForm;
@Override
public void renderHead(IHeaderResponse aResponse)
{
super.renderHead(aResponse);
// Loading WebAnno CSS because this doesn't inherit from ApplicationPageBase
aResponse.render(CssHeaderItem.forReference(WebAnnoCssReference.get()));
}
public GuidelineModalWindowPanel(String aId, final ModalWindow modalWindow,
final IModel<AnnotatorState> aModel)
{
super(aId);
guidelineForm = new GuidelineForm("guidelineForm", modalWindow, aModel);
add(guidelineForm);
}
private class GuidelineForm
extends Form<AnnotatorState>
{
private static final long serialVersionUID = -4104665452144589457L;
public GuidelineForm(String id, final ModalWindow modalWindow,
final IModel<AnnotatorState> aModel)
{
super(id, aModel);
// Overall progress by Projects
RepeatingView guidelineRepeater = new RepeatingView("guidelineRepeater");
add(guidelineRepeater);
for (String guidelineFileName : projectService
.listGuidelines(getModelObject().getProject())) {
AbstractItem item = new AbstractItem(guidelineRepeater.newChildId());
guidelineRepeater.add(item);
// Add a popup window link to display annotation guidelines
PopupSettings popupSettings = new PopupSettings(
PopupSettings.RESIZABLE | PopupSettings.SCROLLBARS).setHeight(500)
.setWidth(700);
IResourceStream stream = new FileResourceStream(projectService
.getGuideline(getModelObject().getProject(), guidelineFileName));
ResourceStreamResource resource = new ResourceStreamResource(stream);
ResourceLink<Void> rlink = new ResourceLink<Void>("guideine", resource);
rlink.setPopupSettings(popupSettings);
item.add(new Label("guidelineName", guidelineFileName));
item.add(rlink);
}
add(new AjaxLink<Void>("close")
{
private static final long serialVersionUID = 7202600912406469768L;
@Override
public void onClick(AjaxRequestTarget target)
{
modalWindow.close(target);
}
});
}
}
}