@@ -345,49 +345,49 @@ public void showContextMenu(Component c, int x, int y) {
345345 private JPopupMenu createContextMenu () {
346346 JPopupMenu contextMenu = new JPopupMenu ();
347347 contextMenu .add (addSubOperatorItem );
348- addSubOperatorItem . addActionListener (
348+ setMenuItemAction ( addSubOperatorItem ,
349349 e -> {
350350 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
351351 ow .addSubOperator ();
352352 });
353353
354354 contextMenu .add (addTopFolderItem );
355- addTopFolderItem . addActionListener (
355+ setMenuItemAction ( addTopFolderItem ,
356356 e -> {
357357 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
358358 ow .addTopFolder ();
359359 });
360360
361361 contextMenu .add (addFileItem );
362- addFileItem . addActionListener (
362+ setMenuItemAction ( addFileItem ,
363363 e -> {
364364 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
365365 ow .addFile ();
366366 });
367367
368368 impasseSubMenu .add (tieImpasseItem );
369- tieImpasseItem . addActionListener (
369+ setMenuItemAction ( tieImpasseItem ,
370370 e -> {
371371 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
372372 ow .addImpasse ("Impasse__Operator_Tie" );
373373 });
374374
375375 impasseSubMenu .add (conflictImpasseItem );
376- conflictImpasseItem . addActionListener (
376+ setMenuItemAction ( conflictImpasseItem ,
377377 e -> {
378378 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
379379 ow .addImpasse ("Impasse__Operator_Conflict" );
380380 });
381381
382382 impasseSubMenu .add (constraintImpasseItem );
383- constraintImpasseItem . addActionListener (
383+ setMenuItemAction ( constraintImpasseItem ,
384384 e -> {
385385 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
386386 ow .addImpasse ("Impasse__Operator_Constraint-Failure" );
387387 });
388388
389389 impasseSubMenu .add (stateNoChangeImpasseItem );
390- stateNoChangeImpasseItem . addActionListener (
390+ setMenuItemAction ( stateNoChangeImpasseItem ,
391391 e -> {
392392 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
393393 ow .addImpasse ("Impasse__State_No-Change" );
@@ -396,14 +396,14 @@ private JPopupMenu createContextMenu() {
396396 contextMenu .add (impasseSubMenu );
397397
398398 contextMenu .add (openRulesItem );
399- openRulesItem . addActionListener (
399+ setMenuItemAction ( openRulesItem ,
400400 e -> {
401401 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
402402 ow .openRules ();
403403 });
404404
405405 contextMenu .add (openDataMapItem );
406- openDataMapItem . addActionListener (
406+ setMenuItemAction ( openDataMapItem ,
407407 e -> {
408408 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
409409 ow .openDataMap ();
@@ -412,14 +412,14 @@ private JPopupMenu createContextMenu() {
412412 contextMenu .addSeparator ();
413413
414414 contextMenu .add (searchItem );
415- searchItem . addActionListener (
415+ setMenuItemAction ( searchItem ,
416416 e -> {
417417 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
418418 ow .searchFiles ();
419419 });
420420
421421 contextMenu .add (replaceItem );
422- replaceItem . addActionListener (
422+ setMenuItemAction ( replaceItem ,
423423 e -> {
424424 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
425425 ow .replaceFiles ();
@@ -428,36 +428,36 @@ private JPopupMenu createContextMenu() {
428428 contextMenu .addSeparator ();
429429
430430 contextMenu .add (deleteItem );
431- deleteItem . addActionListener (
431+ setMenuItemAction ( deleteItem ,
432432 e -> {
433433 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
434434 ow .delete ();
435435 });
436436
437437 contextMenu .add (renameItem );
438- renameItem . addActionListener (
438+ setMenuItemAction ( renameItem ,
439439 e -> {
440440 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
441441 ow .rename ();
442442 });
443443
444444 contextMenu .add (exportItem );
445- exportItem . addActionListener (
445+ setMenuItemAction ( exportItem ,
446446 e -> {
447447 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
448448 ow .export ();
449449 });
450450
451451 contextMenu .add (importItem );
452- importItem . addActionListener (
452+ setMenuItemAction ( importItem ,
453453 e -> {
454454 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
455455 ow .importFunc ();
456456 });
457457
458458 contextMenu .add (generateDataMapItem );
459459 // actionPerformed
460- generateDataMapItem . addActionListener (
460+ setMenuItemAction ( generateDataMapItem ,
461461 ae -> {
462462 Vector <FeedbackListEntry > parseErrors = new Vector <>();
463463 Vector <FeedbackListEntry > vecGenerations = new Vector <>();
@@ -471,7 +471,7 @@ private JPopupMenu createContextMenu() {
471471 });
472472
473473 contextMenu .add (checkChildrenAgainstDataMapItem );
474- checkChildrenAgainstDataMapItem . addActionListener (
474+ setMenuItemAction ( checkChildrenAgainstDataMapItem ,
475475 new ActionListener () {
476476 public void actionPerformed (ActionEvent e ) {
477477 OperatorWindow ow = (OperatorWindow ) contextMenu .getInvoker ();
@@ -481,6 +481,13 @@ public void actionPerformed(ActionEvent e) {
481481 return contextMenu ;
482482 }
483483
484+ private void setMenuItemAction (JMenuItem menuItem , ActionListener newListener ) {
485+ for (ActionListener listener : menuItem .getActionListeners ()) {
486+ menuItem .removeActionListener (listener );
487+ }
488+ menuItem .addActionListener (newListener );
489+ }
490+
484491 /**
485492 * just returns the name of the node
486493 *
0 commit comments