Several improvments for the ImageBrowser and image lists

git-svn-id: https://svn.libreccm.org/ccm/trunk@3436 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2015-05-27 16:44:32 +00:00
parent d33f690dda
commit 7b2693721b
4 changed files with 302 additions and 184 deletions

View File

@ -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--;
} }

View File

@ -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;
} }
} }
} }

View File

@ -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);
} }
} }

View File

@ -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"/>