@Inject
  protected LicenceAndEditionStatusLabel(DCGlassPane glassPane) {
    super(EDITION);

    setForeground(WidgetUtils.BG_COLOR_BRIGHTEST);

    if (Version.isCommunityEdition()) {
      _communityEditionInformationPanel = new CommunityEditionInformationPanel(glassPane);
      setIcon(
          ImageManager.getInstance()
              .getImageIcon("images/editions/community.png", IconUtils.ICON_SIZE_SMALL));
      setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
      addMouseListener(
          new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
              onMouseClick();
            }
          });
    } else {
      setIcon(
          ImageManager.getInstance()
              .getImageIcon("images/window/app-icon.png", IconUtils.ICON_SIZE_SMALL));
      _communityEditionInformationPanel = null;
    }
  }
/** Label that shows the current edition of DataCleaner */
public class LicenceAndEditionStatusLabel extends JLabel {

  private static final long serialVersionUID = 1L;

  private static final String EDITION = Version.getEdition();

  private final CommunityEditionInformationPanel _communityEditionInformationPanel;

  @Inject
  protected LicenceAndEditionStatusLabel(DCGlassPane glassPane) {
    super(EDITION);

    setForeground(WidgetUtils.BG_COLOR_BRIGHTEST);

    if (Version.isCommunityEdition()) {
      _communityEditionInformationPanel = new CommunityEditionInformationPanel(glassPane);
      setIcon(
          ImageManager.getInstance()
              .getImageIcon("images/editions/community.png", IconUtils.ICON_SIZE_SMALL));
      setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
      addMouseListener(
          new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
              onMouseClick();
            }
          });
    } else {
      setIcon(
          ImageManager.getInstance()
              .getImageIcon("images/window/app-icon.png", IconUtils.ICON_SIZE_SMALL));
      _communityEditionInformationPanel = null;
    }
  }

  protected void onMouseClick() {
    if (_communityEditionInformationPanel.isVisible()) {
      _communityEditionInformationPanel.moveOut(0);
    } else {
      _communityEditionInformationPanel.moveIn(0);
    }
  }
}
  private JComponent getAboutPanel() {
    final DCLabel headerLabel =
        DCLabel.dark("DataCleaner " + Version.getEdition() + " " + Version.getVersion());

    headerLabel.setFont(WidgetUtils.FONT_HEADER1);

    final ImageManager imageManager = ImageManager.get();

    final JButton datacleanerButton =
        new JButton(imageManager.getImageIcon("images/links/datacleaner.png"));
    datacleanerButton.addActionListener(new OpenBrowserAction("http://datacleaner.org"));
    datacleanerButton.setToolTipText("Visit the DataCleaner website");
    datacleanerButton.setBorder(null);

    final JButton bloggerButton =
        new JButton(imageManager.getImageIcon("images/links/blogger.png"));
    bloggerButton.addActionListener(new OpenBrowserAction("http://kasper.eobjects.org"));
    bloggerButton.setToolTipText("Follow along at our blog");
    bloggerButton.setBorder(null);

    final JButton linkedInButton =
        new JButton(imageManager.getImageIcon("images/links/linkedin.png"));
    linkedInButton.addActionListener(
        new OpenBrowserAction("http://www.linkedin.com/groups?gid=3352784"));
    linkedInButton.setToolTipText("Join the DataCleaner LinkedIn group");
    linkedInButton.setBorder(null);

    final DCPanel buttonPanel = new DCPanel();
    buttonPanel.setLayout(new HorizontalLayout());
    buttonPanel.add(datacleanerButton);
    buttonPanel.add(Box.createHorizontalStrut(10));
    buttonPanel.add(bloggerButton);
    buttonPanel.add(Box.createHorizontalStrut(10));
    buttonPanel.add(linkedInButton);

    final HumanInferenceToolbarButton humanInferenceButton =
        new HumanInferenceToolbarButton(
            imageManager.getImageIcon("images/powered-by-human-inference-bright.png"));

    final DCPanel contentPanel = new DCPanel();
    contentPanel.setLayout(new VerticalLayout());
    contentPanel.add(headerLabel);
    contentPanel.add(
        DCLabel.dark(
            "Copyright (C) " + Calendar.getInstance().get(Calendar.YEAR) + " Human Inference"));
    contentPanel.add(Box.createVerticalStrut(20));
    contentPanel.add(DCPanel.around(humanInferenceButton));

    if (Version.isCommunityEdition()) {
      contentPanel.add(Box.createVerticalStrut(20));
      contentPanel.add(DCLabel.dark("Licensed under the LGPL license"));
      contentPanel.add(DCLabel.dark("(see Licensing tab)."));
    } else {
      final String licenseKey = Version.getLicenseKey();
      contentPanel.add(Box.createVerticalStrut(20));
      contentPanel.add(DCLabel.dark("License key: " + licenseKey));
    }

    contentPanel.add(Box.createVerticalStrut(30));
    contentPanel.add(DCLabel.dark("Java runtime information:"));
    contentPanel.add(DCLabel.dark("  " + System.getProperty("java.vm.name")));
    contentPanel.add(DCLabel.dark("  by " + System.getProperty("java.vm.vendor")));
    contentPanel.add(DCLabel.dark("  version " + System.getProperty("java.runtime.version")));
    contentPanel.add(Box.createVerticalStrut(30));
    contentPanel.add(buttonPanel);

    final DCPanel mainPanel =
        new DCPanel(
            imageManager.getImage("images/window/app-icon-hires.png"),
            97,
            10,
            WidgetUtils.BG_COLOR_BRIGHT,
            WidgetUtils.BG_COLOR_BRIGHTEST);
    mainPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
    mainPanel.setLayout(new VerticalLayout());
    mainPanel.add(contentPanel);

    return mainPanel;
  }