Publikationsmodul: UI fuer CollectedVolume und ArticleInCollectedVolume
git-svn-id: https://svn.libreccm.org/ccm/trunk@514 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
0b27623c5c
commit
9d06a92ccf
|
|
@ -77,6 +77,14 @@ public class ArticleInCollectedVolume extends PublicationWithPublisher {
|
||||||
set(PAGES_TO, pagesTo);
|
set(PAGES_TO, pagesTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getChapter() {
|
||||||
|
return (String) get(CHAPTER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChapter(String chapter) {
|
||||||
|
set(CHAPTER, chapter);
|
||||||
|
}
|
||||||
|
|
||||||
public CollectedVolume getCollectedVolume() {
|
public CollectedVolume getCollectedVolume() {
|
||||||
return (CollectedVolume) get(COLLECTED_VOLUME);
|
return (CollectedVolume) get(COLLECTED_VOLUME);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
package com.arsdigita.cms.contenttypes.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
|
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
|
||||||
|
import com.arsdigita.cms.ui.authoring.BasicPageForm;
|
||||||
|
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
|
||||||
|
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public class ArticleInCollectedVolumePropertiesStep
|
||||||
|
extends PublicationWithPublisherPropertiesStep {
|
||||||
|
|
||||||
|
public ArticleInCollectedVolumePropertiesStep(
|
||||||
|
ItemSelectionModel itemModel,
|
||||||
|
AuthoringKitWizard parent) {
|
||||||
|
super(itemModel, parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addBasicProperties(
|
||||||
|
ItemSelectionModel itemModel,
|
||||||
|
AuthoringKitWizard parent) {
|
||||||
|
SimpleEditStep basicProperties = new SimpleEditStep(itemModel,
|
||||||
|
parent,
|
||||||
|
EDIT_SHEET_NAME);
|
||||||
|
|
||||||
|
BasicPageForm editBasicSheet =
|
||||||
|
new ArticleInCollectedVolumePropertyForm(itemModel, this);
|
||||||
|
|
||||||
|
basicProperties.add(EDIT_SHEET_NAME,
|
||||||
|
(String) PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.article_in_collected_volume.edit_basic_sheet").
|
||||||
|
localize(), new WorkflowLockedComponentAccess(editBasicSheet,
|
||||||
|
itemModel),
|
||||||
|
editBasicSheet.
|
||||||
|
getSaveCancelSection().getCancelButton());
|
||||||
|
|
||||||
|
basicProperties.setDisplayComponent(
|
||||||
|
getPublicationPropertySheet(itemModel));
|
||||||
|
|
||||||
|
getSegmentedPanel().addSegment(
|
||||||
|
new Label((String) PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.publication.basic_properties").
|
||||||
|
localize()), basicProperties);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,114 @@
|
||||||
|
package com.arsdigita.cms.contenttypes.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.FormData;
|
||||||
|
import com.arsdigita.bebop.FormProcessException;
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.bebop.event.FormInitListener;
|
||||||
|
import com.arsdigita.bebop.event.FormProcessListener;
|
||||||
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
|
import com.arsdigita.bebop.event.FormSubmissionListener;
|
||||||
|
import com.arsdigita.bebop.form.TextField;
|
||||||
|
import com.arsdigita.bebop.parameters.IntegerParameter;
|
||||||
|
import com.arsdigita.bebop.parameters.ParameterModel;
|
||||||
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
|
import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public class ArticleInCollectedVolumePropertyForm
|
||||||
|
extends PublicationWithPublisherPropertyForm
|
||||||
|
implements FormProcessListener,
|
||||||
|
FormInitListener,
|
||||||
|
FormSubmissionListener {
|
||||||
|
|
||||||
|
private static final Logger s_log =
|
||||||
|
Logger.getLogger(
|
||||||
|
ArticleInCollectedVolumePropertyForm.class);
|
||||||
|
private ArticleInCollectedVolumePropertiesStep m_step;
|
||||||
|
public static final String ID = "ArticleInCollectedVolumeEdit";
|
||||||
|
|
||||||
|
public ArticleInCollectedVolumePropertyForm(ItemSelectionModel itemModel) {
|
||||||
|
this(itemModel, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArticleInCollectedVolumePropertyForm(
|
||||||
|
ItemSelectionModel itemModel,
|
||||||
|
ArticleInCollectedVolumePropertiesStep step) {
|
||||||
|
super(itemModel, step);
|
||||||
|
m_step = step;
|
||||||
|
addSubmissionListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addWidgets() {
|
||||||
|
super.addWidgets();
|
||||||
|
|
||||||
|
add(new Label((String) PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.article_in_collected_volume.pages_from").
|
||||||
|
localize()));
|
||||||
|
ParameterModel fromParam = new IntegerParameter(
|
||||||
|
ArticleInCollectedVolume.PAGES_FROM);
|
||||||
|
TextField pagesFrom = new TextField(fromParam);
|
||||||
|
add(pagesFrom);
|
||||||
|
|
||||||
|
add(new Label((String) PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.article_in_collected_volume.pages_from").
|
||||||
|
localize()));
|
||||||
|
ParameterModel toParam = new IntegerParameter(
|
||||||
|
ArticleInCollectedVolume.PAGES_TO);
|
||||||
|
TextField pagesTo = new TextField(toParam);
|
||||||
|
add(pagesTo);
|
||||||
|
|
||||||
|
add(new Label((String) PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.article_in_collected_volume.chapter").
|
||||||
|
localize()));
|
||||||
|
ParameterModel chapterParam = new StringParameter(
|
||||||
|
ArticleInCollectedVolume.CHAPTER);
|
||||||
|
TextField chapter = new TextField(chapterParam);
|
||||||
|
add(chapter);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(FormSectionEvent fse) throws FormProcessExeception {
|
||||||
|
super.init(fse);
|
||||||
|
|
||||||
|
FormData data = fse.getFormData();
|
||||||
|
ArticleInCollectedVolume article =
|
||||||
|
(ArticleInCollectedVolume) super.
|
||||||
|
initBasicWidgets(fse);
|
||||||
|
|
||||||
|
data.put(ArticleInCollectedVolume.PAGES_FROM, article.getPagesFrom());
|
||||||
|
data.put(ArticleInCollectedVolume.PAGES_TO, article.getPagesTo());
|
||||||
|
data.put(ArticleInCollectedVolume.CHAPTER, article.getChapter());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(FormSectionEvent fse) throws FormProcessException {
|
||||||
|
super.process(fse);
|
||||||
|
|
||||||
|
FormData data = fse.getFormData();
|
||||||
|
ArticleInCollectedVolume article =
|
||||||
|
(ArticleInCollectedVolume) super.
|
||||||
|
processBasicWidgets(fse);
|
||||||
|
|
||||||
|
if ((article != null) && getSaveCancelSection().getSaveButton().
|
||||||
|
isSelected(fse.getPageState())) {
|
||||||
|
article.setPagesFrom((Integer) data.get(
|
||||||
|
ArticleInCollectedVolume.PAGES_FROM));
|
||||||
|
article.setPagesTo((Integer) data.get(
|
||||||
|
ArticleInCollectedVolume.PAGES_TO));
|
||||||
|
article.setChapter((String) data.get(
|
||||||
|
ArticleInCollectedVolume.CHAPTER));
|
||||||
|
|
||||||
|
article.save();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_step != null) {
|
||||||
|
m_step.maybeForwardToNextStep(fse.getPageState());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
package com.arsdigita.cms.contenttypes.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.FormData;
|
||||||
|
import com.arsdigita.bebop.FormProcessException;
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.event.FormInitListener;
|
||||||
|
import com.arsdigita.bebop.event.FormProcessListener;
|
||||||
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
|
import com.arsdigita.cms.ContentType;
|
||||||
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
|
import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume;
|
||||||
|
import com.arsdigita.cms.contenttypes.CollectedVolume;
|
||||||
|
import com.arsdigita.cms.ui.ItemSearchWidget;
|
||||||
|
import com.arsdigita.cms.ui.authoring.BasicItemForm;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public class CollectedVolumeArticleAddForm
|
||||||
|
extends BasicItemForm
|
||||||
|
implements FormProcessListener,
|
||||||
|
FormInitListener {
|
||||||
|
|
||||||
|
private static final Logger s_log =
|
||||||
|
Logger.getLogger(
|
||||||
|
CollectedVolumeArticleAddForm.class);
|
||||||
|
private CollectedVolumePropertiesStep m_step;
|
||||||
|
private ItemSearchWidget m_itemSearch;
|
||||||
|
private final String ITEM_SEARCH = "articles";
|
||||||
|
private ItemSelectionModel m_itemModel;
|
||||||
|
|
||||||
|
public CollectedVolumeArticleAddForm(ItemSelectionModel itemModel) {
|
||||||
|
super("ArticlesAddForm", itemModel);
|
||||||
|
m_itemModel = itemModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addWidgets() {
|
||||||
|
add(new Label((String) PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.collected_volume.articles.select_article").
|
||||||
|
localize()));
|
||||||
|
m_itemSearch = new ItemSearchWidget(
|
||||||
|
ITEM_SEARCH,
|
||||||
|
ContentType.findByAssociatedObjectType(
|
||||||
|
ArticleInCollectedVolume.class.getName()));
|
||||||
|
add(m_itemSearch);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(FormSectionEvent fse) throws FormProcessException {
|
||||||
|
FormData data = fse.getFormData();
|
||||||
|
PageState state = fse.getPageState();
|
||||||
|
|
||||||
|
setVisible(state, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(FormSectionEvent fse) throws FormProcessException {
|
||||||
|
FormData data = fse.getFormData();
|
||||||
|
PageState state = fse.getPageState();
|
||||||
|
CollectedVolume collectedVolume =
|
||||||
|
(CollectedVolume) getItemSelectionModel().
|
||||||
|
getSelectedObject(state);
|
||||||
|
|
||||||
|
if (!(this.getSaveCancelSection().getCancelButton().
|
||||||
|
isSelected(state))) {
|
||||||
|
collectedVolume.addArticle((ArticleInCollectedVolume) data.get(
|
||||||
|
ITEM_SEARCH));
|
||||||
|
}
|
||||||
|
|
||||||
|
init(fse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
package com.arsdigita.cms.contenttypes.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
|
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
|
||||||
|
import com.arsdigita.cms.ui.authoring.BasicItemForm;
|
||||||
|
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
|
||||||
|
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public class CollectedVolumeArticlesStep extends SimpleEditStep {
|
||||||
|
|
||||||
|
private static final String ADD_ARTICLE_SHEET_NAME = "addArticle";
|
||||||
|
|
||||||
|
public CollectedVolumeArticlesStep(ItemSelectionModel itemModel,
|
||||||
|
AuthoringKitWizard parent) {
|
||||||
|
this(itemModel, parent, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CollectedVolumeArticlesStep(ItemSelectionModel itemModel,
|
||||||
|
AuthoringKitWizard parent,
|
||||||
|
String prefix) {
|
||||||
|
super(itemModel, parent, prefix);
|
||||||
|
|
||||||
|
BasicItemForm addArticleSheet =
|
||||||
|
new CollectedVolumeArticleAddForm(itemModel);
|
||||||
|
add(ADD_ARTICLE_SHEET_NAME,
|
||||||
|
(String) PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.collected_volume.add_article").localize(),
|
||||||
|
new WorkflowLockedComponentAccess(addArticleSheet, itemModel),
|
||||||
|
addArticleSheet.getSaveCancelSection().getCancelButton());
|
||||||
|
|
||||||
|
CollectedVolumeArticlesTable articlesTable =
|
||||||
|
new CollectedVolumeArticlesTable(
|
||||||
|
itemModel);
|
||||||
|
setDisplayComponent(articlesTable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,314 @@
|
||||||
|
package com.arsdigita.cms.contenttypes.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.Component;
|
||||||
|
import com.arsdigita.bebop.ControlLink;
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.Table;
|
||||||
|
import com.arsdigita.bebop.event.TableActionEvent;
|
||||||
|
import com.arsdigita.bebop.event.TableActionListener;
|
||||||
|
import com.arsdigita.bebop.table.TableCellRenderer;
|
||||||
|
import com.arsdigita.bebop.table.TableColumn;
|
||||||
|
import com.arsdigita.bebop.table.TableColumnModel;
|
||||||
|
import com.arsdigita.bebop.table.TableModel;
|
||||||
|
import com.arsdigita.bebop.table.TableModelBuilder;
|
||||||
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
|
import com.arsdigita.cms.SecurityManager;
|
||||||
|
import com.arsdigita.cms.contenttypes.ArticleInCollectedVolume;
|
||||||
|
import com.arsdigita.cms.contenttypes.ArticleInCollectedVolumeCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.CollectedVolume;
|
||||||
|
import com.arsdigita.cms.dispatcher.Utilities;
|
||||||
|
import com.arsdigita.util.LockableImpl;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public class CollectedVolumeArticlesTable
|
||||||
|
extends Table
|
||||||
|
implements TableActionListener {
|
||||||
|
|
||||||
|
private static final Logger s_log =
|
||||||
|
Logger.getLogger(
|
||||||
|
CollectedVolumeArticlesTable.class);
|
||||||
|
private final String TABLE_COL_EDIT = "table_col_edit";
|
||||||
|
private final String TABLE_COL_DEL = "table_col_del";
|
||||||
|
private final String TABLE_COL_UP = "table_col_up";
|
||||||
|
private final String TABLE_COL_DOWN = "table_col_down";
|
||||||
|
private ItemSelectionModel m_itemModel;
|
||||||
|
|
||||||
|
public CollectedVolumeArticlesTable(ItemSelectionModel itemModel) {
|
||||||
|
super();
|
||||||
|
m_itemModel = itemModel;
|
||||||
|
|
||||||
|
setEmptyView(
|
||||||
|
new Label(PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.collected_volume.no_articles")));
|
||||||
|
|
||||||
|
TableColumnModel colModel = getColumnModel();
|
||||||
|
colModel.add(new TableColumn(
|
||||||
|
0,
|
||||||
|
PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.collected_volume.article").localize(),
|
||||||
|
TABLE_COL_EDIT));
|
||||||
|
colModel.add(new TableColumn(
|
||||||
|
1,
|
||||||
|
PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.collected_volume.article.remove").localize(),
|
||||||
|
TABLE_COL_DEL));
|
||||||
|
colModel.add(new TableColumn(
|
||||||
|
2,
|
||||||
|
PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.collected_volume.article.up").localize(),
|
||||||
|
TABLE_COL_UP));
|
||||||
|
colModel.add(new TableColumn(
|
||||||
|
3,
|
||||||
|
PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.collected_volume.article.down").localize(),
|
||||||
|
TABLE_COL_DOWN));
|
||||||
|
|
||||||
|
setModelBuilder(
|
||||||
|
new CollectedVolumeArticlesTableModelBuilder(itemModel));
|
||||||
|
|
||||||
|
colModel.get(0).setCellRenderer(new EditCellRenderer());
|
||||||
|
colModel.get(1).setCellRenderer(new DeleteCellRenderer());
|
||||||
|
colModel.get(2).setCellRenderer(new UpCellRenderer());
|
||||||
|
colModel.get(3).setCellRenderer(new DownCellRenderer());
|
||||||
|
}
|
||||||
|
|
||||||
|
private class CollectedVolumeArticlesTableModelBuilder
|
||||||
|
extends LockableImpl
|
||||||
|
implements TableModelBuilder {
|
||||||
|
|
||||||
|
private ItemSelectionModel m_itemModel;
|
||||||
|
|
||||||
|
public CollectedVolumeArticlesTableModelBuilder(
|
||||||
|
ItemSelectionModel itemModel) {
|
||||||
|
m_itemModel = itemModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TableModel makeModel(Table table, PageState state) {
|
||||||
|
table.getRowSelectionModel().clearSelection(state);
|
||||||
|
CollectedVolume collectedVolume =
|
||||||
|
(CollectedVolume) m_itemModel.getSelectedObject(
|
||||||
|
state);
|
||||||
|
return new CollectedVolumeArticlesTableModel(table,
|
||||||
|
state,
|
||||||
|
collectedVolume);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class CollectedVolumeArticlesTableModel implements TableModel {
|
||||||
|
|
||||||
|
private Table m_table;
|
||||||
|
private ArticleInCollectedVolumeCollection m_articles;
|
||||||
|
private ArticleInCollectedVolume m_article;
|
||||||
|
|
||||||
|
private CollectedVolumeArticlesTableModel(
|
||||||
|
Table table,
|
||||||
|
PageState state,
|
||||||
|
CollectedVolume collectedVolume) {
|
||||||
|
m_table = table;
|
||||||
|
m_articles = collectedVolume.getArticles();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getColumnCount() {
|
||||||
|
return m_table.getColumnModel().size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean nextRow() {
|
||||||
|
boolean ret;
|
||||||
|
|
||||||
|
if ((m_articles != null) && m_articles.next()) {
|
||||||
|
m_article = m_articles.getArticle();
|
||||||
|
ret = true;
|
||||||
|
} else {
|
||||||
|
ret = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getElementAt(int columnIndex) {
|
||||||
|
switch (columnIndex) {
|
||||||
|
case 0:
|
||||||
|
return m_article.getTitle();
|
||||||
|
case 1:
|
||||||
|
return PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.collected_volume.article.remove").
|
||||||
|
localize();
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getKeyAt(int columnIndex) {
|
||||||
|
return m_article.getID();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class EditCellRenderer
|
||||||
|
extends LockableImpl
|
||||||
|
implements TableCellRenderer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Component getComponent(Table table,
|
||||||
|
PageState state,
|
||||||
|
Object value,
|
||||||
|
boolean isSelected,
|
||||||
|
Object key,
|
||||||
|
int row,
|
||||||
|
int col) {
|
||||||
|
SecurityManager securityManager =
|
||||||
|
Utilities.getSecurityManager(state);
|
||||||
|
CollectedVolume collectedVolume = (CollectedVolume) m_itemModel.
|
||||||
|
getSelectedObject(state);
|
||||||
|
|
||||||
|
boolean canEdit = securityManager.canAccess(
|
||||||
|
state.getRequest(),
|
||||||
|
SecurityManager.EDIT_ITEM,
|
||||||
|
collectedVolume);
|
||||||
|
|
||||||
|
if (canEdit) {
|
||||||
|
ControlLink link = new ControlLink(value.toString());
|
||||||
|
return link;
|
||||||
|
} else {
|
||||||
|
Label label = new Label(value.toString());
|
||||||
|
return label;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class DeleteCellRenderer
|
||||||
|
extends LockableImpl
|
||||||
|
implements TableCellRenderer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Component getComponent(Table table,
|
||||||
|
PageState state,
|
||||||
|
Object value,
|
||||||
|
boolean isSelected,
|
||||||
|
Object key,
|
||||||
|
int row,
|
||||||
|
int col) {
|
||||||
|
SecurityManager securityManager =
|
||||||
|
Utilities.getSecurityManager(state);
|
||||||
|
CollectedVolume collectedVolume =
|
||||||
|
(CollectedVolume) m_itemModel.getSelectedObject(
|
||||||
|
state);
|
||||||
|
|
||||||
|
boolean canEdit = securityManager.canAccess(
|
||||||
|
state.getRequest(),
|
||||||
|
SecurityManager.DELETE_ITEM,
|
||||||
|
collectedVolume);
|
||||||
|
|
||||||
|
if (canEdit) {
|
||||||
|
ControlLink link = new ControlLink(value.toString());
|
||||||
|
link.setConfirmation((String) PublicationGlobalizationUtil.
|
||||||
|
globalize(
|
||||||
|
"publications.ui.collected_volume."
|
||||||
|
+ "articles.confirm_remove").
|
||||||
|
localize());
|
||||||
|
return link;
|
||||||
|
} else {
|
||||||
|
Label label = new Label(value.toString());
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class UpCellRenderer
|
||||||
|
extends LockableImpl
|
||||||
|
implements TableCellRenderer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Component getComponent(
|
||||||
|
Table table,
|
||||||
|
PageState state,
|
||||||
|
Object value,
|
||||||
|
boolean isSelected,
|
||||||
|
Object key,
|
||||||
|
int row,
|
||||||
|
int col) {
|
||||||
|
|
||||||
|
if (0 == row) {
|
||||||
|
s_log.debug("Row is first row in table, don't show up link");
|
||||||
|
Label label = new Label("");
|
||||||
|
return label;
|
||||||
|
} else {
|
||||||
|
ControlLink link = new ControlLink("up");
|
||||||
|
return link;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class DownCellRenderer
|
||||||
|
extends LockableImpl
|
||||||
|
implements TableCellRenderer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Component getComponent(
|
||||||
|
Table table,
|
||||||
|
PageState state,
|
||||||
|
Object value,
|
||||||
|
boolean isSelected,
|
||||||
|
Object key,
|
||||||
|
int row,
|
||||||
|
int col) {
|
||||||
|
|
||||||
|
CollectedVolume collectedVolume =
|
||||||
|
(CollectedVolume) m_itemModel.getSelectedObject(
|
||||||
|
state);
|
||||||
|
ArticleInCollectedVolumeCollection articles =
|
||||||
|
collectedVolume.getArticles();
|
||||||
|
|
||||||
|
if ((articles.size() - 1)
|
||||||
|
== row) {
|
||||||
|
s_log.debug("Row is last row in table, don't show down link");
|
||||||
|
Label label = new Label("");
|
||||||
|
return label;
|
||||||
|
} else {
|
||||||
|
ControlLink link = new ControlLink("down");
|
||||||
|
return link;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void cellSelected(TableActionEvent event) {
|
||||||
|
PageState state = event.getPageState();
|
||||||
|
|
||||||
|
ArticleInCollectedVolume article =
|
||||||
|
new ArticleInCollectedVolume(
|
||||||
|
new BigDecimal(event.getRowKey().toString()));
|
||||||
|
|
||||||
|
CollectedVolume collectedVolume =
|
||||||
|
(CollectedVolume) m_itemModel.getSelectedObject(state);
|
||||||
|
|
||||||
|
ArticleInCollectedVolumeCollection articles =
|
||||||
|
collectedVolume.getArticles();
|
||||||
|
|
||||||
|
TableColumn column = getColumnModel().get(event.getColumn().intValue());
|
||||||
|
|
||||||
|
if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) {
|
||||||
|
|
||||||
|
} else if(column.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
|
||||||
|
collectedVolume.removeArticle(article);
|
||||||
|
} else if(column.getHeaderKey().toString().equals(TABLE_COL_UP)) {
|
||||||
|
articles.swapWithPrevious(article);
|
||||||
|
} else if(column.getHeaderKey().toString().equals(TABLE_COL_DOWN)) {
|
||||||
|
articles.swapWithNext(article);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void headSelected(TableActionEvent event) {
|
||||||
|
//Nothing to do.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
package com.arsdigita.cms.contenttypes.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
|
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
|
||||||
|
import com.arsdigita.cms.ui.authoring.BasicPageForm;
|
||||||
|
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
|
||||||
|
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public class CollectedVolumePropertiesStep
|
||||||
|
extends PublicationWithPublisherPropertiesStep {
|
||||||
|
|
||||||
|
public CollectedVolumePropertiesStep(
|
||||||
|
ItemSelectionModel itemModel,
|
||||||
|
AuthoringKitWizard parent) {
|
||||||
|
super(itemModel, parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addBasicProperties(
|
||||||
|
ItemSelectionModel itemModel,
|
||||||
|
AuthoringKitWizard parent) {
|
||||||
|
SimpleEditStep basicProperties = new SimpleEditStep(itemModel,
|
||||||
|
parent,
|
||||||
|
EDIT_SHEET_NAME);
|
||||||
|
|
||||||
|
BasicPageForm editBasicSheet =
|
||||||
|
new CollectedVolumePropertyForm(itemModel, this);
|
||||||
|
|
||||||
|
basicProperties.add(EDIT_SHEET_NAME,
|
||||||
|
(String) PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.collected_volume.edit_basic_sheet").
|
||||||
|
localize(), new WorkflowLockedComponentAccess(editBasicSheet,
|
||||||
|
itemModel),
|
||||||
|
editBasicSheet.getSaveCancelSection().
|
||||||
|
getCancelButton());
|
||||||
|
|
||||||
|
basicProperties.setDisplayComponent(
|
||||||
|
getPublicationPropertySheet(itemModel));
|
||||||
|
|
||||||
|
getSegmentedPanel().addSegment(
|
||||||
|
new Label((String) PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.publication.basic_properties").
|
||||||
|
localize()), basicProperties);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addSteps(ItemSelectionModel itemModel,
|
||||||
|
AuthoringKitWizard parent) {
|
||||||
|
super.addSteps(itemModel,
|
||||||
|
parent);
|
||||||
|
|
||||||
|
addStep(new CollectedVolumeArticlesStep(itemModel, parent),
|
||||||
|
"publications.ui.collected_volume_articles");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,123 @@
|
||||||
|
package com.arsdigita.cms.contenttypes.ui;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.FormData;
|
||||||
|
import com.arsdigita.bebop.FormProcessException;
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.bebop.event.FormInitListener;
|
||||||
|
import com.arsdigita.bebop.event.FormProcessListener;
|
||||||
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
|
import com.arsdigita.bebop.event.FormSubmissionListener;
|
||||||
|
import com.arsdigita.bebop.form.TextField;
|
||||||
|
import com.arsdigita.bebop.parameters.IntegerParameter;
|
||||||
|
import com.arsdigita.bebop.parameters.ParameterModel;
|
||||||
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
|
import com.arsdigita.cms.contenttypes.CollectedVolume;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public class CollectedVolumePropertyForm
|
||||||
|
extends PublicationWithPublisherPropertyForm
|
||||||
|
implements FormProcessListener,
|
||||||
|
FormInitListener,
|
||||||
|
FormSubmissionListener {
|
||||||
|
|
||||||
|
private static final Logger s_log =
|
||||||
|
Logger.getLogger(
|
||||||
|
CollectedVolumePropertyForm.class);
|
||||||
|
private CollectedVolumePropertiesStep m_step;
|
||||||
|
public static final String ID = "CollectedVolumeEdit";
|
||||||
|
|
||||||
|
public CollectedVolumePropertyForm(ItemSelectionModel itemModel) {
|
||||||
|
this(itemModel, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CollectedVolumePropertyForm(ItemSelectionModel itemModel,
|
||||||
|
CollectedVolumePropertiesStep step) {
|
||||||
|
super(itemModel, step);
|
||||||
|
m_step = step;
|
||||||
|
addSubmissionListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addWidgets() {
|
||||||
|
super.addWidgets();
|
||||||
|
|
||||||
|
add(new Label((String) PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.collected_volume.volume").localize()));
|
||||||
|
ParameterModel volumeParam = new IntegerParameter(
|
||||||
|
CollectedVolume.VOLUME);
|
||||||
|
TextField volume = new TextField(volumeParam);
|
||||||
|
add(volume);
|
||||||
|
|
||||||
|
add(new Label((String) PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.collected_volume.number_of_volumes").
|
||||||
|
localize()));
|
||||||
|
ParameterModel numberOfVolumesParam =
|
||||||
|
new IntegerParameter(CollectedVolume.NUMBER_OF_VOLUMES);
|
||||||
|
TextField numberOfVolumes = new TextField(numberOfVolumesParam);
|
||||||
|
add(numberOfVolumes);
|
||||||
|
|
||||||
|
add(new Label((String) PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.collected_volume.number_of_pages").
|
||||||
|
localize()));
|
||||||
|
ParameterModel numberOfPagesParam = new IntegerParameter(
|
||||||
|
CollectedVolume.NUMBER_OF_PAGES);
|
||||||
|
TextField numberOfPages = new TextField(numberOfPagesParam);
|
||||||
|
add(numberOfPages);
|
||||||
|
|
||||||
|
add(new Label((String) PublicationGlobalizationUtil.globalize(
|
||||||
|
"publications.ui.collected_volume.edition").
|
||||||
|
localize()));
|
||||||
|
ParameterModel editionModel = new StringParameter(
|
||||||
|
CollectedVolume.EDITION);
|
||||||
|
TextField edition = new TextField(editionModel);
|
||||||
|
add(edition);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(FormSectionEvent fse) throws FormProcessException {
|
||||||
|
super.init(fse);
|
||||||
|
|
||||||
|
FormData data = fse.getFormData();
|
||||||
|
CollectedVolume collectedVolume =
|
||||||
|
(CollectedVolume) super.initBasicWidgets(fse);
|
||||||
|
|
||||||
|
data.put(CollectedVolume.VOLUME, collectedVolume.getVolume());
|
||||||
|
data.put(CollectedVolume.NUMBER_OF_VOLUMES,
|
||||||
|
collectedVolume.getNumberOfVolumes());
|
||||||
|
data.put(CollectedVolume.NUMBER_OF_PAGES,
|
||||||
|
collectedVolume.getNumberOfPages());
|
||||||
|
data.put(CollectedVolume.EDITION, collectedVolume.getEdition());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(FormSectionEvent fse) throws FormProcessException {
|
||||||
|
super.process(fse);
|
||||||
|
|
||||||
|
FormData data = fse.getFormData();
|
||||||
|
CollectedVolume collectedVolume =
|
||||||
|
(CollectedVolume) super.processBasicWidgets(fse);
|
||||||
|
|
||||||
|
if ((collectedVolume != null) && getSaveCancelSection().
|
||||||
|
getSaveButton().isSelected(fse.getPageState())) {
|
||||||
|
collectedVolume.setVolume((Integer) data.get(
|
||||||
|
CollectedVolume.VOLUME));
|
||||||
|
collectedVolume.setNumberOfVolumes((Integer) data.get(
|
||||||
|
CollectedVolume.NUMBER_OF_VOLUMES));
|
||||||
|
collectedVolume.setNumberOfPages((Integer) data.get(
|
||||||
|
CollectedVolume.NUMBER_OF_PAGES));
|
||||||
|
collectedVolume.setEdition((String) data.get(
|
||||||
|
CollectedVolume.EDITION));
|
||||||
|
|
||||||
|
collectedVolume.save();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_step != null) {
|
||||||
|
m_step.maybeForwardToNextStep(fse.getPageState());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -4,11 +4,9 @@ import com.arsdigita.bebop.FormData;
|
||||||
import com.arsdigita.bebop.FormProcessException;
|
import com.arsdigita.bebop.FormProcessException;
|
||||||
import com.arsdigita.bebop.Label;
|
import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.SaveCancelSection;
|
|
||||||
import com.arsdigita.bebop.event.FormInitListener;
|
import com.arsdigita.bebop.event.FormInitListener;
|
||||||
import com.arsdigita.bebop.event.FormProcessListener;
|
import com.arsdigita.bebop.event.FormProcessListener;
|
||||||
import com.arsdigita.bebop.event.FormSectionEvent;
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
import com.arsdigita.bebop.event.FormSubmissionListener;
|
|
||||||
import com.arsdigita.bebop.form.Option;
|
import com.arsdigita.bebop.form.Option;
|
||||||
import com.arsdigita.bebop.form.RadioGroup;
|
import com.arsdigita.bebop.form.RadioGroup;
|
||||||
import com.arsdigita.bebop.parameters.BooleanParameter;
|
import com.arsdigita.bebop.parameters.BooleanParameter;
|
||||||
|
|
@ -92,7 +90,8 @@ public class PublicationAuthorAddForm
|
||||||
Publication publication = (Publication) getItemSelectionModel().
|
Publication publication = (Publication) getItemSelectionModel().
|
||||||
getSelectedObject(state);
|
getSelectedObject(state);
|
||||||
|
|
||||||
if (!(this.getSaveCancelSection().getCancelButton().isSelected(state))) {
|
if (!(this.getSaveCancelSection().getCancelButton().
|
||||||
|
isSelected(state))) {
|
||||||
publication.addAuthor(
|
publication.addAuthor(
|
||||||
(GenericPerson) data.get(ITEM_SEARCH),
|
(GenericPerson) data.get(ITEM_SEARCH),
|
||||||
(Boolean) data.get(AuthorshipCollection.EDITOR));
|
(Boolean) data.get(AuthorshipCollection.EDITOR));
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,4 @@ public class PublicationAuthorsPropertyStep extends SimpleEditStep {
|
||||||
itemModel);
|
itemModel);
|
||||||
setDisplayComponent(authorsTable);
|
setDisplayComponent(authorsTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue