/** * */ package net.scapeemulator.game.tools.npcviewer; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.UIManager; import javax.swing.border.EmptyBorder; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import net.scapeemulator.cache.Cache; import net.scapeemulator.cache.FileStore; import net.scapeemulator.game.model.definition.NPCDefinitions; import net.scapeemulator.game.tools.dropeditor.FilteredNPCJList; /** * @author David Insley */ public class NPCViewer { private static final String CACHE_PATH = "data/game/cache"; private JFrame frame; private JTextField namefilterField; private JTextField cbFilterField; private FilteredNPCJList npcList; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Cache cache = new Cache(FileStore.open(CACHE_PATH)); NPCViewer app = new NPCViewer(cache); app.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } NPCViewer(Cache cache) { try { NPCDefinitions.init(cache); } catch (Exception e) { System.exit(1); } init(); } private void init() { frame = new JFrame("NPC Viewer"); try { UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); } catch (Throwable e) { e.printStackTrace(); } frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(100, 100, 350, 500); frame.getContentPane().setLayout(new BorderLayout()); JPanel contentPanel = new JPanel(); frame.getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPanel.setLayout(new BorderLayout(5, 10)); JPanel filtersPanel = new JPanel(); filtersPanel.setLayout(new BorderLayout()); namefilterField = new JTextField(); FilterListener listener = new FilterListener(); namefilterField.getDocument().addDocumentListener(listener); cbFilterField = new JTextField(); cbFilterField.getDocument().addDocumentListener(listener); filtersPanel.add(namefilterField, BorderLayout.NORTH); filtersPanel.add(cbFilterField, BorderLayout.SOUTH); contentPanel.add(filtersPanel, BorderLayout.NORTH); npcList = new FilteredNPCJList(); npcList.setListData(NPCDefinitions.getDefinitions()); JScrollPane scrollPane = new JScrollPane(npcList); contentPanel.add(scrollPane, BorderLayout.CENTER); } private class FilterListener implements DocumentListener { @Override public void changedUpdate(DocumentEvent de) { } @Override public void insertUpdate(DocumentEvent de) { npcList.filterNarrowed(namefilterField.getText(), Integer.parseInt("0" + cbFilterField.getText())); } @Override public void removeUpdate(DocumentEvent arg0) { npcList.filterReset(namefilterField.getText(), Integer.parseInt("0" + cbFilterField.getText())); } } }