/** * Copyright 2010 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.eclipse.preferences; import org.drools.eclipse.DroolsEclipsePlugin; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.SWT; 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.Label; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; public class DroolsFlowNodesPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { private Button ruleFlowGroupButton; private Button splitButton; private Button joinButton; private Button eventWaitButton; private Button subFlowButton; private Button actionButton; private Button timerButton; private Button faultButton; private Button eventButton; private Button humanTaskButton; private Button compositeButton; private Button forEachButton; private Button workItemsButton; public DroolsFlowNodesPreferencePage() { super("Drools Flow nodes"); } public void init(IWorkbench workbench) { } protected Control createContents(Composite ancestor) { initializeDialogUnits(ancestor); noDefaultAndApplyButton(); GridLayout layout= new GridLayout(); layout.numColumns= 1; layout.marginHeight = 0; layout.marginWidth = 0; ancestor.setLayout(layout); Label l = new Label(ancestor, SWT.WRAP); l.setFont(ancestor.getFont()); l.setText("Select which nodes are shown in the Drools Flow editor"); GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 1; gd.widthHint = 300; l.setLayoutData(gd); l = new Label(ancestor, SWT.NONE); gd = new GridData(GridData.FILL_HORIZONTAL); gd.heightHint = 1; l.setLayoutData(gd); Button startButton = createCheckBox(ancestor, "Start"); startButton.setSelection(true); startButton.setEnabled(false); Button endButton = createCheckBox(ancestor, "End"); endButton.setSelection(true); endButton.setEnabled(false); ruleFlowGroupButton = createCheckBox(ancestor, "RuleFlowGroup"); splitButton = createCheckBox(ancestor, "Split"); joinButton = createCheckBox(ancestor, "Join"); eventWaitButton = createCheckBox(ancestor, "Event Wait"); subFlowButton = createCheckBox(ancestor, "SubFlow"); actionButton = createCheckBox(ancestor, "Action"); timerButton = createCheckBox(ancestor, "Timer"); faultButton = createCheckBox(ancestor, "Fault"); eventButton = createCheckBox(ancestor, "Event"); humanTaskButton = createCheckBox(ancestor, "HumanTask"); compositeButton = createCheckBox(ancestor, "Composite"); forEachButton = createCheckBox(ancestor, "ForEach"); workItemsButton = createCheckBox(ancestor, "WorkItems"); initializeValues(); applyDialogFont(ancestor); return ancestor; } private Button createCheckBox(Composite group, String label) { Button button = new Button(group, SWT.CHECK | SWT.LEFT); button.setText(label); GridData data = new GridData(); data.horizontalSpan = 2; button.setLayoutData(data); return button; } protected IPreferenceStore doGetPreferenceStore() { return DroolsEclipsePlugin.getDefault().getPreferenceStore(); } private void initializeDefaults() { initializeValues("1111111111111"); } private void initializeValues() { IPreferenceStore store = getPreferenceStore(); String flowNodes = store.getString(IDroolsConstants.FLOW_NODES); if (flowNodes == null || flowNodes.length() != 13) { flowNodes = "1111111111111"; } initializeValues(flowNodes); } private void initializeValues(String flowNodes) { ruleFlowGroupButton.setSelection(flowNodes.charAt(0) == '1'); splitButton.setSelection(flowNodes.charAt(1) == '1'); joinButton.setSelection(flowNodes.charAt(2) == '1'); eventWaitButton.setSelection(flowNodes.charAt(3) == '1'); subFlowButton.setSelection(flowNodes.charAt(4) == '1'); actionButton.setSelection(flowNodes.charAt(5) == '1'); timerButton.setSelection(flowNodes.charAt(6) == '1'); faultButton.setSelection(flowNodes.charAt(7) == '1'); eventButton.setSelection(flowNodes.charAt(8) == '1'); humanTaskButton.setSelection(flowNodes.charAt(9) == '1'); compositeButton.setSelection(flowNodes.charAt(10) == '1'); forEachButton.setSelection(flowNodes.charAt(11) == '1'); workItemsButton.setSelection(flowNodes.charAt(12) == '1'); } protected void performDefaults() { super.performDefaults(); initializeDefaults(); } public boolean performOk() { storeValues(); DroolsEclipsePlugin.getDefault().savePluginPreferences(); return true; } private void storeValues() { IPreferenceStore store = getPreferenceStore(); String flowNodes = "" + (ruleFlowGroupButton.getSelection() ? '1' : '0') + (splitButton.getSelection() ? '1' : '0') + (joinButton.getSelection() ? '1' : '0') + (eventWaitButton.getSelection() ? '1' : '0') + (subFlowButton.getSelection() ? '1' : '0') + (actionButton.getSelection() ? '1' : '0') + (timerButton.getSelection() ? '1' : '0') + (faultButton.getSelection() ? '1' : '0') + (eventButton.getSelection() ? '1' : '0') + (humanTaskButton.getSelection() ? '1' : '0') + (compositeButton.getSelection() ? '1' : '0') + (forEachButton.getSelection() ? '1' : '0') + (workItemsButton.getSelection() ? '1' : '0'); store.setValue(IDroolsConstants.FLOW_NODES, flowNodes); } }