* Add envoy.client.data.audio package
* Move AudioRecorder to the audio package
* Add AudioPlayer class
* Add AudioControl class that acts as a small media player
* Display the audio control in message controls that contain voice
messages
When the length value encoding is violated, which can occur by sending
an incorrect object length to the client, the error is logged and the
receiver continues to run.
The ChatScene layout has been adjusted to include a voice message
button. When pressed, a recording starts. To finish the recording, press
the button again. The recording will be saved as a pending attachment.
The next message sent will include the attachment. When a pending
attachment is present, a message can be sent without text.
When the chat is switched, the pending attachment is discarded. This
does not stop active recordings, however.
The ChatScene layout handles large stages better now by ditching
percentage-wise row and column scaling in favor of absolute values for
all cells except the message list and text area.
If a member logs in and receives pending groupMessages, there are now
groupMessageStatusChanges sent to all other members, that are online and
have already received the groupMessage.
Implemented ClearableTextField and redesigned UI.
TAKE CARE:
in order to use SceneBuilder further, you have to import the attached
JAR "CustomComponents.jar" into the SceneBuilder. If you don't do this,
Scenebuilder no longer can load FXML files that depend on a custom
component. If you are implementing another custom component, feel free
to add it to the jar.
Note however that SceneBuilder cannot load any components that rely on
libraries other than the standard Java library or the JavaFX standard.
Meaning that even if you are referencing another Envoy file, the
component will not be importable. Because of this, the
ClearableTextField is also present only in a slimmed down version, as
SceneBuilder additionally has problems when dealing with loading
resources.
Maven dependencies are now cached for faster build times. The cache is discarded once the pom.xml is updated.
The JAR files generated during the build are made available as workflow artifacts.