Slowly building the SceneGraph from the bottom.
Created a abstract class that imlements the Toggle interface for toggling between who one wants to chat.
This commit is contained in:
parent
68248c7175
commit
e4f9776f7f
@ -1,7 +1,19 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat;
|
||||||
|
|
||||||
|
import javafx.beans.property.BooleanProperty;
|
||||||
|
import javafx.beans.property.ObjectProperty;
|
||||||
|
import javafx.collections.ObservableMap;
|
||||||
import javafx.scene.Node;
|
import javafx.scene.Node;
|
||||||
|
import javafx.scene.control.Button;
|
||||||
|
import javafx.scene.control.Label;
|
||||||
|
import javafx.scene.control.Toggle;
|
||||||
|
import javafx.scene.control.ToggleGroup;
|
||||||
|
|
||||||
public class BroadcastButton extends Node {
|
/**
|
||||||
|
* Represents toggling to broadcast to everyone
|
||||||
|
*/
|
||||||
|
public class BroadcastButton extends ChatTargetToggle implements Toggle {
|
||||||
|
|
||||||
|
Label l = new Label("Broadcast");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,81 @@
|
|||||||
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat;
|
||||||
|
|
||||||
|
import javafx.beans.property.BooleanProperty;
|
||||||
|
import javafx.beans.property.ObjectProperty;
|
||||||
|
import javafx.beans.property.Property;
|
||||||
|
import javafx.collections.ObservableMap;
|
||||||
|
import javafx.scene.Node;
|
||||||
|
import javafx.scene.control.Button;
|
||||||
|
import javafx.scene.control.RadioButton;
|
||||||
|
import javafx.scene.control.Toggle;
|
||||||
|
import javafx.scene.control.ToggleGroup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If this is toggled than the client chat is operating in whisper mode.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public abstract class ChatTargetToggle extends Node implements Toggle{
|
||||||
|
|
||||||
|
BooleanProperty isToggled;
|
||||||
|
ObjectProperty<ToggleGroup> myFriends;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns The {@link ToggleGroup} to which this {@code Toggle} belongs.
|
||||||
|
*
|
||||||
|
* @return The {@link ToggleGroup} to which this {@code Toggle} belongs.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ToggleGroup getToggleGroup() {
|
||||||
|
return myFriends.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the {@link ToggleGroup} to which this {@code Toggle} belongs.
|
||||||
|
*
|
||||||
|
* @param toggleGroup The new {@link ToggleGroup}.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setToggleGroup(ToggleGroup toggleGroup) {
|
||||||
|
myFriends.bindBidirectional((Property<ToggleGroup>) toggleGroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link ToggleGroup} to which this {@code Toggle} belongs.
|
||||||
|
*
|
||||||
|
* @return the toggle group property
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ObjectProperty<ToggleGroup> toggleGroupProperty() {
|
||||||
|
return myFriends;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates whether this {@code Toggle} is selected.
|
||||||
|
*
|
||||||
|
* @return {@code true} if this {@code Toggle} is selected.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean isSelected() {
|
||||||
|
return isToggled.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets this {@code Toggle} as selected or unselected.
|
||||||
|
*
|
||||||
|
* @param selected {@code true} to make this {@code Toggle} selected.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setSelected(boolean selected) {
|
||||||
|
this.isToggled.set(selected);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The selected state for this {@code Toggle}.
|
||||||
|
*
|
||||||
|
* @return the selected property
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public BooleanProperty selectedProperty() {
|
||||||
|
return isToggled;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,20 +1,42 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat;
|
||||||
|
|
||||||
import javafx.scene.Parent;
|
import javafx.scene.Node;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.control.Button;
|
||||||
import javafx.scene.SceneAntialiasing;
|
import javafx.scene.control.TextArea;
|
||||||
import javafx.scene.control.Label;
|
|
||||||
import javafx.scene.layout.Pane;
|
import javafx.scene.layout.Pane;
|
||||||
import javafx.scene.paint.Paint;
|
|
||||||
|
|
||||||
public class ChatView {
|
/**
|
||||||
|
* This is the view of the client chat gui.
|
||||||
|
*/
|
||||||
|
public class ChatView extends Node implements NodeWithChildren, ChildNode {
|
||||||
|
|
||||||
private Label send = new Label("Send");
|
|
||||||
|
|
||||||
private Pane root;
|
private Pane root;
|
||||||
|
|
||||||
private Pane createNodeHierarchy(){
|
public void createNodeHierarchy(){
|
||||||
Pane p = new Pane();
|
Button send = new SendButton();
|
||||||
return p;
|
OutMsgTargetChooserNode chooseTarget = new OutMsgTargetChooserNode();
|
||||||
|
TextArea clientOutgoingChatMsg = new TextArea();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Pane getRootPane() {
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ChildNode getInstance() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void create() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getChildren() {
|
||||||
|
//TODO implement
|
||||||
|
NodeWithChildren.super.getChildren();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,10 @@
|
|||||||
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat;
|
||||||
|
|
||||||
|
import javafx.scene.layout.Pane;
|
||||||
|
|
||||||
|
public interface ChildNode {
|
||||||
|
|
||||||
|
public Pane getRootPane();
|
||||||
|
public ChildNode getInstance();
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Any class that represents a JavaFX node and has children should implement this interface
|
||||||
|
*/
|
||||||
|
public interface NodeWithChildren {
|
||||||
|
|
||||||
|
void create();
|
||||||
|
|
||||||
|
public default void getChildren(){};
|
||||||
|
|
||||||
|
void createNodeHierarchy();
|
||||||
|
}
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat;
|
||||||
|
|
||||||
|
import javafx.collections.ObservableList;
|
||||||
|
import javafx.scene.Node;
|
||||||
|
import javafx.scene.control.Toggle;
|
||||||
|
import javafx.scene.control.ToggleGroup;
|
||||||
|
import javafx.scene.layout.HBox;
|
||||||
|
import javafx.scene.layout.Pane;
|
||||||
|
|
||||||
|
public class OutMsgTargetChooserNode extends ToggleGroup implements NodeWithChildren {
|
||||||
|
|
||||||
|
private Pane root;
|
||||||
|
private ObservableList<Node> targets;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void create() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getChildren() {
|
||||||
|
NodeWithChildren.super.getChildren();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createNodeHierarchy() {
|
||||||
|
this.root = new HBox();
|
||||||
|
for(Node n : targets)
|
||||||
|
root.getChildren().add(n);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,7 +1,16 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat;
|
||||||
|
|
||||||
import javafx.scene.Node;
|
import javafx.scene.Node;
|
||||||
|
import javafx.scene.control.Button;
|
||||||
|
|
||||||
public class SendButton extends Node {
|
public class SendButton extends Button implements UINode {
|
||||||
|
|
||||||
|
|
||||||
|
public SendButton() {
|
||||||
|
super("Send");
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void listen() {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,9 @@
|
|||||||
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Any class that represents a JavaFX node that takes user input should implement this interface.
|
||||||
|
*/
|
||||||
|
public interface UINode {
|
||||||
|
|
||||||
|
void listen();
|
||||||
|
}
|
||||||
@ -1,7 +1,12 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat;
|
package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat;
|
||||||
|
|
||||||
import javafx.scene.Node;
|
import javafx.scene.control.Label;
|
||||||
|
|
||||||
public class WhisperButton extends Node {
|
/**
|
||||||
|
* Represents the toggle for a whisper chat.
|
||||||
|
*/
|
||||||
|
public class WhisperButton extends ChatTargetToggle {
|
||||||
|
|
||||||
|
Label l = new Label("Whisper");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user