/* * Copyright (C) 2010-2016 JPEXS * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program 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. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.jpexs.decompiler.flash.gui.abc; import com.jpexs.decompiler.flash.abc.ABC; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.DefaultListModel; import javax.swing.JList; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; /** * * @author JPEXS */ public class TraitsList extends JList<Object> implements ListSelectionListener { private ABC abc; private int classIndex = -1; private final ABCPanel abcPanel; private boolean sorted = false; public void setSorted(boolean sorted) { if (getModel() instanceof TraitsListModel) { ((TraitsListModel) getModel()).setSorted(sorted); } this.sorted = sorted; } public int getClassIndex() { return classIndex; } public TraitsList(ABCPanel abcPanel) { addListSelectionListener(this); this.abcPanel = abcPanel; setCellRenderer(new IconListRenderer()); //setUI(new BasicListUI()); setBackground(Color.white); } public void clearAbc() { this.abc = null; setModel(new DefaultListModel<>()); } public void setAbc(ABC abc) { this.abc = abc; setModel(new DefaultListModel<>()); setClassIndex(-1, -1); } public void setClassIndex(int classIndex, int scriptIndex) { if (classIndex >= abc.instance_info.size()) { return; } this.classIndex = classIndex; setModel(new TraitsListModel(abc, classIndex, scriptIndex, sorted)); } private int lastSelected = -1; @Override public void valueChanged(ListSelectionEvent e) { if (getSelectedIndex() == lastSelected) { return; } lastSelected = getSelectedIndex(); TraitsListItem sel = (TraitsListItem) getSelectedValue(); abcPanel.decompiledTextArea.gotoTrait(sel == null ? -1 : sel.getGlobalTraitId()); } @Override public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setComposite(AlphaComposite.SrcOver); super.paint(g); } }