@@ -168,24 +168,17 @@ public class SaveAndRestoreController extends SaveAndRestoreBaseController
168168 @ FXML
169169 private VBox treeViewPane ;
170170
171- protected SaveAndRestoreService saveAndRestoreService ;
171+ private SaveAndRestoreService saveAndRestoreService ;
172+ private WebSocketClientService webSocketClientService ;
172173
173174 private final ObjectMapper objectMapper = new ObjectMapper ();
174-
175175 protected MultipleSelectionModel <TreeItem <Node >> browserSelectionModel ;
176-
177176 private static final String TREE_STATE = "tree_state" ;
178-
179177 private static final String FILTER_NAME = "filter_name" ;
180-
181178 protected static final Logger LOG = Logger .getLogger (SaveAndRestoreController .class .getName ());
182-
183179 protected Comparator <TreeItem <Node >> treeNodeComparator ;
184-
185180 protected SimpleBooleanProperty disabledUi = new SimpleBooleanProperty (false );
186-
187181 private final SimpleBooleanProperty filterEnabledProperty = new SimpleBooleanProperty (false );
188-
189182 private static final Logger logger = Logger .getLogger (SaveAndRestoreController .class .getName ());
190183
191184 @ SuppressWarnings ("unused" )
@@ -263,7 +256,6 @@ public void initialize(URL url, ResourceBundle resourceBundle) {
263256 treeNodeComparator = Comparator .comparing (TreeItem ::getValue );
264257
265258 saveAndRestoreService = SaveAndRestoreService .getInstance ();
266- saveAndRestoreService .openWebSocket ();
267259 treeView .getSelectionModel ().setSelectionMode (SelectionMode .MULTIPLE );
268260 treeView .getStylesheets ().add (getClass ().getResource ("/save-and-restore-style.css" ).toExternalForm ());
269261
@@ -291,9 +283,6 @@ public void initialize(URL url, ResourceBundle resourceBundle) {
291283 });
292284
293285 treeView .setShowRoot (true );
294-
295- saveAndRestoreService .addWebSocketMessageHandler (this );
296-
297286 treeView .setCellFactory (p -> new BrowserTreeCell (this ));
298287 treeViewPane .disableProperty ().bind (disabledUi );
299288 progressIndicator .visibleProperty ().bind (disabledUi );
@@ -369,6 +358,12 @@ public Filter fromString(String s) {
369358 loadTreeData ();
370359
371360 webSocketTrackerLabel .textProperty ().bind (webSocketTrackerText );
361+
362+ webSocketClientService = WebSocketClientService .getInstance ();
363+ webSocketClientService .addWebSocketMessageHandler (this );
364+ webSocketClientService .setConnectCallback (() -> Platform .runLater (() -> webSocketTrackerText .setValue ("Web Socket Connected" )));
365+ webSocketClientService .setDisconnectCallback (() -> Platform .runLater (() -> webSocketTrackerText .setValue ("Web Socket Disconnected" )));
366+ webSocketClientService .connect ();
372367 }
373368
374369 /**
@@ -540,6 +535,7 @@ public SearchAndFilterTab openSearchWindow() {
540535 return searchAndFilterTab ;
541536 }
542537 }
538+
543539 /**
544540 * Creates a new folder {@link Node}.
545541 */
@@ -791,7 +787,7 @@ private void nodeChanged(Node node) {
791787 nodeSubjectToUpdate .setValue (node );
792788 // For updated and expanded folder nodes, refresh with respect to child nodes as
793789 // a move/copy operation may add/remove nodes.
794- if (nodeSubjectToUpdate .getValue ().getNodeType ().equals (NodeType .FOLDER ) && nodeSubjectToUpdate .isExpanded ()){
790+ if (nodeSubjectToUpdate .getValue ().getNodeType ().equals (NodeType .FOLDER ) && nodeSubjectToUpdate .isExpanded ()) {
795791 expandTreeNode (nodeSubjectToUpdate );
796792 }
797793 }
@@ -802,7 +798,7 @@ private void nodeChanged(Node node) {
802798 *
803799 * @param nodeId Unique id of the added {@link Node}
804800 */
805- private void nodeAdded (String nodeId ){
801+ private void nodeAdded (String nodeId ) {
806802 Node newNode = saveAndRestoreService .getNode (nodeId );
807803 try {
808804 Node parentNode = saveAndRestoreService .getParentNode (nodeId );
@@ -819,11 +815,12 @@ private void nodeAdded(String nodeId){
819815 /**
820816 * Handles callback in order to update the tree view when a {@link Node} has been deleted.
821817 * The purpose is to update the {@link TreeView} accordingly to reflect the change.
818+ *
822819 * @param nodeId Unique id of the deleted {@link Node}
823820 */
824- private void nodeRemoved (String nodeId ){
821+ private void nodeRemoved (String nodeId ) {
825822 TreeItem <Node > treeItemToRemove = recursiveSearch (nodeId , treeView .getRoot ());
826- if (treeItemToRemove != null ){
823+ if (treeItemToRemove != null ) {
827824 treeItemToRemove .getParent ().getChildren ().remove (treeItemToRemove );
828825 }
829826 }
@@ -932,8 +929,9 @@ public void saveLocalState() {
932929
933930 public void handleTabClosed () {
934931 saveLocalState ();
935- saveAndRestoreService .closeWebSocket ();
936- saveAndRestoreService .removeWebSocketMessageHandler (this );
932+ webSocketClientService .closeWebSocket ();
933+ webSocketClientService .removeWebSocketMessageHandler (this );
934+ webSocketClientService .close ();
937935 }
938936
939937 /**
@@ -1298,10 +1296,10 @@ public boolean mayPaste() {
12981296 if (clipBoardContent == null || browserSelectionModel .getSelectedItems ().size () != 1 ) {
12991297 return false ;
13001298 }
1301- if (selectedItemsProperty .size () != 1 ||
1302- selectedItemsProperty .get (0 ).getUniqueId ().equals (Node .ROOT_FOLDER_UNIQUE_ID ) ||
1303- (!selectedItemsProperty .get (0 ).getNodeType ().equals (NodeType .FOLDER ) && !selectedItemsProperty .get (0 ).getNodeType ().equals (NodeType .CONFIGURATION ))){
1304- return false ;
1299+ if (selectedItemsProperty .size () != 1 ||
1300+ selectedItemsProperty .get (0 ).getUniqueId ().equals (Node .ROOT_FOLDER_UNIQUE_ID ) ||
1301+ (!selectedItemsProperty .get (0 ).getNodeType ().equals (NodeType .FOLDER ) && !selectedItemsProperty .get (0 ).getNodeType ().equals (NodeType .CONFIGURATION ))) {
1302+ return false ;
13051303 }
13061304 // Check is made if target node is of supported type for the clipboard content.
13071305 List <Node > selectedNodes = (List <Node >) clipBoardContent ;
@@ -1491,14 +1489,13 @@ private void addOptionalLoggingMenuItem() {
14911489 }
14921490
14931491 @ Override
1494- public void handleWebSocketMessage (SaveAndRestoreWebSocketMessage <?> saveAndRestoreWebSocketMessage ){
1495- switch (saveAndRestoreWebSocketMessage .messageType ()){
1496- case NODE_ADDED -> nodeAdded ((String )saveAndRestoreWebSocketMessage .payload ());
1497- case NODE_REMOVED -> nodeRemoved ((String )saveAndRestoreWebSocketMessage .payload ());
1498- case NODE_UPDATED -> nodeChanged ((Node )saveAndRestoreWebSocketMessage .payload ());
1499- case FILTER_ADDED_OR_UPDATED -> filterAddedOrUpdated ((Filter )saveAndRestoreWebSocketMessage .payload ());
1500- case FILTER_REMOVED -> filterRemoved ((String )saveAndRestoreWebSocketMessage .payload ());
1492+ public void handleWebSocketMessage (SaveAndRestoreWebSocketMessage saveAndRestoreWebSocketMessage ) {
1493+ switch (saveAndRestoreWebSocketMessage .messageType ()) {
1494+ case NODE_ADDED -> nodeAdded ((String ) saveAndRestoreWebSocketMessage .payload ());
1495+ case NODE_REMOVED -> nodeRemoved ((String ) saveAndRestoreWebSocketMessage .payload ());
1496+ case NODE_UPDATED -> nodeChanged ((Node ) saveAndRestoreWebSocketMessage .payload ());
1497+ case FILTER_ADDED_OR_UPDATED -> filterAddedOrUpdated ((Filter ) saveAndRestoreWebSocketMessage .payload ());
1498+ case FILTER_REMOVED -> filterRemoved ((String ) saveAndRestoreWebSocketMessage .payload ());
15011499 }
15021500 }
1503-
15041501}
0 commit comments