package com.pentila.evalcomp.client.evaluation;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.pentila.evalcomp.client.i18n.Messages;
import com.pentila.evalcomp.client.services.widget.NameValueRecord;
+import com.pentila.evalcomp.client.utilities.Tools;
import com.pentila.evalcomp.client.widget.PropertyGrid;
import com.pentila.evalcomp.domain.definition.Property;
import com.smartgwt.client.types.DateDisplayFormat;
import com.smartgwt.client.types.TimeDisplayFormat;
+import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.Img;
import com.smartgwt.client.widgets.form.fields.CheckboxItem;
import com.smartgwt.client.widgets.form.fields.DateTimeItem;
import com.smartgwt.client.widgets.form.fields.FormItem;
import com.smartgwt.client.widgets.form.fields.IntegerItem;
+import com.smartgwt.client.widgets.form.fields.PasswordItem;
import com.smartgwt.client.widgets.form.fields.TextAreaItem;
+import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.form.fields.TimeItem;
+import com.smartgwt.client.widgets.form.fields.events.BlurEvent;
+import com.smartgwt.client.widgets.form.fields.events.BlurHandler;
+import com.smartgwt.client.widgets.form.fields.events.FocusEvent;
+import com.smartgwt.client.widgets.form.fields.events.FocusHandler;
import com.smartgwt.client.widgets.grid.CellFormatter;
import com.smartgwt.client.widgets.grid.ListGridRecord;
+import com.smartgwt.client.widgets.grid.events.ChangedEvent;
+import com.smartgwt.client.widgets.grid.events.ChangedHandler;
+import com.smartgwt.client.widgets.grid.events.EditorEnterEvent;
+import com.smartgwt.client.widgets.grid.events.EditorEnterHandler;
+import com.smartgwt.client.widgets.grid.events.EditorExitEvent;
+import com.smartgwt.client.widgets.grid.events.EditorExitHandler;
import com.smartgwt.client.widgets.layout.VLayout;
public class PropertyLayout extends VLayout {
private PropertyGrid propertyGrid;
- private Set<Property> properties;
+ private List<Property> properties;
private boolean readOnly;
+
+ private boolean hiddenFieldVisible = false;
+
+ private boolean displayPassword = false;
public PropertyLayout() {
super();
public PropertyLayout(Set<Property> props, boolean readOnly) {
super();
- this.properties = props;
+ this.properties = new ArrayList<Property>(props);
this.readOnly = readOnly;
}
-
+
public void initializeInterface(){
+
+ Collections.sort(this.properties, new Comparator<Property>(){
+
+ @Override
+ public int compare(Property p1, Property p2) {
+ return p1.getName().compareToIgnoreCase(p2.getName());
+ }
+
+ });
+
propertyGrid = new PropertyGrid();
propertyGrid.getNameField().setName("Name");
propertyGrid.getNameField().setTitle(Messages.getString("PropertyName"));
TextAreaItem textEditor = new TextAreaItem();
editorsMap.put("java.lang.String",textEditor );
-
+
+ final TextItem textLineEditor = new TextItem();
+ editorsMap.put("PASSWORD", textLineEditor);
+
IntegerItem integerItem = new IntegerItem();
integerItem.setMask("###");
- //editorsMap.put("java.lang.Long",integerItem );
editorsMap.put("java.lang.Long", integerItem);
CheckboxItem cbi = new CheckboxItem();
DateTimeItem dateItem = new DateTimeItem();
editorsMap.put("java.util.Date", dateItem);
-
-
- //
TimeItem ti = new TimeItem();
ti.setTimeFormatter(TimeDisplayFormat.TO24HOURTIME);
editorsMap.put("DURATION", ti);
propertyGrid.setEditorsMap("typeName", editorsMap);
-
+
+
+
+ propertyGrid.addEditorExitHandler(new EditorExitHandler(){
+
+ @Override
+ public void onEditorExit(EditorExitEvent event) {
+
+ NameValueRecord r = (NameValueRecord) event.getRecord();
+
+ if (r.getTypeName().equals("PASSWORD")){
+
+ String newValue = (String)event.getNewValue();
+
+ if (newValue != null){
+
+ String pwdCode = null;
+
+ if (newValue.equals("") || newValue.equals("-1")){
+ propertyGrid.setEditValue(event.getRowNum(), event.getColNum(), "");
+ newValue = "";
+ pwdCode = "";
+ }
+ else{
+ pwdCode = com.pentila.evalcomp.client.utilities.Tools.base64encode(newValue);
+ }
+
+ //r.setAttribute("Value", newValue);
+ r.setAttribute("ReelValue", pwdCode);
+ }
+ else if(r.getValueAsString().equals("") || r.getValueAsString().equals("-1")){
+ r.setAttribute("ReelValue", "");
+ }
+ else{
+ // ne devrait jamais se produire
+ String v = r.getAttribute("Value");
+ String vCode = com.pentila.evalcomp.client.utilities.Tools.base64encode(v);
+ r.setAttribute("ReelValue", vCode);
+ }
+
+ }
+ }
+
+ });
+
+ propertyGrid.addEditorEnterHandler(new EditorEnterHandler(){
+ public void onEditorEnter(EditorEnterEvent event) {
+
+ NameValueRecord r = (NameValueRecord) event.getRecord();
+
+ if (r.getTypeName().equals("PASSWORD")){
+ propertyGrid.setEditValue(event.getRowNum(), event.getColNum(), "");
+ }
+
+ }
+ });
propertyGrid.setData(getRecordData());
//DateTimeFormat.getFormat("dd/MM/yyyy");
vp.add(i);
return vp.toString();
}
+
+ if ("PASSWORD".equals(r.getTypeName())){
+
+ String attributeValue = r.getAttribute("Value");
+ String attributeReelValue = r.getAttribute("ReelValue");
+
+ if(!displayPassword){
+
+ //r.setName(Messages.getString("acces"));
+
+ if ( "-1".equals(attributeValue) || "".equals(attributeValue) ){
+ return Messages.getString("libre");
+ }
+ else{
+ return Messages.getString("protege_par_mot_de_passe");
+ }
+ }
+
+ if ( "-1".equals(attributeValue) || "".equals(attributeValue) ){
+ return Messages.getString("no_password");
+ }
+ if (hiddenFieldVisible){
+
+ return attributeReelValue == null
+ ? com.pentila.evalcomp.client.utilities.Tools.base64decode(attributeValue)
+ : com.pentila.evalcomp.client.utilities.Tools.base64decode(attributeReelValue);
+ }
+ else{
+ return "******";
+ }
+ }
if ("DURATION".equals(r.getTypeName())){
};
propertyGrid.getValuesField().setCellFormatter(formatter);
+ propertyGrid.getNameField().setCellFormatter(new CellFormatter(){
+
+ @Override
+ public String format(Object value, ListGridRecord record,
+ int rowNum, int colNum) {
+ NameValueRecord r = (NameValueRecord) record;
+ String ret = (String) value;
+
+ if ("PASSWORD".equals(r.getTypeName())){
+ if(!displayPassword){
+ return Messages.getString("acces");
+ }
+ }
+
+ return ret;
+ }
+
+ });
+
+
addMember(propertyGrid);
+
+
}
int i = 0;
for (Property p : properties){
-
- String subType = getSubTypeProperty(p);
+
+ String subType = Tools.getSubTypeProperty(p);
String type = p.getDataTypeClassName();
}
- private String getSubTypeProperty(Property p){
-
- String subType = null;
-
- String description = p.getDescription();
-
- RegExp re = RegExp.compile("/\\*(.*)\\*/");
-
-
- MatchResult mr = re.exec(description);
-
-
-
-
- if (mr != null) {
-
-
-
- String ext = mr.getGroup(1);
-
- if (ext.startsWith("type=")){
- subType = ext.split("type=")[1];
- }
-
+
+ public ListGridRecord[] getRecords(){
+ return propertyGrid.getRecords();
+ }
+
+ public void setHiddenFieldVisible(boolean b)
+ {
+ hiddenFieldVisible = b;
+ }
+
+ public boolean isHiddenFieldVisible() {
+ return hiddenFieldVisible;
+ }
- }
- return subType;
+ public boolean isDisplayPassword() {
+ return displayPassword;
}
- public ListGridRecord[] getRecords(){
- return propertyGrid.getRecords();
+
+ public void setDisplayPassword(boolean displayPassword) {
+ this.displayPassword = displayPassword;
}
}