001/* 002 * (C) Copyright 2006-2009 Nuxeo SAS (http://nuxeo.com/) and contributors. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the GNU Lesser General Public License 006 * (LGPL) version 2.1 which accompanies this distribution, and is available at 007 * http://www.gnu.org/licenses/lgpl.html 008 * 009 * This library is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 012 * Lesser General Public License for more details. 013 * 014 * Contributors: 015 * Nuxeo - initial API and implementation 016 * 017 * $Id$ 018 */ 019 020package org.nuxeo.ecm.platform.annotations.gwt.client.view; 021 022import java.util.List; 023import java.util.Set; 024 025import org.nuxeo.ecm.platform.annotations.gwt.client.configuration.WebConfiguration; 026import org.nuxeo.ecm.platform.annotations.gwt.client.model.Annotation; 027import org.nuxeo.ecm.platform.annotations.gwt.client.util.AnnotationUtils; 028import org.nuxeo.ecm.platform.annotations.gwt.client.view.i18n.TranslationMessages; 029 030import com.google.gwt.core.client.GWT; 031import com.google.gwt.user.client.Window; 032import com.google.gwt.user.client.ui.ClickListener; 033import com.google.gwt.user.client.ui.Grid; 034import com.google.gwt.user.client.ui.HTML; 035import com.google.gwt.user.client.ui.HorizontalPanel; 036import com.google.gwt.user.client.ui.Image; 037import com.google.gwt.user.client.ui.Label; 038import com.google.gwt.user.client.ui.PopupPanel; 039import com.google.gwt.user.client.ui.PushButton; 040import com.google.gwt.user.client.ui.VerticalPanel; 041import com.google.gwt.user.client.ui.Widget; 042 043public class AnnotationListPopup extends PopupPanel { 044 045 public AnnotationListPopup(String annotationName, List<Annotation> annotations, WebConfiguration configuration) { 046 super(); 047 this.setWidth(Window.getClientWidth() + " px"); 048 this.setHeight(Window.getClientHeight() + " px"); 049 this.setStyleName("annotationListPopup"); 050 VerticalPanel verticalPanel = new VerticalPanel(); 051 verticalPanel.setWidth("100%"); 052 HorizontalPanel titleBar = new HorizontalPanel(); 053 titleBar.setStyleName("annotationListPopupTitleBar"); 054 TranslationMessages translationMessages = GWT.create(TranslationMessages.class); 055 Label title = new Label(translationMessages.annotationListPopupTitle(annotationName)); 056 titleBar.add(title); 057 titleBar.setCellWidth(title, "100%"); 058 PushButton closeButton = new PushButton(" ", new ClickListener() { 059 public void onClick(Widget arg0) { 060 hide(); 061 } 062 }); 063 closeButton.setStyleName("annotationListPopupClose"); 064 titleBar.add(closeButton); 065 verticalPanel.add(titleBar); 066 Grid grid = new Grid(annotations.size(), 3); 067 grid.setWidth("100%"); 068 grid.setCellSpacing(0); 069 grid.setStyleName("annotationListPopupGrid"); 070 Set<String> displayedFields = configuration.getDisplayedFields(); 071 String icon = configuration.getAnnotationDefinition(annotationName).getIcon(); 072 for (int i = 0; i < annotations.size(); i++) { 073 grid.setWidget(i, 0, new Image(icon)); 074 Annotation annotation = annotations.get(i); 075 String fields = annotation.getFormattedDate(); 076 for (String displayedField : displayedFields) { 077 String value = annotation.getFields().get(displayedField); 078 if (value != null) { 079 fields += "<br/>" + value; 080 } 081 } 082 grid.setWidget(i, 1, new HTML(fields)); 083 grid.getColumnFormatter().addStyleName(1, "annotationListPopupFields"); 084 085 String body = ""; 086 Set<String> definedFields = configuration.getAnnotationDefinition(annotationName).getFields().keySet(); 087 for (String definedField : definedFields) { 088 if (!displayedFields.contains(definedField)) { 089 body += annotation.getFields().get(definedField) + " - "; 090 } 091 } 092 body += AnnotationUtils.replaceCarriageReturns(AnnotationUtils.escapeHtml(annotation.getBody())); 093 grid.setWidget(i, 2, new HTML(body)); 094 grid.getColumnFormatter().setWidth(2, "100%"); 095 096 } 097 verticalPanel.add(grid); 098 verticalPanel.setCellHeight(grid, "100%"); 099 this.add(verticalPanel); 100 } 101}