|
|
|
@ -310,9 +310,9 @@ public class SmartInsertDBManipulationPane extends DBManipulationPane {
|
|
|
|
|
// 单元格组要记录下之前的选中情况
|
|
|
|
|
private CellSelection oriCellSelection = null; |
|
|
|
|
|
|
|
|
|
private List<String> newAdd = new ArrayList<String>(); |
|
|
|
|
private List<ColumnRow> newAdd = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
private List<String> oldAdd = new ArrayList<String>(); |
|
|
|
|
private List<ColumnRow> oldAdd = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
public SmartJTablePane4DB(KeyColumnTableModel model, ElementCasePane actionReportPane) { |
|
|
|
|
this(model, actionReportPane, false); |
|
|
|
@ -433,7 +433,8 @@ public class SmartInsertDBManipulationPane extends DBManipulationPane {
|
|
|
|
|
if (!allColumnRow.contains(columnRow.toString())) { |
|
|
|
|
add.addColumnRow(columnRow); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 重新更换区域框选单元格后 清理历史框选
|
|
|
|
|
oldAdd.clear(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (add.getSize() > 0) { |
|
|
|
@ -459,10 +460,11 @@ public class SmartInsertDBManipulationPane extends DBManipulationPane {
|
|
|
|
|
TemplateCellElement cellElement = ePane.getEditingElementCase().getTemplateCellElement(c + i, r + j); |
|
|
|
|
if (cellElement != null && ((i + c) != 0 || (r + j) != 0)) { |
|
|
|
|
String value = cellElement.toString(); |
|
|
|
|
if (!newAdd.contains(value) && !allColumnRow.contains(value)) { |
|
|
|
|
add.addColumnRow(ColumnRow.valueOf(value)); |
|
|
|
|
ColumnRow columnRow = ColumnRow.valueOf(value); |
|
|
|
|
if (!newAdd.contains(columnRow) && !allColumnRow.contains(value)) { |
|
|
|
|
add.addColumnRow(columnRow); |
|
|
|
|
} |
|
|
|
|
newAdd.add(value); |
|
|
|
|
newAdd.add(columnRow); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (cellElement == null) { |
|
|
|
@ -470,16 +472,14 @@ public class SmartInsertDBManipulationPane extends DBManipulationPane {
|
|
|
|
|
if (!allColumnRow.contains(columnRow.toString())) { |
|
|
|
|
add.addColumnRow(columnRow); |
|
|
|
|
} |
|
|
|
|
newAdd.add(columnRow.toString()); |
|
|
|
|
} |
|
|
|
|
newAdd.add(columnRow); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
int oldSize = oldAdd.size(); |
|
|
|
|
int newSize = newAdd.size(); |
|
|
|
|
if (oldSize > newSize && oldAdd.containsAll(newAdd)) { |
|
|
|
|
int diff = oldSize - newSize; |
|
|
|
|
newValue.splice(newValue.getSize() - diff, diff); |
|
|
|
|
} |
|
|
|
|
// 计算出前后两次选中的差值
|
|
|
|
|
oldAdd.removeAll(newAdd); |
|
|
|
|
// 移除差值部分
|
|
|
|
|
newValue.removeAll(oldAdd); |
|
|
|
|
oldAdd.clear(); |
|
|
|
|
oldAdd.addAll(newAdd); |
|
|
|
|
} |
|
|
|
|