// 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.wmp; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JList; import javax.swing.JPanel; import org.infinity.datatype.DecNumber; import org.infinity.datatype.Flag; import org.infinity.datatype.ResourceRef; import org.infinity.gui.ViewFrame; import org.infinity.gui.ViewerUtil; import org.infinity.icon.Icons; import org.infinity.resource.Viewable; final class ViewerArea extends JPanel implements ActionListener { private final JButton bOpen = new JButton("View/Edit", Icons.getIcon(Icons.ICON_ZOOM_16)); private JList<Object> list; private static JPanel makeInfoPanel(AreaEntry areaEntry) { GridBagLayout gbl = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); JPanel panel = new JPanel(gbl); gbc.insets = new Insets(3, 3, 3, 3); ViewerUtil.addLabelFieldPair(panel, areaEntry.getAttribute(AreaEntry.WMP_AREA_NAME), gbl, gbc, true); ViewerUtil.addLabelFieldPair(panel, areaEntry.getAttribute(AreaEntry.WMP_AREA_CURRENT), gbl, gbc, true); ViewerUtil.addLabelFieldPair(panel, areaEntry.getAttribute(AreaEntry.WMP_AREA_LOADING_IMAGE), gbl, gbc, true); return panel; } ViewerArea(AreaEntry areaEntry) { JPanel flagPanel = ViewerUtil.makeCheckPanel((Flag)areaEntry.getAttribute(AreaEntry.WMP_AREA_FLAGS), 1); JPanel infoPane = makeInfoPanel(areaEntry); JComponent icon = ViewerUtil.makeBamPanel( (ResourceRef)areaEntry.getSuperStruct().getAttribute(MapEntry.WMP_MAP_ICONS), ((DecNumber)areaEntry.getAttribute(AreaEntry.WMP_AREA_ICON_INDEX)).getValue(), 0); JPanel linkPanelN = ViewerUtil.makeListPanel("North links", areaEntry, AreaLinkNorth.class, AreaLink.WMP_LINK_TARGET_ENTRANCE); JPanel linkPanelS = ViewerUtil.makeListPanel("South links", areaEntry, AreaLinkSouth.class, AreaLink.WMP_LINK_TARGET_ENTRANCE); JPanel linkPanelW = ViewerUtil.makeListPanel("West links", areaEntry, AreaLinkWest.class, AreaLink.WMP_LINK_TARGET_ENTRANCE); JPanel linkPanelE = ViewerUtil.makeListPanel("East links", areaEntry, AreaLinkEast.class, AreaLink.WMP_LINK_TARGET_ENTRANCE); JPanel linkPanel = new JPanel(new GridLayout(2,2,6,6)); linkPanel.add(linkPanelN); linkPanel.add(linkPanelE); linkPanel.add(linkPanelS); linkPanel.add(linkPanelW); JPanel leftPanel = new JPanel(new BorderLayout(0, 3)); leftPanel.add(icon, BorderLayout.NORTH); leftPanel.add(infoPane, BorderLayout.CENTER); GridBagLayout gbl = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); setLayout(gbl); gbc.weightx = 0.0; gbc.weighty = 0.0; gbc.insets.left = 3; gbc.fill = GridBagConstraints.NONE; gbc.anchor = GridBagConstraints.CENTER; gbl.setConstraints(leftPanel, gbc); add(leftPanel); gbc.gridwidth = GridBagConstraints.REMAINDER; gbl.setConstraints(flagPanel, gbc); add(flagPanel); gbc.fill = GridBagConstraints.BOTH; gbc.weightx = 1.0; gbc.weighty = 1.0; gbl.setConstraints(linkPanel, gbc); add(linkPanel); } // --------------------- Begin Interface ActionListener --------------------- @Override public void actionPerformed(ActionEvent event) { if (event.getSource() == bOpen) new ViewFrame(getTopLevelAncestor(), (Viewable)list.getSelectedValue()); } // --------------------- End Interface ActionListener --------------------- }