private void resetLevelMap() { finalLevelMap.clear(); for (int i = levels.getSize() - 1; i >= 0; i--) { String c = levels.getClassTaken(levels.getElementAt(i)).getKeyName(); if (!finalLevelMap.containsKey(c)) { finalLevelMap.put(c, i); } } }
@Override public void elementAdded(ListEvent<CharacterLevelFacade> e) { editor.cancelCellEditing(); int i = e.getIndex(); String c = levels.getClassTaken(levels.getElementAt(i)).getKeyName(); finalLevelMap.put(c, i); // Do a full refresh as the previous max class level row may be affected fireTableDataChanged(); }
@Override @SuppressWarnings("unchecked") public List<TreeViewPath<SkillFacade>> getPaths(SkillFacade pobj) { List<Object> path = new ArrayList<Object>(); int index = selectionModel.getMinSelectionIndex(); if (index >= 0) { CharacterLevelFacade level = levels.getElementAt(index); path.add(levels.getSkillCost(level, pobj)); } return Arrays.asList(createTreeViewPath(pobj, path.toArray())); }
public ClassLevelTableModel(CharacterFacade character, JTable table, JComboBox comboBox) { super(); this.character = character; this.levels = character.getCharacterLevelsFacade(); this.finalLevelMap = new HashMap<>(); resetLevelMap(); levels.addListListener(this); levels.addClassListener(this); levels.addHitPointListener(this); this.classComboBox = comboBox; this.classTable = table; }
@Override public Object getData(SkillFacade obj, int column) { if (selectionModel.isSelectionEmpty()) { switch (column) { case 0: case 1: case 4: return 0; case 2: return 0.0; case 3: case 5: return null; case 6: return obj.getSource(); default: return null; } } int index = selectionModel.getMinSelectionIndex(); CharacterLevelFacade level = levels.getElementAt(index); SkillBreakdown skillBreakdown = levels.getSkillBreakdown(level, obj); switch (column) { case 0: return skillBreakdown.total; case 1: return skillBreakdown.modifier; case 2: return skillBreakdown.ranks; case 3: return levels.getSkillCost(level, obj) == SkillCost.CLASS ? LanguageBundle.getString("in_yes") : //$NON-NLS-1$ LanguageBundle.getString("in_no"); // $NON-NLS-1$ case 4: return levels.getSkillCost(level, obj).getCost(); case 5: return character.getInfoFactory().getDescription(obj); case 6: return obj.getSource(); default: return null; } }
@Override public Object getValueAt(int rowIndex, int columnIndex) { if (rowIndex == levels.getSize()) { return null; } switch (columnIndex) { case 0: return rowIndex + 1; case 1: return levels.getHPGained(levels.getElementAt(rowIndex)); case 2: ClassFacade c = levels.getClassTaken(levels.getElementAt(rowIndex)); String classKey = c.getKeyName(); if (finalLevelMap.get(classKey) == rowIndex) { return c.toString() + " (" + character.getClassLevel(c) + ")"; } return c.toString(); default: return null; } }
private void levelChanged(CharacterLevelEvent e) { int firstRow = e.getBaseLevelIndex(); int lastRow = e.affectsHigherLevels() ? levels.getSize() - 1 : firstRow; fireTableRowsUpdated(firstRow, lastRow); }
@Override public void propertyChange(PropertyChangeEvent evt) { fireTableRowsUpdated(levels.getSize(), levels.getSize()); }
@Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { fireTableRowsUpdated(levels.getSize(), levels.getSize()); } }
@Override public boolean isCellEditable(int rowIndex, int columnIndex) { return rowIndex >= levels.getSize() - 1 && columnIndex == 2; }
@Override public int getRowCount() { return levels.getSize() + 1; }
public void install(FilteredTreeViewTable<CharacterFacade, SkillFacade> ftvt) { this.table = ftvt; ftvt.setTreeViewModel(this); levels.addSkillBonusListener(this); selectionModel.addListSelectionListener(this); }
public void uninstall() { table = null; levels.removeSkillBonusListener(this); selectionModel.removeListSelectionListener(this); }