use of de.catma.user.User in project catma by forTEXT.
the class AbstractMemberDialog method initComponents.
private void initComponents(String description) {
this.descriptionLabel = new Label(description);
descriptionLabel.setHeight("50px");
cbUsers = new ComboBox<>("Member");
cbUsers.setWidth("100%");
cbUsers.setPageLength(20);
cbUsers.setItemCaptionGenerator(User::preciseName);
cbRole = new ComboBox<RBACRole>("Role", Lists.newArrayList(RBACRole.GUEST, RBACRole.REPORTER, RBACRole.ASSISTANT, RBACRole.MAINTAINER));
cbRole.setWidth("100%");
cbRole.setItemCaptionGenerator(RBACRole::getRoleName);
cbRole.setEmptySelectionAllowed(false);
}
use of de.catma.user.User in project catma by forTEXT.
the class TaggerView method addComment.
@Override
public void addComment(List<Range> absoluteRanges, int x, int y) {
User user = project.getUser();
IDGenerator idGenerator = new IDGenerator();
CommentDialog commentDialog = new CommentDialog(commentBody -> {
try {
project.addComment(new Comment(idGenerator.generate(), user.getName(), user.getUserId(), commentBody, absoluteRanges, this.sourceDocument.getUuid()));
} catch (IOException e) {
errorHandler.showAndLogError("Error adding Comment!", e);
}
});
commentDialog.show(x, y);
}
use of de.catma.user.User in project catma by forTEXT.
the class CommentMessageListener method uiOnMessage.
@Override
public void uiOnMessage(Message<CommentMessage> message) {
boolean autoShowcomments = (boolean) cbAutoShowComments.getData();
if (!autoShowcomments) {
return;
}
try {
CommentMessage commentMessage = message.getMessageObject();
final String documentId = commentMessage.getDocumentId();
final boolean replyMessage = commentMessage.isReplyMessage();
final int senderId = commentMessage.getSenderId();
final boolean deleted = commentMessage.isDeleted();
final SourceDocument document = documentSupplier.get();
if ((document != null) && document.getUuid().equals(documentId)) {
User user = project.getUser();
Integer receiverId = user.getUserId();
if (!receiverId.equals(senderId)) {
final Comment comment = commentMessage.toComment();
Optional<Comment> optionalExistingComment = this.comments.stream().filter(c -> c.getUuid().equals(comment.getUuid())).findFirst();
if (replyMessage) {
if (optionalExistingComment.isPresent()) {
Comment existingComment = optionalExistingComment.get();
Reply reply = commentMessage.toReply();
Reply existingReply = existingComment.getReply(reply.getUuid());
if (existingReply != null) {
if (deleted) {
existingComment.removeReply(existingReply);
tagger.removeReply(existingComment, existingReply);
} else {
existingReply.setBody(reply.getBody());
tagger.updateReply(existingComment, existingReply);
}
} else {
existingComment.addReply(reply);
tagger.addReply(existingComment, reply);
}
}
} else {
if (deleted) {
optionalExistingComment.ifPresent(existingComment -> {
this.comments.remove(existingComment);
tagger.removeComment(existingComment);
});
} else {
if (optionalExistingComment.isPresent()) {
Comment existingComment = optionalExistingComment.get();
existingComment.setBody(comment.getBody());
tagger.updateComment(existingComment);
} else {
comments.add(comment);
tagger.addComment(comment);
}
}
}
getUi().push();
}
}
} catch (Exception e) {
logger.log(Level.WARNING, "error processing an incoming Comment", e);
}
}
use of de.catma.user.User in project catma by forTEXT.
the class ProjectView method initTeamContent.
private Component initTeamContent() {
HorizontalFlexLayout teamContent = new HorizontalFlexLayout();
teamGrid = new Grid<>();
teamGrid.setHeaderVisible(false);
// $NON-NLS-1$
teamGrid.setWidth("402px");
teamGrid.addColumn((user) -> VaadinIcons.USER.getHtml(), new HtmlRenderer());
teamGrid.addColumn(User::getName).setWidth(200).setComparator((r1, r2) -> String.CASE_INSENSITIVE_ORDER.compare(r1.getName(), r2.getName())).setDescriptionGenerator(User::preciseName);
teamGrid.addColumn(Member::getRole).setExpandRatio(1);
Label membersAnnotations = new Label("Members");
ActionGridComponent<Grid<Member>> membersGridComponent = new ActionGridComponent<>(membersAnnotations, teamGrid);
// $NON-NLS-1$
membersGridComponent.addStyleName("project-view-action-grid");
ContextMenu addContextMenu = membersGridComponent.getActionGridBar().getBtnAddContextMenu();
addContextMenu.addItem("Add Member", (click) -> new AddMemberDialog(project::assignOnProject, // $NON-NLS-1$
(query) -> project.findUser(query.getFilter().isPresent() ? query.getFilter().get() : "", query.getOffset(), query.getLimit()), (evt) -> eventBus.post(new MembersChangedEvent())).show());
ContextMenu moreOptionsContextMenu = membersGridComponent.getActionGridBar().getBtnMoreOptionsContextMenu();
moreOptionsContextMenu.addItem("Edit Members", (click) -> handleEditMembers());
moreOptionsContextMenu.addItem("Remove Members", (click) -> handleRemoveMembers());
miInvite = moreOptionsContextMenu.addItem("Invite someone to the Project", click -> handleProjectInvitationRequest());
MenuItem editResBtn = moreOptionsContextMenu.addItem("Resource permissions", click -> {
@SuppressWarnings("unchecked") TreeDataProvider<Resource> resourceDataProvider = (TreeDataProvider<Resource>) documentGrid.getDataProvider();
TreeData<Resource> resourceData = resourceDataProvider.getTreeData();
if (!resourceData.getRootItems().isEmpty()) {
new ResourcePermissionView(resourceData, tagsetData.getItems(), this.project).show();
} else {
Notification.show("Info", "You do not have any Documents yet, please add a Document first!", Type.HUMANIZED_MESSAGE);
}
});
editResBtn.setEnabled(false);
rbacEnforcer.register(RBACConstraint.ifAuthorized(role -> (project.hasPermission(role, RBACPermission.PROJECT_MEMBERS_EDIT)), () -> editResBtn.setEnabled(true)));
teamContent.addComponent(membersGridComponent);
return teamContent;
}
use of de.catma.user.User in project catma by forTEXT.
the class ProjectView method handleRemoveMembers.
private void handleRemoveMembers() {
if (teamGrid.getSelectedItems().isEmpty()) {
Notification.show("Info", "Please select one or more members first!", Type.HUMANIZED_MESSAGE);
} else {
if (teamGrid.getSelectedItems().stream().map(User::getUserId).filter(id -> id.equals(project.getUser().getUserId())).findFirst().isPresent()) {
HTMLNotification.show("Info", "You cannot remove yourself from the Project. " + "Please use the 'Leave Project' button on the Project card on the Dashboard instead!" + "<br><br> If your are the owner of the Project, " + "please contact the Administrator to request an transfer of ownership.", Type.ERROR_MESSAGE);
}
Set<Member> members = teamGrid.getSelectedItems().stream().filter(member -> !member.getUserId().equals(project.getUser().getUserId())).collect(Collectors.toSet());
members.remove(project.getUser());
if (!members.isEmpty()) {
new RemoveMemberDialog(project::unassignFromProject, teamGrid.getSelectedItems(), evt -> eventBus.post(new MembersChangedEvent())).show();
}
}
}
Aggregations