From 7b2693721b57abaf50e35cfd16b712e26f9ec98f Mon Sep 17 00:00:00 2001 From: jensp Date: Wed, 27 May 2015 16:44:32 +0000 Subject: [PATCH] Several improvments for the ImageBrowser and image lists git-svn-id: https://svn.libreccm.org/ccm/trunk@3436 8810af33-2d31-482b-a856-94f89814c4df --- .../ui/ImageStepDisplayTable.java | 208 ++++++++++++------ .../com/arsdigita/cms/ui/ImageBrowser.java | 200 ++++++++++------- .../cms/ui/ImageLibraryComponent.java | 77 ++++--- .../web/themes/foundry/foundry/lib/cms.xsl | 1 + 4 files changed, 302 insertions(+), 184 deletions(-) diff --git a/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageStepDisplayTable.java b/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageStepDisplayTable.java index 49c5348b4..bf7507946 100644 --- a/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageStepDisplayTable.java +++ b/ccm-cms-assets-imagestep/src/com/arsdigita/cms/contentassets/ui/ImageStepDisplayTable.java @@ -142,22 +142,30 @@ public class ImageStepDisplayTable extends Table { setModelBuilder(new ImageTableModelBuilder(imageStep)); - columnModel.get(TABLE_COL_INDEX_THUMBNAIL).setCellRenderer(new ThumbnailCellRenderer()); - columnModel.get(TABLE_COL_INDEX_PROPS).setCellRenderer(new PropertiesCellRenderer()); + columnModel.get(TABLE_COL_INDEX_THUMBNAIL).setCellRenderer( + 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_DIMENSIONS).setCellRenderer(new DimensionsCellRenderer()); // columnModel.get(TABLE_COL_INDEX_TYPE).setCellRenderer(new TypeCellRenderer()); - columnModel.get(TABLE_COL_INDEX_CAPTION).setCellRenderer(new CaptionCellRenderer()); - columnModel.get(TABLE_COL_INDEX_EDIT).setCellRenderer(new EditCellRenderer()); - 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()); + columnModel.get(TABLE_COL_INDEX_CAPTION).setCellRenderer( + new CaptionCellRenderer()); + columnModel.get(TABLE_COL_INDEX_EDIT).setCellRenderer( + new EditCellRenderer()); + 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()); } - private class ImageTableModelBuilder extends LockableImpl implements TableModelBuilder { + private class ImageTableModelBuilder extends LockableImpl implements + TableModelBuilder { private final ImageStep imageStep; @@ -204,8 +212,10 @@ public class ImageStepDisplayTable extends Table { @Override public Object getElementAt(final int columnIndex) { - final ItemImageAttachment image = (ItemImageAttachment) DomainObjectFactory.newInstance( - images.getDataObject()); + final ItemImageAttachment image + = (ItemImageAttachment) DomainObjectFactory + .newInstance( + images.getDataObject()); switch (columnIndex) { case TABLE_COL_INDEX_THUMBNAIL: @@ -246,7 +256,8 @@ public class ImageStepDisplayTable extends Table { } - private class ThumbnailCellRenderer extends LockableImpl implements TableCellRenderer { + private class ThumbnailCellRenderer extends LockableImpl implements + TableCellRenderer { @Override public Component getComponent(final Table table, @@ -281,48 +292,83 @@ public class ImageStepDisplayTable extends Table { protected void generateImagePropertiesXML(final ImageAsset image, final PageState state, 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("src", URL.getDispatcherPath() - + Service.getImageURL(image)); - final BigDecimal width = image.getWidth(); - if (width != null) { - element.addAttribute("width", width.toString()); - } - final BigDecimal height = image.getHeight(); - if (height != null) { - element.addAttribute("height", height.toString()); + final String imgUrl = URL.getDispatcherPath() + + Service.getImageURL(image); + final String src; + if (imgUrl.contains("?")) { + src = String.format("%s&maxWidth=%d&maxHeight=%d", + imgUrl, + imgWidth.intValue(), + imgHeight.intValue()); + } 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"); } } - - private class PropertiesCellRenderer extends LockableImpl implements TableCellRenderer { + + private class PropertiesCellRenderer extends LockableImpl implements + TableCellRenderer { @Override - public Component getComponent(final Table table, - final PageState state, - final Object value, + public Component getComponent(final Table table, + final PageState state, + final Object value, final boolean isSelected, - final Object key, - final int row, + final Object key, + final int row, final int column) { final ItemImageAttachment attachment = (ItemImageAttachment) value; final ReusableImageAsset image = attachment.getImage(); - + final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL); - + panel.add(new Label(image.getName())); - panel.add(new Label(String.format("%sx%s px", image.getWidth().toString(), - image.getHeight().toString()))); + panel.add(new Label(String.format("%sx%s px", image.getWidth() + .toString(), + image.getHeight().toString()))); panel.add(new Label(image.getMimeType().getLabel())); - + return panel; } - + } - private class NameCellRenderer extends LockableImpl implements TableCellRenderer { + private class NameCellRenderer extends LockableImpl implements + TableCellRenderer { @Override 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 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 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 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 public Component getComponent(final Table table, @@ -392,7 +442,8 @@ public class ImageStepDisplayTable extends Table { final Object key, final int row, 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 boolean canEdit = securityManager.canAccess( @@ -401,16 +452,19 @@ public class ImageStepDisplayTable extends Table { item); 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); return link; } else { return new Label(""); } - } + } + } - private class UpCellRenderer extends LockableImpl implements TableCellRenderer { + private class UpCellRenderer extends LockableImpl implements + TableCellRenderer { @Override public Component getComponent(final Table table, @@ -424,7 +478,8 @@ public class ImageStepDisplayTable extends Table { //First row, don't show up link return new Label(""); } 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); 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 public Component getComponent(final Table table, @@ -443,13 +499,15 @@ public class ImageStepDisplayTable extends Table { final int row, final int column) { final ContentItem item = imageStep.getItem(state); - final DataCollection images = ItemImageAttachment.getImageAttachments(item); + final DataCollection images = ItemImageAttachment + .getImageAttachments(item); if ((images.size() - 1) == row) { //Last row in table, don't show down link return new Label(""); } 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); 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 public Component getComponent(final Table table, @@ -467,7 +526,8 @@ public class ImageStepDisplayTable extends Table { final Object key, final int row, 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 boolean canEdit = securityManager.canAccess( @@ -476,7 +536,8 @@ public class ImageStepDisplayTable extends Table { item); if (canEdit) { - final ControlLink link = new ControlLink(new Label((GlobalizedMessage) value)); + final ControlLink link = new ControlLink(new Label( + (GlobalizedMessage) value)); link.setConfirmation(ImageStepGlobalizationUtil.globalize( "cms.contentassets.ui.image_step.remove_attached_image.confirm")); link.setStyleAttr(CONTROL_LINK_FONT_SIZE); @@ -497,18 +558,21 @@ public class ImageStepDisplayTable extends Table { @Override public void cellSelected(final TableActionEvent event) { 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())) { - imageStep.setAttachment(state, ItemImageAttachment.retrieve(OID.valueOf(event - .getRowKey().toString()))); + imageStep.setAttachment(state, ItemImageAttachment.retrieve(OID + .valueOf(event + .getRowKey().toString()))); imageStep.showComponent(state, "edit"); } else if (TABLE_COL_UP.equals(column.getHeaderKey().toString())) { move(OID.valueOf(event.getRowKey().toString()), UP, state); } else if (TABLE_COL_DOWN.equals(column.getHeaderKey().toString())) { move(OID.valueOf(event.getRowKey().toString()), DOWN, state); } 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); } @@ -523,7 +587,8 @@ public class ImageStepDisplayTable extends Table { private void regenSortKeys(final PageState state) { final ContentItem item = imageStep.getItem(state); - final DataCollection images = ItemImageAttachment.getImageAttachments(item); + final DataCollection images = ItemImageAttachment.getImageAttachments( + item); int pos = 0; while (images.next()) { @@ -532,7 +597,8 @@ public class ImageStepDisplayTable extends Table { .newInstance(images.getDataObject()); if (domainObject instanceof ItemImageAttachment) { - final ItemImageAttachment image = (ItemImageAttachment) domainObject; + final ItemImageAttachment image + = (ItemImageAttachment) domainObject; if (image.getSortKey() != pos) { image.setSortKey(pos); 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 DataCollection images = ItemImageAttachment.getImageAttachments(item); + final DataCollection images = ItemImageAttachment.getImageAttachments( + item); 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 @@ -564,7 +633,8 @@ public class ImageStepDisplayTable extends Table { // Throw an {@link IllegalArgumentxception} if the imageOid was not found 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 @@ -577,8 +647,8 @@ public class ImageStepDisplayTable extends Table { // value but respect bounds of the current list final int newSortKey = Math.max(1, Math.min((int) images.size(), - ((ItemImageAttachment) sortDomainObject). - getSortKey() + move)); + ((ItemImageAttachment) sortDomainObject) + .getSortKey() + move)); ((ItemImageAttachment) sortDomainObject).setSortKey(newSortKey); sortDomainObject.save(); @@ -586,11 +656,13 @@ public class ImageStepDisplayTable extends Table { // new postition one step in the nessecary direction if (move < 0) { while (images.previous() && move < 0) { - final DomainObject domainObject = DomainObjectFactory.newInstance(images. - getDataObject()); + final DomainObject domainObject = DomainObjectFactory + .newInstance(images. + getDataObject()); if (domainObject instanceof ItemImageAttachment) { ((ItemImageAttachment) domainObject).setSortKey( - ((ItemImageAttachment) domainObject).getSortKey() + 1); + ((ItemImageAttachment) domainObject).getSortKey() + + 1); domainObject.save(); move++; } @@ -598,11 +670,13 @@ public class ImageStepDisplayTable extends Table { } if (move > 0) { while (images.next() && move > 0) { - final DomainObject domainObject = DomainObjectFactory.newInstance(images. - getDataObject()); + final DomainObject domainObject = DomainObjectFactory + .newInstance(images. + getDataObject()); if (domainObject instanceof ItemImageAttachment) { ((ItemImageAttachment) domainObject).setSortKey( - ((ItemImageAttachment) domainObject).getSortKey() - 1); + ((ItemImageAttachment) domainObject).getSortKey() + - 1); domainObject.save(); move--; } diff --git a/ccm-cms/src/com/arsdigita/cms/ui/ImageBrowser.java b/ccm-cms/src/com/arsdigita/cms/ui/ImageBrowser.java index 151ef9f5a..f6044a9c0 100755 --- a/ccm-cms/src/com/arsdigita/cms/ui/ImageBrowser.java +++ b/ccm-cms/src/com/arsdigita/cms/ui/ImageBrowser.java @@ -73,17 +73,29 @@ public class ImageBrowser extends Table { private ImageBrowserModelBuilder m_builder; // 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; - /** Index into TableColumn for Name column */ + /** + * Index into TableColumn for Name column + */ private static final int NAME = 1; - /** Index into TableColumn for Size column */ + /** + * Index into TableColumn for Size column + */ private static final int SIZE = 2; - /** Index into TableColumn for Type column */ + /** + * Index into TableColumn for Type column + */ 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; - /** Index into TableColumn for Delete link column */ + /** + * Index into TableColumn for Delete link column + */ private static final int DELETE = 5; private int m_numColumns = -1; @@ -91,12 +103,11 @@ public class ImageBrowser extends Table { private Dimension m_thumbSize; - /** * Construct a new ImageBrowser with default mode. * * @param builder the {@link ImageBrowserModelBuilder} that will supply this - * component with its {@link ImageBrowserModel} during each + * component with its {@link ImageBrowserModel} during each * request */ public ImageBrowser(ImageBrowserModelBuilder b) { @@ -108,7 +119,7 @@ public class ImageBrowser extends Table { * Construct a new ImageBrowser table with requested mode. * * @param builder the {@link ImageBrowserModelBuilder} that will supply this - * component with its {@link ImageBrowserModel} during each + * component with its {@link ImageBrowserModel} during each * request * @param mode the component mode (see {@link ImageComponent}) */ @@ -125,35 +136,35 @@ public class ImageBrowser extends Table { /* Add columns and column header to the yet empty table */ TableColumnModel model = getColumnModel(); model.add(new TableColumn( - THUMB, - new Label(GlobalizationUtil.globalize( - "cms.contentasset.image.ui.table.header_thumb") - ) )); + THUMB, + new Label(GlobalizationUtil.globalize( + "cms.contentasset.image.ui.table.header_thumb") + ))); model.add(new TableColumn( - NAME, - new Label(GlobalizationUtil.globalize( - "cms.contentasset.image.ui.table.header_name") - ) )); + NAME, + new Label(GlobalizationUtil.globalize( + "cms.contentasset.image.ui.table.header_name") + ))); model.add(new TableColumn( - SIZE, - new Label(GlobalizationUtil.globalize( - "cms.contentasset.image.ui.table.header_size") - ) )); + SIZE, + new Label(GlobalizationUtil.globalize( + "cms.contentasset.image.ui.table.header_size") + ))); model.add(new TableColumn( - TYPE, - new Label(GlobalizationUtil.globalize( - "cms.contentasset.image.ui.table.header_type") - ) )); + TYPE, + new Label(GlobalizationUtil.globalize( + "cms.contentasset.image.ui.table.header_type") + ))); model.add(new TableColumn( - SELECT, - new Label(GlobalizationUtil.globalize( - "cms.contentasset.image.ui.table.header_action_select") - ) )); - model.add(new TableColumn( // Temporary not used due to consistency - DELETE, null // probs with images probably in use - // new Label(GlobalizationUtil.globalize( - // "cms.contentasset.image.ui.table.header_action_delete")) - )); + SELECT, + new Label(GlobalizationUtil.globalize( + "cms.contentasset.image.ui.table.header_action_select") + ))); + model.add(new TableColumn( // Temporary not used due to consistency + DELETE, null // probs with images probably in use + // new Label(GlobalizationUtil.globalize( + // "cms.contentasset.image.ui.table.header_action_delete")) + )); model.get(THUMB).setCellRenderer(new ThumbnailCellRenderer()); model.get(NAME).setCellRenderer(new DefaultTableCellRenderer(false)); @@ -169,10 +180,9 @@ public class ImageBrowser extends Table { setClassAttr("imageBrowser"); } - /** - * - * @return + * + * @return */ public int getNumColumns() { return m_numColumns; @@ -215,20 +225,20 @@ public class ImageBrowser extends Table { * is clicked. Child classes should override the linkClicked method. */ public static abstract class LinkActionListener - extends TableActionAdapter { + extends TableActionAdapter { /** - * - * @param e + * + * @param e */ @Override public void cellSelected(TableActionEvent e) { int c = e.getColumn().intValue(); if (c == SELECT) { - linkClicked(e.getPageState(), + linkClicked(e.getPageState(), new BigDecimal((String) e.getRowKey())); } else if (c == DELETE) { - deleteClicked(e.getPageState(), + deleteClicked(e.getPageState(), new BigDecimal((String) e.getRowKey())); } } @@ -236,6 +246,7 @@ public class ImageBrowser extends Table { public abstract void linkClicked(PageState state, BigDecimal imageId); public abstract void deleteClicked(PageState state, BigDecimal imageId); + } /** @@ -245,29 +256,45 @@ public class ImageBrowser extends Table { @Override public Component getComponent(Table table, PageState state, Object value, - boolean isSelected, Object key, - int row, int column) { + boolean isSelected, Object key, + int row, int column) { 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); // Sets url paramter to resize the images server-side - String resizeParam = "&maxWidth=" - + new Double(m_thumbSize.getWidth()).intValue() - + "&maxHeight=" - + new Double(m_thumbSize.getHeight()).intValue(); + String resizeParam = "&maxWidth=" + new Double(m_thumbSize + .getWidth()).intValue() + + "&maxHeight=" + + new Double(m_thumbSize + .getHeight()) + .intValue(); - Image img = new Image(URL.getDispatcherPath() + url - + resizeParam, a.getName()); + Image img = new Image(URL.getDispatcherPath() + url + resizeParam, + a.getName()); img.setBorder("0"); - - final Double width = m_thumbSize.getWidth(); - final Double height = m_thumbSize.getHeight(); - + +// final Double width = m_thumbSize.getWidth(); +// final Double height = m_thumbSize.getHeight(); img.setWidth(Integer.toString(width.intValue())); img.setHeight(Integer.toString(height.intValue())); return new Link(img, url); } + } /** @@ -280,7 +307,7 @@ public class ImageBrowser extends Table { } /** - * + * * @param table * @param state * @param value @@ -288,27 +315,29 @@ public class ImageBrowser extends Table { * @param key * @param row * @param column - * @return + * + * @return */ @Override public Component getComponent(Table table, PageState state, Object value, boolean isSelected, Object key, int row, int column) { - if (m_mode == ImageComponent.SELECT_IMAGE - || m_mode == ImageComponent.ATTACH_IMAGE) { - return super.getComponent(table, state, value, + if (m_mode == ImageComponent.SELECT_IMAGE + || m_mode == ImageComponent.ATTACH_IMAGE) { + return super.getComponent(table, state, value, isSelected, key, row, column); } // return new Label(""); // this variant is deprecated! return new Label(); } + } /** - * Inner private class renders the delete link if the user has permission - * to deletethe asset and it's not used in an article. + * Inner private class renders the delete link if the user has permission to + * deletethe asset and it's not used in an article. */ private class DeleteCellRenderer extends DefaultTableCellRenderer { @@ -317,7 +346,7 @@ public class ImageBrowser extends Table { } /** - * + * * @param table * @param state * @param value @@ -325,12 +354,13 @@ public class ImageBrowser extends Table { * @param key * @param row * @param column - * @return + * + * @return */ @Override public Component getComponent(Table table, PageState state, Object value, - boolean isSelected, Object key, - int row, int column) { + boolean isSelected, Object key, + int row, int column) { // Only show delete link in admin mode if (m_mode == ImageComponent.ADMIN_IMAGES) { @@ -338,13 +368,13 @@ public class ImageBrowser extends Table { boolean canDelete = false; // SecurityManager sm = Utilities.getSecurityManager(state); SecurityManager sm = CMS.getSecurityManager(state); - if (sm.canAccess(state.getRequest(), + if (sm.canAccess(state.getRequest(), SecurityManager.DELETE_IMAGES)) { try { ImageAsset asset = (ImageAsset) DomainObjectFactory - .newInstance(new - OID(ImageAsset.BASE_DATA_OBJECT_TYPE, - (BigDecimal) key)); + .newInstance(new OID( + ImageAsset.BASE_DATA_OBJECT_TYPE, + (BigDecimal) key)); //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 // if (!GenericArticleImageAssociation.imageHasAssociation(asset)) { @@ -358,27 +388,28 @@ public class ImageBrowser extends Table { // can delete image because it's not in use if (canDelete) { - return super.getComponent(table, - state, - value, - isSelected, - key, - row, + return super.getComponent(table, + state, + value, + isSelected, + key, + row, column); } } // return (Component) null; // used to work for other tables but - // doesn't here for some reason. + // doesn't here for some reason. return new Label(); } + } /** - * Inner private class converts an ImageBrowserModelBuilder to a + * Inner private class converts an ImageBrowserModelBuilder to a * TableModelBuilder */ private static class BuilderAdapter extends LockableImpl - implements TableModelBuilder { + implements TableModelBuilder { private ImageBrowserModelBuilder m_builder; @@ -389,7 +420,7 @@ public class ImageBrowser extends Table { @Override public TableModel makeModel(Table t, PageState s) { return new ImageModelAdapter( - m_builder.makeModel((ImageBrowser) t, s)); + m_builder.makeModel((ImageBrowser) t, s)); } @Override @@ -397,6 +428,7 @@ public class ImageBrowser extends Table { m_builder.lock(); super.lock(); } + } /** @@ -465,15 +497,15 @@ public class ImageBrowser extends Table { // Due to current design has to be a string! Localisation // works here nevertheless. return (String) GlobalizationUtil.globalize( - "cms.contentasset.image.ui.table.link_select") - .localize(); + "cms.contentasset.image.ui.table.link_select") + .localize(); case ImageBrowser.DELETE: // Due to current design has to be a string! Localisation // works here nevertheless. return (String) GlobalizationUtil.globalize( - "cms.contentasset.image.ui.table.link_delete") - .localize(); + "cms.contentasset.image.ui.table.link_delete") + .localize(); default: return null; @@ -488,5 +520,7 @@ public class ImageBrowser extends Table { public ImageBrowserModel getModel() { return m_model; } + } + } diff --git a/ccm-cms/src/com/arsdigita/cms/ui/ImageLibraryComponent.java b/ccm-cms/src/com/arsdigita/cms/ui/ImageLibraryComponent.java index 5fb42e598..d63286927 100644 --- a/ccm-cms/src/com/arsdigita/cms/ui/ImageLibraryComponent.java +++ b/ccm-cms/src/com/arsdigita/cms/ui/ImageLibraryComponent.java @@ -29,15 +29,15 @@ import java.math.BigDecimal; /** * An image library component. * - * This component can be used in different places to add an image library - * in a convinient way. This class uses a listener class which should be - * extended from {@link ImageComponentAbstractListener}. - * + * This component can be used in different places to add an image library in a + * convinient way. This class uses a listener class which should be extended + * from {@link ImageComponentAbstractListener}. + * * @author unknown * @author Sören Bernstein */ -public class ImageLibraryComponent extends SimpleContainer - implements ImageComponent, Resettable { +public class ImageLibraryComponent extends SimpleContainer + implements ImageComponent, Resettable { private final ImageChooser m_chooser; private final ItemSelectionModel m_imageModel; @@ -65,28 +65,34 @@ public class ImageLibraryComponent extends SimpleContainer m_chooser = new ImageChooser(ContentItem.DRAFT, m_mode); m_chooser.addImageActionListener(new ImageBrowser.LinkActionListener() { - @Override - public void deleteClicked(final PageState state, final BigDecimal imageID) { + @Override + public void deleteClicked(final PageState state, + final BigDecimal imageID) { ImagesPane.S_LOG.debug("Clicked delete"); final ReusableImageAsset image = new ReusableImageAsset(imageID); image.delete(); } - @Override - public void linkClicked(final PageState state, final BigDecimal imageID) { + @Override + public void linkClicked(final PageState state, + final BigDecimal imageID) { ImagesPane.S_LOG.debug("Clicked select"); try { - final ReusableImageAsset image = new ReusableImageAsset(imageID); - if(m_mode == ImageComponent.SELECT_IMAGE) { - parent.getResultComponent().setResult(image, ImageComponent.LIBRARY); + final ReusableImageAsset image = new ReusableImageAsset( + imageID); + if (m_mode == ImageComponent.SELECT_IMAGE) { + parent.getResultComponent().setResult(image, + ImageComponent.LIBRARY); } m_imageModel.setSelectedObject(state, image); } 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 m_form = new Form("imageLibraryComponent", new ColumnPanel(2)); @@ -102,7 +108,7 @@ public class ImageLibraryComponent extends SimpleContainer // in image-step if (m_mode == ImageComponent.ATTACH_IMAGE) { m_form.add(new Label(GlobalizationUtil - .globalize("cms.contentasset.image.ui.caption"))); + .globalize("cms.contentasset.image.ui.caption"))); m_caption.addValidationListener(new NotNullValidationListener()); m_caption.setSize(CMS.getConfig().getImageBrowserCaptionSize()); m_form.add(m_caption); @@ -120,26 +126,28 @@ public class ImageLibraryComponent extends SimpleContainer * m_form.add(m_title); } */ m_form.add(new Label(GlobalizationUtil - .globalize("cms.contentasset.image.ui.use_context"))); + .globalize("cms.contentasset.image.ui.use_context"))); m_useContext.setSize(40); m_form.add(m_useContext); } + // if (m_mode == ImageComponent.SELECT_IMAGE) { // m_form.setOnSubmit("selectImage();"); // } - // save and cancel buttons m_saveCancel = new SaveCancelSection(); m_saveCancel.getSaveButton().setOnClick("selectImage(this)"); m_saveCancel.getCancelButton().setOnClick("selectImage(this)"); - if (m_mode == ImageComponent.SELECT_IMAGE - || m_mode == ImageComponent.ATTACH_IMAGE) { + if (m_mode == ImageComponent.SELECT_IMAGE + || m_mode == ImageComponent.ATTACH_IMAGE) { m_form.add(m_saveCancel); } + + add(m_chooser); } - @Override + @Override public ReusableImageAsset getImage(final FormSectionEvent event) { final PageState state = event.getPageState(); return (ReusableImageAsset) m_imageModel.getSelectedItem(state); @@ -151,53 +159,53 @@ public class ImageLibraryComponent extends SimpleContainer page.addComponentStateParam(this, m_imageID); } - @Override + @Override public String getCaption(final FormSectionEvent event) { final PageState state = event.getPageState(); return (String) m_caption.getValue(state); } - @Override + @Override public String getDescription(final FormSectionEvent event) { final PageState state = event.getPageState(); return (String) m_description.getValue(state); } - @Override + @Override public String getTitle(final FormSectionEvent event) { final PageState state = event.getPageState(); return (String) m_title.getValue(state); } - @Override + @Override public String getUseContext(final FormSectionEvent event) { final PageState state = event.getPageState(); return (String) m_useContext.getValue(state); } - @Override + @Override public Form getForm() { return m_form; } - @Override + @Override public SaveCancelSection getSaveCancelSection() { return m_saveCancel; } /** * Add a link to an {@link ImageUploadComponent} - * - * @param actionListener + * + * @param actionListener */ public void addUploadLink(final ActionListener actionListener) { // Add action link to image upload component if (m_mode != ImageComponent.DISPLAY_ONLY) { - final ActionLink upload = new ActionLink(new - Label(GlobalizationUtil.globalize( - "cms.ui.authoring.upload_a_new_image") )); + final ActionLink upload = new ActionLink(new Label(GlobalizationUtil + .globalize( + "cms.ui.authoring.upload_a_new_image"))); upload.addActionListener(actionListener); - upload.setClassAttr("cmsContentViewMenu imageUploadLink"); + upload.setClassAttr("cmsContentViewMenu imageUploadLink"); add(upload, ColumnPanel.FULL_WIDTH); } } @@ -205,11 +213,12 @@ public class ImageLibraryComponent extends SimpleContainer /** * Reset this component. */ - @Override + @Override public void reset(final PageState state) { // clear selection m_imageModel.clearSelection(state); m_chooser.clearSelection(state); m_chooser.clearKeyword(state); } + } diff --git a/ccm-core/web/themes/foundry/foundry/lib/cms.xsl b/ccm-core/web/themes/foundry/foundry/lib/cms.xsl index 1a6eac7dc..3779ce831 100644 --- a/ccm-core/web/themes/foundry/foundry/lib/cms.xsl +++ b/ccm-core/web/themes/foundry/foundry/lib/cms.xsl @@ -23,6 +23,7 @@ exclude-result-prefixes="xsl" version="2.0"> +