以下は、ユーザーがそれぞれのボタンをクリックしたときに単純なDialogBoxをポップアップする2つの内部クラスです。次に、インターフェイスのリストボックスに入力されるリストの値を更新します。
ほとんどの場合、ダイアログボックスはリストボックスの現在のインデックス/選択された値と同じ数のコピーをポップアップするように見えますが、常にそうとは限りません。時々、1つのダイアログだけがポップアップします。何か案は?必要に応じて、より多くのコードを提供できます。
public class EditCustomerHandler implements ClickHandler {
public EditCustomerHandler() {}
public void onClick(ClickEvent event) {
final DialogBox editCustDialog = new DialogBox();
editCustDialog.setHTML(customer.getName());
FlexTable content = new FlexTable();
FlexTable buttonPanel = new FlexTable();
final TextBox customerNameTextBox = new TextBox();
content.setText(0, 0, "Name: ");
content.setWidget(0, 1, customerNameTextBox);
Button saveButton = new Button("Save");
saveButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
if (!customer.getName().equals(customerNameTextBox.getText())) {
customer.setName(customerNameTextBox.getText());
editCustDialog.hide();
stationService.saveCustomer(customer, new DefaultAsyncCallback<String>() {
public void onSuccess(String errorCode) {
if (errorCode != null) {
MessageBox.showMessage("Error", errorCode);
return;
}
refreshCusts();
}
});
}
}
});
Button cancelButton = new Button("Cancel");
cancelButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
editCustDialog.hide();
}
});
buttonPanel.setWidget(0, 0, saveButton);
buttonPanel.setWidget(0,1, cancelButton);
content.getFlexCellFormatter().setColSpan(1, 0, 2);
content.getCellFormatter().setHorizontalAlignment(1,0, HasHorizontalAlignment.ALIGN_CENTER);
content.setWidget(1,0, buttonPanel);
editCustDialog.add(content);
editCustDialog.center();
editCustDialog.setGlassEnabled(true);
editCustDialog.setModal(false);
editCustDialog.show();
}
}
public class PlusCustomerHandler implements ClickHandler {
public PlusCustomerHandler() {}
public void onClick(ClickEvent event) {
final DialogBox plusCustDialog = new DialogBox();
plusCustDialog.center();
plusCustDialog.setModal(false);
plusCustDialog.setGlassEnabled(true);
plusCustDialog.setHTML("New Customer");
final TextBox customerNameTextBox = new TextBox();
final FlexTable content = new FlexTable();
final FlexTable buttonPanel = new FlexTable();
final Button saveButton = new Button("Save");
saveButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
if (!customerNameTextBox.getText().equals("")) {
SMSCustomer newCustomer = new SMSCustomer();
newCustomer.setName(customerNameTextBox.getText());
stationService.saveCustomer(newCustomer, new DefaultAsyncCallback<String>() {
public void onSuccess(String errorMsg) {
if (errorMsg == null) {
refreshCusts();
plusCustDialog.hide();
}
}
});
}
else {
MessageBox mb = new MessageBox();
mb.showMessage("Yo dawg", "Customers must have names!");
}
}});
Button cancelButton = new Button("Cancel");
cancelButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
plusCustDialog.hide();
}
});
content.setText(0, 0, "Name: ");
content.setWidget(0, 1, customerNameTextBox);
buttonPanel.setWidget(0, 0, saveButton);
buttonPanel.setWidget(0,1, cancelButton);
content.getFlexCellFormatter().setColSpan(1, 0, 2);
content.getCellFormatter().setHorizontalAlignment(1,0, HasHorizontalAlignment.ALIGN_CENTER);
content.setWidget(1,0, buttonPanel);
plusCustDialog.add(content);
plusCustDialog.show();
}
}