My menu table: update arrows on add/delete

The arrows in the My menu table that allow to move menu items up and
down need to be updated when entries are appended or deleted.

Change-Id: I6ed45ec09b24396aacdfab46a738632f0f5b0203
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
Edwin Kempin
2014-03-28 19:20:05 +01:00
parent 931562c2ab
commit 7b24099320

View File

@@ -147,9 +147,10 @@ public class StringListPanel extends FlowPanel {
} }
int row = 2; int row = 2;
for (List<String> v : values) { for (List<String> v : values) {
populate(row, v, row == values.size() + 1); populate(row, v);
row++; row++;
} }
updateNavigationLinks();
} }
List<List<String>> getValues() { List<List<String>> getValues() {
@@ -169,7 +170,7 @@ public class StringListPanel extends FlowPanel {
return v; return v;
} }
private void populate(final int row, List<String> values, boolean last) { private void populate(final int row, List<String> values) {
FlexCellFormatter fmt = table.getFlexCellFormatter(); FlexCellFormatter fmt = table.getFlexCellFormatter();
fmt.addStyleName(row, 0, Gerrit.RESOURCES.css().iconCell()); fmt.addStyleName(row, 0, Gerrit.RESOURCES.css().iconCell());
fmt.addStyleName(row, 0, Gerrit.RESOURCES.css().leftMostCell()); fmt.addStyleName(row, 0, Gerrit.RESOURCES.css().leftMostCell());
@@ -189,29 +190,25 @@ public class StringListPanel extends FlowPanel {
fmt.addStyleName(row, values.size() + 1, Gerrit.RESOURCES.css().iconCell()); fmt.addStyleName(row, values.size() + 1, Gerrit.RESOURCES.css().iconCell());
fmt.addStyleName(row, values.size() + 2, Gerrit.RESOURCES.css().dataCell()); fmt.addStyleName(row, values.size() + 2, Gerrit.RESOURCES.css().dataCell());
if (!last) { Image down = new Image(Gerrit.RESOURCES.arrowDown());
Image down = new Image(Gerrit.RESOURCES.arrowDown()); down.setTitle(Gerrit.C.stringListPanelDown());
down.setTitle(Gerrit.C.stringListPanelDown()); down.addClickHandler(new ClickHandler() {
down.addClickHandler(new ClickHandler() { @Override
@Override public void onClick(ClickEvent event) {
public void onClick(ClickEvent event) { moveDown(row);
moveDown(row); }
} });
}); table.setWidget(row, values.size() + 1, down);
table.setWidget(row, values.size() + 1, down);
}
if (row > 2) { Image up = new Image(Gerrit.RESOURCES.arrowUp());
Image up = new Image(Gerrit.RESOURCES.arrowUp()); up.setTitle(Gerrit.C.stringListPanelUp());
up.setTitle(Gerrit.C.stringListPanelUp()); up.addClickHandler(new ClickHandler() {
up.addClickHandler(new ClickHandler() { @Override
@Override public void onClick(ClickEvent event) {
public void onClick(ClickEvent event) { moveUp(row);
moveUp(row); }
} });
}); table.setWidget(row, values.size() + 2, up);
table.setWidget(row, values.size() + 2, up);
}
} }
} }
@@ -226,21 +223,36 @@ public class StringListPanel extends FlowPanel {
} }
void moveDown(int row) { void moveDown(int row) {
swap(row, row + 1); if (row < table.getRowCount() - 1) {
swap(row, row + 1);
}
} }
void moveUp(int row) { void moveUp(int row) {
swap(row - 1, row); if (row > 2) {
swap(row - 1, row);
}
} }
void swap(int row1, int row2) { void swap(int row1, int row2) {
List<String> value = getRowItem(row1); List<String> value = getRowItem(row1);
List<String> nextValue = getRowItem(row2); List<String> nextValue = getRowItem(row2);
populate(row1, nextValue, false); populate(row1, nextValue);
populate(row2, value, row2 == table.getRowCount() - 1); populate(row2, value);
updateNavigationLinks();
widget.setEnabled(true); widget.setEnabled(true);
} }
private void updateNavigationLinks() {
if (!autoSort) {
for (int row = 2; row < table.getRowCount(); row++) {
table.getWidget(row, inputs.size() + 1).setVisible(
row < table.getRowCount() - 1);
table.getWidget(row, inputs.size() + 2).setVisible(row > 2);
}
}
}
void add() { void add() {
List<String> values = new ArrayList<>(); List<String> values = new ArrayList<>();
for (NpTextBox input : inputs) { for (NpTextBox input : inputs) {
@@ -250,7 +262,7 @@ public class StringListPanel extends FlowPanel {
values.add(v); values.add(v);
} }
} }
t.insert(values); insert(values);
} }
void insert(List<String> v) { void insert(List<String> v) {
@@ -267,7 +279,8 @@ public class StringListPanel extends FlowPanel {
} }
} }
table.insertRow(insertPos); table.insertRow(insertPos);
populate(insertPos, v, insertPos == table.getRowCount() - 1); populate(insertPos, v);
updateNavigationLinks();
} }
void enableDelete() { void enableDelete() {
@@ -287,6 +300,7 @@ public class StringListPanel extends FlowPanel {
table.removeRow(row--); table.removeRow(row--);
} }
} }
updateNavigationLinks();
} }
@Override @Override