package com.tibco.as.spacebar.ui.preferences;
import org.eclipse.jface.preference.FieldEditor;
import org.eclipse.jface.preference.IntegerFieldEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.TabFolder;
public class SpaceEditorPreferencePage extends TabbedPreferencePage {
private static final String DISPLAY_TIMESCOPE_ALL = "All";
private static final String DISPLAY_TIMESCOPE_NEW = "New";
private static final String DISPLAY_TIMESCOPE_CURRENT = "Current";
private static final String DISPLAY_TIMESCOPE_SNAPSHOT = "Snapshot";
public static final String[][] TIME_SCOPES = {
{ DISPLAY_TIMESCOPE_ALL, Preferences.TIMESCOPE_ALL },
{ DISPLAY_TIMESCOPE_NEW, Preferences.TIMESCOPE_NEW },
{ DISPLAY_TIMESCOPE_CURRENT, Preferences.TIMESCOPE_CURRENT },
{ DISPLAY_TIMESCOPE_SNAPSHOT, Preferences.TIMESCOPE_SNAPSHOT } };
@Override
protected void addFields(Composite parent) {
addIntegerField(Preferences.SPACE_EDITOR_BROWSE_LIMIT, "&Limit:",
parent, "Maximum number of entries to fetch and display");
addComboField(Preferences.SPACE_EDITOR_BROWSE_TIME_SCOPE,
"Default &time scope:", TIME_SCOPES, parent,
"Default browse time scope");
}
@Override
protected Composite createTabItemComposite(Composite parent) {
Composite composite = new Composite(parent, SWT.NULL);
GridLayout layout = new GridLayout();
layout.numColumns = 1;
composite.setLayout(layout);
return composite;
}
@Override
protected void addTabFields(TabFolder folder) {
createAll(createTab(folder, DISPLAY_TIMESCOPE_ALL));
createNew(createTab(folder, DISPLAY_TIMESCOPE_NEW));
createCurrent(createTab(folder, DISPLAY_TIMESCOPE_CURRENT));
createSnapshot(createTab(folder, DISPLAY_TIMESCOPE_SNAPSHOT));
}
private Control createAll(Composite parent) {
Composite composite = createTabItemComposite(parent);
addPrefetchField(Preferences.TIMESCOPE_ALL, composite);
addTimeoutField(Preferences.TIMESCOPE_ALL, composite);
addQueryLimitField(Preferences.TIMESCOPE_ALL, composite);
return composite;
}
private Control createNew(Composite parent) {
Composite composite = createTabItemComposite(parent);
addTimeoutField(Preferences.TIMESCOPE_NEW, composite);
return composite;
}
private Control createCurrent(Composite parent) {
Composite composite = createTabItemComposite(parent);
addPrefetchField(Preferences.TIMESCOPE_CURRENT, composite);
return composite;
}
private Control createSnapshot(Composite parent) {
Composite composite = createTabItemComposite(parent);
addPrefetchField(Preferences.TIMESCOPE_SNAPSHOT, composite);
addQueryLimitField(Preferences.TIMESCOPE_SNAPSHOT, composite);
return composite;
}
private FieldEditor addTimeoutField(String timeScope, Composite parent) {
return addField(Preferences.SPACE_EDITOR_BROWSE_TIMEOUT, timeScope,
"Default &timeout:", parent,
"Default timeout value associated with the browser");
}
private FieldEditor addQueryLimitField(String timeScope, Composite parent) {
return addField(Preferences.SPACE_EDITOR_BROWSE_QUERY_LIMIT, timeScope,
"Default &query limit:", parent,
"Defaut query limit associated with the browser");
}
private FieldEditor addPrefetchField(String timeScope, Composite parent) {
return addField(Preferences.SPACE_EDITOR_BROWSE_PREFETCH, timeScope,
"Default &prefetch:", parent,
"Default number of entries to prefetch from the space");
}
private IntegerFieldEditor addField(String preferenceName,
String timeScope, String label, Composite parent, String toolTip) {
return addIntegerField(
Preferences.getPreferenceName(preferenceName, timeScope),
label, parent, toolTip, -1, Integer.MAX_VALUE);
}
}