Package org.rssowl.contrib.podcast

Source Code of org.rssowl.contrib.podcast.PodcastingPreferencePage

/*   **********************************************************************  **
**   Copyright notice                                                       **
**                                                                          **
**   (c) 2005-2006 RSSOwl Development Team                                  **
**   http://www.rssowl.org/                                                 **
**                                                                          **
**   All rights reserved                                                    **
**                                                                          **
**   This program and the accompanying materials are made available under   **
**   the terms of the Eclipse Public License v1.0 which accompanies this    **
**   distribution, and is available at:                                     **
**   http://www.rssowl.org/legal/epl-v10.html                               **
**                                                                          **
**   A copy is found in the file epl-v10.html and important notices to the  **
**   license from the team is found in the textfile LICENSE.txt distributed **
**   in this package.                                                       **
**                                                                          **
**   This copyright notice MUST APPEAR in all copies of the file!           **
**                                                                          **
**   Contributors:                                                          **
**     RSSOwl Development Team - initial API and implementation             **
**                                                                          **
**  **********************************************************************  */

package org.rssowl.contrib.podcast;

import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.rssowl.contrib.i18n.Messages;
import org.rssowl.core.Owl;
import org.rssowl.core.persist.pref.IPreferenceScope;
import org.rssowl.core.persist.service.PersistenceException;
import org.rssowl.ui.internal.OwlUI;
import org.rssowl.ui.internal.util.LayoutUtils;

import java.io.File;

