// Copyright 2010 Google Inc. All Rights Reseved.
//
// Licensed 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 com.google.testing.testify.risk.frontend.client.view.widgets;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.TextBox;
/**
* Widget for a DataRequest parameter with an arbitrary parameter key.
*
* @author chrsmith@google.com (Chris Smith)
*/
public class CustomParameterWidget extends Composite implements DataRequestParameterWidget {
private final TextBox keyTextBox = new TextBox();
private final TextBox valueTextBox = new TextBox();
private boolean isDeleted = false;
private final Image removeParameterImage = new Image("/images/x.png");
public CustomParameterWidget(String key, String value) {
HorizontalPanel panel = new HorizontalPanel();
panel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
panel.addStyleName("tty-DataRequestParameter");
panel.add(keyTextBox);
panel.add(valueTextBox);
panel.add(removeParameterImage);
removeParameterImage.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent arg0) {
isDeleted = true;
fireChangeEvent();
}
});
initWidget(panel);
}
private void fireChangeEvent() {
NativeEvent event = Document.get().createChangeEvent();
ChangeEvent.fireNativeEvent(event, this);
}
@Override
public String getParameterKey() {
if (isDeleted) {
return null;
}
return keyTextBox.getText();
}
@Override
public String getParameterValue() {
if (isDeleted) {
return null;
}
return valueTextBox.getText();
}
@Override
public HandlerRegistration addChangeHandler(ChangeHandler handler) {
return addHandler(handler, ChangeEvent.getType());
}
@Override
public boolean isDeleted() {
return isDeleted;
}
}