mmb.menu.world.CreativeItemList Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of multimachinebuilder Show documentation
Show all versions of multimachinebuilder Show documentation
Dependency for the MultiMachineBuilder, a voxel game about building an industrial empire in a finite world.
THIS RELEASE IS NOT PLAYABLE. To play the game, donwload from >ITCH.IO LINK HERE< or >GH releases link here<
/**
*
*/
package mmb.menu.world;
import java.awt.Component;
import java.awt.event.MouseEvent;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.swing.DefaultListModel;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import mmb.NN;
import mmb.engine.item.ItemType;
import mmb.engine.item.Items;
import monniasza.collects.Collects;
/**
* @author oskar
*
*/
public class CreativeItemList extends JList {
private static final long serialVersionUID = -5883411113161667818L;
public CreativeItemList() {
setModel(model);
setToolTipText("");
}
@NN public static final DefaultListModel model = new DefaultListModel<>();
@NN public static final List list = Collects.toWritableList(model);
static {
list.addAll(Items.items);
Collections.sort(list, (l, r) -> l.title().compareTo(r.title()));
}
public static void resort(Comparator sort, DefaultListModel model) {
Collections.sort(Collects.toWritableList(model), sort);
}
@Override
public ListCellRenderer super ItemType> getCellRenderer() {
return cellrender;
}
private final ListCellRenderer cellrender = new ItemListCellRenderer();
public static class ItemListCellRenderer extends JLabel implements ListCellRenderer<@NN ItemType>{
private static final long serialVersionUID = -3535344904857285958L;
public ItemListCellRenderer() {
setOpaque(true);
}
@Override
public Component getListCellRendererComponent(@SuppressWarnings("null") JList extends ItemType> list, ItemType itemType, int index,
boolean isSelected, boolean cellHasFocus) {
setIcon(itemType.getIcon());
setText(itemType.title());
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
return this;
}
}
@Override
public String getToolTipText(@SuppressWarnings("null") MouseEvent event) {
int index = locationToIndex(event.getPoint());
if(index > -1) {
String description = model.get(index).description();
return description;
}
return null;
}
}