Fixed potenial cast error in ImageBrowser
git-svn-id: https://svn.libreccm.org/ccm/trunk@5174 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
a0b89a168d
commit
2f79a0e8e6
|
|
@ -113,7 +113,8 @@ public class ImageBrowser extends Table {
|
||||||
* Construct a new ImageBrowser with default mode.
|
* Construct a new ImageBrowser with default mode.
|
||||||
*
|
*
|
||||||
* @param builder the {@link ImageBrowserModelBuilder} that will supply this
|
* @param builder the {@link ImageBrowserModelBuilder} that will supply this
|
||||||
* component with its {@link ImageBrowserModel} during each request
|
* component with its {@link ImageBrowserModel} during each
|
||||||
|
* request
|
||||||
*/
|
*/
|
||||||
public ImageBrowser(ImageBrowserModelBuilder b) {
|
public ImageBrowser(ImageBrowserModelBuilder b) {
|
||||||
|
|
||||||
|
|
@ -124,7 +125,8 @@ public class ImageBrowser extends Table {
|
||||||
* Construct a new ImageBrowser table with requested mode.
|
* Construct a new ImageBrowser table with requested mode.
|
||||||
*
|
*
|
||||||
* @param builder the {@link ImageBrowserModelBuilder} that will supply this
|
* @param builder the {@link ImageBrowserModelBuilder} that will supply this
|
||||||
* component with its {@link ImageBrowserModel} during each request
|
* component with its {@link ImageBrowserModel} during each
|
||||||
|
* request
|
||||||
* @param mode the component mode (see {@link ImageComponent})
|
* @param mode the component mode (see {@link ImageComponent})
|
||||||
*/
|
*/
|
||||||
public ImageBrowser(ImageBrowserModelBuilder b, int mode) {
|
public ImageBrowser(ImageBrowserModelBuilder b, int mode) {
|
||||||
|
|
@ -375,21 +377,21 @@ public class ImageBrowser extends Table {
|
||||||
if (sm.canAccess(state.getRequest(),
|
if (sm.canAccess(state.getRequest(),
|
||||||
SecurityManager.DELETE_IMAGES)) {
|
SecurityManager.DELETE_IMAGES)) {
|
||||||
try {
|
try {
|
||||||
//vorher war ImageAsset
|
|
||||||
ReusableImageAsset asset = (ReusableImageAsset) DomainObjectFactory
|
final ImageAsset asset = (ImageAsset) DomainObjectFactory
|
||||||
.newInstance(new OID(
|
.newInstance(new OID(
|
||||||
ImageAsset.BASE_DATA_OBJECT_TYPE,
|
ImageAsset.BASE_DATA_OBJECT_TYPE,
|
||||||
(BigDecimal) key));
|
key));
|
||||||
|
if (asset instanceof ReusableImageAsset) {
|
||||||
|
|
||||||
canDelete = !asset.isInUse();
|
final ReusableImageAsset reusable
|
||||||
|
= (ReusableImageAsset) asset;
|
||||||
//XXX Find a new way to figure out, if this image is used by any CI so we can
|
canDelete = !reusable.isInUse();
|
||||||
// decide if it can be deleted
|
} else {
|
||||||
// if (!GenericArticleImageAssociation.imageHasAssociation(asset)) {
|
canDelete = false;
|
||||||
// canDelete = true;
|
}
|
||||||
// }
|
} catch (DataObjectNotFoundException ex) {
|
||||||
} catch (DataObjectNotFoundException e) {
|
throw new RuntimeException(ex);
|
||||||
// can't find asset, can't delete it
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -407,19 +409,23 @@ public class ImageBrowser extends Table {
|
||||||
}
|
}
|
||||||
//get all items that uses the image:
|
//get all items that uses the image:
|
||||||
try {
|
try {
|
||||||
ReusableImageAsset asset = (ReusableImageAsset) DomainObjectFactory
|
final ImageAsset asset = (ImageAsset) DomainObjectFactory
|
||||||
.newInstance(new OID(
|
.newInstance(new OID(
|
||||||
ImageAsset.BASE_DATA_OBJECT_TYPE,
|
ImageAsset.BASE_DATA_OBJECT_TYPE,
|
||||||
(BigDecimal) key));
|
key));
|
||||||
List list = asset.getImageUsers();
|
if (asset instanceof ReusableImageAsset) {
|
||||||
|
final List list = ((ReusableImageAsset) asset)
|
||||||
|
.getImageUsers();
|
||||||
|
|
||||||
return createLabel(list, state);
|
return createLabel(list, state);
|
||||||
|
} else {
|
||||||
} catch (DataObjectNotFoundException e) {
|
return new Label("");
|
||||||
// can't find asset, can't delete it
|
}
|
||||||
|
} catch (DataObjectNotFoundException ex) {
|
||||||
|
throw new RuntimeException(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Label("image is in use");
|
// return new Label("image is in use");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -429,6 +435,7 @@ public class ImageBrowser extends Table {
|
||||||
*
|
*
|
||||||
* @param list list with the itemIDs
|
* @param list list with the itemIDs
|
||||||
* @param state PageState
|
* @param state PageState
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private BoxPanel createLabel(List list, PageState state) {
|
private BoxPanel createLabel(List list, PageState state) {
|
||||||
|
|
@ -463,6 +470,7 @@ public class ImageBrowser extends Table {
|
||||||
* @param state PageState
|
* @param state PageState
|
||||||
* @param list list with itemIDs
|
* @param list list with itemIDs
|
||||||
* @param index
|
* @param index
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private Link createLink(PageState state, List list, int index) {
|
private Link createLink(PageState state, List list, int index) {
|
||||||
|
|
@ -552,7 +560,7 @@ public class ImageBrowser extends Table {
|
||||||
if (name.length() > 32) {
|
if (name.length() > 32) {
|
||||||
return name.substring(0, 31);
|
return name.substring(0, 31);
|
||||||
|
|
||||||
}else{
|
} else {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,24 @@
|
||||||
*/
|
*/
|
||||||
package com.arsdigita.cms.ui.category;
|
package com.arsdigita.cms.ui.category;
|
||||||
|
|
||||||
import com.arsdigita.bebop.*;
|
import com.arsdigita.bebop.ActionLink;
|
||||||
import com.arsdigita.bebop.event.*;
|
import com.arsdigita.bebop.Form;
|
||||||
|
import com.arsdigita.bebop.FormProcessException;
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.bebop.List;
|
||||||
|
import com.arsdigita.bebop.Page;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.ParameterSingleSelectionModel;
|
||||||
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
|
import com.arsdigita.bebop.SingleSelectionModel;
|
||||||
|
import com.arsdigita.bebop.Tree;
|
||||||
|
import com.arsdigita.bebop.event.ActionEvent;
|
||||||
|
import com.arsdigita.bebop.event.ActionListener;
|
||||||
|
import com.arsdigita.bebop.event.ChangeEvent;
|
||||||
|
import com.arsdigita.bebop.event.ChangeListener;
|
||||||
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
|
import com.arsdigita.bebop.event.PrintEvent;
|
||||||
|
import com.arsdigita.bebop.event.PrintListener;
|
||||||
import com.arsdigita.bebop.parameters.ParameterModel;
|
import com.arsdigita.bebop.parameters.ParameterModel;
|
||||||
import com.arsdigita.bebop.parameters.StringParameter;
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
import com.arsdigita.categorization.CategorizedCollection;
|
import com.arsdigita.categorization.CategorizedCollection;
|
||||||
|
|
@ -38,9 +54,13 @@ import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
|
||||||
import com.arsdigita.toolbox.ui.ActionGroup;
|
import com.arsdigita.toolbox.ui.ActionGroup;
|
||||||
import com.arsdigita.toolbox.ui.Section;
|
import com.arsdigita.toolbox.ui.Section;
|
||||||
import com.arsdigita.xml.Element;
|
import com.arsdigita.xml.Element;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import static com.arsdigita.web.Web.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A split pane for the Category Administration UI.
|
* A split pane for the Category Administration UI.
|
||||||
*
|
*
|
||||||
|
|
@ -50,9 +70,10 @@ import org.apache.log4j.Logger;
|
||||||
public final class CategoryAdminPane extends BaseAdminPane {
|
public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
|
|
||||||
public static final String CONTEXT_SELECTED = "sel_context";
|
public static final String CONTEXT_SELECTED = "sel_context";
|
||||||
private static final String DEFAULT_USE_CONTEXT =
|
private static final String DEFAULT_USE_CONTEXT
|
||||||
CategoryUseContextModelBuilder.DEFAULT_USE_CONTEXT;
|
= CategoryUseContextModelBuilder.DEFAULT_USE_CONTEXT;
|
||||||
private static final Logger s_log = Logger.getLogger(CategoryAdminPane.class);
|
private static final Logger s_log = Logger
|
||||||
|
.getLogger(CategoryAdminPane.class);
|
||||||
private final SingleSelectionModel m_contextModel;
|
private final SingleSelectionModel m_contextModel;
|
||||||
private final Tree m_categoryTree;
|
private final Tree m_categoryTree;
|
||||||
private final SingleSelectionModel m_model;
|
private final SingleSelectionModel m_model;
|
||||||
|
|
@ -62,7 +83,8 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
public CategoryAdminPane() {
|
public CategoryAdminPane() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
m_contextModel = new UseContextSelectionModel(new StringParameter(CONTEXT_SELECTED));
|
m_contextModel = new UseContextSelectionModel(new StringParameter(
|
||||||
|
CONTEXT_SELECTED));
|
||||||
|
|
||||||
/* Left column */
|
/* Left column */
|
||||||
/* Use context section */
|
/* Use context section */
|
||||||
|
|
@ -71,7 +93,8 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
list.addChangeListener(new ContextSelectionListener());
|
list.addChangeListener(new ContextSelectionListener());
|
||||||
|
|
||||||
/* Category tree section */
|
/* Category tree section */
|
||||||
m_categoryTree = new BaseTree(new CategoryTreeModelBuilder(m_contextModel));
|
m_categoryTree = new BaseTree(new CategoryTreeModelBuilder(
|
||||||
|
m_contextModel));
|
||||||
m_categoryTree.addChangeListener(new SelectionListener());
|
m_categoryTree.addChangeListener(new SelectionListener());
|
||||||
m_model = m_categoryTree.getSelectionModel();
|
m_model = m_categoryTree.getSelectionModel();
|
||||||
|
|
||||||
|
|
@ -115,7 +138,8 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
setEdit(gz("cms.ui.category.edit"),
|
setEdit(gz("cms.ui.category.edit"),
|
||||||
new CategoryEditForm(m_parent, m_category));
|
new CategoryEditForm(m_parent, m_category));
|
||||||
|
|
||||||
setDelete(new DeleteLink(new Label(gz("cms.ui.category.delete"))), new DeleteForm(
|
setDelete(new DeleteLink(new Label(gz("cms.ui.category.delete"))),
|
||||||
|
new DeleteForm(
|
||||||
new SimpleContainer()));
|
new SimpleContainer()));
|
||||||
|
|
||||||
setIntroPane(new Label(gz("cms.ui.category.intro")));
|
setIntroPane(new Label(gz("cms.ui.category.intro")));
|
||||||
|
|
@ -129,7 +153,6 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
//m_contextList = new List(new ContextListModelBuilder());
|
//m_contextList = new List(new ContextListModelBuilder());
|
||||||
//m_contextList.adChangeListener(new ContextListSelectionListener());
|
//m_contextList.adChangeListener(new ContextListSelectionListener());
|
||||||
//m_contextModel = m_contextList.getSelectionModel();
|
//m_contextModel = m_contextList.getSelectionModel();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -156,8 +179,8 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
|
|
||||||
Category cat = m_category.getCategory(state);
|
Category cat = m_category.getCategory(state);
|
||||||
String context = getUseContext(state);
|
String context = getUseContext(state);
|
||||||
boolean isDefaultContext =
|
boolean isDefaultContext = (context == null) || DEFAULT_USE_CONTEXT
|
||||||
(context == null) || DEFAULT_USE_CONTEXT.equals(context);
|
.equals(context);
|
||||||
|
|
||||||
if (cat.isRoot() || !cat.getChildren().isEmpty()) {
|
if (cat.isRoot() || !cat.getChildren().isEmpty()) {
|
||||||
m_alternativeLabel.generateXML(state, parent);
|
m_alternativeLabel.generateXML(state, parent);
|
||||||
|
|
@ -175,15 +198,15 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
prompt.add(new Label(gz("cms.ui.category.delete_prompt")));
|
prompt.add(new Label(gz("cms.ui.category.delete_prompt")));
|
||||||
Label catLabel = new Label();
|
Label catLabel = new Label();
|
||||||
catLabel.addPrintListener(new PrintListener() {
|
catLabel.addPrintListener(new PrintListener() {
|
||||||
|
|
||||||
public void prepare(PrintEvent pe) {
|
public void prepare(PrintEvent pe) {
|
||||||
Label label = (Label) pe.getTarget();
|
Label label = (Label) pe.getTarget();
|
||||||
Category cat =
|
Category cat = m_category.getCategory(pe.getPageState());
|
||||||
m_category.getCategory(pe.getPageState());
|
|
||||||
CategoryCollection descendants = cat.getDescendants();
|
CategoryCollection descendants = cat.getDescendants();
|
||||||
final long nDescendants = descendants.size() - 1;
|
final long nDescendants = descendants.size() - 1;
|
||||||
descendants.close();
|
descendants.close();
|
||||||
CategorizedCollection descObjects =
|
CategorizedCollection descObjects = cat
|
||||||
cat.getDescendantObjects();
|
.getDescendantObjects();
|
||||||
final long nDescObjects = descObjects.size();
|
final long nDescObjects = descObjects.size();
|
||||||
descObjects.close();
|
descObjects.close();
|
||||||
StringBuffer sb = new StringBuffer(" ");
|
StringBuffer sb = new StringBuffer(" ");
|
||||||
|
|
@ -197,7 +220,8 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
sb.append(" descendant object(s). ");
|
sb.append(" descendant object(s). ");
|
||||||
}
|
}
|
||||||
if (nDescendants > 0 || nDescObjects > 0) {
|
if (nDescendants > 0 || nDescObjects > 0) {
|
||||||
sb.append("Descendants will be orphaned, if this category is removed.");
|
sb.append(
|
||||||
|
"Descendants will be orphaned, if this category is removed.");
|
||||||
}
|
}
|
||||||
label.setLabel(sb.toString());
|
label.setLabel(sb.toString());
|
||||||
}
|
}
|
||||||
|
|
@ -214,17 +238,19 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PermissionService.assertPermission(new PermissionDescriptor(PrivilegeDescriptor.DELETE,
|
PermissionService.assertPermission(new PermissionDescriptor(
|
||||||
|
PrivilegeDescriptor.DELETE,
|
||||||
category,
|
category,
|
||||||
Kernel.getContext().
|
Kernel.getContext().
|
||||||
getParty()));
|
getParty()));
|
||||||
|
|
||||||
if (category.isRoot()) {
|
if (category.isRoot()) {
|
||||||
Category root =
|
Category root = Category.getRootForObject(CMS.getContext()
|
||||||
Category.getRootForObject(CMS.getContext().getContentSection(),
|
.getContentSection(),
|
||||||
getUseContext(state));
|
getUseContext(state));
|
||||||
if (category.equals(root)) {
|
if (category.equals(root)) {
|
||||||
Category.clearRootForObject(CMS.getContext().getContentSection(),
|
Category.clearRootForObject(CMS.getContext()
|
||||||
|
.getContentSection(),
|
||||||
getUseContext(state));
|
getUseContext(state));
|
||||||
}
|
}
|
||||||
m_contextModel.setSelectedKey(state, DEFAULT_USE_CONTEXT);
|
m_contextModel.setSelectedKey(state, DEFAULT_USE_CONTEXT);
|
||||||
|
|
@ -268,9 +294,10 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
final PageState state = e.getPageState();
|
final PageState state = e.getPageState();
|
||||||
|
|
||||||
if (!m_model.isSelected(state)) {
|
if (!m_model.isSelected(state)) {
|
||||||
final Category root =
|
final Category root = Category.getRootForObject(CMS.getContext()
|
||||||
Category.getRootForObject(CMS.getContext().getContentSection(),
|
.getContentSection(),
|
||||||
getUseContext(state));
|
getUseContext(
|
||||||
|
state));
|
||||||
if (root != null) {
|
if (root != null) {
|
||||||
m_model.setSelectedKey(state, root.getID());
|
m_model.setSelectedKey(state, root.getID());
|
||||||
}
|
}
|
||||||
|
|
@ -306,15 +333,16 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
public class ContextSelectionListener implements ChangeListener {
|
public class ContextSelectionListener implements ChangeListener {
|
||||||
|
|
||||||
public final void stateChanged(final ChangeEvent e) {
|
public final void stateChanged(final ChangeEvent e) {
|
||||||
s_log.debug("Selection state changed; I may change " + "the body's visible pane");
|
s_log.debug("Selection state changed; I may change "
|
||||||
|
+ "the body's visible pane");
|
||||||
|
|
||||||
final PageState state = e.getPageState();
|
final PageState state = e.getPageState();
|
||||||
|
|
||||||
getBody().reset(state);
|
getBody().reset(state);
|
||||||
|
|
||||||
if (m_contextModel.isSelected(state)) {
|
if (m_contextModel.isSelected(state)) {
|
||||||
final Category root =
|
final Category root = Category
|
||||||
Category.getRootForObject(CMS.getContext().getContentSection(),
|
.getRootForObject(CMS.getContext().getContentSection(),
|
||||||
getUseContext(state));
|
getUseContext(state));
|
||||||
|
|
||||||
if (root != null) {
|
if (root != null) {
|
||||||
|
|
@ -324,11 +352,13 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
|
|
||||||
}
|
}
|
||||||
if (m_model.isSelected(state)) {
|
if (m_model.isSelected(state)) {
|
||||||
s_log.debug("The selection model is selected; displaying " + "the item pane");
|
s_log.debug("The selection model is selected; displaying "
|
||||||
|
+ "the item pane");
|
||||||
|
|
||||||
getBody().push(state, getItemPane());
|
getBody().push(state, getItemPane());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue