001/* 002 * Copyright (C) Photon Vision. 003 * 004 * This program is free software: you can redistribute it and/or modify 005 * it under the terms of the GNU General Public License as published by 006 * the Free Software Foundation, either version 3 of the License, or 007 * (at your option) any later version. 008 * 009 * This program 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 012 * GNU General Public License for more details. 013 * 014 * You should have received a copy of the GNU General Public License 015 * along with this program. If not, see <https://www.gnu.org/licenses/>. 016 */ 017 018package org.photonvision.common.dataflow.events; 019 020import io.javalin.websocket.WsContext; 021import java.util.HashMap; 022import org.photonvision.common.dataflow.DataChangeDestination; 023import org.photonvision.common.dataflow.DataChangeSource; 024 025public class OutgoingUIEvent<T> extends DataChangeEvent<T> { 026 public final WsContext originContext; 027 028 public OutgoingUIEvent(String propertyName, T newValue) { 029 this(propertyName, newValue, null); 030 } 031 032 public OutgoingUIEvent(String propertyName, T newValue, WsContext originContext) { 033 super(DataChangeSource.DCS_WEBSOCKET, DataChangeDestination.DCD_UI, propertyName, newValue); 034 this.originContext = originContext; 035 } 036 037 public static OutgoingUIEvent<HashMap<String, Object>> wrappedOf( 038 String commandName, Object value) { 039 HashMap<String, Object> data = new HashMap<>(); 040 data.put(commandName, value); 041 return new OutgoingUIEvent<>(commandName, data); 042 } 043 044 public static OutgoingUIEvent<HashMap<String, Object>> wrappedOf( 045 String commandName, String propertyName, Object value, WsContext originContext) { 046 HashMap<String, Object> data = new HashMap<>(); 047 data.put(propertyName, value); 048 049 return new OutgoingUIEvent<>(commandName, data, originContext); 050 } 051}