Alle meine Änderugnen... die hier noch so herumliegen

git-svn-id: https://svn.libreccm.org/ccm/trunk@1165 8810af33-2d31-482b-a856-94f89814c4df
master
quasi 2011-10-13 09:55:45 +00:00
parent 6f0bf02dad
commit f796d6996d
6 changed files with 142 additions and 15 deletions

View File

@ -36,8 +36,6 @@ import com.arsdigita.globalization.GlobalizationHelper;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
/**
* Authoring step to view/edit the simple attributes of the Event content type (and

View File

@ -9,6 +9,7 @@ package com.arsdigita.cms.contenttypes;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.ListPanel;
import com.arsdigita.bebop.SimpleContainer;
import com.arsdigita.bebop.form.OptionGroup;
import com.arsdigita.bebop.form.RadioGroup;
@ -92,25 +93,31 @@ public class PersistentScale extends PersistentWidget {
addScaleEntry("HACK For testing only 1:");
addScaleEntry("HACK For testing only 2:");
addScaleEntry("HACK For testing only 3:");
addScaleEntry("HACK For testing only with a very very long String which may be probably a two-liner, at least on small screens:");
int i = 0;
Iterator questionIter = m_questions.listIterator();
// Component
SimpleContainer container = new SimpleContainer();
ListPanel listPanel = new ListPanel(ListPanel.ORDERED);
// For every question generate a checkbox group with the defined options
while (questionIter.hasNext()) {
SimpleContainer container = new SimpleContainer();
// Question
container.add(new Label((String) questionIter.next()));
// OptionGroup
container.add(generateScaleOptionGroup(i));
// Add to ListPanel
listPanel.add(container);
}
return container;
return listPanel;
}
/**
@ -128,7 +135,8 @@ public class PersistentScale extends PersistentWidget {
try {
radioGroup = (RadioGroup) getOptionList().createOptionGroup(getParameterName() + "_" + nr);
radioGroup.setClassAttr("horizontal");
radioGroup.setLayout(RadioGroup.HORIZONTAL);
radioGroup.setHorizontalAlignment(RadioGroup.RIGHT);
} catch (NullPointerException ex) {
radioGroup = new RadioGroup(getParameterName() + "_" + nr);
}

View File

@ -9,22 +9,40 @@ package com.arsdigita.cms.contenttypes.ui.editors;
* @author quasi
*/
import com.arsdigita.bebop.BoxPanel;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.ControlLink;
import com.arsdigita.bebop.Form;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.SingleSelectionModel;
import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.event.TableActionEvent;
import com.arsdigita.bebop.event.TableActionListener;
import com.arsdigita.bebop.form.Submit;
import com.arsdigita.bebop.table.AbstractTableModelBuilder;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableModel;
import com.arsdigita.bebop.util.GlobalizationUtil;
import com.arsdigita.cms.contenttypes.PersistentScale;
import com.arsdigita.formbuilder.PersistentOptionGroup;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.formbuilder.PersistentOption;
import com.arsdigita.formbuilder.ui.PropertiesEditor;
import com.arsdigita.persistence.DataAssociationCursor;
import com.arsdigita.util.UncheckedWrapperException;
import com.arsdigita.web.RedirectSignal;
import com.arsdigita.xml.Element;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
public class ScaleEditor extends PropertiesEditor {
private Table m_table;
private Form m_editor;
private Form m_buttons;
private Submit m_props;
@ -52,11 +70,19 @@ public class ScaleEditor extends PropertiesEditor {
}
});
String[] tableHeaders = new String[]{"Nr", "Frage", "", ""};
m_table = new Table(new QuestionTableModelBuilder(), tableHeaders);
m_table.setDefaultCellRender(new QuestionTableCellRenderer());
m_table.addTableActionListener(new QuestionTableActionListener());
add(m_table);
m_form = form;
m_control = control;
m_editor = new Form("option_editor", new BoxPanel(BoxPanel.VERTICAL));
m_editor.add(new ScaleOptionEditor(control) {
@Override
protected PersistentOptionGroup getOptionGroup(BigDecimal id)
throws DataObjectNotFoundException {
@ -72,7 +98,6 @@ public class ScaleEditor extends PropertiesEditor {
m_buttons.add(m_props);
m_buttons.add(m_done);
add(m_buttons);
}
@Override
@ -82,19 +107,13 @@ public class ScaleEditor extends PropertiesEditor {
getPropertiesForm().setVisible(state, true);
m_buttons.setVisible(state, false);
m_editor.setVisible(state, false);
} else {
getPropertiesForm().setVisible(state, false);
m_buttons.setVisible(state, true);
m_editor.setVisible(state, true);
}
super.generateXML(state, parent);
}
@Override
@ -102,13 +121,109 @@ public class ScaleEditor extends PropertiesEditor {
super.addProcessListener(l);
m_buttons.addProcessListener(new PropertiesFormProcessListener(l));
}
@Override
public boolean isComplete(PageState state) {
return m_done.isSelected(state);
}
private class QuestionTableModelBuilder extends AbstractTableModelBuilder {
public TableModel makeModel(Table table, PageState state) {
PersistentOptionGroup questions = fetchOptionGroup(state);
return new QuestionTableModel(questions);
}
private class QuestionTableModel implements TableModel {
ArrayList m_questions;
PersistentOption m_option;
public QuestionTableModel(ArrayList questions) {
m_questions = questions;
m_option = null;
}
public Object getKeyAt(int param1) {
return m_option.getID();
}
public Object getElementAt(int param1) {
return m_option;
}
public boolean nextRow() {
boolean hasNext = m_questions.next();
if (hasNext) {
m_option = (PersistentOption) DomainObjectFactory.newInstance(m_questions.getDataObject());
} else {
m_option = null;
}
return hasNext;
}
public int getColumnCount() {
return 2;
}
}
}
private class QuestionTableCellRenderer implements TableCellRenderer {
public Component getComponent(Table table, PageState state, Object value,
boolean param4, Object key, int row, int column) {
PersistentOption question = (PersistentOption) value;
switch (column) {
case 0: return new Label(row + ".");
// XXX
case 1: return new Label(question.getLabel());
case 2: return new ControlLink((String) GlobalizationUtil.globalize("formbuilder.ui.editors.edit").localize());
case 3: return new ControlLink((String) GlobalizationUtil.globalize("formbuilder.ui.editors.delete").localize());
default: return null;
}
}
}
private class QuestionTableActionListener implements TableActionListener {
public void cellSelected(TableActionEvent e) {
PageState state = e.getPageState();
Integer column = e.getColumn();
String key = (String) e.getRowKey();
BigDecimal id = new BigDecimal(key);
PersistentOption option = null;
try {
option = new PersistentOption(id);
} catch (DataObjectNotFoundException ex) {
throw new UncheckedWrapperException("cannot find option", ex);
}
if (column.intValue() == 2) {
m_label.setValue(state, option.getLabel());
} else if (column.intValue() == 3) {
PersistentOptionGroup group = fetchOptionGroup(state);
group.removeOption(option);
option.delete();
m_table.getRowSelectionModel().clearSelection(state);
}
state.clearControlEvent();
try {
throw new RedirectSignal(state.stateAsURL(), true);
} catch (IOException ex) {
throw new UncheckedWrapperException(ex);
}
}
public void headSelected(TableActionEvent e) {
}
}
}

View File

@ -58,6 +58,7 @@ public abstract class BinaryAsset extends Asset {
* @return the base PDL object type for this item. Child classes should
* override this method to return the correct value
*/
@Override
public abstract String getBaseDataObjectType();
/**

View File

@ -46,7 +46,11 @@ import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.cms.util.GlobalizationUtil;
;
;import com.arsdigita.globalization.GlobalizationHelper;
import com.arsdigita.util.LockableImpl;
import java.math.BigDecimal;
import org.apache.log4j.Logger;
import com.arsdigita.globalization.GlobalizationHelper;
import com.arsdigita.globalization.GlobalizationHelper;
import com.arsdigita.util.LockableImpl;

View File

@ -96,6 +96,7 @@
<!-- - - - - - - - -->
<ccm:application name="ccm-cms-dabinimporter"/>
<!-- <ccm:application name="ccm-cms-publicpersonalprofile"/> -->
<ccm:application name="ccm-cms-publicpersonalprofile" />
<ccm:application name="ccm-sci-types-organization"/>
<ccm:application name="ccm-sci-publications"/>
<ccm:application name="ccm-zes-aplaws"/>