use of de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotationPreference in project webanno by webanno.
the class PreferencesUtil method savePreference.
public static void savePreference(AnnotatorState aBModel, ProjectService aRepository) throws IOException {
AnnotationPreference preference = aBModel.getPreferences();
String username = SecurityContextHolder.getContext().getAuthentication().getName();
aRepository.saveUserSettings(username, aBModel.getProject(), aBModel.getMode(), preference);
}
use of de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotationPreference in project webanno by webanno.
the class AnnotationPreferencesDialogContent method commitModel.
private void commitModel(AnnotatorState state) {
AnnotationPreference prefs = state.getPreferences();
Preferences model = form.getModelObject();
List<Long> hiddenLayerIds = state.getPreferences().getHiddenAnnotationLayerIds();
state.setAnnotationLayers(model.annotationLayers.stream().filter(l -> !hiddenLayerIds.contains(l.getId())).collect(Collectors.toList()));
prefs.setScrollPage(model.scrollPage);
prefs.setRememberLayer(model.rememberLayer);
prefs.setWindowSize(model.windowSize);
prefs.setSidebarSize(model.sidebarSize);
prefs.setFontZoom(model.fontZoom);
prefs.setColorPerLayer(model.colorPerLayer);
prefs.setReadonlyLayerColoringBehaviour(model.readonlyLayerColoringBehaviour);
prefs.setEditor(model.editor.getKey());
// have just hidden.
if (!state.getAnnotationLayers().contains(state.getSelectedAnnotationLayer())) {
state.setSelectedAnnotationLayer(state.getAnnotationLayers().size() > 0 ? state.getAnnotationLayers().get(0) : null);
state.setDefaultAnnotationLayer(state.getSelectedAnnotationLayer());
}
}
use of de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotationPreference in project webanno by webanno.
the class PreferencesUtil method loadPreferences.
/**
* Set annotation preferences of users for a given project such as window size, annotation
* layers,... reading from the file system.
*
* @param aUsername
* The {@link User} for whom we need to read the preference (preferences are stored
* per user)
* @param aRepositoryService the repository service.
* @param aAnnotationService the annotation service.
* @param aBModel
* The {@link AnnotatorState} that will be populated with preferences from the
* file
* @param aMode the mode.
* @throws BeansException hum?
* @throws IOException hum?
*/
public static void loadPreferences(String aUsername, SettingsService aSettingsService, ProjectService aRepositoryService, AnnotationSchemaService aAnnotationService, AnnotatorState aBModel, Mode aMode) throws BeansException, IOException {
AnnotationPreference preference = new AnnotationPreference();
BeanWrapper wrapper = new BeanWrapperImpl(preference);
// get annotation preference from file system
try {
Properties props = aRepositoryService.loadUserSettings(aUsername, aBModel.getProject());
for (Entry<Object, Object> entry : props.entrySet()) {
String property = entry.getKey().toString();
int index = property.indexOf(".");
String propertyName = property.substring(index + 1);
String mode = property.substring(0, index);
if (wrapper.isWritableProperty(propertyName) && mode.equals(aMode.getName())) {
if (AnnotationPreference.class.getDeclaredField(propertyName).getGenericType() instanceof ParameterizedType) {
if (entry.getValue().toString().startsWith("[")) {
// its a list
List<String> value = Arrays.asList(StringUtils.replaceChars(entry.getValue().toString(), "[]", "").split(","));
if (!value.get(0).equals("")) {
wrapper.setPropertyValue(propertyName, value);
}
} else if (entry.getValue().toString().startsWith("{")) {
// its a map
String s = StringUtils.replaceChars(entry.getValue().toString(), "{}", "");
Map<String, String> value = Arrays.stream(s.split(",")).map(x -> x.split("=")).collect(Collectors.toMap(x -> x[0], x -> x[1]));
wrapper.setPropertyValue(propertyName, value);
}
} else {
wrapper.setPropertyValue(propertyName, entry.getValue());
}
}
}
// set layers according to preferences
List<AnnotationLayer> enabledLayers = aAnnotationService.listAnnotationLayer(aBModel.getProject()).stream().filter(// only allow enabled layers
l -> l.isEnabled()).collect(Collectors.toList());
List<Long> hiddenLayerIds = preference.getHiddenAnnotationLayerIds();
enabledLayers = enabledLayers.stream().filter(l -> !hiddenLayerIds.contains(l.getId())).collect(Collectors.toList());
aBModel.setAnnotationLayers(enabledLayers);
// Get color preferences for each layer, init with legacy if not found
Map<Long, ColoringStrategyType> colorPerLayer = preference.getColorPerLayer();
for (AnnotationLayer layer : aAnnotationService.listAnnotationLayer(aBModel.getProject())) {
if (!colorPerLayer.containsKey(layer.getId())) {
colorPerLayer.put(layer.getId(), ColoringStrategyType.LEGACY);
}
}
}// no preference found
catch (Exception e) {
// If no layer preferences are defined,
// then just assume all enabled layers are preferred
List<AnnotationLayer> enabledLayers = aAnnotationService.listAnnotationLayer(aBModel.getProject()).stream().filter(// only allow enabled layers
l -> l.isEnabled()).collect(Collectors.toList());
aBModel.setAnnotationLayers(enabledLayers);
preference.setWindowSize(aSettingsService.getNumberOfSentences());
// add default coloring strategy
Map<Long, ColoringStrategyType> colorPerLayer = new HashMap<>();
for (AnnotationLayer layer : aBModel.getAnnotationLayers()) {
colorPerLayer.put(layer.getId(), ColoringStrategy.getBestInitialStrategy(aAnnotationService, layer, preference));
}
preference.setColorPerLayer(colorPerLayer);
}
aBModel.setPreferences(preference);
}
use of de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotationPreference in project webanno by webanno.
the class AnnotationPreferencesDialogContent method createLayerContainer.
private ListView<AnnotationLayer> createLayerContainer() {
return new ListView<AnnotationLayer>("annotationLayers") {
private static final long serialVersionUID = -4040731191748923013L;
@Override
protected void populateItem(ListItem<AnnotationLayer> item) {
// add checkbox
// get initial state
AnnotationPreference pref = stateModel.getObject().getPreferences();
List<Long> hiddenLayerIds = pref.getHiddenAnnotationLayerIds();
boolean isPreferredToShow = !hiddenLayerIds.contains(item.getModelObject().getId());
CheckBox layer_cb = new CheckBox("annotationLayerActive", Model.of(isPreferredToShow));
layer_cb.add(new AjaxEventBehavior("change") {
private static final long serialVersionUID = 8378489004897115519L;
@Override
protected void onEvent(AjaxRequestTarget target) {
// check state & live update preferences
List<Long> hiddenLayerIds = stateModel.getObject().getPreferences().getHiddenAnnotationLayerIds();
// get and switch state of checkbox
boolean isPreferredToShow = layer_cb.getModelObject();
layer_cb.setModelObject(!isPreferredToShow);
// live update preferences
if (isPreferredToShow) {
// prefer to deactivate layer
hiddenLayerIds.add(item.getModelObject().getId());
} else {
// prefer to activate layer
hiddenLayerIds.remove(item.getModelObject().getId());
}
}
});
item.add(layer_cb);
// add coloring strategy combobox
ChoiceRenderer<ColoringStrategyType> choiceRenderer = new ChoiceRenderer<>("descriptiveName");
List<ColoringStrategyType> choices = new ArrayList<ColoringStrategyType>(EnumSet.allOf(ColoringStrategyType.class));
Model<ColoringStrategyType> initialSelected = Model.of(form.getModelObject().colorPerLayer.get(item.getModelObject().getId()));
DropDownChoice<ColoringStrategyType> layer_color = new DropDownChoice<ColoringStrategyType>("layercoloring", initialSelected, choices, choiceRenderer);
layer_color.add(new AjaxFormComponentUpdatingBehavior("change") {
private static final long serialVersionUID = 1060397773470276585L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
AnnotationLayer current_layer = item.getModelObject();
ColoringStrategyType selectedColor = layer_color.getModelObject();
form.getModelObject().colorPerLayer.put(current_layer.getId(), selectedColor);
}
});
item.add(layer_color);
// add label
Label lbl = new Label("annotationLayerDesc", item.getModelObject().getUiName());
item.add(lbl);
}
};
}
Aggregations