/ModelibraWicket/src/org/modelibra/wicket/neighbor/ParentChildPropertyDisplayListListView.java

https://github.com/DarioGT/Modelibra-Family · Java · 110 lines · 73 code · 16 blank · 21 comment · 10 complexity · c5aae5bdd5db602d07b8f86583091252 MD5 · raw file

  1. /*
  2. * Modelibra
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy of
  6. * the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations under
  14. * the License.
  15. */
  16. package org.modelibra.wicket.neighbor;
  17. import org.apache.wicket.markup.html.list.ListItem;
  18. import org.apache.wicket.markup.html.panel.Panel;
  19. import org.modelibra.IEntity;
  20. import org.modelibra.config.PropertyConfig;
  21. import org.modelibra.type.PropertyClass;
  22. import org.modelibra.type.ValidationType;
  23. import org.modelibra.wicket.app.DomainApp;
  24. import org.modelibra.wicket.container.DmListView;
  25. import org.modelibra.wicket.view.View;
  26. import org.modelibra.wicket.view.ViewModel;
  27. import org.modelibra.wicket.widget.ExternalLinkPanel;
  28. import org.modelibra.wicket.widget.LabelPanel;
  29. /**
  30. * Displays a parent child property list as a list view.
  31. *
  32. * @author Vensada Okanovic
  33. * @version 2007-11-28
  34. */
  35. public class ParentChildPropertyDisplayListListView extends DmListView {
  36. private static final long serialVersionUID = 102380L;
  37. private ViewModel viewModel;
  38. private View view;
  39. private String modelCode;
  40. public ParentChildPropertyDisplayListListView(final ViewModel viewModel,
  41. final View view) {
  42. super(viewModel, view);
  43. this.viewModel = viewModel;
  44. this.view = view;
  45. modelCode = viewModel.getModel().getModelConfig().getCode();
  46. }
  47. protected void populateItem(final ListItem item) {
  48. IEntity<?> parentEntity = (IEntity<?>) item.getModelObject();
  49. DomainApp app = (DomainApp) getApplication();
  50. ViewModel parentModel = new ViewModel();
  51. parentModel.copyPropertiesFrom(viewModel);
  52. parentModel.setEntity(parentEntity);
  53. View parentView = new View();
  54. parentView.copyPropertiesFrom(view);
  55. parentView.setWicketId("parentProperty");
  56. PropertyConfig parentPropertyConfig = parentModel.getPropertyConfig();
  57. Panel parentPropertyPanel;
  58. String parentPropertyClass = parentPropertyConfig.getPropertyClass();
  59. if (parentPropertyClass.equals(PropertyClass.getUrl())
  60. || parentPropertyClass.equals(PropertyClass.getEmail())) {
  61. parentPropertyPanel = new ExternalLinkPanel(parentModel, parentView);
  62. item.add(parentPropertyPanel);
  63. } else if (parentPropertyConfig.getPropertyClass().equals(
  64. PropertyClass.getString())
  65. && parentPropertyConfig.isValidateType()) {
  66. if (parentPropertyConfig.getValidationType().equals(
  67. ValidationType.getUrl())
  68. || parentPropertyConfig.getValidationType().equals(
  69. ValidationType.getEmail())) {
  70. parentPropertyPanel = new ExternalLinkPanel(parentModel,
  71. parentView);
  72. item.add(parentPropertyPanel);
  73. } else {
  74. parentPropertyPanel = new LabelPanel(parentModel, parentView);
  75. item.add(parentPropertyPanel);
  76. }
  77. } else {
  78. parentPropertyPanel = new LabelPanel(parentModel, parentView);
  79. item.add(parentPropertyPanel);
  80. }
  81. if (!app.getAccessPoint().isPropertyDisplayAllowed(getAppSession(),
  82. parentPropertyConfig)) {
  83. parentPropertyPanel.setVisible(false);
  84. }
  85. ViewModel childModel = new ViewModel();
  86. childModel.copyPropertiesFrom(viewModel);
  87. childModel.setEntity(parentEntity);
  88. View childView = new View();
  89. childView.copyPropertiesFrom(view);
  90. childView.setWicketId("childPropertyList");
  91. item.add(app.getViewMeta(modelCode).getPanel(
  92. "ChildPropertyDisplayListPanel", childModel, childView));
  93. }
  94. }