private Collection<Config.ConfigEntry> getSelectedCharacters() { final Collection<Config.ConfigEntry> entries = new ArrayList<Config.ConfigEntry>(); Object[] selectedValues = herolabsCharacterList.getSelectedValues(); for (Object object : selectedValues) { entries.add(config.getOrCreate(((Character) object).getName())); } return entries; }
private void showContextMenu(JList characterList, MouseEvent mouseEvent) { // TODO: handle right-click outside of selected range correctly (should treat as single // selection, but not deselect) boolean multipleSelected = herolabsCharacterList.getSelectedValues().length > 1; if (mouseEvent.isPopupTrigger() && mouseEvent.getClickCount() == 1) { if (!multipleSelected) { herolabsCharacterList.setSelectedIndex( herolabsCharacterList.locationToIndex(mouseEvent.getPoint())); } if (contextMenuEnabled) { JPopupMenu menu = new JPopupMenu(); JMenuItem menuItem; menuItem = new JMenuItem("Configure character" + (multipleSelected ? "s" : "") + "..."); menuItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { configureSelectedCharacters(); } }); menu.add(menuItem); menuItem = new JMenuItem("Configure using portfolio defaults"); menuItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { resetToDefaultsForSelectedCharacters(); } }); menu.add(menuItem); menuItem = new JMenuItem("Export character" + (multipleSelected ? "s" : "")); menuItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { exportSelectedCharacters(); } }); menu.add(menuItem); menuItem = new JMenuItem("Clear configuration" + (multipleSelected ? "s" : "")); menuItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { clearConfigForSelectedCharacters(); } }); menu.add(menuItem); menu.show(characterList, mouseEvent.getX(), mouseEvent.getY()); } } }
private void clearConfigForSelectedCharacters() { int confirmation = JOptionPane.showConfirmDialog( panel, "WARNING: this will erase the current configuration for all selected characters. \nAre you certain you wish to do this?", "Clear Selected Configurations?", JOptionPane.YES_NO_OPTION); if (confirmation == JOptionPane.YES_OPTION) { for (Object character : herolabsCharacterList.getSelectedValues()) { config.remove(((Character) character).getName()); } } herolabsCharacterList.repaint(); }
private void resetToDefaultsForSelectedCharacters() { int confirmation = JOptionPane.showConfirmDialog( panel, "NOTE: this will attempt to replace any custom configuration for the selected characters with the Portfolio defaults. \nAre you certain you wish to do this?", "Reset to portfolio defaults?", JOptionPane.YES_NO_OPTION); if (confirmation == JOptionPane.YES_OPTION) { for (Object character : herolabsCharacterList.getSelectedValues()) { config.populateCharacterWithDefaults(((Character) character).getName(), true); } } herolabsCharacterList.repaint(); }
private void exportCharacters() { Object[] selectedValues = herolabsCharacterList.getSelectedValues(); HeroLabPathfinderDigester dig = new HeroLabPathfinderDigester(); boolean success = true; ArrayList<Character> notExported = new ArrayList<Character>(); for (Object object : selectedValues) { Character character = (Character) object; try { if (!dig.saveCharacter(config, character)) { notExported.add(character); } } catch (IOException io) { success = false; errorDialog(io.getMessage(), "Something bad happened:" + io.toString()); } catch (SAXException saxe) { success = false; errorDialog(saxe.getMessage(), "Something bad happened:" + saxe.toString()); } catch (Exception e) { success = false; errorDialog(e.getMessage(), "Something bad happened:" + e.toString()); } } if (success) { String message = "Successfully exported " + (selectedValues.length - notExported.size()) + " out of " + selectedValues.length + " Maptools token(s)."; if (!notExported.isEmpty()) { message += " " + notExported.size() + " tokens were not exported as they are not fully configured."; // TODO: do something more useful with this collection } JOptionPane.showMessageDialog(panel, message); } }