Skip to content

Commit 2a6ae25

Browse files
authored
Merge pull request #332 from bls337/main
improve channel table robustness and efficiency
2 parents 741f362 + cc8258e commit 2a6ae25

File tree

4 files changed

+29
-15
lines changed

4 files changed

+29
-15
lines changed

src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTable.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ public ChannelTableData getData() {
7878
return tableData_;
7979
}
8080

81+
public ChannelTableModel getTableModel() {
82+
return tableModel_;
83+
}
84+
8185
public JTable getTable() {
8286
return table_;
8387
}

src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTableModel.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,28 @@ public class ChannelTableModel extends AbstractTableModel {
2020
"Offset"
2121
};
2222

23-
private final ChannelTableData tableData_;
23+
private final ChannelTableData data_;
2424

2525
public ChannelTableModel(final ChannelTableData tableData) {
26-
tableData_ = Objects.requireNonNull(tableData);
26+
data_ = Objects.requireNonNull(tableData);
27+
}
28+
29+
public void addEmptyChannel() {
30+
final int rowIndex = data_.getNumChannels();
31+
data_.addEmptyChannel();
32+
fireTableRowsInserted(rowIndex, rowIndex);
33+
}
34+
35+
public void removeChannel(int rowIndex) {
36+
if (rowIndex != -1) {
37+
data_.removeChannel(rowIndex);
38+
fireTableRowsDeleted(rowIndex, rowIndex);
39+
}
2740
}
2841

2942
@Override
3043
public int getRowCount() {
31-
return tableData_.getNumChannels();
44+
return data_.getNumChannels();
3245
}
3346

3447
@Override
@@ -63,7 +76,7 @@ public boolean isCellEditable(int row, int col) {
6376

6477
@Override
6578
public Object getValueAt(int row, int col) {
66-
final ChannelSpec channelSpec = tableData_.getChannelByIndex(row);
79+
final ChannelSpec channelSpec = data_.getChannelByIndex(row);
6780
switch (col) {
6881
case COLUMN_USE:
6982
return channelSpec.isUsed();
@@ -78,7 +91,7 @@ public Object getValueAt(int row, int col) {
7891

7992
@Override
8093
public void setValueAt(Object value, int row, int col) {
81-
final ChannelSpec channelSpec = tableData_.getChannelByIndex(row);
94+
final ChannelSpec channelSpec = data_.getChannelByIndex(row);
8295
switch (col) {
8396
case COLUMN_USE:
8497
if (value instanceof Boolean) {

src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTablePanel.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,27 +83,22 @@ private void createEventHandlers() {
8383

8484
// add channel
8585
btnAddChannel_.registerListener(e -> {
86-
table_.getData().addEmptyChannel();
87-
// revalidate(); // updates JScrollBar when adding elements
88-
table_.refreshData();
89-
// table_.repaint();
90-
// repaint();
91-
//System.out.println("add channel");
92-
//table_.getData().printChannelData();
86+
table_.getTableModel().addEmptyChannel();
9387
final ChannelSpec[] channels = table_.getData().getChannels();
9488
model_.acquisitions().settingsBuilder().channels(channels);
9589
model_.acquisitions().settingsBuilder().numChannels(channels.length);
90+
//System.out.println("add channel");
91+
//table_.getData().printChannelData();
9692
});
9793

9894
// remove channel
9995
btnRemoveChannel_.registerListener(e -> {
10096
final int row = table_.getTable().getSelectedRow();
10197
if (row != -1) { // is any row selected?
102-
table_.getData().removeChannel(row);
98+
table_.getTableModel().removeChannel(row);
10399
final ChannelSpec[] channels = table_.getData().getChannels();
104100
model_.acquisitions().settingsBuilder().channels(channels);
105101
model_.acquisitions().settingsBuilder().numChannels(channels.length);
106-
table_.refreshData();
107102
//System.out.println("remove row index: " + row);
108103
}
109104
});

src/main/java/org/micromanager/lightsheetmanager/model/channels/ChannelTableData.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,9 @@ public void addChannel(final ChannelSpec channel) {
5858
}
5959

6060
public void removeChannel(final int index) {
61-
channels_.remove(index);
61+
if (index >= 0 && index < channels_.size()) {
62+
channels_.remove(index);
63+
}
6264
}
6365

6466
public void removeAllChannels() {

0 commit comments

Comments
 (0)