Several improvments for the ImageBrowser and image lists
git-svn-id: https://svn.libreccm.org/ccm/trunk@3436 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
d33f690dda
commit
7b2693721b
|
|
@ -142,22 +142,30 @@ public class ImageStepDisplayTable extends Table {
|
||||||
|
|
||||||
setModelBuilder(new ImageTableModelBuilder(imageStep));
|
setModelBuilder(new ImageTableModelBuilder(imageStep));
|
||||||
|
|
||||||
columnModel.get(TABLE_COL_INDEX_THUMBNAIL).setCellRenderer(new ThumbnailCellRenderer());
|
columnModel.get(TABLE_COL_INDEX_THUMBNAIL).setCellRenderer(
|
||||||
columnModel.get(TABLE_COL_INDEX_PROPS).setCellRenderer(new PropertiesCellRenderer());
|
new ThumbnailCellRenderer());
|
||||||
|
columnModel.get(TABLE_COL_INDEX_PROPS).setCellRenderer(
|
||||||
|
new PropertiesCellRenderer());
|
||||||
// columnModel.get(TABLE_COL_INDEX_NAME).setCellRenderer(new NameCellRenderer());
|
// columnModel.get(TABLE_COL_INDEX_NAME).setCellRenderer(new NameCellRenderer());
|
||||||
// columnModel.get(TABLE_COL_INDEX_DIMENSIONS).setCellRenderer(new DimensionsCellRenderer());
|
// columnModel.get(TABLE_COL_INDEX_DIMENSIONS).setCellRenderer(new DimensionsCellRenderer());
|
||||||
// columnModel.get(TABLE_COL_INDEX_TYPE).setCellRenderer(new TypeCellRenderer());
|
// columnModel.get(TABLE_COL_INDEX_TYPE).setCellRenderer(new TypeCellRenderer());
|
||||||
columnModel.get(TABLE_COL_INDEX_CAPTION).setCellRenderer(new CaptionCellRenderer());
|
columnModel.get(TABLE_COL_INDEX_CAPTION).setCellRenderer(
|
||||||
columnModel.get(TABLE_COL_INDEX_EDIT).setCellRenderer(new EditCellRenderer());
|
new CaptionCellRenderer());
|
||||||
columnModel.get(TABLE_COL_INDEX_UP).setCellRenderer(new UpCellRenderer());
|
columnModel.get(TABLE_COL_INDEX_EDIT).setCellRenderer(
|
||||||
columnModel.get(TABLE_COL_INDEX_DOWN).setCellRenderer(new DownCellRenderer());
|
new EditCellRenderer());
|
||||||
columnModel.get(TABLE_COL_INDEX_DEL).setCellRenderer(new DeleteCellRenderer());
|
columnModel.get(TABLE_COL_INDEX_UP)
|
||||||
|
.setCellRenderer(new UpCellRenderer());
|
||||||
|
columnModel.get(TABLE_COL_INDEX_DOWN).setCellRenderer(
|
||||||
|
new DownCellRenderer());
|
||||||
|
columnModel.get(TABLE_COL_INDEX_DEL).setCellRenderer(
|
||||||
|
new DeleteCellRenderer());
|
||||||
|
|
||||||
addTableActionListener(new ImageStepTableActionListener());
|
addTableActionListener(new ImageStepTableActionListener());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ImageTableModelBuilder extends LockableImpl implements TableModelBuilder {
|
private class ImageTableModelBuilder extends LockableImpl implements
|
||||||
|
TableModelBuilder {
|
||||||
|
|
||||||
private final ImageStep imageStep;
|
private final ImageStep imageStep;
|
||||||
|
|
||||||
|
|
@ -204,7 +212,9 @@ public class ImageStepDisplayTable extends Table {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getElementAt(final int columnIndex) {
|
public Object getElementAt(final int columnIndex) {
|
||||||
final ItemImageAttachment image = (ItemImageAttachment) DomainObjectFactory.newInstance(
|
final ItemImageAttachment image
|
||||||
|
= (ItemImageAttachment) DomainObjectFactory
|
||||||
|
.newInstance(
|
||||||
images.getDataObject());
|
images.getDataObject());
|
||||||
|
|
||||||
switch (columnIndex) {
|
switch (columnIndex) {
|
||||||
|
|
@ -246,7 +256,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ThumbnailCellRenderer extends LockableImpl implements TableCellRenderer {
|
private class ThumbnailCellRenderer extends LockableImpl implements
|
||||||
|
TableCellRenderer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(final Table table,
|
public Component getComponent(final Table table,
|
||||||
|
|
@ -281,23 +292,56 @@ public class ImageStepDisplayTable extends Table {
|
||||||
protected void generateImagePropertiesXML(final ImageAsset image,
|
protected void generateImagePropertiesXML(final ImageAsset image,
|
||||||
final PageState state,
|
final PageState state,
|
||||||
final Element element) {
|
final Element element) {
|
||||||
|
final Integer thumbWidth = CMS.getConfig()
|
||||||
|
.getImageBrowserThumbnailMaxWidth();
|
||||||
|
final Integer thumbHeight = CMS.getConfig()
|
||||||
|
.getImageBrowserThumbnailMaxHeight();
|
||||||
|
|
||||||
|
final Double aspectRatio = image.getWidth().doubleValue() / image
|
||||||
|
.getHeight().doubleValue();
|
||||||
|
|
||||||
|
final Double imgWidth;
|
||||||
|
final Double imgHeight;
|
||||||
|
if (image.getWidth().doubleValue() > image.getHeight().doubleValue()) {
|
||||||
|
imgWidth = (double) thumbWidth;
|
||||||
|
imgHeight = imgWidth / aspectRatio;
|
||||||
|
} else {
|
||||||
|
imgHeight = (double) thumbHeight;
|
||||||
|
imgWidth = imgHeight * aspectRatio;
|
||||||
|
}
|
||||||
|
|
||||||
element.addAttribute("name", image.getName());
|
element.addAttribute("name", image.getName());
|
||||||
element.addAttribute("src", URL.getDispatcherPath()
|
final String imgUrl = URL.getDispatcherPath()
|
||||||
+ Service.getImageURL(image));
|
+ Service.getImageURL(image);
|
||||||
final BigDecimal width = image.getWidth();
|
final String src;
|
||||||
if (width != null) {
|
if (imgUrl.contains("?")) {
|
||||||
element.addAttribute("width", width.toString());
|
src = String.format("%s&maxWidth=%d&maxHeight=%d",
|
||||||
}
|
imgUrl,
|
||||||
final BigDecimal height = image.getHeight();
|
imgWidth.intValue(),
|
||||||
if (height != null) {
|
imgHeight.intValue());
|
||||||
element.addAttribute("height", height.toString());
|
} else {
|
||||||
|
src = String.format("%s?maxWidth=%d&maxHeight=%d",
|
||||||
|
imgUrl,
|
||||||
|
imgWidth.intValue(),
|
||||||
|
imgHeight.intValue());
|
||||||
}
|
}
|
||||||
|
element.addAttribute("src", src);
|
||||||
|
|
||||||
|
//final BigDecimal width = image.getWidth();
|
||||||
|
//if (width != null) {
|
||||||
|
element.addAttribute("width", Integer.toString(imgWidth.intValue()));
|
||||||
|
//}
|
||||||
|
//final BigDecimal height = image.getHeight();
|
||||||
|
//if (height != null) {
|
||||||
|
element.addAttribute("height", Integer.toString(imgHeight.intValue()));
|
||||||
|
//}
|
||||||
element.addAttribute("plain", "true");
|
element.addAttribute("plain", "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class PropertiesCellRenderer extends LockableImpl implements TableCellRenderer {
|
private class PropertiesCellRenderer extends LockableImpl implements
|
||||||
|
TableCellRenderer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(final Table table,
|
public Component getComponent(final Table table,
|
||||||
|
|
@ -313,7 +357,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
|
|
||||||
panel.add(new Label(image.getName()));
|
panel.add(new Label(image.getName()));
|
||||||
panel.add(new Label(String.format("%sx%s px", image.getWidth().toString(),
|
panel.add(new Label(String.format("%sx%s px", image.getWidth()
|
||||||
|
.toString(),
|
||||||
image.getHeight().toString())));
|
image.getHeight().toString())));
|
||||||
panel.add(new Label(image.getMimeType().getLabel()));
|
panel.add(new Label(image.getMimeType().getLabel()));
|
||||||
|
|
||||||
|
|
@ -322,7 +367,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class NameCellRenderer extends LockableImpl implements TableCellRenderer {
|
private class NameCellRenderer extends LockableImpl implements
|
||||||
|
TableCellRenderer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(final Table table,
|
public Component getComponent(final Table table,
|
||||||
|
|
@ -337,7 +383,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class DimensionsCellRenderer extends LockableImpl implements TableCellRenderer {
|
private class DimensionsCellRenderer extends LockableImpl implements
|
||||||
|
TableCellRenderer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(final Table table,
|
public Component getComponent(final Table table,
|
||||||
|
|
@ -352,7 +399,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TypeCellRenderer extends LockableImpl implements TableCellRenderer {
|
private class TypeCellRenderer extends LockableImpl implements
|
||||||
|
TableCellRenderer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(final Table table,
|
public Component getComponent(final Table table,
|
||||||
|
|
@ -367,7 +415,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class CaptionCellRenderer extends LockableImpl implements TableCellRenderer {
|
private class CaptionCellRenderer extends LockableImpl implements
|
||||||
|
TableCellRenderer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(final Table table,
|
public Component getComponent(final Table table,
|
||||||
|
|
@ -382,7 +431,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class EditCellRenderer extends LockableImpl implements TableCellRenderer {
|
private class EditCellRenderer extends LockableImpl implements
|
||||||
|
TableCellRenderer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(final Table table,
|
public Component getComponent(final Table table,
|
||||||
|
|
@ -392,7 +442,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
final Object key,
|
final Object key,
|
||||||
final int row,
|
final int row,
|
||||||
final int column) {
|
final int column) {
|
||||||
final com.arsdigita.cms.SecurityManager securityManager = CMS.getSecurityManager(state);
|
final com.arsdigita.cms.SecurityManager securityManager = CMS
|
||||||
|
.getSecurityManager(state);
|
||||||
final ContentItem item = imageStep.getItem(state);
|
final ContentItem item = imageStep.getItem(state);
|
||||||
|
|
||||||
final boolean canEdit = securityManager.canAccess(
|
final boolean canEdit = securityManager.canAccess(
|
||||||
|
|
@ -401,16 +452,19 @@ public class ImageStepDisplayTable extends Table {
|
||||||
item);
|
item);
|
||||||
|
|
||||||
if (canEdit) {
|
if (canEdit) {
|
||||||
final ControlLink link = new ControlLink(new Label((GlobalizedMessage) value));
|
final ControlLink link = new ControlLink(new Label(
|
||||||
|
(GlobalizedMessage) value));
|
||||||
link.setStyleAttr(CONTROL_LINK_FONT_SIZE);
|
link.setStyleAttr(CONTROL_LINK_FONT_SIZE);
|
||||||
return link;
|
return link;
|
||||||
} else {
|
} else {
|
||||||
return new Label("");
|
return new Label("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class UpCellRenderer extends LockableImpl implements TableCellRenderer {
|
private class UpCellRenderer extends LockableImpl implements
|
||||||
|
TableCellRenderer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(final Table table,
|
public Component getComponent(final Table table,
|
||||||
|
|
@ -424,7 +478,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
//First row, don't show up link
|
//First row, don't show up link
|
||||||
return new Label("");
|
return new Label("");
|
||||||
} else {
|
} else {
|
||||||
final ControlLink link = new ControlLink(new Label((GlobalizedMessage) value));
|
final ControlLink link = new ControlLink(new Label(
|
||||||
|
(GlobalizedMessage) value));
|
||||||
link.setStyleAttr(CONTROL_LINK_FONT_SIZE);
|
link.setStyleAttr(CONTROL_LINK_FONT_SIZE);
|
||||||
return link;
|
return link;
|
||||||
}
|
}
|
||||||
|
|
@ -432,7 +487,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class DownCellRenderer extends LockableImpl implements TableCellRenderer {
|
private class DownCellRenderer extends LockableImpl implements
|
||||||
|
TableCellRenderer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(final Table table,
|
public Component getComponent(final Table table,
|
||||||
|
|
@ -443,13 +499,15 @@ public class ImageStepDisplayTable extends Table {
|
||||||
final int row,
|
final int row,
|
||||||
final int column) {
|
final int column) {
|
||||||
final ContentItem item = imageStep.getItem(state);
|
final ContentItem item = imageStep.getItem(state);
|
||||||
final DataCollection images = ItemImageAttachment.getImageAttachments(item);
|
final DataCollection images = ItemImageAttachment
|
||||||
|
.getImageAttachments(item);
|
||||||
|
|
||||||
if ((images.size() - 1) == row) {
|
if ((images.size() - 1) == row) {
|
||||||
//Last row in table, don't show down link
|
//Last row in table, don't show down link
|
||||||
return new Label("");
|
return new Label("");
|
||||||
} else {
|
} else {
|
||||||
final ControlLink link = new ControlLink(new Label((GlobalizedMessage) value));
|
final ControlLink link = new ControlLink(new Label(
|
||||||
|
(GlobalizedMessage) value));
|
||||||
link.setStyleAttr(CONTROL_LINK_FONT_SIZE);
|
link.setStyleAttr(CONTROL_LINK_FONT_SIZE);
|
||||||
return link;
|
return link;
|
||||||
}
|
}
|
||||||
|
|
@ -457,7 +515,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class DeleteCellRenderer extends LockableImpl implements TableCellRenderer {
|
private class DeleteCellRenderer extends LockableImpl implements
|
||||||
|
TableCellRenderer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(final Table table,
|
public Component getComponent(final Table table,
|
||||||
|
|
@ -467,7 +526,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
final Object key,
|
final Object key,
|
||||||
final int row,
|
final int row,
|
||||||
final int column) {
|
final int column) {
|
||||||
final com.arsdigita.cms.SecurityManager securityManager = CMS.getSecurityManager(state);
|
final com.arsdigita.cms.SecurityManager securityManager = CMS
|
||||||
|
.getSecurityManager(state);
|
||||||
final ContentItem item = imageStep.getItem(state);
|
final ContentItem item = imageStep.getItem(state);
|
||||||
|
|
||||||
final boolean canEdit = securityManager.canAccess(
|
final boolean canEdit = securityManager.canAccess(
|
||||||
|
|
@ -476,7 +536,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
item);
|
item);
|
||||||
|
|
||||||
if (canEdit) {
|
if (canEdit) {
|
||||||
final ControlLink link = new ControlLink(new Label((GlobalizedMessage) value));
|
final ControlLink link = new ControlLink(new Label(
|
||||||
|
(GlobalizedMessage) value));
|
||||||
link.setConfirmation(ImageStepGlobalizationUtil.globalize(
|
link.setConfirmation(ImageStepGlobalizationUtil.globalize(
|
||||||
"cms.contentassets.ui.image_step.remove_attached_image.confirm"));
|
"cms.contentassets.ui.image_step.remove_attached_image.confirm"));
|
||||||
link.setStyleAttr(CONTROL_LINK_FONT_SIZE);
|
link.setStyleAttr(CONTROL_LINK_FONT_SIZE);
|
||||||
|
|
@ -497,10 +558,12 @@ public class ImageStepDisplayTable extends Table {
|
||||||
@Override
|
@Override
|
||||||
public void cellSelected(final TableActionEvent event) {
|
public void cellSelected(final TableActionEvent event) {
|
||||||
final PageState state = event.getPageState();
|
final PageState state = event.getPageState();
|
||||||
final TableColumn column = getColumnModel().get(event.getColumn().intValue());
|
final TableColumn column = getColumnModel().get(event.getColumn()
|
||||||
|
.intValue());
|
||||||
|
|
||||||
if (TABLE_COL_EDIT.equals(column.getHeaderKey().toString())) {
|
if (TABLE_COL_EDIT.equals(column.getHeaderKey().toString())) {
|
||||||
imageStep.setAttachment(state, ItemImageAttachment.retrieve(OID.valueOf(event
|
imageStep.setAttachment(state, ItemImageAttachment.retrieve(OID
|
||||||
|
.valueOf(event
|
||||||
.getRowKey().toString())));
|
.getRowKey().toString())));
|
||||||
imageStep.showComponent(state, "edit");
|
imageStep.showComponent(state, "edit");
|
||||||
} else if (TABLE_COL_UP.equals(column.getHeaderKey().toString())) {
|
} else if (TABLE_COL_UP.equals(column.getHeaderKey().toString())) {
|
||||||
|
|
@ -508,7 +571,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
} else if (TABLE_COL_DOWN.equals(column.getHeaderKey().toString())) {
|
} else if (TABLE_COL_DOWN.equals(column.getHeaderKey().toString())) {
|
||||||
move(OID.valueOf(event.getRowKey().toString()), DOWN, state);
|
move(OID.valueOf(event.getRowKey().toString()), DOWN, state);
|
||||||
} else if (TABLE_COL_DEL.equals(column.getHeaderKey().toString())) {
|
} else if (TABLE_COL_DEL.equals(column.getHeaderKey().toString())) {
|
||||||
DomainObjectFactory.newInstance(OID.valueOf(event.getRowKey().toString())).delete();
|
DomainObjectFactory.newInstance(OID.valueOf(event.getRowKey()
|
||||||
|
.toString())).delete();
|
||||||
regenSortKeys(state);
|
regenSortKeys(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -523,7 +587,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
|
|
||||||
private void regenSortKeys(final PageState state) {
|
private void regenSortKeys(final PageState state) {
|
||||||
final ContentItem item = imageStep.getItem(state);
|
final ContentItem item = imageStep.getItem(state);
|
||||||
final DataCollection images = ItemImageAttachment.getImageAttachments(item);
|
final DataCollection images = ItemImageAttachment.getImageAttachments(
|
||||||
|
item);
|
||||||
|
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
while (images.next()) {
|
while (images.next()) {
|
||||||
|
|
@ -532,7 +597,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
.newInstance(images.getDataObject());
|
.newInstance(images.getDataObject());
|
||||||
|
|
||||||
if (domainObject instanceof ItemImageAttachment) {
|
if (domainObject instanceof ItemImageAttachment) {
|
||||||
final ItemImageAttachment image = (ItemImageAttachment) domainObject;
|
final ItemImageAttachment image
|
||||||
|
= (ItemImageAttachment) domainObject;
|
||||||
if (image.getSortKey() != pos) {
|
if (image.getSortKey() != pos) {
|
||||||
image.setSortKey(pos);
|
image.setSortKey(pos);
|
||||||
image.save();
|
image.save();
|
||||||
|
|
@ -542,12 +608,15 @@ public class ImageStepDisplayTable extends Table {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void move(final OID imageOid, final int direction, final PageState state) {
|
private void move(final OID imageOid, final int direction,
|
||||||
|
final PageState state) {
|
||||||
final ContentItem item = imageStep.getItem(state);
|
final ContentItem item = imageStep.getItem(state);
|
||||||
final DataCollection images = ItemImageAttachment.getImageAttachments(item);
|
final DataCollection images = ItemImageAttachment.getImageAttachments(
|
||||||
|
item);
|
||||||
|
|
||||||
if (imageOid == null) {
|
if (imageOid == null) {
|
||||||
throw new IllegalArgumentException("OID of ImageAttachment must not be null.");
|
throw new IllegalArgumentException(
|
||||||
|
"OID of ImageAttachment must not be null.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// No move, nothing to do
|
// No move, nothing to do
|
||||||
|
|
@ -564,7 +633,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
|
|
||||||
// Throw an {@link IllegalArgumentxception} if the imageOid was not found
|
// Throw an {@link IllegalArgumentxception} if the imageOid was not found
|
||||||
if (!images.getDataObject().getOID().equals(imageOid)) {
|
if (!images.getDataObject().getOID().equals(imageOid)) {
|
||||||
throw new IllegalArgumentException("OID " + imageOid + " is not in collection");
|
throw new IllegalArgumentException("OID " + imageOid
|
||||||
|
+ " is not in collection");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the image to move and test if it is really an ItemImageAttachment
|
// Get the image to move and test if it is really an ItemImageAttachment
|
||||||
|
|
@ -577,8 +647,8 @@ public class ImageStepDisplayTable extends Table {
|
||||||
// value but respect bounds of the current list
|
// value but respect bounds of the current list
|
||||||
final int newSortKey = Math.max(1,
|
final int newSortKey = Math.max(1,
|
||||||
Math.min((int) images.size(),
|
Math.min((int) images.size(),
|
||||||
((ItemImageAttachment) sortDomainObject).
|
((ItemImageAttachment) sortDomainObject)
|
||||||
getSortKey() + move));
|
.getSortKey() + move));
|
||||||
((ItemImageAttachment) sortDomainObject).setSortKey(newSortKey);
|
((ItemImageAttachment) sortDomainObject).setSortKey(newSortKey);
|
||||||
sortDomainObject.save();
|
sortDomainObject.save();
|
||||||
|
|
||||||
|
|
@ -586,11 +656,13 @@ public class ImageStepDisplayTable extends Table {
|
||||||
// new postition one step in the nessecary direction
|
// new postition one step in the nessecary direction
|
||||||
if (move < 0) {
|
if (move < 0) {
|
||||||
while (images.previous() && move < 0) {
|
while (images.previous() && move < 0) {
|
||||||
final DomainObject domainObject = DomainObjectFactory.newInstance(images.
|
final DomainObject domainObject = DomainObjectFactory
|
||||||
|
.newInstance(images.
|
||||||
getDataObject());
|
getDataObject());
|
||||||
if (domainObject instanceof ItemImageAttachment) {
|
if (domainObject instanceof ItemImageAttachment) {
|
||||||
((ItemImageAttachment) domainObject).setSortKey(
|
((ItemImageAttachment) domainObject).setSortKey(
|
||||||
((ItemImageAttachment) domainObject).getSortKey() + 1);
|
((ItemImageAttachment) domainObject).getSortKey()
|
||||||
|
+ 1);
|
||||||
domainObject.save();
|
domainObject.save();
|
||||||
move++;
|
move++;
|
||||||
}
|
}
|
||||||
|
|
@ -598,11 +670,13 @@ public class ImageStepDisplayTable extends Table {
|
||||||
}
|
}
|
||||||
if (move > 0) {
|
if (move > 0) {
|
||||||
while (images.next() && move > 0) {
|
while (images.next() && move > 0) {
|
||||||
final DomainObject domainObject = DomainObjectFactory.newInstance(images.
|
final DomainObject domainObject = DomainObjectFactory
|
||||||
|
.newInstance(images.
|
||||||
getDataObject());
|
getDataObject());
|
||||||
if (domainObject instanceof ItemImageAttachment) {
|
if (domainObject instanceof ItemImageAttachment) {
|
||||||
((ItemImageAttachment) domainObject).setSortKey(
|
((ItemImageAttachment) domainObject).setSortKey(
|
||||||
((ItemImageAttachment) domainObject).getSortKey() - 1);
|
((ItemImageAttachment) domainObject).getSortKey()
|
||||||
|
- 1);
|
||||||
domainObject.save();
|
domainObject.save();
|
||||||
move--;
|
move--;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -73,17 +73,29 @@ public class ImageBrowser extends Table {
|
||||||
private ImageBrowserModelBuilder m_builder;
|
private ImageBrowserModelBuilder m_builder;
|
||||||
|
|
||||||
// match columns by (symbolic) index, makes for easier reordering
|
// match columns by (symbolic) index, makes for easier reordering
|
||||||
/** Index into TableColumn for Thumb column */
|
/**
|
||||||
|
* Index into TableColumn for Thumb column
|
||||||
|
*/
|
||||||
private static final int THUMB = 0;
|
private static final int THUMB = 0;
|
||||||
/** Index into TableColumn for Name column */
|
/**
|
||||||
|
* Index into TableColumn for Name column
|
||||||
|
*/
|
||||||
private static final int NAME = 1;
|
private static final int NAME = 1;
|
||||||
/** Index into TableColumn for Size column */
|
/**
|
||||||
|
* Index into TableColumn for Size column
|
||||||
|
*/
|
||||||
private static final int SIZE = 2;
|
private static final int SIZE = 2;
|
||||||
/** Index into TableColumn for Type column */
|
/**
|
||||||
|
* Index into TableColumn for Type column
|
||||||
|
*/
|
||||||
private static final int TYPE = 3;
|
private static final int TYPE = 3;
|
||||||
/** Index into TableColumn for Select link column */
|
/**
|
||||||
|
* Index into TableColumn for Select link column
|
||||||
|
*/
|
||||||
private static final int SELECT = 4;
|
private static final int SELECT = 4;
|
||||||
/** Index into TableColumn for Delete link column */
|
/**
|
||||||
|
* Index into TableColumn for Delete link column
|
||||||
|
*/
|
||||||
private static final int DELETE = 5;
|
private static final int DELETE = 5;
|
||||||
|
|
||||||
private int m_numColumns = -1;
|
private int m_numColumns = -1;
|
||||||
|
|
@ -91,7 +103,6 @@ public class ImageBrowser extends Table {
|
||||||
|
|
||||||
private Dimension m_thumbSize;
|
private Dimension m_thumbSize;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a new ImageBrowser with default mode.
|
* Construct a new ImageBrowser with default mode.
|
||||||
*
|
*
|
||||||
|
|
@ -128,27 +139,27 @@ public class ImageBrowser extends Table {
|
||||||
THUMB,
|
THUMB,
|
||||||
new Label(GlobalizationUtil.globalize(
|
new Label(GlobalizationUtil.globalize(
|
||||||
"cms.contentasset.image.ui.table.header_thumb")
|
"cms.contentasset.image.ui.table.header_thumb")
|
||||||
) ));
|
)));
|
||||||
model.add(new TableColumn(
|
model.add(new TableColumn(
|
||||||
NAME,
|
NAME,
|
||||||
new Label(GlobalizationUtil.globalize(
|
new Label(GlobalizationUtil.globalize(
|
||||||
"cms.contentasset.image.ui.table.header_name")
|
"cms.contentasset.image.ui.table.header_name")
|
||||||
) ));
|
)));
|
||||||
model.add(new TableColumn(
|
model.add(new TableColumn(
|
||||||
SIZE,
|
SIZE,
|
||||||
new Label(GlobalizationUtil.globalize(
|
new Label(GlobalizationUtil.globalize(
|
||||||
"cms.contentasset.image.ui.table.header_size")
|
"cms.contentasset.image.ui.table.header_size")
|
||||||
) ));
|
)));
|
||||||
model.add(new TableColumn(
|
model.add(new TableColumn(
|
||||||
TYPE,
|
TYPE,
|
||||||
new Label(GlobalizationUtil.globalize(
|
new Label(GlobalizationUtil.globalize(
|
||||||
"cms.contentasset.image.ui.table.header_type")
|
"cms.contentasset.image.ui.table.header_type")
|
||||||
) ));
|
)));
|
||||||
model.add(new TableColumn(
|
model.add(new TableColumn(
|
||||||
SELECT,
|
SELECT,
|
||||||
new Label(GlobalizationUtil.globalize(
|
new Label(GlobalizationUtil.globalize(
|
||||||
"cms.contentasset.image.ui.table.header_action_select")
|
"cms.contentasset.image.ui.table.header_action_select")
|
||||||
) ));
|
)));
|
||||||
model.add(new TableColumn( // Temporary not used due to consistency
|
model.add(new TableColumn( // Temporary not used due to consistency
|
||||||
DELETE, null // probs with images probably in use
|
DELETE, null // probs with images probably in use
|
||||||
// new Label(GlobalizationUtil.globalize(
|
// new Label(GlobalizationUtil.globalize(
|
||||||
|
|
@ -169,7 +180,6 @@ public class ImageBrowser extends Table {
|
||||||
setClassAttr("imageBrowser");
|
setClassAttr("imageBrowser");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
|
|
@ -236,6 +246,7 @@ public class ImageBrowser extends Table {
|
||||||
public abstract void linkClicked(PageState state, BigDecimal imageId);
|
public abstract void linkClicked(PageState state, BigDecimal imageId);
|
||||||
|
|
||||||
public abstract void deleteClicked(PageState state, BigDecimal imageId);
|
public abstract void deleteClicked(PageState state, BigDecimal imageId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -249,25 +260,41 @@ public class ImageBrowser extends Table {
|
||||||
int row, int column) {
|
int row, int column) {
|
||||||
ImageAsset a = (ImageAsset) value;
|
ImageAsset a = (ImageAsset) value;
|
||||||
|
|
||||||
|
Double aspectRatio = a.getWidth().doubleValue() / a.getHeight()
|
||||||
|
.doubleValue();
|
||||||
|
|
||||||
|
Double width;
|
||||||
|
Double height;
|
||||||
|
|
||||||
|
if (a.getWidth().doubleValue() > a.getHeight().doubleValue()) {
|
||||||
|
width = m_thumbSize.getWidth();
|
||||||
|
height = m_thumbSize.getWidth() / aspectRatio;
|
||||||
|
} else {
|
||||||
|
height = m_thumbSize.getHeight();
|
||||||
|
width = height * aspectRatio;
|
||||||
|
}
|
||||||
|
|
||||||
String url = Service.getImageURL(a);
|
String url = Service.getImageURL(a);
|
||||||
// Sets url paramter to resize the images server-side
|
// Sets url paramter to resize the images server-side
|
||||||
String resizeParam = "&maxWidth="
|
String resizeParam = "&maxWidth=" + new Double(m_thumbSize
|
||||||
+ new Double(m_thumbSize.getWidth()).intValue()
|
.getWidth()).intValue()
|
||||||
+ "&maxHeight="
|
+ "&maxHeight="
|
||||||
+ new Double(m_thumbSize.getHeight()).intValue();
|
+ new Double(m_thumbSize
|
||||||
|
.getHeight())
|
||||||
|
.intValue();
|
||||||
|
|
||||||
Image img = new Image(URL.getDispatcherPath() + url
|
Image img = new Image(URL.getDispatcherPath() + url + resizeParam,
|
||||||
+ resizeParam, a.getName());
|
a.getName());
|
||||||
img.setBorder("0");
|
img.setBorder("0");
|
||||||
|
|
||||||
final Double width = m_thumbSize.getWidth();
|
// final Double width = m_thumbSize.getWidth();
|
||||||
final Double height = m_thumbSize.getHeight();
|
// final Double height = m_thumbSize.getHeight();
|
||||||
|
|
||||||
img.setWidth(Integer.toString(width.intValue()));
|
img.setWidth(Integer.toString(width.intValue()));
|
||||||
img.setHeight(Integer.toString(height.intValue()));
|
img.setHeight(Integer.toString(height.intValue()));
|
||||||
|
|
||||||
return new Link(img, url);
|
return new Link(img, url);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -288,6 +315,7 @@ public class ImageBrowser extends Table {
|
||||||
* @param key
|
* @param key
|
||||||
* @param row
|
* @param row
|
||||||
* @param column
|
* @param column
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -304,11 +332,12 @@ public class ImageBrowser extends Table {
|
||||||
// return new Label(""); // this variant is deprecated!
|
// return new Label(""); // this variant is deprecated!
|
||||||
return new Label();
|
return new Label();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inner private class renders the delete link if the user has permission
|
* Inner private class renders the delete link if the user has permission to
|
||||||
* to deletethe asset and it's not used in an article.
|
* deletethe asset and it's not used in an article.
|
||||||
*/
|
*/
|
||||||
private class DeleteCellRenderer extends DefaultTableCellRenderer {
|
private class DeleteCellRenderer extends DefaultTableCellRenderer {
|
||||||
|
|
||||||
|
|
@ -325,6 +354,7 @@ public class ImageBrowser extends Table {
|
||||||
* @param key
|
* @param key
|
||||||
* @param row
|
* @param row
|
||||||
* @param column
|
* @param column
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -342,8 +372,8 @@ public class ImageBrowser extends Table {
|
||||||
SecurityManager.DELETE_IMAGES)) {
|
SecurityManager.DELETE_IMAGES)) {
|
||||||
try {
|
try {
|
||||||
ImageAsset asset = (ImageAsset) DomainObjectFactory
|
ImageAsset asset = (ImageAsset) DomainObjectFactory
|
||||||
.newInstance(new
|
.newInstance(new OID(
|
||||||
OID(ImageAsset.BASE_DATA_OBJECT_TYPE,
|
ImageAsset.BASE_DATA_OBJECT_TYPE,
|
||||||
(BigDecimal) key));
|
(BigDecimal) key));
|
||||||
//XXX Find a new way to figure out, if this image is used by any CI so we can
|
//XXX Find a new way to figure out, if this image is used by any CI so we can
|
||||||
// decide if it can be deleted
|
// decide if it can be deleted
|
||||||
|
|
@ -371,6 +401,7 @@ public class ImageBrowser extends Table {
|
||||||
// doesn't here for some reason.
|
// doesn't here for some reason.
|
||||||
return new Label();
|
return new Label();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -397,6 +428,7 @@ public class ImageBrowser extends Table {
|
||||||
m_builder.lock();
|
m_builder.lock();
|
||||||
super.lock();
|
super.lock();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -488,5 +520,7 @@ public class ImageBrowser extends Table {
|
||||||
public ImageBrowserModel getModel() {
|
public ImageBrowserModel getModel() {
|
||||||
return m_model;
|
return m_model;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,9 @@ import java.math.BigDecimal;
|
||||||
/**
|
/**
|
||||||
* An image library component.
|
* An image library component.
|
||||||
*
|
*
|
||||||
* This component can be used in different places to add an image library
|
* This component can be used in different places to add an image library in a
|
||||||
* in a convinient way. This class uses a listener class which should be
|
* convinient way. This class uses a listener class which should be extended
|
||||||
* extended from {@link ImageComponentAbstractListener}.
|
* from {@link ImageComponentAbstractListener}.
|
||||||
*
|
*
|
||||||
* @author unknown
|
* @author unknown
|
||||||
* @author Sören Bernstein <quasi@quasiweb.de>
|
* @author Sören Bernstein <quasi@quasiweb.de>
|
||||||
|
|
@ -66,27 +66,33 @@ public class ImageLibraryComponent extends SimpleContainer
|
||||||
m_chooser.addImageActionListener(new ImageBrowser.LinkActionListener() {
|
m_chooser.addImageActionListener(new ImageBrowser.LinkActionListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteClicked(final PageState state, final BigDecimal imageID) {
|
public void deleteClicked(final PageState state,
|
||||||
|
final BigDecimal imageID) {
|
||||||
ImagesPane.S_LOG.debug("Clicked delete");
|
ImagesPane.S_LOG.debug("Clicked delete");
|
||||||
final ReusableImageAsset image = new ReusableImageAsset(imageID);
|
final ReusableImageAsset image = new ReusableImageAsset(imageID);
|
||||||
image.delete();
|
image.delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void linkClicked(final PageState state, final BigDecimal imageID) {
|
public void linkClicked(final PageState state,
|
||||||
|
final BigDecimal imageID) {
|
||||||
ImagesPane.S_LOG.debug("Clicked select");
|
ImagesPane.S_LOG.debug("Clicked select");
|
||||||
try {
|
try {
|
||||||
final ReusableImageAsset image = new ReusableImageAsset(imageID);
|
final ReusableImageAsset image = new ReusableImageAsset(
|
||||||
if(m_mode == ImageComponent.SELECT_IMAGE) {
|
imageID);
|
||||||
parent.getResultComponent().setResult(image, ImageComponent.LIBRARY);
|
if (m_mode == ImageComponent.SELECT_IMAGE) {
|
||||||
|
parent.getResultComponent().setResult(image,
|
||||||
|
ImageComponent.LIBRARY);
|
||||||
}
|
}
|
||||||
m_imageModel.setSelectedObject(state, image);
|
m_imageModel.setSelectedObject(state, image);
|
||||||
} catch (DataObjectNotFoundException ex) {
|
} catch (DataObjectNotFoundException ex) {
|
||||||
ImagesPane.S_LOG.error("Selected non-existant image: " + imageID, ex);
|
ImagesPane.S_LOG.error("Selected non-existant image: "
|
||||||
|
+ imageID, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
add(m_chooser);
|
|
||||||
|
|
||||||
// Form for additional fields and submit
|
// Form for additional fields and submit
|
||||||
m_form = new Form("imageLibraryComponent", new ColumnPanel(2));
|
m_form = new Form("imageLibraryComponent", new ColumnPanel(2));
|
||||||
|
|
@ -125,10 +131,10 @@ public class ImageLibraryComponent extends SimpleContainer
|
||||||
m_form.add(m_useContext);
|
m_form.add(m_useContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// if (m_mode == ImageComponent.SELECT_IMAGE) {
|
// if (m_mode == ImageComponent.SELECT_IMAGE) {
|
||||||
// m_form.setOnSubmit("selectImage();");
|
// m_form.setOnSubmit("selectImage();");
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// save and cancel buttons
|
// save and cancel buttons
|
||||||
m_saveCancel = new SaveCancelSection();
|
m_saveCancel = new SaveCancelSection();
|
||||||
m_saveCancel.getSaveButton().setOnClick("selectImage(this)");
|
m_saveCancel.getSaveButton().setOnClick("selectImage(this)");
|
||||||
|
|
@ -137,6 +143,8 @@ public class ImageLibraryComponent extends SimpleContainer
|
||||||
|| m_mode == ImageComponent.ATTACH_IMAGE) {
|
|| m_mode == ImageComponent.ATTACH_IMAGE) {
|
||||||
m_form.add(m_saveCancel);
|
m_form.add(m_saveCancel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
add(m_chooser);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -193,9 +201,9 @@ public class ImageLibraryComponent extends SimpleContainer
|
||||||
public void addUploadLink(final ActionListener actionListener) {
|
public void addUploadLink(final ActionListener actionListener) {
|
||||||
// Add action link to image upload component
|
// Add action link to image upload component
|
||||||
if (m_mode != ImageComponent.DISPLAY_ONLY) {
|
if (m_mode != ImageComponent.DISPLAY_ONLY) {
|
||||||
final ActionLink upload = new ActionLink(new
|
final ActionLink upload = new ActionLink(new Label(GlobalizationUtil
|
||||||
Label(GlobalizationUtil.globalize(
|
.globalize(
|
||||||
"cms.ui.authoring.upload_a_new_image") ));
|
"cms.ui.authoring.upload_a_new_image")));
|
||||||
upload.addActionListener(actionListener);
|
upload.addActionListener(actionListener);
|
||||||
upload.setClassAttr("cmsContentViewMenu imageUploadLink");
|
upload.setClassAttr("cmsContentViewMenu imageUploadLink");
|
||||||
add(upload, ColumnPanel.FULL_WIDTH);
|
add(upload, ColumnPanel.FULL_WIDTH);
|
||||||
|
|
@ -212,4 +220,5 @@ public class ImageLibraryComponent extends SimpleContainer
|
||||||
m_chooser.clearSelection(state);
|
m_chooser.clearSelection(state);
|
||||||
m_chooser.clearKeyword(state);
|
m_chooser.clearKeyword(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@
|
||||||
exclude-result-prefixes="xsl"
|
exclude-result-prefixes="xsl"
|
||||||
version="2.0">
|
version="2.0">
|
||||||
|
|
||||||
|
<xsl:import href="cms/image.xsl"/>
|
||||||
<xsl:import href="cms/item-summary.xsl"/>
|
<xsl:import href="cms/item-summary.xsl"/>
|
||||||
<xsl:import href="cms/notes.xsl"/>
|
<xsl:import href="cms/notes.xsl"/>
|
||||||
<xsl:import href="cms/tasks-panel.xsl"/>
|
<xsl:import href="cms/tasks-panel.xsl"/>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue