diff --git a/src/com/gpl/rpg/atcontentstudio/Notification.java b/src/com/gpl/rpg/atcontentstudio/Notification.java index 5054af7..fa25ebc 100644 --- a/src/com/gpl/rpg/atcontentstudio/Notification.java +++ b/src/com/gpl/rpg/atcontentstudio/Notification.java @@ -2,11 +2,12 @@ package com.gpl.rpg.atcontentstudio; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; public class Notification { public static List notifs = new ArrayList(); - private static List listeners = new ArrayList(); + private static List listeners = new CopyOnWriteArrayList(); public static boolean showS = true, showI = true, showW = true, showE = true; static { diff --git a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Dialogue.java b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Dialogue.java index de8907a..7772327 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Dialogue.java +++ b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Dialogue.java @@ -349,18 +349,21 @@ public class Dialogue extends JSONElement { @Override public void elementChanged(GameDataElement oldOne, GameDataElement newOne) { if (switch_to_npc == oldOne) { + oldOne.removeBacklink(this); switch_to_npc = (NPC) newOne; if (newOne != null) newOne.addBacklink(this); } else { if (replies != null) { for (Reply r : replies) { if (r.next_phrase == oldOne) { + oldOne.removeBacklink(this); r.next_phrase = (Dialogue) newOne; if (newOne != null) newOne.addBacklink(this); } if (r.requirements != null) { for (Requirement req : r.requirements) { if (req.required_obj == oldOne) { + oldOne.removeBacklink(this); req.required_obj = newOne; if (newOne != null) newOne.addBacklink(this); } @@ -371,6 +374,7 @@ public class Dialogue extends JSONElement { if (rewards != null) { for (Reward r : rewards) { if (r.reward_obj == oldOne) { + oldOne.removeBacklink(this); r.reward_obj = newOne; if (newOne != null) newOne.addBacklink(this); } diff --git a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Droplist.java b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Droplist.java index 4b33256..e00224a 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Droplist.java +++ b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Droplist.java @@ -194,6 +194,7 @@ public class Droplist extends JSONElement { if (dropped_items != null) { for (DroppedItem di : dropped_items) { if (di.item == oldOne) { + oldOne.removeBacklink(this); di.item = (Item) newOne; if (newOne != null) newOne.addBacklink(this); } diff --git a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Item.java b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Item.java index 1c76975..886b8ae 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/gamedata/Item.java +++ b/src/com/gpl/rpg/atcontentstudio/model/gamedata/Item.java @@ -451,12 +451,14 @@ public class Item extends JSONElement { @Override public void elementChanged(GameDataElement oldOne, GameDataElement newOne) { if (this.category == oldOne) { + oldOne.removeBacklink(this); this.category = (ItemCategory) newOne; if (newOne != null) newOne.addBacklink(this); } else { if (this.equip_effect != null && this.equip_effect.conditions != null) { for (ConditionEffect c : this.equip_effect.conditions) { if (c.condition == oldOne) { + oldOne.removeBacklink(this); c.condition = (ActorCondition) newOne; if (newOne != null) newOne.addBacklink(this); } @@ -465,6 +467,7 @@ public class Item extends JSONElement { if (this.hit_effect != null && this.hit_effect.conditions_source != null) { for (TimedConditionEffect c : this.hit_effect.conditions_source) { if (c.condition == oldOne) { + oldOne.removeBacklink(this); c.condition = (ActorCondition) newOne; if (newOne != null) newOne.addBacklink(this); } @@ -473,6 +476,7 @@ public class Item extends JSONElement { if (this.hit_effect != null && this.hit_effect.conditions_target != null) { for (TimedConditionEffect c : this.hit_effect.conditions_target) { if (c.condition == oldOne) { + oldOne.removeBacklink(this); c.condition = (ActorCondition) newOne; if (newOne != null) newOne.addBacklink(this); } @@ -482,6 +486,7 @@ public class Item extends JSONElement { if (this.kill_effect != null && this.kill_effect.conditions_source != null) { for (TimedConditionEffect c : this.kill_effect.conditions_source) { if (c.condition == oldOne) { + oldOne.removeBacklink(this); c.condition = (ActorCondition) newOne; if (newOne != null) newOne.addBacklink(this); } diff --git a/src/com/gpl/rpg/atcontentstudio/model/gamedata/NPC.java b/src/com/gpl/rpg/atcontentstudio/model/gamedata/NPC.java index bb973bb..e281ab1 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/gamedata/NPC.java +++ b/src/com/gpl/rpg/atcontentstudio/model/gamedata/NPC.java @@ -357,16 +357,19 @@ public class NPC extends JSONElement { @Override public void elementChanged(GameDataElement oldOne, GameDataElement newOne) { if (dialogue == oldOne) { + oldOne.removeBacklink(this); this.dialogue = (Dialogue) newOne; if (newOne != null) newOne.addBacklink(this); } else { if (this.droplist == oldOne) { + oldOne.removeBacklink(this); this.droplist = (Droplist) newOne; if (newOne != null) newOne.addBacklink(this); } else { if (this.hit_effect != null && this.hit_effect.conditions_source != null) { for (TimedConditionEffect tce : this.hit_effect.conditions_source) { if (tce.condition == oldOne) { + oldOne.removeBacklink(this); tce.condition = (ActorCondition) newOne; if (newOne != null) newOne.addBacklink(this); } @@ -375,6 +378,7 @@ public class NPC extends JSONElement { if (this.hit_effect != null && this.hit_effect.conditions_target != null) { for (TimedConditionEffect tce : this.hit_effect.conditions_target) { if (tce.condition == oldOne) { + oldOne.removeBacklink(this); tce.condition = (ActorCondition) newOne; if (newOne != null) newOne.addBacklink(this); } diff --git a/src/com/gpl/rpg/atcontentstudio/model/maps/TMXMap.java b/src/com/gpl/rpg/atcontentstudio/model/maps/TMXMap.java index bd38d86..c43e774 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/maps/TMXMap.java +++ b/src/com/gpl/rpg/atcontentstudio/model/maps/TMXMap.java @@ -12,6 +12,7 @@ import java.util.Enumeration; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.tree.TreeNode; @@ -439,7 +440,7 @@ public class TMXMap extends GameDataElement { this.link(); changedOnDisk = false; - for (MapChangedOnDiskListener l : new ArrayList(listeners)) { + for (MapChangedOnDiskListener l : listeners) { l.mapReloaded(); } } @@ -449,7 +450,7 @@ public class TMXMap extends GameDataElement { dismissNextChangeNotif--; } else { changedOnDisk = true; - for (MapChangedOnDiskListener l : new ArrayList(listeners)) { + for (MapChangedOnDiskListener l : listeners) { l.mapChanged(); } } @@ -460,7 +461,7 @@ public class TMXMap extends GameDataElement { public void mapReloaded(); } - private List listeners = new ArrayList(); + private List listeners = new CopyOnWriteArrayList(); public void addMapChangedOnDiskListener(MapChangedOnDiskListener l) { listeners.add(l); diff --git a/src/com/gpl/rpg/atcontentstudio/model/maps/TMXMapSet.java b/src/com/gpl/rpg/atcontentstudio/model/maps/TMXMapSet.java index 5598faa..c9bcccd 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/maps/TMXMapSet.java +++ b/src/com/gpl/rpg/atcontentstudio/model/maps/TMXMapSet.java @@ -108,7 +108,6 @@ public class TMXMapSet implements ProjectTreeNode { for (WatchEvent event : wk.pollEvents()) { Path changed = (Path) event.context(); String name = changed.getFileName().toString(); - System.out.println("Changed: "+name); String id = name.substring(0, name.length() - 4); TMXMap map = getMap(id); if (map != null) { diff --git a/src/com/gpl/rpg/atcontentstudio/model/maps/WorldmapSegment.java b/src/com/gpl/rpg/atcontentstudio/model/maps/WorldmapSegment.java index b2f3162..fc2d7e3 100644 --- a/src/com/gpl/rpg/atcontentstudio/model/maps/WorldmapSegment.java +++ b/src/com/gpl/rpg/atcontentstudio/model/maps/WorldmapSegment.java @@ -103,7 +103,7 @@ public class WorldmapSegment extends GameDataElement { @Override public void elementChanged(GameDataElement oldOne, GameDataElement newOne) { oldOne.removeBacklink(this); - newOne.addBacklink(this); + if(newOne != null) newOne.addBacklink(this); } @Override diff --git a/src/com/gpl/rpg/atcontentstudio/ui/Editor.java b/src/com/gpl/rpg/atcontentstudio/ui/Editor.java index 77c9df8..9811eb8 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/Editor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/Editor.java @@ -14,6 +14,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CopyOnWriteArrayList; import java.util.regex.Matcher; import javax.swing.AbstractListModel; @@ -681,7 +682,7 @@ public abstract class Editor extends JPanel implements ProjectElementListener { return null; } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { diff --git a/src/com/gpl/rpg/atcontentstudio/ui/JSONCreationWizard.java b/src/com/gpl/rpg/atcontentstudio/ui/JSONCreationWizard.java index 49f430a..48b320e 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/JSONCreationWizard.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/JSONCreationWizard.java @@ -10,6 +10,7 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.ComboBoxModel; import javax.swing.DefaultListCellRenderer; @@ -518,7 +519,7 @@ public class JSONCreationWizard extends JDialog { return DataType.values()[index]; } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { @@ -584,7 +585,7 @@ public class JSONCreationWizard extends JDialog { public void elementCreated(JSONElement created); } - private List listeners = new ArrayList(); + private List listeners = new CopyOnWriteArrayList(); public void addCreationListener(CreationCompletedListener l) { listeners.add(l); diff --git a/src/com/gpl/rpg/atcontentstudio/ui/JSONImportWizard.java b/src/com/gpl/rpg/atcontentstudio/ui/JSONImportWizard.java index c270ffd..2d9c34f 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/JSONImportWizard.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/JSONImportWizard.java @@ -15,6 +15,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.ButtonGroup; import javax.swing.ComboBoxModel; @@ -603,7 +604,7 @@ public class JSONImportWizard extends JDialog { return null; } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { @@ -639,7 +640,7 @@ public class JSONImportWizard extends JDialog { return DataType.values()[index]; } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { diff --git a/src/com/gpl/rpg/atcontentstudio/ui/NotificationsPane.java b/src/com/gpl/rpg/atcontentstudio/ui/NotificationsPane.java index c7e55ce..4e30225 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/NotificationsPane.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/NotificationsPane.java @@ -8,6 +8,7 @@ import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CopyOnWriteArrayList; import javax.imageio.ImageIO; import javax.swing.BorderFactory; @@ -101,7 +102,7 @@ public class NotificationsPane extends JList { } } - private List listeners = new ArrayList(); + private List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { listeners.add(l); diff --git a/src/com/gpl/rpg/atcontentstudio/ui/ProjectCreationWizard.java b/src/com/gpl/rpg/atcontentstudio/ui/ProjectCreationWizard.java index f03de88..0a5ee20 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/ProjectCreationWizard.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/ProjectCreationWizard.java @@ -11,6 +11,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.ComboBoxModel; import javax.swing.JButton; @@ -67,7 +68,7 @@ public class ProjectCreationWizard extends JDialog { return Project.ResourceSet.values()[index]; } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { diff --git a/src/com/gpl/rpg/atcontentstudio/ui/ProjectsTree.java b/src/com/gpl/rpg/atcontentstudio/ui/ProjectsTree.java index 7d5bc42..a7648ab 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/ProjectsTree.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/ProjectsTree.java @@ -11,6 +11,7 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.ImageIcon; import javax.swing.JLabel; @@ -655,7 +656,7 @@ public class ProjectsTree extends JPanel { return ((ProjectTreeNode)parent).getIndex((ProjectTreeNode) child); } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addTreeModelListener(TreeModelListener l) { diff --git a/src/com/gpl/rpg/atcontentstudio/ui/TMXMapCreationWizard.java b/src/com/gpl/rpg/atcontentstudio/ui/TMXMapCreationWizard.java index 373f6ce..c170c46 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/TMXMapCreationWizard.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/TMXMapCreationWizard.java @@ -9,6 +9,7 @@ import java.awt.event.ActionListener; import java.io.File; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.ButtonGroup; import javax.swing.ComboBoxModel; @@ -231,7 +232,7 @@ public class TMXMapCreationWizard extends JDialog { public void mapCreated(TMXMap created); } - private List listeners = new ArrayList(); + private List listeners = new CopyOnWriteArrayList(); public void addCreationListener(CreationCompletedListener l) { listeners.add(l); @@ -257,7 +258,7 @@ public class TMXMapCreationWizard extends JDialog { return proj.getMap(index); } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { diff --git a/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceActions.java b/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceActions.java index 482cbbf..77761b2 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceActions.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/WorkspaceActions.java @@ -12,6 +12,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentSkipListSet; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.Action; import javax.swing.JFileChooser; @@ -452,10 +454,8 @@ public class WorkspaceActions { public void putValue(String key, Object value) { PropertyChangeEvent event = new PropertyChangeEvent(this, key, values.get(key), value); values.put(key, value); - synchronized(listeners) { - for (PropertyChangeListener l : listeners) { - l.propertyChange(event); - } + for (PropertyChangeListener l : listeners) { + l.propertyChange(event); } } @@ -463,10 +463,8 @@ public class WorkspaceActions { public void setEnabled(boolean b) { PropertyChangeEvent event = new PropertyChangeEvent(this, "enabled", isEnabled(), b); enabled = b; - synchronized(listeners) { - for (PropertyChangeListener l : listeners) { - l.propertyChange(event); - } + for (PropertyChangeListener l : listeners) { + l.propertyChange(event); } } @@ -475,20 +473,16 @@ public class WorkspaceActions { return enabled; } - private Set listeners = new HashSet(); + private List listeners = new CopyOnWriteArrayList(); @Override public void addPropertyChangeListener(PropertyChangeListener listener) { - synchronized(listeners) { - listeners.add(listener); - } + listeners.add(listener); } @Override public void removePropertyChangeListener(PropertyChangeListener listener) { - synchronized(listeners) { - listeners.remove(listener); - } + listeners.remove(listener); } } diff --git a/src/com/gpl/rpg/atcontentstudio/ui/WorldmapCreationWizard.java b/src/com/gpl/rpg/atcontentstudio/ui/WorldmapCreationWizard.java index 399bf9e..c164c3a 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/WorldmapCreationWizard.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/WorldmapCreationWizard.java @@ -7,6 +7,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.JButton; import javax.swing.JDialog; @@ -144,7 +145,7 @@ public class WorldmapCreationWizard extends JDialog { public void segmentCreated(WorldmapSegment created); } - private List listeners = new ArrayList(); + private List listeners = new CopyOnWriteArrayList(); public void addCreationListener(CreationCompletedListener l) { listeners.add(l); diff --git a/src/com/gpl/rpg/atcontentstudio/ui/WorldmapLabelEditionWizard.java b/src/com/gpl/rpg/atcontentstudio/ui/WorldmapLabelEditionWizard.java index 50bcb09..a8b2807 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/WorldmapLabelEditionWizard.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/WorldmapLabelEditionWizard.java @@ -7,6 +7,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.JButton; import javax.swing.JDialog; @@ -176,7 +177,7 @@ public class WorldmapLabelEditionWizard extends JDialog { public void labelCreated(WorldmapSegment.NamedArea created); } - private List listeners = new ArrayList(); + private List listeners = new CopyOnWriteArrayList(); public void addCreationListener(CreationCompletedListener l) { listeners.add(l); diff --git a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DialogueEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DialogueEditor.java index 881fcf5..3a2ef62 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DialogueEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DialogueEditor.java @@ -12,6 +12,7 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.DefaultListCellRenderer; import javax.swing.ImageIcon; @@ -752,7 +753,7 @@ public class DialogueEditor extends JSONElementEditor { } } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { @@ -917,7 +918,7 @@ public class DialogueEditor extends JSONElementEditor { } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { @@ -1031,7 +1032,7 @@ public class DialogueEditor extends JSONElementEditor { } } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { diff --git a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DroplistEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DroplistEditor.java index 7e560ec..cc8a7f2 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DroplistEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/DroplistEditor.java @@ -5,6 +5,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.DefaultListCellRenderer; import javax.swing.ImageIcon; @@ -196,7 +197,7 @@ public class DroplistEditor extends JSONElementEditor { } } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { diff --git a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/ItemEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/ItemEditor.java index 6f83972..5706d89 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/ItemEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/ItemEditor.java @@ -5,6 +5,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.DefaultListCellRenderer; import javax.swing.ImageIcon; @@ -578,7 +579,7 @@ public class ItemEditor extends JSONElementEditor { } } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { @@ -640,7 +641,7 @@ public class ItemEditor extends JSONElementEditor { } } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { @@ -723,7 +724,7 @@ public class ItemEditor extends JSONElementEditor { } } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { diff --git a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/NPCEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/NPCEditor.java index 85e889d..a98c6ab 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/NPCEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/NPCEditor.java @@ -6,6 +6,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.DefaultListCellRenderer; import javax.swing.ImageIcon; @@ -397,7 +398,7 @@ public class NPCEditor extends JSONElementEditor { } } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { @@ -459,7 +460,7 @@ public class NPCEditor extends JSONElementEditor { } } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { diff --git a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/QuestEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/QuestEditor.java index fdce244..2af7cdc 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/QuestEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/gamedataeditors/QuestEditor.java @@ -6,6 +6,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.BorderFactory; import javax.swing.ImageIcon; @@ -293,7 +294,7 @@ public class QuestEditor extends JSONElementEditor { if (quest.stages.isEmpty()) quest.stages = null; } - public List listeners = new ArrayList(); + public List listeners = new CopyOnWriteArrayList(); @Override public void addTableModelListener(TableModelListener l) { diff --git a/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java index d90d97e..923934e 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/map/TMXMapEditor.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.BorderFactory; import javax.swing.ComboBoxModel; @@ -890,7 +891,7 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe return index; } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addTreeModelListener(TreeModelListener l) { @@ -999,7 +1000,7 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe } } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { @@ -1078,7 +1079,7 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe } } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { @@ -1150,7 +1151,7 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe return availableLayers.size(); } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { listeners.add(l); @@ -1206,7 +1207,7 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe } } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { @@ -1251,7 +1252,7 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe return area.spawnGroup.get(index); } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { @@ -1533,7 +1534,7 @@ public class TMXMapEditor extends Editor implements TMXMap.MapChangedOnDiskListe return null; } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { diff --git a/src/com/gpl/rpg/atcontentstudio/ui/sprites/SpritesheetEditor.java b/src/com/gpl/rpg/atcontentstudio/ui/sprites/SpritesheetEditor.java index de92ffa..cf3c80d 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/sprites/SpritesheetEditor.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/sprites/SpritesheetEditor.java @@ -15,6 +15,7 @@ import java.util.Enumeration; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.BorderFactory; import javax.swing.DefaultListCellRenderer; @@ -259,7 +260,7 @@ public class SpritesheetEditor extends Editor { } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addTableModelListener(TableModelListener l) { @@ -358,7 +359,7 @@ public class SpritesheetEditor extends Editor { return null; } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addListDataListener(ListDataListener l) { diff --git a/src/com/gpl/rpg/atcontentstudio/ui/tools/ItemsTableView.java b/src/com/gpl/rpg/atcontentstudio/ui/tools/ItemsTableView.java index 1a079d4..32b694c 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/tools/ItemsTableView.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/tools/ItemsTableView.java @@ -2,6 +2,7 @@ package com.gpl.rpg.atcontentstudio.ui.tools; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.Icon; import javax.swing.ImageIcon; @@ -200,7 +201,7 @@ public class ItemsTableView extends ElementTableView { //not editable. } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addTableModelListener(TableModelListener l) { diff --git a/src/com/gpl/rpg/atcontentstudio/ui/tools/NPCsTableView.java b/src/com/gpl/rpg/atcontentstudio/ui/tools/NPCsTableView.java index 829c2bf..5f4ddf0 100644 --- a/src/com/gpl/rpg/atcontentstudio/ui/tools/NPCsTableView.java +++ b/src/com/gpl/rpg/atcontentstudio/ui/tools/NPCsTableView.java @@ -2,6 +2,7 @@ package com.gpl.rpg.atcontentstudio.ui.tools; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.Icon; import javax.swing.ImageIcon; @@ -157,7 +158,7 @@ public class NPCsTableView extends ElementTableView { //not editable. } - List listeners = new ArrayList(); + List listeners = new CopyOnWriteArrayList(); @Override public void addTableModelListener(TableModelListener l) {