X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2Ftechtype%2Ftable%2FTechTypeTableDataProvider.java;fp=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2Ftechtype%2Ftable%2FTechTypeTableDataProvider.java;h=4d4244d7caf43d677f7132ba77617be34917a9e5;hb=b11aa28a7cbc839a9826a4b07d75057642126703;hp=af0e28d07bc84be4b9b01ab221105b2f3c5269a9;hpb=669fec715190918badd9d4f90575a6b703aa6b9f;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/techtype/table/TechTypeTableDataProvider.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/techtype/table/TechTypeTableDataProvider.java index af0e28d0..4d4244d7 100644 --- a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/techtype/table/TechTypeTableDataProvider.java +++ b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/techtype/table/TechTypeTableDataProvider.java @@ -33,6 +33,8 @@ public class TechTypeTableDataProvider implements IDataProvider { private ListenerList enableListeners = new ListenerList(); private int[] sortedRows; + + private boolean showEnabled = true; private static final Comparator VALUE_COMPARATOR = (a, b) -> { try { @@ -47,11 +49,12 @@ public class TechTypeTableDataProvider implements IDataProvider { public TechTypeTableDataProvider(String data, int[] enabledList) { setData(data); setEnabledFlags(enabledList); + showEnabled = enabledList != null; } public TechTypeTableDataProvider(String data) { - // load csv setData(data); + showEnabled = false; } public void setEnabledFlags(int[] enabledList) { @@ -62,14 +65,26 @@ public class TechTypeTableDataProvider implements IDataProvider { enabled[i] = true; } } + + showEnabled = enabledList != null; + } + + public boolean isCheckBoxColumn(int columnIndex) { + return isEnabledColumn(columnIndex); } public String getVariableName(int columnIndex) { - return variables != null && columnIndex > 0 && columnIndex <= variables.size() ? variables.get(columnIndex - 1) : null; + return variables != null && columnIndex > 0 && columnIndex <= variables.size() + ? variables.get(columnIndex - columnOffset()) + : null; } + private int columnOffset() { + return showEnabled ? 1 : 0; + } + public int getVariableIndex(String variableName) { - return variables != null ? variables.indexOf(variableName) + 1 : -1; + return variables != null ? variables.indexOf(variableName) + columnOffset() : -1; } public CSVRecord getRecord(int rowIndex) { @@ -87,24 +102,24 @@ public class TechTypeTableDataProvider implements IDataProvider { public String getHeaderValue(int columnIndex) { if (headers == null) { return ""; - } else if (columnIndex == 0) { + } else if (isEnabledColumn(columnIndex)) { return "Enabled"; } else { - return headers.get(columnIndex - 1); + return headers.get(columnIndex - columnOffset()); } } @Override public Object getDataValue(int columnIndex, int rowIndex) { - if (columnIndex == 0) { + if (isEnabledColumn(columnIndex)) { return isEnabled(rowIndex); } - return getRecord(rowIndex).get(columnIndex - 1); + return getRecord(rowIndex).get(columnIndex - columnOffset()); } @Override public void setDataValue(int columnIndex, int rowIndex, Object newValue) { - if (columnIndex == 0) { + if (isEnabledColumn(columnIndex)) { boolean value = Boolean.parseBoolean((String) newValue); enabled[recordIndex(rowIndex)] = value; fireEnableEvent(rowIndex, value); @@ -124,7 +139,7 @@ public class TechTypeTableDataProvider implements IDataProvider { if (records.isEmpty()) { return 0; } - return records.get(0).size() + 1; + return records.get(0).size() + columnOffset(); } @Override @@ -133,9 +148,13 @@ public class TechTypeTableDataProvider implements IDataProvider { } public boolean isEditable(int columnIndex, int rowIndex) { - return columnIndex == 0; + return isEnabledColumn(columnIndex); } + private boolean isEnabledColumn(int columnIndex) { + return showEnabled && columnIndex == 0; + } + public void setFilter(String text) { this.filter = text != null ? text.toLowerCase() : null; @@ -238,9 +257,10 @@ public class TechTypeTableDataProvider implements IDataProvider { public void sortBy(int columnIndex, SortDirectionEnum sortDirection) { if (columnIndex >= 0 && !sortDirection.equals(SortDirectionEnum.NONE)) { - Comparator comparator = columnIndex == 0 ? + int offset = columnOffset(); + Comparator comparator = isEnabledColumn(columnIndex) ? Comparator.comparing(k -> enabled[sortedRows[(int) k]]) : - Comparator.comparing(k -> records.get(sortedRows[(int) k]).get(columnIndex-1), VALUE_COMPARATOR); + Comparator.comparing(k -> records.get(sortedRows[(int) k]).get(columnIndex-offset), VALUE_COMPARATOR); if (sortDirection.equals(SortDirectionEnum.DESC)) comparator = comparator.reversed();