/* * 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.menu.item; import com.trollworks.gcs.character.SheetDockable; import com.trollworks.gcs.template.Template; import com.trollworks.gcs.template.TemplateDockable; import com.trollworks.toolkit.annotation.Localize; import com.trollworks.toolkit.ui.menu.Command; import com.trollworks.toolkit.ui.widget.outline.Row; import com.trollworks.toolkit.utility.Localization; import com.trollworks.toolkit.utility.undo.MultipleUndo; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.util.ArrayList; /** Provides the "Apply Template To Sheet" command. */ public class ApplyTemplateCommand extends Command { @Localize("Apply Template To Character Sheet") @Localize(locale = "de", value = "Wende Vorlage auf Charakterblatt an") @Localize(locale = "ru", value = "Применить шаблон к листу персонажа") @Localize(locale = "es", value = "Aplicar nueva plantilla de hoja de personaje") private static String APPLY_TEMPLATE_TO_SHEET; @Localize("Apply Template") @Localize(locale = "de", value = "Vorlage anwenden") @Localize(locale = "ru", value = "Применить шаблон") @Localize(locale = "es", value = "Aplicar plantilla") private static String UNDO; static { Localization.initialize(); } /** The action command this command will issue. */ public static final String CMD_APPLY_TEMPLATE = "ApplyTemplate"; //$NON-NLS-1$ /** The singleton {@link ApplyTemplateCommand}. */ public static final ApplyTemplateCommand INSTANCE = new ApplyTemplateCommand(); private ApplyTemplateCommand() { super(APPLY_TEMPLATE_TO_SHEET, CMD_APPLY_TEMPLATE, KeyEvent.VK_A, SHIFTED_COMMAND_MODIFIER); } @Override public void adjust() { TemplateDockable template = getTarget(TemplateDockable.class); if (template != null) { setEnabled(SheetDockable.getLastActivated() != null); } else { setEnabled(false); } } @Override public void actionPerformed(ActionEvent event) { TemplateDockable templateDockable = getTarget(TemplateDockable.class); if (templateDockable != null) { SheetDockable sheetDockable = SheetDockable.getLastActivated(); if (sheetDockable != null) { Template template = templateDockable.getDataFile(); MultipleUndo edit = new MultipleUndo(UNDO); ArrayList<Row> rows = new ArrayList<>(); template.addEdit(edit); rows.addAll(template.getAdvantagesModel().getTopLevelRows()); rows.addAll(template.getSkillsModel().getTopLevelRows()); rows.addAll(template.getSpellsModel().getTopLevelRows()); rows.addAll(template.getEquipmentModel().getTopLevelRows()); rows.addAll(template.getNotesModel().getTopLevelRows()); sheetDockable.addRows(rows); edit.end(); } } } }