/*
* 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.prereq;
import com.trollworks.gcs.widgets.outline.ListRow;
import com.trollworks.toolkit.annotation.Localize;
import com.trollworks.toolkit.ui.layout.FlexGrid;
import com.trollworks.toolkit.ui.layout.FlexRow;
import com.trollworks.toolkit.ui.layout.FlexSpacer;
import com.trollworks.toolkit.ui.widget.Commitable;
import com.trollworks.toolkit.utility.Localization;
import java.awt.event.ActionEvent;
import javax.swing.JComboBox;
/** A spell prerequisite editor panel. */
public class SpellPrereqEditor extends PrereqEditor {
@Localize("whose name")
@Localize(locale = "de", value = "deren/dessen Name")
@Localize(locale = "ru", value = "чьё название")
@Localize(locale = "es", value = "cuyo nombre es ")
private static String WHOSE_SPELL_NAME;
@Localize("of any kind")
@Localize(locale = "de", value = "jeglicher Art")
@Localize(locale = "ru", value = "любого вида")
@Localize(locale = "es", value = "de cualquier tipo")
private static String ANY;
@Localize("whose college name")
@Localize(locale = "de", value = "deren/dessen Schule")
@Localize(locale = "ru", value = "чьё название школы")
@Localize(locale = "es", value = "cuya escuela se llama ")
private static String COLLEGE;
@Localize("from different colleges")
@Localize(locale = "de", value = "von unterschiedlichen Schulen")
@Localize(locale = "ru", value = "из разных школ")
@Localize(locale = "es", value = "de diferentes escuelas")
private static String COLLEGE_COUNT;
static {
Localization.initialize();
}
private static final String CHANGE_TYPE = "ChangeSpellType"; //$NON-NLS-1$
private static final String EMPTY = ""; //$NON-NLS-1$
private static final String[] TYPES = { SpellPrereq.TAG_NAME, SpellPrereq.TAG_ANY, SpellPrereq.TAG_COLLEGE, SpellPrereq.TAG_COLLEGE_COUNT };
/**
* Creates a new spell prerequisite editor panel.
*
* @param row The owning row.
* @param prereq The prerequisite to edit.
* @param depth The depth of this prerequisite.
*/
public SpellPrereqEditor(ListRow row, SpellPrereq prereq, int depth) {
super(row, prereq, depth);
}
@Override
protected void rebuildSelf(FlexRow left, FlexGrid grid, FlexRow right) {
SpellPrereq prereq = (SpellPrereq) mPrereq;
String type = prereq.getType();
FlexRow row = new FlexRow();
row.add(addHasCombo(prereq.has()));
row.add(addNumericCompareCombo(prereq.getQuantityCriteria(), null));
row.add(addNumericCompareField(prereq.getQuantityCriteria(), 0, 999, false));
row.add(addChangeBaseTypeCombo());
row.add(new FlexSpacer(0, 0, true, false));
grid.add(row, 0, 1);
row = new FlexRow();
row.add(addChangeTypePopup());
if (SpellPrereq.TAG_NAME.equals(type)) {
row.add(addStringCompareCombo(prereq.getStringCriteria(), EMPTY));
row.add(addStringCompareField(prereq.getStringCriteria()));
} else if (SpellPrereq.TAG_COLLEGE.equals(type)) {
row.add(addStringCompareCombo(prereq.getStringCriteria(), EMPTY));
row.add(addStringCompareField(prereq.getStringCriteria()));
} else {
row.add(new FlexSpacer(0, 0, true, false));
}
grid.add(row, 1, 1);
}
private JComboBox<Object> addChangeTypePopup() {
String[] titles = { WHOSE_SPELL_NAME, ANY, COLLEGE, COLLEGE_COUNT };
int selection = 0;
String current = ((SpellPrereq) mPrereq).getType();
for (int i = 0; i < TYPES.length; i++) {
if (TYPES[i].equals(current)) {
selection = i;
break;
}
}
return addComboBox(CHANGE_TYPE, titles, titles[selection]);
}
@Override
public void actionPerformed(ActionEvent event) {
SpellPrereq prereq = (SpellPrereq) mPrereq;
String command = event.getActionCommand();
if (CHANGE_TYPE.equals(command)) {
String type = TYPES[((JComboBox<?>) event.getSource()).getSelectedIndex()];
if (!prereq.getType().equals(type)) {
Commitable.sendCommitToFocusOwner();
prereq.setType(type);
rebuild();
}
} else {
super.actionPerformed(event);
}
}
}