Package tvbrowser.extras.favoritesplugin.dlgs

Source Code of tvbrowser.extras.favoritesplugin.dlgs.EditFavoriteDialog

/*
* TV-Browser
* Copyright (C) 04-2003 Martin Oberhauser (martin@tvbrowser.org)
*
* 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 2
* 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*
* CVS information:
*  $RCSfile$
*   $Source$
*     $Date: 2010-09-09 21:00:25 +0200 (Thu, 09 Sep 2010) $
*   $Author: bananeweizen $
* $Revision: 6753 $
*/

package tvbrowser.extras.favoritesplugin.dlgs;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;

import tvbrowser.extras.common.DayListCellRenderer;
import tvbrowser.extras.common.LimitationConfiguration;
import tvbrowser.extras.common.ReminderConfiguration;
import tvbrowser.extras.favoritesplugin.FavoriteConfigurator;
import tvbrowser.extras.favoritesplugin.FavoritesPlugin;
import tvbrowser.extras.favoritesplugin.core.Favorite;
import tvbrowser.extras.reminderplugin.ReminderPlugin;
import tvbrowser.extras.reminderplugin.ReminderPluginProxy;
import util.exc.ErrorHandler;
import util.exc.TvBrowserException;
import util.ui.ChannelChooserDlg;
import util.ui.Localizer;
import util.ui.PluginChooserDlg;
import util.ui.ScrollableJPanel;
import util.ui.TabLayout;
import util.ui.TimePeriodChooser;
import util.ui.UiUtilities;
import util.ui.WindowClosingIf;

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

import devplugin.Channel;
import devplugin.ProgramReceiveIf;
import devplugin.ProgramReceiveTarget;

/**
* A class for editing favorites.
*/
public class EditFavoriteDialog extends JDialog implements WindowClosingIf {

  private static final util.ui.Localizer mLocalizer = util.ui.Localizer.getLocalizerFor(EditFavoriteDialog.class);

  private Favorite mFavorite;

  private JCheckBox mReminderAfterDownloadCb;

  private JCheckBox mUseReminderCb;

  private JCheckBox mLimitChannelCb;

  private JCheckBox mLimitTimeCb;

  private JButton mChangeChannelsBtn;

  private JLabel mChannelLabel;

  private Channel[] mChannelArr;

  private JComboBox mLimitDaysCB;

  private TimePeriodChooser mTimePeriodChooser;

  private JCheckBox mPassProgramsCheckBox;

  private ProgramReceiveTarget[] mPassProgramPlugins;

  private JLabel mPassProgramsLb;

  private JButton mChangePassProgramsBtn;

  private boolean mOkWasPressed;

  private FavoriteConfigurator mFavoriteConfigurator;

  private JLabel mName;

  private ExclusionPanel mExclusionPanel;

  /**
   * Creates an instance of this dialog.
   * <p>
   * @param parent The parent frame of this dialog.
   * @param fav The favorite for this dialog.
   */
  public EditFavoriteDialog(Window parent, Favorite fav) {
    super(parent);
    setModal(true);
    init(fav);
  }

