// Near Infinity - An Infinity Engine Browser and Editor
// Copyright (C) 2001 - 2005 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.resource.itm;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.infinity.datatype.EffectType;
import org.infinity.datatype.Flag;
import org.infinity.datatype.ResourceRef;
import org.infinity.gui.ViewerUtil;
import org.infinity.resource.AbstractAbility;
import org.infinity.resource.Effect;
import org.infinity.resource.StructEntry;
final class Viewer extends JPanel
{
Viewer(ItmResource itm)
{
JComponent iconPanel1 = ViewerUtil.makeBamPanel((ResourceRef)itm.getAttribute(ItmResource.ITM_ICON), 0, 0);
JComponent iconPanel2 = ViewerUtil.makeBamPanel((ResourceRef)itm.getAttribute(ItmResource.ITM_ICON_GROUND), 0);
JPanel globaleffectsPanel = ViewerUtil.makeListPanel("Global effects", itm, Effect.class, EffectType.EFFECT_TYPE);
JPanel abilitiesPanel = ViewerUtil.makeListPanel("Abilities", itm, Ability.class, AbstractAbility.ABILITY_TYPE);
JPanel fieldPanel = makeFieldPanel(itm);
JPanel boxPanel = ViewerUtil.makeCheckPanel((Flag)itm.getAttribute(ItmResource.ITM_FLAGS), 1);
StructEntry desc = itm.getAttribute(ItmResource.ITM_DESCRIPTION_IDENTIFIED);
if (desc.toString().equalsIgnoreCase("No such index"))
desc = itm.getAttribute(ItmResource.ITM_DESCRIPTION_GENERAL);
JPanel descPanel = ViewerUtil.makeTextAreaPanel(desc);
JPanel iconPanel = new JPanel(new GridLayout(2, 1, 0, 6));
iconPanel.add(iconPanel1);
iconPanel.add(iconPanel2);
JPanel panel1 = new JPanel(new BorderLayout(3, 0));
panel1.add(iconPanel, BorderLayout.CENTER);
panel1.add(boxPanel, BorderLayout.WEST);
JPanel panel2 = new JPanel(new GridLayout(1, 2, 6, 3));
panel2.add(abilitiesPanel);
panel2.add(globaleffectsPanel);
JPanel panel3 = new JPanel(new GridLayout(2, 1, 6, 6));
panel3.add(descPanel);
panel3.add(panel2);
JPanel panel4 = new JPanel(new BorderLayout());
panel4.add(fieldPanel, BorderLayout.NORTH);
panel4.add(panel1, BorderLayout.CENTER);
setLayout(new GridLayout(1, 2, 3, 3));
add(panel4);
add(panel3);
setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
}
private JPanel makeFieldPanel(ItmResource itm)
{
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
JPanel fieldPanel = new JPanel(gbl);
gbc.insets = new Insets(3, 3, 3, 3);
ViewerUtil.addLabelFieldPair(fieldPanel, itm.getAttribute(ItmResource.ITM_NAME_GENERAL), gbl, gbc, true);
ViewerUtil.addLabelFieldPair(fieldPanel, itm.getAttribute(ItmResource.ITM_NAME_IDENTIFIED), gbl, gbc, true);
ViewerUtil.addLabelFieldPair(fieldPanel, itm.getAttribute(ItmResource.ITM_CATEGORY), gbl, gbc, true);
StructEntry s1 = itm.getAttribute(ItmResource.ITM_MIN_STRENGTH);
StructEntry s2 = itm.getAttribute(ItmResource.ITM_MIN_STRENGTH_BONUS);
gbc.weightx = 0.0;
gbc.fill = GridBagConstraints.NONE;
gbc.gridwidth = 1;
JLabel dlabel = new JLabel("Minimum strength");
gbl.setConstraints(dlabel, gbc);
fieldPanel.add(dlabel);
gbc.weightx = 1.0;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridwidth = GridBagConstraints.REMAINDER;
JLabel tf1 = new JLabel(s1.toString() + '/' + s2.toString());
tf1.setFont(tf1.getFont().deriveFont(Font.PLAIN));
gbl.setConstraints(tf1, gbc);
fieldPanel.add(tf1);
ViewerUtil.addLabelFieldPair(fieldPanel, itm.getAttribute(ItmResource.ITM_MIN_DEXTERITY), gbl, gbc, true);
ViewerUtil.addLabelFieldPair(fieldPanel, itm.getAttribute(ItmResource.ITM_MIN_CONSTITUTION), gbl, gbc, true);
ViewerUtil.addLabelFieldPair(fieldPanel, itm.getAttribute(ItmResource.ITM_MIN_INTELLIGENCE), gbl, gbc, true);
ViewerUtil.addLabelFieldPair(fieldPanel, itm.getAttribute(ItmResource.ITM_MIN_WISDOM), gbl, gbc, true);
ViewerUtil.addLabelFieldPair(fieldPanel, itm.getAttribute(ItmResource.ITM_MIN_CHARISMA), gbl, gbc, true);
ViewerUtil.addLabelFieldPair(fieldPanel, itm.getAttribute(ItmResource.ITM_PRICE), gbl, gbc, true);
ViewerUtil.addLabelFieldPair(fieldPanel, itm.getAttribute(ItmResource.ITM_LORE), gbl, gbc, true);
ViewerUtil.addLabelFieldPair(fieldPanel, itm.getAttribute(ItmResource.ITM_ENCHANTMENT), gbl, gbc, true);
ViewerUtil.addLabelFieldPair(fieldPanel, itm.getAttribute(ItmResource.ITM_WEIGHT), gbl, gbc, true);
return fieldPanel;
}
}