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 @@
+