/**
* Preferences related to Podcasting. TODO In this implementation, notifications
* are not used. In jPodder, any preference change is updated through a
* notifier. Also values are bound through UI components.
*
* @author bpasero
*/
public class PodcastingPreferencePage extends PreferencePage implements
    IWorkbenchPreferencePage {

  /* Interval-Scopes in Seconds */
  // private static final long DAY_IN_SECONDS = 24 * 60 * 60;
  // private static final long HOUR_IN_SECONDS = 60 * 60;
  // private static final long MINUTE_IN_SECONDS = 60;
  //
  // /* Interval-Indeces in Combo */
  // private static final int MINUTES_SCOPE = 0;
  // private static final int HOURS_SCOPE = 1;
  // private static final int DAYS_SCOPE = 2;
  //
  private IPreferenceScope fGlobalScope;

  // private FeedReloadService fReloadService;
  // private Button fUpdateCheck;
  // private Combo fUpdateScopeCombo;
  // private Spinner fUpdateValueSpinner;
  // private Button fOpenOnStartupCheck;
  // private Button fDeleteNewsByCountCheck;
  // private Spinner fDeleteNewsByCountValue;
  // private Button fDeleteNewsByAgeCheck;
  // private Spinner fDeleteNewsByAgeValue;
  // private Button fDeleteReadNewsCheck;
  // private Button fReloadOnStartupCheck;
  // private Combo fFilterCombo;
  // private Combo fGroupCombo;
  // private Button fOpenSiteForNewsCheck;
  // private Button fOpenSiteForEmptyNewsCheck;
  // private Button fMarkReadStateCheck;
  // private Spinner fMarkReadAfterSpinner;
  // private Button fMarkReadOnMinimize;
  // private Button fMarkReadOnChange;

  // CB
  // Podcasting preferences.

  protected Text mDirectoryField;
  protected Button mSoundEffectCheckBox;
  protected Button mMarkMaxOnlyCheckBox;
  protected Button mAutoPreviewCheckBox;

  protected Shell mShell;

  /** Leave for reflection */
  public PodcastingPreferencePage() {
    fGlobalScope = Owl.getPreferenceService().getGlobalScope();
    // We don't need the reload service I think
    // fReloadService = Controller.getDefault().getReloadService();
    // mShell = Activator.getDefault().
  }

  /*
   * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
   */
  public void init(IWorkbench workbench) {
  }

  /*
   * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
   */
  @Override
  protected Control createContents(Composite parent) {

    Composite container = createComposite(parent);

    /* General */
    createGeneralGroup(container);

    /* Reading */
    // createReadingGroup(container);
    //
    // /* Display */
    // createDisplayGroup(container);
    //
    // /* Clean-Up */
    // createCleanUpGroup(container);
    return container;
  }

  private void createGeneralGroup(Composite parent) {
    Group group = new Group(parent, SWT.NONE);
    FormData formData = new FormData();
    formData.top = new FormAttachment(0, 5);
    formData.left = new FormAttachment(0, 5);
    formData.right = new FormAttachment(100, -5);
    group.setLayoutData(formData);

    group.setText("General");
    group.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
    group.setLayout(LayoutUtils.createGridLayout(1));

    /* Auto-Reload */
    Composite autoReloadContainer = new Composite(group, SWT.NONE);

    autoReloadContainer.setLayout(LayoutUtils.createGridLayout(3, 0, 0));
    autoReloadContainer.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING,
        true, true));

    // Group lGroup = new Group(autoReloadContainer, SWT.SHADOW_IN);
    // FormData formData = new FormData();
    // formData.top = new FormAttachment(0, 5);
    // formData.left = new FormAttachment(0, 5);
    // formData.right = new FormAttachment(100, -5);
    // lGroup.setLayoutData(formData);
    //
    // GridLayout gridLayout = new GridLayout();
    // gridLayout.numColumns = 3;

    // lGroup.setLayout(gridLayout);
    // lGroup.setText(Messages.getString("downloadpanel.folder"));

    Label folderLabel = new Label(autoReloadContainer, SWT.NONE);
    GridData lFolderData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    lFolderData.widthHint = 300;
    lFolderData.horizontalSpan = 3;
    folderLabel.setLayoutData(lFolderData);
    folderLabel.setText(Messages.getString("downloadpanel.folder.select"));

    mDirectoryField = new Text(autoReloadContainer, SWT.SINGLE | SWT.BORDER);
    lFolderData.widthHint = 300;
    lFolderData.horizontalSpan = 2;
    mDirectoryField.setLayoutData(lFolderData);
    mDirectoryField.setText(fGlobalScope
        .getString(DefaultPreferences.PODCAST_DIRECTORY));

    Button folderButton = new Button(autoReloadContainer, SWT.PUSH);
    folderButton.setText(Messages.getString("general.browse"));
    folderButton.addListener(SWT.Selection, new Listener() {
      public void handleEvent(Event event) {
        String lPath = mDirectoryField.getText();
        Shell lShell = OwlUI.getPrimaryShell();
        DirectoryDialog dialog = new DirectoryDialog(lShell, SWT.OPEN);
        dialog.setFilterPath(lPath);
        dialog.open();
        String lFileName = dialog.getFilterPath();
        if (!"".equals(lFileName) && !lFileName.equalsIgnoreCase(lPath)) {
          File lFile = new File(lFileName);
          if (lFile.isDirectory()) {
            mDirectoryField.setText(lFile.getPath());
          }
        }
      }
    });

    // ------------ SOUND EFFECT

    // Group lVariousGroup = new Group(group, SWT.SHADOW_IN);
    // FormData formData2 = new FormData();
    // formData2.top = new FormAttachment(lGroup, 10);
    // formData2.left = new FormAttachment(0, 5);
    // formData2.right = new FormAttachment(100, -5);
    // lVariousGroup.setLayoutData(formData2);
    //
    // GridLayout lVarGridLayout = new GridLayout();
    // lVarGridLayout.numColumns = 1;
    // lVariousGroup.setLayout(lVarGridLayout);
    // lVariousGroup.setText(Messages.getString("downloadpanel.various"));
    //
    // mAutoPreviewCheckBox = new Button(lVariousGroup, SWT.CHECK);
    // mAutoPreviewCheckBox
    // .setText(Messages.getString("downloadpanel.autorefresh"));
    // GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    // gridData.grabExcessHorizontalSpace = true;
    // mAutoPreviewCheckBox.setLayoutData(gridData);
    //
    // mSoundEffectCheckBox = new Button(lVariousGroup, SWT.CHECK);
    // mSoundEffectCheckBox.setText(Messages.getString("downloadpanel.sound"));
    //
    // gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    // gridData.grabExcessHorizontalSpace = true;
    // mSoundEffectCheckBox.setLayoutData(gridData);
    //
    // mMarkMaxOnlyCheckBox = new Button(lVariousGroup, SWT.CHECK);
    // mMarkMaxOnlyCheckBox
    // .setText(Messages.getString("downloadpanel.latest"));
    // gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    // gridData.grabExcessHorizontalSpace = true;
    // mMarkMaxOnlyCheckBox.setLayoutData(gridData);

    // fUpdateCheck = new Button(autoReloadContainer, SWT.CHECK);
    // fUpdateCheck.setText("Automatically update the feeds every ");
    // fUpdateCheck.setSelection(fGlobalScope.getBoolean(DefaultPreferences.BM_UPDATE_INTERVAL_STATE));
    // fUpdateCheck.addSelectionListener(new SelectionAdapter() {
    // @Override
    // public void widgetSelected(SelectionEvent e) {
    // fUpdateValueSpinner.setEnabled(fUpdateCheck.getSelection());
    // fUpdateScopeCombo.setEnabled(fUpdateCheck.getSelection());
    // }
    // });
    //
    // fUpdateValueSpinner = new Spinner(autoReloadContainer, SWT.BORDER);
    // fUpdateValueSpinner.setMinimum(1);
    // fUpdateValueSpinner.setMaximum(999);
    // fUpdateValueSpinner.setEnabled(fUpdateCheck.getSelection());
    //
    // long updateInterval =
    // fGlobalScope.getLong(DefaultPreferences.BM_UPDATE_INTERVAL);
    // int updateScope = getUpdateIntervalScope();
    //
    // if (updateScope == MINUTES_SCOPE)
    // fUpdateValueSpinner.setSelection((int) (updateInterval /
    // MINUTE_IN_SECONDS));
    // else if (updateScope == HOURS_SCOPE)
    // fUpdateValueSpinner.setSelection((int) (updateInterval /
    // HOUR_IN_SECONDS));
    // else if (updateScope == DAYS_SCOPE)
    // fUpdateValueSpinner.setSelection((int) (updateInterval /
    // DAY_IN_SECONDS));
    //
    // fUpdateScopeCombo = new Combo(autoReloadContainer, SWT.READ_ONLY);
    // fUpdateScopeCombo.add("Minutes");
    // fUpdateScopeCombo.add("Hours");
    // fUpdateScopeCombo.add("Days");
    // fUpdateScopeCombo.select(updateScope);
    // fUpdateScopeCombo.setEnabled(fUpdateCheck.getSelection());
    //
    // /* Reload Feeds on Startup */
    // fReloadOnStartupCheck = new Button(group, SWT.CHECK);
    // fReloadOnStartupCheck.setLayoutData(new GridData(SWT.FILL,
    // SWT.BEGINNING, true, false));
    // fReloadOnStartupCheck.setText("Automatically update the feeds on
    // start-up");
    // fReloadOnStartupCheck.setSelection(fGlobalScope.getBoolean(DefaultPreferences.BM_RELOAD_ON_STARTUP));
    //
    // /* Open on Startup */
    // fOpenOnStartupCheck = new Button(group, SWT.CHECK);
    // fOpenOnStartupCheck.setLayoutData(new GridData(SWT.FILL,
    // SWT.BEGINNING, true, false));
    // fOpenOnStartupCheck.setText("Display the feeds on start-up");
    // fOpenOnStartupCheck.setSelection(fGlobalScope.getBoolean(DefaultPreferences.BM_OPEN_ON_STARTUP));
  }

  // private void createReadingGroup(Composite parent) {
  // Group group = new Group(parent, SWT.NONE);
  // group.setText("Reading");
  // group.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
  // group.setLayout(LayoutUtils.createGridLayout(1));
  //
  // /* Mark read after millis */
  // Composite markReadAfterContainer = new Composite(group, SWT.None);
  // markReadAfterContainer.setLayout(LayoutUtils.createGridLayout(3, 0, 0));
  //
  // /* Mark Read after Millis */
  // fMarkReadStateCheck = new Button(markReadAfterContainer, SWT.CHECK);
  // fMarkReadStateCheck.setText("Mark news as read after ");
  // fMarkReadStateCheck.setSelection(fGlobalScope.getBoolean(DefaultPreferences.MARK_READ_STATE));
  // fMarkReadStateCheck.addSelectionListener(new SelectionAdapter() {
  // @Override
  // public void widgetSelected(SelectionEvent e) {
  // fMarkReadAfterSpinner.setEnabled(fMarkReadStateCheck.getSelection());
  // }
  // });
  //
  // fMarkReadAfterSpinner = new Spinner(markReadAfterContainer, SWT.BORDER);
  // fMarkReadAfterSpinner.setMinimum(0);
  // fMarkReadAfterSpinner.setMaximum(100);
  // fMarkReadAfterSpinner.setSelection(fGlobalScope.getInteger(DefaultPreferences.MARK_READ_IN_MILLIS)
  // / 1000);
  // fMarkReadAfterSpinner.setEnabled(fMarkReadStateCheck.getSelection());
  //
  // Label label = new Label(markReadAfterContainer, SWT.None);
  // label.setText(" seconds");
  //
  // /* Mark Read on Minimize */
  // fMarkReadOnMinimize = new Button(group, SWT.CHECK);
  // fMarkReadOnMinimize.setText("Mark displayed news as read on minimize");
  // fMarkReadOnMinimize.setSelection(fGlobalScope.getBoolean(DefaultPreferences.MARK_READ_ON_MINIMIZE));
  //
  // /* Mark Read on changing displayed Feed */
  // fMarkReadOnChange = new Button(group, SWT.CHECK);
  // fMarkReadOnChange.setText("Mark displayed news as read when feed
  // changes");
  // fMarkReadOnChange.setSelection(fGlobalScope.getBoolean(DefaultPreferences.MARK_FEED_READ_ON_CHANGE));
  // }
  //
  // private void createDisplayGroup(Composite parent) {
  // Group group = new Group(parent, SWT.NONE);
  // group.setText("Display");
  // group.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
  // group.setLayout(LayoutUtils.createGridLayout(2));
  //
  // /* Filter Settings */
  // Label filterLabel = new Label(group, SWT.None);
  // filterLabel.setText("Filter News: ");
  //
  // fFilterCombo = new Combo(group, SWT.BORDER | SWT.READ_ONLY);
  // fFilterCombo.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false,
  // false));
  // fFilterCombo.add("Use Default");
  //
  // NewsFilter.Type[] filters = NewsFilter.Type.values();
  // for (NewsFilter.Type filter : filters)
  // fFilterCombo.add(filter.getName());
  //
  // fFilterCombo.select(fGlobalScope.getInteger(DefaultPreferences.BM_NEWS_FILTERING)
  // + 1);
  // fFilterCombo.setVisibleItemCount(fFilterCombo.getItemCount());
  //
  // /* Group Settings */
  // Label groupLabel = new Label(group, SWT.None);
  // groupLabel.setText("Group News: ");
  //
  // fGroupCombo = new Combo(group, SWT.BORDER | SWT.READ_ONLY);
  // fGroupCombo.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false,
  // false));
  // fGroupCombo.add("Use Default");
  //
  // NewsGrouping.Type[] groups = NewsGrouping.Type.values();
  // for (NewsGrouping.Type groupT : groups)
  // fGroupCombo.add(groupT.getName());
  //
  // fGroupCombo.select(fGlobalScope.getInteger(DefaultPreferences.BM_NEWS_GROUPING)
  // + 1);
  // fGroupCombo.setVisibleItemCount(fGroupCombo.getItemCount());
  //
  // /* Open Site for News Settings */
  // fOpenSiteForNewsCheck = new Button(group, SWT.CHECK);
  // fOpenSiteForNewsCheck.setText("When a news is selected, open its link
  // directly");
  // fOpenSiteForNewsCheck.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING,
  // false, false, 2, 1));
  // fOpenSiteForNewsCheck.setSelection(fGlobalScope.getBoolean(DefaultPreferences.BM_OPEN_SITE_FOR_NEWS));
  //
  // /* Open Site for empty News Settings */
  // fOpenSiteForEmptyNewsCheck = new Button(group, SWT.CHECK);
  // fOpenSiteForEmptyNewsCheck.setText("When a news' summary is empty, open
  // its link directly");
  // fOpenSiteForEmptyNewsCheck.setLayoutData(new GridData(SWT.FILL,
  // SWT.BEGINNING, false, false, 2, 1));
  // fOpenSiteForEmptyNewsCheck.setSelection(fGlobalScope.getBoolean(DefaultPreferences.BM_OPEN_SITE_FOR_EMPTY_NEWS));
  // }
  //
  // private void createCleanUpGroup(Composite parent) {
  // Group group = new Group(parent, SWT.NONE);
  // group.setText("Clean-Up");
  // group.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
  // group.setLayout(LayoutUtils.createGridLayout(2));
  //
  // /* Explanation Label */
  // Label explanationLabel = new Label(group, SWT.WRAP);
  // explanationLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING,
  // false, false, 2, 1));
  // explanationLabel.setText("To recover disk space, old news can be
  // permanently deleted.");
  //
  // /* Delete by Count */
  // fDeleteNewsByCountCheck = new Button(group, SWT.CHECK);
  // fDeleteNewsByCountCheck.setLayoutData(new GridData(SWT.BEGINNING,
  // SWT.CENTER, false, false));
  // fDeleteNewsByCountCheck.setSelection(fGlobalScope.getBoolean(DefaultPreferences.DEL_NEWS_BY_COUNT_STATE));
  // fDeleteNewsByCountCheck.setText("Maximum number of news to keep: ");
  // fDeleteNewsByCountCheck.addSelectionListener(new SelectionAdapter() {
  // @Override
  // public void widgetSelected(SelectionEvent e) {
  // fDeleteNewsByCountValue.setEnabled(fDeleteNewsByCountCheck.getSelection());
  // }
  // });
  //
  // fDeleteNewsByCountValue = new Spinner(group, SWT.BORDER);
  // fDeleteNewsByCountValue.setLayoutData(new GridData(SWT.BEGINNING,
  // SWT.CENTER, false, false));
  // fDeleteNewsByCountValue.setEnabled(fDeleteNewsByCountCheck.getSelection());
  // fDeleteNewsByCountValue.setMinimum(0);
  // fDeleteNewsByCountValue.setMaximum(1000);
  // fDeleteNewsByCountValue.setSelection(fGlobalScope.getInteger(DefaultPreferences.DEL_NEWS_BY_COUNT_VALUE));
  //
  // /* Delete by Age */
  // fDeleteNewsByAgeCheck = new Button(group, SWT.CHECK);
  // fDeleteNewsByAgeCheck.setLayoutData(new GridData(SWT.BEGINNING,
  // SWT.CENTER, false, false));
  // fDeleteNewsByAgeCheck.setSelection(fGlobalScope.getBoolean(DefaultPreferences.DEL_NEWS_BY_AGE_STATE));
  // fDeleteNewsByAgeCheck.setText("Maximum age of news in days: ");
  // fDeleteNewsByAgeCheck.addSelectionListener(new SelectionAdapter() {
  // @Override
  // public void widgetSelected(SelectionEvent e) {
  // fDeleteNewsByAgeValue.setEnabled(fDeleteNewsByAgeCheck.getSelection());
  // }
  // });
  //
  // fDeleteNewsByAgeValue = new Spinner(group, SWT.BORDER);
  // fDeleteNewsByAgeValue.setLayoutData(new GridData(SWT.BEGINNING,
  // SWT.CENTER, false, false));
  // fDeleteNewsByAgeValue.setEnabled(fDeleteNewsByAgeCheck.getSelection());
  // fDeleteNewsByAgeValue.setMinimum(0);
  // fDeleteNewsByAgeValue.setMaximum(1000);
  // fDeleteNewsByAgeValue.setSelection(fGlobalScope.getInteger(DefaultPreferences.DEL_NEWS_BY_AGE_VALUE));
  //
  // /* Delete by State */
  // fDeleteReadNewsCheck = new Button(group, SWT.CHECK);
  // fDeleteReadNewsCheck.setLayoutData(new GridData(SWT.BEGINNING,
  // SWT.CENTER, false, false));
  // fDeleteReadNewsCheck.setText("Always delete read news");
  // fDeleteReadNewsCheck.setSelection(fGlobalScope.getBoolean(DefaultPreferences.DEL_READ_NEWS_STATE));
  // }
  //
  private Composite createComposite(Composite parent) {
    Composite composite = new Composite(parent, SWT.NULL);
    GridLayout layout = new GridLayout();
    layout.marginWidth = 0;
    layout.marginHeight = 0;
    composite.setLayout(layout);
    composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL
        | GridData.HORIZONTAL_ALIGN_FILL));
    composite.setFont(parent.getFont());
    return composite;
  }

  /*
   * @see org.eclipse.jface.preference.PreferencePage#performOk()
   */
  @Override
  public boolean performOk() {

    /* Track Changes */
    boolean autoUpdateChange = false;
    boolean displayChange = false;
    boolean runCleanUp = false;

    fGlobalScope.putString(DefaultPreferences.PODCAST_DIRECTORY,
        mDirectoryField.getText());

    /* General */
    long lVal;

    // int updateScope = fUpdateScopeCombo.getSelectionIndex();
    //
    // if (updateScope == MINUTES_SCOPE)
    // lVal = fUpdateValueSpinner.getSelection() * MINUTE_IN_SECONDS;
    // else if (updateScope == HOURS_SCOPE)
    // lVal = fUpdateValueSpinner.getSelection() * HOUR_IN_SECONDS;
    // else
    // lVal = fUpdateValueSpinner.getSelection() * DAY_IN_SECONDS;
    //
    // if (fGlobalScope
    // .getBoolean(DefaultPreferences.BM_UPDATE_INTERVAL_STATE) !=
    // fUpdateCheck
    // .getSelection()) {
    // autoUpdateChange = true;
    // fGlobalScope.putBoolean(
    // DefaultPreferences.BM_UPDATE_INTERVAL_STATE, fUpdateCheck
    // .getSelection());
    // }
    //
    // if (fGlobalScope.getLong(DefaultPreferences.BM_UPDATE_INTERVAL) !=
    // lVal) {
    // autoUpdateChange = true;
    // fGlobalScope.putLong(DefaultPreferences.BM_UPDATE_INTERVAL, lVal);
    // }
    //
    // fGlobalScope.putBoolean(DefaultPreferences.BM_OPEN_ON_STARTUP,
    // fOpenOnStartupCheck.getSelection());
    // fGlobalScope.putBoolean(DefaultPreferences.BM_RELOAD_ON_STARTUP,
    // fReloadOnStartupCheck.getSelection());
    //
    // /* Reading */
    // fGlobalScope.putBoolean(DefaultPreferences.MARK_READ_ON_MINIMIZE,
    // fMarkReadOnMinimize.getSelection());
    // fGlobalScope.putBoolean(DefaultPreferences.MARK_FEED_READ_ON_CHANGE,
    // fMarkReadOnChange.getSelection());
    // fGlobalScope.putBoolean(DefaultPreferences.MARK_READ_STATE,
    // fMarkReadStateCheck.getSelection());
    // fGlobalScope.putInteger(DefaultPreferences.MARK_READ_IN_MILLIS,
    // fMarkReadAfterSpinner.getSelection() * 1000);
    //
    // /* Display */
    // if (fGlobalScope.getInteger(DefaultPreferences.BM_NEWS_FILTERING) !=
    // (fFilterCombo
    // .getSelectionIndex() - 1)) {
    // fGlobalScope.putInteger(DefaultPreferences.BM_NEWS_FILTERING,
    // fFilterCombo.getSelectionIndex() - 1);
    // displayChange = true;
    // }
    //
    // if (fGlobalScope.getInteger(DefaultPreferences.BM_NEWS_GROUPING) !=
    // (fGroupCombo
    // .getSelectionIndex() - 1)) {
    // fGlobalScope.putInteger(DefaultPreferences.BM_NEWS_GROUPING,
    // fGroupCombo.getSelectionIndex() - 1);
    // displayChange = true;
    // }
    //
    // if (fGlobalScope.getBoolean(DefaultPreferences.BM_OPEN_SITE_FOR_NEWS)
    // != (fOpenSiteForNewsCheck
    // .getSelection())) {
    // fGlobalScope.putBoolean(DefaultPreferences.BM_OPEN_SITE_FOR_NEWS,
    // fOpenSiteForNewsCheck.getSelection());
    // displayChange = true;
    // }
    //
    // fGlobalScope.putBoolean(DefaultPreferences.BM_OPEN_SITE_FOR_EMPTY_NEWS,
    // fOpenSiteForEmptyNewsCheck.getSelection());
    //
    // /* Clean-Up */
    // if
    // (fGlobalScope.getBoolean(DefaultPreferences.DEL_NEWS_BY_COUNT_STATE)
    // != fDeleteNewsByCountCheck
    // .getSelection()) {
    // fGlobalScope.putBoolean(DefaultPreferences.DEL_NEWS_BY_COUNT_STATE,
    // fDeleteNewsByCountCheck.getSelection());
    //
    // if (fDeleteNewsByCountCheck.getSelection())
    // runCleanUp = true;
    // }
    //
    // if
    // (fGlobalScope.getInteger(DefaultPreferences.DEL_NEWS_BY_COUNT_VALUE)
    // != fDeleteNewsByCountValue
    // .getSelection()) {
    // fGlobalScope.putInteger(DefaultPreferences.DEL_NEWS_BY_COUNT_VALUE,
    // fDeleteNewsByCountValue.getSelection());
    // runCleanUp = true;
    // }
    //
    // if (fGlobalScope.getBoolean(DefaultPreferences.DEL_NEWS_BY_AGE_STATE)
    // != fDeleteNewsByAgeCheck
    // .getSelection()) {
    // fGlobalScope.putBoolean(DefaultPreferences.DEL_NEWS_BY_AGE_STATE,
    // fDeleteNewsByAgeCheck.getSelection());
    //
    // if (fDeleteNewsByAgeCheck.getSelection())
    // runCleanUp = true;
    // }
    //
    // if (fGlobalScope.getInteger(DefaultPreferences.DEL_NEWS_BY_AGE_VALUE)
    // != fDeleteNewsByAgeValue
    // .getSelection()) {
    // fGlobalScope.putInteger(DefaultPreferences.DEL_NEWS_BY_AGE_VALUE,
    // fDeleteNewsByAgeValue.getSelection());
    // runCleanUp = true;
    // }
    //
    // if (fGlobalScope.getBoolean(DefaultPreferences.DEL_READ_NEWS_STATE)
    // != fDeleteReadNewsCheck
    // .getSelection()) {
    // fGlobalScope.putBoolean(DefaultPreferences.DEL_READ_NEWS_STATE,
    // fDeleteReadNewsCheck.getSelection());
    // runCleanUp = fDeleteReadNewsCheck.getSelection();
    // }
    //
    // /* Run certain tasks now */
    finish(autoUpdateChange, displayChange, runCleanUp);

    return super.performOk();
  }

  private void finish(boolean autoUpdateChange, boolean displayChange,
      boolean runCleanup) throws PersistenceException {

    // final Set<IFolder> rootFolders = Controller.getDefault()
    // .getCacheService().getRootFolders();
    //
    // /* Inform Reload Service about update-change */
    // if (autoUpdateChange) {
    // for (IFolder rootFolder : rootFolders) {
    // updateReloadService(rootFolder);
    // }
    // }

    // CB TODO.
    /* Inform open editors about display-change */
    // if (displayChange)
    // EditorUtils.updateFilterAndGrouping();
    //
    // /* Peform clean-up on all BookMarks */
    // if (runCleanup) {
    // Job retentionJob = new Job("Performing clean-up...") {
    //
    // @Override
    // protected IStatus run(IProgressMonitor monitor) {
    // try {
    // monitor.beginTask("Performing clean-up...", rootFolders
    // .size());
    //
    // for (IFolder rootFolder : rootFolders) {
    // RetentionStrategy.process(rootFolder);
    // monitor.worked(1);
    // }
    // } finally {
    // monitor.done();
    // }
    //
    // return Status.OK_STATUS;
    // }
    // };
    //
    // retentionJob.schedule();
    // }
  }

  // private void updateReloadService(IFolder folder) {
  // List<IMark> marks = folder.getMarks();
  // for (IMark mark : marks) {
  // if (mark instanceof IBookMark)
  // fReloadService.sync(((IBookMark) mark));
  // }
  //
  // List<IFolder> childFolders = folder.getFolders();
  // for (IFolder childFolder : childFolders) {
  // updateReloadService(childFolder);
  // }
  // }

  /*
   * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
   */
  @Override
  protected void performDefaults() {
    super.performDefaults();

    IPreferenceScope defaultScope = Owl.getPreferenceService()
        .getDefaultScope();

    String lDefaultDirectory = defaultScope
        .getString(DefaultPreferences.PODCAST_DIRECTORY);
    mDirectoryField.setText(lDefaultDirectory);

    // TODO Set the values for podcasting here.
   
   
    /* General */
    // fUpdateCheck.setSelection(defaultScope.getBoolean(DefaultPreferences.BM_UPDATE_INTERVAL_STATE));
    // fUpdateValueSpinner.setEnabled(fUpdateCheck.getSelection());
    // fUpdateScopeCombo.setEnabled(fUpdateCheck.getSelection());
    //
    // long updateInterval =
    // defaultScope.getLong(DefaultPreferences.BM_UPDATE_INTERVAL);
    // int updateScope = getUpdateIntervalScope();
    //
    // if (updateScope == MINUTES_SCOPE)
    // fUpdateValueSpinner.setSelection((int) (updateInterval /
    // MINUTE_IN_SECONDS));
    // else if (updateScope == HOURS_SCOPE)
    // fUpdateValueSpinner.setSelection((int) (updateInterval /
    // HOUR_IN_SECONDS));
    // else if (updateScope == DAYS_SCOPE)
    // fUpdateValueSpinner.setSelection((int) (updateInterval /
    // DAY_IN_SECONDS));
    //
    // fUpdateScopeCombo.select(updateScope);
    // fOpenOnStartupCheck.setSelection(defaultScope.getBoolean(DefaultPreferences.BM_OPEN_ON_STARTUP));
    // fReloadOnStartupCheck.setSelection(defaultScope.getBoolean(DefaultPreferences.BM_RELOAD_ON_STARTUP));
    //
    // /* Reading */
    // fMarkReadOnMinimize.setSelection(defaultScope.getBoolean(DefaultPreferences.MARK_READ_ON_MINIMIZE));
    // fMarkReadOnChange.setSelection(defaultScope.getBoolean(DefaultPreferences.MARK_FEED_READ_ON_CHANGE));
    // fMarkReadStateCheck.setSelection(defaultScope.getBoolean(DefaultPreferences.MARK_READ_STATE));
    // fMarkReadAfterSpinner.setSelection(defaultScope.getInteger(DefaultPreferences.MARK_READ_IN_MILLIS)
    // / 1000);
    // fMarkReadAfterSpinner.setEnabled(fMarkReadStateCheck.getSelection());
    //
    // /* Display */
    // fFilterCombo.select(defaultScope.getInteger(DefaultPreferences.BM_NEWS_FILTERING)
    // + 1);
    // fGroupCombo.select(defaultScope.getInteger(DefaultPreferences.BM_NEWS_GROUPING)
    // + 1);
    // fOpenSiteForNewsCheck.setSelection(defaultScope.getBoolean(DefaultPreferences.BM_OPEN_SITE_FOR_NEWS));
    // fOpenSiteForEmptyNewsCheck.setSelection(defaultScope.getBoolean(DefaultPreferences.BM_OPEN_SITE_FOR_EMPTY_NEWS));
    //
    // /* Clean-Up */
    // fDeleteNewsByCountCheck.setSelection(defaultScope.getBoolean(DefaultPreferences.DEL_NEWS_BY_COUNT_STATE));
    // fDeleteNewsByCountValue.setSelection(defaultScope.getInteger(DefaultPreferences.DEL_NEWS_BY_COUNT_VALUE));
    // fDeleteNewsByCountValue.setEnabled(fDeleteNewsByCountCheck.getSelection());
    // fDeleteNewsByAgeCheck.setSelection(defaultScope.getBoolean(DefaultPreferences.DEL_NEWS_BY_AGE_STATE));
    // fDeleteNewsByAgeValue.setSelection(defaultScope.getInteger(DefaultPreferences.DEL_NEWS_BY_AGE_VALUE));
    // fDeleteNewsByAgeValue.setEnabled(fDeleteNewsByAgeCheck.getSelection());
    // fDeleteReadNewsCheck.setSelection(defaultScope.getBoolean(DefaultPreferences.DEL_READ_NEWS_STATE));
  }

  // private int getUpdateIntervalScope() {
  // long updateInterval =
  // fGlobalScope.getLong(DefaultPreferences.BM_UPDATE_INTERVAL);
  // if (updateInterval % DAY_IN_SECONDS == 0)
  // return DAYS_SCOPE;
  //
  // if (updateInterval % HOUR_IN_SECONDS == 0)
  // return HOURS_SCOPE;
  //
  // return MINUTES_SCOPE;
  // }
}
TOP

Related Classes of org.rssowl.contrib.podcast.PodcastingPreferencePage

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.