| /** |
| * |
| * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation |
| * |
| */ |
| package org.eclipse.osbp.utils.vaadin; |
| |
| import java.text.DateFormat; |
| import java.util.Date; |
| import java.util.Locale; |
| import java.util.regex.Pattern; |
| |
| import org.eclipse.core.runtime.QualifiedName; |
| import org.eclipse.e4.core.contexts.IEclipseContext; |
| import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent; |
| import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherCommand; |
| import org.eclipse.osbp.runtime.common.event.IEventDispatcher; |
| import org.eclipse.osbp.runtime.common.util.BeanUtils; |
| import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService; |
| |
| import com.vaadin.data.util.ObjectProperty; |
| import com.vaadin.server.ClientConnector.DetachListener; |
| import com.vaadin.ui.Button; |
| import com.vaadin.ui.Button.ClickEvent; |
| import com.vaadin.ui.FormLayout; |
| import com.vaadin.ui.TextField; |
| import com.vaadin.ui.Window; |
| |
| public class DTOInfoDialog extends Window implements DetachListener { //NOSONAR |
| /** |
| * |
| */ |
| private static final long serialVersionUID = 3461161019240158996L; |
| private Button close; |
| private String sender; |
| private String titleExtra; |
| private String topic; |
| private TextField createdByText; |
| private TextField createdAtText; |
| private TextField updatedByText; |
| private TextField updatedAtText; |
| private transient IEventDispatcher eventDispatcher; |
| private transient IDSLMetadataService dslMetadataService; |
| private static final String closeString = "close"; |
| private static final String titleString = "information"; |
| private static final String updatedByString = "updated_by"; |
| private static final String updatedAtString = "updated_at"; |
| private static final String createdByString = "created_by"; |
| private static final String createdAtString = "created_at"; |
| private static final String unknown = "unknown"; |
| private String unknownValue; |
| private DateFormat dateFormat; |
| private ObjectProperty<String> createdByProp; |
| private ObjectProperty<String> createdAtProp; |
| private ObjectProperty<String> updatedByProp; |
| private ObjectProperty<String> updatedAtProp; |
| |
| public DTOInfoDialog(IEclipseContext eclipseContext, Locale locale, String sender, String topic) { |
| super(); |
| this.dslMetadataService = eclipseContext.get(IDSLMetadataService.class); |
| this.eventDispatcher = eclipseContext.get(IEventDispatcher.class); |
| this.addDetachListener(this); |
| this.sender = sender; |
| this.topic = topic; |
| String[] parts = sender.split(Pattern.quote(".")); |
| titleExtra = parts[parts.length-1]; |
| setClosable(true); |
| setModal(false); |
| FormLayout subContent = new FormLayout(); |
| subContent.setMargin(true); |
| setContent(subContent); |
| createdByText = new TextField(); |
| createdByText.setReadOnly(true); |
| subContent.addComponent(createdByText); |
| createdAtText = new TextField(); |
| createdAtText.setReadOnly(true); |
| subContent.addComponent(createdAtText); |
| updatedByText = new TextField(); |
| updatedByText.setReadOnly(true); |
| subContent.addComponent(updatedByText); |
| updatedAtText = new TextField(); |
| updatedAtText.setReadOnly(true); |
| subContent.addComponent(updatedAtText); |
| |
| createdByProp = new ObjectProperty<>(""); |
| createdAtProp = new ObjectProperty<>(""); |
| updatedByProp = new ObjectProperty<>(""); |
| updatedAtProp = new ObjectProperty<>(""); |
| |
| createdByText.setPropertyDataSource(createdByProp); |
| createdAtText.setPropertyDataSource(createdAtProp); |
| updatedByText.setPropertyDataSource(updatedByProp); |
| updatedAtText.setPropertyDataSource(updatedAtProp); |
| |
| close = new Button(); |
| close.addClickListener(new Button.ClickListener() { |
| private static final long serialVersionUID = 5512635792523351385L; |
| @Override |
| public void buttonClick(ClickEvent event) { |
| EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.CLOSE, topic, sender); |
| eventDispatcher.sendEvent(evnt); |
| } |
| }); |
| subContent.addComponent(close); |
| setLocale(locale); |
| center(); |
| } |
| |
| @Override |
| public void setLocale(Locale locale) { |
| super.setLocale(locale); |
| setCaption(dslMetadataService.translate(locale.toLanguageTag(), titleString) + " " + dslMetadataService.translate(locale.toLanguageTag(), titleExtra)); |
| createdByText.setCaption(dslMetadataService.translate(locale.toLanguageTag(), createdByString)); |
| createdAtText.setCaption(dslMetadataService.translate(locale.toLanguageTag(), createdAtString)); |
| updatedByText.setCaption(dslMetadataService.translate(locale.toLanguageTag(), updatedByString)); |
| updatedAtText.setCaption(dslMetadataService.translate(locale.toLanguageTag(), updatedAtString)); |
| unknownValue = dslMetadataService.translate(locale.toLanguageTag(), unknown); |
| close.setCaption(dslMetadataService.translate(locale.toLanguageTag(), closeString)); |
| dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, locale); |
| dateFormat.setLenient(false); |
| } |
| |
| public void setDto(Object dto) { |
| String createUser = BeanUtils.getCreateUser(dto); |
| if(createUser != null) { |
| createdByProp.setValue(createUser); |
| } else { |
| createdByProp.setValue(unknownValue); |
| } |
| Date createdAt = BeanUtils.getCreateAt(dto); |
| if(createdAt != null) { |
| createdAtProp.setValue(dateFormat.format(createdAt)); |
| } else { |
| createdAtProp.setValue(unknownValue); |
| } |
| |
| String updateUser = BeanUtils.getUpdateUser(dto); |
| if(updateUser != null) { |
| updatedByProp.setValue(updateUser); |
| } else { |
| updatedByProp.setValue(unknownValue); |
| } |
| Date updatedAt = BeanUtils.getUpdateAt(dto); |
| if(updatedAt != null) { |
| updatedAtProp.setValue(dateFormat.format(updatedAt)); |
| } else { |
| updatedAtProp.setValue(unknownValue); |
| } |
| } |
| |
| @Override |
| public void detach(DetachEvent event) { |
| EventDispatcherEvent evt = new EventDispatcherEvent(EventDispatcherCommand.CLOSE, topic, sender); |
| eventDispatcher.sendEvent(evt); |
| } |
| } |