Author: tchemit Date: 2014-03-03 11:16:14 +0100 (Mon, 03 Mar 2014) New Revision: 2808 Url: http://nuiton.org/projects/jaxx/repository/revisions/2808 Log: fixes #3108: NPE in JTableState Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/session/JTableState.java Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/session/JTableState.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/session/JTableState.java 2014-03-01 17:58:08 UTC (rev 2807) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/session/JTableState.java 2014-03-03 10:16:14 UTC (rev 2808) @@ -90,6 +90,8 @@ public State getState(Object o) { JTable table = checkComponent(o); + JTableState result = new JTableState(); + int[] columnWidths = new int[table.getColumnCount()]; boolean resizableColumnExists = false; @@ -101,21 +103,22 @@ } } - List<? extends RowSorter.SortKey> sortKeys = table.getRowSorter().getSortKeys(); - Map<Integer, String> sortKeysMap = null; - if (sortKeys != null) { - sortKeysMap = new HashMap<Integer, String>(); - for (RowSorter.SortKey sortKey : sortKeys) { - sortKeysMap.put(sortKey.getColumn(), String.valueOf(sortKey.getSortOrder())); - } - } - - JTableState result = new JTableState(); if (resizableColumnExists) { result.setColumnWidths(columnWidths); } - result.setSortKeys(sortKeysMap); + if (table.getRowSorter() != null) { + List<? extends RowSorter.SortKey> sortKeys = table.getRowSorter().getSortKeys(); + Map<Integer, String> sortKeysMap = null; + if (sortKeys != null) { + sortKeysMap = new HashMap<Integer, String>(); + for (RowSorter.SortKey sortKey : sortKeys) { + sortKeysMap.put(sortKey.getColumn(), String.valueOf(sortKey.getSortOrder())); + } + } + result.setSortKeys(sortKeysMap); + } + return result; } @@ -140,16 +143,15 @@ } } } - List<RowSorter.SortKey> sortKeys = null; Map<Integer, String> sortKeysMap = jTableState.getSortKeys(); if (sortKeysMap != null) { - sortKeys = new ArrayList<RowSorter.SortKey>(); + List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>(); for (Integer index : sortKeysMap.keySet()) { SortOrder sortOrder = SortOrder.valueOf(sortKeysMap.get(index)); RowSorter.SortKey sortKey = new RowSorter.SortKey(index, sortOrder); sortKeys.add(sortKey); } + table.getRowSorter().setSortKeys(sortKeys); } - table.getRowSorter().setSortKeys(sortKeys); } }