/**
* Copyright (c) 2012 committers of YAKINDU 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:
* committers of YAKINDU - initial API and implementation
*
*/
package org.yakindu.sct.ui.editor.preferences;
import org.eclipse.gmf.runtime.common.ui.preferences.ComboFieldEditor;
import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramUIMessages;
import org.eclipse.gmf.runtime.diagram.ui.preferences.IPreferenceConstants;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.ColorFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.yakindu.sct.ui.editor.DiagramActivator;
/**
*
* @author andreas muelder - Initial contribution and API
*
*/
public class StatechartAppearancePreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
public StatechartAppearancePreferencePage() {
super(GRID);
setDescription("Change the default diagram appearance");
}
@Override
protected void createFieldEditors() {
Composite parent = getFieldEditorParent();
addFields(parent);
}
protected void addFields(Composite parent) {
Composite main = createPageLayout(parent);
createColorEditors(main);
createLineStyleEditors(main);
createPriorityLabelEditor(main);
createLiveValidationEditor(main);
}
protected void createPriorityLabelEditor(Composite main) {
Composite composite = createGroupComposite(main, "Transition Decorator");
BooleanFieldEditor editor = new BooleanFieldEditor(StatechartPreferenceConstants.PREF_PRIORITY_LABELS,
"Show transition priority", composite);
addField(editor);
}
protected void createLiveValidationEditor(Composite main) {
Composite composite = createGroupComposite(main, "Validation");
BooleanFieldEditor editor = new BooleanFieldEditor(StatechartPreferenceConstants.PREF_LIVE_VALIDATION,
"Enable live validation", composite);
addField(editor);
}
protected void createLineStyleEditors(Composite parent) {
Composite composite = createGroupComposite(parent, "Line styles");
ComboFieldEditor lineStyleFieldEditor = new ComboFieldEditor(IPreferenceConstants.PREF_LINE_STYLE,
"Routing style", composite, ComboFieldEditor.INT_TYPE, false, 0, 0, true);
addField(lineStyleFieldEditor);
Combo lineStyleCombo = lineStyleFieldEditor.getComboControl();
lineStyleCombo.add(DiagramUIMessages.ConnectionsPreferencePage_ConnectionView_Manual_text);
lineStyleCombo.add(DiagramUIMessages.ConnectionsPreferencePage_ConnectionView_Rectilinear_text);
}
protected void createColorEditors(Composite parent) {
Composite composite = createGroupComposite(parent, "Diagram colors");
addField(new ColorFieldEditor(StatechartPreferenceConstants.PREF_REGION_BACKGROUND, "Region background color:",
composite));
addField(new ColorFieldEditor(StatechartPreferenceConstants.PREF_REGION_LINE, "Region line color:", composite));
addField(new ColorFieldEditor(StatechartPreferenceConstants.PREF_STATE_BACKGROUND, "State background color:",
composite));
addField(new ColorFieldEditor(StatechartPreferenceConstants.PREF_STATE_LINE, "State line color:", composite));
}
protected Composite createPageLayout(Composite parent) {
Composite main = new Composite(parent, SWT.NULL);
main.setLayout(new GridLayout());
main.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
return main;
}
protected Composite createGroupComposite(Composite parent, String title) {
Group group = new Group(parent, SWT.NONE);
group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
group.setLayout(new GridLayout(3, false));
Composite composite = new Composite(group, SWT.NONE);
GridLayout gridLayout = new GridLayout(3, false);
composite.setLayout(gridLayout);
GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.grabExcessHorizontalSpace = true;
gridData.horizontalSpan = 3;
composite.setLayoutData(gridData);
group.setText(title);
return composite;
}
public void init(IWorkbench workbench) {
setPreferenceStore(DiagramActivator.getDefault().getPreferenceStore());
}
}