de.dal33t.powerfolder.ui.status.LicenseInfoSection.java Source code

Java tutorial

Introduction

Here is the source code for de.dal33t.powerfolder.ui.status.LicenseInfoSection.java

Source

/*
 * Copyright 2004 - 2008 Christian Sprajc. All rights reserved.
 *
 * This file is part of PowerFolder.
 *
 * PowerFolder 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.
 *
 * PowerFolder 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 PowerFolder. If not, see <http://www.gnu.org/licenses/>.
 *
 * $Id: TrialInfoSection.java 5495 2008-10-24 04:59:13Z harry $
 */
package de.dal33t.powerfolder.ui.status;

import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.AbstractAction;
import javax.swing.JPanel;
import javax.swing.JProgressBar;

import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.factories.Borders;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

import de.dal33t.powerfolder.Controller;
import de.dal33t.powerfolder.ui.PFUIComponent;
import de.dal33t.powerfolder.ui.util.Icons;
import de.dal33t.powerfolder.ui.widget.ActionLabel;
import de.dal33t.powerfolder.util.Translation;

/**
 * Class to render the online storage trial info on the status tab.
 */
public class LicenseInfoSection extends PFUIComponent {

    private JPanel uiComponent;

    private JProgressBar progressBar;
    private ActionLabel infoLabel;

    /**
     * Constructor.
     * 
     * @param controller
     */
    public LicenseInfoSection(Controller controller) {
        super(controller);
    }

    /**
     * @return the uiComponent, creating first if necessary.
     */
    public JPanel getUIComponent() {
        if (uiComponent == null) {
            initComponents();
            buildUIComponent();
        }
        return uiComponent;
    }

    /**
     * Build the uiComponent. Adds separator, progress bar and label.
     */
    private void buildUIComponent() {
        FormLayout layout = new FormLayout("100dlu, pref:grow", "pref, pref");
        // space prog label
        PanelBuilder builder = new PanelBuilder(layout);
        CellConstraints cc = new CellConstraints();

        builder.add(progressBar, cc.xy(1, 1));
        builder.add(infoLabel.getUIComponent(), cc.xywh(1, 2, 2, 1));

        uiComponent = builder.getPanel();
    }

    /**
     * Initialize the required components.
     */
    private void initComponents() {
        MyClickListener clickListener = new MyClickListener();
        progressBar = new JProgressBar(0, 0, 100);
        // progressBar.setBorder(Borders.createEmptyBorder("0, 0, 3dlu, 0"));
        progressBar.addMouseListener(clickListener);
        infoLabel = new ActionLabel(getController(), new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                getApplicationModel().getLicenseModel().getActivationAction().actionPerformed(e);
            }
        });
        infoLabel.getUIComponent().setBorder(Borders.createEmptyBorder("3dlu, 0, 0, 0"));

        setDaysValid(-1);
    }

    void setDaysValid(int days) {
        boolean aboutToExpire = days != -1 && days < 30
                && !getController().getOSClient().getAccount().willAutoRenew();
        boolean disabled = !getController().getNodeManager().isStarted();

        if (disabled) {
            infoLabel.setIcon(Icons.getIconById(Icons.WARNING));
            infoLabel.setText(Translation.getTranslation("pro.status_tab.disabled"));
            infoLabel.setToolTipText(Translation.getTranslation("pro.status_tab.disabled.tips"));
            infoLabel.getUIComponent().setVisible(true);
            progressBar.setVisible(false);
        } else if (aboutToExpire) {
            if (days < 5) {
                infoLabel.setIcon(Icons.getIconById(Icons.WARNING));
            } else {
                infoLabel.setIcon(null);
            }
            infoLabel.setText(Translation.getTranslation("pro.status_tab.remaining", String.valueOf(days)));
            infoLabel.setToolTipText(
                    Translation.getTranslation("pro.status_tab.remaining.tips", String.valueOf(days)));
            infoLabel.getUIComponent().setVisible(true);
            progressBar.setValue(100 * days / 30);
            progressBar.setToolTipText(
                    Translation.getTranslation("pro.status_tab.remaining.tips", String.valueOf(days)));
            progressBar.setVisible(true);
        } else {
            infoLabel.setIcon(null);
            infoLabel.getUIComponent().setVisible(false);
            progressBar.setVisible(false);
        }

    }

    private class MyClickListener extends MouseAdapter {

        @Override
        public void mouseClicked(MouseEvent e) {
            if (getApplicationModel().getLicenseModel().getActivationAction() != null) {
                getApplicationModel().getLicenseModel().getActivationAction()
                        .actionPerformed(new ActionEvent(e.getSource(), 0, "clicked"));
            }
        }

    }

}