diff --git a/ccm-bundle-devel/pom.xml b/ccm-bundle-devel/pom.xml
index cf08bcbd5..4e4899d2d 100644
--- a/ccm-bundle-devel/pom.xml
+++ b/ccm-bundle-devel/pom.xml
@@ -61,28 +61,6 @@
-
- com.vaadin
- vaadin-compatibility-server
-
-
- com.vaadin
- vaadin-compatibility-shared
-
-
-
- com.vaadin
- vaadin-compatibility-themes
-
-
- com.vaadin
- vaadin-compatibility-client-compiled
- 8.0.4
-
com.vaadin
vaadin-cdi
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTable.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTable.java
index 6a179b11d..99176f3c9 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTable.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTable.java
@@ -138,12 +138,12 @@ class AssignedImagesTable extends Table {
.findBean(ImageStepController.class);
final ItemAttachment> selectedAttachment
- = moveAttachmentModel
+ = moveAttachmentModel
.getSelectedAttachment(state);
-
+
final Long destId = Long
- .parseLong((String) event.getRowKey());
-
+ .parseLong((String) event.getRowKey());
+
controller.moveAfter(selectedAttachment, destId);
}
@@ -165,6 +165,10 @@ class AssignedImagesTable extends Table {
});
+ super.setEmptyView(new Label(new GlobalizedMessage(
+ "cms.ui.authoring.assets.imagestep.assigned_images.none",
+ CmsConstants.CMS_BUNDLE)));
+
}
private class ThumbnailCellRenderer implements TableCellRenderer {
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTableModelBuilder.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTableModelBuilder.java
index 66f9c1464..b95ed6352 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTableModelBuilder.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AssignedImagesTableModelBuilder.java
@@ -84,7 +84,7 @@ class AssignedImagesTableModelBuilder extends LockableImpl implements
.findBean(ImageStepController.class);
final List rows = controller
- .retrieveAssignedImages(selectedItem, selectedLocale);
+ .retrieveAssignedImagesRows(selectedItem, selectedLocale);
return new AssignedImagesTableModel(rows,
state,
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImageTableRow.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImageTableRow.java
index d5d4e44d5..ca1411e7f 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImageTableRow.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImageTableRow.java
@@ -20,13 +20,14 @@ package com.arsdigita.cms.ui.authoring.assets.images;
/**
* A container for the data shown in the table of assigned images.
- *
+ *
* @author Jens Pelzetter
*/
class AvailableImageTableRow {
-
+
private long imageId;
private String imageUuid;
+ private String title;
private String filename;
private long width;
private long height;
@@ -36,11 +37,11 @@ class AvailableImageTableRow {
public long getImageId() {
return imageId;
}
-
+
public void setImageId(final long imageId) {
this.imageId = imageId;
}
-
+
public String getImageUuid() {
return imageUuid;
}
@@ -49,6 +50,14 @@ class AvailableImageTableRow {
this.imageUuid = imageUuid;
}
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(final String title) {
+ this.title = title;
+ }
+
public String getFilename() {
return filename;
}
@@ -88,7 +97,5 @@ class AvailableImageTableRow {
public void setCaption(final String caption) {
this.caption = caption;
}
-
-
-
+
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImages.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImages.java
index ac557099d..37c7cd440 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImages.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImages.java
@@ -33,17 +33,15 @@ import com.arsdigita.bebop.event.TableActionEvent;
import com.arsdigita.bebop.event.TableActionListener;
import com.arsdigita.bebop.form.Submit;
import com.arsdigita.bebop.form.TextField;
+import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.table.TableColumnModel;
+import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.globalization.GlobalizedMessage;
import org.libreccm.cdi.utils.CdiUtil;
import org.librecms.CmsConstants;
-import org.librecms.assets.Image;
-import org.librecms.contentsection.AttachmentList;
-
-import java.util.List;
/**
*
@@ -52,12 +50,14 @@ import java.util.List;
class AvailableImages extends BoxPanel {
protected static final int COL_PREVIEW = 0;
- protected static final int COL_PROPERTIES = 1;
- protected static final int COL_CAPTION = 2;
- protected static final int COL_ADD = 3;
+ protected static final int COL_TITLE = 1;
+ protected static final int COL_PROPERTIES = 2;
+ protected static final int COL_CAPTION = 3;
+ protected static final int COL_ADD = 4;
- public AvailableImages(final AttachmentList imagesList,
- final List assignedImages) {
+ public AvailableImages(final ImageStep imageStep,
+ final ItemSelectionModel itemSelectionModel,
+ final StringParameter selectedLanguageParam) {
super(BoxPanel.VERTICAL);
@@ -65,9 +65,11 @@ class AvailableImages extends BoxPanel {
new BoxPanel(BoxPanel.HORIZONTAL));
final TextField filterField = new TextField("filter_available_images");
filterField.setLabel(new GlobalizedMessage(
- "cms.ui.authoring.assets.imagestep.available_images.filter_label"));
+ "cms.ui.authoring.assets.imagestep.available_images.filter_label",
+ CmsConstants.CMS_BUNDLE));
final Submit submitFilter = new Submit(new GlobalizedMessage(
- "cms.ui.authoring.assets.imagestep.available_images.submit_filter"));
+ "cms.ui.authoring.assets.imagestep.available_images.submit_filter",
+ CmsConstants.CMS_BUNDLE));
filterForm.add(filterField);
filterForm.add(submitFilter);
@@ -84,7 +86,7 @@ class AvailableImages extends BoxPanel {
return (int) controller
.getNumberOfAvailableImages(
- assignedImages,
+ itemSelectionModel.getSelectedItem(state),
(String) filterField.getValue(state));
}
@@ -105,6 +107,11 @@ class AvailableImages extends BoxPanel {
new Label(new GlobalizedMessage(
"cms.ui.authoring.assets.imagestep.available_images.preview_header",
CmsConstants.CMS_BUNDLE))));
+ columnModel.add(new TableColumn(
+ COL_TITLE,
+ new Label(new GlobalizedMessage(
+ "cms.ui.authoring.assets.imagestep.available_images.title_header",
+ CmsConstants.CMS_BUNDLE))));
columnModel.add(new TableColumn(
COL_PROPERTIES,
new Label(new GlobalizedMessage(
@@ -121,9 +128,8 @@ class AvailableImages extends BoxPanel {
"cms.ui.authoring.assets.imagestep.available_images.select_header",
CmsConstants.CMS_BUNDLE))));
- table.setModelBuilder(new AvailableImagesTableModelBuilder(imagesList,
- filterField,
- paginator));
+ table.setModelBuilder(new AvailableImagesTableModelBuilder(
+ itemSelectionModel, selectedLanguageParam, filterField, paginator));
table
.getColumn(COL_PREVIEW)
@@ -135,6 +141,10 @@ class AvailableImages extends BoxPanel {
.getColumn(COL_ADD)
.setCellRenderer(new AddCellRenderer());
+ table.setEmptyView(new Label(new GlobalizedMessage(
+ "cms.ui.authoring.assets.imagestep.available_images.none",
+ CmsConstants.CMS_BUNDLE)));
+
table.addTableActionListener(new TableActionListener() {
@Override
@@ -146,7 +156,12 @@ class AvailableImages extends BoxPanel {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final ImageStepController controller = cdiUtil
.findBean(ImageStepController.class);
- controller.attachImage(imagesList, imageId);
+ controller
+ .attachImage(itemSelectionModel
+ .getSelectedItem(event.getPageState()),
+ imageId);
+
+ imageStep.showAssignedImages(event.getPageState());
}
@Override
@@ -155,6 +170,8 @@ class AvailableImages extends BoxPanel {
}
});
+
+ super.add(table);
}
private class ThumbnailCellRenderer implements TableCellRenderer {
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModel.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModel.java
index 8036a455b..acc3eb2ff 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModel.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModel.java
@@ -63,11 +63,13 @@ class AvailableImagesTableModel implements TableModel {
switch (columnIndex) {
case AvailableImages.COL_PREVIEW:
return String
- .format("%s/content-.sections/%s/images/"
+ .format("%s/content-sections/%s/images/"
+ "uuid-%s?width=150&height=100",
CCMDispatcherServlet.getContextPath(),
CMS.getContext().getContentSection().getLabel(),
currentRow.getImageUuid());
+ case AvailableImages.COL_TITLE:
+ return currentRow.getTitle();
case AvailableImages.COL_PROPERTIES:
final ImageProperties imageProperties = new ImageProperties();
imageProperties.setFilename(currentRow.getFilename());
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModelBuilder.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModelBuilder.java
index 313d1b555..a2e98a427 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModelBuilder.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/AvailableImagesTableModelBuilder.java
@@ -22,15 +22,19 @@ import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.Paginator;
import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.form.TextField;
+import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.bebop.table.TableModel;
import com.arsdigita.bebop.table.TableModelBuilder;
+import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.util.LockableImpl;
import org.libreccm.cdi.utils.CdiUtil;
import org.librecms.assets.Image;
-import org.librecms.contentsection.AttachmentList;
+import org.librecms.contentsection.ContentItem;
+import org.librecms.contentsection.ItemAttachment;
import java.util.List;
+import java.util.Locale;
import java.util.stream.Collectors;
/**
@@ -41,14 +45,19 @@ public class AvailableImagesTableModelBuilder
extends LockableImpl
implements TableModelBuilder {
- private final AttachmentList imageList;
+ private final ItemSelectionModel itemSelectionModel;
+ private final StringParameter selectedLanguageParam;
private final TextField filterField;
private final Paginator paginator;
- public AvailableImagesTableModelBuilder(final AttachmentList imageList,
- final TextField filterField,
- final Paginator paginator) {
- this.imageList = imageList;
+ public AvailableImagesTableModelBuilder(
+ final ItemSelectionModel itemSelectionModel,
+ final StringParameter selectedLanguageParam,
+ final TextField filterField,
+ final Paginator paginator) {
+
+ this.itemSelectionModel = itemSelectionModel;
+ this.selectedLanguageParam = selectedLanguageParam;
this.filterField = filterField;
this.paginator = paginator;
}
@@ -57,28 +66,34 @@ public class AvailableImagesTableModelBuilder
public TableModel makeModel(final Table table,
final PageState state) {
- final List excludedImages = imageList
- .getAttachments()
+ final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
+ final ImageStepController controller = cdiUtil
+ .findBean(ImageStepController.class);
+
+ final ContentItem selectedItem = itemSelectionModel
+ .getSelectedItem(state);
+
+ final List> imageAttachments = controller
+ .retrieveAssignedImages(selectedItem);
+
+ final List excludedImages = imageAttachments
.stream()
.map(attachment -> attachment.getAsset())
- .filter(asset -> asset instanceof Image)
- .map(asset -> (Image) asset)
.collect(Collectors.toList());
//Paginator count from 1, JPA from 0
final int firstResult = paginator.getFirst(state) - 1;
final int maxResults = paginator.getPageSize(state);
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ImageStepController controller = cdiUtil
- .findBean(ImageStepController.class);
+ final Locale selectedLocale = new Locale((String) state.getValue(selectedLanguageParam));
final List rows = controller
- .getAvailableImageRows(excludedImages,
- (String) filterField.getValue(state),
- firstResult,
- maxResults);
-
+ .getAvailableImageRows(excludedImages,
+ selectedLocale,
+ (String) filterField.getValue(state),
+ firstResult,
+ maxResults);
+
return new AvailableImagesTableModel(rows);
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStep.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStep.java
index 862c7b478..d4de04514 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStep.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStep.java
@@ -19,16 +19,15 @@
package com.arsdigita.cms.ui.authoring.assets.images;
import com.arsdigita.bebop.ActionLink;
+import com.arsdigita.bebop.BoxPanel;
import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Page;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.Table;
-import com.arsdigita.bebop.Text;
import com.arsdigita.bebop.parameters.LongParameter;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ItemSelectionModel;
-import com.arsdigita.cms.ui.GlobalNavigation;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.ResettableContainer;
import com.arsdigita.cms.ui.authoring.assets.ItemAttachmentSelectionModel;
@@ -54,6 +53,8 @@ import java.util.Locale;
descriptionKey = "image_step.description")
public class ImageStep extends ResettableContainer {
+ public static final String IMAGES_ATTACHMENT_LIST = ".images";
+
private final LongParameter moveAttachmentParam;
private final ItemAttachmentSelectionModel moveAttachmentModel;
@@ -61,6 +62,9 @@ public class ImageStep extends ResettableContainer {
private final ControlLink addImageLink;
private final ActionLink beginLink;
private final Table assignedImagesTable;
+ private final Label addImageHeader;
+ private final AvailableImages availableImages;
+ private final ControlLink cancelAddImage;
public ImageStep(final ItemSelectionModel itemSelectionModel,
final AuthoringKitWizard authoringKitWizard,
@@ -95,20 +99,42 @@ public class ImageStep extends ResettableContainer {
CmsConstants.CMS_BUNDLE,
new String[]{title}));
});
- super.add(assignedImagesHeader);
+ assignedImagesHeader.setClassAttr("");
- addImageLink = new ControlLink(new Label(new GlobalizedMessage(
+ addImageHeader = new Label(event -> {
+ final PageState state = event.getPageState();
+ final Label target = (Label) event.getTarget();
+
+ final ContentItem selectedItem = itemSelectionModel
+ .getSelectedItem(state);
+ final String selectedLanguage = (String) state
+ .getValue(selectedLanguageParam);
+ final Locale selectedLocale = new Locale(selectedLanguage);
+ final String title;
+ if (selectedItem.getTitle().hasValue(selectedLocale)) {
+ title = selectedItem.getTitle().getValue(selectedLocale);
+ } else {
+ title = selectedItem.getTitle().getValue(KernelConfig
+ .getConfig()
+ .getDefaultLocale());
+ }
+
+ target.setLabel(new GlobalizedMessage(
+ "cms.ui.authoring.assets.imagestep.add_heading",
+ CmsConstants.CMS_BUNDLE,
+ new String[]{title}));
+ });
+
+ addImageLink = new ActionLink(new Label(new GlobalizedMessage(
"cms.ui.authoring.assets.imagestep.assigned_images.add_image",
CmsConstants.CMS_BUNDLE)));
addImageLink.addActionListener(event -> {
- //ToDo
+ showAvailableImages(event.getPageState());
});
- super.add(addImageLink);
beginLink = new ActionLink(new GlobalizedMessage(
"cms.ui.authoring.assets.imagestep.assigned_images.move_to_beginning",
CmsConstants.CMS_BUNDLE));
- add(beginLink);
beginLink.addActionListener(event -> {
final PageState state = event.getPageState();
@@ -125,14 +151,31 @@ public class ImageStep extends ResettableContainer {
assignedImagesTable = new AssignedImagesTable(itemSelectionModel,
moveAttachmentModel,
selectedLanguageParam);
- super.add(assignedImagesTable);
- super.add(new Text("Image Step placeholder"));
-
+ cancelAddImage = new ControlLink(new Label(new GlobalizedMessage(
+ "cms.ui.authoring.assets.imagestep.assigned_images.cancel_add_image",
+ CmsConstants.CMS_BUNDLE)));
+ cancelAddImage.addActionListener(event -> {
+ showAssignedImages(event.getPageState());
+ });
+
+ availableImages = new AvailableImages(this,
+ itemSelectionModel,
+ selectedLanguageParam);
+
+ final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
+ panel.add(assignedImagesHeader);
+ panel.add(addImageLink);
+ panel.add(beginLink);
+ panel.add(assignedImagesTable);
+ panel.add(addImageHeader);
+ panel.add(availableImages);
+ super.add(panel);
+
moveAttachmentModel.addChangeListener(event -> {
-
+
final PageState state = event.getPageState();
-
+
if (moveAttachmentModel.getSelectedKey(state) == null) {
addImageLink.setVisible(state, true);
beginLink.setVisible(state, false);
@@ -151,6 +194,27 @@ public class ImageStep extends ResettableContainer {
page.setVisibleDefault(addImageLink, true);
page.setVisibleDefault(beginLink, false);
page.setVisibleDefault(assignedImagesTable, true);
+ page.setVisibleDefault(addImageHeader, false);
+ page.setVisibleDefault(cancelAddImage, false);
+ page.setVisibleDefault(availableImages, false);
+ }
+
+ protected void showAssignedImages(final PageState state) {
+ assignedImagesHeader.setVisible(state, true);
+ addImageLink.setVisible(state, true);
+ assignedImagesTable.setVisible(state, true);
+ addImageHeader.setVisible(state, false);
+
+ availableImages.setVisible(state, false);
+ }
+
+ protected void showAvailableImages(final PageState state) {
+ assignedImagesHeader.setVisible(state, false);
+ addImageLink.setVisible(state, false);
+ assignedImagesTable.setVisible(state, false);
+ addImageHeader.setVisible(state, true);
+ cancelAddImage.setVisible(state, true);
+ availableImages.setVisible(state, true);
}
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStepController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStepController.java
index 259cffa68..f6c682369 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStepController.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/authoring/assets/images/ImageStepController.java
@@ -62,7 +62,7 @@ class ImageStepController {
@Inject
private AssetRepository assetRepo;
-
+
@Inject
private AttachmentListManager attachmentListManager;
@@ -70,11 +70,10 @@ class ImageStepController {
private ItemAttachmentManager attachmentManager;
@Transactional(Transactional.TxType.REQUIRED)
- protected List retrieveAssignedImages(
- final ContentItem fromContentItem, final Locale selectedLocale) {
+ protected List> retrieveAssignedImages(
+ final ContentItem fromContentItem) {
Objects.requireNonNull(fromContentItem);
- Objects.requireNonNull(selectedLocale);
final ContentItem item = itemRepo
.findById(fromContentItem.getObjectId())
@@ -83,7 +82,7 @@ class ImageStepController {
fromContentItem.getObjectId())));
final List imageLists = attachmentListManager
- .getAttachmentList(item, ".images");
+ .getAttachmentList(item, ImageStep.IMAGES_ATTACHMENT_LIST);
if (imageLists.isEmpty()) {
return Collections.emptyList();
@@ -97,18 +96,66 @@ class ImageStepController {
}
@SuppressWarnings("unchecked")
- final List rows = attachments
+ final List> imageAttachments = attachments
.stream()
.sorted((attachment1, attachment2) -> {
return attachment1.compareTo(attachment2);
})
.filter(attachment -> attachment.getAsset() instanceof Image)
.map(attachment -> (ItemAttachment) attachment)
- .map(imageAttachment -> buildAssignedImageTableRow(imageAttachment,
- selectedLocale))
.collect(Collectors.toList());
- return rows;
+ return imageAttachments;
+ }
+
+ @Transactional(Transactional.TxType.REQUIRED)
+ protected List retrieveAssignedImagesRows(
+ final ContentItem fromContentItem, final Locale selectedLocale) {
+
+// Objects.requireNonNull(fromContentItem);
+// Objects.requireNonNull(selectedLocale);
+//
+// final ContentItem item = itemRepo
+// .findById(fromContentItem.getObjectId())
+// .orElseThrow(() -> new IllegalArgumentException(String
+// .format("No ContentItem with id %d in the database.",
+// fromContentItem.getObjectId())));
+//
+// final List imageLists = attachmentListManager
+// .getAttachmentList(item, ImageStep.IMAGES_ATTACHMENT_LIST);
+//
+// if (imageLists.isEmpty()) {
+// return Collections.emptyList();
+// }
+//
+// final List> attachments = new ArrayList<>();
+// for (final AttachmentList imageList : imageLists) {
+// for (final ItemAttachment> attachment : imageList.getAttachments()) {
+// attachments.add(attachment);
+// }
+// }
+ final List> imageAttachments
+ = retrieveAssignedImages(
+ fromContentItem);
+
+// @SuppressWarnings("unchecked")
+// final List rows = attachments
+// .stream()
+// .sorted((attachment1, attachment2) -> {
+// return attachment1.compareTo(attachment2);
+// })
+// .filter(attachment -> attachment.getAsset() instanceof Image)
+// .map(attachment -> (ItemAttachment) attachment)
+// .map(imageAttachment -> buildAssignedImageTableRow(imageAttachment,
+// selectedLocale))
+// .collect(Collectors.toList());
+//
+// return rows;
+ return imageAttachments
+ .stream()
+ .map(imageAttachment -> buildAssignedImageTableRow(imageAttachment,
+ selectedLocale))
+ .collect(Collectors.toList());
}
@Transactional(Transactional.TxType.REQUIRED)
@@ -208,28 +255,54 @@ class ImageStepController {
}
@Transactional(Transactional.TxType.REQUIRED)
- protected long getNumberOfAvailableImages(final List excluededImages,
+ protected long getNumberOfAvailableImages(final ContentItem selectedItem,
final String filter) {
+ Objects.requireNonNull(selectedItem);
+
+ final ContentItem item = itemRepo
+ .findById(selectedItem.getObjectId())
+ .orElseThrow(() -> new IllegalArgumentException(String
+ .format("No ContentItem with ID %d in the database.",
+ selectedItem.getObjectId())));
+
+ final List> imageAttachments
+ = retrieveAssignedImages(item);
+ final List excluededImages = imageAttachments
+ .stream()
+ .map(imageAttachment -> imageAttachment.getAsset())
+ .collect(Collectors.toList());
+
final CriteriaBuilder criteriaBuilder = entityManager
.getCriteriaBuilder();
final CriteriaQuery query = criteriaBuilder
.createQuery(Long.class);
final Root from = query.from(Image.class);
- final Join titleJoin = from.join("title.values");
+ final Join titleJoin = from.join("title");
+ final Join titleValuesJoin = titleJoin.join("values");
query
.select(criteriaBuilder.count(from));
if (filter == null || filter.trim().isEmpty()) {
- query.where(criteriaBuilder.and(
- criteriaBuilder.not(from.in(excluededImages)),
- criteriaBuilder.like(titleJoin, String.format("&s%%", filter))));
+ if (excluededImages != null && !excluededImages.isEmpty()) {
+ query.where(criteriaBuilder.not(from.in(excluededImages)));
+ }
} else {
- query.where(criteriaBuilder.not(from.in(excluededImages)));
+ if (excluededImages == null || excluededImages.isEmpty()) {
+ criteriaBuilder.like(titleValuesJoin,
+ String.format("%s%%", filter));
+ } else {
+ query.where(criteriaBuilder.and(
+ criteriaBuilder.not(from.in(excluededImages)),
+ criteriaBuilder.like(titleValuesJoin,
+ String.format("%s%%", filter))));
+ }
}
- return entityManager.createQuery(query).getSingleResult();
+ final long result = entityManager.createQuery(query)
+ .getSingleResult();
+ return result;
}
@Transactional(Transactional.TxType.REQUIRED)
@@ -237,20 +310,31 @@ class ImageStepController {
final String filter,
final long firstImage,
final long maxImages) {
+
final CriteriaBuilder criteriaBuilder = entityManager
.getCriteriaBuilder();
final CriteriaQuery criteriaQuery = criteriaBuilder
.createQuery(Image.class);
final Root from = criteriaQuery.from(Image.class);
- final Join titleJoin = from.join("title.values");
+ final Join titleJoin = from.join("title");
+ final Join titleValuesJoin = titleJoin.join("values");
if (filter == null || filter.trim().isEmpty()) {
- criteriaQuery.where(criteriaBuilder.and(
- criteriaBuilder.not(from.in(excludedImages)),
- criteriaBuilder.like(titleJoin, String.format("&s%%", filter))));
+ if (excludedImages != null && !excludedImages.isEmpty()) {
+ criteriaQuery.where(criteriaBuilder.not(from.in(
+ excludedImages)));
+ }
} else {
- criteriaQuery.where(criteriaBuilder.not(from.in(excludedImages)));
+ if (excludedImages == null || excludedImages.isEmpty()) {
+ criteriaBuilder.like(titleValuesJoin,
+ String.format("%s%%", filter));
+ } else {
+ criteriaQuery.where(criteriaBuilder.and(
+ criteriaBuilder.not(from.in(excludedImages)),
+ criteriaBuilder.like(titleValuesJoin,
+ String.format("%s%%", filter))));
+ }
}
final TypedQuery query = entityManager
@@ -258,53 +342,70 @@ class ImageStepController {
query.setFirstResult((int) firstImage);
query.setMaxResults((int) maxImages);
- return query.getResultList();
+ final List result = query.getResultList();
+ return result;
}
@Transactional(Transactional.TxType.REQUIRED)
protected List getAvailableImageRows(
final List excludedImages,
+ final Locale selectedLocale,
final String filter,
final long firstImage,
- final long lastImage) {
+ final long lastImage
+ ) {
- return getAvailableImages(excludedImages, filter, firstImage, lastImage)
+ return getAvailableImages(excludedImages, filter, firstImage,
+ lastImage)
.stream()
- .map(this::buildAvailableImageRow)
+ .map(image -> buildAvailableImageRow(image, selectedLocale))
.collect(Collectors.toList());
-
+
}
-
- private AvailableImageTableRow buildAvailableImageRow(final Image image) {
+
+ private AvailableImageTableRow buildAvailableImageRow(
+ final Image image, final Locale selectedLocale) {
final AvailableImageTableRow row = new AvailableImageTableRow();
row.setImageId(image.getObjectId());
row.setImageUuid(image.getUuid());
+ row.setTitle(image.getTitle().getValue(selectedLocale));
row.setFilename(image.getFileName());
row.setWidth(image.getWidth());
- row.setHeight(row.getHeight());
+ row.setHeight(image.getHeight());
row.setType(image.getMimeType().toString());
-
+
return row;
}
@Transactional(Transactional.TxType.REQUIRED)
- protected void attachImage(final AttachmentList attachmentList,
+ protected void attachImage(final ContentItem contentItem,
final long imageId) {
-
- final AttachmentList addTo = attachmentListManager
- .getAttachmentList(attachmentList.getListId())
- .orElseThrow(() -> new IllegalArgumentException(String
- .format("No AttachmentList with ID %d in the database.",
- attachmentList.getListId())));
-
+
+ final ContentItem item = itemRepo
+ .findById(contentItem.getObjectId())
+ .orElseThrow(() -> new IllegalArgumentException(String
+ .format("No ContentItem with ID %d in the database.",
+ contentItem.getObjectId())));
+
+ final List list = attachmentListManager
+ .getAttachmentList(item, ImageStep.IMAGES_ATTACHMENT_LIST);
+
+ final AttachmentList addTo;
+ if (list == null || list.isEmpty()) {
+ addTo = attachmentListManager
+ .createAttachmentList(item, ImageStep.IMAGES_ATTACHMENT_LIST);
+ } else {
+ addTo = list.get(0);
+ }
+
final Image image = assetRepo
.findById(imageId, Image.class)
- .orElseThrow(() -> new IllegalArgumentException(String
+ .orElseThrow(() -> new IllegalArgumentException(String
.format("No Image with ID %d in the database.",
imageId)));
-
- attachmentManager.attachAsset(image, attachmentList);
+
+ attachmentManager.attachAsset(image, addTo);
}
private AssignedImageTableRow buildAssignedImageTableRow(
diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionConfig.java b/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionConfig.java
index 6666a6c76..bb24c4183 100644
--- a/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionConfig.java
+++ b/ccm-cms/src/main/java/org/librecms/contentsection/ContentSectionConfig.java
@@ -18,6 +18,9 @@
*/
package org.librecms.contentsection;
+import com.arsdigita.cms.ui.authoring.assets.RelatedInfoStep;
+import com.arsdigita.cms.ui.authoring.assets.images.ImageStep;
+
import org.libreccm.cdi.utils.CdiUtil;
import org.libreccm.configuration.Configuration;
import org.libreccm.configuration.ConfigurationManager;
@@ -120,8 +123,8 @@ public class ContentSectionConfig {
@Setting
private List defaultAuthoringSteps = Arrays
.asList(new String[]{
- "com.arsdigita.cms.ui.authoring.assets.ImageStep",
- "com.arsdigita.cms.ui.authoring.assets.RelatedInfoStep"});
+ ImageStep.class.getName(),
+ RelatedInfoStep.class.getName()});
public static ContentSectionConfig getConfig() {
final ConfigurationManager confManager = CdiUtil.createCdiUtil()
diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties
index e62f9c3a4..501fc374e 100644
--- a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties
+++ b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties
@@ -405,3 +405,10 @@ cms.ui.authoring.assets.imagestep.available_images.preview_header=Preview
cms.ui.authoring.assets.imagestep.available_images.properties_header=Properties
cms.ui.authoring.assets.imagestep.available_images.select_header=Add image
cms.ui.authoring.assets.imagestep.available_images.caption_header=Caption
+cms.ui.authoring.assets.imagestep.assigned_images.add_image=Add image
+cms.ui.authoring.assets.imagestep.assigned_images.none=No images are assigned to this document.
+cms.ui.authoring.assets.imagestep.add_heading=Add image to document {0}
+cms.ui.authoring.assets.imagestep.assigned_images.cancel_add_image=Cancel
+cms.ui.authoring.assets.imagestep.available_images.none=No images available
+cms.ui.authoring.assets.imagestep.available_images.title_header=Title
+cms.ui.authoring.assets.imagestep.available_images.add=Add
diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties
index 981e641d1..407b3aac6 100644
--- a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties
+++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties
@@ -402,3 +402,10 @@ cms.ui.authoring.assets.imagestep.available_images.preview_header=Vorschau
cms.ui.authoring.assets.imagestep.available_images.properties_header=Eigenschaften
cms.ui.authoring.assets.imagestep.available_images.select_header=Hinzuf\u00fcgen
cms.ui.authoring.assets.imagestep.available_images.caption_header=Bildunterschrift
+cms.ui.authoring.assets.imagestep.assigned_images.add_image=Bild hinzuf\u00fcgen
+cms.ui.authoring.assets.imagestep.assigned_images.none=Diesem Bild wurden keine Bilder zugewiesen
+cms.ui.authoring.assets.imagestep.add_heading=Bild zu Dokument {0} hinzuf\u00fcgen
+cms.ui.authoring.assets.imagestep.assigned_images.cancel_add_image=Abbrechen
+cms.ui.authoring.assets.imagestep.available_images.none=Keine Bilder verf\u00fcgbar
+cms.ui.authoring.assets.imagestep.available_images.title_header=Titel
+cms.ui.authoring.assets.imagestep.available_images.add=Hinzuf\u00fcgen
diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties
index eae852522..f91bd9813 100644
--- a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties
+++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties
@@ -361,3 +361,10 @@ cms.ui.authoring.assets.imagestep.available_images.preview_header=Preview
cms.ui.authoring.assets.imagestep.available_images.properties_header=Properties
cms.ui.authoring.assets.imagestep.available_images.select_header=Add image
cms.ui.authoring.assets.imagestep.available_images.caption_header=Caption
+cms.ui.authoring.assets.imagestep.assigned_images.add_image=Add image
+cms.ui.authoring.assets.imagestep.assigned_images.none=No images are assigned to this document.
+cms.ui.authoring.assets.imagestep.add_heading=Add image to document {0}
+cms.ui.authoring.assets.imagestep.assigned_images.cancel_add_image=Cancel
+cms.ui.authoring.assets.imagestep.available_images.none=No images available
+cms.ui.authoring.assets.imagestep.available_images.title_header=Title
+cms.ui.authoring.assets.imagestep.available_images.add=Add
diff --git a/ccm-core/pom.xml b/ccm-core/pom.xml
index 0d7c069e3..c02e857d9 100644
--- a/ccm-core/pom.xml
+++ b/ccm-core/pom.xml
@@ -202,14 +202,6 @@
-
- com.vaadin
- vaadin-compatibility-server
-
-
- com.vaadin
- vaadin-compatibility-shared
-
com.vaadin
vaadin-themes
@@ -220,11 +212,6 @@
vaadin-client-compiled
-
- com.vaadin
- vaadin-compatibility-client-compiled
-
-
com.vaadin
vaadin-cdi
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/usersgroupsroles/roles/RoleMembersTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/usersgroupsroles/roles/RoleMembersTable.java
index 9da5ae7c1..0cac42e45 100644
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/usersgroupsroles/roles/RoleMembersTable.java
+++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/usersgroupsroles/roles/RoleMembersTable.java
@@ -34,7 +34,7 @@ import com.arsdigita.bebop.table.TableModelBuilder;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.util.LockableImpl;
-import org.libreccm.admin.ui.usersgroupsroles.UsersGroupsRoles;
+import org.libreccm.admin.ui.UsersGroupsRoles;
import org.libreccm.cdi.utils.CdiUtil;
import org.libreccm.security.Group;
import org.libreccm.security.Party;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/AdminView.java b/ccm-core/src/main/java/org/libreccm/admin/ui/AdminView.java
index 2bb9a8c0f..4362acd89 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/AdminView.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/AdminView.java
@@ -34,10 +34,6 @@ import com.vaadin.ui.Label;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.VerticalLayout;
import org.apache.shiro.subject.Subject;
-import org.libreccm.admin.ui.usersgroupsroles.GroupsTableDataProvider;
-import org.libreccm.admin.ui.usersgroupsroles.RolesTableDataProvider;
-import org.libreccm.admin.ui.usersgroupsroles.UsersGroupsRoles;
-import org.libreccm.admin.ui.usersgroupsroles.UsersTableDataProvider;
import org.libreccm.l10n.GlobalizationHelper;
import org.libreccm.security.GroupManager;
import org.libreccm.security.GroupRepository;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupDetails.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupDetails.java
similarity index 99%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupDetails.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupDetails.java
index 290db3f14..eefa97979 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupDetails.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupDetails.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.arsdigita.ui.admin.AdminUiConstants;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupEditor.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupEditor.java
similarity index 99%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupEditor.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupEditor.java
index 81e3e77c3..d28419049 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupEditor.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupEditor.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.arsdigita.ui.admin.AdminUiConstants;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupMembersController.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupMembersController.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupMembersController.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupMembersController.java
index 35c1770d4..4edd45627 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupMembersController.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupMembersController.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import org.libreccm.security.Group;
import org.libreccm.security.GroupManager;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupMembersTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupMembersTableDataProvider.java
similarity index 99%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupMembersTableDataProvider.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupMembersTableDataProvider.java
index e52d51243..7b30f3dc5 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupMembersTableDataProvider.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupMembersTableDataProvider.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.vaadin.cdi.ViewScoped;
import com.vaadin.data.provider.AbstractDataProvider;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupRolesController.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupRolesController.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupRolesController.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupRolesController.java
index 5a409e63b..c5d5f2d29 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupRolesController.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupRolesController.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import org.libreccm.security.Group;
import org.libreccm.security.GroupRepository;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupRolesTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupRolesTableDataProvider.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupRolesTableDataProvider.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupRolesTableDataProvider.java
index f755ac61b..eb1e5c8f8 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupRolesTableDataProvider.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupRolesTableDataProvider.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.vaadin.cdi.ViewScoped;
import com.vaadin.data.provider.AbstractDataProvider;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelectionAction.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelectionAction.java
similarity index 95%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelectionAction.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelectionAction.java
index b6676481c..fdb654f05 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelectionAction.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelectionAction.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import org.libreccm.security.Group;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelector.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelector.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelector.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelector.java
index 6ef405a80..73efd8a00 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelector.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelector.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.vaadin.icons.VaadinIcons;
import com.vaadin.ui.Button;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelectorDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelectorDataProvider.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelectorDataProvider.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelectorDataProvider.java
index 5a664562a..ae40d4c64 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupSelectorDataProvider.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupSelectorDataProvider.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.vaadin.cdi.ViewScoped;
import com.vaadin.data.provider.AbstractDataProvider;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupsTable.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupsTable.java
similarity index 99%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupsTable.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupsTable.java
index 283bfb700..d1148d992 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupsTable.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupsTable.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.arsdigita.ui.admin.AdminUiConstants;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupsTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupsTableDataProvider.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupsTableDataProvider.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/GroupsTableDataProvider.java
index 24f8c908b..43d90e6af 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/GroupsTableDataProvider.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/GroupsTableDataProvider.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.vaadin.cdi.ViewScoped;
import com.vaadin.data.provider.AbstractDataProvider;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/JpqlConsole.java b/ccm-core/src/main/java/org/libreccm/admin/ui/JpqlConsole.java
index 68de5b6fb..e0cd5a447 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/JpqlConsole.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/JpqlConsole.java
@@ -120,7 +120,7 @@ public class JpqlConsole extends CustomComponent {
// splitPanel.setSplitPosition(33.3f, Unit.PERCENTAGE);
// splitPanel.setFirstComponent(queryForm);
// splitPanel.setSecondComponent(resultsLayout);
- setCompositionRoot(new VerticalLayout(queryLayout, resultsPanel));
+ super.setCompositionRoot(new VerticalLayout(queryLayout, resultsPanel));
}
@SuppressWarnings("unchecked")
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelectionAction.java b/ccm-core/src/main/java/org/libreccm/admin/ui/PartySelectionAction.java
similarity index 95%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelectionAction.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/PartySelectionAction.java
index af283b37a..524588496 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelectionAction.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/PartySelectionAction.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import org.libreccm.security.Party;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelector.java b/ccm-core/src/main/java/org/libreccm/admin/ui/PartySelector.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelector.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/PartySelector.java
index bb1a7059b..fc4702f62 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelector.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/PartySelector.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.arsdigita.ui.admin.AdminUiConstants;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelectorDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/PartySelectorDataProvider.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelectorDataProvider.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/PartySelectorDataProvider.java
index 0b60e512c..0ca7379b1 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/PartySelectorDataProvider.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/PartySelectorDataProvider.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.vaadin.cdi.ViewScoped;
import com.vaadin.data.provider.AbstractDataProvider;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleDetails.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleDetails.java
similarity index 99%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleDetails.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/RoleDetails.java
index b7262ef63..40cd0446c 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleDetails.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleDetails.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.arsdigita.ui.admin.AdminUiConstants;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleEditor.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleEditor.java
similarity index 99%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleEditor.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/RoleEditor.java
index 3333f826d..0cb49c380 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleEditor.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleEditor.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.arsdigita.ui.admin.AdminUiConstants;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolePartiesController.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RolePartiesController.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolePartiesController.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/RolePartiesController.java
index efbac3ae7..75f7a00ce 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolePartiesController.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RolePartiesController.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import org.libreccm.security.Party;
import org.libreccm.security.PartyRepository;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolePartiesDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RolePartiesDataProvider.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolePartiesDataProvider.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/RolePartiesDataProvider.java
index 822a31cd1..177e3ac30 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolePartiesDataProvider.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RolePartiesDataProvider.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.vaadin.cdi.ViewScoped;
import com.vaadin.data.provider.AbstractDataProvider;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelectionAction.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelectionAction.java
similarity index 95%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelectionAction.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelectionAction.java
index 706a7d0d3..7ffa6e9f8 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelectionAction.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelectionAction.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import org.libreccm.security.Role;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelector.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelector.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelector.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelector.java
index 7c4a60f6c..f6a2780c4 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelector.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelector.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.vaadin.icons.VaadinIcons;
import com.vaadin.ui.Button;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelectorDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelectorDataProvider.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelectorDataProvider.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelectorDataProvider.java
index 8559c66a3..97f6bffae 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RoleSelectorDataProvider.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RoleSelectorDataProvider.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.vaadin.cdi.ViewScoped;
import com.vaadin.data.provider.AbstractDataProvider;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolesTable.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RolesTable.java
similarity index 99%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolesTable.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/RolesTable.java
index f8eddd8a2..f5fe75f70 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolesTable.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RolesTable.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.arsdigita.ui.admin.AdminUiConstants;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolesTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/RolesTableDataProvider.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolesTableDataProvider.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/RolesTableDataProvider.java
index 7a01c53d3..e97790709 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/RolesTableDataProvider.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/RolesTableDataProvider.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.vaadin.cdi.ViewScoped;
import com.vaadin.data.provider.AbstractDataProvider;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserDetails.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserDetails.java
similarity index 99%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserDetails.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserDetails.java
index 5e0bb6280..8b240ed06 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserDetails.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserDetails.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.arsdigita.ui.admin.AdminUiConstants;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserEditor.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserEditor.java
similarity index 99%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserEditor.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserEditor.java
index 67660c1be..b378cc580 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserEditor.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserEditor.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.arsdigita.ui.admin.AdminUiConstants;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserGroupsController.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserGroupsController.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserGroupsController.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserGroupsController.java
index efc8311eb..d07c92bb8 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserGroupsController.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserGroupsController.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import org.libreccm.security.Group;
import org.libreccm.security.GroupManager;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserGroupsTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserGroupsTableDataProvider.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserGroupsTableDataProvider.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserGroupsTableDataProvider.java
index b040db87e..761b10d27 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserGroupsTableDataProvider.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserGroupsTableDataProvider.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.vaadin.cdi.ViewScoped;
import com.vaadin.data.provider.AbstractDataProvider;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserRolesController.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserRolesController.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserRolesController.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserRolesController.java
index fbedde178..247523ade 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserRolesController.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserRolesController.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import org.libreccm.security.Role;
import org.libreccm.security.RoleManager;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserRolesTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserRolesTableDataProvider.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserRolesTableDataProvider.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserRolesTableDataProvider.java
index 0449aea41..af8e3e21b 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserRolesTableDataProvider.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserRolesTableDataProvider.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.vaadin.cdi.ViewScoped;
import com.vaadin.data.provider.AbstractDataProvider;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelectionAction.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserSelectionAction.java
similarity index 95%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelectionAction.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserSelectionAction.java
index 126975e9e..3b292614d 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelectionAction.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserSelectionAction.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import org.libreccm.security.User;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelector.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserSelector.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelector.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserSelector.java
index 0d0572349..f6c2deee7 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelector.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserSelector.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.arsdigita.ui.admin.AdminUiConstants;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelectorDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UserSelectorDataProvider.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelectorDataProvider.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/UserSelectorDataProvider.java
index bb0de47c6..c84341951 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UserSelectorDataProvider.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UserSelectorDataProvider.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.vaadin.cdi.ViewScoped;
import com.vaadin.data.provider.AbstractDataProvider;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersGroupsRoles.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UsersGroupsRoles.java
similarity index 99%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersGroupsRoles.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/UsersGroupsRoles.java
index e150d5623..3494231c1 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersGroupsRoles.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UsersGroupsRoles.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.arsdigita.ui.admin.AdminUiConstants;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTable.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UsersTable.java
similarity index 99%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTable.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/UsersTable.java
index 80d366391..a1e43c445 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTable.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UsersTable.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.arsdigita.ui.admin.AdminUiConstants;
diff --git a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTableDataProvider.java b/ccm-core/src/main/java/org/libreccm/admin/ui/UsersTableDataProvider.java
similarity index 98%
rename from ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTableDataProvider.java
rename to ccm-core/src/main/java/org/libreccm/admin/ui/UsersTableDataProvider.java
index 2a0113ed4..759be9817 100644
--- a/ccm-core/src/main/java/org/libreccm/admin/ui/usersgroupsroles/UsersTableDataProvider.java
+++ b/ccm-core/src/main/java/org/libreccm/admin/ui/UsersTableDataProvider.java
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
-package org.libreccm.admin.ui.usersgroupsroles;
+package org.libreccm.admin.ui;
import com.vaadin.cdi.ViewScoped;
import com.vaadin.data.provider.AbstractDataProvider;
diff --git a/ccm-core/src/main/resources/VAADIN/themes/ccm-core/styles.css b/ccm-core/src/main/resources/VAADIN/themes/ccm-core/styles.css
index d752b8819..bb18120a2 100644
--- a/ccm-core/src/main/resources/VAADIN/themes/ccm-core/styles.css
+++ b/ccm-core/src/main/resources/VAADIN/themes/ccm-core/styles.css
@@ -892,6 +892,106 @@
* @group tree
*/
+/**
+ *
+ * @group table
+ */
+
+@-webkit-keyframes valo-grid-editor-footer-animate-in {
+ 0% {
+ margin-top: -37px;
+ }
+ }
+
+@-moz-keyframes valo-grid-editor-footer-animate-in {
+ 0% {
+ margin-top: -37px;
+ }
+ }
+
+@keyframes valo-grid-editor-footer-animate-in {
+ 0% {
+ margin-top: -37px;
+ }
+ }
+
+@-webkit-keyframes valo-grid-editor-footer-animate-in-alt {
+ 0% {
+ margin-bottom: -38px;
+ }
+ 100% {
+ margin-bottom: -1px;
+ }
+ }
+
+@-moz-keyframes valo-grid-editor-footer-animate-in-alt {
+ 0% {
+ margin-bottom: -38px;
+ }
+ 100% {
+ margin-bottom: -1px;
+ }
+ }
+
+@keyframes valo-grid-editor-footer-animate-in-alt {
+ 0% {
+ margin-bottom: -38px;
+ }
+ 100% {
+ margin-bottom: -1px;
+ }
+ }
+
+/**
+ *
+ * @group table
+ */
+
+@-webkit-keyframes valo-grid-editor-footer-animate-in {
+ 0% {
+ margin-top: -37px;
+ }
+ }
+
+@-moz-keyframes valo-grid-editor-footer-animate-in {
+ 0% {
+ margin-top: -37px;
+ }
+ }
+
+@keyframes valo-grid-editor-footer-animate-in {
+ 0% {
+ margin-top: -37px;
+ }
+ }
+
+@-webkit-keyframes valo-grid-editor-footer-animate-in-alt {
+ 0% {
+ margin-bottom: -38px;
+ }
+ 100% {
+ margin-bottom: -1px;
+ }
+ }
+
+@-moz-keyframes valo-grid-editor-footer-animate-in-alt {
+ 0% {
+ margin-bottom: -38px;
+ }
+ 100% {
+ margin-bottom: -1px;
+ }
+ }
+
+@keyframes valo-grid-editor-footer-animate-in-alt {
+ 0% {
+ margin-bottom: -38px;
+ }
+ 100% {
+ margin-bottom: -1px;
+ }
+ }
+
/**
*
*
@@ -981,7 +1081,7 @@
*/
.v-vaadin-version:after {
- content: "8.0.6";
+ content: "8.1.0";
}
.v-widget {
@@ -1676,31 +1776,6 @@ select:focus {
box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5);
}
-button {
- font: inherit;
- font-weight: 400;
- line-height: 1.55;
-}
-
-a {
- cursor: pointer;
- color: #197de1;
- text-decoration: underline;
- font-weight: inherit;
- -webkit-transition: color 140ms;
- -moz-transition: color 140ms;
- transition: color 140ms;
-}
-
-a:hover {
- color: #4396ea;
-}
-
-a.v-disabled {
- opacity: 0.5;
- filter: alpha(opacity=50) ;
-}
-
.v-disabled {
cursor: default !important;
}
@@ -1716,6 +1791,13 @@ a.v-disabled {
filter: alpha(opacity=50) ;
}
+.v-draggable {
+ -moz-user-select: none !important;
+ -ms-user-select: none !important;
+ -webkit-user-select: none !important;
+ user-select: none !important;
+}
+
.v-tooltip {
background-color: rgba(50, 50, 50, 0.9);
-webkit-box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2);
@@ -1766,6 +1848,11 @@ a.v-disabled {
color: inherit;
}
+.v-tooltip pre.v-tooltip-pre {
+ font: inherit;
+ white-space: pre-wrap;
+}
+
.v-contextmenu {
padding: 4px 4px;
border-radius: 4px;
@@ -2895,6 +2982,7 @@ a.v-disabled {
width: 37px;
line-height: 1;
padding-top: 0.12em;
+ margin-left: 9px;
}
.v-filterselect[class*="prompt"] > [class*="input"] {
@@ -3318,6 +3406,7 @@ a.v-disabled {
width: 28px;
line-height: 1;
padding-top: 0.12em;
+ margin-left: 5px;
}
.v-filterselect-tiny [class$="button"] {
@@ -3437,6 +3526,7 @@ a.v-disabled {
width: 31px;
line-height: 1;
padding-top: 0.12em;
+ margin-left: 6px;
}
.v-filterselect-compact [class$="button"], .v-filterselect-small [class$="button"] {
@@ -3561,6 +3651,7 @@ a.v-disabled {
width: 44px;
line-height: 1;
padding-top: 0.12em;
+ margin-left: 8px;
}
.v-filterselect-large [class$="button"] {
@@ -3681,6 +3772,7 @@ a.v-disabled {
width: 59px;
line-height: 1;
padding-top: 0.12em;
+ margin-left: 10px;
}
.v-filterselect-huge [class$="button"] {
@@ -4335,6 +4427,10 @@ a.v-disabled {
border-left: none;
}
+.v-grid-cell div.component-wrap {
+ width: 100%;
+}
+
.v-grid-row > td, .v-grid-editor-cells > div {
border-left: 1px solid #d4d4d4;
border-bottom: 1px solid #d4d4d4;
@@ -4879,6 +4975,76 @@ a.v-disabled {
min-width: 30px;
}
+.v-grid-row-drag-badge {
+ background-color: red;
+ color: white;
+ display: block;
+ width: 30px;
+ height: 30px;
+ border-radius: 10px;
+ line-height: 30px;
+ text-align: center;
+ float: left;
+}
+
+.v-grid-row-drag-top, .v-grid-row-drag-bottom {
+ z-index: 100;
+}
+
+.v-grid-row-drag-top:before, .v-grid-row-drag-bottom:after {
+ content: "";
+ display: block;
+ position: absolute;
+ height: 2px;
+ width: 100%;
+ background: #197de1;
+ pointer-events: none;
+ border: none;
+}
+
+.v-grid-row-drag-bottom:after {
+ bottom: -1px;
+}
+
+.v-grid-row-drag-top:before {
+ top: -1px;
+}
+
+.v-grid-row-drag-top:first-child:before {
+ top: 0;
+}
+
+.v-grid-row-drag-center:after {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 2px;
+ border: 2px solid #197de1;
+ pointer-events: none;
+}
+
+.v-grid-row-selected.v-grid-row-drag-center:after {
+ border-color: #1463b3;
+}
+
+.v-grid-row-selected.v-grid-row-drag-top:before, .v-grid-row-selected.v-grid-row-drag-bottom:after {
+ background: #1463b3;
+}
+
+.v-grid-body-drag-top:after {
+ content: "";
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ pointer-events: none;
+ border: 2px solid #197de1;
+ z-index: 100;
+}
+
.v-textfield {
-webkit-appearance: none;
-moz-appearance: none;
@@ -8004,6 +8170,13 @@ td.v-inline-datefield-calendarpanel-time .v-label {
}
.v-link a {
+ cursor: pointer;
+ color: #197de1;
+ text-decoration: underline;
+ font-weight: inherit;
+ -webkit-transition: color 140ms;
+ -moz-transition: color 140ms;
+ transition: color 140ms;
cursor: inherit;
color: inherit;
text-decoration: inherit;
@@ -8012,6 +8185,15 @@ td.v-inline-datefield-calendarpanel-time .v-label {
transition: inherit;
}
+.v-link a:hover {
+ color: #4396ea;
+}
+
+.v-link a.v-disabled {
+ opacity: 0.5;
+ filter: alpha(opacity=50) ;
+}
+
.v-link .v-icon {
cursor: inherit;
}
@@ -8515,6 +8697,2079 @@ td.v-inline-datefield-calendarpanel-time .v-label {
line-height: 1px;
}
+.v-tree8 {
+ position: relative;
+}
+
+.v-tree8-scroller {
+ position: absolute;
+ z-index: 1;
+ outline: none;
+ box-sizing: border-box;
+}
+
+.v-tree8-scroller-horizontal {
+ left: 0;
+ right: 0;
+ bottom: 0;
+ overflow-y: hidden;
+ -ms-overflow-y: hidden;
+}
+
+.v-tree8-scroller-vertical {
+ right: 0;
+ top: 0;
+ bottom: 0;
+ overflow-x: hidden;
+ -ms-overflow-x: hidden;
+}
+
+.v-tree8-tablewrapper {
+ position: absolute;
+ overflow: hidden;
+ box-sizing: border-box;
+ z-index: 5;
+}
+
+.v-tree8-tablewrapper > table {
+ border-spacing: 0;
+ table-layout: fixed;
+ width: inherit;
+}
+
+.v-tree8-header-deco, .v-tree8-footer-deco {
+ position: absolute;
+ right: 0;
+ box-sizing: border-box;
+}
+
+.v-tree8-horizontal-scrollbar-deco {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ box-sizing: border-box;
+}
+
+.v-tree8-header, .v-tree8-body, .v-tree8-footer {
+ position: absolute;
+ left: 0;
+ width: inherit;
+ z-index: 10;
+}
+
+.v-tree8-header, .v-tree8-header-deco {
+ top: 0;
+}
+
+.v-tree8-footer, .v-tree8-footer-deco {
+ bottom: 0;
+}
+
+.v-tree8-body {
+ -ms-touch-action: none;
+ touch-action: none;
+ z-index: 0;
+ top: 0;
+}
+
+.v-tree8-body .v-tree8-row {
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+.v-tree8-row {
+ display: block;
+}
+
+.v-tree8-row > td, .v-tree8-row > th {
+ background-color: white;
+}
+
+.v-tree8-row {
+ width: inherit;
+}
+
+.v-tree8-cell {
+ display: block;
+ float: left;
+ padding: 2px;
+ white-space: nowrap;
+ box-sizing: border-box;
+ overflow: hidden;
+ font-size: 16px;
+}
+
+.v-tree8-cell.frozen {
+ position: relative;
+ z-index: 1;
+}
+
+.v-tree8-spacer {
+ position: absolute;
+ display: block;
+ background-color: white;
+}
+
+.v-tree8-spacer > td {
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+}
+
+.v-tree8 {
+ outline: none;
+}
+
+.v-tree8-scroller-vertical, .v-tree8-scroller-horizontal {
+ border: 1px solid #d4d4d4;
+}
+
+.v-tree8-scroller-vertical {
+ border-left: none;
+}
+
+.v-tree8-scroller-horizontal {
+ border-top: none;
+}
+
+.v-tree8-tablewrapper {
+ border: 1px solid #d4d4d4;
+}
+
+.v-tree8 .header-drag-table {
+ border-spacing: 0;
+ position: relative;
+ table-layout: fixed;
+ width: inherit;
+}
+
+.v-tree8 .header-drag-table .v-tree8-header {
+ position: absolute;
+}
+
+.v-tree8 .header-drag-table .v-tree8-header > .v-tree8-cell {
+ border: 1px solid #d4d4d4;
+ margin-top: -10px;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+ z-index: 30000;
+}
+
+.v-tree8 .header-drag-table .v-tree8-header > .v-tree8-drop-marker {
+ background-color: #197de1;
+ position: absolute;
+ width: 3px;
+}
+
+.v-tree8-sidebar.v-contextmenu {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border-radius: 0;
+ position: absolute;
+ top: 0;
+ right: 0;
+ background-color: #fafafa;
+ border: 1px solid #d4d4d4;
+ padding: 0;
+ z-index: 5;
+}
+
+.v-tree8-sidebar.v-contextmenu.v-tree8-sidebar-popup {
+ right: auto;
+}
+
+.v-tree8-sidebar.v-contextmenu .v-tree8-sidebar-button {
+ background: transparent;
+ border: none;
+ color: inherit;
+ cursor: pointer;
+ outline: none;
+ padding: 0 4px;
+ text-align: right;
+ line-height: 1;
+}
+
+.v-tree8-sidebar.v-contextmenu .v-tree8-sidebar-button[disabled] {
+ cursor: default;
+}
+
+.v-tree8-sidebar.v-contextmenu .v-tree8-sidebar-button::-moz-focus-inner {
+ border: 0;
+}
+
+.v-tree8-sidebar.v-contextmenu .v-tree8-sidebar-button:after {
+ content: "\f0c9";
+ display: block;
+ font-family: ThemeIcons, sans-serif;
+ font-size: 14px;
+}
+
+.v-tree8-sidebar.v-contextmenu.closed {
+ border-radius: 0;
+}
+
+.v-tree8-sidebar.v-contextmenu.open .v-tree8-sidebar-button {
+ width: 100%;
+}
+
+.v-tree8-sidebar.v-contextmenu.open .v-tree8-sidebar-button:after {
+ content: "\f0c9";
+ font-size: 14px;
+ line-height: 1;
+}
+
+.v-ie .v-tree8-sidebar.v-contextmenu.open .v-tree8-sidebar-button {
+ vertical-align: middle;
+}
+
+.v-tree8-sidebar.v-contextmenu .v-tree8-sidebar-content {
+ padding: 4px 0;
+ overflow-y: auto;
+ overflow-x: hidden;
+}
+
+.v-tree8-sidebar.v-contextmenu .v-tree8-sidebar-content .gwt-MenuBar .gwt-MenuItem .column-hiding-toggle {
+ text-shadow: none;
+}
+
+.v-tree8-cell {
+ background-color: white;
+ padding: 0 18px;
+ line-height: 37px;
+ text-overflow: ellipsis;
+}
+
+.v-tree8-cell > * {
+ line-height: 1.55;
+ vertical-align: middle;
+}
+
+.v-tree8-cell > div {
+ display: inline-block;
+}
+
+.v-tree8-cell.frozen {
+ -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1);
+ box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1);
+ border-right: 1px solid #d4d4d4;
+}
+
+.v-tree8-cell.frozen + th, .v-tree8-cell.frozen + td {
+ border-left: none;
+}
+
+.v-tree8-cell div.component-wrap {
+ width: 100%;
+}
+
+.v-tree8-row > td, .v-tree8-editor-cells > div {
+ border-left: 1px solid #d4d4d4;
+ border-bottom: 1px solid #d4d4d4;
+}
+
+.v-tree8-row > td:first-child, .v-tree8-editor-cells > div:first-child {
+ border-left: none;
+}
+
+.v-tree8-editor-cells.frozen > div {
+ -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1);
+ box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1);
+ border-right: 1px solid #d4d4d4;
+ border-left: none;
+}
+
+.v-tree8-row-stripe > td {
+ background-color: #f5f5f5;
+}
+
+.v-tree8-row-selected > td {
+ background: #197de1;
+}
+
+.v-tree8-row-focused > td {
+
+}
+
+.v-tree8-header th {
+ position: relative;
+ background-color: #fafafa;
+ font-size: 14px;
+ font-weight: inherit;
+ border-left: 1px solid #d4d4d4;
+ border-bottom: 1px solid #d4d4d4;
+
+ text-align: left;
+}
+
+.v-tree8-header th:first-child {
+ border-left: none;
+}
+
+.v-tree8-header .sort-asc, .v-tree8-header .sort-desc {
+ padding-right: 35px;
+}
+
+.v-tree8-header .sort-asc:after, .v-tree8-header .sort-desc:after {
+ font-family: ThemeIcons, sans-serif;
+ content: "\f0de" " " attr(sort-order);
+ position: absolute;
+ right: 18px;
+ font-size: 12px;
+}
+
+.v-tree8-header .sort-desc:after {
+ content: "\f0dd" " " attr(sort-order);
+}
+
+.v-tree8-column-resize-handle {
+ position: absolute;
+ width: 36px;
+ right: -18px;
+ top: 0px;
+ bottom: 0px;
+ cursor: col-resize;
+ z-index: 10;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.v-tree8-column-resize-simple-indicator {
+ position: absolute;
+ width: 3px;
+ top: 0px;
+ left: 18px;
+ z-index: 9001;
+ background: #fff;
+ box-shadow: 0px 0px 5px #000;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.v-tree8-footer td {
+ background-color: #fafafa;
+ font-size: 14px;
+ font-weight: inherit;
+ border-left: 1px solid #d4d4d4;
+ border-top: 1px solid #d4d4d4;
+ border-bottom: none;
+
+}
+
+.v-tree8-footer td:first-child {
+ border-left: none;
+}
+
+.v-tree8-header .v-tree8-cell, .v-tree8-footer .v-tree8-cell {
+ overflow: visible;
+}
+
+.v-tree8-column-header-content, .v-tree8-column-footer-content {
+ width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ line-height: 37px;
+ vertical-align: baseline;
+}
+
+.v-tree8-header-deco {
+ border-top: 1px solid #d4d4d4;
+ border-right: 1px solid #d4d4d4;
+ background-color: #fafafa;
+}
+
+.v-tree8-footer-deco {
+ border-bottom: 1px solid #d4d4d4;
+ border-right: 1px solid #d4d4d4;
+ background-color: #fafafa;
+}
+
+.v-tree8-horizontal-scrollbar-deco {
+ background-color: #fafafa;
+ border: 1px solid #d4d4d4;
+ border-top: none;
+}
+
+.v-tree8-cell-focused {
+ position: relative;
+}
+
+.v-tree8-cell-focused:before {
+ content: "";
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ border: 2px solid #197de1;
+ display: none;
+ pointer-events: none;
+}
+
+.v-tree8:focus .v-tree8-cell-focused:before {
+ display: block;
+}
+
+.v-tree8.v-disabled:focus .v-tree8-cell-focused:before {
+ display: none;
+}
+
+.v-tree8-editor {
+ position: absolute;
+ z-index: 20;
+ overflow: hidden;
+ left: 0;
+ right: 0;
+ border: 1px solid #d4d4d4;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ margin-top: -1px;
+ -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 0 9px rgba(0, 0, 0, 0.2);
+}
+
+.v-tree8-editor.unbuffered .v-tree8-editor-footer {
+ width: 100%;
+}
+
+.v-tree8-editor-cells {
+ position: relative;
+ white-space: nowrap;
+}
+
+.v-tree8-editor-cells.frozen {
+ z-index: 2;
+}
+
+.v-tree8-editor-cells > div {
+ display: inline-block;
+ box-sizing: border-box;
+ vertical-align: middle;
+ background: white;
+}
+
+.v-tree8-editor-cells > div:first-child {
+ border-left: none;
+}
+
+.v-tree8-editor-cells > div > * {
+ vertical-align: middle;
+ display: inline-block;
+}
+
+.v-tree8-editor-cells > div .v-filterselect {
+ padding-left: 0;
+}
+
+.v-tree8-editor-cells > div input[type="text"], .v-tree8-editor-cells > div input[type="text"].v-filterselect-input, .v-tree8-editor-cells > div input[type="password"] {
+ padding-left: 18px;
+}
+
+.v-tree8-editor-cells > div input[type="text"]:not(.v-filterselect-input), .v-tree8-editor-cells > div input[type="password"] {
+ padding-right: 9px;
+}
+
+.v-tree8-editor-cells > div input[type="checkbox"] {
+ margin-left: 18px;
+}
+
+.v-tree8-editor-cells > div .v-textfield, .v-tree8-editor-cells > div .v-datefield, .v-tree8-editor-cells > div .v-filterselect {
+ min-width: 100%;
+ max-width: 100%;
+ min-height: 100%;
+ max-height: 100%;
+}
+
+.v-tree8-editor-cells > div .v-select, .v-tree8-editor-cells > div .v-select-select {
+ min-width: 100%;
+ max-width: 100%;
+}
+
+.v-tree8-editor-cells > div.not-editable.v-tree8-cell {
+ float: none;
+}
+
+.v-tree8-editor-cells .error::before {
+ position: absolute;
+ display: block;
+ height: 0;
+ width: 0;
+ content: "";
+ border-top: 5px solid red;
+ border-right: 5px solid transparent;
+}
+
+.v-tree8-editor-cells .error, .v-tree8-editor-cells .error > input {
+ background-color: #fee;
+}
+
+.v-tree8-editor-footer {
+ display: table;
+ height: 37px;
+ border-top: 1px solid #d4d4d4;
+ margin-top: -1px;
+ background: white;
+ padding: 0 5px;
+}
+
+.v-tree8-editor-footer + .v-tree8-editor-cells > div {
+ border-bottom: none;
+ border-top: 1px solid #d4d4d4;
+}
+
+.v-tree8-editor-footer:first-child {
+ border-top: none;
+ margin-top: 0;
+ border-bottom: 1px solid #d4d4d4;
+ margin-bottom: -1px;
+}
+
+.v-tree8-editor-message, .v-tree8-editor-buttons {
+ display: table-cell;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+.v-tree8-editor-message {
+ width: 100%;
+ position: relative;
+}
+
+.v-tree8-editor-message > div {
+ position: absolute;
+ width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ line-height: 37px;
+ top: 0;
+}
+
+.v-tree8-editor-save {
+ margin-right: 4px;
+}
+
+.v-tree8-spacer {
+ padding-left: 1px;
+}
+
+.v-tree8-spacer > td {
+ display: block;
+ padding: 0;
+ background-color: white;
+ border-top: 1px solid #eeeeee;
+ border-bottom: 1px solid #d4d4d4;
+}
+
+.v-tree8-spacer.stripe > td {
+ background-color: #f5f5f5;
+ border-top: 1px solid #e5e5e5;
+ border-bottom: 1px solid #d4d4d4;
+}
+
+.v-tree8-spacer-deco-container {
+ border-top: 1px solid transparent;
+ position: relative;
+ top: 0;
+ z-index: 5;
+}
+
+.v-tree8-spacer-deco {
+ top: 0;
+ left: 0;
+ width: 2px;
+ background-color: #197de1;
+ position: absolute;
+ height: 100%;
+ pointer-events: none;
+}
+
+.v-tree8-cell > .v-progressbar {
+ width: 100%;
+}
+
+.v-tree8 {
+ -webkit-user-select: text;
+ -moz-user-select: text;
+ -ms-user-select: text;
+ user-select: text;
+ background-color: #fafafa;
+}
+
+.v-tree8.v-disabled {
+ opacity: 0.5;
+ filter: alpha(opacity=50) ;
+}
+
+.v-tree8-header .v-tree8-cell {
+ background-color: #fafafa;
+ background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%);
+ background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%);
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05);
+}
+
+.v-tree8-header .v-tree8-cell.dragged {
+ opacity: 0.5;
+ filter: alpha(opacity=50) ;
+ -webkit-transition: opacity 0.3s ease-in-out;
+ -moz-transition: opacity 0.3s ease-in-out;
+ transition: opacity 0.3s ease-in-out;
+}
+
+.v-tree8-header .v-tree8-cell.dragged-column-header {
+ margin-top: -19px;
+}
+
+.v-tree8-footer .v-tree8-cell {
+ background-color: #fafafa;
+ background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%);
+ background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%);
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05);
+}
+
+.v-tree8-header-deco {
+ background-color: #fafafa;
+ background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%);
+ background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%);
+}
+
+.v-tree8-footer-deco, .v-tree8-horizontal-scrollbar-deco {
+ background-color: #fafafa;
+ background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%);
+ background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%);
+}
+
+.v-tree8-row-selected > .v-tree8-cell {
+ background-color: #197de1;
+ background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%);
+ background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%);
+ color: #c8dbed;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05);
+ border-color: #1d69b4;
+}
+
+.v-tree8-row-selected > .v-tree8-cell-focused:before {
+ border-color: #71b0ef;
+}
+
+.v-tree8-editor {
+ -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5);
+ box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5);
+ border-color: #197de1;
+}
+
+.v-tree8-editor-footer {
+ font-size: 14px;
+ padding: 0 6px;
+ background: #fafafa;
+ -webkit-animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards;
+ -moz-animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards;
+ animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards;
+}
+
+.v-tree8-editor-footer:first-child {
+ -webkit-animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards;
+ -moz-animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards;
+ animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards;
+}
+
+.v-tree8-editor-cells {
+ z-index: 1;
+}
+
+.v-tree8-editor-cells > div:before {
+ content: "";
+ display: inline-block;
+ height: 100%;
+ vertical-align: middle;
+}
+
+.v-tree8-editor-cells > div.not-editable.v-tree8-cell {
+ float: none;
+}
+
+.v-tree8-editor-cells > div .error::before {
+ border-top: 9px solid #ed473b;
+ border-right: 9px solid transparent;
+}
+
+.v-tree8-editor-cells > div .error, .v-tree8-editor-cells > div .error > input {
+ background-color: #fffbfb;
+}
+
+.v-tree8-editor-cells > div .v-textfield, .v-tree8-editor-cells > div .v-textfield-focus, .v-tree8-editor-cells > div .v-datefield, .v-tree8-editor-cells > div .v-datefield .v-textfield-focus, .v-tree8-editor-cells > div .v-filterselect-input, .v-tree8-editor-cells > div .v-filterselect-input:focus {
+ border: none;
+ border-radius: 0;
+ background: transparent;
+ -webkit-box-shadow: inset 0 1px 0 #f2f2f2;
+ box-shadow: inset 0 1px 0 #f2f2f2;
+}
+
+.v-tree8-editor-cells > div input[type="text"].v-datefield-textfield {
+ padding-left: 44.4px;
+}
+
+.v-tree8-editor-cells > div .v-textfield-focus, .v-tree8-editor-cells > div .v-datefield .v-textfield-focus, .v-tree8-editor-cells > div .v-filterselect-input:focus {
+ position: relative;
+}
+
+.v-tree8-editor-cells > div .v-select {
+ padding-left: 9px;
+ padding-right: 9px;
+}
+
+.v-tree8-editor-cells > div .v-checkbox {
+ margin: 0 9px 0 18px;
+}
+
+.v-tree8-editor-cells > div .v-checkbox > input[type="checkbox"] {
+ margin-left: 0;
+}
+
+.v-tree8-editor-cells > div .v-checkbox > label {
+ white-space: nowrap;
+}
+
+.v-tree8-editor-message > div:before {
+ display: inline-block;
+ color: #ed473b;
+ font-weight: 600;
+ width: 19px;
+ text-align: center;
+ content: "!";
+}
+
+.v-tree8-editor-save, .v-tree8-editor-cancel {
+ cursor: pointer;
+ color: #197de1;
+ text-decoration: underline;
+ font-weight: inherit;
+ -webkit-transition: color 140ms;
+ -moz-transition: color 140ms;
+ transition: color 140ms;
+ font-weight: 400;
+ text-decoration: none;
+ border: none;
+ background: transparent;
+ padding: 6px 6px;
+ margin: 0;
+ outline: none;
+}
+
+.v-tree8-editor-save:hover, .v-tree8-editor-cancel:hover {
+ color: #4396ea;
+}
+
+.v-tree8-editor-save.v-disabled, .v-tree8-editor-cancel.v-disabled {
+ opacity: 0.5;
+ filter: alpha(opacity=50) ;
+}
+
+.v-tree8-spacer {
+ margin-top: -1px;
+}
+
+.v-tree8-sidebar.v-contextmenu.open .v-tree8-sidebar-content {
+ margin: 0 0 2px;
+ padding: 4px 4px 2px;
+ overflow-y: auto;
+ overflow-x: hidden;
+}
+
+.v-tree8-sidebar.v-contextmenu.closed {
+ background-color: #fafafa;
+ background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%);
+ background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%);
+}
+
+.v-tree8-scroller::-webkit-scrollbar {
+ border: none;
+}
+
+.v-tree8-scroller::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ border: 4px solid transparent;
+ background: rgba(0, 0, 0, 0.3);
+ -webkit-background-clip: content-box;
+ background-clip: content-box;
+}
+
+.v-tree8-scroller-vertical::-webkit-scrollbar-thumb {
+ min-height: 30px;
+}
+
+.v-tree8-scroller-horizontal::-webkit-scrollbar-thumb {
+ min-width: 30px;
+}
+
+.v-tree8-row-drag-badge {
+ background-color: red;
+ color: white;
+ display: block;
+ width: 30px;
+ height: 30px;
+ border-radius: 10px;
+ line-height: 30px;
+ text-align: center;
+ float: left;
+}
+
+.v-tree8-row-drag-top, .v-tree8-row-drag-bottom {
+ z-index: 100;
+}
+
+.v-tree8-row-drag-top:before, .v-tree8-row-drag-bottom:after {
+ content: "";
+ display: block;
+ position: absolute;
+ height: 2px;
+ width: 100%;
+ background: #197de1;
+ pointer-events: none;
+ border: none;
+}
+
+.v-tree8-row-drag-bottom:after {
+ bottom: -1px;
+}
+
+.v-tree8-row-drag-top:before {
+ top: -1px;
+}
+
+.v-tree8-row-drag-top:first-child:before {
+ top: 0;
+}
+
+.v-tree8-row-drag-center:after {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 2px;
+ border: 2px solid #197de1;
+ pointer-events: none;
+}
+
+.v-tree8-row-selected.v-tree8-row-drag-center:after {
+ border-color: #1463b3;
+}
+
+.v-tree8-row-selected.v-tree8-row-drag-top:before, .v-tree8-row-selected.v-tree8-row-drag-bottom:after {
+ background: #1463b3;
+}
+
+.v-tree8-body-drag-top:after {
+ content: "";
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ pointer-events: none;
+ border: 2px solid #197de1;
+ z-index: 100;
+}
+
+.v-tree8-expander {
+ display: inline-block;
+ vertical-align: top;
+}
+
+.v-tree8-expander::before {
+ display: inline-block;
+ width: 1.5em;
+ text-align: center;
+ content: "";
+}
+
+.v-tree8-expander.expanded::before {
+ content: "\f0d7";
+ font-family: ThemeIcons;
+}
+
+.v-tree8-expander.collapsed::before {
+ content: "\f0da";
+ font-family: ThemeIcons;
+}
+
+.v-tree8-expander.collapse-disabled::before {
+ opacity: 0.5;
+ filter: alpha(opacity=50) ;
+ cursor: default;
+}
+
+.v-tree8-node.depth-0 {
+ padding-left: 0em;
+}
+
+.v-tree8-node.depth-1 {
+ padding-left: 1em;
+}
+
+.v-tree8-node.depth-2 {
+ padding-left: 2em;
+}
+
+.v-tree8-node.depth-3 {
+ padding-left: 3em;
+}
+
+.v-tree8-node.depth-4 {
+ padding-left: 4em;
+}
+
+.v-tree8-node.depth-5 {
+ padding-left: 5em;
+}
+
+.v-tree8-node.depth-6 {
+ padding-left: 6em;
+}
+
+.v-tree8-node.depth-7 {
+ padding-left: 7em;
+}
+
+.v-tree8-node.depth-8 {
+ padding-left: 8em;
+}
+
+.v-tree8-node.depth-9 {
+ padding-left: 9em;
+}
+
+.v-tree8-node.depth-10 {
+ padding-left: 10em;
+}
+
+.v-tree8-node.depth-11 {
+ padding-left: 11em;
+}
+
+.v-tree8-node.depth-12 {
+ padding-left: 12em;
+}
+
+.v-tree8-node.depth-13 {
+ padding-left: 13em;
+}
+
+.v-tree8-node.depth-14 {
+ padding-left: 14em;
+}
+
+.v-tree8-node.depth-15 {
+ padding-left: 15em;
+}
+
+.v-tree8-cell-content {
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.v-tree8-row-focused::before {
+ content: "";
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ border: 2px solid #197de1;
+ display: none;
+ pointer-events: none;
+}
+
+.v-tree8-cell-focused {
+ position: static;
+}
+
+.v-tree8-cell-focused::before {
+ display: none;
+}
+
+.v-tree8:focus .v-tree8-row-focused::before {
+ display: block;
+}
+
+.v-tree8.v-disabled:focus .v-tree8-row-focused::before {
+ display: none;
+}
+
+.v-tree8:focus .v-tree8-cell-focused::before {
+ display: none;
+}
+
+.v-tree8 {
+ background-color: transparent;
+}
+
+.v-tree8-row > td {
+ background-color: transparent;
+ border: 0;
+ line-height: 28px;
+}
+
+.v-tree8-row > td > * {
+ vertical-align: baseline;
+}
+
+.v-tree8-tablewrapper {
+ background-color: transparent;
+ border: none;
+}
+
+.v-tree8-row::before {
+ content: "";
+ display: none;
+ position: absolute;
+ top: 0;
+ left: 0;
+ box-sizing: border-box;
+ width: 100%;
+ height: 100%;
+ border-radius: 4px;
+ pointer-events: none;
+ border-width: 1px;
+}
+
+.v-tree8-cell {
+ position: relative;
+}
+
+.v-tree8-row-selected > .v-tree8-cell {
+ background: transparent;
+}
+
+.v-tree8-row-selected::before {
+ display: block;
+ background-color: #197de1;
+ background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%);
+ background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%);
+}
+
+.v-tree8:focus .v-tree8-row-selected.v-tree8-row-focused::before {
+ border-color: transparent;
+ box-shadow: inset 0 0 0 1px #c8dbed;
+}
+
+.v-treegrid {
+ position: relative;
+}
+
+.v-treegrid-scroller {
+ position: absolute;
+ z-index: 1;
+ outline: none;
+ box-sizing: border-box;
+}
+
+.v-treegrid-scroller-horizontal {
+ left: 0;
+ right: 0;
+ bottom: 0;
+ overflow-y: hidden;
+ -ms-overflow-y: hidden;
+}
+
+.v-treegrid-scroller-vertical {
+ right: 0;
+ top: 0;
+ bottom: 0;
+ overflow-x: hidden;
+ -ms-overflow-x: hidden;
+}
+
+.v-treegrid-tablewrapper {
+ position: absolute;
+ overflow: hidden;
+ box-sizing: border-box;
+ z-index: 5;
+}
+
+.v-treegrid-tablewrapper > table {
+ border-spacing: 0;
+ table-layout: fixed;
+ width: inherit;
+}
+
+.v-treegrid-header-deco, .v-treegrid-footer-deco {
+ position: absolute;
+ right: 0;
+ box-sizing: border-box;
+}
+
+.v-treegrid-horizontal-scrollbar-deco {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ box-sizing: border-box;
+}
+
+.v-treegrid-header, .v-treegrid-body, .v-treegrid-footer {
+ position: absolute;
+ left: 0;
+ width: inherit;
+ z-index: 10;
+}
+
+.v-treegrid-header, .v-treegrid-header-deco {
+ top: 0;
+}
+
+.v-treegrid-footer, .v-treegrid-footer-deco {
+ bottom: 0;
+}
+
+.v-treegrid-body {
+ -ms-touch-action: none;
+ touch-action: none;
+ z-index: 0;
+ top: 0;
+}
+
+.v-treegrid-body .v-treegrid-row {
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+.v-treegrid-row {
+ display: block;
+}
+
+.v-treegrid-row > td, .v-treegrid-row > th {
+ background-color: white;
+}
+
+.v-treegrid-row {
+ width: inherit;
+}
+
+.v-treegrid-cell {
+ display: block;
+ float: left;
+ padding: 2px;
+ white-space: nowrap;
+ box-sizing: border-box;
+ overflow: hidden;
+ font-size: 16px;
+}
+
+.v-treegrid-cell.frozen {
+ position: relative;
+ z-index: 1;
+}
+
+.v-treegrid-spacer {
+ position: absolute;
+ display: block;
+ background-color: white;
+}
+
+.v-treegrid-spacer > td {
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+}
+
+.v-treegrid {
+ outline: none;
+}
+
+.v-treegrid-scroller-vertical, .v-treegrid-scroller-horizontal {
+ border: 1px solid #d4d4d4;
+}
+
+.v-treegrid-scroller-vertical {
+ border-left: none;
+}
+
+.v-treegrid-scroller-horizontal {
+ border-top: none;
+}
+
+.v-treegrid-tablewrapper {
+ border: 1px solid #d4d4d4;
+}
+
+.v-treegrid .header-drag-table {
+ border-spacing: 0;
+ position: relative;
+ table-layout: fixed;
+ width: inherit;
+}
+
+.v-treegrid .header-drag-table .v-treegrid-header {
+ position: absolute;
+}
+
+.v-treegrid .header-drag-table .v-treegrid-header > .v-treegrid-cell {
+ border: 1px solid #d4d4d4;
+ margin-top: -10px;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+ z-index: 30000;
+}
+
+.v-treegrid .header-drag-table .v-treegrid-header > .v-treegrid-drop-marker {
+ background-color: #197de1;
+ position: absolute;
+ width: 3px;
+}
+
+.v-treegrid-sidebar.v-contextmenu {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border-radius: 0;
+ position: absolute;
+ top: 0;
+ right: 0;
+ background-color: #fafafa;
+ border: 1px solid #d4d4d4;
+ padding: 0;
+ z-index: 5;
+}
+
+.v-treegrid-sidebar.v-contextmenu.v-treegrid-sidebar-popup {
+ right: auto;
+}
+
+.v-treegrid-sidebar.v-contextmenu .v-treegrid-sidebar-button {
+ background: transparent;
+ border: none;
+ color: inherit;
+ cursor: pointer;
+ outline: none;
+ padding: 0 4px;
+ text-align: right;
+ line-height: 1;
+}
+
+.v-treegrid-sidebar.v-contextmenu .v-treegrid-sidebar-button[disabled] {
+ cursor: default;
+}
+
+.v-treegrid-sidebar.v-contextmenu .v-treegrid-sidebar-button::-moz-focus-inner {
+ border: 0;
+}
+
+.v-treegrid-sidebar.v-contextmenu .v-treegrid-sidebar-button:after {
+ content: "\f0c9";
+ display: block;
+ font-family: ThemeIcons, sans-serif;
+ font-size: 14px;
+}
+
+.v-treegrid-sidebar.v-contextmenu.closed {
+ border-radius: 0;
+}
+
+.v-treegrid-sidebar.v-contextmenu.open .v-treegrid-sidebar-button {
+ width: 100%;
+}
+
+.v-treegrid-sidebar.v-contextmenu.open .v-treegrid-sidebar-button:after {
+ content: "\f0c9";
+ font-size: 14px;
+ line-height: 1;
+}
+
+.v-ie .v-treegrid-sidebar.v-contextmenu.open .v-treegrid-sidebar-button {
+ vertical-align: middle;
+}
+
+.v-treegrid-sidebar.v-contextmenu .v-treegrid-sidebar-content {
+ padding: 4px 0;
+ overflow-y: auto;
+ overflow-x: hidden;
+}
+
+.v-treegrid-sidebar.v-contextmenu .v-treegrid-sidebar-content .gwt-MenuBar .gwt-MenuItem .column-hiding-toggle {
+ text-shadow: none;
+}
+
+.v-treegrid-cell {
+ background-color: white;
+ padding: 0 18px;
+ line-height: 37px;
+ text-overflow: ellipsis;
+}
+
+.v-treegrid-cell > * {
+ line-height: 1.55;
+ vertical-align: middle;
+}
+
+.v-treegrid-cell > div {
+ display: inline-block;
+}
+
+.v-treegrid-cell.frozen {
+ -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1);
+ box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1);
+ border-right: 1px solid #d4d4d4;
+}
+
+.v-treegrid-cell.frozen + th, .v-treegrid-cell.frozen + td {
+ border-left: none;
+}
+
+.v-treegrid-cell div.component-wrap {
+ width: 100%;
+}
+
+.v-treegrid-row > td, .v-treegrid-editor-cells > div {
+ border-left: 1px solid #d4d4d4;
+ border-bottom: 1px solid #d4d4d4;
+}
+
+.v-treegrid-row > td:first-child, .v-treegrid-editor-cells > div:first-child {
+ border-left: none;
+}
+
+.v-treegrid-editor-cells.frozen > div {
+ -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1);
+ box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1);
+ border-right: 1px solid #d4d4d4;
+ border-left: none;
+}
+
+.v-treegrid-row-stripe > td {
+ background-color: #f5f5f5;
+}
+
+.v-treegrid-row-selected > td {
+ background: #197de1;
+}
+
+.v-treegrid-row-focused > td {
+
+}
+
+.v-treegrid-header th {
+ position: relative;
+ background-color: #fafafa;
+ font-size: 14px;
+ font-weight: inherit;
+ border-left: 1px solid #d4d4d4;
+ border-bottom: 1px solid #d4d4d4;
+
+ text-align: left;
+}
+
+.v-treegrid-header th:first-child {
+ border-left: none;
+}
+
+.v-treegrid-header .sort-asc, .v-treegrid-header .sort-desc {
+ padding-right: 35px;
+}
+
+.v-treegrid-header .sort-asc:after, .v-treegrid-header .sort-desc:after {
+ font-family: ThemeIcons, sans-serif;
+ content: "\f0de" " " attr(sort-order);
+ position: absolute;
+ right: 18px;
+ font-size: 12px;
+}
+
+.v-treegrid-header .sort-desc:after {
+ content: "\f0dd" " " attr(sort-order);
+}
+
+.v-treegrid-column-resize-handle {
+ position: absolute;
+ width: 36px;
+ right: -18px;
+ top: 0px;
+ bottom: 0px;
+ cursor: col-resize;
+ z-index: 10;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.v-treegrid-column-resize-simple-indicator {
+ position: absolute;
+ width: 3px;
+ top: 0px;
+ left: 18px;
+ z-index: 9001;
+ background: #fff;
+ box-shadow: 0px 0px 5px #000;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.v-treegrid-footer td {
+ background-color: #fafafa;
+ font-size: 14px;
+ font-weight: inherit;
+ border-left: 1px solid #d4d4d4;
+ border-top: 1px solid #d4d4d4;
+ border-bottom: none;
+
+}
+
+.v-treegrid-footer td:first-child {
+ border-left: none;
+}
+
+.v-treegrid-header .v-treegrid-cell, .v-treegrid-footer .v-treegrid-cell {
+ overflow: visible;
+}
+
+.v-treegrid-column-header-content, .v-treegrid-column-footer-content {
+ width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ line-height: 37px;
+ vertical-align: baseline;
+}
+
+.v-treegrid-header-deco {
+ border-top: 1px solid #d4d4d4;
+ border-right: 1px solid #d4d4d4;
+ background-color: #fafafa;
+}
+
+.v-treegrid-footer-deco {
+ border-bottom: 1px solid #d4d4d4;
+ border-right: 1px solid #d4d4d4;
+ background-color: #fafafa;
+}
+
+.v-treegrid-horizontal-scrollbar-deco {
+ background-color: #fafafa;
+ border: 1px solid #d4d4d4;
+ border-top: none;
+}
+
+.v-treegrid-cell-focused {
+ position: relative;
+}
+
+.v-treegrid-cell-focused:before {
+ content: "";
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ border: 2px solid #197de1;
+ display: none;
+ pointer-events: none;
+}
+
+.v-treegrid:focus .v-treegrid-cell-focused:before {
+ display: block;
+}
+
+.v-treegrid.v-disabled:focus .v-treegrid-cell-focused:before {
+ display: none;
+}
+
+.v-treegrid-editor {
+ position: absolute;
+ z-index: 20;
+ overflow: hidden;
+ left: 0;
+ right: 0;
+ border: 1px solid #d4d4d4;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ margin-top: -1px;
+ -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 0 9px rgba(0, 0, 0, 0.2);
+}
+
+.v-treegrid-editor.unbuffered .v-treegrid-editor-footer {
+ width: 100%;
+}
+
+.v-treegrid-editor-cells {
+ position: relative;
+ white-space: nowrap;
+}
+
+.v-treegrid-editor-cells.frozen {
+ z-index: 2;
+}
+
+.v-treegrid-editor-cells > div {
+ display: inline-block;
+ box-sizing: border-box;
+ vertical-align: middle;
+ background: white;
+}
+
+.v-treegrid-editor-cells > div:first-child {
+ border-left: none;
+}
+
+.v-treegrid-editor-cells > div > * {
+ vertical-align: middle;
+ display: inline-block;
+}
+
+.v-treegrid-editor-cells > div .v-filterselect {
+ padding-left: 0;
+}
+
+.v-treegrid-editor-cells > div input[type="text"], .v-treegrid-editor-cells > div input[type="text"].v-filterselect-input, .v-treegrid-editor-cells > div input[type="password"] {
+ padding-left: 18px;
+}
+
+.v-treegrid-editor-cells > div input[type="text"]:not(.v-filterselect-input), .v-treegrid-editor-cells > div input[type="password"] {
+ padding-right: 9px;
+}
+
+.v-treegrid-editor-cells > div input[type="checkbox"] {
+ margin-left: 18px;
+}
+
+.v-treegrid-editor-cells > div .v-textfield, .v-treegrid-editor-cells > div .v-datefield, .v-treegrid-editor-cells > div .v-filterselect {
+ min-width: 100%;
+ max-width: 100%;
+ min-height: 100%;
+ max-height: 100%;
+}
+
+.v-treegrid-editor-cells > div .v-select, .v-treegrid-editor-cells > div .v-select-select {
+ min-width: 100%;
+ max-width: 100%;
+}
+
+.v-treegrid-editor-cells > div.not-editable.v-treegrid-cell {
+ float: none;
+}
+
+.v-treegrid-editor-cells .error::before {
+ position: absolute;
+ display: block;
+ height: 0;
+ width: 0;
+ content: "";
+ border-top: 5px solid red;
+ border-right: 5px solid transparent;
+}
+
+.v-treegrid-editor-cells .error, .v-treegrid-editor-cells .error > input {
+ background-color: #fee;
+}
+
+.v-treegrid-editor-footer {
+ display: table;
+ height: 37px;
+ border-top: 1px solid #d4d4d4;
+ margin-top: -1px;
+ background: white;
+ padding: 0 5px;
+}
+
+.v-treegrid-editor-footer + .v-treegrid-editor-cells > div {
+ border-bottom: none;
+ border-top: 1px solid #d4d4d4;
+}
+
+.v-treegrid-editor-footer:first-child {
+ border-top: none;
+ margin-top: 0;
+ border-bottom: 1px solid #d4d4d4;
+ margin-bottom: -1px;
+}
+
+.v-treegrid-editor-message, .v-treegrid-editor-buttons {
+ display: table-cell;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+.v-treegrid-editor-message {
+ width: 100%;
+ position: relative;
+}
+
+.v-treegrid-editor-message > div {
+ position: absolute;
+ width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ line-height: 37px;
+ top: 0;
+}
+
+.v-treegrid-editor-save {
+ margin-right: 4px;
+}
+
+.v-treegrid-spacer {
+ padding-left: 1px;
+}
+
+.v-treegrid-spacer > td {
+ display: block;
+ padding: 0;
+ background-color: white;
+ border-top: 1px solid #eeeeee;
+ border-bottom: 1px solid #d4d4d4;
+}
+
+.v-treegrid-spacer.stripe > td {
+ background-color: #f5f5f5;
+ border-top: 1px solid #e5e5e5;
+ border-bottom: 1px solid #d4d4d4;
+}
+
+.v-treegrid-spacer-deco-container {
+ border-top: 1px solid transparent;
+ position: relative;
+ top: 0;
+ z-index: 5;
+}
+
+.v-treegrid-spacer-deco {
+ top: 0;
+ left: 0;
+ width: 2px;
+ background-color: #197de1;
+ position: absolute;
+ height: 100%;
+ pointer-events: none;
+}
+
+.v-treegrid-cell > .v-progressbar {
+ width: 100%;
+}
+
+.v-treegrid {
+ -webkit-user-select: text;
+ -moz-user-select: text;
+ -ms-user-select: text;
+ user-select: text;
+ background-color: #fafafa;
+}
+
+.v-treegrid.v-disabled {
+ opacity: 0.5;
+ filter: alpha(opacity=50) ;
+}
+
+.v-treegrid-header .v-treegrid-cell {
+ background-color: #fafafa;
+ background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%);
+ background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%);
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05);
+}
+
+.v-treegrid-header .v-treegrid-cell.dragged {
+ opacity: 0.5;
+ filter: alpha(opacity=50) ;
+ -webkit-transition: opacity 0.3s ease-in-out;
+ -moz-transition: opacity 0.3s ease-in-out;
+ transition: opacity 0.3s ease-in-out;
+}
+
+.v-treegrid-header .v-treegrid-cell.dragged-column-header {
+ margin-top: -19px;
+}
+
+.v-treegrid-footer .v-treegrid-cell {
+ background-color: #fafafa;
+ background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%);
+ background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%);
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.05);
+}
+
+.v-treegrid-header-deco {
+ background-color: #fafafa;
+ background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%);
+ background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%);
+}
+
+.v-treegrid-footer-deco, .v-treegrid-horizontal-scrollbar-deco {
+ background-color: #fafafa;
+ background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%);
+ background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%);
+}
+
+.v-treegrid-row-selected > .v-treegrid-cell {
+ background-color: #197de1;
+ background-image: -webkit-linear-gradient(top, #1b87e3 2%, #166ed5 98%);
+ background-image: linear-gradient(to bottom,#1b87e3 2%, #166ed5 98%);
+ color: #c8dbed;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.05);
+ border-color: #1d69b4;
+}
+
+.v-treegrid-row-selected > .v-treegrid-cell-focused:before {
+ border-color: #71b0ef;
+}
+
+.v-treegrid-editor {
+ -webkit-box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5);
+ box-shadow: 0 0 0 2px rgba(25, 125, 225, 0.5);
+ border-color: #197de1;
+}
+
+.v-treegrid-editor-footer {
+ font-size: 14px;
+ padding: 0 6px;
+ background: #fafafa;
+ -webkit-animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards;
+ -moz-animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards;
+ animation: valo-grid-editor-footer-animate-in 200ms 120ms backwards;
+}
+
+.v-treegrid-editor-footer:first-child {
+ -webkit-animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards;
+ -moz-animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards;
+ animation: valo-grid-editor-footer-animate-in-alt 200ms 120ms backwards;
+}
+
+.v-treegrid-editor-cells {
+ z-index: 1;
+}
+
+.v-treegrid-editor-cells > div:before {
+ content: "";
+ display: inline-block;
+ height: 100%;
+ vertical-align: middle;
+}
+
+.v-treegrid-editor-cells > div.not-editable.v-treegrid-cell {
+ float: none;
+}
+
+.v-treegrid-editor-cells > div .error::before {
+ border-top: 9px solid #ed473b;
+ border-right: 9px solid transparent;
+}
+
+.v-treegrid-editor-cells > div .error, .v-treegrid-editor-cells > div .error > input {
+ background-color: #fffbfb;
+}
+
+.v-treegrid-editor-cells > div .v-textfield, .v-treegrid-editor-cells > div .v-textfield-focus, .v-treegrid-editor-cells > div .v-datefield, .v-treegrid-editor-cells > div .v-datefield .v-textfield-focus, .v-treegrid-editor-cells > div .v-filterselect-input, .v-treegrid-editor-cells > div .v-filterselect-input:focus {
+ border: none;
+ border-radius: 0;
+ background: transparent;
+ -webkit-box-shadow: inset 0 1px 0 #f2f2f2;
+ box-shadow: inset 0 1px 0 #f2f2f2;
+}
+
+.v-treegrid-editor-cells > div input[type="text"].v-datefield-textfield {
+ padding-left: 44.4px;
+}
+
+.v-treegrid-editor-cells > div .v-textfield-focus, .v-treegrid-editor-cells > div .v-datefield .v-textfield-focus, .v-treegrid-editor-cells > div .v-filterselect-input:focus {
+ position: relative;
+}
+
+.v-treegrid-editor-cells > div .v-select {
+ padding-left: 9px;
+ padding-right: 9px;
+}
+
+.v-treegrid-editor-cells > div .v-checkbox {
+ margin: 0 9px 0 18px;
+}
+
+.v-treegrid-editor-cells > div .v-checkbox > input[type="checkbox"] {
+ margin-left: 0;
+}
+
+.v-treegrid-editor-cells > div .v-checkbox > label {
+ white-space: nowrap;
+}
+
+.v-treegrid-editor-message > div:before {
+ display: inline-block;
+ color: #ed473b;
+ font-weight: 600;
+ width: 19px;
+ text-align: center;
+ content: "!";
+}
+
+.v-treegrid-editor-save, .v-treegrid-editor-cancel {
+ cursor: pointer;
+ color: #197de1;
+ text-decoration: underline;
+ font-weight: inherit;
+ -webkit-transition: color 140ms;
+ -moz-transition: color 140ms;
+ transition: color 140ms;
+ font-weight: 400;
+ text-decoration: none;
+ border: none;
+ background: transparent;
+ padding: 6px 6px;
+ margin: 0;
+ outline: none;
+}
+
+.v-treegrid-editor-save:hover, .v-treegrid-editor-cancel:hover {
+ color: #4396ea;
+}
+
+.v-treegrid-editor-save.v-disabled, .v-treegrid-editor-cancel.v-disabled {
+ opacity: 0.5;
+ filter: alpha(opacity=50) ;
+}
+
+.v-treegrid-spacer {
+ margin-top: -1px;
+}
+
+.v-treegrid-sidebar.v-contextmenu.open .v-treegrid-sidebar-content {
+ margin: 0 0 2px;
+ padding: 4px 4px 2px;
+ overflow-y: auto;
+ overflow-x: hidden;
+}
+
+.v-treegrid-sidebar.v-contextmenu.closed {
+ background-color: #fafafa;
+ background-image: -webkit-linear-gradient(top, #fafafa 2%, #efefef 98%);
+ background-image: linear-gradient(to bottom,#fafafa 2%, #efefef 98%);
+}
+
+.v-treegrid-scroller::-webkit-scrollbar {
+ border: none;
+}
+
+.v-treegrid-scroller::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ border: 4px solid transparent;
+ background: rgba(0, 0, 0, 0.3);
+ -webkit-background-clip: content-box;
+ background-clip: content-box;
+}
+
+.v-treegrid-scroller-vertical::-webkit-scrollbar-thumb {
+ min-height: 30px;
+}
+
+.v-treegrid-scroller-horizontal::-webkit-scrollbar-thumb {
+ min-width: 30px;
+}
+
+.v-treegrid-row-drag-badge {
+ background-color: red;
+ color: white;
+ display: block;
+ width: 30px;
+ height: 30px;
+ border-radius: 10px;
+ line-height: 30px;
+ text-align: center;
+ float: left;
+}
+
+.v-treegrid-row-drag-top, .v-treegrid-row-drag-bottom {
+ z-index: 100;
+}
+
+.v-treegrid-row-drag-top:before, .v-treegrid-row-drag-bottom:after {
+ content: "";
+ display: block;
+ position: absolute;
+ height: 2px;
+ width: 100%;
+ background: #197de1;
+ pointer-events: none;
+ border: none;
+}
+
+.v-treegrid-row-drag-bottom:after {
+ bottom: -1px;
+}
+
+.v-treegrid-row-drag-top:before {
+ top: -1px;
+}
+
+.v-treegrid-row-drag-top:first-child:before {
+ top: 0;
+}
+
+.v-treegrid-row-drag-center:after {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 2px;
+ border: 2px solid #197de1;
+ pointer-events: none;
+}
+
+.v-treegrid-row-selected.v-treegrid-row-drag-center:after {
+ border-color: #1463b3;
+}
+
+.v-treegrid-row-selected.v-treegrid-row-drag-top:before, .v-treegrid-row-selected.v-treegrid-row-drag-bottom:after {
+ background: #1463b3;
+}
+
+.v-treegrid-body-drag-top:after {
+ content: "";
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ pointer-events: none;
+ border: 2px solid #197de1;
+ z-index: 100;
+}
+
+.v-treegrid-expander {
+ display: inline-block;
+ vertical-align: top;
+}
+
+.v-treegrid-expander::before {
+ display: inline-block;
+ width: 1.5em;
+ text-align: center;
+ content: "";
+}
+
+.v-treegrid-expander.expanded::before {
+ content: "\f0d7";
+ font-family: ThemeIcons;
+}
+
+.v-treegrid-expander.collapsed::before {
+ content: "\f0da";
+ font-family: ThemeIcons;
+}
+
+.v-treegrid-expander.collapse-disabled::before {
+ opacity: 0.5;
+ filter: alpha(opacity=50) ;
+ cursor: default;
+}
+
+.v-treegrid-node.depth-0 {
+ padding-left: 0em;
+}
+
+.v-treegrid-node.depth-1 {
+ padding-left: 1em;
+}
+
+.v-treegrid-node.depth-2 {
+ padding-left: 2em;
+}
+
+.v-treegrid-node.depth-3 {
+ padding-left: 3em;
+}
+
+.v-treegrid-node.depth-4 {
+ padding-left: 4em;
+}
+
+.v-treegrid-node.depth-5 {
+ padding-left: 5em;
+}
+
+.v-treegrid-node.depth-6 {
+ padding-left: 6em;
+}
+
+.v-treegrid-node.depth-7 {
+ padding-left: 7em;
+}
+
+.v-treegrid-node.depth-8 {
+ padding-left: 8em;
+}
+
+.v-treegrid-node.depth-9 {
+ padding-left: 9em;
+}
+
+.v-treegrid-node.depth-10 {
+ padding-left: 10em;
+}
+
+.v-treegrid-node.depth-11 {
+ padding-left: 11em;
+}
+
+.v-treegrid-node.depth-12 {
+ padding-left: 12em;
+}
+
+.v-treegrid-node.depth-13 {
+ padding-left: 13em;
+}
+
+.v-treegrid-node.depth-14 {
+ padding-left: 14em;
+}
+
+.v-treegrid-node.depth-15 {
+ padding-left: 15em;
+}
+
+.v-treegrid-cell-content {
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.v-treegrid-row-focused::before {
+ content: "";
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ border: 2px solid #197de1;
+ display: none;
+ pointer-events: none;
+}
+
+.v-treegrid-cell-focused {
+ position: static;
+}
+
+.v-treegrid-cell-focused::before {
+ display: none;
+}
+
+.v-treegrid:focus .v-treegrid-row-focused::before {
+ display: block;
+}
+
+.v-treegrid.v-disabled:focus .v-treegrid-row-focused::before {
+ display: none;
+}
+
+.v-treegrid:focus .v-treegrid-cell-focused::before {
+ display: none;
+}
+
.v-table {
position: relative;
background: #fafafa;
@@ -11173,6 +13428,12 @@ h1.no-margin, .v-label-h1.no-margin, h2.no-margin, .v-label-h2.no-margin, h3.no-
content: none;
}
+button {
+ font: inherit;
+ font-weight: 400;
+ line-height: 1.55;
+}
+
.v-nativebutton {
-webkit-touch-callout: none;
}
diff --git a/pom.xml b/pom.xml
index 059843651..1aeffeaf5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -255,7 +255,7 @@
com.vaadin
vaadin-maven-plugin
- 8.0.6
+ 8.1.0
@@ -401,26 +401,6 @@
-
- com.vaadin
- vaadin-compatibility-client-compiled
- 8.0.6
-
-
- com.vaadin
- vaadin-compatibility-server
- 8.0.6
-
-
- com.vaadin
- vaadin-compatibility-shared
- 8.0.6
-
-
- com.vaadin
- vaadin-compatibility-themes
- 8.0.6
-
com.vaadin
vaadin-cdi
@@ -429,12 +409,12 @@
com.vaadin
vaadin-client-compiled
- 8.0.6
+ 8.1.0
com.vaadin
vaadin-themes
- 8.0.6
+ 8.1.0