/**
* Copyright 2010 JBoss Inc
*
* 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 org.drools.guvnor.client.ruleeditor;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.MissingResourceException;
import org.drools.factconstraints.client.ConstraintConfiguration;
import org.drools.guvnor.client.messages.Constants;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
public class ConstraintEditor extends Composite {
private Constants constants = GWT.create(Constants.class);
private ConstraintConfiguration config;
public ConstraintEditor(ConstraintConfiguration config) {
this.config = config;
Grid confGrid = new Grid(config.getArgumentKeys().size(), 2);
ArrayList<String> list = new ArrayList<String>();
Map<String, String> argI18N = new HashMap<String, String>();
for (String arg : config.getArgumentKeys()) {
String i18n = getI18NText(arg);
list.add(i18n);
argI18N.put(i18n, arg);
}
Collections.sort(list);
int row = 0;
for (String arg : list) {
TextBox argTB = new TextBox();
argTB.setText(getConstraintConfiguration().getArgumentValue(arg).toString());
argTB.setName(argI18N.get(arg));
argTB.setTitle(arg);
argTB.addChangeListener(new ChangeListener() {
public void onChange(Widget sender) {
TextBox argTB = (TextBox) sender;
getConstraintConfiguration().setArgumentValue(argTB.getName(), argTB.getText());
}
});
confGrid.setWidget(row, 0, new Label(arg + ":"));
confGrid.setWidget(row, 1, argTB);
row++;
}
initWidget(confGrid);
}
private String getI18NText(String s) {
try {
return constants.getString("constraint." + getConstraintName() + "." + s);
} catch (MissingResourceException e) {
return s;
}
}
public ConstraintConfiguration getConstraintConfiguration() {
return config;
}
public void setConstraintConfiguration(ConstraintConfiguration config) {
this.config = config;
}
public String getConstraintName() {
return getConstraintConfiguration().getConstraintName();
}
}