org.fusesource.ide.sap.ui.properties.OptionalServerPropertySection.java Source code

Java tutorial

Introduction

Here is the source code for org.fusesource.ide.sap.ui.properties.OptionalServerPropertySection.java

Source

/*******************************************************************************
* Copyright (c) 2014 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
* William Collins punkhornsw@gmail.com
******************************************************************************/
package org.fusesource.ide.sap.ui.properties;

import org.eclipse.core.databinding.Binding;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.UpdateValueStrategy;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.emf.databinding.FeaturePath;
import org.eclipse.emf.databinding.edit.EMFEditProperties;
import org.eclipse.jface.databinding.fieldassist.ControlDecorationSupport;
import org.eclipse.jface.databinding.swt.WidgetProperties;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
import org.fusesource.camel.component.sap.model.rfc.RfcPackage.Literals;
import org.fusesource.ide.sap.ui.Messages;
import org.fusesource.ide.sap.ui.converter.Boolean2StringConverter;
import org.fusesource.ide.sap.ui.converter.String2BooleanConverter;
import org.fusesource.ide.sap.ui.util.LayoutUtil;
import org.fusesource.ide.sap.ui.validator.NonNegativeIntegerValidator;
import org.fusesource.ide.sap.ui.validator.SapRouterStringValidator;

public class OptionalServerPropertySection extends ServerDataPropertySection {

    private Button traceBtn;
    private Text saprouterText;
    private Text workerThreadCountText;
    private Text workerThreadMinCountText;
    private Text maxStartupDelayText;
    private Text repositoryMapText;

    private Binding workerThreadCountBinding;
    private Binding workerThreadMinCountBinding;
    private Binding maxStartupDelayBinding;

    protected ControlDecorationSupport saprouterDecorator;
    protected ControlDecorationSupport workerThreadCountDecorator;
    protected ControlDecorationSupport workerThreadMinCountDecorator;
    protected ControlDecorationSupport maxStartupDelayDecorator;

    private Binding saprouterBinding;

