Skip to content

Commit 1748585

Browse files
Merge pull request #45 from ChristopheCVB/develop
v8.1.0
2 parents 65e2f40 + 8a022e2 commit 1748585

File tree

17 files changed

+347
-51
lines changed

17 files changed

+347
-51
lines changed

AnnotationsProcessor/src/main/java/com/christophecvb/touchportal/annotations/processor/TouchPortalPluginAnnotationProcessor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ private Pair<JsonObject, TypeSpec.Builder> processPlugin(RoundEnvironment roundE
147147
jsonConfiguration.addProperty(PluginHelper.CONFIGURATION_COLOR_DARK, plugin.colorDark());
148148
jsonConfiguration.addProperty(PluginHelper.CONFIGURATION_COLOR_LIGHT, plugin.colorLight());
149149
jsonPlugin.add(PluginHelper.CONFIGURATION, jsonConfiguration);
150-
jsonPlugin.addProperty(PluginHelper.PLUGIN_START_COMMAND, "java -jar ./" + pluginElement.getSimpleName() + ".jar " + PluginHelper.COMMAND_START);
150+
jsonPlugin.addProperty(PluginHelper.PLUGIN_START_COMMAND, "java -Dapple.awt.UIElement=true -jar ./" + pluginElement.getSimpleName() + ".jar " + PluginHelper.COMMAND_START);
151151

152152
TypeSpec.Builder settingsTypeSpecBuilder = TypeSpec.classBuilder("Settings").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
153153
JsonArray jsonSettings = new JsonArray();

Helpers/src/main/java/com/christophecvb/touchportal/helpers/ConnectorHelper.java

+80-17
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@
2020

2121
package com.christophecvb.touchportal.helpers;
2222

23-
import com.christophecvb.touchportal.annotations.Action;
2423
import com.christophecvb.touchportal.annotations.Category;
2524
import com.christophecvb.touchportal.annotations.Connector;
2625

2726
import javax.lang.model.element.Element;
2827
import java.lang.reflect.Method;
28+
import java.util.Map;
2929

3030
/**
3131
* Touch Portal Plugin Action Helper
@@ -36,6 +36,9 @@ public class ConnectorHelper {
3636
public static final String TYPE = GenericHelper.TYPE;
3737
public static final String DATA = "data";
3838
public static final String FORMAT = "format";
39+
public static final String UPDATE_PREFIX = "pc";
40+
public static final String UPDATE_ID_SEPARATOR = "_";
41+
public static final String UPDATE_DATA_SEPARATOR = "|";
3942

4043
protected static final String KEY_CONNECTOR = "connector";
4144

@@ -56,28 +59,28 @@ public static String getConnectorId(Element pluginElement, Element categoryEleme
5659
/**
5760
* Get the generated Connector Name
5861
*
59-
* @param actionElement Element
60-
* @param connector {@link Action}
62+
* @param connectorElement Element
63+
* @param connector {@link Connector}
6164
* @return String connectorName
6265
*/
63-
public static String getConnectorName(Element actionElement, Connector connector) {
64-
return connector.name().isEmpty() ? actionElement.getSimpleName().toString() : connector.name();
66+
public static String getConnectorName(Element connectorElement, Connector connector) {
67+
return connector.name().isEmpty() ? connectorElement.getSimpleName().toString() : connector.name();
6568
}
6669

6770
/**
6871
* Get the generated Connector ID
6972
*
70-
* @param pluginClass Class
71-
* @param actionMethodName String
73+
* @param pluginClass Class
74+
* @param connectorMethodName String
7275
* @return String connectorId
7376
*/
74-
public static String getConnectorId(Class<?> pluginClass, String actionMethodName) {
77+
public static String getConnectorId(Class<?> pluginClass, String connectorMethodName) {
7578
String connectorId = "";
7679

7780
for (Method method : pluginClass.getDeclaredMethods()) {
78-
if (method.isAnnotationPresent(Action.class) && method.getName().equals(actionMethodName)) {
79-
Action action = method.getDeclaredAnnotation(Action.class);
80-
connectorId = ConnectorHelper._getConnectorId(CategoryHelper.getCategoryId(pluginClass, action.categoryId()), (!action.id().isEmpty() ? action.id() : actionMethodName));
81+
if (method.isAnnotationPresent(Connector.class) && method.getName().equals(connectorMethodName)) {
82+
Connector connector = method.getDeclaredAnnotation(Connector.class);
83+
connectorId = ConnectorHelper.getConnectorId(pluginClass, method, connector);
8184
}
8285
}
8386

@@ -96,20 +99,80 @@ public static String getConnectorId(Class<?> pluginClass, Method connectorMethod
9699

97100
if (connectorMethod.isAnnotationPresent(Connector.class)) {
98101
Connector connector = connectorMethod.getDeclaredAnnotation(Connector.class);
99-
connectorId = ConnectorHelper._getConnectorId(CategoryHelper.getCategoryId(pluginClass, connector.categoryId()), (!connector.id().isEmpty() ? connector.id() : connectorMethod.getName()));
102+
connectorId = ConnectorHelper.getConnectorId(pluginClass, connectorMethod, connector);
100103
}
101104

102105
return connectorId;
103106
}
104107

108+
/**
109+
* Get the generated Connector ID
110+
*
111+
* @param pluginClass Class
112+
* @param connectorMethod Method
113+
* @param connector {@link Connector}
114+
* @return String connectorId
115+
*/
116+
public static String getConnectorId(Class<?> pluginClass, Method connectorMethod, Connector connector) {
117+
return ConnectorHelper._getConnectorId(CategoryHelper.getCategoryId(pluginClass, connector.categoryId()), !connector.id().isEmpty() ? connector.id() : connectorMethod.getName());
118+
}
119+
105120
/**
106121
* Internal - Get the formatted Connector ID
107122
*
108-
* @param categoryId String
109-
* @param rawActionId String
110-
* @return String actionId
123+
* @param rawConnectorId String
124+
* @return String connectorId
111125
*/
112-
private static String _getConnectorId(String categoryId, String rawActionId) {
113-
return categoryId + "." + ConnectorHelper.KEY_CONNECTOR + "." + rawActionId;
126+
private static String _getConnectorId(String categoryId, String rawConnectorId) {
127+
return categoryId + "." + ConnectorHelper.KEY_CONNECTOR + "." + rawConnectorId;
128+
}
129+
130+
/**
131+
* Compute a Linear Translate
132+
*
133+
* @param inputMin float
134+
* @param inputMax float
135+
* @param outputMin float
136+
* @param outputMax float
137+
* @param inputValue float
138+
* @return float computedValue
139+
*/
140+
public static Float linearTranslate(float inputMin, float inputMax, float outputMin, float outputMax, float inputValue) {
141+
float inputRange = inputMax - inputMin;
142+
float outputRange = outputMax - outputMin;
143+
float computedCross = outputRange / inputRange * (inputValue - inputMin);
144+
return computedCross + outputMin;
145+
}
146+
147+
/**
148+
* Get the constructed Connector Id for Connector Update
149+
*
150+
* @param pluginId String
151+
* @param connectorId String
152+
* @param value Integer
153+
* @param data Map&lt;String, Object&gt;
154+
* @return String constructedConnectorId
155+
*/
156+
public static String getConstructedId(String pluginId, String connectorId, Integer value, Map<String, Object> data) {
157+
String constructedConnectorId = null;
158+
159+
if (pluginId != null && !pluginId.isEmpty() && connectorId != null && !connectorId.isEmpty() && value != null && value >= 0 && value <= 100) {
160+
StringBuilder constructedConnectorIdBuilder = new StringBuilder(ConnectorHelper.UPDATE_PREFIX)
161+
.append(ConnectorHelper.UPDATE_ID_SEPARATOR)
162+
.append(pluginId)
163+
.append(ConnectorHelper.UPDATE_ID_SEPARATOR)
164+
.append(connectorId);
165+
if (data != null && data.size() > 0) {
166+
for (String dataKey : data.keySet()) {
167+
constructedConnectorIdBuilder.append(ConnectorHelper.UPDATE_DATA_SEPARATOR)
168+
.append(dataKey)
169+
.append("=")
170+
.append(data.get(dataKey));
171+
}
172+
}
173+
constructedConnectorId = constructedConnectorIdBuilder.toString();
174+
}
175+
176+
return constructedConnectorId;
114177
}
115178
}

Helpers/src/main/java/com/christophecvb/touchportal/helpers/DataHelper.java

+16-12
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import javax.lang.model.element.Element;
2626
import java.lang.reflect.Method;
2727
import java.lang.reflect.Parameter;
28-
import java.util.Arrays;
2928

3029
/**
3130
* Touch Portal Plugin Data Helper
@@ -96,14 +95,14 @@ public static String getDataLabel(Element dataElement, Data data) {
9695
* @param actionParameterName String
9796
* @return String actionDataId
9897
*/
99-
public static String getActionDataId(Class<?> pluginClass, String actionMethodName, String actionParameterName) {
98+
public static String getDataId(Class<?> pluginClass, String actionMethodName, String actionParameterName) {
10099
String actionDataId = "";
101-
for (Method declaredMethod : pluginClass.getDeclaredMethods()) {
102-
if (declaredMethod.getName().equals(actionMethodName)) {
103-
for (Parameter parameter : declaredMethod.getParameters()) {
100+
for (Method method : pluginClass.getDeclaredMethods()) {
101+
if (method.getName().equals(actionMethodName)) {
102+
for (Parameter parameter : method.getParameters()) {
104103
Data data = parameter.getAnnotation(Data.class);
105104
if (data != null && parameter.getName().equals(actionParameterName)) {
106-
actionDataId = DataHelper._getDataId(ActionHelper.getActionId(pluginClass, actionMethodName), data.id().isEmpty() ? actionParameterName : data.id());
105+
actionDataId = DataHelper.getDataId(pluginClass, method, parameter);
107106
}
108107
}
109108
}
@@ -117,7 +116,7 @@ public static String getActionDataId(Class<?> pluginClass, String actionMethodNa
117116
* @param pluginClass Class
118117
* @param method Method
119118
* @param methodParameter Parameter
120-
* @return String actionId
119+
* @return String dataId
121120
*/
122121
public static String getDataId(Class<?> pluginClass, Method method, Parameter methodParameter) {
123122
String dataId = "";
@@ -139,7 +138,12 @@ else if (method.isAnnotationPresent(Connector.class)) {
139138
}
140139
}
141140
else {
142-
dataId = DataHelper._getDataId(ActionHelper.getActionId(pluginClass, method), data.id().isEmpty() ? methodParameter.getName() : data.id());
141+
if (method.isAnnotationPresent(Action.class)) {
142+
dataId = DataHelper._getDataId(ActionHelper.getActionId(pluginClass, method), data.id().isEmpty() ? methodParameter.getName() : data.id());
143+
}
144+
else if (method.isAnnotationPresent(Connector.class)) {
145+
dataId = DataHelper._getDataId(ConnectorHelper.getConnectorId(pluginClass, method), data.id().isEmpty() ? methodParameter.getName() : data.id());
146+
}
143147
}
144148
}
145149

@@ -149,11 +153,11 @@ else if (method.isAnnotationPresent(Connector.class)) {
149153
/**
150154
* Internal - Get the formatted Data Id
151155
*
152-
* @param parentId String
153-
* @param dataId String
156+
* @param parentId String
157+
* @param rawDataId String
154158
* @return String dataId
155159
*/
156-
private static String _getDataId(String parentId, String dataId) {
157-
return parentId + "." + DataHelper.KEY_DATA + "." + dataId;
160+
private static String _getDataId(String parentId, String rawDataId) {
161+
return parentId + "." + DataHelper.KEY_DATA + "." + rawDataId;
158162
}
159163
}

Helpers/src/main/java/com/christophecvb/touchportal/helpers/PluginHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class PluginHelper {
4343
/**
4444
* Touch Portal Plugin System version
4545
*/
46-
public static final int TOUCH_PORTAL_PLUGIN_VERSION = 4;
46+
public static final int TOUCH_PORTAL_PLUGIN_VERSION = 5;
4747
/**
4848
* Argument passed to the jar to start the plugin
4949
*/

Helpers/src/main/java/com/christophecvb/touchportal/helpers/ReceivedMessageHelper.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,17 @@ public class ReceivedMessageHelper {
3838
public static final String TYPE_HOLD_DOWN = "down";
3939
public static final String TYPE_HOLD_UP = "up";
4040
public static final String TYPE_CONNECTOR_CHANGE = "connectorChange";
41+
public static final String TYPE_SHORT_CONNECTOR_ID_NOTIFICATION = "shortConnectorIdNotification";
4142
public static final String TYPE_INFO = "info";
4243
public static final String TYPE_LIST_CHANGE = "listChange";
4344
public static final String TYPE_CLOSE_PLUGIN = "closePlugin";
4445
public static final String TYPE_BROADCAST = "broadcast";
4546
public static final String TYPE_SETTINGS = "settings";
47+
public static final String TYPE_NOTIFICATION_OPTION_CLICKED = "notificationOptionClicked";
4648
public static final String PLUGIN_ID = "pluginId";
4749
public static final String ACTION_ID = "actionId";
4850
public static final String CONNECTOR_ID = "connectorId";
51+
public static final String SHORT_ID = "shortId";
4952
public static final String LIST_ID = "listId";
5053
public static final String INSTANCE_ID = "instanceId";
5154
public static final String VALUE = GenericHelper.VALUE;
@@ -173,7 +176,7 @@ public static String getActionDataValue(JsonObject jsonMessage, String actionDat
173176
* @return String dataValue
174177
*/
175178
public static String getActionDataValue(JsonObject jsonMessage, Class<?> pluginClass, String actionMethodName, String actionParameterName) {
176-
return ReceivedMessageHelper.getActionDataValue(jsonMessage, DataHelper.getActionDataId(pluginClass, actionMethodName, actionParameterName));
179+
return ReceivedMessageHelper.getActionDataValue(jsonMessage, DataHelper.getDataId(pluginClass, actionMethodName, actionParameterName));
177180
}
178181

179182
/**

Helpers/src/main/java/com/christophecvb/touchportal/helpers/SentMessageHelper.java

+9
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,20 @@ public class SentMessageHelper {
3232
public static final String TYPE_REMOVE_STATE = "removeState";
3333
public static final String TYPE_ACTION_DATA_UPDATE = "updateActionData";
3434
public static final String TYPE_SETTING_UPDATE = "settingUpdate";
35+
public static final String TYPE_SHOW_NOTIFICATION = "showNotification";
36+
public static final String TYPE_CONNECTOR_UPDATE = "connectorUpdate";
3537
public static final String INSTANCE_ID = "instanceId";
3638
public static final String ID = GenericHelper.ID;
3739
public static final String VALUE = GenericHelper.VALUE;
3840
public static final String DATA = "data";
3941
public static final String NAME = "name";
4042
public static final String DESCRIPTION = StateHelper.DESC;
4143
public static final String DEFAULT_VALUE = "defaultValue";
44+
public static final String NOTIFICATION_ID = "notificationId";
45+
public static final String TITLE = "title";
46+
public static final String MSG = "msg";
47+
public static final String OPTIONS = "options";
48+
public static final String CONNECTOR_ID = "connectorId";
49+
public static final String SHORT_ID = "shortId";
50+
4251
}

0 commit comments

Comments
 (0)