blob: d19003c4b3bbb86de7d23661d53fdd335c7732c2 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.cordova.notification;
import org.apache.cordova.ui.SpacerField;
import org.apache.cordova.util.StringUtils;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.component.SeparatorField;
import net.rim.device.api.ui.container.PopupScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;
/**
* Creates a dialog box in which the title, message, and button labels are all
* customizable.
*/
public final class ConfirmDialog extends PopupScreen implements FieldChangeListener {
private ButtonField[] buttons; // the button fields
private int selectedValue = -1; // the selected button
/**
* Construct a confirmation dialog, with customizable title and button text.
*
* @param {String} message Message to print in the body of the alert
* @param {String} title Title of the alert dialog (default: 'Confirm')
* @param {String} buttonLabels Labels of the buttons (default: 'OK,Cancel')
*/
public ConfirmDialog(String message, String title, String buttonLabels) {
super(new VerticalFieldManager());
// title
add(new LabelField(title));
// separator
add(new SeparatorField(SeparatorField.LINE_HORIZONTAL));
// message
add(new SpacerField(0, 20));
add(new LabelField(message, FIELD_HCENTER | FIELD_VCENTER));
add(new SpacerField(0, 20));
// parse the button labels
String[] labels = StringUtils.split(buttonLabels, ",");
buttons = new ButtonField[labels.length];
// add buttons
for (int i = 0; i < labels.length; i++) {
buttons[i] = new ButtonField(labels[i], ButtonField.CONSUME_CLICK | FIELD_HCENTER);
buttons[i].setChangeListener(this);
add(new SpacerField(0, 5));
add(buttons[i]);
}
}
/**
* Returns the index of the button pressed.
*
* @return The index of the button pressed (0,1,2...).
*/
public int getSelectedValue() {
return this.selectedValue;
}
/**
* Invoked when a button is pressed.
*/
public void fieldChanged(Field field, int context) {
// figure out which button was pressed
for (int i = 0; i < buttons.length; i++) {
if (buttons[i] == field) {
this.selectedValue = i;
break;
}
}
// close the dialog
close();
}
}