    @Override
    public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {
        super.createControls(parent, aTabbedPropertySheetPage);

        Composite optionalContainer = createFlatFormComposite(parent);

        traceBtn = getWidgetFactory().createButton(optionalContainer,
                Messages.OptionalServerPropertySection_TraceLabel, SWT.CHECK);
        traceBtn.setToolTipText(Messages.OptionalServerPropertySection_TraceToolTip);
        traceBtn.setLayoutData(LayoutUtil.firstEntryLayoutData());

        saprouterText = getWidgetFactory().createText(optionalContainer, "", SWT.BORDER); //$NON-NLS-1$
        saprouterText.setToolTipText(Messages.OptionalServerPropertySection_SaprouterToolTip);
        saprouterText.setLayoutData(LayoutUtil.entryLayoutData(traceBtn));

        CLabel saprouterLbl = getWidgetFactory().createCLabel(optionalContainer,
                Messages.OptionalServerPropertySection_SaprouterLabel, SWT.NONE);
        saprouterLbl.setLayoutData(LayoutUtil.labelLayoutData(saprouterText));
        saprouterLbl.setAlignment(SWT.RIGHT);

        workerThreadCountText = getWidgetFactory().createText(optionalContainer, "", SWT.BORDER); //$NON-NLS-1$
        workerThreadCountText.setToolTipText(Messages.OptionalServerPropertySection_WorkerThreadCountToolTip);
        workerThreadCountText.setLayoutData(LayoutUtil.entryLayoutData(saprouterText));

        CLabel workerThreadCountLbl = getWidgetFactory().createCLabel(optionalContainer,
                Messages.OptionalServerPropertySection_WorkerThreadCountLabel, SWT.NONE);
        workerThreadCountLbl.setLayoutData(LayoutUtil.labelLayoutData(workerThreadCountText));
        workerThreadCountLbl.setAlignment(SWT.RIGHT);

        workerThreadMinCountText = getWidgetFactory().createText(optionalContainer, "", SWT.BORDER); //$NON-NLS-1$
        workerThreadMinCountText.setToolTipText(Messages.OptionalServerPropertySection_WorkerThreadMinCountToolTip);
        workerThreadMinCountText.setLayoutData(LayoutUtil.entryLayoutData(workerThreadCountText));

        CLabel workerThreadMinCountLbl = getWidgetFactory().createCLabel(optionalContainer,
                Messages.OptionalServerPropertySection_WorkerThreadMinCountLabel, SWT.NONE);
        workerThreadMinCountLbl.setLayoutData(LayoutUtil.labelLayoutData(workerThreadMinCountText));
        workerThreadMinCountLbl.setAlignment(SWT.RIGHT);

        maxStartupDelayText = getWidgetFactory().createText(optionalContainer, "", SWT.BORDER); //$NON-NLS-1$
        maxStartupDelayText.setToolTipText(Messages.OptionalServerPropertySection_MaxStartupDelayToolTip);
        maxStartupDelayText.setLayoutData(LayoutUtil.entryLayoutData(workerThreadMinCountText));

        CLabel maxStartupDelayLbl = getWidgetFactory().createCLabel(optionalContainer,
                Messages.OptionalServerPropertySection_MaxStartupDelayLabel, SWT.NONE);
        maxStartupDelayLbl.setLayoutData(LayoutUtil.labelLayoutData(maxStartupDelayText));
        maxStartupDelayLbl.setAlignment(SWT.RIGHT);

        repositoryMapText = getWidgetFactory().createText(optionalContainer, "", SWT.BORDER); //$NON-NLS-1$
        repositoryMapText.setToolTipText(Messages.OptionalServerPropertySection_RepoistoryMapToolTip);
        repositoryMapText.setLayoutData(LayoutUtil.entryLayoutData(maxStartupDelayText));

        CLabel repositoryMapLbl = getWidgetFactory().createCLabel(optionalContainer,
                Messages.OptionalServerPropertySection_RepoistoryMapLabel, SWT.NONE);
        repositoryMapLbl.setLayoutData(LayoutUtil.labelLayoutData(repositoryMapText));
        repositoryMapLbl.setAlignment(SWT.RIGHT);

    }

