package es.upm.fi.dia.oeg.map4rdf.client.widget; import java.util.Map; import com.google.gwt.dom.client.Style.TextAlign; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.HasHorizontalAlignment; import com.google.gwt.user.client.ui.InlineHTML; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import es.upm.fi.dia.oeg.map4rdf.client.resource.BrowserMessages; import es.upm.fi.dia.oeg.map4rdf.client.resource.BrowserResources; import es.upm.fi.dia.oeg.map4rdf.client.util.LocaleUtil; import es.upm.fi.dia.oeg.map4rdf.share.GeoResource; import es.upm.fi.dia.oeg.map4rdf.share.Geometry; import es.upm.fi.dia.oeg.map4rdf.share.MapShape; import es.upm.fi.dia.oeg.map4rdf.share.Point; public class GeoResourceSummaryInfoDefault implements GeoResourceSummaryInfo{ public interface Stylesheet { String summaryLabelStyle(); String summaryPropertyName(); String summaryPropertyValue(); String textButtonStyle(); } private FlowPanel mainPanel; private Label longitude; private Label label; private Label latitude; private Label crs; private Panel locationPanel; private FlowPanel additionalInfoPanel; private DialogBox mainWidget; public GeoResourceSummaryInfoDefault(BrowserMessages messages, BrowserResources resources){ mainPanel = new FlowPanel(); mainPanel.getElement().getStyle().setTextAlign(TextAlign.LEFT); label = new Label(); label.getElement().getStyle().setProperty("wordWrap", "break-word"); mainPanel.add(label); mainPanel.add(new InlineHTML("<br />")); locationPanel = new FlowPanel(); Grid grid = new Grid(3, 2); Label latitudeLabel = new Label(messages.latitude() + ": "); grid.setWidget(0, 0, latitudeLabel); latitude = new Label(); grid.setWidget(0, 1, latitude); Label longitudLabel = new Label(messages.longitude() + ": "); grid.setWidget(1, 0, longitudLabel); longitude = new Label(); grid.setWidget(1, 1, longitude); Label crsLabel = new Label(messages.crs() + ": "); grid.setWidget(2, 0, crsLabel); crs = new Label(); grid.setWidget(2, 1, crs); locationPanel.add(grid); mainPanel.add(locationPanel); mainPanel.add(new InlineHTML("<br>")); additionalInfoPanel= new FlowPanel(); mainPanel.add(additionalInfoPanel); mainPanel.setWidth("auto"); mainPanel.setHeight("auto"); mainWidget=new DialogBox(false, false); mainWidget.setAnimationEnabled(true); mainWidget.setGlassEnabled(false); mainWidget.getElement().getStyle().setZIndex(10); Button close = new Button(messages.close()); close.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { mainWidget.hide(); } }); VerticalPanel mainDialogPanel=new VerticalPanel(); mainDialogPanel.add(mainPanel); mainDialogPanel.add(close); mainWidget.setWidget(mainDialogPanel); mainDialogPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); mainDialogPanel.setCellHorizontalAlignment(mainPanel, HasHorizontalAlignment.ALIGN_CENTER); mainDialogPanel.setCellHorizontalAlignment(close, HasHorizontalAlignment.ALIGN_CENTER); mainWidget.setText(messages.informationTittle("")); } @Override public void addAdditionalInfo(Map<String,String> additionalsInfo){ additionalInfoPanel.clear(); if(additionalsInfo!=null && !additionalsInfo.isEmpty()){ Grid grid=new Grid(additionalsInfo.size(),2); int i=0; for(String key:additionalsInfo.keySet()){ Label label=new Label(key+" "); grid.setWidget(i, 0, label); label=new Label(additionalsInfo.get(key)); grid.setWidget(i++, 1, label); } additionalInfoPanel.add(grid); } } @Override public Widget getWidget() { return mainPanel; } @Override public void setGeoResource(GeoResource resource, Geometry geometry) { label.setText(LocaleUtil.getBestLabel(resource, true)); additionalInfoPanel.clear(); if (geometry.getType() == MapShape.Type.POINT) { locationPanel.setVisible(true); Point point = (Point) geometry; latitude.setText(Double.toString(point.getY())); longitude.setText(Double.toString(point.getX())); crs.setText(point.getProjection()); } else { locationPanel.setVisible(false); } } @Override public void clearAdditionalInfo() { additionalInfoPanel.clear(); } @Override public boolean isVisible() { return mainWidget.isShowing(); } @Override public void show() { mainWidget.center(); } @Override public void close() { mainWidget.hide(); } }