blob: fdaa03f96b25f182df46e18286d2b7bd83b8ed97 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 IBM Corporation 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:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.publishing.ui.preferences;
import org.eclipse.epf.authoring.ui.AuthoringUIPlugin;
import org.eclipse.epf.authoring.ui.AuthoringUIResources;
import org.eclipse.epf.authoring.ui.preferences.AuthoringUIPreferences;
import org.eclipse.epf.common.utils.StrUtil;
import org.eclipse.epf.diagram.model.util.DiagramModelPreference;
import org.eclipse.epf.library.ui.LibraryUIPlugin;
import org.eclipse.epf.library.ui.preferences.LibraryUIPreferences;
import org.eclipse.epf.publishing.ui.PublishingUIPlugin;
import org.eclipse.epf.ui.preferences.BasePreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.Group;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
/**
* Preference page for diagram options
*
* @author Phong Le
* @author Shilpa Toraskar
* @since 1.0
*
*/
public class ActivityDiagramPreferencePage extends BasePreferencePage implements
IWorkbenchPreferencePage, SelectionListener, ModifyListener {
Composite composite;
int NUM_COLUMN = 3;
private static int MIN_TASKS_PER_ROW = 1;
private static int MAX_TASKS_PER_ROW = 20;
private Button ctrl_publish_unopen_activitydd;
private Button ctrl_publish_ad_for_activity_extension;
private Text tasksPerRowText;
private Button ctrl_use_state_on_workproduct;
public ActivityDiagramPreferencePage() {
super();
}
protected Control createContents(Composite parent) {
composite = new Composite(parent, SWT.NULL);
composite.setLayout(new GridLayout(1, false));
// Create activity diagram group.
Group activityDiagramGroup = createGridLayoutGroup(composite,
AuthoringUIResources.preference_Activity_Diagram, 1);
ctrl_publish_ad_for_activity_extension = createCheckbox(
activityDiagramGroup,
AuthoringUIResources.prompt_for_publish_extend_activity_diagram);
// Create activity detatil diagram group.
Group activityDetailDiagramGroup = createGridLayoutGroup(composite,
AuthoringUIResources.preference_Activity_Detail_Diagram, 2);
ctrl_publish_unopen_activitydd = createCheckbox(
activityDetailDiagramGroup,
AuthoringUIResources.promptfor_publish_unopen_activitydd_text,
2);
createLabel(activityDetailDiagramGroup,
AuthoringUIResources.add_TasksperRow);
tasksPerRowText = createEditableText(activityDetailDiagramGroup, ""); //$NON-NLS-1$
ctrl_use_state_on_workproduct = createCheckbox(
activityDetailDiagramGroup,
AuthoringUIResources.use_state_on_workproduct_text,
2);
initializeValues();
addListeners();
return composite;
}
public void init(IWorkbench workbench) {
}
public void widgetSelected(SelectionEvent e) {
}
public void widgetDefaultSelected(SelectionEvent e) {
}
/*
* (non-Javadoc) Method declared on PreferencePage
*/
protected void performDefaults() {
super.performDefaults();
initializeDefaults();
}
/*
* (non-Javadoc) Method declared on PreferencePage
*/
public boolean performOk() {
storeValues();
LibraryUIPlugin.getDefault().savePluginPreferences();
// update the settings for browsing
PublishingUIPlugin.getDefault().updateLayoutSettings();
AuthoringUIPlugin.getDefault().savePluginPreferences();
return true;
}
/**
* Stores the values of the controls back to the preference store.
*/
private void storeValues() {
// set ADD tasks per row
AuthoringUIPreferences.setADDTasksPerRow(getTasksPerRow());
LibraryUIPreferences
.setPublishUnopenActivitydd(ctrl_publish_unopen_activitydd
.getSelection());
LibraryUIPreferences
.setPublishADForActivityExtension(ctrl_publish_ad_for_activity_extension
.getSelection());
DiagramModelPreference.setUseStateOnWorkproduct(ctrl_use_state_on_workproduct.getSelection());
}
private void initializeDefaults() {
// IPreferenceStore store = getPreferenceStore();
ctrl_publish_unopen_activitydd.setSelection(false);
ctrl_publish_ad_for_activity_extension.setSelection(true);
tasksPerRowText.setText(String.valueOf(AuthoringUIPreferences
.getDefaultADDTasksPerRow()));
ctrl_use_state_on_workproduct.setSelection(false);
}
/**
* Initializes states of the controls from the preference store.
*/
private void initializeValues() {
ctrl_publish_unopen_activitydd.setSelection(LibraryUIPreferences
.getPublishUnopenActivitydd());
ctrl_publish_ad_for_activity_extension
.setSelection(LibraryUIPreferences
.getPublishADForActivityExtension());
tasksPerRowText.setText(String.valueOf(AuthoringUIPreferences
.getADD_TasksPerRow()));
ctrl_use_state_on_workproduct.setSelection(DiagramModelPreference.getUseStateOnWorkproduct());
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.authoring.ui.preferences.CommonPrefPage#doGetPreferenceStore()
*/
protected IPreferenceStore doGetPreferenceStore() {
return LibraryUIPlugin.getDefault().getPreferenceStore();
}
/**
* Adds event listeners to the preference page controls.
*/
protected void addListeners() {
tasksPerRowText.addModifyListener(this);
}
/**
* @see org.eclipse.swt.events.ModifyListener#modifyText(ModifyEvent)
*/
public void modifyText(ModifyEvent e) {
setErrorMessage(null);
setValid(true);
int value = 0;
if (e.widget == tasksPerRowText) {
value = getTasksPerRow();
if (value < MIN_TASKS_PER_ROW || value > MAX_TASKS_PER_ROW) {
setErrorMessage(AuthoringUIResources.bind(
AuthoringUIResources.invalidTaskperRow_msg,
new Object[] { new Integer(MIN_TASKS_PER_ROW),
new Integer(MAX_TASKS_PER_ROW) }));
setValid(false);
}
}
updateApplyButton();
}
/**
* Gets the user specified tasks per rown
*/
protected int getTasksPerRow() {
return StrUtil.getIntValue(tasksPerRowText.getText().trim(), 0);
}
}