/* * Copyright (c) 1998-2017 by Richard A. Wilkes. All rights reserved. * * This Source Code Form is subject to the terms of the Mozilla Public * License, version 2.0. If a copy of the MPL was not distributed with * this file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This Source Code Form is "Incompatible With Secondary Licenses", as * defined by the Mozilla Public License, version 2.0. */ package com.trollworks.gcs.weapon; import com.trollworks.gcs.advantage.Advantage; import com.trollworks.gcs.equipment.Equipment; import com.trollworks.gcs.skill.Skill; import com.trollworks.gcs.spell.Spell; import com.trollworks.gcs.widgets.outline.ListRow; import com.trollworks.toolkit.annotation.Localize; import com.trollworks.toolkit.ui.widget.EditorField; import com.trollworks.toolkit.utility.Localization; import java.awt.Container; import java.util.List; /** An editor for melee weapon statistics. */ public class MeleeWeaponEditor extends WeaponEditor { @Localize("Melee Weapon") @Localize(locale = "de", value = "Nahkampfwaffe") @Localize(locale = "ru", value = "Контактное оружие") @Localize(locale = "es", value = "Arma de cuerpo a cuerpo") private static String MELEE_WEAPON; @Localize("Reach") @Localize(locale = "de", value = "Reichweite") @Localize(locale = "ru", value = "Досягаемость") @Localize(locale = "es", value = "Alcance") private static String REACH; @Localize("Parry Modifier") @Localize(locale = "de", value = "Paradewert") @Localize(locale = "ru", value = "Модификатор парирования") @Localize(locale = "es", value = "Modificador de parada") private static String PARRY; @Localize("Block Modifier") @Localize(locale = "de", value = "Abblockwert") @Localize(locale = "ru", value = "Модификатор блока") @Localize(locale = "es", value = "Modificador de bloqueo") private static String BLOCK; static { Localization.initialize(); } private EditorField mReach; private EditorField mParry; private EditorField mBlock; /** * Creates a new melee weapon editor for the specified row. * * @param row The row to edit melee weapon statistics for. * @return The editor, or <code>null</code> if the row is not appropriate. */ static public MeleeWeaponEditor createEditor(ListRow row) { if (row instanceof Equipment) { return new MeleeWeaponEditor(row, ((Equipment) row).getWeapons()); } else if (row instanceof Advantage) { return new MeleeWeaponEditor(row, ((Advantage) row).getWeapons()); } else if (row instanceof Spell) { return new MeleeWeaponEditor(row, ((Spell) row).getWeapons()); } else if (row instanceof Skill) { return new MeleeWeaponEditor(row, ((Skill) row).getWeapons()); } return null; } /** * Creates a new {@link MeleeWeaponStats} editor. * * @param owner The owning row. * @param weapons The weapons to modify. */ public MeleeWeaponEditor(ListRow owner, List<WeaponStats> weapons) { super(owner, weapons, MeleeWeaponStats.class); } @Override protected void createFields(Container parent) { mParry = createTextField(parent, PARRY, EMPTY); mReach = createTextField(parent, REACH, EMPTY); mBlock = createTextField(parent, BLOCK, EMPTY); } @Override protected void updateFromField(Object source) { if (mReach == source) { changeReach(); } else if (mParry == source) { changeParry(); } else if (mBlock == source) { changeBlock(); } } private void changeReach() { ((MeleeWeaponStats) getWeapon()).setReach((String) mReach.getValue()); adjustOutlineToContent(); } private void changeParry() { ((MeleeWeaponStats) getWeapon()).setParry((String) mParry.getValue()); adjustOutlineToContent(); } private void changeBlock() { ((MeleeWeaponStats) getWeapon()).setBlock((String) mBlock.getValue()); adjustOutlineToContent(); } @Override protected WeaponStats createWeaponStats() { return new MeleeWeaponStats(getOwner()); } @Override protected void updateFields() { MeleeWeaponStats weapon = (MeleeWeaponStats) getWeapon(); mReach.setValue(weapon.getReach()); mParry.setValue(weapon.getParry()); mBlock.setValue(weapon.getBlock()); super.updateFields(); } @Override protected void enableFields(boolean enabled) { mReach.setEnabled(enabled); mParry.setEnabled(enabled); mBlock.setEnabled(enabled); super.enableFields(enabled); } @Override protected void blankFields() { mReach.setValue(EMPTY); mParry.setValue(EMPTY); mBlock.setValue(EMPTY); super.blankFields(); } @Override public String toString() { return MELEE_WEAPON; } }