private TimelimitTaskTableModel newTimelimitTaskTableModel() { final TimelimitTaskTableModel result = new TimelimitTaskTableModel(); // add columns: final List<String> lstFieldNames = new LinkedList<String>(CollectableTimelimitTask.clcte.getFieldNames()); // sort using the order stored in the preferences: List<String> lstFieldNameOrderTemp; try { lstFieldNameOrderTemp = PreferencesUtils.getStringList(this.prefs, PREFS_NODE_SELECTEDFIELDS); } catch (PreferencesException ex) { LOG.error( "Failed to retrieve list of selected fields from the preferences. They will be empty."); lstFieldNameOrderTemp = new ArrayList<String>(); } final List<String> lstFieldNameOrder = lstFieldNameOrderTemp; Collections.sort( lstFieldNames, new Comparator<String>() { private int getOrder(Object o) { int result = lstFieldNameOrder.indexOf(o); if (result == -1) { // new fields are shown at the end: result = lstFieldNameOrder.size(); } return result; } @Override public int compare(String o1, String o2) { int iDiff = getOrder(o1) - getOrder(o2); return (iDiff == 0) ? 0 : (iDiff / Math.abs(iDiff)); } }); int iColumn = 0; final List<String> lstNamesOfFieldsToDisplay = CollectableTimelimitTask.clcte.getNamesOfFieldsToDisplay(); for (Iterator<String> iter = lstFieldNames.iterator(); iter.hasNext(); ) { final String sFieldName = iter.next(); final CollectableEntityField clctef = CollectableTimelimitTask.clcte.getEntityField(sFieldName); if (lstNamesOfFieldsToDisplay.contains(sFieldName)) { result.addColumn(iColumn++, clctef); } } if (result.getColumnCount() > 0) { result.setSortKeys(Collections.singletonList(new SortKey(0, SortOrder.ASCENDING)), false); } return result; }
private void setupTableModelSorting() { final TimelimitTaskTableModel tblmdl = this.timelimittaskview.getTimelimitTaskTableModel(); if (tblmdl.getColumnCount() > 0) { List<SortKey> sortKeys = readColumnOrderFromPreferences(); if (sortKeys.isEmpty()) { sortKeys = Collections.singletonList( new SortKey( tblmdl.findColumnByFieldName(CollectableTask.FIELDNAME_SCHEDULED), SortOrder.ASCENDING)); } try { tblmdl.setSortKeys(sortKeys, false); } catch (Exception e) { } } }