new edit widget pacprefixed-name
This commit is contained in:
parent
9c4eca45ce
commit
7449f9f6f6
@ -9,6 +9,7 @@ import de.hsadmin.web.config.PropertyConfig;
|
||||
import de.hsadmin.web.config.PropertyDefaultValue;
|
||||
import de.hsadmin.web.config.PropertySelectValues;
|
||||
import de.hsadmin.web.config.PropertyTableColumn;
|
||||
import de.hsadmin.web.vaadin.PacPrefixedNamePropertyFieldFactory;
|
||||
import de.hsadmin.web.vaadin.PasswordPropertyFieldFactory;
|
||||
import de.hsadmin.web.vaadin.SelectPropertyFieldFactory;
|
||||
|
||||
@ -22,10 +23,12 @@ public class UnixUserModule extends GenericModule {
|
||||
protected void initModule() {
|
||||
MainApplication application = getApplication();
|
||||
moduleConfig = new ModuleConfig("user", application.getLocale());
|
||||
String login = application.getRunAs();
|
||||
final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
|
||||
PropertyConfig pacProp = new PropertyConfig(moduleConfig, "pac", String.class, PropertyTableColumn.HIDDEN, new SelectPropertyFieldFactory());
|
||||
pacProp.setSelectValues(new PropertySelectValues() {
|
||||
PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
|
||||
idProp.setReadOnly(true);
|
||||
PropertyConfig useridProp = new PropertyConfig(moduleConfig, "userid", Long.class, PropertyTableColumn.HIDDEN);
|
||||
useridProp.setReadOnly(true);
|
||||
PropertyConfig nameProp = new PropertyConfig(moduleConfig, "name", String.class, new PacPrefixedNamePropertyFieldFactory(this));
|
||||
nameProp.setSelectValues(new PropertySelectValues() {
|
||||
@Override
|
||||
public boolean newItemsAllowed() {
|
||||
return false;
|
||||
@ -34,6 +37,7 @@ public class UnixUserModule extends GenericModule {
|
||||
public boolean hasSelectList() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getSelectValues() {
|
||||
List<String> list = getPackets();
|
||||
@ -44,28 +48,7 @@ public class UnixUserModule extends GenericModule {
|
||||
return map;
|
||||
}
|
||||
});
|
||||
pacProp.setDefaultValue(new PropertyDefaultValue() {
|
||||
@Override
|
||||
public String getDefaultValue() {
|
||||
return pac;
|
||||
}
|
||||
});
|
||||
pacProp.setWriteOnce(true);
|
||||
PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
|
||||
idProp.setReadOnly(true);
|
||||
PropertyConfig useridProp = new PropertyConfig(moduleConfig, "userid", Long.class, PropertyTableColumn.HIDDEN);
|
||||
useridProp.setReadOnly(true);
|
||||
PropertyConfig nameProp = new PropertyConfig(moduleConfig, "name", String.class);
|
||||
nameProp.setWriteOnce(true);
|
||||
nameProp.setDefaultValue(new PropertyDefaultValue() {
|
||||
@Override
|
||||
public String getDefaultValue() {
|
||||
if (pac.length() > 0) {
|
||||
return pac + "-";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
});
|
||||
PropertyConfig passwordProp = new PropertyConfig(moduleConfig, "password", String.class, PropertyTableColumn.NONE, new PasswordPropertyFieldFactory(this));
|
||||
PropertyConfig commentProp = new PropertyConfig(moduleConfig, "comment", String.class);
|
||||
commentProp.setExpandRatio(0.7f);
|
||||
@ -116,10 +99,8 @@ public class UnixUserModule extends GenericModule {
|
||||
return "0";
|
||||
}
|
||||
});
|
||||
pacProp.setShowInForm(false);
|
||||
idProp.setShowInForm(false);
|
||||
useridProp.setShowInForm(false);
|
||||
moduleConfig.addProperty(pacProp);
|
||||
moduleConfig.addProperty(idProp);
|
||||
moduleConfig.addProperty(useridProp);
|
||||
moduleConfig.addProperty(nameProp);
|
||||
|
@ -1,11 +1,14 @@
|
||||
package de.hsadmin.web.config;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Locale;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
public class LocaleConfig {
|
||||
public class LocaleConfig implements Serializable {
|
||||
|
||||
private ResourceBundle bundle;
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final ResourceBundle bundle;
|
||||
|
||||
public LocaleConfig(Locale locale, String moduleName) {
|
||||
bundle = ResourceBundle.getBundle("texts." + moduleName, locale);
|
||||
|
@ -89,8 +89,9 @@ public class GenericForm {
|
||||
f.setData(entityId);
|
||||
Layout layout = f.getLayout();
|
||||
for (PropertyConfig prop : config.getPropertyList()) {
|
||||
if (prop.getPropFieldFactory().getClass().equals(DefaultPropertyFieldFactory.class)
|
||||
&& prop.getPropTableColumn().equals(PropertyTableColumn.DISPLAY)) {
|
||||
if (( DefaultPropertyFieldFactory.class.equals(prop.getPropFieldFactory().getClass()) ||
|
||||
PacPrefixedNamePropertyFieldFactory.class.equals(prop.getPropFieldFactory().getClass()))
|
||||
&& prop.getPropTableColumn().equals(PropertyTableColumn.DISPLAY)) {
|
||||
PropertyFieldFactory propFieldFactory = prop.getPropFieldFactory();
|
||||
Object value = row.get(prop.getId());
|
||||
Component component = (Component) propFieldFactory.createFieldComponent(prop, value);
|
||||
|
@ -0,0 +1,100 @@
|
||||
package de.hsadmin.web.vaadin;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.vaadin.terminal.Sizeable;
|
||||
import com.vaadin.ui.HorizontalLayout;
|
||||
import com.vaadin.ui.Select;
|
||||
import com.vaadin.ui.TextField;
|
||||
|
||||
import de.hsadmin.web.HsarwebException;
|
||||
import de.hsadmin.web.Module;
|
||||
import de.hsadmin.web.config.ModuleConfig;
|
||||
import de.hsadmin.web.config.PropertyConfig;
|
||||
import de.hsadmin.web.config.PropertyFieldFactory;
|
||||
|
||||
|
||||
public class PacPrefixedNamePropertyFieldFactory implements PropertyFieldFactory {
|
||||
|
||||
final private Module module;
|
||||
|
||||
private boolean readOnly = false;
|
||||
private boolean writeOnce = false;
|
||||
|
||||
public PacPrefixedNamePropertyFieldFactory(Module module) {
|
||||
this.module = module;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object createFieldComponent(PropertyConfig prop, Object value) {
|
||||
ModuleConfig config = module.getModuleConfig();
|
||||
HorizontalLayout layout = new HorizontalLayout();
|
||||
layout.setCaption(prop.getLabel());
|
||||
layout.setData(prop.getId());
|
||||
Select sel = new Select(config.getLabel(prop.getId() + ".pacprefix"));
|
||||
sel.setData(prop.getId());
|
||||
sel.setNullSelectionAllowed(false);
|
||||
sel.setNewItemsAllowed(prop.newItemsAllowed());
|
||||
Map<String, String> selectValues = prop.getSelectValues();
|
||||
for (Object key : selectValues.keySet()) {
|
||||
sel.addItem(key);
|
||||
sel.setItemCaption(key, selectValues.get(key));
|
||||
}
|
||||
sel.setWidth(80.0f, Sizeable.UNITS_PIXELS);
|
||||
sel.setInvalidAllowed(prop.newItemsAllowed());
|
||||
layout.addComponent(sel);
|
||||
|
||||
TextField separator = new TextField(" ", config.getLabel(prop.getId() + ".separator"));
|
||||
separator.setWidth(18.0f, Sizeable.UNITS_PIXELS);
|
||||
separator.setReadOnly(true);
|
||||
layout.addComponent(separator);
|
||||
|
||||
TextField tf = new TextField(config.getLabel(prop.getId() + ".postfix"));
|
||||
tf.setData(prop.getId());
|
||||
tf.setWidth(384.0f, Sizeable.UNITS_PIXELS);
|
||||
layout.addComponent(tf);
|
||||
String valueOrDefault = (value != null && value instanceof String) ? ((String) value) : prop.getDefaultValue();
|
||||
if (valueOrDefault.length() >= 5) {
|
||||
sel.setValue(valueOrDefault.substring(0, 5));
|
||||
tf.setValue(valueOrDefault.length() > 6 ? valueOrDefault.substring(6) : "");
|
||||
sel.setReadOnly(readOnly || writeOnce);
|
||||
tf.setReadOnly(readOnly || writeOnce);
|
||||
} else {
|
||||
sel.setReadOnly(readOnly);
|
||||
tf.setReadOnly(readOnly);
|
||||
}
|
||||
return layout;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue(PropertyConfig prop, Object component) throws HsarwebException {
|
||||
ModuleConfig config = module.getModuleConfig();
|
||||
HorizontalLayout layout = (HorizontalLayout) component;
|
||||
Select sel = (Select) layout.getComponent(0);
|
||||
TextField tf = (TextField) layout.getComponent(2);
|
||||
String pacPart = (String) sel.getValue();
|
||||
String userPart = (String) tf.getValue();
|
||||
return pacPart + config.getLabel(prop.getId() + ".separator") + userPart;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReadOnly(boolean readOnly) {
|
||||
this.readOnly = readOnly;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReadOnly() {
|
||||
return readOnly;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWriteOnce(boolean writeOnce) {
|
||||
this.writeOnce = writeOnce;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWriteOnce() {
|
||||
return writeOnce;
|
||||
}
|
||||
|
||||
}
|
@ -12,7 +12,8 @@ import de.hsadmin.web.config.PropertyFieldFactory;
|
||||
|
||||
public class PasswordPropertyFieldFactory implements PropertyFieldFactory {
|
||||
|
||||
private Module module;
|
||||
final private Module module;
|
||||
|
||||
private boolean readOnly = false;
|
||||
private boolean writeOnce = false;
|
||||
|
||||
|
@ -11,7 +11,6 @@ pac=Paket
|
||||
moduletitle=Passwort
|
||||
moduleicon=../runo/icons/16/lock.png
|
||||
change_password_icon=../runo/icons/16/lock.png
|
||||
hello=Hallo Welt!
|
||||
change_password=Passwort ändern
|
||||
update=Passwort ändern
|
||||
save=Passwort speichern
|
||||
|
@ -1,5 +1,8 @@
|
||||
id=identifier
|
||||
name=username
|
||||
name.pacprefix=packet
|
||||
name.separator=-
|
||||
name.postfix=userpart
|
||||
password=password
|
||||
password1=new password
|
||||
password2=repeat password
|
||||
|
@ -1,5 +1,8 @@
|
||||
id=Schlüssel
|
||||
name=Benutzername
|
||||
name=Benutzer
|
||||
name.pacprefix=Paket
|
||||
name.separator=-
|
||||
name.postfix=Benutzer-Postfix
|
||||
password=Passwort
|
||||
password1=neues Passwort
|
||||
password2=Passwort-Wiederholung
|
||||
|
Loading…
Reference in New Issue
Block a user