Added a context menu to the message list and ability to copy a message
context menu contains a few menu items that will be populated with functionality later on.
This commit is contained in:
		| @@ -1,5 +1,7 @@ | |||||||
| package envoy.client.ui.controller; | package envoy.client.ui.controller; | ||||||
|  |  | ||||||
|  | import java.awt.Toolkit; | ||||||
|  | import java.awt.datatransfer.StringSelection; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| import java.util.logging.Level; | import java.util.logging.Level; | ||||||
| import java.util.logging.Logger; | import java.util.logging.Logger; | ||||||
| @@ -310,4 +312,22 @@ public final class ChatScene { | |||||||
| 	 * @since Envoy Client v0.1-beta | 	 * @since Envoy Client v0.1-beta | ||||||
| 	 */ | 	 */ | ||||||
| 	private void scrollToMessageListEnd() { messageList.scrollTo(messageList.getItems().size() - 1); } | 	private void scrollToMessageListEnd() { messageList.scrollTo(messageList.getItems().size() - 1); } | ||||||
|  |  | ||||||
|  | 	// =========== contextMenu actions ========== // | ||||||
|  |  | ||||||
|  | 	@FXML | ||||||
|  | 	private void copyMessage() { | ||||||
|  | 		Toolkit.getDefaultToolkit() | ||||||
|  | 			.getSystemClipboard() | ||||||
|  | 			.setContents(new StringSelection(messageList.getSelectionModel().getSelectedItem().getText()), null); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	@FXML | ||||||
|  | 	private void deleteMessage() {} | ||||||
|  |  | ||||||
|  | 	@FXML | ||||||
|  | 	private void forwardMessage() {} | ||||||
|  |  | ||||||
|  | 	@FXML | ||||||
|  | 	private void quoteMessage() {} | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,5 +1,15 @@ | |||||||
| .button, .list-cell { | .button, .list-cell { | ||||||
| 	-fx-background-radius: 5em; | 	-fx-background-radius: 5.0em; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .context-menu, .context-menu > * { | ||||||
|  | 	-fx-background-radius: 15px; | ||||||
|  | 	/*TODO: solution below does not work */ | ||||||
|  | 	-fx-background-color: transparent; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .menu-item { | ||||||
|  | 	-fx-background-radius: 15.0px; | ||||||
| } | } | ||||||
|  |  | ||||||
| .button:hover { | .button:hover { | ||||||
| @@ -34,12 +44,12 @@ | |||||||
|  |  | ||||||
| .received-message { | .received-message { | ||||||
| 	-fx-alignment: center-left; | 	-fx-alignment: center-left; | ||||||
| 	-fx-background-radius: 4em; | 	-fx-background-radius: 4.0em; | ||||||
| 	-fx-text-alignment: right; | 	-fx-text-alignment: right; | ||||||
| } | } | ||||||
|  |  | ||||||
| .own-message { | .own-message { | ||||||
| 	-fx-alignment: center-right; | 	-fx-alignment: center-right; | ||||||
| 	-fx-background-radius: 4em; | 	-fx-background-radius: 4.0em; | ||||||
| 	-fx-text-alignment: left; | 	-fx-text-alignment: left; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -18,11 +18,11 @@ | |||||||
| 	-fx-background-color: lightgray; | 	-fx-background-color: lightgray; | ||||||
| } | } | ||||||
|  |  | ||||||
| .list-view, .list-cell, .text-area .content, .text-field, .password-field, .tooltip, .pane, .pane .content, .vbox, .titled-pane > .title, .titled-pane > *.content { | .list-view, .list-cell, .text-area .content, .text-field, .password-field, .tooltip, .pane, .pane .content, .vbox, .titled-pane > .title, .titled-pane > *.content, .context-menu, .menu-item { | ||||||
| 	-fx-background-color: dimgray; | 	-fx-background-color: dimgray; | ||||||
| } | } | ||||||
|  |  | ||||||
| .list-cell:selected, .list-cell:selected > * { | .list-cell:selected, .list-cell:selected > *, .menu-item:hover { | ||||||
|     -fx-background-color: darkviolet; |     -fx-background-color: darkviolet; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -11,6 +11,6 @@ | |||||||
| 	-fx-background-color: lightgreen; | 	-fx-background-color: lightgreen; | ||||||
| } | } | ||||||
|  |  | ||||||
| .own-message { | .own-message , .menu-item { | ||||||
| 	-fx-background-color: lightgray; | 	-fx-background-color: lightgray; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -2,8 +2,10 @@ | |||||||
|  |  | ||||||
| <?import javafx.geometry.Insets?> | <?import javafx.geometry.Insets?> | ||||||
| <?import javafx.scene.control.Button?> | <?import javafx.scene.control.Button?> | ||||||
|  | <?import javafx.scene.control.ContextMenu?> | ||||||
| <?import javafx.scene.control.Label?> | <?import javafx.scene.control.Label?> | ||||||
| <?import javafx.scene.control.ListView?> | <?import javafx.scene.control.ListView?> | ||||||
|  | <?import javafx.scene.control.MenuItem?> | ||||||
| <?import javafx.scene.control.TextArea?> | <?import javafx.scene.control.TextArea?> | ||||||
| <?import javafx.scene.control.Tooltip?> | <?import javafx.scene.control.Tooltip?> | ||||||
| <?import javafx.scene.layout.ColumnConstraints?> | <?import javafx.scene.layout.ColumnConstraints?> | ||||||
| @@ -50,7 +52,17 @@ | |||||||
|          </GridPane.margin> |          </GridPane.margin> | ||||||
|          <padding> |          <padding> | ||||||
|             <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> |             <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> | ||||||
|          </padding></ListView> |          </padding> | ||||||
|  |          <contextMenu> | ||||||
|  |             <ContextMenu anchorLocation="CONTENT_TOP_LEFT"> | ||||||
|  |               <items> | ||||||
|  |                 <MenuItem mnemonicParsing="false" text="Copy" onAction="#copyMessage"/> | ||||||
|  |                 <MenuItem mnemonicParsing="false" text="Delete" onAction="#deleteMessage"/> | ||||||
|  |                 <MenuItem mnemonicParsing="false" text="Forward" onAction="#forwardMessage"/> | ||||||
|  |                 <MenuItem mnemonicParsing="false" text="Quote" onAction="#quoteMessage"/>                                 | ||||||
|  |               </items> | ||||||
|  |             </ContextMenu> | ||||||
|  |          </contextMenu></ListView> | ||||||
| 		<Button fx:id="postButton" defaultButton="true" disable="true" mnemonicParsing="true" onAction="#postMessage" prefHeight="10.0" prefWidth="65.0" text="_Post" GridPane.columnIndex="2" GridPane.halignment="CENTER" GridPane.rowIndex="3" GridPane.valignment="CENTER"> | 		<Button fx:id="postButton" defaultButton="true" disable="true" mnemonicParsing="true" onAction="#postMessage" prefHeight="10.0" prefWidth="65.0" text="_Post" GridPane.columnIndex="2" GridPane.halignment="CENTER" GridPane.rowIndex="3" GridPane.valignment="CENTER"> | ||||||
|          <GridPane.margin> |          <GridPane.margin> | ||||||
|             <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> |             <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" /> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 delvh
					delvh