Package org.projectforge.web.wicket.mobileflowlayout

Source Code of org.projectforge.web.wicket.mobileflowlayout.LabelValueDataTablePanel

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.web.wicket.mobileflowlayout;

import org.apache.commons.lang.StringUtils;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.projectforge.core.I18nEnum;
import org.projectforge.web.address.AddressMobileViewPage;
import org.projectforge.web.mobile.ActionLinkPanel;
import org.projectforge.web.mobile.ActionLinkType;
import org.projectforge.web.mobile.CollapsiblePanel;
import org.projectforge.web.wicket.flowlayout.FieldProperties;
import org.projectforge.web.wicket.flowlayout.FieldType;

/**
* Represents a table with two columns. This table is used for displaying data objects (refer {@link AddressMobileViewPage} as an example).
* @author Kai Reinhard (k.reinhard@micromata.de)
*
*/
public class LabelValueDataTablePanel extends Panel
{
  private static final long serialVersionUID = 384228381018466893L;

  private RepeatingView rows;

  /**
   */
  public LabelValueDataTablePanel(final CollapsiblePanel parent)
  {
    this(parent.newChildId());
    parent.add(this);
  }

  public LabelValueDataTablePanel(final String id)
  {
    super(id);
    add(rows = new RepeatingView("row"));
  }

  public void addRow(final String label, final String value)
  {
    if (StringUtils.isBlank(value) == true) {
      // Do nothing.
      return;
    }
    final WebMarkupContainer row = new WebMarkupContainer(rows.newChildId());
    rows.add(row);
    row.add(new Label("label", label));
    row.add(new Label("value", value));
  }

  public void addRow(final FieldProperties< ? > fieldProperties)
  {
    final Object valueObject = fieldProperties.getValue();
    if (valueObject == null) {
      // Do nothing.
      return;
    }
    String valueString = fieldProperties.getValueAsString();
    if (valueString == null) {
      if (valueObject instanceof I18nEnum) {
        valueString = getString(((I18nEnum) valueObject).getI18nKey());
      } else {
        valueString = valueObject.toString();
      }
      if (StringUtils.isBlank(valueString) == true) {
        // Do nothing.
        return;
      }
      fieldProperties.setValueAsString(valueString);
    }
    final WebMarkupContainer row = new WebMarkupContainer(rows.newChildId());
    rows.add(row);
    row.add(new Label("label", getString(fieldProperties.getLabel())));
    final FieldType type = fieldProperties.getFieldType();
    if (type == FieldType.WEB_PAGE) {
      row.add(new ActionLinkPanel("value", ActionLinkType.EXTERNAL_URL, valueString));
    } else if (type == FieldType.PHONE_NO) {
      row.add(new ActionLinkPanel("value", ActionLinkType.CALL, valueString));
    } else if (type == FieldType.MOBILE_PHONE_NO) {
      row.add(new ActionLinkPanel("value", ActionLinkType.CALL_AND_SMS, valueString));
    } else if (type == FieldType.E_MAIL) {
      row.add(new ActionLinkPanel("value", ActionLinkType.MAIL, valueString));
    } else {
      row.add(new Label("value", valueString));
    }
  }
}
TOP

Related Classes of org.projectforge.web.wicket.mobileflowlayout.LabelValueDataTablePanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.