/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.pepsoft.worldpainter.importing; import com.jidesoft.swing.CheckBoxTreeCellRenderer; import com.jidesoft.swing.CheckBoxTreeSelectionModel; import org.pepsoft.worldpainter.ColourScheme; import org.pepsoft.worldpainter.World2; import org.pepsoft.worldpainter.WorldPainterDialog; import javax.swing.*; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.TreePath; import java.awt.*; import java.util.List; /** * * @author Pepijn Schmitz */ public class ImportCustomItemsDialog extends WorldPainterDialog implements TreeSelectionListener { /** * Creates new form ImportCustomItemsDialog */ public ImportCustomItemsDialog(Window parent, World2 world, ColourScheme colourScheme, CustomItemsTreeModel.ItemType itemType) { super(parent); initComponents(); ((CheckBoxTreeCellRenderer) treeCustomItems.getCellRenderer()).setActualTreeRenderer(new CustomItemsTreeCellRenderer(colourScheme)); treeModel = new CustomItemsTreeModel(world, itemType); treeCustomItems.getCheckBoxTreeSelectionModel().setModel(treeModel); treeCustomItems.setModel(treeModel); expandAll(treeCustomItems); CheckBoxTreeSelectionModel checkBoxTreeSelectionModel = treeCustomItems.getCheckBoxTreeSelectionModel(); checkBoxTreeSelectionModel.addSelectionPath(new TreePath(treeModel.getRoot())); checkBoxTreeSelectionModel.addTreeSelectionListener(this); labelWorld.setText(world.getName()); getRootPane().setDefaultButton(buttonOK); setLocationRelativeTo(parent); } public List<Object> getSelectedItems() { return treeModel.getSelectedItems(treeCustomItems.getCheckBoxTreeSelectionModel().getSelectionPaths()); } // TreeSelectionListener @Override public void valueChanged(TreeSelectionEvent e) { setControlStates(); } private void expandAll(JTree tree) { for (int i = 0; i < tree.getRowCount(); i++) { tree.expandRow(i); } } private void setControlStates() { buttonOK.setEnabled(treeCustomItems.getCheckBoxTreeSelectionModel().getSelectionCount() > 0); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jLabel1 = new javax.swing.JLabel(); labelWorld = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); buttonCancel = new javax.swing.JButton(); buttonOK = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); treeCustomItems = new com.jidesoft.swing.CheckBoxTree(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Import Custom Items"); jLabel1.setText("Selected world:"); labelWorld.setText("jLabel2"); jLabel3.setText("Select which custom item(s) you want to import:"); buttonCancel.setText("Cancel"); buttonCancel.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonCancelActionPerformed(evt); } }); buttonOK.setText("OK"); buttonOK.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonOKActionPerformed(evt); } }); treeCustomItems.setSelectionModel(null); jScrollPane1.setViewportView(treeCustomItems); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(labelWorld)) .addComponent(jLabel3)) .addGap(0, 91, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(buttonOK) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(buttonCancel))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(labelWorld)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 178, Short.MAX_VALUE) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonCancel) .addComponent(buttonOK)) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void buttonCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonCancelActionPerformed cancel(); }//GEN-LAST:event_buttonCancelActionPerformed private void buttonOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonOKActionPerformed ok(); }//GEN-LAST:event_buttonOKActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonCancel; private javax.swing.JButton buttonOK; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel3; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel labelWorld; private com.jidesoft.swing.CheckBoxTree treeCustomItems; // End of variables declaration//GEN-END:variables private final CustomItemsTreeModel treeModel; }