@@ -424,15 +424,15 @@ private void deleteGraphElement(MouseEvent mouseEvent) {
424424 * Defines the Object, or range, of the property, and creates the association between the Subject and Object.
425425 * @param mouseEvent the second click on the canvas when 'Property' is selected.
426426 */
427- private void addObjectOfProperty (MouseEvent mouseEvent , Vertex obj ) {
428- obj .setSnapTo (subject .getX (), subject .getY (), mouseEvent .getX (), mouseEvent .getY ());
427+ private void addObjectOfProperty (MouseEvent mouseEvent , Vertex object ) {
428+ object .setSnapTo (subject .getX (), subject .getY (), mouseEvent .getX (), mouseEvent .getY ());
429429
430- arrow .setEndX (obj .getX ());
431- arrow .setEndY (obj .getY ());
430+ arrow .setEndX (object .getX ());
431+ arrow .setEndY (object .getY ());
432432
433433 StackPane compiledProperty = new StackPane ();
434- compiledProperty .setLayoutX (subject .getX () < obj .getX () ? subject .getX () : obj .getX ());
435- compiledProperty .setLayoutY (subject .getY () < obj .getY () ? subject .getY () : obj .getY ());
434+ compiledProperty .setLayoutX (subject .getX () < object .getX () ? subject .getX () : object .getX ());
435+ compiledProperty .setLayoutY (subject .getY () < object .getY () ? subject .getY () : object .getY ());
436436
437437 ArrayList <String > propertyInfo = showNameElementDialog ();
438438 if (propertyInfo == null || propertyInfo .size () == 0 ){
@@ -451,14 +451,21 @@ private void addObjectOfProperty(MouseEvent mouseEvent, Vertex obj) {
451451 Insets .EMPTY
452452 )));
453453
454+ double textWidth = (new Text (propertyInfo .get (0 ))).getBoundsInLocal ().getWidth ();
455+ if (textWidth > arrow .getWidth ()) {
456+ double overrunOneSide = (textWidth - arrow .getWidth ()) / 2 ;
457+ compiledProperty .setLayoutX (compiledProperty .getLayoutX () - overrunOneSide );
458+ }
459+
454460 compiledProperty .getChildren ().addAll (arrow , propertyName );
455461 drawPane .getChildren ().add (compiledProperty );
456462 compiledProperty .toBack ();
457463
458- Edge edge = new Edge (compiledProperty , propertyName , subject , obj );
464+ Edge edge = new Edge (compiledProperty , propertyName , subject , object );
465+
459466 properties .add (edge );
460467 subject .addOutgoingEdge (edge );
461- obj .addIncomingEdge (edge );
468+ object .addIncomingEdge (edge );
462469
463470 statusLbl .setText ("Property " + propertyName .getText () + " created. " );
464471 subject = null ;
@@ -521,7 +528,6 @@ private void addElementSubaction(MouseEvent mouseEvent) {
521528 } else isClass = !elementName .getText ().matches (globalLiteralRegex + "|" + instanceLiteralRegex );
522529
523530 double textWidth = elementName .getBoundsInLocal ().getWidth ();
524-
525531 if (isClass ){
526532 Ellipse elementType = new Ellipse (x , y , textWidth / 2 > 62.5 ? textWidth / 2 + 10 : 62.5 , 37.5 );
527533 elementType .setFill (Color .web ("f4f4f4" ));
0 commit comments