  private void init(Favorite fav) {
    UiUtilities.registerForClosing(this);
    mOkWasPressed = false;
    mFavorite = fav;
    mFavoriteConfigurator = mFavorite.createConfigurator();

    setTitle(mLocalizer.msg("title", "Edit Favorite"));

    ScrollableJPanel rootPn = new ScrollableJPanel();
    rootPn.setLayout(new BorderLayout());
    rootPn.setBorder(Borders.DLU4_BORDER);

    JPanel content = new JPanel(new TabLayout(1));
    content.setBorder(new EmptyBorder(10, 10, 10, 10));

    content.add(DefaultComponentFactory.getInstance().createSeparator(mLocalizer.msg("section.head", "Favorite")));

    content.add(createTitleChangePanel());
    content.add(mFavoriteConfigurator.createConfigurationPanel());

    content.add(DefaultComponentFactory.getInstance().createSeparator(mLocalizer.msg("section.details", "Details")));
    content.add(createLimitPanel());

    content.add(DefaultComponentFactory.getInstance().createSeparator(
        mLocalizer.msg("section.exclusions", "Exclusion Criteria")));
    content.add(mExclusionPanel = new ExclusionPanel(mFavorite.getExclusions(),this,mFavorite)/*createExclusionPanel()*/);

    content.add(DefaultComponentFactory.getInstance().createSeparator(mLocalizer.msg("section.reminder", "Reminder")));
    content.add(createReminderPanel());

    content.add(DefaultComponentFactory.getInstance().createSeparator(mLocalizer.msg("section.extras", "Extras")));
    content.add(createExtrasPanel());

    JButton cancelBtn = new JButton(Localizer.getLocalization(Localizer.I18N_CANCEL));
    JButton okBtn = new JButton(Localizer.getLocalization(Localizer.I18N_OK));

    cancelBtn.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        setVisible(false);
      }
    });

    okBtn.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        saveAndClose();
      }
    });

    ButtonBarBuilder2 buttons = new ButtonBarBuilder2();
    buttons.addGlue();
    buttons.addButton(new JButton[] { okBtn, cancelBtn });

    rootPn.add(BorderLayout.NORTH, content);
    rootPn.add(BorderLayout.SOUTH, buttons.getPanel());

    getRootPane().setDefaultButton(okBtn);

    JScrollPane scrollPane = new JScrollPane(rootPn);
    scrollPane.setBorder(null);

    setContentPane(scrollPane);
    pack();

    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

    if (d.height < getHeight()) {
      setSize(getWidth(), d.height);
    }
  }

  private JPanel createTitleChangePanel() {
    CellConstraints cc = new CellConstraints();

    if(mFavorite.getName().length() < 1) {
      mName = new JLabel(mLocalizer.msg("defaultName","Is going to be created automatically"));
      mName.setEnabled(false);
    } else {
      mName = new JLabel(mFavorite.getName());
    }

    JPanel panel = new JPanel(new FormLayout("pref,3dlu,30dlu:grow,3dlu,pref","pref"));
    panel.add(new JLabel(mLocalizer.msg("name","Name:")), cc.xy(1,1));
    panel.add(mName, cc.xy(3,1));

    JButton changeTitle = new JButton(mLocalizer.msg("changeName","Change name"));
    changeTitle.setFocusable(false);

    changeTitle.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        setFavoriteName();
      }
    });

    panel.add(changeTitle, cc.xy(5,1));

    return panel;
  }

  private void setFavoriteName() {
    String newName = (String) JOptionPane.showInputDialog(this,
        mLocalizer.msg("name","Name:"), mLocalizer.msg("renameFav","Rename Favorite"), JOptionPane.PLAIN_MESSAGE, null, null,
        mName.getText());
    if (isValidName(newName)) {
      mName.setText(newName);
      mName.setEnabled(true);
    }
    else if(mName.getText().compareTo(mLocalizer.msg("defaultName","Is going to be created automatically")) == 0) {
      mName.setEnabled(false);
    }
  }

  private static boolean isValidName(String name) {
    return name != null && name.length() > 0 &&
        (name.compareTo(mLocalizer.msg("defaultName","Is going to be created automatically")) != 0);
  }

  private String getChannelString(Channel[] channelArr) {
    if (channelArr != null && channelArr.length > 0) {
      StringBuilder buf = new StringBuilder();
      for (int i = 0; i < channelArr.length - 1; i++) {
        buf.append(channelArr[i]).append(", ");
      }
      if (channelArr.length > 0) {
        buf.append(channelArr[channelArr.length - 1]);
      }
      String result = buf.toString();
      if (result.length() > 50) {
        result = result.substring(0, 50);
        int inx = result.lastIndexOf(',');
        result = result.substring(0, inx) + ", ...";
      }

      if(mChannelLabel != null) {
        mChannelLabel.setForeground((new JLabel()).getForeground());
      }

      return result;
    } else if(!mLimitChannelCb.isSelected()){
      return mLocalizer.msg("allChannels", "All channels");
    } else {
      return mLocalizer.msg("noChannels", "No channels");
    }
  }

  private void setLimitChannelEnabled(boolean enabled) {
    mChangeChannelsBtn.setEnabled(enabled);
    mChannelLabel.setEnabled(enabled);
    mChannelLabel.setText(getChannelString(mChannelArr));

    if(mChannelArr == null || mChannelArr.length < 1) {
      mChannelLabel.setForeground(Color.red);
    } else {
      mChannelLabel.setForeground((new JLabel()).getForeground());
    }
  }

  private JPanel createLimitPanel() {

    int from, to;
    if (mFavorite.getLimitationConfiguration().isLimitedByTime()) {
      from = mFavorite.getLimitationConfiguration().getTimeFrom();
      to = mFavorite.getLimitationConfiguration().getTimeTo();
    } else {
      from = 0;
      to = 24 * 60 - 1;
    }

    mTimePeriodChooser = new TimePeriodChooser(from, to, TimePeriodChooser.ALIGN_RIGHT);

    mChangeChannelsBtn = new JButton(mLocalizer.msg("change", "Change"));
    mChannelArr = mFavorite.getLimitationConfiguration().getChannels();

    mLimitChannelCb = new JCheckBox(mLocalizer.msg("channels", "Channels:") + " ");
    mLimitTimeCb = new JCheckBox(mLocalizer.msg("time", "Time:") + " ");

    mChannelLabel = new JLabel(getChannelString(mChannelArr));

    mLimitDaysCB = new JComboBox(new Object[] {
        LimitationConfiguration.DAYLIMIT_DAILY,
        LimitationConfiguration.DAYLIMIT_WEEKDAY,
        LimitationConfiguration.DAYLIMIT_WEEKEND,
        LimitationConfiguration.DAYLIMIT_MONDAY,
        LimitationConfiguration.DAYLIMIT_TUESDAY,
        LimitationConfiguration.DAYLIMIT_WEDNESDAY,
        LimitationConfiguration.DAYLIMIT_THURSDAY,
        LimitationConfiguration.DAYLIMIT_FRIDAY,
        LimitationConfiguration.DAYLIMIT_SATURDAY,
        LimitationConfiguration.DAYLIMIT_SUNDAY, });
    mLimitDaysCB.setRenderer(new DayListCellRenderer());
    mLimitDaysCB.setSelectedItem(mFavorite.getLimitationConfiguration()
        .getDayLimit());

    boolean isLimitedByChannel = mFavorite.getLimitationConfiguration().isLimitedByChannel();
    boolean isLimitedByTime = mFavorite.getLimitationConfiguration().isLimitedByTime();

    mLimitChannelCb.setSelected(isLimitedByChannel);
    mLimitTimeCb.setSelected(isLimitedByTime);

    setLimitChannelEnabled(isLimitedByChannel);
    mTimePeriodChooser.setEnabled(isLimitedByTime);
    mLimitDaysCB.setEnabled(mLimitTimeCb.isSelected());

    mLimitChannelCb.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        setLimitChannelEnabled(mLimitChannelCb.isSelected());
      }
    });

    mLimitTimeCb.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        mTimePeriodChooser.setEnabled(mLimitTimeCb.isSelected());
        mLimitDaysCB.setEnabled(mLimitTimeCb.isSelected());
      }
    });

    mChangeChannelsBtn.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        ChannelChooserDlg dlg = new ChannelChooserDlg((Window)EditFavoriteDialog.this, mChannelArr, null,
            ChannelChooserDlg.SELECTABLE_ITEM_LIST);
        UiUtilities.centerAndShow(dlg);
        Channel[] chArr = dlg.getChannels();
        if (chArr != null) {
          mChannelArr = dlg.getChannels();
          if (mChannelArr.length == 0) {
            mLimitChannelCb.setSelected(false);
            setLimitChannelEnabled(false);
          }
          mChannelLabel.setText(getChannelString(mChannelArr));
        }
      }
    });

    CellConstraints cc = new CellConstraints();

    JPanel limitPn = new JPanel(new BorderLayout());
    JPanel pn = new JPanel(new FormLayout("pref, 3dlu, pref", "pref"));
    pn.add(mTimePeriodChooser, cc.xy(1,1));
    pn.add(mLimitDaysCB, cc.xy(3,1));
    limitPn.add(pn, BorderLayout.EAST);

    PanelBuilder panelBuilder = new PanelBuilder(new FormLayout("pref, pref:grow, pref", "pref, 5dlu, pref"));

    panelBuilder.add(mLimitChannelCb, cc.xy(1, 1));
    panelBuilder.add(mChannelLabel, cc.xy(2, 1));
    panelBuilder.add(mChangeChannelsBtn, cc.xy(3, 1));
    panelBuilder.add(mLimitTimeCb, cc.xy(1, 3));
    panelBuilder.add(limitPn, cc.xyw(2, 3, 2));

    return panelBuilder.getPanel();
  }

  private JPanel createReminderPanel() {
    JPanel panel = new JPanel(new GridLayout(-1, 1));
    panel.add(mUseReminderCb = new JCheckBox(mLocalizer.msg("reminderWindow", "Reminder window")));

    String[] s = mFavorite.getReminderConfiguration().getReminderServices();
    for (String element : s) {
      if (ReminderConfiguration.REMINDER_DEFAULT.equals(element)) {
        mUseReminderCb.setSelected(true);
      }
    }

    return panel;
  }

