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,8 +125,9 @@ 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
|
||||||
* @param mode the component mode (see {@link ImageComponent})
|
* request
|
||||||
|
* @param mode the component mode (see {@link ImageComponent})
|
||||||
*/
|
*/
|
||||||
public ImageBrowser(ImageBrowserModelBuilder b, int mode) {
|
public ImageBrowser(ImageBrowserModelBuilder b, int mode) {
|
||||||
|
|
||||||
|
|
@ -135,37 +137,37 @@ public class ImageBrowser extends Table {
|
||||||
m_mode = mode;
|
m_mode = mode;
|
||||||
|
|
||||||
setThumbnailSize(CMS.getConfig().getImageBrowserThumbnailMaxWidth(),
|
setThumbnailSize(CMS.getConfig().getImageBrowserThumbnailMaxWidth(),
|
||||||
CMS.getConfig().getImageBrowserThumbnailMaxHeight());
|
CMS.getConfig().getImageBrowserThumbnailMaxHeight());
|
||||||
|
|
||||||
/* Add columns and column header to the yet empty table */
|
/* Add columns and column header to the yet empty table */
|
||||||
TableColumnModel model = getColumnModel();
|
TableColumnModel model = getColumnModel();
|
||||||
model.add(new TableColumn(
|
model.add(new TableColumn(
|
||||||
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(
|
||||||
// "cms.contentasset.image.ui.table.header_action_delete"))
|
// "cms.contentasset.image.ui.table.header_action_delete"))
|
||||||
));
|
));
|
||||||
|
|
@ -229,7 +231,7 @@ public class ImageBrowser extends Table {
|
||||||
* is clicked. Child classes should override the linkClicked method.
|
* is clicked. Child classes should override the linkClicked method.
|
||||||
*/
|
*/
|
||||||
public static abstract class LinkActionListener
|
public static abstract class LinkActionListener
|
||||||
extends TableActionAdapter {
|
extends TableActionAdapter {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -240,10 +242,10 @@ public class ImageBrowser extends Table {
|
||||||
int c = e.getColumn().intValue();
|
int c = e.getColumn().intValue();
|
||||||
if (c == SELECT) {
|
if (c == SELECT) {
|
||||||
linkClicked(e.getPageState(),
|
linkClicked(e.getPageState(),
|
||||||
new BigDecimal((String) e.getRowKey()));
|
new BigDecimal((String) e.getRowKey()));
|
||||||
} else if (c == DELETE) {
|
} else if (c == DELETE) {
|
||||||
deleteClicked(e.getPageState(),
|
deleteClicked(e.getPageState(),
|
||||||
new BigDecimal((String) e.getRowKey()));
|
new BigDecimal((String) e.getRowKey()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -260,12 +262,12 @@ public class ImageBrowser extends Table {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(Table table, PageState state, Object value,
|
public Component getComponent(Table table, PageState state, Object value,
|
||||||
boolean isSelected, Object key,
|
boolean isSelected, Object key,
|
||||||
int row, int column) {
|
int row, int column) {
|
||||||
ImageAsset a = (ImageAsset) value;
|
ImageAsset a = (ImageAsset) value;
|
||||||
|
|
||||||
Double aspectRatio = a.getWidth().doubleValue() / a.getHeight()
|
Double aspectRatio = a.getWidth().doubleValue() / a.getHeight()
|
||||||
.doubleValue();
|
.doubleValue();
|
||||||
|
|
||||||
Double width;
|
Double width;
|
||||||
Double height;
|
Double height;
|
||||||
|
|
@ -281,14 +283,14 @@ public class ImageBrowser extends Table {
|
||||||
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=" + new Double(m_thumbSize
|
String resizeParam = "&maxWidth=" + new Double(m_thumbSize
|
||||||
.getWidth()).intValue()
|
.getWidth()).intValue()
|
||||||
+ "&maxHeight="
|
+ "&maxHeight="
|
||||||
+ new Double(m_thumbSize
|
+ new Double(m_thumbSize
|
||||||
.getHeight())
|
.getHeight())
|
||||||
.intValue();
|
.intValue();
|
||||||
|
|
||||||
Image img = new Image(URL.getDispatcherPath() + url + resizeParam,
|
Image img = new Image(URL.getDispatcherPath() + url + resizeParam,
|
||||||
a.getName());
|
a.getName());
|
||||||
img.setBorder("0");
|
img.setBorder("0");
|
||||||
|
|
||||||
// final Double width = m_thumbSize.getWidth();
|
// final Double width = m_thumbSize.getWidth();
|
||||||
|
|
@ -324,13 +326,13 @@ public class ImageBrowser extends Table {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(Table table, PageState state, Object value,
|
public Component getComponent(Table table, PageState state, Object value,
|
||||||
boolean isSelected, Object key,
|
boolean isSelected, Object key,
|
||||||
int row, int column) {
|
int row, int column) {
|
||||||
|
|
||||||
if (m_mode == ImageComponent.SELECT_IMAGE
|
if (m_mode == ImageComponent.SELECT_IMAGE
|
||||||
|| m_mode == ImageComponent.ATTACH_IMAGE) {
|
|| m_mode == ImageComponent.ATTACH_IMAGE) {
|
||||||
return super.getComponent(table, state, value,
|
return super.getComponent(table, state, value,
|
||||||
isSelected, key, row, column);
|
isSelected, key, row, column);
|
||||||
}
|
}
|
||||||
|
|
||||||
// return new Label(""); // this variant is deprecated!
|
// return new Label(""); // this variant is deprecated!
|
||||||
|
|
@ -363,8 +365,8 @@ public class ImageBrowser extends Table {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Component getComponent(Table table, PageState state, Object value,
|
public Component getComponent(Table table, PageState state, Object value,
|
||||||
boolean isSelected, Object key,
|
boolean isSelected, Object key,
|
||||||
int row, int column) {
|
int row, int column) {
|
||||||
|
|
||||||
// Only show delete link in admin mode
|
// Only show delete link in admin mode
|
||||||
if (m_mode == ImageComponent.ADMIN_IMAGES) {
|
if (m_mode == ImageComponent.ADMIN_IMAGES) {
|
||||||
|
|
@ -373,23 +375,23 @@ public class ImageBrowser extends Table {
|
||||||
// SecurityManager sm = Utilities.getSecurityManager(state);
|
// SecurityManager sm = Utilities.getSecurityManager(state);
|
||||||
SecurityManager sm = CMS.getSecurityManager(state);
|
SecurityManager sm = CMS.getSecurityManager(state);
|
||||||
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
|
|
||||||
.newInstance(new OID(
|
|
||||||
ImageAsset.BASE_DATA_OBJECT_TYPE,
|
|
||||||
(BigDecimal) key));
|
|
||||||
|
|
||||||
canDelete = !asset.isInUse();
|
final ImageAsset asset = (ImageAsset) DomainObjectFactory
|
||||||
|
.newInstance(new OID(
|
||||||
|
ImageAsset.BASE_DATA_OBJECT_TYPE,
|
||||||
|
key));
|
||||||
|
if (asset instanceof ReusableImageAsset) {
|
||||||
|
|
||||||
//XXX Find a new way to figure out, if this image is used by any CI so we can
|
final ReusableImageAsset reusable
|
||||||
// decide if it can be deleted
|
= (ReusableImageAsset) asset;
|
||||||
// if (!GenericArticleImageAssociation.imageHasAssociation(asset)) {
|
canDelete = !reusable.isInUse();
|
||||||
// canDelete = true;
|
} else {
|
||||||
// }
|
canDelete = false;
|
||||||
} catch (DataObjectNotFoundException e) {
|
}
|
||||||
// can't find asset, can't delete it
|
} catch (DataObjectNotFoundException ex) {
|
||||||
|
throw new RuntimeException(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -397,29 +399,33 @@ public class ImageBrowser extends Table {
|
||||||
// can delete image because it's not in use
|
// can delete image because it's not in use
|
||||||
if (canDelete) {
|
if (canDelete) {
|
||||||
return super.getComponent(table,
|
return super.getComponent(table,
|
||||||
state,
|
state,
|
||||||
value,
|
value,
|
||||||
isSelected,
|
isSelected,
|
||||||
key,
|
key,
|
||||||
row,
|
row,
|
||||||
column);
|
column);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//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");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -427,8 +433,9 @@ public class ImageBrowser extends Table {
|
||||||
/**
|
/**
|
||||||
* creates a BoxPanel with links to the items that are using the image
|
* creates a BoxPanel with links to the items that are using the image
|
||||||
*
|
*
|
||||||
* @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) {
|
||||||
|
|
@ -461,16 +468,17 @@ public class ImageBrowser extends Table {
|
||||||
* creates the link to an item of the list.
|
* creates the link to an item of the list.
|
||||||
*
|
*
|
||||||
* @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) {
|
||||||
|
|
||||||
ContentItem item = (ContentItem) DomainObjectFactory
|
ContentItem item = (ContentItem) DomainObjectFactory
|
||||||
.newInstance(new OID(
|
.newInstance(new OID(
|
||||||
ContentItem.BASE_DATA_OBJECT_TYPE,
|
ContentItem.BASE_DATA_OBJECT_TYPE,
|
||||||
new BigDecimal((Integer) list.get(index))));
|
new BigDecimal((Integer) list.get(index))));
|
||||||
|
|
||||||
ContentSection section = item.getContentSection();
|
ContentSection section = item.getContentSection();
|
||||||
ItemResolver resolver = section.getItemResolver();
|
ItemResolver resolver = section.getItemResolver();
|
||||||
|
|
@ -481,12 +489,12 @@ public class ImageBrowser extends Table {
|
||||||
}
|
}
|
||||||
|
|
||||||
Link link = new Link(
|
Link link = new Link(
|
||||||
"used by " + displayName,
|
"used by " + displayName,
|
||||||
resolver.generateItemURL(
|
resolver.generateItemURL(
|
||||||
state,
|
state,
|
||||||
(item.getDraftVersion()),
|
(item.getDraftVersion()),
|
||||||
section,
|
section,
|
||||||
(item.getDraftVersion()).getVersion()));
|
(item.getDraftVersion()).getVersion()));
|
||||||
return link;
|
return link;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -495,7 +503,7 @@ public class ImageBrowser extends Table {
|
||||||
* TableModelBuilder
|
* TableModelBuilder
|
||||||
*/
|
*/
|
||||||
private static class BuilderAdapter extends LockableImpl
|
private static class BuilderAdapter extends LockableImpl
|
||||||
implements TableModelBuilder {
|
implements TableModelBuilder {
|
||||||
|
|
||||||
private ImageBrowserModelBuilder m_builder;
|
private ImageBrowserModelBuilder m_builder;
|
||||||
|
|
||||||
|
|
@ -506,7 +514,7 @@ public class ImageBrowser extends Table {
|
||||||
@Override
|
@Override
|
||||||
public TableModel makeModel(Table t, PageState s) {
|
public TableModel makeModel(Table t, PageState s) {
|
||||||
return new ImageModelAdapter(
|
return new ImageModelAdapter(
|
||||||
m_builder.makeModel((ImageBrowser) t, s));
|
m_builder.makeModel((ImageBrowser) t, s));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -551,8 +559,8 @@ public class ImageBrowser extends Table {
|
||||||
String name = a.getName();
|
String name = a.getName();
|
||||||
if (name.length() > 32) {
|
if (name.length() > 32) {
|
||||||
return name.substring(0, 31);
|
return name.substring(0, 31);
|
||||||
|
|
||||||
}else{
|
} else {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -589,15 +597,15 @@ public class ImageBrowser extends Table {
|
||||||
// Due to current design has to be a string! Localisation
|
// Due to current design has to be a string! Localisation
|
||||||
// works here nevertheless.
|
// works here nevertheless.
|
||||||
return (String) GlobalizationUtil.globalize(
|
return (String) GlobalizationUtil.globalize(
|
||||||
"cms.contentasset.image.ui.table.link_select")
|
"cms.contentasset.image.ui.table.link_select")
|
||||||
.localize();
|
.localize();
|
||||||
|
|
||||||
case ImageBrowser.DELETE:
|
case ImageBrowser.DELETE:
|
||||||
// Due to current design has to be a string! Localisation
|
// Due to current design has to be a string! Localisation
|
||||||
// works here nevertheless.
|
// works here nevertheless.
|
||||||
return (String) GlobalizationUtil.globalize(
|
return (String) GlobalizationUtil.globalize(
|
||||||
"cms.contentasset.image.ui.table.link_delete")
|
"cms.contentasset.image.ui.table.link_delete")
|
||||||
.localize();
|
.localize();
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
|
|
@ -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,16 +83,18 @@ 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 */
|
||||||
List list = new List(new CategoryUseContextModelBuilder());
|
List list = new List(new CategoryUseContextModelBuilder());
|
||||||
list.setSelectionModel(m_contextModel);
|
list.setSelectionModel(m_contextModel);
|
||||||
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();
|
||||||
|
|
||||||
|
|
@ -87,7 +110,7 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
|
|
||||||
if (CMS.getConfig().getAllowCategoryCreateUseContext()) {
|
if (CMS.getConfig().getAllowCategoryCreateUseContext()) {
|
||||||
ActionLink addContextAction = new ActionLink(new Label(gz(
|
ActionLink addContextAction = new ActionLink(new Label(gz(
|
||||||
"cms.ui.category.add_use_context")));
|
"cms.ui.category.add_use_context")));
|
||||||
Form addContextForm = new AddUseContextForm(m_contextModel);
|
Form addContextForm = new AddUseContextForm(m_contextModel);
|
||||||
getBody().add(addContextForm);
|
getBody().add(addContextForm);
|
||||||
getBody().connect(addContextAction, addContextForm);
|
getBody().connect(addContextAction, addContextForm);
|
||||||
|
|
@ -115,8 +138,9 @@ 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 SimpleContainer()));
|
new DeleteForm(
|
||||||
|
new SimpleContainer()));
|
||||||
|
|
||||||
setIntroPane(new Label(gz("cms.ui.category.intro")));
|
setIntroPane(new Label(gz("cms.ui.category.intro")));
|
||||||
setItemPane(new CategoryItemPane(m_model,
|
setItemPane(new CategoryItemPane(m_model,
|
||||||
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
@ -207,24 +231,26 @@ public final class CategoryAdminPane extends BaseAdminPane {
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void process(final FormSectionEvent e)
|
public final void process(final FormSectionEvent e)
|
||||||
throws FormProcessException {
|
throws FormProcessException {
|
||||||
final PageState state = e.getPageState();
|
final PageState state = e.getPageState();
|
||||||
final Category category = m_category.getCategory(state);
|
final Category category = m_category.getCategory(state);
|
||||||
if (category == null) {
|
if (category == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PermissionService.assertPermission(new PermissionDescriptor(PrivilegeDescriptor.DELETE,
|
PermissionService.assertPermission(new PermissionDescriptor(
|
||||||
category,
|
PrivilegeDescriptor.DELETE,
|
||||||
Kernel.getContext().
|
category,
|
||||||
|
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,16 +333,17 @@ 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) {
|
||||||
m_model.setSelectedKey(state, root.getID());
|
m_model.setSelectedKey(state, root.getID());
|
||||||
|
|
@ -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