/* * This file is part of the Illarion project. * * Copyright © 2015 - Illarion e.V. * * Illarion is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Illarion is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ package illarion.mapedit.tools.panel.components; import illarion.mapedit.Lang; import illarion.mapedit.data.MapItem; import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.swing.*; import javax.swing.text.NumberFormatter; import java.awt.*; import java.text.NumberFormat; /** * @author Fredrik K */ public class ItemDataFields extends JPanel { @Nonnull private final JFormattedTextField durabilityField; @Nonnull private final JFormattedTextField qualityField; @Nullable private MapItem item; public ItemDataFields() { super(new GridLayout(2, 2)); NumberFormat format = NumberFormat.getInstance(); NumberFormatter qualityFormatter = new NumberFormatter(format); qualityFormatter.setValueClass(Integer.class); qualityFormatter.setMinimum(1); qualityFormatter.setMaximum(9); qualityFormatter.setCommitsOnValidEdit(true); qualityField = new JFormattedTextField(qualityFormatter); qualityField.setEnabled(false); qualityField.addPropertyChangeListener(e -> { if (item == null) { return; } if (!e.getPropertyName().equals("value")) { return; } if (e.getSource() != qualityField) { return; } int val = (int) e.getNewValue(); item.setQuality(val); }); NumberFormatter durabilityFormatter = new NumberFormatter(format); durabilityFormatter.setValueClass(Integer.class); durabilityFormatter.setMinimum(0); durabilityFormatter.setMaximum(99); durabilityFormatter.setCommitsOnValidEdit(true); durabilityField = new JFormattedTextField(durabilityFormatter); durabilityField.setEnabled(false); durabilityField.addPropertyChangeListener(e -> { if (item == null) { return; } if (!e.getPropertyName().equals("value")) { return; } if (e.getSource() != durabilityField) { return; } int val = (int) e.getNewValue(); item.setDurability(val); }); add(new JLabel(Lang.getMsg("tools.DataTool.Quality"))); add(qualityField); add(new JLabel(Lang.getMsg("tools.DataTool.Durability"))); add(durabilityField); } public void setData(@Nonnull MapItem item) { this.item = item; durabilityField.setValue(item.getDurability()); qualityField.setValue(item.getQuality()); durabilityField.setEnabled(true); qualityField.setEnabled(true); } public void clearFields() { item = null; durabilityField.setValue(null); qualityField.setValue(null); durabilityField.setEnabled(false); qualityField.setEnabled(false); } }