1818
1919import com .techsenger .connectorfx .Connector ;
2020import com .techsenger .connectorfx .HighlightOptions ;
21+ import com .techsenger .connectorfx .LocalElement ;
2122import com .techsenger .connectorfx .event .NodeSelectedEvent ;
2223import com .techsenger .connectorfx .scenegraph .Element ;
2324import java .util .ArrayList ;
2425import java .util .List ;
2526import java .util .Objects ;
27+ import org .slf4j .Logger ;
28+ import org .slf4j .LoggerFactory ;
2629
2730/**
2831 * This is the single point to control the selected node.
3134 */
3235public class Selector {
3336
37+ private static final Logger logger = LoggerFactory .getLogger (Selector .class );
38+
3439 @ FunctionalInterface
3540 public interface SelectorListener {
3641 void onSelected (int oldWindowUid , int newWindowUid , Element oldElement , Element newElement );
3742 }
3843
3944 private final Connector connector ;
4045
46+ private final String logPrefix ;
47+
4148 private final List <SelectorListener > listeners = new ArrayList <>();
4249
4350 private HighlightOptions highlightOptions = new HighlightOptions (false , false , false );
@@ -48,8 +55,9 @@ public interface SelectorListener {
4855
4956 private Element selectedNode ;
5057
51- Selector (Connector connector ) {
58+ Selector (Connector connector , String logPrefix ) {
5259 this .connector = connector ;
60+ this .logPrefix = logPrefix ;
5361 // this event is fired only when a node is selected in inspector mode (using select button)
5462 connector .getEventBus ().subscribe (NodeSelectedEvent .class , (e ) -> {
5563 // When inspect mode is set to false the selection is removed because for selection
@@ -92,6 +100,7 @@ public Element getSelectedNode() {
92100
93101 void setSelectedWindowUid (Integer selectedWindowUid ) {
94102 this .selectedWindowUid = selectedWindowUid ;
103+ logger .debug ("{} Selected window UID: {}" , logPrefix , this .selectedWindowUid );
95104 }
96105
97106 void setSelectionVisible (boolean selectionVisible ) {
@@ -124,13 +133,25 @@ private void updateSelectedElements(Integer newWindowUid, Element newNode) {
124133 if (!Objects .equals (this .selectedWindowUid , newWindowUid ) || !Objects .equals (this .selectedNode , newNode )) {
125134 var oldWindowUid = this .selectedWindowUid ;
126135 var oldNode = this .selectedNode ;
127- this . selectedWindowUid = newWindowUid ;
128- this . selectedNode = newNode ;
136+ setSelectedWindowUid ( newWindowUid ) ;
137+ setSelectedNode ( newNode ) ;
129138 notifyListeners (oldWindowUid , newWindowUid , oldNode , newNode );
130139 }
131140 }
132141
133142 private void notifyListeners (int oldWindowUid , int newWindowUid , Element oldElement , Element newElement ) {
134143 this .listeners .stream ().forEach (l -> l .onSelected (oldWindowUid , newWindowUid , oldElement , newElement ));
135144 }
145+
146+ public void setSelectedNode (Element selectedNode ) {
147+ this .selectedNode = selectedNode ;
148+ if (logger .isDebugEnabled ()) {
149+ if (this .selectedNode != null && this .selectedNode .isNodeElement ()) {
150+ logger .debug ("{} Selected node: {} from window with UID: {}" , logPrefix , this .selectedNode ,
151+ ((LocalElement ) this .selectedNode ).unwrap ().getScene ().getWindow ().hashCode ());
152+ } else {
153+ logger .debug ("{} Selected node: {}" , logPrefix , this .selectedNode );
154+ }
155+ }
156+ }
136157}
0 commit comments