/////////////////////////////////////////////////////////////////////////////
//
// 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.fibu;
import java.io.Serializable;
import java.math.BigDecimal;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.Model;
import org.projectforge.core.CurrencyFormatter;
import org.projectforge.fibu.kost.BusinessAssessment;
import org.projectforge.web.wicket.WebConstants;
import org.projectforge.web.wicket.bootstrap.GridBuilder;
import org.projectforge.web.wicket.flowlayout.DivPanel;
import org.projectforge.web.wicket.flowlayout.DivTextPanel;
import org.projectforge.web.wicket.flowlayout.FieldsetPanel;
import org.projectforge.web.wicket.flowlayout.IconPanel;
import org.projectforge.web.wicket.flowlayout.IconType;
import org.projectforge.web.wicket.flowlayout.TextStyle;
public abstract class BusinessAssessment4Fieldset implements Serializable
{
private static final long serialVersionUID = -1729601074426329958L;
/**
* @param id
*/
@SuppressWarnings("serial")
public BusinessAssessment4Fieldset(final GridBuilder gridBuilder)
{
final FieldsetPanel fs = new FieldsetPanel(gridBuilder.getPanel(), gridBuilder.getString("fibu.businessAssessment")) {
@Override
public boolean isVisible() {
return BusinessAssessment4Fieldset.this.isVisible();
};
}.suppressLabelForWarning();
fs.add(new DivTextPanel(fs.newChildId(), new Model<String>() {
@Override
public String getObject()
{
final BusinessAssessment bwa = getBusinessAssessment();
return fs.getString("fibu.businessAssessment.overallPerformance")
+ ": "
+ CurrencyFormatter.format(bwa != null ? bwa.getOverallPerformanceRowAmount() : BigDecimal.ZERO)
+ WebConstants.HTML_TEXT_DIVIDER;
}
}, TextStyle.BLUE));
fs.add(new DivTextPanel(fs.newChildId(), new Model<String>() {
@Override
public String getObject()
{
final BusinessAssessment bwa = getBusinessAssessment();
return fs.getString("fibu.businessAssessment.merchandisePurchase")
+ ": "
+ CurrencyFormatter.format(bwa != null ? bwa.getMerchandisePurchaseRowAmount() : BigDecimal.ZERO)
+ WebConstants.HTML_TEXT_DIVIDER;
}
}));
fs.add(new DivTextPanel(fs.newChildId(), new Model<String>() {
@Override
public String getObject()
{
final BusinessAssessment bwa = getBusinessAssessment();
return fs.getString("fibu.businessAssessment.preliminaryResult")
+ ": "
+ CurrencyFormatter.format(bwa != null ? bwa.getPreliminaryResultRowAmount() : BigDecimal.ZERO);
}
}));
final RepeatingView repeater = new RepeatingView(FieldsetPanel.DESCRIPTION_SUFFIX_ID) {
/**
* @see org.apache.wicket.Component#isVisible()
*/
@Override
public boolean isVisible()
{
return getBusinessAssessment() != null;
}
};
fs.setDescriptionSuffix(repeater);
IconPanel icon = new IconPanel(repeater.newChildId(), IconType.PLUS_SIGN).setOnClick("javascript:showBusinessAssessment();");
icon.setMarkupId("showBusinessAssessment").setOutputMarkupId(true);
repeater.add(icon);
icon = new IconPanel(repeater.newChildId(), IconType.MINUS_SIGN).setOnClick("javascript:hideBusinessAssessment();").appendAttribute(
"style", "display: none;");
icon.setMarkupId("hideBusinessAssessment").setOutputMarkupId(true);
repeater.add(icon);
gridBuilder.newGridPanel();
final DivPanel businessAssessmentPanel = gridBuilder.getPanel();
businessAssessmentPanel.setMarkupId("businessAssessment");
businessAssessmentPanel.add(AttributeModifier.append("style", "display: none;"));
final FieldsetPanel fieldset = new FieldsetPanel(businessAssessmentPanel, "").suppressLabelForWarning();
final Label label = new Label(DivTextPanel.WICKET_ID, new Model<String>() {
/**
* @see org.apache.wicket.model.Model#getObject()
*/
@Override
public String getObject()
{
final BusinessAssessment businessAssessment = getBusinessAssessment();
if (businessAssessment == null) {
return "";
}
return businessAssessment.asHtml();
}
});
label.setEscapeModelStrings(false);
fieldset.add(new DivTextPanel(fieldset.newChildId(), label).setMarkupId("businessAssessment"));
}
protected boolean isVisible()
{
return true;
}
protected abstract BusinessAssessment getBusinessAssessment();
}