Package tvbrowser.ui.finder

Source Code of tvbrowser.ui.finder.AbstractDateSelector

/*
* Copyright Michael Keppler
*
* 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 3 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, see <http://www.gnu.org/licenses/>.
*/
package tvbrowser.ui.finder;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JComponent;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;

import tvbrowser.core.TvDataBase;
import tvbrowser.ui.mainframe.MainFrame;
import devplugin.Date;

/**
* common super class for date selection UI components
*
* @author Bananeweizen
*
*/
public abstract class AbstractDateSelector extends JPanel implements
    MouseListener {
  private static final util.ui.Localizer mLocalizer = util.ui.Localizer
      .getLocalizerFor(AbstractDateSelector.class);

  private Date mCurChoosenDate = Date.getCurrentDate();
  protected Date mToday;

  protected abstract void markDate(Date addDays);

  protected void setCurrentDate(final Date d) {
    mCurChoosenDate = d;
  }
 
  protected boolean isValidDate(final Date date) {
    return TvDataBase.getInstance().dataAvailable(date);
  }

  public void markPreviousDate() {
    markDate(mCurChoosenDate.addDays(-1));
  }

  public void markNextDate() {
    markDate(mCurChoosenDate.addDays(1));
  }

  /**
   * @since 2.7
   */
  public void markNextWeek() {
    markDate(mCurChoosenDate.addDays(7));
  }

  /**
   * @since 2.7
   */
  public void markPreviousWeek() {
    markDate(mCurChoosenDate.addDays(-7));

  }

  public Date getSelectedDate() {
    return mCurChoosenDate;
  }

  public void mousePressed(final MouseEvent e) {
    if (e.isPopupTrigger()) {
      showPopup(e);
    }
  }

  public void mouseReleased(final MouseEvent e) {
    if (e.isPopupTrigger()) {
      showPopup(e);
    }
  }
 
  /**
   * Show the Popup of the FinderPanel
   *
   * @param e
   */
  protected void showPopup(final MouseEvent e) {

    JPopupMenu menu = new JPopupMenu();

    JMenuItem update = new JMenuItem(mLocalizer.msg("update", "Update"));

    update.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        MainFrame.getInstance().updateTvData();
      }
    });

    menu.add(update);

    int x = e.getX() + ((JComponent) e.getSource()).getX();
    int y = e.getY() + ((JComponent) e.getSource()).getY();

    menu.show(this, x, y);
  }

  public void mouseClicked(final MouseEvent event) {
  }

  public void mouseEntered(final MouseEvent arg0) {
  }

  public void updateContent() {
    Date date = Date.getCurrentDate();
    if (date.equals(mToday)) {
      return;
    }

    mToday = date;
    rebuildControls();
  }

  abstract protected void rebuildControls();

  protected Date getFirstDate() {
    return Date.getCurrentDate().addDays(-1);
  }
 
  final protected void askForDataUpdate(final Date date) {
    int numberOfDays = date.getNumberOfDaysSince(Date.getCurrentDate());
    if (numberOfDays >= 0) {
      MainFrame.getInstance().askForDataUpdate(
          mLocalizer.msg("noDataFor", "No TV data available for {0}.", date
              .toString()), numberOfDays);
    }
  }
}
TOP

Related Classes of tvbrowser.ui.finder.AbstractDateSelector

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.