/* * 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.edit; import com.trollworks.toolkit.annotation.Localize; import com.trollworks.toolkit.ui.menu.Command; import com.trollworks.toolkit.ui.menu.DynamicCheckBoxMenuItem; import com.trollworks.toolkit.ui.menu.DynamicMenuEnabler; import com.trollworks.toolkit.ui.menu.DynamicMenuItem; import com.trollworks.toolkit.ui.menu.MenuProvider; import com.trollworks.toolkit.ui.menu.edit.CopyCommand; import com.trollworks.toolkit.ui.menu.edit.CutCommand; import com.trollworks.toolkit.ui.menu.edit.DeleteCommand; import com.trollworks.toolkit.ui.menu.edit.JumpToSearchCommand; import com.trollworks.toolkit.ui.menu.edit.PasteCommand; import com.trollworks.toolkit.ui.menu.edit.PreferencesCommand; import com.trollworks.toolkit.ui.menu.edit.RedoCommand; import com.trollworks.toolkit.ui.menu.edit.SelectAllCommand; import com.trollworks.toolkit.ui.menu.edit.UndoCommand; import com.trollworks.toolkit.utility.Localization; import com.trollworks.toolkit.utility.Platform; import java.util.HashSet; import java.util.Locale; import java.util.Set; import javax.swing.JCheckBoxMenuItem; import javax.swing.JMenu; /** Provides the standard "Edit" menu. */ public class EditMenuProvider implements MenuProvider { @Localize("Edit") @Localize(locale = "de", value = "Bearbeiten") @Localize(locale = "ru", value = "Правка") @Localize(locale = "es", value = "Editar") private static String EDIT; @Localize("User Interface Language") private static String LANGUAGE; static { Localization.initialize(); } public static final String NAME = "Edit"; //$NON-NLS-1$ @Override public Set<Command> getModifiableCommands() { Set<Command> cmds = new HashSet<>(); cmds.add(UndoCommand.INSTANCE); cmds.add(RedoCommand.INSTANCE); cmds.add(CutCommand.INSTANCE); cmds.add(CopyCommand.INSTANCE); cmds.add(PasteCommand.INSTANCE); cmds.add(DuplicateCommand.INSTANCE); cmds.add(DeleteCommand.INSTANCE); cmds.add(SelectAllCommand.INSTANCE); cmds.add(IncrementCommand.INSTANCE); cmds.add(DecrementCommand.INSTANCE); cmds.add(SkillLevelIncrementCommand.INSTANCE); cmds.add(SkillLevelDecrementCommand.INSTANCE); cmds.add(TechLevelIncrementCommand.INSTANCE); cmds.add(TechLevelDecrementCommand.INSTANCE); cmds.add(RotateStateCommand.INSTANCE); cmds.add(JumpToSearchCommand.INSTANCE); cmds.add(RandomizeDescriptionCommand.INSTANCE); cmds.add(RandomizeNameCommand.FEMALE_INSTANCE); cmds.add(RandomizeNameCommand.MALE_INSTANCE); cmds.add(AddNaturalPunchCommand.INSTANCE); cmds.add(AddNaturalKickCommand.INSTANCE); cmds.add(AddNaturalKickWithBootsCommand.INSTANCE); cmds.add(SwapDefaultsCommand.INSTANCE); if (!Platform.isMacintosh()) { cmds.add(PreferencesCommand.INSTANCE); } return cmds; } @Override public JMenu createMenu() { JMenu menu = new JMenu(EDIT); menu.setName(NAME); menu.add(new DynamicMenuItem(UndoCommand.INSTANCE)); menu.add(new DynamicMenuItem(RedoCommand.INSTANCE)); menu.addSeparator(); menu.add(new DynamicMenuItem(CutCommand.INSTANCE)); menu.add(new DynamicMenuItem(CopyCommand.INSTANCE)); menu.add(new DynamicMenuItem(PasteCommand.INSTANCE)); menu.add(new DynamicMenuItem(DuplicateCommand.INSTANCE)); menu.add(new DynamicMenuItem(DeleteCommand.INSTANCE)); menu.add(new DynamicMenuItem(SelectAllCommand.INSTANCE)); menu.addSeparator(); menu.add(new DynamicMenuItem(IncrementCommand.INSTANCE)); menu.add(new DynamicMenuItem(DecrementCommand.INSTANCE)); menu.add(new DynamicMenuItem(SkillLevelIncrementCommand.INSTANCE)); menu.add(new DynamicMenuItem(SkillLevelDecrementCommand.INSTANCE)); menu.add(new DynamicMenuItem(TechLevelIncrementCommand.INSTANCE)); menu.add(new DynamicMenuItem(TechLevelDecrementCommand.INSTANCE)); menu.add(new DynamicMenuItem(RotateStateCommand.INSTANCE)); menu.add(new DynamicMenuItem(SwapDefaultsCommand.INSTANCE)); menu.addSeparator(); menu.add(new DynamicMenuItem(JumpToSearchCommand.INSTANCE)); menu.addSeparator(); menu.add(new DynamicMenuItem(RandomizeDescriptionCommand.INSTANCE)); menu.add(new DynamicMenuItem(RandomizeNameCommand.FEMALE_INSTANCE)); menu.add(new DynamicMenuItem(RandomizeNameCommand.MALE_INSTANCE)); menu.addSeparator(); menu.add(new DynamicCheckBoxMenuItem(AddNaturalPunchCommand.INSTANCE)); menu.add(new DynamicCheckBoxMenuItem(AddNaturalKickCommand.INSTANCE)); menu.add(new DynamicCheckBoxMenuItem(AddNaturalKickWithBootsCommand.INSTANCE)); menu.addSeparator(); if (!Platform.isMacintosh()) { menu.add(new DynamicMenuItem(PreferencesCommand.INSTANCE)); } menu.add(createLanguageMenu()); DynamicMenuEnabler.add(menu); return menu; } public static JMenu createLanguageMenu() { JMenu menu = new JMenu(LANGUAGE); menu.add(new JCheckBoxMenuItem(new SetLanguageCommand(null))); menu.addSeparator(); menu.add(new JCheckBoxMenuItem(new SetLanguageCommand(new Locale("en")))); //$NON-NLS-1$ menu.add(new JCheckBoxMenuItem(new SetLanguageCommand(new Locale("de")))); //$NON-NLS-1$ menu.add(new JCheckBoxMenuItem(new SetLanguageCommand(new Locale("ru")))); //$NON-NLS-1$ menu.add(new JCheckBoxMenuItem(new SetLanguageCommand(new Locale("es")))); //$NON-NLS-1$ DynamicMenuEnabler.add(menu); return menu; } }