001    /*
002     * Sonar, open source software quality management tool.
003     * Copyright (C) 2008-2011 SonarSource
004     * mailto:contact AT sonarsource DOT com
005     *
006     * Sonar is free software; you can redistribute it and/or
007     * modify it under the terms of the GNU Lesser General Public
008     * License as published by the Free Software Foundation; either
009     * version 3 of the License, or (at your option) any later version.
010     *
011     * Sonar is distributed in the hope that it will be useful,
012     * but WITHOUT ANY WARRANTY; without even the implied warranty of
013     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014     * Lesser General Public License for more details.
015     *
016     * You should have received a copy of the GNU Lesser General Public
017     * License along with Sonar; if not, write to the Free Software
018     * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
019     */
020    package org.sonar.plugins.design.ui.dependencies.client;
021    
022    import com.google.gwt.i18n.client.Dictionary;
023    import com.google.gwt.user.client.ui.*;
024    import org.sonar.wsclient.services.Measure;
025    import org.sonar.wsclient.services.Resource;
026    
027    public class Header extends Composite {
028      private FlowPanel header;
029    
030      public Header() {
031        header = new FlowPanel();
032        header.setStyleName("gwt-ViewerHeader");
033        initWidget(header);
034      }
035    
036      private void addMeasure(Panel panel, Resource resource, String key, String label) {
037        Measure measure = resource.getMeasure(key);
038        if (measure != null) {
039          HTML html = new HTML(label + ": ");
040          html.setStyleName("metric");
041          panel.add(html);
042    
043          html = new HTML(measure.getFormattedValue("-"));
044          html.setStyleName("value");
045          panel.add(html);
046        }
047      }
048    
049      public void display(Data data) {
050        header.clear();
051        HorizontalPanel panel = new HorizontalPanel();
052        header.add(panel);
053        Dictionary l10n = Dictionary.getDictionary("l10n");
054        addMeasure(panel, data.getResource(), "classes", l10n.get("depsTab.classes"));
055        addMeasure(panel, data.getResource(), "dit", l10n.get("depsTab.dit"));
056        addMeasure(panel, data.getResource(), "noc", l10n.get("depsTab.noc"));
057        addMeasure(panel, data.getResource(), "rfc", l10n.get("depsTab.rfc"));
058        addLcom4(data, panel);
059      }
060    
061      private void addLcom4(Data data, HorizontalPanel panel) {
062        Measure lcom4 = data.getResource().getMeasure("lcom4");
063        if (lcom4 != null && lcom4.getIntValue()!=null) {
064          HTML html = new HTML(Dictionary.getDictionary("l10n").get("depsTab.lcom4") + ": ");
065          html.setStyleName("metric");
066          panel.add(html);
067    
068          html = new HTML(lcom4.getIntValue() + "");
069          html.setStyleName("value");
070          if (lcom4.getIntValue()>1) {
071            html.addStyleName("red bold");
072          }
073    
074          panel.add(html);
075        }
076      }
077    }