    protected DataBindingContext initDataBindings() {

        DataBindingContext bindingContext = super.initDataBindings();

        //
        IObservableValue observeSelectionTraceBtnObserveWidget = WidgetProperties.selection().observe(traceBtn);
        IObservableValue managedConnectionFactoryTraceObserveValue = EMFEditProperties
                .value(editingDomain,
                        FeaturePath.fromList(Literals.SERVER_DATA_STORE_ENTRY__VALUE, Literals.SERVER_DATA__TRACE))
                .observe(serverDataStoreEntry);
        UpdateValueStrategy traceStrategy = new UpdateValueStrategy();
        traceStrategy.setConverter(new Boolean2StringConverter());
        UpdateValueStrategy traceModelStrategy = new UpdateValueStrategy();
        traceModelStrategy.setConverter(new String2BooleanConverter());
        bindingContext.bindValue(observeSelectionTraceBtnObserveWidget, managedConnectionFactoryTraceObserveValue,
                traceStrategy, traceModelStrategy);
        //
        IObservableValue observeTextSapRouterTextObserveWidget = WidgetProperties.text(SWT.FocusOut)
                .observe(saprouterText);
        IObservableValue serverDataSapRouterObserveValue = EMFEditProperties.value(editingDomain,
                FeaturePath.fromList(Literals.SERVER_DATA_STORE_ENTRY__VALUE, Literals.SERVER_DATA__SAPROUTER))
                .observe(serverDataStoreEntry);
        UpdateValueStrategy sapRouterStrategy = new UpdateValueStrategy();
        sapRouterStrategy.setBeforeSetValidator(new SapRouterStringValidator());
        saprouterBinding = bindingContext.bindValue(observeTextSapRouterTextObserveWidget,
                serverDataSapRouterObserveValue, sapRouterStrategy, null);
        //
        IObservableValue observeTextWorkerThreadCountTextObserveWidget = WidgetProperties.text(SWT.FocusOut)
                .observe(workerThreadCountText);
        IObservableValue serverDataWorkerThreadCountObserveValue = EMFEditProperties
                .value(editingDomain, FeaturePath.fromList(Literals.SERVER_DATA_STORE_ENTRY__VALUE,
                        Literals.SERVER_DATA__WORKER_THREAD_COUNT))
                .observe(serverDataStoreEntry);
        UpdateValueStrategy workerThreadCountStrategy = new UpdateValueStrategy();
        workerThreadCountStrategy.setBeforeSetValidator(
                new NonNegativeIntegerValidator(Messages.OptionalServerPropertySection_WorkerThreadCountValidator));
        workerThreadCountBinding = bindingContext.bindValue(observeTextWorkerThreadCountTextObserveWidget,
                serverDataWorkerThreadCountObserveValue, workerThreadCountStrategy, null);
        //
        IObservableValue observeTextWorkerThreadMinCountTextObserveWidget = WidgetProperties.text(SWT.FocusOut)
                .observe(workerThreadMinCountText);
        IObservableValue serverDataWorkerThreadMinCountObserveValue = EMFEditProperties
                .value(editingDomain, FeaturePath.fromList(Literals.SERVER_DATA_STORE_ENTRY__VALUE,
                        Literals.SERVER_DATA__WORKER_THREAD_MIN_COUNT))
                .observe(serverDataStoreEntry);
        UpdateValueStrategy workerThreadMinCountStrategy = new UpdateValueStrategy();
        workerThreadMinCountStrategy.setBeforeSetValidator(new NonNegativeIntegerValidator(
                Messages.OptionalServerPropertySection_WorkerThreadMinCountValidator));
        workerThreadMinCountBinding = bindingContext.bindValue(observeTextWorkerThreadMinCountTextObserveWidget,
                serverDataWorkerThreadMinCountObserveValue, workerThreadMinCountStrategy, null);
        //
        IObservableValue observeTextMaxStartupDelayTextObserveWidget = WidgetProperties.text(SWT.FocusOut)
                .observe(maxStartupDelayText);
        IObservableValue serverDataMaxStartupDelayObserveValue = EMFEditProperties.value(editingDomain, FeaturePath
                .fromList(Literals.SERVER_DATA_STORE_ENTRY__VALUE, Literals.SERVER_DATA__MAX_START_UP_DELAY))
                .observe(serverDataStoreEntry);
        UpdateValueStrategy maxStartupDelayStrategy = new UpdateValueStrategy();
        maxStartupDelayStrategy.setBeforeSetValidator(
                new NonNegativeIntegerValidator(Messages.OptionalServerPropertySection_MaxStartupDelayValidator));
        maxStartupDelayBinding = bindingContext.bindValue(observeTextMaxStartupDelayTextObserveWidget,
                serverDataMaxStartupDelayObserveValue, maxStartupDelayStrategy, null);
        //
        IObservableValue observeRepositoryMapTextObserveWidget = WidgetProperties.text(SWT.FocusOut)
                .observe(repositoryMapText);
        IObservableValue serverRepositoryMapObserveValue = EMFEditProperties.value(editingDomain,
                FeaturePath.fromList(Literals.SERVER_DATA_STORE_ENTRY__VALUE, Literals.SERVER_DATA__REPOSITORY_MAP))
                .observe(serverDataStoreEntry);
        bindingContext.bindValue(observeRepositoryMapTextObserveWidget, serverRepositoryMapObserveValue, null,
                null);

        saprouterDecorator = ControlDecorationSupport.create(saprouterBinding, SWT.TOP | SWT.LEFT);
        workerThreadCountDecorator = ControlDecorationSupport.create(workerThreadCountBinding, SWT.TOP | SWT.LEFT);
        workerThreadMinCountDecorator = ControlDecorationSupport.create(workerThreadMinCountBinding,
                SWT.TOP | SWT.LEFT);
        maxStartupDelayDecorator = ControlDecorationSupport.create(maxStartupDelayBinding, SWT.TOP | SWT.LEFT);

        return bindingContext;
    }

}