void (Project project, PaletteItem droppedItem, int index) { if (droppedItem instanceof ComponentItem componentItem) { Palette palette = Palette.getInstance(project); int oldIndex = myItems.indexOf(componentItem); if (oldIndex >= 0) { if (index == -1 || oldIndex == index) return; if (oldIndex < index) { index--; } myItems.remove(oldIndex); } else { for(GroupItem groupItem: palette.getGroups()) { if (groupItem.myItems.contains(componentItem)) { groupItem.removeItem(componentItem); break; } } } if (index == -1) { myItems.add(componentItem); } else { myItems.add(index, componentItem); } palette.fireGroupsChanged(); } }