jjazzboss opened a new issue, #5202:
URL: https://github.com/apache/netbeans/issues/5202

   ### Apache NetBeans version
   
   Apache NetBeans 16
   
   ### What happened
   
   I was editing a java file, I noticed the Exception appeared but not sure 
when exactly, and what I was doing when it happened.
   
   ### How to reproduce
   
   I can't reproduce but I was editing the switch/case of the 2 methods of a 
single java file when it happened. I copied the 2 methods below (if you need 
the whole file tell me).
   =====
   ```
       @Override
       public void noteDragged(MouseEvent e, NoteView nvSource)
       {
           var neSource = nvSource.getModel();
           var point = e.getPoint();
           boolean overrideSnapSetting = isOverrideSnapSetting(e);
           Point editorPoint = SwingUtilities.convertPoint(nvSource, 
e.getPoint(), nvSource.getParent());
           editorPoint.x = Math.max(0, editorPoint.x);
           editorPoint.x = Math.min(nvSource.getParent().getWidth() - 1, 
editorPoint.x);
           float editorPointPos = editor.getPositionFromPoint(editorPoint);
           Quantization q = editor.getQuantization();
           
           
           if (!isDragging)
           {
               // Start dragging
               isDragging = true;
               dragStartPos = editorPointPos;
               dragNoteOffset = point;
               dragStartPitch = neSource.getPitch();
               mapSrcDragNotes.clear();
   
               // Adjust selection if required
               var selectedNotes = editor.getSelectedNotes();
               if (!selectedNotes.contains(neSource))
               {
                   editor.unselectAll();
                   nvSource.setSelected(true);
                   // Create one drag note
                   mapSrcDragNotes.put(neSource, neSource.clone());
               } else
               {
                   // Create the drag notes for the selected notes
                   selectedNotes.forEach(ne -> mapSrcDragNotes.put(ne, 
ne.clone()));
               }
               
               
               switch (state)
               {
                   case EDITOR:
                   case RESIZE_WEST:
                   case RESIZE_EAST:
                       mapSrcDragNotes.keySet().forEach(ne -> 
spModel.replace(ne, mapSrcDragNotes.get(ne)));
                       break;
                   case MOVE:
                   case COPY:
                       
                       mapSrcDragNotes.values().forEach(ne -> spModel.add(ne));
                       dragNoteView = 
editor.getNoteView(mapSrcDragNotes.get(neSource));
   
                       // Listen to ctrl key
                       addControlKeyListener(dragNoteView);
                       
                       break;
                   default:
                       throw new AssertionError(state.name());
               }
               
               
               LOGGER.log(Level.FINE, "\n----- noteDragged() ----- START ne={0} 
  state={1}  dragNoteStartPos={2}  mapSrcDragNotes={3}", new Object[]
               {
                   neSource, state, dragStartPos, mapSrcDragNotes
               });
               
               
           } else
           {
               // Continue dragging
   
   
               // Quantize new position if required
               if ((editor.isSnapEnabled() && !overrideSnapSetting) || 
(!editor.isSnapEnabled() && overrideSnapSetting))
               {
                   editorPointPos = Quantizer.getQuantized(q, editorPointPos);
               }
               
               
               switch (state)
               {
                   case EDITOR:
                       break;
                   case RESIZE_WEST:
                   {
                       float dPos = editorPointPos - dragStartPos;
                       
                       for (var srcNe : mapSrcDragNotes.keySet())
                       {
                           float newPos = srcNe.getPositionInBeats() + dPos;
                           
                           if (newPos >= 0 && dPos < 
(srcNe.getDurationInBeats() - 0.05f))
                           {
                               var dragNe = mapSrcDragNotes.get(srcNe);
                               float newDur = srcNe.getDurationInBeats() - dPos;
                               var newNe = srcNe.getCopyDurPos(newDur, newPos);
                               spModel.replace(dragNe, newNe);
                               mapSrcDragNotes.put(srcNe, newNe);
                           }
                       }
                   }
                   break;
                   case RESIZE_EAST:
                   {
                       float dPos = editorPointPos - dragStartPos;
                       
                       for (var srcNe : mapSrcDragNotes.keySet())
                       {
                           float newDur = Math.max(srcNe.getDurationInBeats() + 
dPos, 0.05f);
                           if (Float.floatToIntBits(srcNe.getDurationInBeats()) 
!= Float.floatToIntBits(newDur) && (srcNe.getPositionInBeats() + newDur) < 
spModel.getBeatRange().to)
                           {
                               var dragNe = mapSrcDragNotes.get(srcNe);
                               var newNe = srcNe.getCopyDur(newDur);
                               spModel.replace(dragNe, newNe);
                               mapSrcDragNotes.put(srcNe, newNe);
                           }
                       }
                   }
                   break;
                   case COPY:
                   case MOVE:
                   {
                       // Pitch delta
                       int newPitch = editor.getPitchFromPoint(editorPoint);
                       int dPitch = newPitch - dragStartPitch;
   
                       // Position delta
                       float dPos = editorPointPos - dragStartPos;
   
   
                       // Apply to each note
                       for (var sne : mapSrcDragNotes.keySet())
                       {
                           var dragNe = mapSrcDragNotes.get(sne);
   
                           // Calculate pos/pitch changes
                           float newPos = sne.getPositionInBeats() + dPos;
                           newPos = Math.max(0, newPos);
                           if (newPos + sne.getDurationInBeats() >= 
spModel.getBeatRange().to)
                           {
                               newPos = spModel.getBeatRange().to - 
sne.getDurationInBeats();
                           }
                           newPitch = isConstantPitchModifier(e) ? 
sne.getPitch() : MidiUtilities.limit(sne.getPitch() + dPitch);
                           
                           
                           if (dragNe.getPitch() == newPitch && 
Float.floatToIntBits(dragNe.getPositionInBeats()) == 
Float.floatToIntBits(newPos))
                           {
                               
                               return;
                           }
                           LOGGER.log(Level.FINE, "\nnoteDragged() continue 
dragging newPitch={0} newPos={1}", new Object[]
                           {
                               newPitch, newPos
                           });
                           
                           
                           var newNe = spModel.move(dragNe, newPos);   // Does 
nothing if newPos unchanged                        
                           if (newNe.getPitch() != newPitch)
                           {
                               var newNePitch = newNe.getCopyPitch(newPitch);
                               spModel.replace(newNe, newNePitch);
                               newNe = newNePitch;
                           }
                           
                           mapSrcDragNotes.put(sne, newNe);
                       }
                       
                   }
                   break;
                   default:
                       throw new AssertionError(state.name());
               }
           }
       }
       
       @Override
       public void noteReleased(MouseEvent e, NoteView nv)
       {
           if (!isDragging)
           {
               return;
           }
           
           var ne = nv.getModel();
           var container = nv.getParent();         // Save if nv is removed
           LOGGER.log(Level.FINE, "\nnoteReleased() -- state={0} ne={1} 
mapSrcDragNotes={2}", new Object[]
           {
               state, ne, mapSrcDragNotes
           });
           
           
           switch (state)
           {
               case EDITOR:
                   // Nothing
                   break;
               case RESIZE_WEST:
               case RESIZE_EAST:
               {
                   // Restore original state before doing the undoable edit
                   for (var srcNe : mapSrcDragNotes.keySet())
                   {
                       var dragNe = mapSrcDragNotes.get(srcNe);
                       spModel.replace(dragNe, srcNe);
                   }
                   
                   
                   String undoText = ResUtil.getString(getClass(), 
"ResizeNote");
                   editor.getUndoManager().startCEdit(undoText);
                   
                   for (var srcNe : mapSrcDragNotes.keySet())
                   {
                       var dragNe = mapSrcDragNotes.get(srcNe);
                       spModel.replace(srcNe, dragNe);
                       editor.getNoteView(dragNe).setSelected(true);
                   }
                   
                   editor.getUndoManager().endCEdit(undoText);
                   break;
               }
               
               case MOVE:
               {
                   removeControlKeyListener(dragNoteView);
   
   
                   // Restore original state before doing the undoable edit
                   mapSrcDragNotes.values().forEach(dragNe -> 
spModel.remove(dragNe));
                   
                   
                   String undoText = ResUtil.getString(getClass(), "MoveNote");
                   editor.getUndoManager().startCEdit(undoText);
                   
                   for (var srcNe : mapSrcDragNotes.keySet())
                   {
                       var dragNe = mapSrcDragNotes.get(srcNe);
                       spModel.replace(srcNe, dragNe);
                       editor.getNoteView(dragNe).setSelected(true);
                   }
                   
                   editor.getUndoManager().endCEdit(undoText);
                   
                   
                   break;
               }
               case COPY:
               {
                   removeControlKeyListener(dragNoteView);
   
                   // Restore original state before doing the undoable edit
                   mapSrcDragNotes.values().forEach(dragNe -> 
spModel.remove(dragNe));
                   
                   
                   String undoText = ResUtil.getString(getClass(), "CopyNote");
                   editor.getUndoManager().startCEdit(undoText);
                   
                   for (var srcNe : mapSrcDragNotes.keySet())
                   {
                       var dragNe = mapSrcDragNotes.get(srcNe);
                       spModel.add(dragNe);
                       editor.getNoteView(dragNe).setSelected(true);
                       editor.getNoteView(srcNe).setSelected(false);
                   }
                   
                   editor.getUndoManager().endCEdit(undoText);
                   
                   
                   break;
               }
               default:
                   throw new AssertionError(state.name());
               
           }
           isDragging = false;
           dragStartPos = -1;
           mapSrcDragNotes.clear();
           dragNoteOffset = null;
           dragNoteView = null;
           
           
           changeState(State.EDITOR, container);
       }
       
   
   ### Did this work correctly in an earlier version?
   
   No / Don't know
   
   ### Operating System
   
   Win10 x64
   
   ### JDK
   
   JDK 17 x64 Adoptium
   
   ### Apache NetBeans packaging
   
   Apache NetBeans binary zip
   
   ### Anything else
   
   _No response_
   
   ### Are you willing to submit a pull request?
   
   No
   
   ### Code of Conduct
   
   Yes


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to