/* private JPanel createExclusionPanel() {

    JPanel content = new JPanel(new FormLayout("5dlu, fill:pref:grow, 3dlu, pref",
        "pref, 3dlu, pref, 3dlu, pref, 3dlu, fill:pref:grow"));

    CellConstraints cc = new CellConstraints();

    Exclusion[] exclusions = mFavorite.getExclusions();

    DefaultListModel listModel = new DefaultListModel();
    mExclusionsList = new JList(listModel);
    for (int i = 0; i < exclusions.length; i++) {
      listModel.addElement(exclusions[i]);
    }
    mExclusionsList.setCellRenderer(new ExclusionListCellRenderer());

    mExclusionsList.addListSelectionListener(new ListSelectionListener() {
      public void valueChanged(ListSelectionEvent e) {
        if (!e.getValueIsAdjusting()) {
          updateExclusionListButtons();
        }
      }
    });

    mExclusionsList.addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent e) {
        if(SwingUtilities.isLeftMouseButton(e) && e.getClickCount() >= 2
            && mEditExclusionBtn.isEnabled()) {
          mEditExclusionBtn.getActionListeners()[0].actionPerformed(null);
        }
      }
    });

    content.add(new JScrollPane(mExclusionsList), cc.xywh(2, 1, 1, 5));

    Icon newIcon = TVBrowserIcons.newIcon(TVBrowserIcons.SIZE_SMALL);
    Icon editIcon = TVBrowserIcons.edit(TVBrowserIcons.SIZE_SMALL);
    Icon deleteIcon = TVBrowserIcons.delete(TVBrowserIcons.SIZE_SMALL);

    mNewExclusionBtn = new JButton(newIcon);
    mEditExclusionBtn = new JButton(editIcon);
    mDeleteExclusionBtn = new JButton(deleteIcon);

    mNewExclusionBtn.setMargin(UiUtilities.ZERO_INSETS);
    mEditExclusionBtn.setMargin(UiUtilities.ZERO_INSETS);
    mDeleteExclusionBtn.setMargin(UiUtilities.ZERO_INSETS);

    mNewExclusionBtn.setToolTipText(mLocalizer.msg("tooltip.newExclusion", "New exclusion criteria"));
    mEditExclusionBtn.setToolTipText(mLocalizer.msg("toolip.editExclusion", "Edit exclusion criteria"));
    mDeleteExclusionBtn.setToolTipText(mLocalizer.msg("tooltip.deleteExclusion", "Delete exclusion criteria"));

    content.add(mNewExclusionBtn, cc.xy(4, 1));
    content.add(mEditExclusionBtn, cc.xy(4, 3));
    content.add(mDeleteExclusionBtn, cc.xy(4, 5));

    final EditFavoriteDialog parent = this;

    mNewExclusionBtn.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {

        WizardHandler handler = new WizardHandler(parent, new ExcludeWizardStep(mFavorite));
        Exclusion exclusion = (Exclusion) handler.show();
        if (exclusion != null) {
          ((DefaultListModel) mExclusionsList.getModel()).addElement(exclusion);
        }

      }
    });

    mEditExclusionBtn.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        Exclusion oldExclusion = (Exclusion) mExclusionsList.getSelectedValue();
        WizardHandler handler = new WizardHandler(parent, new ExcludeWizardStep(mFavorite, oldExclusion));
        Exclusion newExclusion = (Exclusion) handler.show();
        if (newExclusion != null) {
          int inx = mExclusionsList.getSelectedIndex();
          ((DefaultListModel) mExclusionsList.getModel()).setElementAt(newExclusion, inx);
        }
      }
    });

    mDeleteExclusionBtn.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        Exclusion exclusion = (Exclusion) mExclusionsList.getSelectedValue();
        if (exclusion != null) {
          ((DefaultListModel) mExclusionsList.getModel()).removeElement(exclusion);
        }
      }
    });

    updateExclusionListButtons();

    return content;
  }

  private void updateExclusionListButtons() {
    Object selectedItem = mExclusionsList.getSelectedValue();
    mEditExclusionBtn.setEnabled(selectedItem != null);
    mDeleteExclusionBtn.setEnabled(selectedItem != null);
  }*/

  private static String getForwardPluginsLabelString(ProgramReceiveTarget[] receiveTargetArr) {
    ArrayList<ProgramReceiveIf> plugins = new ArrayList<ProgramReceiveIf>();

    for(int i = 0; i < receiveTargetArr.length; i++) {
      if(!plugins.contains(receiveTargetArr[i].getReceifeIfForIdOfTarget())) {
        ProgramReceiveIf target = receiveTargetArr[i].getReceifeIfForIdOfTarget();

        if(target != null) {
          plugins.add(target);
        }
      }
    }

    ProgramReceiveIf[] pluginArr = plugins.toArray(new ProgramReceiveIf[plugins.size()]);

    if (pluginArr != null && pluginArr.length > 0) {
      StringBuilder buf = new StringBuilder();
      if (pluginArr.length > 0) {
        buf.append(pluginArr[0].toString());
      }
      if (pluginArr.length > 1) {
        buf.append(", ");
        buf.append(pluginArr[1].toString());
      }
      if (pluginArr.length > 2) {
        buf.append(" (");
        buf.append(pluginArr.length - 2);
        buf.append(' ');
        buf.append(mLocalizer.msg("more", "more"));
        buf.append("...)");
      }
      return buf.toString();
    } else {
      return mLocalizer.msg("dontpass", "don't pass programs");
    }
  }

  private JPanel createExtrasPanel() {

    JPanel panel = new JPanel(new FormLayout("pref, pref:grow, pref", "pref,3dlu,pref"));
    CellConstraints cc = new CellConstraints();

    mPassProgramPlugins = mFavorite.getForwardPlugins();
    mPassProgramsLb = new JLabel(getForwardPluginsLabelString(mPassProgramPlugins));
    mChangePassProgramsBtn = new JButton(mLocalizer.msg("change", "Change"));
    mChangePassProgramsBtn.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        PluginChooserDlg dlg = new PluginChooserDlg((Window)EditFavoriteDialog.this, mPassProgramPlugins, null, ReminderPluginProxy.getInstance(), FavoritesPlugin.getInstance().getClientPluginTargetIds());
        UiUtilities.centerAndShow(dlg);
        ProgramReceiveTarget[] pluginArr = dlg.getReceiveTargets();
        if (pluginArr != null) {
          mPassProgramPlugins = pluginArr;
          mPassProgramsLb.setText(getForwardPluginsLabelString(mPassProgramPlugins));
          if (pluginArr.length == 0) {
            mPassProgramsCheckBox.setSelected(false);
            updatePassProgramsPanel();
          }
        }
      }
    });

    panel.add(mReminderAfterDownloadCb = new JCheckBox(mLocalizer.msg("autoAlert",
        "Alert me, whenever a matching program is discovered")), cc.xyw(1, 1, 2));

    panel.add(mPassProgramsCheckBox = new JCheckBox(mLocalizer.msg("passProgramsTo", "Pass programs to") +" "), cc.xy(1, 3));
    panel.add(mPassProgramsLb, cc.xy(2, 3));
    panel.add(mChangePassProgramsBtn, cc.xy(3, 3));
    mReminderAfterDownloadCb.setSelected(mFavorite.isRemindAfterDownload());

    mPassProgramsCheckBox.setSelected(mPassProgramPlugins != null && mPassProgramPlugins.length > 0 && !mPassProgramsLb.getText().equals(mLocalizer.msg("dontpass", "don't pass programs")));
    mPassProgramsCheckBox.setEnabled(FavoritesPlugin.getInstance().getClientPluginTargetIds().length == 0);
    mPassProgramsCheckBox.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        updatePassProgramsPanel();
      }
    });

    updatePassProgramsPanel();

    return panel;
  }

  private void updatePassProgramsPanel() {
    mPassProgramsLb.setEnabled(mPassProgramsCheckBox.isSelected());
    mChangePassProgramsBtn.setEnabled(mPassProgramsCheckBox.isSelected());
    if (!mPassProgramsCheckBox.isSelected()) {
      mPassProgramPlugins = new ProgramReceiveTarget[] {};
    }

  }

  /**
   * Gets if the ok button was pressed
   * <p>
   * @return <code>True</code> if the ok button was pressed, <code>false</code> otherwise.
   */
  public boolean getOkWasPressed() {
    return mOkWasPressed;
  }

  private void saveAndClose() {
    if (!mFavoriteConfigurator.check()) {
      return;
    }
    mFavoriteConfigurator.save();

    if (mLimitTimeCb.isSelected()) {
      mFavorite.getLimitationConfiguration().setTime(mTimePeriodChooser.getFromTime(), mTimePeriodChooser.getToTime());
      mFavorite.getLimitationConfiguration().setDayLimit(((Integer) mLimitDaysCB.getSelectedItem()).intValue());
    } else {
      mFavorite.getLimitationConfiguration().setIsLimitedByTime(false);
      mFavorite.getLimitationConfiguration().setDayLimit(LimitationConfiguration.DAYLIMIT_DAILY);
    }

    if (mLimitChannelCb.isSelected() && mChannelArr.length > 0) {
      mFavorite.getLimitationConfiguration().setChannels(mChannelArr);
    } else {
      mFavorite.getLimitationConfiguration().setIsLimitedByChannel(false);
    }

    mFavorite.setForwardPlugins(mPassProgramPlugins);
    mFavorite.setExclusions(mExclusionPanel.getExclusions());

    mFavorite.setRemindAfterDownload(mReminderAfterDownloadCb.isSelected());

    boolean wasReminderEnabled = mFavorite.getReminderConfiguration().containsService(
        ReminderConfiguration.REMINDER_DEFAULT);

    if (mUseReminderCb.isSelected()) {
      mFavorite.getReminderConfiguration().setReminderServices(new String[] { ReminderConfiguration.REMINDER_DEFAULT });
    } else {
      if (wasReminderEnabled) {
        ReminderPlugin.getInstance().removePrograms(mFavorite.getPrograms());
      }
      mFavorite.getReminderConfiguration().setReminderServices(new String[] {});
    }

    try {
      mFavorite.updatePrograms(false);
    } catch (TvBrowserException exc) {
      ErrorHandler.handle(mLocalizer.msg("error.updateFavoriteFailed", "Could not update favorite"), exc);
      return; // do not save a favorite with a parse error
    }

    for (ProgramReceiveTarget target : mPassProgramPlugins) {
      target.getReceifeIfForIdOfTarget().receivePrograms(mFavorite.getPrograms(),target);
    }

    if (mUseReminderCb.isSelected() && !wasReminderEnabled) {
      ReminderPlugin.getInstance().addPrograms(mFavorite.getPrograms());
      ReminderPlugin.getInstance().updateRootNode(true);
    }

    if(mName.getText().length() > 0 && mName.getText().compareTo(mLocalizer.msg("defaultName","Is going to be created automatically")) != 0) {
      mFavorite.setName(mName.getText());
    }

    mOkWasPressed = true;
    setVisible(false);
  }

  private boolean arrayContains(ProgramReceiveTarget[] targetArr, ProgramReceiveTarget target) {
    for(ProgramReceiveTarget arrayEntry : targetArr) {
      if(arrayEntry.getReceiveIfId().equals(target.getReceiveIfId()) && arrayEntry.getTargetId().equals(target.getTargetId())) {
        return true;
      }
    }

    return false;
  }

  public void close() {
    setVisible(false);
  }

}
TOP

Related Classes of tvbrowser.extras.favoritesplugin.dlgs.EditFavoriteDialog

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.