Package tvbrowser.extras.reminderplugin

Source Code of tvbrowser.extras.reminderplugin.ReminderTableModel

package tvbrowser.extras.reminderplugin;

import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;

import javax.swing.JComboBox;
import javax.swing.table.AbstractTableModel;

import util.ui.Localizer;

/**
* The model for the reminder table.
*/
public class ReminderTableModel extends AbstractTableModel {
  private static final Localizer mLocalizer = Localizer.getLocalizerFor(ReminderTableModel.class);
  private static String mLastSelectedTitle = mLocalizer.msg("all","All");
 
  private ReminderList mList;
  private ReminderListItem[] mProgramItems;
  private JComboBox mTitleFilterBox;

  private boolean mHandleBoxSelection;
 
  /**
   * Creates an instance of this class.
   * <p>
   * @param list The list with the reminders.
   * @param titleFilterBox The title filter selection combo box.
   */
  public ReminderTableModel(ReminderList list, JComboBox titleFilterBox) {
    mList = list;
    mTitleFilterBox = titleFilterBox;
    mHandleBoxSelection = true;
   
    ItemListener[] itemListeners = titleFilterBox.getItemListeners();
   
    for(ItemListener itemListener : itemListeners) {
      titleFilterBox.removeItemListener(itemListener);
    }
   
    insertAvailableTitles();
   
    mTitleFilterBox.addItemListener(new ItemListener() {
      public void itemStateChanged(ItemEvent e) {
        if(e.getStateChange() == ItemEvent.SELECTED && mHandleBoxSelection) {
          mLastSelectedTitle = e.getItem().toString();
          updateTableEntries();
        }
      }
    });
   
    mProgramItems = getItemsForTitleSelection();
  }
 
  /**
   * Updates the entries of the reminder list table.
   * @since 2.7.2
   */
  public synchronized void updateTableEntries() {
    mProgramItems = getItemsForTitleSelection();
    fireTableDataChanged();
  }
 
  private void insertAvailableTitles() {
    mHandleBoxSelection = false;
    mTitleFilterBox.removeAllItems();
    ReminderListItem[] allItems = mList.getReminderItems();
   
    mTitleFilterBox.addItem(mLocalizer.msg("all","All"));
   
    for(ReminderListItem item : allItems) {
      boolean found = false;
      int index = 0;
     
      for(int i = 0; i < mTitleFilterBox.getItemCount(); i++) {
        if (mTitleFilterBox.getItemAt(i).toString().compareToIgnoreCase(item.getProgram().getTitle()) < 0) {
          index = i;
        }
       
        if(mTitleFilterBox.getItemAt(i).equals(item.getProgram().getTitle())) {
          found = true;
          break;
        }
      }
     
      if(!found) {
        mTitleFilterBox.insertItemAt(item.getProgram().getTitle(),index+1);
      }
    }
   
    mHandleBoxSelection = true;
   
    mTitleFilterBox.setSelectedItem(mLastSelectedTitle);
  }
 
  private ReminderListItem[] getItemsForTitleSelection() {
    if(mTitleFilterBox.getSelectedIndex() != 0) {
      ArrayList<ReminderListItem> filteredList = new ArrayList<ReminderListItem>();
      ReminderListItem[] allItems = mList.getReminderItems();
     
      for(ReminderListItem item : allItems) {
        if(mTitleFilterBox.getSelectedItem().equals(item.getProgram().getTitle())) {
          filteredList.add(item);
        }
      }
     
      return filteredList.toArray(new ReminderListItem[filteredList.size()]);
    }
   
    return mList.getReminderItems();
  }

  public String getColumnName(int column) {
    switch (column) {
    case 0:
      return Localizer.getLocalization(Localizer.I18N_PROGRAMS);
    case 1:
      return mLocalizer.msg("timeMenu","Reminder time");
    default:
      return "";
    }
  }

  public int getRowCount() {
    return mProgramItems.length;
  }

  public int getColumnCount() {
    return 2;
  }

  public Object getValueAt(int rowIndex, int columnIndex) {
    if (columnIndex == 0) {
      return mProgramItems[rowIndex].getProgram();
    } else if (columnIndex == 1) {
      return mProgramItems[rowIndex];
    }
   
    return "";
  }

  public boolean isCellEditable(int rowIndex, int columnIndex) {

    if (columnIndex == 1) {
      return true;
    }

    return false;
  }

  public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

    if (columnIndex == 1) {
      mProgramItems[rowIndex].setMinutes(((Integer) aValue).intValue());
    }
  }

  public Class<?> getColumnClass(int c) {
    return getValueAt(0, c).getClass();
  }

}
TOP

Related Classes of tvbrowser.extras.reminderplugin.ReminderTableModel

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.