diff --git a/ccm-cms-types-event/src/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java b/ccm-cms-types-event/src/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java index 7820aa774..8ed221511 100755 --- a/ccm-cms-types-event/src/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java +++ b/ccm-cms-types-event/src/com/arsdigita/cms/contenttypes/ui/EventPropertiesStep.java @@ -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 diff --git a/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/PersistentScale.java b/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/PersistentScale.java index 7dd213ff8..3b8bbf726 100644 --- a/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/PersistentScale.java +++ b/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/PersistentScale.java @@ -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); } diff --git a/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/ui/editors/ScaleEditor.java b/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/ui/editors/ScaleEditor.java index 3b27590d0..1305292f3 100644 --- a/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/ui/editors/ScaleEditor.java +++ b/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/ui/editors/ScaleEditor.java @@ -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) { + } } } diff --git a/ccm-cms/src/com/arsdigita/cms/BinaryAsset.java b/ccm-cms/src/com/arsdigita/cms/BinaryAsset.java index f8653e7ce..ffdc2bf96 100755 --- a/ccm-cms/src/com/arsdigita/cms/BinaryAsset.java +++ b/ccm-cms/src/com/arsdigita/cms/BinaryAsset.java @@ -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(); /** diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactTable.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactTable.java index 9401dd02f..b0d266a84 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactTable.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactTable.java @@ -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; diff --git a/ccm-quasi-aplaws/bundles/devel/cfg/project.xml b/ccm-quasi-aplaws/bundles/devel/cfg/project.xml index b3ca1d1f0..4a080ec49 100644 --- a/ccm-quasi-aplaws/bundles/devel/cfg/project.xml +++ b/ccm-quasi-aplaws/bundles/devel/cfg/project.xml @@ -96,6 +96,7 @@ +