Merge pull request #140 from informatik-ag-ngl/b/ui_misc
Fix wrong stage size after scene switch and user list artifacts
This commit is contained in:
commit
3ed0907b4f
@ -141,7 +141,7 @@ public class Client implements Closeable {
|
|||||||
receiver.registerProcessor(MessageStatusChangeEvent.class, new MessageStatusChangeEventProcessor());
|
receiver.registerProcessor(MessageStatusChangeEvent.class, new MessageStatusChangeEventProcessor());
|
||||||
|
|
||||||
// Process user status changes
|
// Process user status changes
|
||||||
receiver.registerProcessor(UserStatusChangeEvent.class, new UserStatusChangeProcessor(localDB));
|
receiver.registerProcessor(UserStatusChangeEvent.class, eventBus::dispatch);
|
||||||
|
|
||||||
// Process message ID generation
|
// Process message ID generation
|
||||||
receiver.registerProcessor(IDGenerator.class, localDB::setIDGenerator);
|
receiver.registerProcessor(IDGenerator.class, localDB::setIDGenerator);
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
package envoy.client.net;
|
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
|
||||||
|
|
||||||
import envoy.client.data.LocalDB;
|
|
||||||
import envoy.data.User;
|
|
||||||
import envoy.event.EventBus;
|
|
||||||
import envoy.event.UserStatusChangeEvent;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Project: <strong>envoy-client</strong><br>
|
|
||||||
* File: <strong>UserStatusChangeProcessor.java</strong><br>
|
|
||||||
* Created: <strong>2 Feb 2020</strong><br>
|
|
||||||
*
|
|
||||||
* @author Leon Hofmeister
|
|
||||||
* @since Envoy Client v0.3-alpha
|
|
||||||
*/
|
|
||||||
public class UserStatusChangeProcessor implements Consumer<UserStatusChangeEvent> {
|
|
||||||
|
|
||||||
private final LocalDB localDB;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param localDB the local database in which status updates will by applied
|
|
||||||
* @since Envoy Client v0.3-alpha
|
|
||||||
*/
|
|
||||||
public UserStatusChangeProcessor(LocalDB localDB) { this.localDB = localDB; }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void accept(UserStatusChangeEvent evt) {
|
|
||||||
localDB.getUsers().values().stream().filter(u -> u.getID() == evt.getID()).map(User.class::cast).findFirst().get().setStatus(evt.get());
|
|
||||||
EventBus.getInstance().dispatch(evt);
|
|
||||||
}
|
|
||||||
}
|
|
@ -28,7 +28,10 @@ public class ContactListCell extends ListCell<Contact> {
|
|||||||
@Override
|
@Override
|
||||||
protected void updateItem(Contact contact, boolean empty) {
|
protected void updateItem(Contact contact, boolean empty) {
|
||||||
super.updateItem(contact, empty);
|
super.updateItem(contact, empty);
|
||||||
if (!empty && contact != null) {
|
if (empty || contact == null) {
|
||||||
|
setText(null);
|
||||||
|
setGraphic(null);
|
||||||
|
} else {
|
||||||
// the infoLabel displays specific contact info, i.e. status of a user or amount
|
// the infoLabel displays specific contact info, i.e. status of a user or amount
|
||||||
// of members in a group
|
// of members in a group
|
||||||
Label infoLabel = null;
|
Label infoLabel = null;
|
||||||
@ -51,7 +54,7 @@ public class ContactListCell extends ListCell<Contact> {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
infoLabel.setTextFill(textColor);
|
infoLabel.setTextFill(textColor);
|
||||||
} else
|
} else
|
||||||
// group specific infos
|
// group specific infos
|
||||||
infoLabel = new Label(String.valueOf(((Group) contact).getContacts().size()) + " members");
|
infoLabel = new Label(String.valueOf(((Group) contact).getContacts().size()) + " members");
|
||||||
setGraphic(new VBox(new Label(contact.getName()), infoLabel));
|
setGraphic(new VBox(new Label(contact.getName()), infoLabel));
|
||||||
|
@ -45,10 +45,15 @@ public class MessageListCell extends ListCell<Message> {
|
|||||||
@Override
|
@Override
|
||||||
protected void updateItem(Message message, boolean empty) {
|
protected void updateItem(Message message, boolean empty) {
|
||||||
super.updateItem(message, empty);
|
super.updateItem(message, empty);
|
||||||
setGraphic(!empty && message != null ? new HBox(
|
if(empty || message == null) {
|
||||||
|
setText(null);
|
||||||
|
setGraphic(null);
|
||||||
|
} else {
|
||||||
|
setGraphic(new HBox(
|
||||||
new VBox(
|
new VBox(
|
||||||
new Label(dateFormat.format(message.getCreationDate())),
|
new Label(dateFormat.format(message.getCreationDate())),
|
||||||
new Label(message.getText())),
|
new Label(message.getText())),
|
||||||
new Label("", new ImageView(statusImages.get(message.getStatus())))) : null);
|
new Label("", new ImageView(statusImages.get(message.getStatus())))));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -108,6 +108,7 @@ public final class SceneContext {
|
|||||||
sceneStack.push(scene);
|
sceneStack.push(scene);
|
||||||
stage.setScene(scene);
|
stage.setScene(scene);
|
||||||
applyCSS();
|
applyCSS();
|
||||||
|
stage.sizeToScene();
|
||||||
stage.show();
|
stage.show();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
@ -124,6 +125,7 @@ public final class SceneContext {
|
|||||||
if (!sceneStack.isEmpty()) {
|
if (!sceneStack.isEmpty()) {
|
||||||
stage.setScene(sceneStack.peek());
|
stage.setScene(sceneStack.peek());
|
||||||
applyCSS();
|
applyCSS();
|
||||||
|
stage.sizeToScene();
|
||||||
}
|
}
|
||||||
stage.show();
|
stage.show();
|
||||||
}
|
}
|
||||||
|
@ -22,9 +22,7 @@ import envoy.client.net.WriteProxy;
|
|||||||
import envoy.client.ui.ContactListCell;
|
import envoy.client.ui.ContactListCell;
|
||||||
import envoy.client.ui.MessageListCell;
|
import envoy.client.ui.MessageListCell;
|
||||||
import envoy.client.ui.SceneContext;
|
import envoy.client.ui.SceneContext;
|
||||||
import envoy.data.Contact;
|
import envoy.data.*;
|
||||||
import envoy.data.Message;
|
|
||||||
import envoy.data.MessageBuilder;
|
|
||||||
import envoy.event.EventBus;
|
import envoy.event.EventBus;
|
||||||
import envoy.event.MessageStatusChangeEvent;
|
import envoy.event.MessageStatusChangeEvent;
|
||||||
import envoy.event.UserStatusChangeEvent;
|
import envoy.event.UserStatusChangeEvent;
|
||||||
@ -105,7 +103,16 @@ public final class ChatScene {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Listen to user status changes
|
// Listen to user status changes
|
||||||
eventBus.register(UserStatusChangeEvent.class, e -> Platform.runLater(userList::refresh));
|
eventBus.register(UserStatusChangeEvent.class, e ->
|
||||||
|
userList.getItems()
|
||||||
|
.stream()
|
||||||
|
.filter(c -> c.getID() == e.getID())
|
||||||
|
.findAny()
|
||||||
|
.ifPresent(u -> {
|
||||||
|
((User) u).setStatus(e.get());
|
||||||
|
Platform.runLater(userList::refresh);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
// Listen to contacts changes
|
// Listen to contacts changes
|
||||||
eventBus.register(ContactOperationEvent.class, e -> {
|
eventBus.register(ContactOperationEvent.class, e -> {
|
||||||
|
Reference in New Issue
Block a user