From 024ad712a447cd0aab43eec6de8f6234bb20fa2f Mon Sep 17 00:00:00 2001 From: Curtis Tasker Date: Sat, 14 Apr 2012 13:08:37 -0700 Subject: [PATCH 01/12] Modifies the yap -> JSON conversion boot job to not overwrite existing JSON items. --- .../impl/item/model/gson/GsonEquipmentDatabase.java | 13 +++++++++++++ .../impl/module/DatabaseConversionBootJob.java | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java index 45f07604db..98f30ba8a0 100644 --- a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java +++ b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java @@ -73,6 +73,19 @@ public void saveTemplate(IEquipmentTemplate template) { availableTemplatesChangeControl.fireChangedEvent(); } + public void saveTemplateNoOverwrite(IEquipmentTemplate template) { + try { + File file = getTemplateFile(template.getName()); + if( !file.exists() ) { + saveTemplate( template ); + } + } + catch (SecurityException e) { + throw new RuntimeException(e); + } + availableTemplatesChangeControl.fireChangedEvent(); + } + @Override public void addAvailableTemplateChangeListener(IChangeListener listener) { availableTemplatesChangeControl.addChangeListener(listener); diff --git a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/module/DatabaseConversionBootJob.java b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/module/DatabaseConversionBootJob.java index c0f6a6f067..96d307129a 100644 --- a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/module/DatabaseConversionBootJob.java +++ b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/module/DatabaseConversionBootJob.java @@ -70,7 +70,7 @@ private void convertToGson(IAnathemaModel anathemaModel, ObjectContainer contain ObjectSet set = query.execute(); for (Object object : set) { EquipmentTemplate template = (EquipmentTemplate) object; - database.saveTemplate(template); + database.saveTemplateNoOverwrite(template); } } From 3f7318522f5e18277b02e7ba5e74777b0fe3351a Mon Sep 17 00:00:00 2001 From: Curtis Tasker Date: Sun, 15 Apr 2012 00:17:58 -0700 Subject: [PATCH 02/12] =?UTF-8?q?Cleaned=20this=20up,=20and=20decided=20th?= =?UTF-8?q?e=20try=E2=80=A6catch=20block=20wasn't=20needed=20here,=20as=20?= =?UTF-8?q?its=20not=20used=20around=20exists()=20calls=20anywhere=20else?= =?UTF-8?q?=20in=20anathema.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/item/model/gson/GsonEquipmentDatabase.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java index 98f30ba8a0..68548e42f9 100644 --- a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java +++ b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java @@ -74,16 +74,9 @@ public void saveTemplate(IEquipmentTemplate template) { } public void saveTemplateNoOverwrite(IEquipmentTemplate template) { - try { - File file = getTemplateFile(template.getName()); - if( !file.exists() ) { - saveTemplate( template ); - } + if( !getTemplateFile(template.getName()).exists() ) { + saveTemplate( template ); } - catch (SecurityException e) { - throw new RuntimeException(e); - } - availableTemplatesChangeControl.fireChangedEvent(); } @Override From 3f46de28f20f655f481d8282a4e7255867243236 Mon Sep 17 00:00:00 2001 From: Curtis Tasker Date: Sun, 15 Apr 2012 10:36:27 -0700 Subject: [PATCH 03/12] Updated .gitignore to allow JSON items in the /repository/equipment folder. Testing to be sure it accepts them --- .gitignore | 1 + .../repository/equipment/Chopping_Sword.item | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 Anathema/repository/equipment/Chopping_Sword.item diff --git a/.gitignore b/.gitignore index 22ad7ffc0e..3bb85a9516 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ out/ .classpath .project /repository/ +!/repository/equipment/*.item .settings/ *.launch *.pdf diff --git a/Anathema/repository/equipment/Chopping_Sword.item b/Anathema/repository/equipment/Chopping_Sword.item new file mode 100644 index 0000000000..e6f550e51b --- /dev/null +++ b/Anathema/repository/equipment/Chopping_Sword.item @@ -0,0 +1,27 @@ +{ + "statsByRuleSet": { + "SecondEdition": [ + { + "accuracy": 1, + "damage": 4, + "damageTypeString": "Lethal", + "defence": -1, + "rate": 2, + "speed": 1, + "inflictsNoDamage": false, + "tags": [], + "minimumDamage": 1, + "name": "Close", + "type": "Melee Weapon" + } + ] + }, + "description": "", + "name": "Chopping Sword", + "collectionFactory": {}, + "composition": "None", + "cost": { + "costType": "Resources", + "costValue": 2 + } +} \ No newline at end of file From ccebc8c22871a1ec08d3590d1e27ede89dae78f5 Mon Sep 17 00:00:00 2001 From: Curtis Tasker Date: Sun, 15 Apr 2012 11:40:45 -0700 Subject: [PATCH 04/12] Got rid of the old .cvsignore files. Copied their contents to .gitignore, but even then a lot of them are outdated. Fixed the .gitignore for the repository stored in version control. It will now properly ignore characters, items, and such, unless they're explicitly added to git for tracking. Got rid of FilenameCleaner, made it a private function inside GsonEquipmentDatabase. Was creating a new object per item in the equipment database just to do a string replace. Fixed my saveTemplateNoOverwrite() function after rebasing the changes on the newest version. --- .gitignore | 17 ++++++++++++++--- Anathema/repository/.cvsignore | 5 ----- Anathema/repository/music/.cvsignore | 1 - .../impl/item/model/gson/FilenameCleaner.java | 7 ------- .../item/model/gson/GsonEquipmentDatabase.java | 14 +++++++++----- Development_Code/.cvsignore | 5 ----- 6 files changed, 23 insertions(+), 26 deletions(-) delete mode 100644 Anathema/repository/.cvsignore delete mode 100644 Anathema/repository/music/.cvsignore delete mode 100644 Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/FilenameCleaner.java delete mode 100644 Development_Code/.cvsignore diff --git a/.gitignore b/.gitignore index 3bb85a9516..d572d7154b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,9 +9,20 @@ Anathema*.zip out/ .classpath .project -/repository/ -!/repository/equipment/*.item .settings/ *.launch *.pdf -*.zip \ No newline at end of file +*.zip +Thumbs.db + +# Repository +repository.version +*.item +*.ecg +*.yap +*.xml + +# Copied from /Development_Code/.cvsignore +/Development_Code/*.java +/Development_Code/*.pdf +/Development_Code/*.jasper \ No newline at end of file diff --git a/Anathema/repository/.cvsignore b/Anathema/repository/.cvsignore deleted file mode 100644 index ee0dae1800..0000000000 --- a/Anathema/repository/.cvsignore +++ /dev/null @@ -1,5 +0,0 @@ -Campaign -Notes -Series -*.yap -*.xml diff --git a/Anathema/repository/music/.cvsignore b/Anathema/repository/music/.cvsignore deleted file mode 100644 index 14aeab393b..0000000000 --- a/Anathema/repository/music/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.yap diff --git a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/FilenameCleaner.java b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/FilenameCleaner.java deleted file mode 100644 index f689e94f40..0000000000 --- a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/FilenameCleaner.java +++ /dev/null @@ -1,7 +0,0 @@ -package net.sf.anathema.character.equipment.impl.item.model.gson; - -public class FilenameCleaner { - public String clean(String input) { - return input.replaceAll("\\W", "_"); - } -} diff --git a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java index 68548e42f9..7158c7012d 100644 --- a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java +++ b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java @@ -54,7 +54,7 @@ public String[] getAllAvailableTemplateIds() { @Override public IEquipmentTemplate loadTemplate(String templateId) { - String id = new FilenameCleaner().clean(templateId); + String id = cleanFilename(templateId); if (!access.exists(id)) { return null; } @@ -74,7 +74,7 @@ public void saveTemplate(IEquipmentTemplate template) { } public void saveTemplateNoOverwrite(IEquipmentTemplate template) { - if( !getTemplateFile(template.getName()).exists() ) { + if( loadTemplate( template.getName() ) == null ) { saveTemplate( template ); } } @@ -98,21 +98,25 @@ public void updateTemplate(String editTemplateId, IEquipmentTemplate saveTemplat } private void delete(String editTemplateId) { - String id = new FilenameCleaner().clean(editTemplateId); + String id = cleanFilename(editTemplateId); if (access.exists(id)) { access.delete(id); } } private IEquipmentTemplate loadExistingTemplate(String templateId) { - String id = new FilenameCleaner().clean(templateId); + String id = cleanFilename(templateId); String json = access.read(id); return gson.fromJson(json); } private void save(IEquipmentTemplate template) { - String id = new FilenameCleaner().clean(template.getName()); + String id = cleanFilename(template.getName()); String json = gson.toJson(template); access.write(id, json); } + + private String cleanFilename(String input) { + return input.replaceAll("\\W", "_"); + } } \ No newline at end of file diff --git a/Development_Code/.cvsignore b/Development_Code/.cvsignore deleted file mode 100644 index 8152d83672..0000000000 --- a/Development_Code/.cvsignore +++ /dev/null @@ -1,5 +0,0 @@ -*.pdf -*.java -build -Thumbs.db -*.jasper From a86b55f3d01b3e407e1788456dc73611670172b1 Mon Sep 17 00:00:00 2001 From: Curtis Tasker Date: Sun, 15 Apr 2012 23:39:26 -0700 Subject: [PATCH 05/12] Equipment Database - New Feature: Copy Item button Equipment Database - Bug fix: Resources type and cost does not reset when hitting the new item button Equipment Database - Added tooltips for New Item, Copy Item, Save Item, Delete Item --- .../repository/equipment/Chopping_Sword.item | 2 +- .../item/CopyEquipmentTemplateAction.java | 37 +++++++++++++++++++ .../item/EquipmentDatabasePresenter.java | 1 + .../item/NewEquipmentTemplateAction.java | 1 + .../item/RemoveEquipmentTemplateAction.java | 3 +- .../item/SaveEquipmentTemplateAction.java | 1 + .../model/IEquipmentTemplateEditModel.java | 2 + .../equipment/Equipment_Database.properties | 5 +++ .../Equipment_Database_es.properties | 5 +++ .../Equipment_Database_it.properties | 5 +++ .../model/EquipmentTemplateEditModel.java | 9 +++++ .../Distribution/English/versions.txt | 6 +++ .../presenter/resources/PlatformUI.java | 4 ++ 13 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 Character_Equipment/src/net/sf/anathema/character/equipment/item/CopyEquipmentTemplateAction.java diff --git a/Anathema/repository/equipment/Chopping_Sword.item b/Anathema/repository/equipment/Chopping_Sword.item index e6f550e51b..ae0785c550 100644 --- a/Anathema/repository/equipment/Chopping_Sword.item +++ b/Anathema/repository/equipment/Chopping_Sword.item @@ -16,7 +16,7 @@ } ] }, - "description": "", + "description": "2E Core p366, 2.5 Errata p15", "name": "Chopping Sword", "collectionFactory": {}, "composition": "None", diff --git a/Character_Equipment/src/net/sf/anathema/character/equipment/item/CopyEquipmentTemplateAction.java b/Character_Equipment/src/net/sf/anathema/character/equipment/item/CopyEquipmentTemplateAction.java new file mode 100644 index 0000000000..98aeb2fc7f --- /dev/null +++ b/Character_Equipment/src/net/sf/anathema/character/equipment/item/CopyEquipmentTemplateAction.java @@ -0,0 +1,37 @@ +package net.sf.anathema.character.equipment.item; + +import java.awt.Component; + +import net.disy.commons.swing.action.SmartAction; +import net.sf.anathema.character.equipment.item.model.IEquipmentDatabaseManagement; +import net.sf.anathema.character.equipment.item.view.IEquipmentDatabaseView; +import net.sf.anathema.lib.control.objectvalue.IObjectValueChangedListener; +import net.sf.anathema.framework.presenter.resources.PlatformUI; +import net.sf.anathema.lib.gui.wizard.workflow.ICondition; +import net.sf.anathema.lib.resources.IResources; + +public final class CopyEquipmentTemplateAction extends SmartAction { + private static final long serialVersionUID = -2131791434827503585L; + private final IEquipmentDatabaseManagement model; + private final IResources resources; + + public CopyEquipmentTemplateAction(IResources resources, IEquipmentDatabaseManagement model) { + super(new PlatformUI(resources).getCopyIcon()); + this.resources = resources; + this.model = model; + model.getTemplateEditModel().getDescription().getName().addTextChangedListener(new IObjectValueChangedListener() { + public void valueChanged(String newValue) { + setEnabled(true); + } + }); + setEnabled(true); + setToolTipText(resources.getString("Equipment.Creation.Item.CopyActionTooltip")); //$NON-NLS-1$ + } + + @Override + protected void execute(Component parentComponent) { + model.getTemplateEditModel().copyNewTemplate(); + setEnabled(false); + } + +} \ No newline at end of file diff --git a/Character_Equipment/src/net/sf/anathema/character/equipment/item/EquipmentDatabasePresenter.java b/Character_Equipment/src/net/sf/anathema/character/equipment/item/EquipmentDatabasePresenter.java index 556faa663c..389fa98131 100644 --- a/Character_Equipment/src/net/sf/anathema/character/equipment/item/EquipmentDatabasePresenter.java +++ b/Character_Equipment/src/net/sf/anathema/character/equipment/item/EquipmentDatabasePresenter.java @@ -60,6 +60,7 @@ private String getColonString(String key) { private void addEditTemplateActions() { view.addEditTemplateAction(new NewEquipmentTemplateAction(resources, model)); + view.addEditTemplateAction(new CopyEquipmentTemplateAction(resources, model)); view.addEditTemplateAction(new SaveEquipmentTemplateAction(resources, model)); view.addEditTemplateAction(new RemoveEquipmentTemplateAction(resources, model, view)); } diff --git a/Character_Equipment/src/net/sf/anathema/character/equipment/item/NewEquipmentTemplateAction.java b/Character_Equipment/src/net/sf/anathema/character/equipment/item/NewEquipmentTemplateAction.java index 1afdc23665..f46aa34b19 100644 --- a/Character_Equipment/src/net/sf/anathema/character/equipment/item/NewEquipmentTemplateAction.java +++ b/Character_Equipment/src/net/sf/anathema/character/equipment/item/NewEquipmentTemplateAction.java @@ -17,6 +17,7 @@ public NewEquipmentTemplateAction(IResources resources, IEquipmentDatabaseManage super(new PlatformUI(resources).getNewIcon()); this.resources = resources; this.model = model; + setToolTipText(resources.getString("Equipment.Creation.Item.NewActionTooltip")); //$NON-NLS-1$ } @Override diff --git a/Character_Equipment/src/net/sf/anathema/character/equipment/item/RemoveEquipmentTemplateAction.java b/Character_Equipment/src/net/sf/anathema/character/equipment/item/RemoveEquipmentTemplateAction.java index dd5bfd43f2..17ed958d66 100644 --- a/Character_Equipment/src/net/sf/anathema/character/equipment/item/RemoveEquipmentTemplateAction.java +++ b/Character_Equipment/src/net/sf/anathema/character/equipment/item/RemoveEquipmentTemplateAction.java @@ -30,6 +30,7 @@ public void valueChanged(String newValue) { } }); updateEnabled(view.getTemplateListView().getSelectedObject()); + setToolTipText(resources.getString("Equipment.Creation.Item.RemoveActionTooltip")); //$NON-NLS-1$ } private void updateEnabled(String string) { @@ -38,7 +39,7 @@ private void updateEnabled(String string) { @Override protected void execute(Component parentComponent) { - String messageText = resources.getString("Equipment.Creation.DeleteMessage.Text"); //$NON-NLS-1$ + String messageText = model.getTemplateEditModel().getEditTemplateId() + " - " + resources.getString("Equipment.Creation.DeleteMessage.Text"); //$NON-NLS-1$ String okText = resources.getString("Equipment.Creation.DeleteMessage.OKButton"); //$NON-NLS-1$ ConfigurableVetor vetor = new ConfigurableVetor(parentComponent, messageText, okText); if (vetor.vetos()) { diff --git a/Character_Equipment/src/net/sf/anathema/character/equipment/item/SaveEquipmentTemplateAction.java b/Character_Equipment/src/net/sf/anathema/character/equipment/item/SaveEquipmentTemplateAction.java index cb495f3694..26ea2a5ec9 100644 --- a/Character_Equipment/src/net/sf/anathema/character/equipment/item/SaveEquipmentTemplateAction.java +++ b/Character_Equipment/src/net/sf/anathema/character/equipment/item/SaveEquipmentTemplateAction.java @@ -37,6 +37,7 @@ public SaveEquipmentTemplateAction(IResources resources, IEquipmentDatabaseManag model.getTemplateEditModel().addCostChangeListener(changeListener); model.getTemplateEditModel().addMagicalMaterialChangeListener(changeListener); updateEnabled(); + setToolTipText(resources.getString("Equipment.Creation.Item.SaveActionTooltip")); //$NON-NLS-1$ } private void updateEnabled() { diff --git a/Character_Equipment/src/net/sf/anathema/character/equipment/item/model/IEquipmentTemplateEditModel.java b/Character_Equipment/src/net/sf/anathema/character/equipment/item/model/IEquipmentTemplateEditModel.java index eb754fceac..ae9e871b31 100644 --- a/Character_Equipment/src/net/sf/anathema/character/equipment/item/model/IEquipmentTemplateEditModel.java +++ b/Character_Equipment/src/net/sf/anathema/character/equipment/item/model/IEquipmentTemplateEditModel.java @@ -29,6 +29,8 @@ public interface IEquipmentTemplateEditModel { String getEditTemplateId(); void setNewTemplate(); + + void copyNewTemplate(); void setMagicalMaterial(MagicalMaterial newValue); diff --git a/Character_Equipment_Impl/resources/data/language/equipment/Equipment_Database.properties b/Character_Equipment_Impl/resources/data/language/equipment/Equipment_Database.properties index 9126ffc978..ce7abab83a 100644 --- a/Character_Equipment_Impl/resources/data/language/equipment/Equipment_Database.properties +++ b/Character_Equipment_Impl/resources/data/language/equipment/Equipment_Database.properties @@ -13,6 +13,11 @@ Equipment.Creation.Stats=Stats Equipment.Creation.Stats.AddActionTooltip=Add new stats Equipment.Creation.Stats.EditActionTooltip=Edit selected stats +Equipment.Creation.Item.NewActionTooltip=Create new item +Equipment.Creation.Item.CopyActionTooltip=Copy this item +Equipment.Creation.Item.SaveActionTooltip=Save this item +Equipment.Creation.Item.RemoveActionTooltip=Delete this item + Equipment.Creation.UnsavedChangesMessage.Text=You have unsaved changes. Discard them? Equipment.Creation.UnsavedChangesMessage.OKButton=Discard changes Equipment.Creation.OverwriteMessage.Text=Really overwrite existing item? diff --git a/Character_Equipment_Impl/resources/data/language/equipment/Equipment_Database_es.properties b/Character_Equipment_Impl/resources/data/language/equipment/Equipment_Database_es.properties index 89b24f357f..e0f553f6ef 100644 --- a/Character_Equipment_Impl/resources/data/language/equipment/Equipment_Database_es.properties +++ b/Character_Equipment_Impl/resources/data/language/equipment/Equipment_Database_es.properties @@ -10,6 +10,11 @@ Equipment.Creation.Stats=Estadisticas Equipment.Creation.Stats.EditActionTooltip=Editar las estadisticas seleccionadas Equipment.Creation.Stats.AddActionTooltip=Agregar nuevas estadisticas +Equipment.Creation.Item.NewActionTooltip=Crear nuevo elemento +Equipment.Creation.Item.CopyActionTooltip=Copie este artículo +Equipment.Creation.Item.SaveActionTooltip=Guardar este artículo +Equipment.Creation.Item.RemoveActionTooltip=Eliminar este artículo + Equipment.Creation.UnsavedChangesMessage.Text=Tienes cambios sin grabar. ¿Descartarlos? Equipment.Creation.UnsavedChangesMessage.OKButton=Descartar cambios Equipment.Creation.OverwriteMessage.Text=¿Sobreescribir el articulo existente? diff --git a/Character_Equipment_Impl/resources/data/language/equipment/Equipment_Database_it.properties b/Character_Equipment_Impl/resources/data/language/equipment/Equipment_Database_it.properties index e74f56acf0..798bec1df1 100644 --- a/Character_Equipment_Impl/resources/data/language/equipment/Equipment_Database_it.properties +++ b/Character_Equipment_Impl/resources/data/language/equipment/Equipment_Database_it.properties @@ -12,6 +12,11 @@ Equipment.Creation.Stats=Statistice Equipment.Creation.Stats.AddActionTooltip=Aggiungi nuova statistica Equipment.Creation.Stats.EditActionTooltip=Edita statistica selezionata +Equipment.Creation.Item.NewActionTooltip=Crea nuovo elemento +Equipment.Creation.Item.CopyActionTooltip=Copia questo articolo +Equipment.Creation.Item.SaveActionTooltip=Salva questo articolo +Equipment.Creation.Item.RemoveActionTooltip=Eliminare questa voce + Equipment.Creation.UnsavedChangesMessage.Text=Non hai salvato i cambiamenti.Li Scarto? Equipment.Creation.UnsavedChangesMessage.OKButton=Scarta cambiamenti Equipment.Creation.OverwriteMessage.Text=Sicuro di voler sovrascrivere l'oggetto esistente? diff --git a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/EquipmentTemplateEditModel.java b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/EquipmentTemplateEditModel.java index 610cee482f..c1a33b0b52 100644 --- a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/EquipmentTemplateEditModel.java +++ b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/EquipmentTemplateEditModel.java @@ -76,9 +76,18 @@ public void setNewTemplate() { getDescription().getName().setText(null); getDescription().getContent().setText(new ITextPart[0]); setMaterialComposition(MaterialComposition.None); + setCost( new ItemCost("Resources",0) ); statses.clear(); fireStatsChangedEvent(); } + + @Override + public void copyNewTemplate() { + editTemplateId += " copy"; + getDescription().getName().setText(editTemplateId); + + fireStatsChangedEvent(); + } @Override public boolean isDirty() { diff --git a/Development_Documentation/Distribution/English/versions.txt b/Development_Documentation/Distribution/English/versions.txt index 558cfb7eba..b7f3d7d1cd 100644 --- a/Development_Documentation/Distribution/English/versions.txt +++ b/Development_Documentation/Distribution/English/versions.txt @@ -13,6 +13,8 @@ http://anathema.github.com From this version onward, Anathema no longer uses the "Equipment.yap" file, but individual files for each item. It will convert existing databases and afterwards remove the .yap file. +This version of Anathema comes with the basic weapons, shields, and armor from the Errata. When converting your old database, it will not overwrite these items. If you choose to customize one of these included items, you will need to change the name to avoid it being overwritten in a future update. + -- Features -- * New preference: Allow equipment customization. Allows to overwrite an item's name and description to make it truly yours. @@ -24,6 +26,10 @@ It will convert existing databases and afterwards remove the .yap file. * [Curtis Tasker] The character sheet adds the highest Dodge specialty to the Dodge DV * [Curtis Tasker] The character sheet adds the highest Awareness specialty to Join Battle * [Curtis Tasker] Improved behaviour of tabs +* [Curtis Tasker] Added basic weapons, armor, and shields from the Errata into the equipment database. +* [Curtis Tasker] Added a 'copy item' button to the equipment database. +* [Curtis Tasker] Added tooltips to the buttons in the equipment database. +* [Curtis Tasker] Improved confirmation dialog for item deletion in the equipment database. * We now import custom charms from your repository, if the data files are provided. Consult the provided "Custom Charms.txt" for basic instructions. diff --git a/Platform/src/net/sf/anathema/framework/presenter/resources/PlatformUI.java b/Platform/src/net/sf/anathema/framework/presenter/resources/PlatformUI.java index e2d938bbfb..b5b5be6de9 100644 --- a/Platform/src/net/sf/anathema/framework/presenter/resources/PlatformUI.java +++ b/Platform/src/net/sf/anathema/framework/presenter/resources/PlatformUI.java @@ -26,6 +26,10 @@ public Icon getSaveIcon() { public Icon getNewIcon() { return getIcon("ButtonNew16.png"); //$NON-NLS-1$ } + + public Icon getCopyIcon() { + return getIcon("ButtonDuplicate16.png"); //$NON-NLS-1$ + } public Icon getSaveAllTaskBarIcon() { return getIcon("TaskBarSaveAll24.png"); //$NON-NLS-1$ From e43717b7138f55156e3d2848cc4cd0916bd8fb71 Mon Sep 17 00:00:00 2001 From: Curtis Tasker Date: Mon, 16 Apr 2012 00:07:12 -0700 Subject: [PATCH 06/12] New Feature: Added a toolbar button to launch the Equipment Database. --- .../module/StartEquipmentDatabaseTool.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/module/StartEquipmentDatabaseTool.java diff --git a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/module/StartEquipmentDatabaseTool.java b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/module/StartEquipmentDatabaseTool.java new file mode 100644 index 0000000000..6f95c5c328 --- /dev/null +++ b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/module/StartEquipmentDatabaseTool.java @@ -0,0 +1,18 @@ +package net.sf.anathema.character.equipment.impl.module; + +import net.sf.anathema.framework.IAnathemaModel; +import net.sf.anathema.framework.presenter.toolbar.IAnathemaTool; +import net.sf.anathema.framework.view.toolbar.IAnathemaToolbar; +import net.sf.anathema.initialization.Tool; +import net.sf.anathema.lib.resources.IResources; +import net.sf.anathema.platform.database.StartDatabaseAction; + +@Tool +public class StartEquipmentDatabaseTool implements IAnathemaTool { + + public void add(IResources resources, IAnathemaModel model, IAnathemaToolbar toolbar) { + toolbar.addSeparator(); + EquipmentDatabaseActionProperties properties = new EquipmentDatabaseActionProperties(resources, model); + toolbar.addTools(StartDatabaseAction.createToolAction(resources, model, properties)); + } +} From a980eb70415ee5f39d6b195067cac79f115a568c Mon Sep 17 00:00:00 2001 From: Curtis Tasker Date: Mon, 16 Apr 2012 01:47:43 -0700 Subject: [PATCH 07/12] Added confirmation message for discarding changes when you hit the copy button. --- .../equipment/item/CopyEquipmentTemplateAction.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Character_Equipment/src/net/sf/anathema/character/equipment/item/CopyEquipmentTemplateAction.java b/Character_Equipment/src/net/sf/anathema/character/equipment/item/CopyEquipmentTemplateAction.java index 98aeb2fc7f..5d88c8e6a0 100644 --- a/Character_Equipment/src/net/sf/anathema/character/equipment/item/CopyEquipmentTemplateAction.java +++ b/Character_Equipment/src/net/sf/anathema/character/equipment/item/CopyEquipmentTemplateAction.java @@ -30,6 +30,14 @@ public void valueChanged(String newValue) { @Override protected void execute(Component parentComponent) { + DiscardChangesVetor vetor = new DiscardChangesVetor(resources, new ICondition() { + public boolean isFulfilled() { + return model.getTemplateEditModel().isDirty(); + } + }, parentComponent); + if (vetor.vetos()) { + return; + } model.getTemplateEditModel().copyNewTemplate(); setEnabled(false); } From e415da045625c4b894cce885438ab68c1870b2bb Mon Sep 17 00:00:00 2001 From: Curtis Tasker Date: Mon, 16 Apr 2012 01:48:59 -0700 Subject: [PATCH 08/12] Changed the alpha compositing of the toolbar button icon to be a little less transparent. It has always been hard to tell if an icon is active or not, without rolling over it. This makes it much more apparent, while maintaining a very subtle rollover effect. --- Development_Documentation/Distribution/English/versions.txt | 3 ++- .../net/sf/anathema/framework/view/toolbar/ToolBarButton.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Development_Documentation/Distribution/English/versions.txt b/Development_Documentation/Distribution/English/versions.txt index b7f3d7d1cd..379c76cdc7 100644 --- a/Development_Documentation/Distribution/English/versions.txt +++ b/Development_Documentation/Distribution/English/versions.txt @@ -25,7 +25,8 @@ This version of Anathema comes with the basic weapons, shields, and armor from t * [Jesse Belanger] Added Charm descriptions for Infernals. Most texts taken from the official Wiki. * [Curtis Tasker] The character sheet adds the highest Dodge specialty to the Dodge DV * [Curtis Tasker] The character sheet adds the highest Awareness specialty to Join Battle -* [Curtis Tasker] Improved behaviour of tabs +* [Curtis Tasker] Improved behavior of tabs +* [Curtis Tasker] Improved look of toolbar buttons * [Curtis Tasker] Added basic weapons, armor, and shields from the Errata into the equipment database. * [Curtis Tasker] Added a 'copy item' button to the equipment database. * [Curtis Tasker] Added tooltips to the buttons in the equipment database. diff --git a/Platform/src/net/sf/anathema/framework/view/toolbar/ToolBarButton.java b/Platform/src/net/sf/anathema/framework/view/toolbar/ToolBarButton.java index 8749d64b1d..3160ae5c92 100644 --- a/Platform/src/net/sf/anathema/framework/view/toolbar/ToolBarButton.java +++ b/Platform/src/net/sf/anathema/framework/view/toolbar/ToolBarButton.java @@ -34,7 +34,7 @@ private void configureActionIcons(Action action) { Image image = new BufferedImage(width, height, Transparency.TRANSLUCENT); Graphics2D graphics = (Graphics2D) image.getGraphics(); - Composite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .5f); + Composite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .8f); graphics.setComposite(alpha); graphics.drawImage(rolloverIcon.getImage(), 0, 0, null); graphics.dispose(); From f591e4796809029f974607cfac65e58d4af79626 Mon Sep 17 00:00:00 2001 From: Curtis Tasker Date: Mon, 16 Apr 2012 02:16:43 -0700 Subject: [PATCH 09/12] Removed the comments about default database items from the errata, as this patch isn't adding them quite yet. --- Development_Documentation/Distribution/English/versions.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/Development_Documentation/Distribution/English/versions.txt b/Development_Documentation/Distribution/English/versions.txt index 379c76cdc7..c006b58032 100644 --- a/Development_Documentation/Distribution/English/versions.txt +++ b/Development_Documentation/Distribution/English/versions.txt @@ -13,8 +13,6 @@ http://anathema.github.com From this version onward, Anathema no longer uses the "Equipment.yap" file, but individual files for each item. It will convert existing databases and afterwards remove the .yap file. -This version of Anathema comes with the basic weapons, shields, and armor from the Errata. When converting your old database, it will not overwrite these items. If you choose to customize one of these included items, you will need to change the name to avoid it being overwritten in a future update. - -- Features -- * New preference: Allow equipment customization. Allows to overwrite an item's name and description to make it truly yours. @@ -27,7 +25,6 @@ This version of Anathema comes with the basic weapons, shields, and armor from t * [Curtis Tasker] The character sheet adds the highest Awareness specialty to Join Battle * [Curtis Tasker] Improved behavior of tabs * [Curtis Tasker] Improved look of toolbar buttons -* [Curtis Tasker] Added basic weapons, armor, and shields from the Errata into the equipment database. * [Curtis Tasker] Added a 'copy item' button to the equipment database. * [Curtis Tasker] Added tooltips to the buttons in the equipment database. * [Curtis Tasker] Improved confirmation dialog for item deletion in the equipment database. From 5956c27a7a4debcdbc372e7fe7f56687eb30a884 Mon Sep 17 00:00:00 2001 From: Curtis Tasker Date: Mon, 16 Apr 2012 15:10:04 -0700 Subject: [PATCH 10/12] Re-added FilenameCleaner. Changed its clean method to static, and made GsonGquipmentDatabase call it rather than a private function. Net effect should be the same, and will still use far less object creation than the initial implementation. --- .../impl/item/model/gson/FilenameCleaner.java | 7 +++++++ .../impl/item/model/gson/GsonEquipmentDatabase.java | 12 ++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) create mode 100644 Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/FilenameCleaner.java diff --git a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/FilenameCleaner.java b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/FilenameCleaner.java new file mode 100644 index 0000000000..0ac6a214ec --- /dev/null +++ b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/FilenameCleaner.java @@ -0,0 +1,7 @@ +package net.sf.anathema.character.equipment.impl.item.model.gson; + +public class FilenameCleaner { + public static String clean(String input) { + return input.replaceAll("\\W", "_"); + } +} diff --git a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java index 7158c7012d..9eb5acf6ef 100644 --- a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java +++ b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/gson/GsonEquipmentDatabase.java @@ -54,7 +54,7 @@ public String[] getAllAvailableTemplateIds() { @Override public IEquipmentTemplate loadTemplate(String templateId) { - String id = cleanFilename(templateId); + String id = FilenameCleaner.clean(templateId); if (!access.exists(id)) { return null; } @@ -98,25 +98,21 @@ public void updateTemplate(String editTemplateId, IEquipmentTemplate saveTemplat } private void delete(String editTemplateId) { - String id = cleanFilename(editTemplateId); + String id = FilenameCleaner.clean(editTemplateId); if (access.exists(id)) { access.delete(id); } } private IEquipmentTemplate loadExistingTemplate(String templateId) { - String id = cleanFilename(templateId); + String id = FilenameCleaner.clean(templateId); String json = access.read(id); return gson.fromJson(json); } private void save(IEquipmentTemplate template) { - String id = cleanFilename(template.getName()); + String id = FilenameCleaner.clean(template.getName()); String json = gson.toJson(template); access.write(id, json); } - - private String cleanFilename(String input) { - return input.replaceAll("\\W", "_"); - } } \ No newline at end of file From 62dc5de9858126cc63f540c1ce585ba3e417f18f Mon Sep 17 00:00:00 2001 From: Curtis Tasker Date: Mon, 16 Apr 2012 17:23:12 -0700 Subject: [PATCH 11/12] Equipment Database: Improved the Copy Item button Now automatically saves the new copy when the button is pressed, and it appears on the master list to the left. Necessitating this was additional code to handle what happens if the copy button is pressed and the auto generated new name is the same as an item that already exists. Rather than creating a dialog box asking if you want to overwrite the existing item, it simply keeps generating new names until it finds one that isn't taken, and uses that as the name of the copy. Improved the copy mechanism to properly fail the isDirty() test, which ensures you aren't bothered with "Discard Changes" dialog boxes when switching away from the edit view. --- .../equipment/item/CopyEquipmentTemplateAction.java | 10 ++++++++-- .../item/model/IEquipmentTemplateEditModel.java | 2 +- .../impl/item/model/EquipmentTemplateEditModel.java | 7 ++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Character_Equipment/src/net/sf/anathema/character/equipment/item/CopyEquipmentTemplateAction.java b/Character_Equipment/src/net/sf/anathema/character/equipment/item/CopyEquipmentTemplateAction.java index 5d88c8e6a0..af620c8eef 100644 --- a/Character_Equipment/src/net/sf/anathema/character/equipment/item/CopyEquipmentTemplateAction.java +++ b/Character_Equipment/src/net/sf/anathema/character/equipment/item/CopyEquipmentTemplateAction.java @@ -25,11 +25,12 @@ public void valueChanged(String newValue) { } }); setEnabled(true); - setToolTipText(resources.getString("Equipment.Creation.Item.CopyActionTooltip")); //$NON-NLS-1$ + setToolTipText(resources.getString("Equipment.Creation.Item.CopyActionTooltip")); //$NON-NLS-1$ } @Override protected void execute(Component parentComponent) { + DiscardChangesVetor vetor = new DiscardChangesVetor(resources, new ICondition() { public boolean isFulfilled() { return model.getTemplateEditModel().isDirty(); @@ -38,7 +39,12 @@ public boolean isFulfilled() { if (vetor.vetos()) { return; } - model.getTemplateEditModel().copyNewTemplate(); + + String salt; + for( salt = new String(); model.getDatabase().loadTemplate( model.getTemplateEditModel().createTemplate().getName() + salt ) != null; salt += " copy" ); + + model.getTemplateEditModel().copyNewTemplate( salt ); + model.getDatabase().saveTemplate(model.getTemplateEditModel().createTemplate()); setEnabled(false); } diff --git a/Character_Equipment/src/net/sf/anathema/character/equipment/item/model/IEquipmentTemplateEditModel.java b/Character_Equipment/src/net/sf/anathema/character/equipment/item/model/IEquipmentTemplateEditModel.java index ae9e871b31..011418e62a 100644 --- a/Character_Equipment/src/net/sf/anathema/character/equipment/item/model/IEquipmentTemplateEditModel.java +++ b/Character_Equipment/src/net/sf/anathema/character/equipment/item/model/IEquipmentTemplateEditModel.java @@ -30,7 +30,7 @@ public interface IEquipmentTemplateEditModel { void setNewTemplate(); - void copyNewTemplate(); + void copyNewTemplate( String salt ); void setMagicalMaterial(MagicalMaterial newValue); diff --git a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/EquipmentTemplateEditModel.java b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/EquipmentTemplateEditModel.java index c1a33b0b52..1beddb7e13 100644 --- a/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/EquipmentTemplateEditModel.java +++ b/Character_Equipment_Impl/src/net/sf/anathema/character/equipment/impl/item/model/EquipmentTemplateEditModel.java @@ -35,6 +35,7 @@ public class EquipmentTemplateEditModel implements IEquipmentTemplateEditModel { private MaterialComposition composition; private MagicalMaterial material; private ItemCost cost; + private boolean isCopy = false; public EquipmentTemplateEditModel(IEquipmentDatabase database) { this.database = database; @@ -82,10 +83,10 @@ public void setNewTemplate() { } @Override - public void copyNewTemplate() { - editTemplateId += " copy"; + public void copyNewTemplate( String salt ) { + editTemplateId += salt; getDescription().getName().setText(editTemplateId); - + editedTemplate = createTemplate(); fireStatsChangedEvent(); } From 21c00e975bff810a35297d210e047f9fb813448a Mon Sep 17 00:00:00 2001 From: Curtis Tasker Date: Mon, 16 Apr 2012 19:42:34 -0700 Subject: [PATCH 12/12] Increased the amount of memory used by the unix variant of the gradlew script. I started bumping up against the java heap limit running the test target. Now, compiling is *much* faster, and it doesn't run out of memory. **./gradlew test - Default 256m Max Heap Size:** BUILD FAILED Total time: 14 mins 48.394 secs **./gradlew test - 512m Max Heap Size** BUILD SUCCESSFUL Total time: 1 mins 39.443 secs **./gradlew test - 1024m Max Heap Size** BUILD SUCCESSFUL Total time: 1 mins 27.968 secs --- gradlew | 4 ++-- gradlew.bat | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gradlew b/gradlew index d8809f151d..ed99d3a460 100755 --- a/gradlew +++ b/gradlew @@ -7,8 +7,8 @@ ############################################################################## # Uncomment those lines to set JVM options. GRADLE_OPTS and JAVA_OPTS can be used together. -# GRADLE_OPTS="$GRADLE_OPTS -Xmx512m" -# JAVA_OPTS="$JAVA_OPTS -Xmx512m" +GRADLE_OPTS="$GRADLE_OPTS -Xmx1024m" +JAVA_OPTS="$JAVA_OPTS -Xmx1024m" GRADLE_APP_NAME=Gradle diff --git a/gradlew.bat b/gradlew.bat index ddf64bb2c1..ad1ded4af1 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -9,8 +9,8 @@ if "%OS%"=="Windows_NT" setlocal @rem Uncomment those lines to set JVM options. GRADLE_OPTS and JAVA_OPTS can be used together. -set GRADLE_OPTS=%GRADLE_OPTS% -Xmx512m -set JAVA_OPTS=%JAVA_OPTS% -Xmx512m +set GRADLE_OPTS=%GRADLE_OPTS% -Xmx1024m +set JAVA_OPTS=%JAVA_OPTS% -Xmx1024m set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=.\