/******************************************************************************* * Copyright (c) 2010, 2012 Tasktop Technologies and others. * 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.eclipse.org/legal/epl-v10.html * * Contributors: * Tasktop Technologies - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.internal.builds.ui; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; 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.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; /** * @author Steffen Pingel */ public class BuildsPreferencesPage extends PreferencePage implements IWorkbenchPreferencePage { private static final long MILLIS_PER_MINUTE = 60 * 1000; private Text intervalText; private Button enableRefreshButton; private Label intervalLabel; private Button refreshOnFocusButton; public BuildsPreferencesPage() { } @Override public IPreferenceStore getPreferenceStore() { return BuildsUiPlugin.getDefault().getPreferenceStore(); } @Override protected Control createContents(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); composite.setLayout(new GridLayout(2, false)); enableRefreshButton = new Button(composite, SWT.CHECK); GridDataFactory.fillDefaults().span(2, 1).applyTo(enableRefreshButton); enableRefreshButton.setText("&Automatically refresh builds"); enableRefreshButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { updateEnablement(); } }); intervalLabel = new Label(composite, SWT.NONE); intervalLabel.setText("&Refresh build status every (in minutes):"); intervalText = new Text(composite, SWT.BORDER | SWT.RIGHT); GridDataFactory.fillDefaults().grab(true, false).applyTo(intervalText); intervalText.setTextLimit(3); refreshOnFocusButton = new Button(composite, SWT.CHECK); GridDataFactory.fillDefaults().span(2, 1).applyTo(refreshOnFocusButton); refreshOnFocusButton.setText("&Refresh when Builds view is focused"); reset(); Dialog.applyDialogFont(composite); return composite; } private void updateEnablement() { intervalLabel.setEnabled(enableRefreshButton.getSelection()); intervalText.setEnabled(enableRefreshButton.getSelection()); } public void init(IWorkbench workbench) { // ignore } public void reset() { intervalText.setText(String.valueOf(getPreferenceStore().getLong(BuildsUiInternal.PREF_AUTO_REFRESH_INTERVAL) / MILLIS_PER_MINUTE)); enableRefreshButton.setSelection(getPreferenceStore().getBoolean(BuildsUiInternal.PREF_AUTO_REFRESH_ENABLED)); refreshOnFocusButton.setSelection(getPreferenceStore().getBoolean(BuildsUiInternal.PREF_REFRESH_ON_FOCUS)); updateEnablement(); } @Override public boolean performOk() { getPreferenceStore().setValue(BuildsUiInternal.PREF_AUTO_REFRESH_ENABLED, enableRefreshButton.getSelection()); getPreferenceStore().setValue(BuildsUiInternal.PREF_AUTO_REFRESH_INTERVAL, getRefreshInterval()); getPreferenceStore().setValue(BuildsUiInternal.PREF_REFRESH_ON_FOCUS, refreshOnFocusButton.getSelection()); return super.performOk(); } private long getRefreshInterval() { try { return Math.max(Integer.parseInt(intervalText.getText()) * MILLIS_PER_MINUTE, BuildsUiInternal.MIN_REFRESH_INTERVAL); } catch (NumberFormatException e) { //ignore } return BuildsUiInternal.DEFAULT_REFRESH_INTERVAL; } @Override protected void performDefaults() { intervalText.setText(String.valueOf(getPreferenceStore().getDefaultLong( BuildsUiInternal.PREF_AUTO_REFRESH_INTERVAL) / MILLIS_PER_MINUTE)); enableRefreshButton.setSelection(getPreferenceStore().getDefaultBoolean( BuildsUiInternal.PREF_AUTO_REFRESH_ENABLED)); refreshOnFocusButton.setSelection(getPreferenceStore().getDefaultBoolean(BuildsUiInternal.PREF_REFRESH_ON_FOCUS)); updateEnablement(); } }