/* * Copyright (C) 2014 Language In Interaction * * This program 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; either version 2 * of the License, or (at your option) any later version. * * This program 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, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package nl.ru.languageininteraction.synaesthesia.client.view; import nl.ru.languageininteraction.language.client.view.ComplexView; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import nl.ru.languageininteraction.language.client.view.SimpleView; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.VerticalPanel; import nl.ru.languageininteraction.language.client.model.ColourData; import nl.ru.languageininteraction.synaesthesia.client.model.GroupScoreData; import nl.ru.languageininteraction.synaesthesia.client.model.ScoreData; import nl.ru.languageininteraction.language.client.model.StimuliGroup; /** * @since Oct 14, 2014 10:57:45 AM (creation date) * @author Peter Withers <p.withers@psych.ru.nl> */ public class ReportView extends ComplexView { public void showResults(StimuliGroup stimuliGroup, GroupScoreData calculatedScores) { int columnCount = calculatedScores.getScoreDataList().get(0).getColourData().size(); int row = 0; final FlexTable grid = new FlexTable(); grid.setStylePrimaryName("resultsTablePanel"); final Label titleLabel = new Label(stimuliGroup.getGroupLabel()); titleLabel.setStylePrimaryName("resultsTableTitle"); grid.setWidget(0, 0, titleLabel); grid.getFlexCellFormatter().setColSpan(0, 0, columnCount + 1); row++; for (ScoreData scoreData : calculatedScores.getScoreDataList()) { for (int column = 0; column < columnCount; column++) { final Label label = new Label(scoreData.getStimulus().getValue()); final ColourData colour = scoreData.getColourData().get(column); if (colour == null) { label.getElement().setAttribute("style", "color: grey;background: none;"); } else { String foreground = (colour.getRed() + colour.getGreen() + colour.getBlue() > 128 * 3) ? "#A9A9A9" : "#D3D3D3"; label.getElement().setAttribute("style", "background:" + foreground + ";color:rgb(" + colour.getRed() + "," + colour.getGreen() + "," + colour.getBlue() + ")"); } grid.setWidget(row, column, label); } if (scoreData.getDistance() != null) { final HorizontalPanel bargraphOuter = new HorizontalPanel(); final HorizontalPanel bargraphInner = new HorizontalPanel(); bargraphOuter.setPixelSize(100, 10); bargraphInner.setPixelSize((int) (100.0 / 6 * scoreData.getDistance()), 10); bargraphOuter.setStyleName("bargraphOuter"); bargraphInner.setStyleName("bargraphInner"); bargraphOuter.add(bargraphInner); grid.setWidget(row, columnCount, bargraphOuter); } row++; } outerPanel.add(grid); } }